FSkip behaviour changed, RefreshLine_PPU_hook optimized
[fceu.git] / ines.c
diff --git a/ines.c b/ines.c
index 71de2ba..ad1e926 100644 (file)
--- a/ines.c
+++ b/ines.c
@@ -80,7 +80,7 @@ static DECLFR(TrainerRead)
  return(trainerpoo[A&0x1FF]);\r
 }\r
 \r
-static void iNESGI(int h)\r
+static void iNESGI(int h, void *param)\r
 {\r
  switch(h)\r
  {\r
@@ -121,7 +121,16 @@ static void iNESGI(int h)
                 if(trainerpoo) {FCEU_gfree(trainerpoo);trainerpoo=0;}\r
                }\r
                break;\r
-     }\r
+  case GI_INFOSTRING:\r
+               {\r
+                int MapperNo;\r
+                MapperNo = (head.ROM_type>>4);\r
+                MapperNo|=(head.ROM_type2&0xF0);\r
+                sprintf(param, "iNES, %s, Mapper: %d%s%s", PAL?"PAL":"NTSC",\r
+                       MapperNo, (head.ROM_type&2)?", BB":"", (head.ROM_type&4)?", T":"");\r
+               }\r
+               break;\r
+ }\r
 }\r
 \r
 uint32 iNESGameCRC32=0;\r
@@ -747,19 +756,20 @@ static void NONE_init(void)
 \r
 void (*MapInitTab[256])(void)=\r
 {\r
-    0,0,\r
-//    Mapper2_init,Mapper3_init,\r
+    0,0, //Mapper2_init,Mapper3_init,\r
     0,0,\r
     0,0,\r
-    Mapper6_init,Mapper7_init,Mapper8_init,Mapper9_init,\r
-    Mapper10_init,Mapper11_init,\r
-    0,\r
-//    Mapper13_init,\r
+    Mapper6_init,\r
+    0,//Mapper7_init,\r
+    Mapper8_init,Mapper9_init,\r
+    Mapper10_init,\r
+    0, //Mapper11_init,\r
+    0, //Mapper13_init,\r
     0,\r
     0,\r
     Mapper15_init,Mapper16_init,Mapper17_init,Mapper18_init,\r
     0,0,\r
-       Mapper21_init,Mapper22_init,Mapper23_init,Mapper24_init,\r
+    Mapper21_init,Mapper22_init,Mapper23_init,Mapper24_init,\r
     Mapper25_init,Mapper26_init,Mapper27_init,\r
     0,0,0,0,\r
     Mapper32_init,Mapper33_init,Mapper34_init,\r
@@ -772,38 +782,52 @@ void (*MapInitTab[256])(void)=
     0,\r
     Mapper50_init,Mapper51_init,\r
     0,0,0,0,0,\r
-    Mapper57_init,Mapper58_init,Mapper59_init,Mapper60_init,\r
+    0,//    Mapper57_init,\r
+    0,//    Mapper58_init,\r
+    Mapper59_init,Mapper60_init,\r
     Mapper61_init,Mapper62_init,\r
     0,\r
-    Mapper64_init,Mapper65_init,Mapper66_init,Mapper67_init,\r
-    Mapper68_init,Mapper69_init,Mapper70_init,Mapper71_init,\r
+    Mapper64_init,Mapper65_init,\r
+    0,//Mapper66_init,\r
+    Mapper67_init,\r
+    Mapper68_init,Mapper69_init,\r
+    0,//Mapper70_init,\r
+    Mapper71_init,\r
     Mapper72_init,Mapper73_init,\r
     0,\r
-    Mapper75_init,Mapper76_init,Mapper77_init,Mapper78_init,\r
+    Mapper75_init,Mapper76_init,Mapper77_init,\r
+    0, //Mapper78_init,\r
     Mapper79_init,Mapper80_init,\r
     0,\r
     Mapper82_init,Mapper83_init,\r
     0,\r
-       Mapper85_init,Mapper86_init,Mapper87_init,Mapper88_init,\r
+    Mapper85_init,Mapper86_init,\r
+    0, //Mapper87_init,\r
+    0, //Mapper88_init,\r
     Mapper89_init,\r
     0,\r
-    Mapper91_init,Mapper92_init,Mapper93_init,Mapper94_init,\r
+    Mapper91_init,Mapper92_init,\r
+    0, //Mapper93_init,\r
+    0, //Mapper94_init,\r
     0,\r
     Mapper96_init,Mapper97_init,\r
     0,\r
     Mapper99_init,\r
     0,0,0,0,0,0,0,\r
-    Mapper107_init,\r
+    0, //Mapper107_init,\r
     0,0,0,0,\r
     0,Mapper113_init,\r
     0,0,0,\r
-    Mapper117_init,\r
+    0, //Mapper117_init,\r
     0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,\r
-    Mapper140_init,\r
+    0, //Mapper140_init,\r
     0,0,0,\r
-    Mapper144_init,\r
+    0, //Mapper144_init,\r
     0,0,0,0,0,0,\r
-    Mapper151_init,Mapper152_init,Mapper153_init,Mapper154_init,\r
+    Mapper151_init,\r
+    0, //Mapper152_init,\r
+    Mapper153_init,\r
+    0, //Mapper154_init,\r
     0,\r
     Mapper156_init,Mapper157_init,Mapper158_init,0,\r
     0,0,0,0,0,0,\r
@@ -811,12 +835,12 @@ void (*MapInitTab[256])(void)=
     0,0,0,0,0,0,0,0,0,0,0,0,\r
     Mapper180_init,\r
     0,0,0,\r
-    Mapper184_init,Mapper185_init,\r
+    Mapper184_init,\r
+    0, //Mapper185_init,\r
     0,0,0,\r
-    Mapper189_init,\r
-    0,\r
-//    Mapper191_init,\r
+    0, //Mapper189_init,\r
     0,\r
+    0, //Mapper191_init,\r
     0,\r
     Mapper193_init,\r
     0,0,0,0,0,0,\r
@@ -825,12 +849,14 @@ void (*MapInitTab[256])(void)=
     0,0,\r
     Mapper207_init,\r
     0,0,0,\r
-    Mapper211_init,Mapper212_init,Mapper213_init,Mapper214_init,\r
+    0, //Mapper211_init,\r
+    Mapper212_init,Mapper213_init,Mapper214_init,\r
     0,0,0,0,0,0,0,0,0,0,\r
     Mapper225_init,Mapper226_init,Mapper227_init,Mapper228_init,\r
     Mapper229_init,Mapper230_init,Mapper231_init,Mapper232_init,\r
     0,\r
-    Mapper234_init,Mapper235_init,\r
+    Mapper234_init,\r
+    0, //Mapper235_init,\r
     0,0,0,0,\r
     Mapper240_init,Mapper241_init,Mapper242_init,0,\r
     Mapper244_init,\r
@@ -840,6 +866,8 @@ void (*MapInitTab[256])(void)=
     Mapper255_init\r
 };\r
 \r
+\r
+\r
 static DECLFW(BWRAM)\r
 {\r
                 WRAM[A-0x6000]=V;\r
@@ -897,6 +925,10 @@ static void iNESPower(void)
         setprg8r(1,0x6000,0);\r
 \r
         SetReadHandler(0x6000,0x7FFF,AWRAM);\r
+#ifdef ASM_6502\r
+        // asm code needs pages to be set again..\r
+        Page[12]=Page[13]=Page[14]=Page[15]=WRAM-0x6000;\r
+#endif\r
         SetWriteHandler(0x6000,0x7FFF,BWRAM);\r
         FCEU_CheatAddRAM(8,0x6000,WRAM);\r
 \r
@@ -958,68 +990,101 @@ typedef struct {
 } BMAPPING;\r
 \r
 static BMAPPING bmap[] = {\r
+    {0,   NROM_Init},\r
     {1,   Mapper1_Init},\r
     {2,   UNROM_Init},\r
     {3,   CNROM_Init},\r
     {4,   Mapper4_Init},\r
     {5,   Mapper5_Init},\r
+    {7,   ANROM_Init},\r
+    {11,  Mapper11_Init},\r
     {12,  Mapper12_Init},\r
     {13,  CPROM_Init},\r
     {19,  Mapper19_Init},\r
+    {37,  Mapper37_Init},\r
     {44,  Mapper44_Init},\r
     {45,  Mapper45_Init},\r
     {47,  Mapper47_Init},\r
     {49,  Mapper49_Init},\r
     {52,  Mapper52_Init},\r
+    {57,  Mapper57_Init},\r
+    {58,  Mapper58_Init},\r
+    {66,  MHROM_Init},\r
+    {70,  Mapper70_Init},\r
     {74,  Mapper74_Init},\r
+    {78,  Mapper78_Init},\r
+    {87,  Mapper87_Init},\r
+    {88,  Mapper88_Init},\r
     {90,  Mapper90_Init},\r
+    {93,  SUNSOFT_UNROM_Init},\r
+    {94,  Mapper94_Init},\r
     {95,  Mapper95_Init},\r
     {105, Mapper105_Init},\r
+    {107, Mapper107_Init},\r
     {112, Mapper112_Init},\r
     {114, Mapper114_Init},\r
-        {115, Mapper115_Init},\r
-        {116, Mapper116_Init},\r
-       {118, Mapper118_Init},\r
+    {115, Mapper115_Init},\r
+    {116, Mapper116_Init},\r
+    {117, Mapper117_Init},\r
+    {118, Mapper118_Init},\r
     {119, Mapper119_Init},\r
     {133, SA72008_Init},\r
     {137, S8259D_Init},\r
     {138, S8259B_Init},\r
     {139, S8259C_Init},\r
+    {140, Mapper140_Init},\r
     {141, S8259A_Init},\r
     {143, TCA01_Init},\r
+    {144, Mapper144_Init},\r
     {145, SA72007_Init},\r
     {146, SA0161M_Init},\r
     {147, TCU01_Init},\r
     {148, SA0037_Init},\r
     {149, SA0036_Init},\r
     {150, S74LS374N_Init},\r
-       {155, Mapper155_Init},\r
+    {152, Mapper152_Init},\r
+    {154, Mapper154_Init},\r
+    {155, Mapper155_Init},\r
     {160, Mapper90_Init},\r
     {163, Mapper163_Init},\r
-       {164, Mapper164_Init},\r
+    {164, Mapper164_Init},\r
     {165, Mapper165_Init},\r
+    {181, Mapper181_Init},\r
     {182, Mapper182_Init},\r
     {183, Mapper183_Init},\r
+    {185, Mapper185_Init},\r
     {186, Mapper186_Init},\r
-        {187, Mapper187_Init},\r
-       {188, Mapper188_Init},\r
+    {187, Mapper187_Init},\r
+    {188, Mapper188_Init},\r
+    {189, Mapper189_Init},\r
     {191, Mapper191_Init},\r
+    {192, Mapper192_Init},\r
+    {194, Mapper194_Init},\r
+    {198, Mapper198_Init},\r
+    {199, Mapper199_Init},\r
     {205, Mapper205_Init},\r
     {206, DEIROM_Init},\r
-        {208, Mapper208_Init},\r
+    {208, Mapper208_Init},\r
     {209, Mapper209_Init},\r
-       {210, Mapper210_Init},\r
+    {210, Mapper210_Init},\r
+    {211, Mapper211_Init},\r
     {215, Mapper215_Init},\r
     {216, Mapper216_Init},\r
     {217, Mapper217_Init},\r
+    {218, UNLSonic_Init},\r
+    {219, UNLSL1632_Init},\r
+//    {220, Mapper220_Init},\r
+    {222, Mapper222_Init},\r
+    {235, Mapper235_Init},\r
     {243, S74LS374NA_Init},\r
-        {245, Mapper245_Init},\r
-        {249, Mapper249_Init},\r
-        {250, Mapper250_Init},\r
+    {245, Mapper245_Init},\r
+    {249, Mapper249_Init},\r
+    {250, Mapper250_Init},\r
     {254, Mapper254_Init},\r
     {  0,        0}\r
 };\r
 \r
+\r
 static int NewiNES_Init(int num)\r
 {\r
  BMAPPING *tmp=bmap;\r
@@ -1054,8 +1119,3 @@ static int NewiNES_Init(int num)
  return(0);\r
 }\r
 \r
-iNES_HEADER *iNESGetHead(void)\r
-{\r
-       return &head;\r
-}\r
-\r