Автор Тема: Что из себя представляют ромы NES?  (Прочитано 4904 раз)

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

Оффлайн Go6a

  • Пользователь
  • Сообщений: 15
    • Просмотр профиля
Что из себя представляют ромы NES?
1. Каких они бывают форматов, кроме iNES? И какие форматы ромов встречаются чаще всего?
2. Отсюда http://nesdev.parodius.com/neshdr20.txt я понял, что формат iNES содержит заголовок, состоящий из нескольких секций и сам дамп картриджа. Но я не совсем понял, сколько байт отводится для заголовка.

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

  • Пользователь
  • Сообщений: 2349
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #1 : 17 Июнь 2011, 23:58:42 »
Размер "заголовка" на NES - 10h

Оффлайн Go6a

  • Пользователь
  • Сообщений: 15
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #2 : 18 Июнь 2011, 00:13:41 »
Я открыл в HEX-редакторе ром Battle City (во вложении), значит первые 16 байт - заголовок, а байты начиная с 10h - это уже пошёл дамп картриджа? Получается, что первые адреса дампа картриджа занимает предложение "COPYRIGHT 1981 1985 NAMCO LTD.
ALL RIGHTS RESERVED           
RYOUITI OOKUBO  TAKEFUMI HYOUDOUJUNKO OZAWA   "? Я правильно понимаю?

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

  • Пользователь
  • Сообщений: 2349
  • Пол: Мужской
  • Уничтожим Кронос!
    • Facebook
    • Twitter
    • ВКонтакте
    • Youtube
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #3 : 18 Июнь 2011, 04:35:34 »
Да...

Оффлайн Go6a

  • Пользователь
  • Сообщений: 15
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #4 : 18 Июнь 2011, 10:52:06 »
Каким образом процессор (CPU) NES начинает выполнение заданной программы? Как я понял, сразу после включения приставки, программный счетчик (PC) устанавливается в какое-то исходное значение, которое затем изменяется согласно ходу программы/ветвлениям/прерываниям.
1.Каково же это исходное значение программного счетчика?
2.Существует ли какой-нибудь эмулятор/дизассамблер/отладчик, позволяющий просмотреть содержимое регистров просессора NES, содержимое адресного пространства процессора? Который может пошагово выполнять операторы.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #5 : 18 Июнь 2011, 14:43:30 »
1. http://dendy.migera.ru/nes/g01.html - прерывание RESET. При включении/сбросе PC устанавливается на указанный в векторе этого прерывания адрес.
2. FCEUXDSP, например.

Оффлайн Go6a

  • Пользователь
  • Сообщений: 15
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #6 : 18 Июнь 2011, 15:34:43 »
Спасибо!
Запустил в отладчике всё ту же Battle city в пошаговом режиме. После выполнения прерывания RESET PC становится равным C070. До выполнения команды, расположенной по адресу c073 все понятно. Дальше есть пара непоняток:
1. Результатом команды STA $2000 должно стать появление по адресу $2000 значение, находящееся в аккумуляторе ($10). А в результате все значения с $2000 до $3fff приняли значение $10 (кроме 8 и 16 байтов в каждом наборе из 16 байтов). Почему? Это первая непонятка.
2. По адресу с07с находится команда BPL c079 (если флаг N == 0, тогда переход по адресу c079). Но флаг N всегда равен нулю, для пробы нажал на кнопку STEP отладчика наверно больше сотни раз и ничего. Программа крутится в цикле c07c < - > c079. Почему так получается?
Систему команд брал отсюда: http://dendy.migera.ru/nes/g11.html
« Последнее редактирование: 18 Июнь 2011, 15:39:07 от Go6a »

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #7 : 18 Июнь 2011, 15:41:45 »
1. Смотри всё по той же ссылке карту памяти. Адрес $2000 представляет собой регистры видео (8 байт), далее до $4000 идёт отражение этой памяти. Здесь про регистры PPU.
2. Видимо, ждёт прерывания NMI. Смотри в регистрах значение $2002.

Оффлайн Go6a

  • Пользователь
  • Сообщений: 15
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #8 : 18 Июнь 2011, 16:03:29 »
Ага, с видео-регистрами и их отражением вроде разобрался, но там же 8 видео-регистров и мы командой STA $2000 явно обращаемся к первому видео-регистру, записывая в него $10. Почему 2-7 регистры тоже заполняются значениями $10? Никакой команды для их заполнения не было.

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #9 : 18 Июнь 2011, 16:28:39 »
А хз, может вьювер так показывает. У меня в другой версии эмуля по-другому. Всё-таки это не память, а регистры.

Оффлайн DeniSS

  • Пользователь
  • Сообщений: 1088
  • Пол: Мужской
  • Сама скрытность
    • ВКонтакте
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #10 : 18 Июнь 2011, 22:09:10 »
Ага, с видео-регистрами и их отражением вроде разобрался, но там же 8 видео-регистров и мы командой STA $2000 явно обращаемся к первому видео-регистру, записывая в него $10. Почему 2-7 регистры тоже заполняются значениями $10? Никакой команды для их заполнения не было.
Потому что там всё отзеркалено 7 раз.

Оффлайн Go6a

  • Пользователь
  • Сообщений: 15
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #11 : 18 Июнь 2011, 22:48:37 »
Отзеркалены - значит во всех 8 видео-регистрах всегда могут быть только одинаковые значения? Зачем тогда 8 регистров, если бы хватило одного?

Оффлайн HoRRoR

  • Пользователь
  • Сообщений: 983
  • Пол: Мужской
  • Ромхакер
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #12 : 19 Июнь 2011, 15:02:25 »
Порты $2000, $2001, $2003, $2005, $2006 вообще только для записи, так что не знаю, что там может отображаться. Возможно, последнее записанное в любой порт значение.
Ничего там не отзеркалено, иначе бы запись/чтение любого из 8-ми байт давало бы один эффект.

Оффлайн perfect_genius

  • Пользователь
  • Сообщений: 1144
    • ВКонтакте
    • Steam
    • Просмотр профиля
Re: Что из себя представляют ромы NES?
« Ответ #13 : 26 Июнь 2011, 23:37:10 »
Есть ли стандарт структуры рома? Типа, первая треть - RAM, вторая - VRAM...?
Читал, но так и не понял - от маппера может зависеть строение-расположение данных?
Просто я собираюсь восстановить исходники одной игры, вот и интересно, есть ли какие-то общие элементы или каждый ром уникален.
Заранее спасибо.

Добавлено позже:
А, вот типа так:
Цитата
Маппер - MMC3, PRG-ROM 512Bytes, CHR-ROM 256KBytes, W-RAM 8KBytes
Т.е. узнав маппер, я смогу сразу перейти к этим разделам, "поделить" ром на части?

Добавлено позже:
Удивительно, но кажется нашёл в соседней теме :lol:
« Последнее редактирование: 27 Июнь 2011, 00:49:11 от SUPER_ROBOT »