Набросок лоадера ROMок для эмулятора Sega Genesis/Megadrive для IDA. Загружает файл, создает массив точек входа в программу (обрабатываются все вектора М68К (младшие 64 из полных 256ти), если адрес лежит внутри ROM-файла. Заполняет массив данных стандартного заголовка игры Sega Genesis/Megadrive. Создает сегмент кода (и помещает туда ROM файл), создает сегмент области Z80, создает сегмент области I/O портов, VDP. Так же создается сегмент озу $FF0000-$FFFFFF и его фантом (пока отельным сегментом) в $FFFF0000-$FFFFFFFF (используется некоторыми играми и программами, т.к. у М68К 24 битная адресная шина, то старший байт адреса не участвует, но я еще не разобрался как это реализовать).
v.2:
1. Создает кучу минисегментов для портов, ОЗУ Z80 и т.д. Это дает возможность расставить метки, но при этом график не расползается;
2. Создает сегмент SRAM, если тот лежит в пределах нижних 4Мб и при этом не пересекается с ROMом.
Минусы, которые я хотел бы исправить:
1. Массивы создаются с флагом "Использовать dup()", не разобрался пока как его автоматически сбросить - сбрасываем вручную.
2. Хочу занести набор меток стандартных адресов (например VDP_DATA = $C00000 и VDP_CONTROL = $C00004 и т.д.).
3. Ну и еще много чего...
Тестируйте пока то, что создано. Отписывайтесь тут.