Приставки > Картриджи / диски

Есть ли у NEs ромов заголовок?

(1/2) > >>

ajak:
Собственно сабж - Где находится точка входа в программу у ромов для дедндика. Вот у Сеговсих ромов есть заголовок на 512 байт, в одном из полей которых написано точка исполнения программы, и ещё даже значение, которое надо положить в стек. А дендика я так понял заголовка нету. Но всю картину портят мапперы. Они как-то влияют на исполнительный адрес.

evgeny:
В конце последнего prg рома 3 вектора. начальный адрес(reset), NMI и IRQ.

ajak:
А как определить конец последнего prg рома?

HardWareMan:

--- Цитата: ajak от 16 Октябрь 2008, 16:00:02 ---Собственно сабж - Где находится точка входа в программу у ромов для дедндика. Вот у Сеговсих ромов есть заголовок на 512 байт, в одном из полей которых написано точка исполнения программы, и ещё даже значение, которое надо положить в стек. А дендика я так понял заголовка нету. Но всю картину портят мапперы. Они как-то влияют на исполнительный адрес.
--- Конец цитаты ---
Это не заголовок. Это часть ROMки. И в силу особенностей процессора М68К там распологаются вектора прерываний.

--- Цитата: evgeny от 16 Октябрь 2008, 16:35:34 ---В конце последнего prg рома 3 вектора. начальный адрес(reset), NMI и IRQ.
--- Конец цитаты ---
Не последнего, а банка по умолчанию, который зависит от конкретного маппера. А заголовок у NES ROMки есть - первые 16 байт. Гугль в помощь.

ajak:
Чёт ничего я не нашел  :'(
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:

--- Цитата: ajak от 17 Октябрь 2008, 11:53:06 ---Чёт не вижу.
--- Конец цитаты ---
Чего ты не видишь? Номера маппера?

--- Цитата: HardWareMan от 16 Октябрь 2008, 17:10:17 ---Не последнего, а банка по умолчанию, который зависит от конкретного маппера.
--- Конец цитаты ---

ajak:
Ааааааааа.А как определить?
Помойму 3-й.

HardWareMan:

--- Цитата: ajak от 17 Октябрь 2008, 12:36:30 ---Ааааааааа.А как определить?
Помойму 3-й.
--- Конец цитаты ---
Погуглить инфу по мапперу, как вариант...

evgeny:
Ну я говорил про вектора. Я так понимаю нужен именно вектор, который указывает на начало программы. Я уже говорил, что обычно они в конце последнего prg банка, т.к. чаще всего именно он является стартовым по умолчанию. Бывает, конечно и иначе, например в маппере AOROM он в конце первого банка размером 32кб. Кстати нужно еще помнить что старший и младший байт идут в обратном порядке. И еще что адресное пространство рома обычно начинается с 8000h. Если программа (reset) идет с самого начала, то вектор значит будет выглядеть так : 0080.

HardWareMan:
FFFB : FFFA = NMI
FFFD : FFFC = RESET
FFFF : FFFE = IRQ

ajak:
Парни , подскажите.

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



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


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

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

evgeny:
Кто-то дописал лишний кусок вот и все. Ром не должен заканчиваться на 40080. С заголовком на 40000 долен был закончиться. Значит вектора:
NMI D1A2
RESET EC50
IRQ C378

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

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

ajak:
А почему он не может заканчиваться на 40080?

Добавлено позже:
0003D1B2
0003EC60
0003C388
Чтот не нашел, эти значения, откуда ты их взял?

--- Цитата ---Хм..мне показалось, что это 2 маппер а это 71.
--- Конец цитаты ---
Откуда это видно ответьте плиз.

HardWareMan:
Считывать файл надо согласно маппера и тогда все встает на свои места.

ajak:
подробней плиз, могу файл залить сам и ссылку дать.

ajak:
evgeny, можно более подробно :blush:

evgeny:
Да запусти игру через дебаггер и просмотри память по адресам:
D1A2
EC50
C378

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

CaH4e3:
Берешь ром. Берешь fceu. Запускаешь ром на fceu. Запускаешь дебаггер. Жмешь step, потом reset. В окне дизассемблера отображается точка входа и код после нее.

ajak:
Санч, можеш помочь разобраться, а то я тут не понимаю.
1) Вот есть карик с редким маппером или вообще самопальным. Причём по микросхеме ничего нельзя пробить, никакую инфу, или она залита в компауд.
Как тогда можно дампить.
2) Как присваивается номер мапперу новому. Вот ты добавляеш в fceu мапперы и пишеш добавлен номер такой-то. А откуда эти номера узнаются? Что где то про все уже известны, кто придумывает эту нумерацию?

Добавлено позже:
А почему он не может заканчиваться на 40080?

--- Цитата ---Хм..мне показалось, что это 2 маппер а это 71.
--- Конец цитаты ---
Откуда это видно ответьте плиз.
Дебаггер не в счёт . Так на глаз, по хексам ;)

CaH4e3:
Какой маппер я решаю сам. И присваиваю какой хочу номер, если такого маппера еще нет. Определить, как работает картридж и какой у него маппер можно только отладкой и реверсингом.

Навигация

[0] Главная страница сообщений

[#] Следующая страница

Перейти к полной версии