Разработка и ромхакинг > Инструменты
[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 КБ - загружено 6 раз.)



fdx:
Нашёл образ диска и сравнил его со своим, всё одинаково кроме битых файлов (для защиты от копирования?) они у меня другие. Т.е. можно собрать полностью не битый вариант. И теоритически было бы не сложно заменить игры на свои, копировав их обратно в бин контейнер. Если игра будет меньше можно заполнить недостающий размер копировав часть кода игры в начало, как это было сделано китайцами. Но неизвестно надо ли это кому-то, сейчас и dvd плееров то нет ни у кого наверное.
Yoti:
Так вроде была тема на форуме про эту штуку, там тоже дампы выкладывали.
Навигация
Главная страница сообщений

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