iNES Header Repair
- Connie
- Datter
- Posts: 218
- Joined: 20 Jun 2008 12:15
Re: iNES Header Repair
The big drawback of datting the extra 16byte header into the ROM crc/hash is, who is going to check them?
I mean there are so many working configurations of tweaked headers, who gets to decide what is 'correct' and who is going to manually test each to check it works - as you mention, a working mapper value. This would ultimately create a 'No-Intro NES ROM set' rather than a clean accurate cart dump set. Catering for people using ROM managers that can't make use of an xml header skipper, or not knowing how to use it, isn't a solution.
Continue to use the header skipper so collectors can have their own working headers for whatever emulator it works with, and add a split PRG+CHR database with a log of header info. I'm sure xuom2 could code a database field that could just store the 16byte header, maybe on the fly, DoM could generate a dat from "header+PRG+CHR.nes" ?
I mean there are so many working configurations of tweaked headers, who gets to decide what is 'correct' and who is going to manually test each to check it works - as you mention, a working mapper value. This would ultimately create a 'No-Intro NES ROM set' rather than a clean accurate cart dump set. Catering for people using ROM managers that can't make use of an xml header skipper, or not knowing how to use it, isn't a solution.
Continue to use the header skipper so collectors can have their own working headers for whatever emulator it works with, and add a split PRG+CHR database with a log of header info. I'm sure xuom2 could code a database field that could just store the 16byte header, maybe on the fly, DoM could generate a dat from "header+PRG+CHR.nes" ?
-
- Posts: 11
- Joined: 12 Jan 2011 09:06
Re: iNES Header Repair
I would appreciate if someone has already used this script,
to share a CMP DIR2DAT of the resulting files...
Thanks in advance
oxyandy
to share a CMP DIR2DAT of the resulting files...
Thanks in advance
oxyandy
-
- Posts: 4
- Joined: 06 Dec 2012 23:04
Re: iNES Header Repair
Here you go, this archive contains three DAT's I created with CMpro's DIR2DAT feature.oxyandy wrote:I would appreciate if someone has already used this script,
to share a CMP DIR2DAT of the resulting files...
Thanks in advance
oxyandy
This is the first time I used that feature, but I think I got it right, I checked these options:
- Single file sets
- Remove extension
- Add MD5
- Add SHA1
Description of the three DAT files:
Nintendo - Nintendo Entertainment System (No-Intro 20121210 Fullset, 2656 Games) (headerless).dat
is a DIR2DAT of the No-Intro 20121210 Fullset after stripping all 16byte headers and revalidating them through CMpro with no header skipper loaded.
Nintendo - Nintendo Entertainment System (No-Intro 20121210, checksums found in NesCarts 2012-10-22, iNES headers rebuilt, 2110 Games).dat
is a DIR2DAT of the 2110 games that were processed by the Python script 'ines-fix.py' using bootgod's XML file 'NesCarts (2012-10-22).xml', they have rebuilt iNES headers.
Nintendo - Nintendo Entertainment System (No-Intro 20121210, checksums not found in NesCarts 2012-10-22, 546 Games).dat
is a DIR2DAT of the 546 Games that the script could not match to the XML and therefore remain headerless. They are mostly japanese and unlicensed/beta/proto carts.
(expired)
Cheers!
-
- Posts: 11
- Joined: 12 Jan 2011 09:06
Re: iNES Header Repair
neoxite
Thanks very much,
I really appreciate these !
Thanks very much,
I really appreciate these !
-
- Posts: 11
- Joined: 12 Jan 2011 09:06
Re: iNES Header Repair
<game name="Crazy Climber" altname="クレイジークライマー" class="Licensed" catalog="NBF-CY (04)" publisher="Nichibutsu" developer="Nichibutsu" region="Japan" players="2" date="1986-12-26">
<cartridge system="Famicom" crc="C68363F6" sha1="003B7F1315F5EE0DC60C5F9D989EC8BAB0811ED4" dump="ok" dumper="bootgod" datedumped="2009-11-01">
<board type="HVC-UNROM+74HC08" pcb="HVC-UNROM-02" mapper="180">
<prg name="NBF-CY-0 PRG" size="128k" crc="C68363F6" sha1="003B7F1315F5EE0DC60C5F9D989EC8BAB0811ED4"/>
<vram size="8k"/>
<chip type="74xx08"/>
<chip type="74xx161"/>
<pad h="0" v="1"/>
</board>
</cartridge>
</game>
Well, BootGod dat (as above) says Crazy Climber is vertical mirroring...
But, ROM that matches that dat is set horizontal mirroring...
Same with Super Arabian (Vertical Mirroring set as in BootGod's xml) wont match, horizontal does.
Not much time to look deeper just yet..
More when I have time.
<cartridge system="Famicom" crc="C68363F6" sha1="003B7F1315F5EE0DC60C5F9D989EC8BAB0811ED4" dump="ok" dumper="bootgod" datedumped="2009-11-01">
<board type="HVC-UNROM+74HC08" pcb="HVC-UNROM-02" mapper="180">
<prg name="NBF-CY-0 PRG" size="128k" crc="C68363F6" sha1="003B7F1315F5EE0DC60C5F9D989EC8BAB0811ED4"/>
<vram size="8k"/>
<chip type="74xx08"/>
<chip type="74xx161"/>
<pad h="0" v="1"/>
</board>
</cartridge>
</game>
Well, BootGod dat (as above) says Crazy Climber is vertical mirroring...
But, ROM that matches that dat is set horizontal mirroring...
Same with Super Arabian (Vertical Mirroring set as in BootGod's xml) wont match, horizontal does.
Not much time to look deeper just yet..
More when I have time.
-
- Posts: 4
- Joined: 06 Dec 2012 23:04
Re: iNES Header Repair
Well that is odd. For clarification, the romset that the script processed was completely headerless, so the script must have rebuilt an incorrect mirroring value.oxyandy wrote:Well, BootGod dat (as above) says Crazy Climber is vertical mirroring...
But, ROM that matches that dat is set horizontal mirroring...
Same with Super Arabian (Vertical Mirroring set as in BootGod's xml) wont match, horizontal does.
I took a look the the script (taken from http://nwserver.ath.cx/2012/05/30/ines-header-fixer/) and noted this section:
mirror_4 = 0
mirror_v = 0
pad = board.find("pad")
if (format_crc32 == "CD50A092" or \
format_crc32 == "EC968C51" or \
format_crc32 == "404B2E8B"):
mirror_4 = 1
elif (pad is not None):
# the "h" pad means "v" mirror
mirror_v = int(pad.attrib.get("h"))
Looks like rather than using the mirroring value from the XML, the script actually tries to determine the mirroring type itself. I am not literate enough to even know how the mirroring type is correctly determined, however the 'problem at hand' appers to be with the script.
-
- Posts: 11
- Joined: 12 Jan 2011 09:06
Re: iNES Header Repair
Yep, I smiled when I read that, excellent idea, really saves confusionWell that is odd. For clarification, the romset that the script processed was completely headerless
-
- Posts: 11
- Joined: 12 Jan 2011 09:06
Re: iNES Header Repair
<game name="Crazy Climber" altname="クレイジークライマー" class="Licensed" catalog="NBF-CY (04)" publisher="Nichibutsu" developer="Nichibutsu" region="Japan" players="2" date="1986-12-26">
<pad h="0" v="1"/>
Ah, the logic behind this ..
You would think in the XML.. that v="1" means Vertical...
and <pad h="1" ............ horizontal
right ?
Well, I guess not..
The actual BootGod profile page says
http://bootgod.dyndns.org:7777/profile.php?id=3869
And then I see this comment in the script
# the "h" pad means "v" mirror
So the script looks ok..
I think I have previously got caught on this before
<pad h="0" v="1"/>
Ah, the logic behind this ..
You would think in the XML.. that v="1" means Vertical...
and <pad h="1" ............ horizontal
right ?
Well, I guess not..
The actual BootGod profile page says
Code: Select all
iNES Mapper 180
Mirroring Horizontal
And then I see this comment in the script
# the "h" pad means "v" mirror
So the script looks ok..
I think I have previously got caught on this before
Re: iNES Header Repair
Can I run this script in a command prompt in Windows 8 using Python 2.7.3 will it work that way?
I added the Python 2.7.3 path to my environment variables, I can now run it using Python from the command line, but -> find . -type f -name '*.nes' -exec ./ines-fix.py {} \;
doesn't work, what the heck am I supposed to do that looks like applescript to me! ugh
Keeps saying File not found -'*.nes'
wth?
I added the Python 2.7.3 path to my environment variables, I can now run it using Python from the command line, but -> find . -type f -name '*.nes' -exec ./ines-fix.py {} \;
doesn't work, what the heck am I supposed to do that looks like applescript to me! ugh
Keeps saying File not found -'*.nes'
wth?
- Connie
- Datter
- Posts: 218
- Joined: 20 Jun 2008 12:15
Re: iNES Header Repair
Funny you should mention this, because I was going to question if you knew that.oxyandy wrote:<game name="Crazy Climber" altname="クレイジークライマー" class="Licensed" catalog="NBF-CY (04)" publisher="Nichibutsu" developer="Nichibutsu" region="Japan" players="2" date="1986-12-26">
<pad h="0" v="1"/>
Ah, the logic behind this ..
You would think in the XML.. that v="1" means Vertical...
and <pad h="1" ............ horizontal
It too had me confused when I was manually checking headers against Bootgods database.
A horizontal platformer with vertical mirroring?
Re: iNES Header Repair
I cleaned up two of your .dat files using:neoxite wrote:Here you go, this archive contains three DAT's I created with CMpro's DIR2DAT feature.
This is the first time I used that feature, but I think I got it right - Cheers!
datutil -f listinfo old.dat
http://speedy.sh/rJXhu/NES-Cart-Databas ... -Found.dat
http://speedy.sh/32cWQ/NES-Cart-Database-Headers.dat
Rebuild is possible using Python 2.7.3 in Windows 8 with the following from a command prompt:
FOR /R %v IN (*.nes) DO "C:\fix\ines-fix.py" "%v"
The following seem to be excluded from newer No-Intro .dat's
Baseball (USA) (GameCube Edition) [folder: Baseball (USA) (GameCube Edition)
Clu Clu Land (USA) (GameCube Edition) [folder: Clu Clu Land (USA) (GameCube Edition)
Donkey Kong (USA) (GameCube Edition) [folder: Donkey Kong (USA) (GameCube Edition)
Donkey Kong Jr. (USA) (GameCube Edition) [folder: Donkey Kong Jr. (USA) (GameCube Edition)
Excitebike (USA) (GameCube Edition) [folder: Excitebike (USA) (GameCube Edition)
Legend of Zelda, The (USA) (Rev A) (GameCube Edition) [folder: Legend of Zelda, The (USA) (Rev A) (GameCube Edition)
Legend of Zelda, The (USA) (Rev B) (GameCube Edition) [folder: Legend of Zelda, The (USA) (Rev B) (GameCube Edition)
Mario Bros. (USA) (GameCube Edition) [folder: Mario Bros. (USA) (GameCube Edition)
Pinball (USA) (GameCube Edition) [folder: Pinball (USA) (GameCube Edition)
Tennis (USA) (GameCube Edition) [folder: Tennis (USA) (GameCube Edition)
Zelda II - The Adventure of Link (USA) (GameCube Edition)
So I've removed them from yours =D
Now anyone can rebuild a set using the XML file, thanks!
-
- Posts: 701
- Joined: 22 Sep 2012 16:36
Re: iNES Header Repair
Crazy Climber isn't horizontal or a platformer. It's a game about making a guy climb the side of a (endless?) building, individually controlling his left and right hands to climb without getting knocked off.Connie wrote: A horizontal platformer with vertical mirroring?
- Connie
- Datter
- Posts: 218
- Joined: 20 Jun 2008 12:15
Re: iNES Header Repair
I wasn't referencing any game in particular, just making the point that a horizontal scrolling game shouldn't have vertical mirroring.
Besides, I'm from the 80's/90's arcade era and know Crazy Climber all too well.
Besides, I'm from the 80's/90's arcade era and know Crazy Climber all too well.
- C. V. Reynolds
- Datter
- Posts: 270
- Joined: 17 Jun 2009 04:42
Re: iNES Header Repair
This reminds me of something I had forgotten...
TwinBee 3 - Poko Poko Daimaou (Japan)
Try to load the Bootgod XML for this game in Nestopia and see how messed up it is. When using Nestopia's internal database, the game runs fine. When using a header built from the Bootgod database, it runs fine. Either Nestopia isn't reading the XML file correctly, or the XML file has an error in it somewhere for this game.
TwinBee 3 - Poko Poko Daimaou (Japan)
Try to load the Bootgod XML for this game in Nestopia and see how messed up it is. When using Nestopia's internal database, the game runs fine. When using a header built from the Bootgod database, it runs fine. Either Nestopia isn't reading the XML file correctly, or the XML file has an error in it somewhere for this game.
-
- Posts: 11
- Joined: 12 Jan 2011 09:06
Re: iNES Header Repair
There are plenty of examples similar to this..
try Ys III: Wanderers from Ys rebuilt from BootGod's database (aka mapper 4) in Nestopia..
The background will be missing , Nestopia Internal uses 118
even CaH4e3's latest Fceumm will tell you Mapper 4 is incorrect, and loads ROM as 118..
There are more examples of how using BootGod's xml in Nestopia, causes ROMs to fail.
You need more examples ?
With a tiny edit, the python script can be used with Marty's database in the same way to rebuild headers.
Using Marty's database in this way can fix another 303 ROMs which BG's did not..
Comparing the resulting sets shows quite a few differences...
EDIT: BTW, Konami mappers in Nestopia as Marty left it are a bit limited,
requiring very specific xml entries for Konami ROMs.
Dragon2snow rewrote these mappers for Nestopia, making it MUCH more versatile.
try Ys III: Wanderers from Ys rebuilt from BootGod's database (aka mapper 4) in Nestopia..
The background will be missing , Nestopia Internal uses 118
even CaH4e3's latest Fceumm will tell you Mapper 4 is incorrect, and loads ROM as 118..
There are more examples of how using BootGod's xml in Nestopia, causes ROMs to fail.
You need more examples ?
With a tiny edit, the python script can be used with Marty's database in the same way to rebuild headers.
Using Marty's database in this way can fix another 303 ROMs which BG's did not..
Comparing the resulting sets shows quite a few differences...
EDIT: BTW, Konami mappers in Nestopia as Marty left it are a bit limited,
requiring very specific xml entries for Konami ROMs.
Dragon2snow rewrote these mappers for Nestopia, making it MUCH more versatile.