4 ms·
I’m curious because I can’t quite tell. Are they modifying game code, or the code of the emulator? If it’s game code, how is it so readable in its disassembled
by codezero 8y ago
I’m curious because I can’t quite tell. Are they modifying game code, or the code of the emulator?
If it’s game code, how is it so readable in its disassembled form? I may be really misunderstanding but I’d love to hear about how they are modifying the game code so cleanly if that’s what’s happening.
Edit: pretty sure this is a fix to the cpu emulator.
- paines 8y agoBut if it is in the emulator, wouldn't all games suffer this issue?
- gue5t 8y agoNot all games rely on the behavior of the renderer on sharing vertices with the previously-drawn mesh. It seems like a pretty unlikely thing to do.
- paines 8y agoOh iIsee. Thanks for clarifying!
- codezero 8y agoThis is another thing I was confused about, looks like someone already covered this :)
- mjg59 8y agoNot the CPU emulator, the GPU emulator. The game is asking the GPU to render an object, which requires it to provide three coordinates. However, the game never initialises the first of these coordinates, so the emulator was drawing an object with the first coordinates initialised to garbage values, because for every new object draw call the emulator was discarding the previous state. On the real hardware it seems that the hardware simply reuses the coordinates from the previous object, so the fix in the emulator was simply to move the coordinates from being local to the function (in which case they're reinitialised on every call) to being global (in which case they remain populated with the previous values between calls).
- codezero 8y agoAwesome, this helps explain it to me! Thanks.