Особенности WD65816 (основной процессор на SNES):
В зависимости от флага размер операнда инструкции может интерпретироваться либо как 8-битный, либо как 16-битный. И если не сильно вникать в то, что происходит в коде, можно подумать, что так и должно быть.
Также дополнительные палки в колёса вставлял штатный процессорный модуль для иды - просто так на лету менять значение флага не получится. Да и если следом за подобной инструкцией идёт опкод BRK (байт 00), ида его спокойно продизассемблирует, и закончит тем самым текущую функцию (это опкод ручного вызова прерывания, который практически никогда не используется в играх).
Пришлось все эти штуки реализовывать в собственном процессорном модуле для WD65816, чтобы Ида, как всегда, не мешала реверсить:)
На гифке - переключение флага размера операнда на лету.
Post #121
77
- 🔥 3