X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?p=fceu.git;a=blobdiff_plain;f=mappers%2F228.c;h=a63218e716b45d2686da0c7dce896feff7098db3;hp=bfae3a63db3319eba82668f0eafb214dbe39f095;hb=386f5371eb984fb9c2860c83e740890a75cd45c1;hpb=eec2623f6183dd0f9494b99065a16bf90f2a1ccf diff --git a/mappers/228.c b/mappers/228.c index bfae3a6..a63218e 100644 --- a/mappers/228.c +++ b/mappers/228.c @@ -15,39 +15,62 @@ * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software - * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA */ #include "mapinc.h" +//16 bits of ram in total +//only use bottom 4 bits as ram though +static uint8 mapper228_ram[4]; + +static SFORMAT StateRegs[]= +{ + { mapper228_ram, 4, "MAPPER_RAM" }, + { 0 } +}; + +static DECLFR(Mapper228_read) +{ + return mapper228_ram[A & 3] & 0xF; +} + static DECLFW(Mapper228_write) { - uint32 page,pagel,pageh; + uint32 page, pagel, pageh; - MIRROR_SET((A>>13)&1); + //write to ram + if (A < 0x6000) + { + mapper228_ram[A & 3] = V; + return; + } + MIRROR_SET((A >> 13) & 1); + page = (A >> 7) & 0x3F; - page=(A>>7)&0x3F; - //printf("%04x\n",A); - if((page&0x30)==0x30) - page-=0x10; - - pagel=pageh=(page<<1) + (((A>>6)&1)&((A>>5)&1)); - pageh+=((A>>5)&1)^1; + if( (page & 0x30) == 0x30) + page -= 0x10; - ROM_BANK16(0x8000,pagel); - ROM_BANK16(0xC000,pageh); - VROM_BANK8( (V&0x3) | ((A&0xF)<<2) ); + pagel = pageh = (page << 1) + (((A >> 6) & 1) & ((A >> 5) & 1)); + pageh += ((A >> 5) & 1) ^ 1; + + ROM_BANK16(0x8000,pagel); + ROM_BANK16(0xC000,pageh); + VROM_BANK8( (V&0x3) | ((A&0xF)<<2) ); } static void A52Reset(void) { - Mapper228_write(0,0); + Mapper228_write(0x8000, 0); } void Mapper228_init(void) { - MapperReset=A52Reset; - A52Reset(); - SetWriteHandler(0x8000,0xffff,Mapper228_write); + MapperReset=A52Reset; + A52Reset(); + SetWriteHandler(0x8000, 0xFFFF, Mapper228_write); + SetWriteHandler(0x4020, 0x5FFF, Mapper228_write); + SetReadHandler (0x4020, 0x5FFF, Mapper228_read); + AddExState(StateRegs, ~0, 0, 0); }