diff --git a/stella/src/emucore/CartMB.hxx b/stella/src/emucore/CartMB.hxx new file mode 100644 index 000000000..89f4c6383 --- /dev/null +++ b/stella/src/emucore/CartMB.hxx @@ -0,0 +1,101 @@ +//============================================================================ +// +// SSSS tt lll lll +// SS SS tt ll ll +// SS tttttt eeee ll ll aaaa +// SSSS tt ee ee ll ll aa +// SS tt eeeeee ll ll aaaaa -- "An Atari 2600 VCS Emulator" +// SS SS tt ee ll ll aa aa +// SSSS ttt eeeee llll llll aaaaa +// +// Copyright (c) 1995-1998 by Bradford W. Mott +// +// See the file "license" for information on usage and redistribution of +// this file, and for a DISCLAIMER OF ALL WARRANTIES. +// +// $Id: CartMB.hxx,v 1.1 2002-01-18 16:02:30 estolberg Exp $ +//============================================================================ + +#ifndef CARTRIDGEMB_HXX +#define CARTRIDGEMB_HXX + +class CartridgeMB; + +#include "bspf.hxx" +#include "Cart.hxx" + +/** + Cartridge class used for Dynacom Megaboy + There are 16 4K banks. + Accessing $1FF0 switches to next bank. + + @author Eckhard Stolberg + @version $Id: CartMB.hxx,v 1.1 2002-01-18 16:02:30 estolberg Exp $ +*/ +class CartridgeMB : public Cartridge +{ + public: + /** + Create a new cartridge using the specified image + + @param image Pointer to the ROM image + */ + CartridgeMB(const uInt8* image); + + /** + Destructor + */ + virtual ~CartridgeMB(); + + public: + /** + Get a null terminated string which is the device's name (i.e. "M6532") + + @return The name of the device + */ + virtual const char* name() const; + + /** + Reset device to its power-on state + */ + virtual void reset(); + + /** + Install cartridge in the specified system. Invoked by the system + when the cartridge is attached to it. + + @param system The system the device should install itself in + */ + virtual void install(System& system); + + public: + /** + Get the byte at the specified address. + + @return The byte at the specified address + */ + virtual uInt8 peek(uInt16 address); + + /** + Change the byte at the specified address to the given value + + @param address The address where the value should be stored + @param value The value to be stored at the address + */ + virtual void poke(uInt16 address, uInt8 value); + + private: + /** + Install pages for the next bank in the system + */ + void incbank(); + + private: + // Indicates which bank is currently active + uInt16 myCurrentBank; + + // The 64K ROM image of the cartridge + uInt8 myImage[65536]; +}; +#endif +