NAME
    Games::NES::ROM - View information about an NES game from a ROM file

SYNOPSIS
        use Games::NES::ROM;
    
        # Read in the ROM
        my $rom = Games::NES::ROM->new( 'file.nes' );

        # Access the details
        print 'PRG Banks: ', $rom->PRG_count, "\n";
        print 'CHR Banks: ', $rom->CHR_count, "\n";
        # etc...
    
        # View the CRC checksum
        print 'CRC: ', $rom->CRC;

DESCRIPTION
    This module loads the details of an NES rom file. An NES ROM file is
    layed out as follows:

        +-----------+---------------+---------+---------+ Header
        | NES\0x01a | [PC] [CC] X X | X X X X | X X X X | 16 Bytes
        +-----------+---------------+---------+---------+
        |                                               |
        |          PRG Banks (PC * 16384 Bytes)         |
        |                                               |
        +-----------------------------------------------+
        |                                               |
        |          CHR Banks (CC * 8192 Bytes)          |
        |                                               |
        +-----------------------------------------------+
        |                                               |
        |          Title (128 Bytes - Optional)         |
        |                                               |
        +-----------------------------------------------+

INSTALLATION
    To install this module via Module::Build:

        perl Build.PL
        ./Build         # or `perl Build`
        ./Build test    # or `perl Build test`
        ./Build install # or `perl Build install`

    To install this module via ExtUtils::MakeMaker:

        perl Makefile.PL
        make
        make test
        make install

METHODS
  new( [$filename] )
    Creates a new instance of the module. An optional filename argument may
    be passed to immediately load the data.

  load( $file )
    Reads the ROM structure into memory.

  sprite( $chr_bank, $index )
    Returns the raw (composite) sprite in the specified CHR bank at the
    specified array index.

ACCESSORS
    The following accessors are available:

    * identifier - sould be "NES\0x01a"
    * PRG_count - number of PRG banks
    * CHR_count - number of CHR banks
    * PRG_banks - arrayref of PRG data
    * CHR_banks - array ref of CHR data
    * mapper - the mapper number
    * has_trainer - is there trainer data?
    * trainer - the trianer data
    * horizontal_mirroring - does it use horizontal mirroring?
    * vertical_mirroring - does it use veritcal mirroring?
    * VRAM - uses VRAM?
    * SRAM - uses SRAM?
    * CRC - CRC checksum
    * title - game title if available

SEE ALSO
    * http://www.sadistech.com/nesromtool/romdoc.html

AUTHOR
    * Brian Cassidy <bricas@cpan.org>

COPYRIGHT AND LICENSE
    Copyright 2006 by Brian Cassidy

    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.

