Разработка и ромхакинг > Инструменты
[NES] конвертер VCD game 300
(1/1)
fdx:
Лежал диск и стало интересно вытащить от туда игры. Структуру игр nes не знаю, но сходу начал писать код. Написал скрипт за полтора дня (+ где-то дней 5 делал из него exe).
На диске есть несколько папок, два файла не копируются вообще (битые?, но это не игры). А сами игры лежат в папке NEWROM в контейнерах bin без NES заголовка. Реально там 150 игр, остальные 150 оказалась копиями. В зависимости от размера (их всего 4 вида) я прописал заголовки:
40960 => 4e45531a 020101 000000000000000000
49152 => 4e45531a 020231 000000000000000000
65536 => 4e45531a 020431 000000000000000000
131072 => 4e45531a 080021 000000000000000000
Если найдёте на других дисках другие размеры дайте знать я добавлю. В целом большинство сконверченных игр запускаются (во FCEUX), но некоторые нет, либо криво (29). Причин может быть две почему так:
1) заголовок может быть не подходящим, так как я не разбираюсь особо. Желательно как-то определять кол-во блоков кода и графики (PRG,CHR), но я не знаю как, может здешние знающие подскажут.
2) некоторые игры такие как contra, rockman имели один байт который мешал запуску во FCEUX (а DVD-плееру он не мешал, видимо фсеукс привиредливый). И когда я находил этот байт в сравнении с оригиналом, и менял то игра начинала запускаться.
Для этих двух игр я сделал ещё такие исправления по 1 байту.
Те же остальные что не работают нужно сравнивать с оригинальными файлами но для этого нужно знать название. В hex редакторе вроде не нашёл. Надеюсь на обратную связь чтобы добавлять исправления.
Вот список не запускающихся (или кривых) :
G003
G018
G020
G034
G035
G046
G047
G048
G052
G068
G106
G117
G119
G121
G129
G143
G148
G156
G200
G201
G205
G212
G219
G252
G254
G273
G274
G283
G285
Как использовать: поместите exe конвертера в папку с bin файлами и запустите. Появится папка output с nes играми.
скачать 150 игр:
]
скачать конвертер:
]
Sharpnull:
Сделал поиск по NES 2.0 ромсету:
--- Код: ---# G001.nes
Licensed - Japan\1942.nes
# G003.nes
Licensed - Japan\高橋名人の冒険島.nes
# G005.nes
Licensed - Japan\TwinBee.nes
# G007.nes
Licensed - Japan\Mighty Bomb Jack (rev0).nes
# G009.nes
Licensed - Japan\Circus Charlie.nes
# G010.nes
Licensed - North America\Contra.nes
# G013.nes
Unlicensed - Taiwan&Hong Kong\Fire Dragon.nes
# G014.nes
Licensed - Japan\頭脳戦艦 Galg.nes
# G015.nes
Unlicensed - Taiwan&Hong Kong\Magic Jewelry.nes
# G017.nes
Licensed - Japan\Pooyan.nes
# G018.nes
Licensed - Japan\Rainbow Islands꞉ The Story of Bubble Bobble 2.nes
Licensed - North America\Rainbow Islands꞉ The Story of Bubble Bobble 2.nes
# G020.nes
Unlicensed - North America\Tetris꞉ The Soviet Mind Game.nes
# G021.nes
Licensed - Japan\10-Yard Fight (rev0).nes
# G022.nes
Licensed - Japan\Super Arabian.nes
# G025.nes
Licensed - Japan\Binary Land.nes
# G026.nes
Licensed - Japan\Balloon Fight.nes
# G027.nes
Licensed - Japan\BurgerTime.nes
# G031.nes
Licensed - Japan\Clu Clu Land.nes
# G032.nes
Licensed - Japan\Field Combat.nes
# G033.nes
Licensed - Japan\Dig Dug.nes
# G034.nes
Licensed - Japan\Donkey Kong (rev0).nes
Licensed - Japan\Donkey Kong (rev1).nes
# G035.nes
Licensed - Japan\Donkey Kong Jr. (rev1).nes
# G036.nes
Licensed - Japan\Donkey Kong 3.nes
# G038.nes
Licensed - Japan\Dragon Unit.nes
Licensed - North America\Castle of Dragon.nes
# G039.nes
Licensed - Japan\Elevator Action (rev0).nes
# G040.nes
Licensed - Japan\Exerion.nes
# G042.nes
Licensed - Japan\Formation Z (rev1).nes
# G043.nes
Licensed - Japan\Front Line.nes
# G046.nes
Licensed - Japan\The Goonies II꞉ Fratelli 最後の挑戦.nes
Licensed - North America\The Goonies II.nes
Licensed - PAL\The Goonies II.nes
# G047.nes
Licensed - Japan\Gradius.nes
# G048.nes
Licensed - North America\Rush'n Attack.nes
Licensed - PAL\Rush'n Attack.nes
# G052.nes
Licensed - Japan\Ice Climber.nes
Licensed - North America\Ice Climber.nes
# G056.nes
Licensed - Japan\影の伝説.nes
# G057.nes
Licensed - Japan\Karateka.nes
# G059.nes
Licensed - Japan\Yie Ar Kung-Fu (v1.2).nes
# G062.nes
Licensed - Japan\Championship Lode Runner.nes
# G063.nes
Licensed - Japan\Lot Lot.nes
# G066.nes
Licensed - Japan\4人打ち麻雀 (rev0).nes
# G068.nes
Licensed - Japan\Mappy.nes
# G069.nes
Licensed - Japan\Mario Bros..nes
# G071.nes
Licensed - Japan\Bat & Terry꞉ 魔境の鉄人Race.nes
# G072.nes
Licensed - Japan\忍者くん꞉ 魔城の冒険 (rev0).nes
Licensed - Japan\忍者くん꞉ 魔城の冒険 (rev1).nes
# G074.nes
Licensed - North America\Othello.nes
# G075.nes
Licensed - Japan\Pac-Man (rev0).nes
Licensed - Japan\Pac-Man (rev1).nes
# G081.nes
Licensed - Japan\Road Fighter.nes
# G082.nes
Licensed - Japan\Rockman.nes
Licensed - North America\Mega Man.nes
Licensed - PAL\Mega Man.nes
# G083.nes
Licensed - Japan\Astro Robo Sasa.nes
# G085.nes
Licensed - Japan\仮面の忍者 赤影.nes
# G087.nes
Licensed - Japan\Sky Destroyer.nes
# G093.nes
Licensed - Japan\Star Gate.nes
# G094.nes
Licensed - Japan\Star Soldier.nes
Licensed - North America\Star Soldier.nes
# G096.nes
Licensed - Japan\Tennis.nes
# G100.nes
Licensed - Japan\Xevious (rev0).nes
Licensed - Japan\Xevious (rev1).nes
# G102.nes
Licensed - Japan\Bokosuka Wars.nes
# G105.nes
Licensed - Japan\Geimos.nes
# G106.nes
Licensed - Japan\Penguinくん Wars.nes
# G109.nes
Licensed - Japan\Joust.nes
# G110.nes
Licensed - Japan\超時空要塞 Macross.nes
# G111.nes
Licensed - Japan\麻雀 (rev0).nes
Licensed - Japan\麻雀 (rev1).nes
Licensed - Japan\麻雀 (rev2).nes
# G113.nes
Licensed - Japan\Tag Team Pro-Wrestling.nes
# G114.nes
Multicarts - Extracts\中国象棋 - Chinese Chese.nes
Multicarts - Extracts\中国象棋.nes
# G115.nes
Unlicensed - Taiwan&Hong Kong\暗棋 - Gloomy Chess.nes
# G117.nes
Licensed - Japan\Cadillac.nes
# G119.nes
Licensed - Japan\Kero Kero Keroppiの大冒険.nes
# G121.nes
Licensed - Japan\Moaiくん.nes
# G122.nes
Licensed - Japan\長靴をはいた猫꞉ 世界一周 80日大冒険.nes
# G125.nes
Licensed - Japan\新人類꞉ The New Type.nes
# G126.nes
Licensed - Japan\つっぱり大相撲.nes
# G127.nes
Licensed - Japan\鉄道王꞉ Famicom Boardgame.nes
# G129.nes
Licensed - North America\Mickey Mousecapade.nes
# G131.nes
Licensed - Japan\A.S.O. - Armored Scrum Object.nes
# G132.nes
Licensed - Japan\忍者くん꞉ 阿修羅の章.nes
# G133.nes
Licensed - Japan\戦場の狼.nes
Licensed - North America\Commando.nes
# G136.nes
Licensed - Japan\Cosmo Genesis.nes
# G137.nes
Licensed - North America\Karate Champ (rev0).nes
Licensed - North America\Karate Champ (rev1).nes
# G138.nes
Unlicensed - Taiwan&Hong Kong\水果狸.nes
# G139.nes
Licensed - Japan\迷宮組曲꞉ Milonの大冒険.nes
# G140.nes
Licensed - North America\Metal Gear.nes
Licensed - PAL\Metal Gear.nes
# G141.nes
Licensed - Japan\Space Harrier.nes
# G142.nes
Licensed - North America\Jimmy Connors Tennis.nes
# G143.nes
Licensed - Japan\Tiger-Heli.nes
# G144.nes
Unlicensed - North America\Maxivision.nes
Unlicensed - North America\Pyramid (rev1).nes
Unlicensed - Taiwan&Hong Kong\Pyramid.nes
# G145.nes
Unlicensed - Taiwan&Hong Kong\Brush Roller.nes
# G147.nes
Licensed - Japan\Son Son.nes
# G148.nes
Licensed - Japan\Exed Exes.nes
# G156.nes
Licensed - Japan\Argus.nes
# G164.nes
Licensed - Japan\Raid on Bungeling Bay (rev0).nes
Licensed - North America\Raid on Bungeling Bay.nes
# G166.nes
Licensed - North America\Donkey Kong Jr. Math.nes
# G167.nes
Licensed - Japan\B-Wings.nes
# G168.nes
Licensed - Japan\Flappy.nes
# G169.nes
Licensed - Japan\Volguard II.nes
# G170.nes
Licensed - Japan\Hogan's Alley.nes
# G173.nes
Licensed - Japan\Bomberman.nes
# G174.nes
Licensed - Japan\Super Dyna'mix Badminton.nes
# G178.nes
Licensed - Japan\Millipede.nes
# G179.nes
Licensed - Japan\囲碁指南.nes
# G181.nes
Licensed - Japan\Gyrodine.nes
# G182.nes
Licensed - Japan\Buggy Popper.nes
# G184.nes
Licensed - Japan\Space Invaders.nes
# G185.nes
Licensed - Japan\Hottermanの地底探検.nes
# G188.nes
Licensed - Japan\Shufflepuck Café.nes
# G190.nes
Licensed - North America\Jackal.nes
# G191.nes
Licensed - Japan\MagMax.nes
# G194.nes
Licensed - North America\Side Pocket.nes
Licensed - PAL\Side Pocket.nes
# G195.nes
Licensed - Japan\Lode Runner.nes
Licensed - North America\Lode Runner.nes
# G200.nes
Licensed - Japan\Puzznic.nes
# G201.nes
Licensed - Japan\Seicross.nes
# G203.nes
Licensed - Japan\Battle City.nes
# G205.nes
Licensed - Japan\Popeye (rev0).nes
# G207.nes
Licensed - Japan\Chack 'n Pop.nes
# G208.nes
Licensed - Japan\本将棋꞉ 内藤九段将棋秘伝.nes
# G212.nes
Licensed - Japan\Galaga.nes
# G216.nes
Licensed - Japan\Pac-Land.nes
# G217.nes
Licensed - Japan\Wrecking Crew.nes
# G218.nes
Licensed - North America\Double Dribble (rev0).nes
# G219.nes
Licensed - Japan\Battle City.nes
Licensed - Japan\Warpman.nes
# G220.nes
Licensed - Japan\Baseball.nes
# G222.nes
Licensed - North America\Gun.Smoke.nes
Licensed - PAL\Gun.Smoke.nes
# G225.nes
Licensed - Japan\Golf.nes
# G226.nes
Licensed - Japan\Antarctic Adventure (rev0).nes
Licensed - Japan\Antarctic Adventure (rev1).nes
# G229.nes
Licensed - Japan\キン肉マン꞉ Muscle Tag Match (rev0).nes
# G232.nes
Licensed - Japan\King's Knight.nes
# G233.nes
Licensed - Japan\激突四駆 Battle.nes
# G235.nes
Licensed - Japan\いっき.nes
# G240.nes
Licensed - Japan\Route 16 Turbo.nes
# G241.nes
Licensed - Japan\Arkanoid.nes
# G242.nes
Licensed - Japan\Dough Boy.nes
# G250.nes
Licensed - Japan\人魚姫.nes
Licensed - North America\The Little Mermaid.nes
# G252.nes
Licensed - Japan\五目ならべ.nes
# G254.nes
Licensed - Japan\所さんのまもるもせめるも.nes
# G258.nes
Licensed - North America\Volleyball.nes
# G259.nes
Licensed - Japan\Star Force.nes
# G261.nes
Unlicensed - Taiwan&Hong Kong\臺灣 16 麻雀 (rev1).nes
# G263.nes
Licensed - North America\Blades of Steel.nes
Licensed - PAL\Blades of Steel.nes
# G265.nes
Licensed - Japan\Nuts & Milk.nes
# G268.nes
Licensed - Japan\Lunar Ball.nes
# G271.nes
Unlicensed - Taiwan&Hong Kong\Poker 集錦.nes
# G273.nes
Licensed - Japan\Quarth.nes
# G274.nes
Licensed - Japan\Star Luster.nes
# G278.nes
Licensed - Japan\Sqoon (rev0).nes
# G281.nes
Licensed - Japan\Flying Hero.nes
# G282.nes
Licensed - Japan\Championship Bowling.nes
Licensed - North America\Championship Bowling.nes
# G283.nes
Licensed - Japan\Terra Cresta.nes
Licensed - North America\Terra Cresta.nes
# G284.nes
Licensed - Japan\おにゃんこ Town.nes
# G285.nes
Licensed - Japan\1943꞉ The Battle of Valhalla.nes
Licensed - North America\1943꞉ The Battle of Midway.nes
# G286.nes
Licensed - Japan\Dr. Mario (rev0).nes
# G290.nes
Licensed - North America\Ice Hockey.nes
Licensed - PAL\Ice Hockey.nes
# G292.nes
Licensed - Japan\Super Mario Bros..nes
Licensed - North America\NES Action Set.nes
Licensed - PAL\NES Action Set.nes
Licensed - PAL\NES Super Set (rev0).nes
Licensed - PAL\NES Super Set (rev1).nes
Licensed - PAL\Super Mario Bros. (rev1).nes
# G293.nes
Licensed - Japan\Spelunker.nes
# G297.nes
Licensed - Japan\Thexder.nes
--- Конец кода ---
Скрипт на Python 3 такой:
--- Код: ---from pathlib import Path
roms_paths = (
r"nes2\Licensed - Japan",
r"nes2\Licensed - North America",
r"nes2\Licensed - PAL",
r"nes2\Unlicensed - Elsewhere",
r"nes2\Unlicensed - Japan",
r"nes2\Unlicensed - North America",
r"nes2\Unlicensed - Taiwan&Hong Kong",
r"nes2\Multicarts - Extracts",
)
def read_rom(p, off, size):
with open(p, "rb") as f:
f.seek(off)
b = f.read(size)
return b
out = ""
for p in Path(".").glob("*.nes"):
is_find = False
temp = ""
out += f"# {p}\n"
vcd_bytes = (
read_rom(p, 0x10, 0x40),
read_rom(p, 0x1010, 0x40),
read_rom(p, 0x4010, 0x40),
)
for roms_path in roms_paths:
for p_rom in Path(roms_path).rglob("*.nes"):
rom_bytes = (
read_rom(p_rom, 0x10, 0x40),
read_rom(p_rom, 0x1010, 0x40),
read_rom(p_rom, 0x4010, 0x40),
)
if vcd_bytes[0] == rom_bytes[0] and vcd_bytes[1] == rom_bytes[1] and vcd_bytes[2] == rom_bytes[2]:
out += f"{p_rom}\n"
is_find = True
if vcd_bytes[0] == rom_bytes[0] or vcd_bytes[1] == rom_bytes[1] or vcd_bytes[2] == rom_bytes[2]:
temp += f"{p_rom}\n"
if not is_find:
out += temp
Path("names.txt").write_text(out, encoding="utf-8")
--- Конец кода ---
Положить с *.nes после вашей программы, в roms_paths указать свои пути до ромов, я выбрал только некоторые папки. Для исправления ромов запускать ромы в Mesen с отладчиком и вкл. Break on BRK, Unofficial opcodes, Unstable opcodes, там будет видно, хотя в 高橋名人の冒険島 изменили адрес регистра маппера, это тоже проверять (запись в $4020-7FFF).
fdx:
Новая версия. Исправил большинство игр, пришлось добавлять отдельные исправления к каждой не рабочей игре.
Хорошо бы понять почему нужно править именно эти байты. Отладчиком я не понял как пользоваться,
мне же нужно знать места байтов в файле а не в озу. Искал байты просто через hex редактор.
В файле G018 не смог найти нужные байты, т.к. слишком много различий с оригиналом.
offset dec
G003 Meijin no Bouken-jima
14079 D0
14278 B7
G018 ----- не нашёл нужные байты
G020 tetris
35 F0
G034 Donkey Kong 02 01 00 08
18420 4C
2036 4C
G035 Donkey Kong Jr.
18115 4C
1731 4C
G046 Goonies
114825 4C
G047 Gradius
119 4C
6779 F0
G048 Rush'n Attack
114817 4C
114958 A9
G052 Ice Climber 02 01 00 08
107 4С
16491 4C
G068 Mappy
16511 F0
127 F0
G106 Penguin-kun Wars
279 4C
G117 cadilac
16799 4C
G119 Kero Kero
9079 F0
G121 Moai-kun
137 4С
G129 Mickey Mousecapade
517 D0
23460 9D
G143 Tiger-Heli 02 04 30
G148 Exed Exes
851 90
G156 Argus 02 02 71 58
291 30
G200 Puzznic
162 4C
G201 Seicross
152 4C
G205 Popeye
18067 4C
G212 Galaga 02 01 00 00
16523 D0
139 D0
G219 BattleCity 02 01 00 08
22794 F0
6410 F0
G252 Gomoku Narabe
18931 D0
G254 Tokoro-san no Mamoru
320 F0
G273 Quarth
32352 4C
G274 Star Luster 02 01 00
277 D0
G283 Terra Cresta 08 00 20
116062 4С
G285 1943 08 00 20
115164 D0
скачать конвертер v1.1:
toNES v1.1.zip (138.5 КБ - загружено 9 раз.)
fdx:
Нашёл образ диска и сравнил его со своим, всё одинаково кроме битых файлов (для защиты от копирования?) они у меня другие. Т.е. можно собрать полностью не битый вариант. И теоритически было бы не сложно заменить игры на свои, копировав их обратно в бин контейнер. Если игра будет меньше можно заполнить недостающий размер копировав часть кода игры в начало, как это было сделано китайцами. Но неизвестно надо ли это кому-то, сейчас и dvd плееров то нет ни у кого наверное.
Yoti:
Так вроде была тема на форуме про эту штуку, там тоже дампы выкладывали.
Навигация
Перейти к полной версии