| Разработка и ромхакинг > Ромхакинг и программирование |
| (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, по крайней мере, после изменения работает с глючной палитрой. |
| Навигация |
| Главная страница сообщений |