IDA: Поддерживается ли переключение банков (для разборки Z80)? - PullRequest
0 голосов
/ 10 июля 2020

Во-первых, я новичок в IDA и пока не разбираюсь во всех ее возможностях.

Я хотел бы проверить ПЗУ игры Sega Master System. Консоль основана на микропроцессоре Z80 с 8 КБ оперативной памяти (C000-DFFFh, затененная на E000-FFFFh). Поскольку Z80 может адресовать только 64 КБ памяти, а большинство игр имеют больший размер (используются 128 КБ, 256 КБ и 512 КБ), консоль реализует механизм переключения банков с фрагментами 16 КБ, чтобы сделать доступной всю память. Обычно это достигается путем сохранения первых 32 КБ (или двух банков) постоянно резидентными (0000-7FFFh) и переключением банков остальных (все с адресом 8000-BFFFh) путем записи номера банка в псевдорегистр в FFFFh в ОЗУ. .

Теперь, есть ли способ заставить IDA понять эту схему? На данный момент я могу загрузить все ПЗУ сегментами (по одному сегменту на банк), но при этом переходы / вызовы после переключения банка указывают на неправильное место, потому что он не знает, какой из них выбран в данный момент.

...