че в этом коде заставляет игру виснуть,не пойму
Вы использовали доисторическую FCEUX 2.2.2, там специально для этой игры проверка по контрольной сумме:
if (info->CRC32 == 0x5104833e) // Kick Master
GameHBIRQHook = MMC3_hb_KickMasterHack;
else if (info->CRC32 == 0x5a6860f1 || info->CRC32 == 0xae280e20)// Shougi Meikan '92/'93
GameHBIRQHook = MMC3_hb_KickMasterHack;
else if (info->CRC32 == 0xfcd772eb) // PAL Star Wars, similar problem as Kick Master.
GameHBIRQHook = MMC3_hb_PALStarWarsHack;
Поэтому изменение
любого байта в роме, кроме заголовка, ломает игру в этой версии FCEUX (если не будет коллизии хеша). Проверка по контрольным суммы делается в дерьмовых эмуляторах как NesterJ, но в Mesen тоже было для другого маппера из-за того, что под одним номером маппера разные железки засунули, что только позже исправили с помощью подмапперов (submapper). В современном FCEUX (
https://github.com/TASEmulators/fceux) проблемы нет
UPD: Точнее проблемы после 2-го босса у меня не было, но в коде осталась проверка на ром Kick Master. Просто не используйте FCEUX никогда, у него точность не очень, подходит только для маломощного железа.
Самое итересное,что бряк на чтение из адреса 1D9D8 вообще не срабатывает ни при каких обстоятельствах
Так и должно быть, инструкции обычно не читают.
Чит у пиратов плохой, после получения уровня восстанавливается также мало HP, нужно было так писать:
FFD0:
LDA $1F
AND #$18
CMP #$18
BNE skip
LDA $06BB
STA $06B9
STA $06BA
LDA #$09
STA $030E
skip:
LDA $1F
RTS