Автор Тема: [NES] Вопрос новичка. Переключение банков.  (Прочитано 4043 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Тихоня

  • Пользователь
  • Сообщений: 2
  • Пол: Мужской
    • Просмотр профиля
Приветствую уважаемое сообщество!
Пытаюсь понять устройство и работу программ Дендика.
Ознакомился с азами ассемблера и архитектурой машины.
Выяснил, что узнать до конца архитектуру машины не получится, так как она содержит некую переменную величину - железо картриджа с его мапперами и пр...
Вот и "грызу гранит науки" где-то в этой области (пока из чистого любопытства).
Взял как пример программы с переключением банков ROM "Snake Rattle n Roll" (у меня эта игра есть и на неисправном картридже, который я надеюсь когда-нибудь починить).
FCEUX сообщает, что в программе используется маппер MMC1.
Вопросы:
1. Где в ROM'е находится информация о типе маппера? Как FCEUX это узнал?
2. Всегда ли программа "Snake Rattle n Roll" использует только маппер MMC1? Можно ли быть уверенным, что мой неисправный картридж содержит MMC1? Или же могут быть картриджи (ROMы) с этой же игрой, но с другим маппером?
3. Подвергается ли код программы модификации при создании её ROM-версии?

Оффлайн Guyver(X.B.M.)

  • Пользователь
  • Сообщений: 2403
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
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-версии? - всё зависит от маппера, если он малоисследован, можно тупо в роме кое-что изменить, и игра будет работать в эмуляторе без введения в эмуль нового маппера... Например, я так некоторые многоигровки подгонял под уже существующий маппер... Или изменял пару байт в коде одноигровок, если где-то игра глючила... Но чаще всего снимают дамп, который представляет собой точную копию картриджа. Заголовка в картридже, ес-но, нет...
« Последнее редактирование: 02 Июль 2012, 07:32:46 от Guyver(X.B.M.) »

Оффлайн Тихоня

  • Пользователь
  • Сообщений: 2
  • Пол: Мужской
    • Просмотр профиля
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'у - спасибо.
« Последнее редактирование: 02 Июль 2012, 17:25:50 от Тихоня »