Бесконечный заряд оружияНайти E5 84 10 00 E3 A0 00 00 45 84 00 00 E5 8D 00 00, заменить на E1 A0 00 00 E3 A0 00 00 45 84 00 00 E5 8D 00 00.
Для (USA) образа
https://myrient.erista.me/files/TOSEC-ISO/3DO/3DO Interactive Multiplayer/Games/ > Escape from Monster Manor - A Terrifying Hunt for the Undead (1993)(Electronic Arts)(US)[!].zip или redump, но они больше по размеру и данные не подряд, смысла нет использовать. Для (Europe) не подойдёт.
Я делал несколько читов для 3DO. Использовал отладчик отладочной версии Phoenix эмулятора (
http://www.arts-union.ru/node/23). Для поиска - Cheat Engine, память 3DO в нём отображается с обратным порядком байтов по 4 байта - Little-Endian, в отладчике Феникса - Big-Endian. Для поиска также делаю дамп через отладчик, сохраняется в memory_*.bin.
В Escape from Monster Manor простой случай, найденное кол-во заряда в RAM 0x0A0DAC, breakpoint на запись показывает этот код:
RAM-00853B0: E59F4068 LDR R4, [#85420] ; R4 = 000A0DAC
RAM-00853B4: E5940000 LDR R0, [R4]
RAM-00853B8: E3500000 CMP R0, #0
RAM-00853BC: D3A00003 MOVLE R0, #3
RAM-00853C0: DA000014 BLE #85418
RAM-00853C4: E2501005 SUBS R1, R0, #5
RAM-00853C8: E5841000 STR R1, [R4]
В R4 всегда адрес нашего заряда (000A0DAC). После вычитания (SUBS) происходит запись назад и здесь мы ставим NOP (обычно E1 A0 00 00). Поэтому для изменения в образе нужно найти эти байты инструкций и изменить.
Лёгкий ассемблер
https://shell-storm.org/online/Online-Assembler-and-Disassembler/, отличаются NOP и немного синтаксис. Инструкции ARM (не Thumb)
https://iitd-plos.github.io/col718/ref/arm-instructionset.pdf.
В сложных случаях код общий для объектов и нельзя просто его менять, например в Alone in The Dark я добавлял код на месте мусора, который устанавливал значения HP и оружия.
UPD: Есть тема по читам,
не нужно плодить темы из-за таких мелочей:
https://www.emu-land.net/forum/index.php?topic=69047.new#new.