в первом Сонике при возникновении ошибок можно прощелкать их кнопкой C, то есть, по идее, можно сделать более простой код, который не требовал бы нажать кнопку
Да. Очевидно, что можно убрать требование к нажатию кнопки, но я не буду этим заниматься. Ошибки нужно исправлять, а не играть в говнохаки.
Подскажите программу типа такой, только для 68000
Не разбираюсь, но. Для простых хаков я использовал
https://github.com/uxmal/reko - в Tools > Hex disassembler по Hex строке можно увидеть код, там ещё можно открыть ром (путь должен быть без пробелов, иначе нули вместо рома) и щёлкать в Memory View для просмотра инструкций в Disassembly указанного байта. Как простой ассемблер использовал
ASM68k_Tool - GUI оболочка для ASM68K, который нужно положить в той же папке.
UPD: Ещё есть Ghidra, там можно и код посмотреть, и инструкции изменить, но на Mega Drive не проверял. Loader:
https://www.emu-land.net/forum/index.php?topic=82102.0.
UPD2: Я использовал Ghidra как ассемблер для Dreamcast, вводил инструкции, а байты от них вручную вставлял в образ. Можно было бы написать программу для сопоставления адресов с позицией в образе и всё было бы быстрее, но мне нужно было этого для двух игр.
По идее же можно просто найти все инструкции, которые обращаются к нечетным адресам, при этом имеют размер данных word или long
Можно. Составляете список нужных инструкций, в программу записываете их байты и смещение для проверочного байта, ищите каждые 2 байта по кратным 2 позициям в файле (хотя код может быть записан в RAM с нечётной позиции в роме, тогда каждый байт проверять) и проверяете байт адреса. Легко пишется, мне лень выбрать инструкции, все инструкции есть в тестах для ассемблеров (например,
https://github.com/Clownacy/clownassembler/blob/master/tests/valid instructions.asm), должны сами осилить.
Почему-то думал, что Exodus точнее.
Exodus is one of the first emulators to attempt cycle accuracy at the high cost of system requirements, but it is no longer updated and far from complete. It is still somewhat useful as a reference for the Genesis hardware, but users will have a faster and more accurate experience with BlastEm or other recommended emulators for Genesis.
UPD3: Сделал пропуск кривых инструкций, пробовал на нечётном адресе и неправильной инструкции. Некоторые прерывания точно не работают. Положить к файлам из архива ром - input.gen, в файле shit_hack_remedy.asm указать адрес свободного места размером 0x36 байта вместо org $ (например, org $3FFF00) запустить compile_shit_hack_remedy.bat, на выходе - input_crash_handler.gen.