cafe-alpha
Established Member
I'm currently implementing cheat codes behavior as described in yabause wiki : master codes with C30x opcode patch code at specified address (06000914, 06000924, etc), and when this interrupt is triggered, I overwrite memory with value set in selected cheat code(s).
Currently, some (few) games work, but the other games experience slowdowns or graphics glitches ... and I'm out of ideas in order to fix this :/
Does anyone has an idea of what I'm doing wrong ? I tried to cache everything (from selected cheat codes to interrupt handler code) in high work RAM, but this didn't changed anything from current solution running directly from cartridge ROM and reading cheat codes from cartridge ROM too.
Interrupt handler code itself is mostly written in C, but quite small (~300 bytes), so I suppose it's not worth the hassle to write it into assembly in order to gain some execution speed.
→ Is there some synchronization (with VDPs, etc) required when cheat codes interrupt handler is triggered ?
→ Does some more tricky know-how such usage of UBC is required ? This would probably work well for one code enabled, but I don't have any idea how this would be usable when two or more codes are enabled.
→ Something completely different is used ?!
→ What's most important : is there somebody ready to help me regarding cheat codes ? 🙂
And, does yabause supports cheat codes functionality when emulating Action Replay cartridge ROM ?
I tried a bit with version 0.9.15, but both cheat codes cache location and memory for selected codes weren't modified. This REALLY would help me if cheat codes behavior could be emulator-reproduced at assembly level (= not on emulator built-in cheat codes feature level).
Currently, some (few) games work, but the other games experience slowdowns or graphics glitches ... and I'm out of ideas in order to fix this :/
Does anyone has an idea of what I'm doing wrong ? I tried to cache everything (from selected cheat codes to interrupt handler code) in high work RAM, but this didn't changed anything from current solution running directly from cartridge ROM and reading cheat codes from cartridge ROM too.
Interrupt handler code itself is mostly written in C, but quite small (~300 bytes), so I suppose it's not worth the hassle to write it into assembly in order to gain some execution speed.
→ Is there some synchronization (with VDPs, etc) required when cheat codes interrupt handler is triggered ?
→ Does some more tricky know-how such usage of UBC is required ? This would probably work well for one code enabled, but I don't have any idea how this would be usable when two or more codes are enabled.
→ Something completely different is used ?!
→ What's most important : is there somebody ready to help me regarding cheat codes ? 🙂
And, does yabause supports cheat codes functionality when emulating Action Replay cartridge ROM ?
I tried a bit with version 0.9.15, but both cheat codes cache location and memory for selected codes weren't modified. This REALLY would help me if cheat codes behavior could be emulator-reproduced at assembly level (= not on emulator built-in cheat codes feature level).