Автор Тема: Есть ли у NEs ромов заголовок?  (Прочитано 6758 раз)

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

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Есть ли у NEs ромов заголовок?
« : 16 Октябрь 2008, 16:00:02 »
Собственно сабж - Где находится точка входа в программу у ромов для дедндика. Вот у Сеговсих ромов есть заголовок на 512 байт, в одном из полей которых написано точка исполнения программы, и ещё даже значение, которое надо положить в стек. А дендика я так понял заголовка нету. Но всю картину портят мапперы. Они как-то влияют на исполнительный адрес.

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #1 : 16 Октябрь 2008, 16:35:34 »
В конце последнего prg рома 3 вектора. начальный адрес(reset), NMI и IRQ.

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #2 : 16 Октябрь 2008, 16:56:40 »
А как определить конец последнего prg рома?

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7546
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #3 : 16 Октябрь 2008, 17:10:17 »
Собственно сабж - Где находится точка входа в программу у ромов для дедндика. Вот у Сеговсих ромов есть заголовок на 512 байт, в одном из полей которых написано точка исполнения программы, и ещё даже значение, которое надо положить в стек. А дендика я так понял заголовка нету. Но всю картину портят мапперы. Они как-то влияют на исполнительный адрес.
Это не заголовок. Это часть ROMки. И в силу особенностей процессора М68К там распологаются вектора прерываний.
В конце последнего prg рома 3 вектора. начальный адрес(reset), NMI и IRQ.
Не последнего, а банка по умолчанию, который зависит от конкретного маппера. А заголовок у NES ROMки есть - первые 16 байт. Гугль в помощь.

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #4 : 17 Октябрь 2008, 11:53:06 »
Чёт ничего я не нашел  :'(
http://nesdev.parodius.com/neshdr20.txt

Добавлено позже:
this is the complete header information i've been using lately, if you see something wrong or incomplete please tell me!.

    |   0    |  3   | 'NES'                                    |
    |   3    |  1   | $1A                                      |
    |   4    |  1   | 16K PRG-ROM page count                   |
    |   5    |  1   | 8K CHR-ROM page count                    |
    |   6    |  1   | ROM Control Byte #1                      |
    |        |      |   %####vTsM                              |
    |        |      |    |  ||||+- 0=Horizontal Mirroring      |
    |        |      |    |  ||||   1=Vertical Mirroring        |
    |        |      |    |  |||+-- 1=SRAM enabled              |
    |        |      |    |  ||+--- 1=512-byte trainer present  |
    |        |      |    |  |+---- 1=Four-screen VRAM layout   |
    |        |      |    |  |                                  |
    |        |      |    +--+----- Mapper # (lower 4-bits)     |
    |   7    |  1   | ROM Control Byte #2                      |
    |        |      |   %####0000                              |
    |        |      |    |  |                                  |
    |        |      |    +--+----- Mapper # (upper 4-bits)     |
    |  7     |  1   | 01=00-> nes rom                          |
    |  7     |  1   | 01=01-> vs unisystem rom                 |
    |  7     |  1   | 01=02-> playchoice rom                   |
    |  8     |  1   | $00                                      |
    |  9     |  1   | $00                                      |
    |  10    |  1   | 0=0->"100% compatible with NTSC console" |
    |  10    |  1   | 1=0->"Not necessarily 100% compatible    |
    |        |      |       with PAL console""                 |
    |  10    |  1   | 4=0->"extra ram at $6000-$7fff           |
    |  10    |  1   | 5=0->"don't have bus conflicts           |
    |  11    |  6   | $00           

Чёт не вижу.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7546
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #5 : 17 Октябрь 2008, 12:24:23 »
Чёт не вижу.
Чего ты не видишь? Номера маппера?
Не последнего, а банка по умолчанию, который зависит от конкретного маппера.

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #6 : 17 Октябрь 2008, 12:36:30 »
Ааааааааа.А как определить?
Помойму 3-й.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7546
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #7 : 17 Октябрь 2008, 12:48:50 »
Ааааааааа.А как определить?
Помойму 3-й.
Погуглить инфу по мапперу, как вариант...

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #8 : 17 Октябрь 2008, 13:00:48 »
Ну я говорил про вектора. Я так понимаю нужен именно вектор, который указывает на начало программы. Я уже говорил, что обычно они в конце последнего prg банка, т.к. чаще всего именно он является стартовым по умолчанию. Бывает, конечно и иначе, например в маппере AOROM он в конце первого банка размером 32кб. Кстати нужно еще помнить что старший и младший байт идут в обратном порядке. И еще что адресное пространство рома обычно начинается с 8000h. Если программа (reset) идет с самого начала, то вектор значит будет выглядеть так : 0080.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7546
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #9 : 17 Октябрь 2008, 14:17:00 »
FFFB : FFFA = NMI
FFFD : FFFC = RESET
FFFF : FFFE = IRQ

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #10 : 25 Октябрь 2008, 15:07:16 »
Парни , подскажите.

Почему здесь нули. Ведь вы говори что в самом конце находятся вектора?



Добавлено позже:
А вот заголовок


помогите разобраться

Добавлено позже:
Почему там где должны быть вектора -всё нулями забито? :-\

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #11 : 25 Октябрь 2008, 16:23:36 »
Кто-то дописал лишний кусок вот и все. Ром не должен заканчиваться на 40080. С заголовком на 40000 долен был закончиться. Значит вектора:
NMI D1A2
RESET EC50
IRQ C378

В данном роме, учитывая маппер и заголовок это будет:
0003D1B2
0003EC60
0003C388

Хм..мне показалось, что это 2 маппер а это 71.
Но скорее всего так же.

« Последнее редактирование: 25 Октябрь 2008, 16:45:05 от evgeny »

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #12 : 25 Октябрь 2008, 22:24:10 »
А почему он не может заканчиваться на 40080?

Добавлено позже:
0003D1B2
0003EC60
0003C388
Чтот не нашел, эти значения, откуда ты их взял?
Цитата
Хм..мне показалось, что это 2 маппер а это 71.
Откуда это видно ответьте плиз.

Оффлайн HardWareMan

  • Модератор
  • Сообщений: 7546
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #13 : 25 Октябрь 2008, 22:50:36 »
Считывать файл надо согласно маппера и тогда все встает на свои места.

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #14 : 25 Октябрь 2008, 22:57:24 »
подробней плиз, могу файл залить сам и ссылку дать.

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #15 : 26 Октябрь 2008, 08:06:11 »
evgeny, можно более подробно :blush:

Оффлайн evgeny

  • Пользователь
  • Сообщений: 1390
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #16 : 26 Октябрь 2008, 12:23:33 »
Да запусти игру через дебаггер и просмотри память по адресам:
D1A2
EC50
C378

А те адреса это я уже в самом роме посчитал - где они будут, если в хексе смотреть. И именно адреса, а не значения, что тут непонятного?

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3593
    • Twitter
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #17 : 26 Октябрь 2008, 13:31:43 »
Берешь ром. Берешь fceu. Запускаешь ром на fceu. Запускаешь дебаггер. Жмешь step, потом reset. В окне дизассемблера отображается точка входа и код после нее.

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #18 : 26 Октябрь 2008, 15:24:13 »
Санч, можеш помочь разобраться, а то я тут не понимаю.
1) Вот есть карик с редким маппером или вообще самопальным. Причём по микросхеме ничего нельзя пробить, никакую инфу, или она залита в компауд.
Как тогда можно дампить.
2) Как присваивается номер мапперу новому. Вот ты добавляеш в fceu мапперы и пишеш добавлен номер такой-то. А откуда эти номера узнаются? Что где то про все уже известны, кто придумывает эту нумерацию?

Добавлено позже:
А почему он не может заканчиваться на 40080?
Цитата
Хм..мне показалось, что это 2 маппер а это 71.
Откуда это видно ответьте плиз.
Дебаггер не в счёт . Так на глаз, по хексам ;)

Оффлайн CaH4e3

  • Пользователь
  • Сообщений: 3593
    • Twitter
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #19 : 26 Октябрь 2008, 15:31:16 »
Какой маппер я решаю сам. И присваиваю какой хочу номер, если такого маппера еще нет. Определить, как работает картридж и какой у него маппер можно только отладкой и реверсингом.

Оффлайн ajak

  • Пользователь
  • Сообщений: 235
  • Пол: Мужской
    • Просмотр профиля
Re: Есть ли у NEs ромов заголовок?
« Ответ #20 : 26 Октябрь 2008, 15:39:09 »
Спасибо. Кайф.

Цитата
Определить, как работает картридж и какой у него маппер можно только отладкой и реверсингом.
Т.е. копаться пока прога не заработает как надо - верно?