Here's my entry to the contest

I had some long description but then closed my browser by accident and now its gone

Basically here's the rundown:
- Reads NDS and GB/C headers.
- Can read from zips.
- Calculates CRCs against the internal CRCs.
- Lists other information
Missing:
- Unable to parse the last part of the NDS serial, i.e NTR-XXXX-??? where ??? is the unknown part. Would like to know how this info can be extracted.
- List of manufacturers/licensees for both systems.
- Cannot detect if an NDS game has been decrypted (like NDSTS can) although if someone knows how I'd be interested in knowing.
- No NDS icon.
- Probably some other things I can't think of right now.
- MD5/SHA1 (but that's fairly easy to add since its built into .NET)
Motivation behind this program was that I don't like using ucon64 for all this wiki work

---
New in version 0.2:
- Some N64 and NES support
- N64 Support has all the important information is there but can't calculate the CRC1 and CRC2 because each boot code provides a different method and I don't know those methods.
- NES support is mainly based off reading the iNES header which is know is not really internal rom information. As a little note, the iNES headers included in the no-intro versions do not make use of the PAL/NTSC bit or the RAM byte.
- There is an internal header for NES game however only 25-50% of the games actually have it and the data is a little "iffy". Its basically a 32byte header at the end of the PRG ROM.
-- I have identified the title string to be 16Bytes in ASCII and from the Maker Codes provided by Flubba on his site, there is a maker code.
-- Only issue is that this header was taken very liberally since I'm assuming it was not a format requirement.
-- Some internal names have no ascii padding or garbage characters and sometimes the maker code appears to be wrong. I say appears because the NES maker codes may be completely different from the current ones and/or companies had different names.
-- If you view view a NES game you will see the HEX output from the region where the header would be even if it doesn't exist. At this time I don't know how to differentiate so I left it in there to be seen. If anyone has more information on this header that would be useful.
- Directory support! You can now parse a whole directory at a time. All supported formats will be used. Btw, if you don't wanna wait for it to finish you can press the "X" to stop it in progress.
- Some info provided by 3210123 has also been included.
- MD5/SHA1 added
- Fixed (hopefully) a reading logic error.
---
New in version 0.3:
- Added support for GBA games and some support for SNES games
- SNES support "works" however the auto-detecting Lo/Hi/BS roms is broken at this moment so most roms will not be read properly unless forced.
- MD5/SHA1 calculations are broken into 4 byte chunks.
- N64 support improved. Can now correctly identify the boot chip and calculate the correct CRC1 and 2 for all games (including Lylat Wars).
- NES information now displays a CRC32 for the file and a CRC32/MD5/SHA1 for the Rom without the header. This may be useful for BigFred.
- Some imformation is now standardized:
--- All "original" values are displayed first and interpreted values are displayed in brackets. Ex. Version: 0x00 (v1.0).
--- All Rom and Ram sizes are displayed primarily in Bit sizes and sometimes a secondary size in bytes.
--- All Hex values are preceded by a 0x with the exception of CRC16/32/MD5/SHA1 values.
--- "Important" rom information like Internal Title and Serials are toward the top of the list. "Other Info" is in the middle. Checksums/Hash Checks are at the bottom.
- GB/C information should be "complete".
- Some information is now stored in an INI. Including, maker codes, Serial Regions, etc.
- Game serials will not be interpreted past what is found in the rom. For example, NDS roms will not have NTR- and -YYY interpretations added on to the internal serial.
- Tweaks here and there.
- Thanks to Carmina for the tip on using Shift-JIS decoding on SNES/N64 titles.
- Thanks to Y~K for providing me with the information I needed to calculate N64 CRC1 and 2.
---
Keep reading below for more release notes.
---
Please try it out and post your comments/suggestions.
Enjoy.
===============================================
Re: massin's "Game Header" program \ Yakushi~Kabuto on 17th January 2007, 06:41 wrote:
looks very promising
It's not too late to use your tool for the wiki, with you permission

===============================================
Re: massin's "Game Header" program \ 3210123 on 19th January 2007, 15:05 wrote:
This has probably been commented on several times...- Unable to parse the last part of the NDS serial, i.e NTR-XXXX-??? where ??? is the unknown part. Would like to know how this info can be extracted.
In GBA and NDS, the true serial is only 4 characters long, not the 10 characters (12 including hyphens) that most clients report. [As a consequence, I laugh every time a debate over P-EUR vs P-UKV comes up, as neither are truly part of the serial, GBA and NDS-wise]
The first character of the 4 tells what kind of cartridge/game it is.
Code: Select all
A = Normal Game ROM (Early in life)
B = Normal Game ROM (Later in life)
F = Famicom Mini/Classic NES ROM
K = Tilt Sensor Cartridge
M = Movie/Video ROM
P = Program ROM (Not a game, but an application of some sort)
R = Motion Sensor Cartridge
T = TV Tuner
U = Light Sensor Cartridge
V = Rumble Cartridge
Z = SD-card accepting (Play-Yan/MP3 Player)
The last character is the region, which determines the 3 letter suffix
Code: Select all
C = CHN (China), though there are exceptions (Ham-Ham Games, I believe, is one)
D = NOE (Germany [Nintendo Of Europe])
E = USA (America)
F = NOE (France [Nintendo Of Europe])
H = DUT (Netherlands [Dutch])
I = ITA (Italy)
J = JPN (Japan)
K = KOR (Korea)
P = EUR [UKV is an acceptable, though seldom-used, alternative] (Europe; generally England)
S = SPA (Spain)
U = AUS (Australia)
X = EUU (European Union)
Y = EUU (European Union)
Z = EUU (European Union)
There are a few others, but they're most likely unofficial and could be safely ignored.
Of course, unofficial carts generally don't have serials, which is why they often come up as "xxx--" - there's no serial to display or generate a suffix off of.
Hope this helps...perhaps you can add a 'type of ROM' field in there as well, working off of the first letter.
PS: This is all original research

===============================================
Re: massin's "Game Header" program \ massin on 19th January 2007, 15:22 wrote:
Thank You. Btw, I did know the true serial is just the four letters. I was just wondering how other header viewers can report those last 3 when its technically "packaging" information and not part of the rom. It seems like its just a guess

===============================================
Re: massin's "Game Header" program \ Devis0r on 20th January 2007, 03:49 wrote:
It's not guessing, it's just using a generic set, it was programed to read the serial and add those last three laters.
So when you open an ***P rom, it'll always say EUR.
I agree with 3210123, whenever these stupid little arguments about the last three values, it's hard not to laugh (and cry because you didn't learn anything)

===============================================
Re: massin's "Game Header" program \ massin on 20th January 2007, 04:26 wrote:
Haha, when was the last time i had an argument about those three letters?

Anyway I'll just blindly add them in

Anyone have any infor on the rest of the stuff I'm missing. Not so much about the icon thing. That's just for me to learn how to program that in. More about detecting decrypted roms and such.
- What actually encryption algorithm is used on NDS roms?
- I've seen lists for nintendo licensees. Are these the same across all nintendo consoles?
===============================================
Re: massin's "Game Header" program \ 3210123 on 20th January 2007, 09:19 wrote:
If you're talking about the list of manufacturer codes used in the ROM headers, yes, the same list is used for all the handhelds (GB, GBC, GBA, and NDS). Not too sure about Nintendo's consoles, though, or at least the ones with ROMs that store a manufacturer code in the ROM.- I've seen lists for nintendo licensees. Are these the same across all nintendo consoles?
BTW, as addition to my above post dissecting the serial, it should be noted that "officially" early titles may be 3 letters long...this is due to omitting the cart type, which is generally 'A' (normal game ROM). It's fairly easy to see why some games from 2001 omit it - there was no 'B' yet, or any other cart type letter...though looking at a lot of GB/GBC reports here, they did have 4-letter serials too, which seem to work the same way as GBA/NDS serials above (I suppose game companies can act like n00bs too).
===============================================
Re: massin's "Game Header" program \ massin on 22nd January 2007, 05:20 wrote:
Cool. Sounds good. Btw, I'm working on adding your info into the program.
Some new developments:
- Can parse whole directories! Although this may not sound like a huge feat, it was for me since I'm still new to C# programming and it was a bitch to get the program to do the parsing without making it (and the OS) unresponsive.
- Looking into N64, NES, SNES headers. Mainly N64 and NES though. If anyone has links to comprehensive resources on the internal headers for these roms, that would be greatly appreciated
-------
New version is available

===============================================
Re: massin's "Game Header" program \ michal99 on 22nd January 2007, 17:50 wrote:
I found an error in the new version. When a rom does not have the right extension the program is not able to display the informations and I got only this:New version is available.
*******************************************
Header data from PokemonMonsterTrading.cgb
*******************************************
*******************************************
When I rename it to *.gbc I got the right header.
===============================================
Re: massin's "Game Header" program \ massin on 20th February 2007, 08:31 wrote:
It is meant to be used with the extensions used by the no-intro dats. If there is a cgb in the dat then i'll have to include the extension. At this moment it does not autodetect the file. It works off extensions.
-------------
New version 0.3. Try it out

===============================================
Re: massin's "Game Header" program \ Yakushi~Kabuto on 20th February 2007, 10:45 wrote:
tested...
help > about doesn't work
tools > view nds icon doesn't seem to work
supported roms misses sfc, gba, nes & n64

otherwise great improvements!!
this is the best rom header tool ever!!
dude you must fix the about box and add a readme quickly or some bastards will steal the credits from you!!
===============================================
Re: massin's "Game Header" program \ massin on 20th February 2007, 17:07 wrote:
To load games that are "not" supported just use the "All Files" choice. The NDS Icon thing doesn't work because I don't know how to do that yet

===============================================
Re: massin's "Game Header" program \ massin on 25th February 2007, 00:28 wrote:
Notes for 0.3.5:
Fixed:
- Version for GBx games is not what it should have been (v1.x).
- SNES detection significantly improved. Only issues exists with a handful of roms.
- fixed the case issue where it would display "Bit" instead of "bit"
Changed:
- GBx games now only show one Licensee code at a time. If there is a 0x in front, its the old 1 Byte code, otherwise it's the new 2 Byte ASCII code.
New:
- Ability to Pause/Resume. If you pause, it will complete the current file and then wait.
- New icon, for now.
GBx and GBA processors are considered stable and "Final" in terms of use for the wiki. There are size checks for these processors to make sure the game is at least large enough to contain a header so that the program does not crash.
So now the question for everyone is this, what should I call this program? Game Header is obviously lame

===============================================
Re: massin's "Game Header" program \ Yakushi~Kabuto on 25th February 2007, 00:55 wrote:
suggested names:
World Domination Header General WDHG
Mutliple System Header Viewer / MSHV
Mutliple System Header Analyzer / MSHA
Mutliple System Header Doctor / MSHD
Mutliple System Header Expert / MSHE
Anyway, greatest header tool ever

The wiki templates will be modified to be compatible with that tool

===============================================
Re: massin's "Game Header" program \ kazumi213 on 25th February 2007, 13:04 wrote:
How about Header Reader EX (HEREX)? lol