GBA Hardware: Improve Game Boy Player rumble behavior

This commit is contained in:
Jeffrey Pfau 2016-09-25 22:02:45 -07:00
parent 8345e29798
commit f2dadbd8b1
2 changed files with 9 additions and 5 deletions

View File

@ -18,6 +18,7 @@ Bugfixes:
- GB: Fix invalid STOP behavior on Game Boy Color
- GB, GBA: Fix emulator hardlocking when halting with IRQs off
- SDL: Attach rumble in SDL frontend
- GBA Hardware: Improve Game Boy Player rumble behavior
Misc:
- All: Only update version info if needed
- FFmpeg: Encoding cleanup

View File

@ -563,12 +563,15 @@ int32_t _gbpSioProcessEvents(struct GBASIODriver* driver, int32_t cycles) {
gbp->p->gbpNextEvent -= cycles;
if (gbp->p->gbpNextEvent <= 0) {
uint32_t tx = 0;
if (gbp->p->gbpTxPosition <= 12) {
tx = _gbpTxData[gbp->p->gbpTxPosition];
if (gbp->p->gbpTxPosition < 12) {
++gbp->p->gbpTxPosition;
}
int txPosition = gbp->p->gbpTxPosition;
if (txPosition > 16) {
gbp->p->gbpTxPosition = 0;
txPosition = 0;
} else if (txPosition > 12) {
txPosition = 12;
}
tx = _gbpTxData[txPosition];
++gbp->p->gbpTxPosition;
gbp->p->p->memory.io[REG_SIODATA32_LO >> 1] = tx;
gbp->p->p->memory.io[REG_SIODATA32_HI >> 1] = tx >> 16;
if (gbp->d.p->normalControl.irq) {