mirror of https://github.com/mgba-emu/mgba.git
Core: Add keysRead callback
This commit is contained in:
parent
4aff301638
commit
0425fa805c
1
CHANGES
1
CHANGES
|
@ -26,6 +26,7 @@ Misc:
|
|||
- LR35902: Support PC-relative opcode decoding
|
||||
- Qt: Improve camera initialization
|
||||
- Qt: Support switching webcams
|
||||
- Core: Add keysRead callback
|
||||
|
||||
0.7.1: (2019-02-24)
|
||||
Bugfixes:
|
||||
|
|
|
@ -86,6 +86,7 @@ struct mCoreCallbacks {
|
|||
void (*videoFrameEnded)(void* context);
|
||||
void (*coreCrashed)(void* context);
|
||||
void (*sleep)(void* context);
|
||||
void (*keysRead)(void* context);
|
||||
};
|
||||
|
||||
DECLARE_VECTOR(mCoreCallbacksList, struct mCoreCallbacks);
|
||||
|
|
|
@ -576,6 +576,15 @@ static uint8_t _readKeysFiltered(struct GB* gb) {
|
|||
uint8_t GBIORead(struct GB* gb, unsigned address) {
|
||||
switch (address) {
|
||||
case REG_JOYP:
|
||||
{
|
||||
size_t c;
|
||||
for (c = 0; c < mCoreCallbacksListSize(&gb->coreCallbacks); ++c) {
|
||||
struct mCoreCallbacks* callbacks = mCoreCallbacksListGetPointer(&gb->coreCallbacks, c);
|
||||
if (callbacks->keysRead) {
|
||||
callbacks->keysRead(callbacks->context);
|
||||
}
|
||||
}
|
||||
}
|
||||
return _readKeysFiltered(gb);
|
||||
case REG_IE:
|
||||
return gb->memory.ie;
|
||||
|
|
|
@ -725,6 +725,15 @@ uint16_t GBAIORead(struct GBA* gba, uint32_t address) {
|
|||
break;
|
||||
|
||||
case REG_KEYINPUT:
|
||||
{
|
||||
size_t c;
|
||||
for (c = 0; c < mCoreCallbacksListSize(&gba->coreCallbacks); ++c) {
|
||||
struct mCoreCallbacks* callbacks = mCoreCallbacksListGetPointer(&gba->coreCallbacks, c);
|
||||
if (callbacks->keysRead) {
|
||||
callbacks->keysRead(callbacks->context);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (gba->rr && gba->rr->isPlaying(gba->rr)) {
|
||||
return 0x3FF ^ gba->rr->queryInput(gba->rr);
|
||||
} else {
|
||||
|
|
Loading…
Reference in New Issue