iNES Cart Header Utility, v0.3
 Scott Konash, 2002
skonash@ualberta.ca
-------------------------------------------------------------------------------------------

Tested:
Windows XP (with dependency package)

Will Most Likely Work:
Windows 95, 98, 98SE, NT, 2000 (with dependency package)

Installation:
Due to my efforts in trying to avoid Microcrap's ugly layer of win32 abstraction 
(MFC), and my laziness to code pure win32, I was forced to use Borland C++ Builder 
6, so a small package of dependencies is required and can be downloaded from 
www.konash.net - it only need's to be installed once for all of my NES tools. Sorry 
guys - it's either this or i can code a DOS/UNIX command-line version.  I prefer 
windows because it forces me to learn a lot more about event-driven programming and 
user-interactivity in general.

Usage:
Fire it up and do what you need to do.  As long as you're familiar with the iNES 
file format and with the NES architecture in general, you should know what your 
doing.  If not, start reading some of the docs at nesdev.parodius.com - I designed 
this tool to be used as a learning tool as well (which was my motivation for the
HexEdit-style dynamic display etc.)

FAQ from my testers:
	Q - Why re-create something that has been done 50 times before?
	A - Why do skiiers ski the same slopes that a hundred people have skiied?  I 
	    like to program.  The computer industry is one that is very competitive 
	    and flooded with a lot of highly-skilled people right now.  It's extremely 
	    tough to come up with an idea that hasn't been done 50 times already.  I 
	    made this for MY educational purposes only, and I released the source to 
	    demonstrate my coding abilities to any potential employers.  Even though I 
	    feel it is much better than most of the similar tools out there right now, 
            I could care less if anyone used it.
	Q - Why did you decide not to do it in pure win32 api?
	A - I did a lot of win32 stuff in the c++ course that I took from GameInstitute,
	    but win32 gives you a LOT of control.  and with a lot of control comes a LOT 
	    of responsibility.  There is just way too much stuff to worry about when 
	    coding pure api.  my 60kb tool would end up being 3000 lines of code by the 
	    time i got all the callbacks done etc.
	Q - Why anti-Microsoft?
	A - Im not anti-Microsoft.  Im just very disappointed in their MFC framework.  Got 
	    a bit better with the .NET framework but still kind of annoying to code.  I 
	    would almost rather code win32 and avoid having a layer of abstraction, 
	    because it seems to take me just as long to code in MFC.

Changelog:
v0.3
	- Added dynamic HexEdit-style header display - bytes update in memory as
	  you change information, and changes will be applied to the file when you
	  click the "Apply Changes" button.
	- Will automatically try to fix garbage in headers.  It will only set them
	  back to 0 though, so if byte 7 was used for some text or something you'll
	  have to adjust the mapper accordingly (in most cases just set it to 00 so
	  it will only use byte 6 as mapper).  If you still don't trust it then you 
	  can always run it through GoodNES or NesToy first.  I have all due respect 
	  for the dumpers of these carts but what the hell were they thinking? I 
	  know the file format has been revised at times, but it doesn't take half a 
	  brain to come to the conclusion that more than 16 mappers exist ;p
	- If it detects changes in the bytes (as compared to the original file), it 
	  will ask you if you would like to save them.
	- Other fixups here and there.
v0.2
	- Added ability to actually edit stuff, and not just view it.  Surprising how 
	  much longer it took me to write the mapper encoding code than it did to write 
	  the mapper decoding code ;p
	- Fixed a nasty bug that caused an access violation.  This has finally given me 
	  a reason to not like c++ builder...it has no profiler and it's debugger sucks.
	- Fixed a couple memory leaks because i forgot about c++ builder forms not 
	  having proper destructors.  They were just a couple small 16byte memory leaks 
	  which really didn't hurt anything, but one memory leak is one too many for me.
v0.1
	- Initial release.  Views all header info.  Needs lots of work.

Thanks to - SNaP for doing some testing (however minimal it was)
	  - Klarth for always supporting my NES programming ambitions
	  - the nesdev mailing list for giving me something to do
	    for the 1-hour period between the time i get home and
	    the time i crash while attending the UofA.  Computing 
            Science is a grossly competetive field in Canada.