diff --git a/include/mgba/core/core.h b/include/mgba/core/core.h index 683f4e2f0..96a48ad8e 100644 --- a/include/mgba/core/core.h +++ b/include/mgba/core/core.h @@ -105,6 +105,7 @@ struct mCore { void (*setKeys)(struct mCore*, uint32_t keys); void (*addKeys)(struct mCore*, uint32_t keys); void (*clearKeys)(struct mCore*, uint32_t keys); + uint32_t (*getKeys)(struct mCore*); uint32_t (*frameCounter)(const struct mCore*); int32_t (*frameCycles)(const struct mCore*); diff --git a/src/gb/core.c b/src/gb/core.c index 033f94aa6..21cb9d79d 100644 --- a/src/gb/core.c +++ b/src/gb/core.c @@ -688,6 +688,11 @@ static void _GBCoreClearKeys(struct mCore* core, uint32_t keys) { gbcore->keys &= ~keys; } +static uint32_t _GBCoreGetKeys(struct mCore* core) { + struct GBCore* gbcore = (struct GBCore*) core; + return gbcore->keys; +} + static uint32_t _GBCoreFrameCounter(const struct mCore* core) { const struct GB* gb = core->board; return gb->video.frameCounter; @@ -1091,6 +1096,7 @@ struct mCore* GBCoreCreate(void) { core->setKeys = _GBCoreSetKeys; core->addKeys = _GBCoreAddKeys; core->clearKeys = _GBCoreClearKeys; + core->getKeys = _GBCoreGetKeys; core->frameCounter = _GBCoreFrameCounter; core->frameCycles = _GBCoreFrameCycles; core->frequency = _GBCoreFrequency; diff --git a/src/gba/core.c b/src/gba/core.c index 969145d30..045eb1972 100644 --- a/src/gba/core.c +++ b/src/gba/core.c @@ -723,6 +723,11 @@ static void _GBACoreClearKeys(struct mCore* core, uint32_t keys) { GBATestKeypadIRQ(gba); } +static uint32_t _GBACoreGetKeys(struct mCore* core) { + struct GBA* gba = core->board; + return gba->keysActive; +} + static uint32_t _GBACoreFrameCounter(const struct mCore* core) { const struct GBA* gba = core->board; return gba->video.frameCounter; @@ -1209,6 +1214,7 @@ struct mCore* GBACoreCreate(void) { core->setKeys = _GBACoreSetKeys; core->addKeys = _GBACoreAddKeys; core->clearKeys = _GBACoreClearKeys; + core->getKeys = _GBACoreGetKeys; core->frameCounter = _GBACoreFrameCounter; core->frameCycles = _GBACoreFrameCycles; core->frequency = _GBACoreFrequency;