| Разработка и ромхакинг > Ромхакинг и программирование |
| [NES] Вопрос новичка. Переключение банков. |
| (1/1) |
| Тихоня:
Приветствую уважаемое сообщество! Пытаюсь понять устройство и работу программ Дендика. Ознакомился с азами ассемблера и архитектурой машины. Выяснил, что узнать до конца архитектуру машины не получится, так как она содержит некую переменную величину - железо картриджа с его мапперами и пр... Вот и "грызу гранит науки" где-то в этой области (пока из чистого любопытства). Взял как пример программы с переключением банков ROM "Snake Rattle n Roll" (у меня эта игра есть и на неисправном картридже, который я надеюсь когда-нибудь починить). FCEUX сообщает, что в программе используется маппер MMC1. Вопросы: 1. Где в ROM'е находится информация о типе маппера? Как FCEUX это узнал? 2. Всегда ли программа "Snake Rattle n Roll" использует только маппер MMC1? Можно ли быть уверенным, что мой неисправный картридж содержит MMC1? Или же могут быть картриджи (ROMы) с этой же игрой, но с другим маппером? 3. Подвергается ли код программы модификации при создании её ROM-версии? |
| Guyver(X.B.M.):
1. Где в ROM'е находится информация о типе маппера? Как FCEUX это узнал? В заголовке рома, первые 16 символов (а вообще-то всего 1 из них, вроде седьмой). Это если у рома формат с 16-значным заголовком. Бывают другие форматы... 2. Всегда ли программа "Snake Rattle n Roll" использует только маппер MMC1? Можно ли быть уверенным, что мой неисправный картридж содержит MMC1? Или же могут быть картриджи (ROMы) с этой же игрой, но с другим маппером? Возможно есть карик и с другим маппером, особенно если выпустили карик китайцы, но скорее всего маппер такой же... Например твои змейки: http://chief-net.ru/index.php?option=com_content&task=view&id=242&Itemid=67 3. Подвергается ли код программы модификации при создании её ROM-версии? - всё зависит от маппера, если он малоисследован, можно тупо в роме кое-что изменить, и игра будет работать в эмуляторе без введения в эмуль нового маппера... Например, я так некоторые многоигровки подгонял под уже существующий маппер... Или изменял пару байт в коде одноигровок, если где-то игра глючила... Но чаще всего снимают дамп, который представляет собой точную копию картриджа. Заголовка в картридже, ес-но, нет... |
| Тихоня:
--- Цитата: Guyver(X.B.M.) от 02 Июль 2012, 07:09:41 ---1. Где в ROM'е находится информация о типе маппера? Как FCEUX это узнал? В заголовке рома, первые 16 символов (а вообще-то всего 1 из них, вроде седьмой). Это если у рома формат с 16-значным заголовком. Бывают другие форматы... --- Конец цитаты --- Посмотрел заголовок. Да, байт 6 содержит 4 младших бита номера маппера, а байт 7 - 4 старших бита. По заголовку осталось неясным только что такое VS-System Cartridges и 512-byte trainer. Но если это не имеет непосредственного отношения к теме, то лучше пока не трогать, чтобы не отвлекаться. Из ответа я понял, что поддержка определённых мапперов заложена в эмулятор. С этим ясно. Далее. В рассматриваемой игре постоянно происходят записи типа STA $BFFF или STA $DFFF. Как я догадываюсь, это - обновление содержимого регистров маппера. Чтобы понять смысл этих операций, мне нужна схема маппера MMC1? Имеется ли она в свободном доступе? P.S. Нашёл на nesdev.parodius.com файлик MAPPERS.NFO и просмотрщик Viewer.exe к нему. Кое-что о MMC1 уже удалось узнать, таким образом. P.P.S. Нашёл всё, что надо про MMC1: http://wiki.nesdev.com/w/index.php/MMC1 Собственно, тему можно закрывать. Guyver'у - спасибо. |
| Навигация |
| Главная страница сообщений |