Emulator Issues #10571
closedKirby's Return to Dreamland - Invalid Instruction?
0%
Description
Game Name?
Kirby's Return to Dreamland
Game ID? (right click the game in the game list, properties, info tab)
SUKE01
MD5 Hash? (right click the game in the game list, properties, info tab, MD5 Hash: Compute)
DADE208216BD03A370E8217439BEDBD8 (verified with Redump)
What's the problem? Describe what went wrong.
There's an invalid/illegal instruction (supposedly) at 8017C510, bytecode is 2CD408A9, it doesn't disassemble in IDA or Dolphin, but https://www.onlinedisassembler.com/odaweb/BDqA00Df/0 disassembles it to cmpwi cr1, r20, 2217
Is the issue present in the latest development version? For future reference, please also write down the version number of the latest development version.
Dolphin 5.0-5627, probably.
Updated by gamemasterplc about 7 years ago
its a checksum for the game's anti piracy embedded in the middle of code. it always skips those instructions
Updated by JMC4789 over 6 years ago
- Status changed from New to Invalid
The issue report was not filled out well enough with ways to reproduce the issue, as such, I tried booting the game and had no problems starting it up.
I recommend turning off cheatcodes and whatnot, as they're known to set off metafortress.
Updated by nwplayer123 over 6 years ago
not an operational thing @JMC4789, was trying to reverse engineer the game and a good chunk of the instructions seemed to be invalid opcodes, gamemasterpic's probably right, they compiled it somehow to mess with anyone trying to disassemble it (like me). Was hoping someone could check that opcode to see if it's actually valid and just not disassembling right.
Updated by JMC4789 over 6 years ago
- Status changed from Invalid to New
Ah, okay.
I'll let someone more knowledgeable handle this issue.
Updated by flacs about 2 years ago
- Status changed from New to Fix pending
Updated by pokechu22 about 2 years ago
- Status changed from Fix pending to Working as intended
After further investigation it seems like this is data (embedded in the middle of a function, but jumped past), not code, so disassembling it as (ill)
is more useful than treating it specially. (There also are a lot more different illegal instructions than just the one at 8017C510, and they take a wide variety of values (not just cmp
-like things).)