Разработка и ромхакинг > Ромхакинг
(VS) ромы NES
(1/1)
Teffycom:
Почему даже после изменения одного байта игра совсем не запускается на нестопии, а на fceu начинает глючить палитра? В этих ромах есть какая-то защита или это эмуляторы как-то специфически на них настроены?
Guyver(X.B.M.):
Какая игра-то? Я смотрел несколько ромов таких - всё прекрасно эмулируется после изменения...
JTH:
Защита — возможно, но маловероятно.
Скорее, есть эмуляторы, содержащие в себе кучу захардкоженных хаков для эмуляции отдельных ромов. Контрольная сумма поменялась — всё, хак не работает.
Teffycom:
Например, тетрис не пошел, танчики. Эмули - Nestopia, fceu (санчезовский). Других эмулей для эмуляции VS ромов не встречал, правда, говорят, что MAME это дело кушает, но это я еще не пробовал.
JTH:
Вот кусок из vsuni.c от FCEu-mm:
--- Код: ---VSUNIENTRY VSUniGames[] =
{
{"Baseball", 0x691d4200ea42be45LL, 99, 2,RP2C04_001,0},
{"Battle City", 0x8540949d74c4d0ebLL, 99, 2,RP2C04_001,0},
{"Battle City(Bootleg)",0x8093cbe7137ac031LL, 99, 2,RP2C04_001,0},
{"Clu Clu Land", 0x1b8123218f62b1eeLL, 99, 2,RP2C05_004,IOPTION_SWAPDIRAB},
{"Dr Mario", 0xe1af09c477dc0081LL, 1, 0,RP2C04_003,IOPTION_SWAPDIRAB},
{"Duck Hunt", 0x47735d1e5f1205bbLL, 99, 2,RCP2C03B ,IOPTION_GUN},
{"Excitebike", 0x3dcd1401bcafde77LL, 99, 2,RP2C04_003,0},
{"Excitebike (J)", 0x7ea51c9d007375f0LL, 99, 2,RP2C05_004,0},
{"Freedom Force", 0xed96436bd1b5e688LL, 4, 0,RP2C04_001,IOPTION_GUN}, /* Wrong color in game select screen? */
{"Stroke and Match Golf",0x612325606e82bc66LL, 99, 2,RP2C04_002,IOPTION_SWAPDIRAB|IOPTION_PREDIP,0x01},
{"Goonies", 0xb4032d694e1d2733LL, 151,1,RP2C04_003,0},
{"Gradius", 0x50687ae63bdad976LL,151, 1,RP2C04_001,IOPTION_SWAPDIRAB},
{"Gumshoe", 0x87161f8ee37758d3LL, 99, 2,RC2C05_03,IOPTION_GUN},
{"Hogan's Alley", 0xd78b7f0bb621fb45LL, 99, 2,RP2C04_001,IOPTION_GUN},
{"Ice Climber", 0xd21e999513435e2aLL, 99, 2,RP2C05_004,IOPTION_SWAPDIRAB},
{"Ladies Golf", 0x781b24be57ef6785LL, 99, 2,RP2C04_002,IOPTION_SWAPDIRAB|IOPTION_PREDIP,0x1},
{"Mach Rider", 0x015672618af06441LL, 99, 2, RP2C04_002,0},
{"Mach Rider (J)", 0xa625afb399811a8aLL, 99, 2, RP2C04_001,0},
{"Mighty Bomb Jack", 0xe6a89f4873fac37bLL, 0, 2, RC2C05_02,0},
{"Ninja Jajamaru Kun", 0xb26a2c31474099c0LL, 99, 2,RC2C05_01 ,IOPTION_SWAPDIRAB},
{"Pinball", 0xc5f49d3de7f2e9b8LL, 99, 2,RP2C04_001,IOPTION_PREDIP,0x01},
{"Pinball (J)", 0x66ab1a3828cc901cLL, 99, 2,RCP2C03B,IOPTION_PREDIP,0x1},
{"Platoon", 0x160f237351c19f1fLL, 68, 1,RP2C04_001,0},
{"RBI Baseball", 0x6a02d345812938afLL, 4, 1,RP2C04_001 ,IOPTION_SWAPDIRAB},
{"Soccer", 0xd4e7a9058780eda3LL, 99, 2,RP2C04_003,IOPTION_SWAPDIRAB},
{"Star Luster", 0x8360e134b316d94cLL, 99, 2,RCP2C03B ,0},
{"Stroke and Match Golf (J)",0x869bb83e02509747LL, 99, 2,RCP2C03B,IOPTION_SWAPDIRAB|IOPTION_PREDIP,0x1},
{"Super Sky Kid", 0x78d04c1dd4ec0101LL, 4, 1,RCP2C03B ,IOPTION_SWAPDIRAB | IOPTION_PREDIP,0x20},
{"Super Xevious", 0x2d396247cf58f9faLL, 206, 0,RP2C04_001,0},
{"Tetris", 0x531a5e8eea4ce157LL, 99, 2,RCP2C03B ,IOPTION_PREDIP,0x20},
{"Top Gun", 0xf1dea36e6a7b531dLL, 2, 0,RC2C05_04 ,0},
{"VS Castlevania", 0x92fd6909c81305b9LL, 2, 1,RP2C04_002,0},
{"VS Slalom", 0x4889b5a50a623215LL, 0, 1,RP2C04_002,0},
{"VS Super Mario Bros",0x39d8cfa788e20b6cLL, 99, 2,RP2C05_004,0},
{"VS Super Mario Bros [a1]",0xfc182e5aefbce14dLL, 99, 2,RP2C05_004,0},
{"VS TKO Boxing", 0x6e1ee06171d8ce3aLL,4, 1,RP2C04_003,IOPTION_PREDIP,0x00},
{0}
};
--- Конец кода ---
А вот из source\core\vssystem\NstVsSystem.cpp от Nestopia 1.40:
--- Код: --- switch (prgCrc)
{
// VS. Dual-System Games are unsupported
case 0xB90497AA: // Tennis
case 0x2A909613: // Tennis (alt)
case 0xBC202DB6: // Tennis P2
case 0x008A9C16: // Wrecking Crew P1
case 0x30C42B1E: // Wrecking Crew P2
case 0xAD407F52: // Balloon Fight P1
case 0x6AD67502: // Balloon Fight P2
case 0x18A93B7B: // Mahjong (J)
case 0xA2AD7D61: // Mahjong (J) (alt)
case 0xA9A4A6C5: // Mahjong (J) P1
case 0x78D1D213: // Mahjong (J) P2
case 0x13A91937: // Baseball P1
case 0xC4DD2523: // Baseball P1 (alt 1)
case 0xB5853830: // Baseball P1 (alt 2)
case 0x968A6E9D: // Baseball P2
case 0xF64D7252: // Baseball P2 (alt 1)
case 0xF5DEBF88: // Baseball P2 (alt 2)
case 0xF42DAB14: // Ice Climber P1
case 0x7D6B764F: // Ice Climber P2
throw RESULT_ERR_UNSUPPORTED_VSSYSTEM;
}
Context context( cpu, ppu );
try
{
// Credit to the MAME devs for much of the DIP switch info.
switch (prgCrc)
{
// …кусок пропущен для краткости…
case 0x70433F2C: // Battle City
--- Конец кода ---
Мораль — либо патчить так, чтобы не менялась контрольная сумма (что в случае FCEu довольно затруднительно, ибо md5), либо патчить эмулятор.
С MAME в общем–то аналогичная ситуация — он чуть ли не весь состоит из хаков и подпорок для каждого рома. Игровые автоматы всё–таки штучный товар, у каждой железки свои особенности.
Guyver(X.B.M.):
Либо использовать Виртуанес - ему пофигу, если маппер поддерживается, конечно...
Teffycom:
Виратуанес тоже некорректно воспроизводит VS ромы после их изменения - портится палитра.
Guyver(X.B.M.):
Да ну? Я изменял 4 VS рома - все остались как и были... Может версия не та...
Teffycom:
У меня версия 0.97. Battle City, по крайней мере, после изменения работает с глючной палитрой.
Навигация
Перейти к полной версии