updated bords/mappers/stuff to 0.98.15, lots of them got broken, asmcore support...
[fceu.git] / mappers / 43.c
1 /* FCE Ultra - NES/Famicom Emulator
2  *
3  * Copyright notice for this file:
4  *  Copyright (C) 2002 Xodnizel
5  *
6  * This program is free software; you can redistribute it and/or modify
7  * it under the terms of the GNU General Public License as published by
8  * the Free Software Foundation; either version 2 of the License, or
9  * (at your option) any later version.
10  *
11  * This program is distributed in the hope that it will be useful,
12  * but WITHOUT ANY WARRANTY; without even the implied warranty of
13  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14  * GNU General Public License for more details.
15  *
16  * You should have received a copy of the GNU General Public License
17  * along with this program; if not, write to the Free Software
18  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
19  */
20
21 #include "mapinc.h"
22
23
24
25 static DECLFW(Mapper43_write)
26 {
27  //printf("$%04x:$%02x\n",A,V);
28  if((A&0x8122)==0x8122)
29  {
30   X6502_IRQEnd(FCEU_IQEXT);
31   if(V&2) IRQa=1;
32   else
33    IRQCount=IRQa=0;
34  }
35 }
36
37 static DECLFW(M43Low)
38 {
39 // int transo[8]={4,3,4,4,4,7,5,6};
40  int transo[8]={4,3,2,3,4,7,5,6};
41  A&=0xF0FF;
42  if(A==0x4022)
43   setprg8(0x6000,transo[V&7]);
44  //printf("$%04x:$%02x\n",A,V);
45 }
46
47 static void FP_FASTAPASS(1) M43Ho(int a)
48 {
49  IRQCount+=a;
50  if(IRQa)
51   if(IRQCount>=4096)
52   {
53    X6502_IRQBegin(FCEU_IQEXT);
54   }
55 }
56
57 //static DECLFR(boo)
58 //{
59 // printf("$%04x\n",A);
60 // return( ROM[0x2000*8 +0x1000 +(A-0x5000)]);
61 //}
62
63 void Mapper43_init(void)
64 {
65  setprg4(0x5000,16);
66  setprg8(0x6000,2);
67  setprg8(0x8000,1);
68  setprg8(0xa000,0);
69  setprg8(0xc000,4);
70  setprg8(0xe000,9);
71  SetWriteHandler(0x8000,0xffff,Mapper43_write);
72  SetWriteHandler(0x4020,0x7fff,M43Low);
73  //SetReadHandler(0x5000,0x5fff,boo);
74  SetReadHandler(0x6000,0xffff,CartBR);
75  MapIRQHook=M43Ho;
76 }