X-Git-Url: https://notaz.gp2x.de/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=boards%2F112.c;h=daf65cefc425b208596052bbfc27d7e9ea637149;hb=0d6a66c2a80f50ae51327cd406f9df14d99ad02e;hp=a58cf5cb4de822780a080c141b2b5deaf7648b13;hpb=d97315ac0bca825d2d50a44453bc5652946e2c67;p=fceu.git diff --git a/boards/112.c b/boards/112.c index a58cf5c..daf65ce 100644 --- a/boards/112.c +++ b/boards/112.c @@ -16,17 +16,22 @@ * 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 + * + * NTDEC, ASDER games + * */ #include "mapinc.h" static uint8 reg[8]; -static uint8 mirror, cmd; +static uint8 mirror, cmd, bank; static uint8 *WRAM=NULL; + static SFORMAT StateRegs[]= { {&cmd, 1, "CMD"}, {&mirror, 1, "MIRR"}, + {&bank, 1, "BANK"}, {reg, 8, "REGS"}, {0} }; @@ -36,12 +41,12 @@ static void Sync(void) setmirror(mirror^1); setprg8(0x8000,reg[0]); setprg8(0xA000,reg[1]); - setchr2(0x0000,reg[2]>>1); - setchr2(0x0800,reg[3]>>1); - setchr1(0x1000,reg[4]); - setchr1(0x1400,reg[5]); - setchr1(0x1800,reg[6]); - setchr1(0x1C00,reg[7]); + setchr2(0x0000,(reg[2]>>1)); + setchr2(0x0800,(reg[3]>>1)); + setchr1(0x1000,((bank&0x10)<<4)|reg[4]); + setchr1(0x1400,((bank&0x20)<<3)|reg[5]); + setchr1(0x1800,((bank&0x40)<<2)|reg[6]); + setchr1(0x1C00,((bank&0x80)<<1)|reg[7]); } static DECLFW(M112Write) @@ -51,6 +56,7 @@ static DECLFW(M112Write) case 0xe000: mirror=V&1; Sync(); ;break; case 0x8000: cmd=V&7; break; case 0xa000: reg[cmd]=V; Sync(); break; + case 0xc000: bank=V; Sync(); break; } } @@ -63,11 +69,12 @@ static void M112Close(void) static void M112Power(void) { - Sync(); + bank=0; setprg16(0xC000,~0); setprg8r(0x10,0x6000,0); SetReadHandler(0x8000,0xFFFF,CartBR); SetWriteHandler(0x8000,0xFFFF,M112Write); + SetWriteHandler(0x4020,0x5FFF,M112Write); SetReadHandler(0x6000,0x7FFF,CartBR); SetWriteHandler(0x6000,0x7FFF,CartBW); }