написать такую программу которая за тебя будет искать что нужно сместить и на сколько
Простое решение, но, скорее все
го, надо будет постоянно отлавливать и исправлять баги в игре, т.к. таким образом нельзя точно распознать адрес в роме, это можно только через дизасм.
Takamura-kun вот дизасмит ромы быстро, но не знаю, делает ли он это на заказ.
ну это я так понял будет работать НЕ с ассемблерными исходниками, а например с исходниками на SGDK или BEX.
Мне кажется нельзя создать например многоигровку из исходников первого и второго Соника просто дописав меню.
По идее, все компилятры должны давать выбрать начальный адрес будуще
го рома.
А как многоигровки вообще обходятся с векторами и обработчиками прерываний, которые у каждой игры разные?
Аппаратно проблемы быть не должно, раз многоигровки просто как бы переставляют картридж. А вот програмно уже действительно интересно, если проц смотрит вектры только от нулевово адреса и никак е
го не уговорить смотреть не там. Тут варианты - вместить трапы всех игр многоигровки:
$00 - Stack pointer
$04 - Code start
$08 - Bus error
$0C - Address error
$10 - Illegal instruction
$14 - Divistion by zero
$18 - CHK exception
$1C - TRAPV exception
$20 - Privilege violation
$24 - TRACE exeption
$28 - LINE 1010 EMULATOR
$2C - LINE 1111 EMULATOR
$30-$5F - Reserved by Motorola
$60 - Spurious exception
$64 - Interrupt request level 1
$68 - Interrupt request level 2
$6C - Interrupt request level 3
$70 - Interrupt request level 4 (VDP interrupt / Horizontal blank)
$74 - Interrupt request level 5
$78 - Interrupt request level 6 (Vertical blank)
$7C - Interrupt request level 7
$80 - TRAP #00 exception
$84 - TRAP #01 exception
$88 - TRAP #02 exception
$8C - TRAP #03 exception
$90 - TRAP #04 exception
$94 - TRAP #05 exception
$98 - TRAP #06 exception
$9C - TRAP #07 exception
$A0 - TRAP #08 exception
$A4 - TRAP #09 exception
$A8 - TRAP #10 exception
$AC - TRAP #11 exception
$B0 - TRAP #12 exception
$B4 - TRAP #13 exception
$B8 - TRAP #14 exception
$BC - TRAP #15 exception
$C0-$FF - Reserved by Motorola
Но тут я пока не разбираюсь и надо будет исправить в игре все инструкцыи TRAP на новое расположение в этом списке.
Или же записать тут адреса отдельно
го обработчика, который смотрит,
что за игра е
го потревож
ила и выполнять код для не
го. Но это может сказат
ьс
я на производительности. Например, Квакшот активно использует трапы при распаковке архивов, если правильно помню.