==============================================================================
                                GROM README
                     Written by Bart Trzynadlowski 2000
==============================================================================

This is the GROM readme text for GROM v0.6, please read it before asking
questions about the software. GROM is public domain.

Special thanks to Kuwanger (http://members.tripod.com/~Kuwanger) for figuring
out that the SMD documentation I was using had a mistake. Also, thanks to
Felipe XnaK for his excellent Genesis ROM text.

0. SO WHAT IS IT?
GROM is a simple Genesis ROM tool which currently supports the conversion of
SMD format ROMs to BIN format ROMs (which are 512 bytes smaller and much more
hacker-friendly.) It can also display information from the Sega cartridge
header from either file type.
        It is open source (public domain) and will work under DOS and FreeBSD
for sure. The only assumptions it makes are that unsigned chars are 1 byte.
It should come bundled with the source code, an i386 DOS executable, this
documentation, and documentation on the SMD ROM format. Compile the single
source file with GCC. It will probably not work under other compilers, I know
that it does not work with TurboC++: it seems to compile fine, but it does not
expand wildcards in argv[] and will not convert files to BIN.

1. HOW TO WORK IT
GROM is very simple to use:

        grom [files] [options]

The files are SMD or BIN depending on what you want to do with them. You may
list one or more. Wildcards can be used (in GCC builds for sure). The only
restrictions are that the files may NOT start with a - character and that
they must only have ONE . in them, otherwise things will get ugly.
        GROM is CASE SENSITIVE, therefore: game.smd and GAME.SMD are seen
differently. GROM expects all files to have their extensions as lower case
because it looks at the extensions to crudely determine the ROM format. Under
DOS, it isn't an issue but under UNIX systems, it is. If you want GROM to
include an upper->lower case converter, let me know.

        Valid options:

        -bin            Convert SMD file(s) to BIN
        -info           Show information from cartridge header about ROM(s)

When converting files to BIN, you will see a progress indicator, each . means
roughly 10%.

2. QUIRKS
I'm not 100% sure about some things in the Sega header. I need information on
the following:

        - Does the product code field really start at 0x183 and is it 11 bytes
          long? Some documentation claims otherwise.
        - Is the modem data field 10 or 20 bytes?
        - The country field is 3 bytes, correct?

Also, as was mentioned earlier, GROM only seems to work fine with GCC (and
probably other UNIX compilers -- although this is untested) and thus DJGPP
since it is just a DOS port of GCC.

3. CHANGES

Version 0.6:
        - Major update! Command line handling has been completely redesigned
        - Multiple files can be specified on the command line
        - Multiple options can be specified as well, their actions will be
          performed in sequence
        - Added a progress indicator
        - Forgot to actually change the error format in the last release, it
          has been done now
          
Version 0.51:
        - Fixed a minor but serious bug which caused segmentation faults on
          some UNIX systems (d'oh!)
        - Changed error message format

Version 0.5:
        - Improved SMD to BIN decoding process, now it decodes 2 bytes per
          pass instead of one and it no longer needs to make an if comparison.
          This is much more efficient
        - Changed some error messages, tidied up comments, removed the
          #include <stdlib.h> because no stdlib.h functions were being used

Version 0.0:
        - Initial release

4. CONTACT
You can reach me at trzy@powernet.net. Useful feedback is appreciated. Do not
email me about developing software for you, ROMs, or anything else that's
stupid.
