png screenshot support
[drnoksnes] / getset.h
index 3fd174d..4d50803 100644 (file)
--- a/getset.h
+++ b/getset.h
@@ -57,30 +57,26 @@ INLINE uint8 S9xGetByte (uint32 Address)
        char str[64];
        sprintf(str,"rd @ %04X",Address);
        S9xMessage(0,0,str);
-       gp32_pause();
 #endif
 #ifdef __memcheck__
        mem_check+=(Address>>16)+Address;
-#endif 
-#if defined(VAR_CYCLES) || defined(CPU_SHUTDOWN)
-    int block;
-    uint8 *GetAddress = Memory.Map [block = (Address >> MEMMAP_SHIFT) & MEMMAP_MASK];
-#else
-    uint8 *GetAddress = Memory.Map [(Address >> MEMMAP_SHIFT) & MEMMAP_MASK];
-#endif    
-    if (GetAddress >= (uint8 *) CMemory::MAP_LAST)
-    {
+#endif
+       const int block = (Address >> MEMMAP_SHIFT) & MEMMAP_MASK;
+    uint8 *GetAddress = Memory.Map[block];
+
+       if (GetAddress >= (uint8 *) CMemory::MAP_LAST)
+       {
 #ifdef VAR_CYCLES
-       CPU.Cycles += Memory.MemorySpeed [block];
+               CPU.Cycles += Memory.MemorySpeed [block];
 #endif
 #ifdef CPU_SHUTDOWN
-       if (Memory.BlockIsRAM [block])
-           CPU.WaitAddress = CPU.PCAtOpcodeStart;
+               if (Memory.BlockIsRAM [block])
+                       CPU.WaitAddress = CPU.PCAtOpcodeStart;
 #endif
-       return (*(GetAddress + (Address & 0xffff)));
-    }
+               return (*(GetAddress + (Address & 0xffff)));
+       }
 
-    switch ((int) GetAddress)
+    switch ((CMemory::Types)(intptr_t) GetAddress)
     {
     case CMemory::MAP_PPU:
 #ifdef VAR_CYCLES
@@ -122,10 +118,10 @@ INLINE uint8 S9xGetByte (uint32 Address)
        CPU.Cycles += SLOW_ONE_CYCLE;
 #endif
        return (*(Memory.BWRAM + ((Address & 0x7fff) - 0x6000)));
-//#ifndef __GP32__
+
     case CMemory::MAP_C4:
        return (S9xGetC4 (Address & 0xffff));
-//#endif    
+
     default:
     case CMemory::MAP_NONE:
 #ifdef VAR_CYCLES
@@ -144,21 +140,18 @@ INLINE uint16 S9xGetWord (uint32 Address)
        char str[64];
        sprintf(str,"rd @ %04X",Address);
        S9xMessage(0,0,str);
-       gp32_pause();
 #endif
 #ifdef __memcheck__
        mem_check+=(Address>>16)+Address;
 #endif 
-    if ((Address & 0x1fff) == 0x1fff)
-    {
-       return (S9xGetByte (Address) | (S9xGetByte (Address + 1) << 8));
-    }
-#if defined(VAR_CYCLES) || defined(CPU_SHUTDOWN)
-    int block;
-    uint8 *GetAddress = Memory.Map [block = (Address >> MEMMAP_SHIFT) & MEMMAP_MASK];
-#else
-    uint8 *GetAddress = Memory.Map [(Address >> MEMMAP_SHIFT) & MEMMAP_MASK];
-#endif    
+       if ((Address & 0x1fff) == 0x1fff)
+       {
+               return (S9xGetByte (Address) | (S9xGetByte (Address + 1) << 8));
+       }
+
+       const int block = (Address >> MEMMAP_SHIFT) & MEMMAP_MASK;
+       uint8 *GetAddress = Memory.Map[block];
+
     if (GetAddress >= (uint8 *) CMemory::MAP_LAST)
     {
 #ifdef VAR_CYCLES
@@ -176,7 +169,7 @@ INLINE uint16 S9xGetWord (uint32 Address)
 #endif 
     }
 
-    switch ((int) GetAddress)
+    switch ((CMemory::Types)(intptr_t) GetAddress)
     {
     case CMemory::MAP_PPU:
 #ifdef VAR_CYCLES
@@ -228,11 +221,10 @@ INLINE uint16 S9xGetWord (uint32 Address)
        printf ("R(W) %06x\n", Address);
 #endif
 
-//#ifndef __GP32__
     case CMemory::MAP_C4:
        return (S9xGetC4 (Address & 0xffff) |   
                (S9xGetC4 ((Address + 1) & 0xffff) << 8));
-//#endif    
+
     default:
     case CMemory::MAP_NONE:
 #ifdef VAR_CYCLES
@@ -251,7 +243,6 @@ INLINE void S9xSetByte (uint8 Byte, uint32 Address)
        char str[64];
        sprintf(str,"wr @ %04X %02X",Address,Byte);
        S9xMessage(0,0,str);
-       gp32_pause();
 #endif
 #ifdef __memcheck__
        mem_check+=Byte;
@@ -260,12 +251,8 @@ INLINE void S9xSetByte (uint8 Byte, uint32 Address)
 #if defined(CPU_SHUTDOWN)
     CPU.WaitAddress = NULL;
 #endif
-#if defined(VAR_CYCLES)
-    int block;
-    uint8 *SetAddress = Memory.WriteMap [block = ((Address >> MEMMAP_SHIFT) & MEMMAP_MASK)];
-#else
-    uint8 *SetAddress = Memory.WriteMap [(Address >> MEMMAP_SHIFT) & MEMMAP_MASK];
-#endif
+       const int block = (Address >> MEMMAP_SHIFT) & MEMMAP_MASK;
+       uint8 *SetAddress = Memory.WriteMap[block];
 
     if (SetAddress >= (uint8 *) CMemory::MAP_LAST)
     {
@@ -289,7 +276,7 @@ INLINE void S9xSetByte (uint8 Byte, uint32 Address)
        return;
     }
 
-    switch ((int) SetAddress)
+    switch ((CMemory::Types)(intptr_t) SetAddress)
     {
     case CMemory::MAP_PPU:
 #ifdef VAR_CYCLES
@@ -356,11 +343,11 @@ INLINE void S9xSetByte (uint8 Byte, uint32 Address)
        *(Memory.SRAM + (Address & 0xffff)) = Byte;
        SA1.Executing = !SA1.Waiting;
        break;
-//#ifndef __GP32__
+
     case CMemory::MAP_C4:
        S9xSetC4 (Byte, Address & 0xffff);
        return;
-//#endif       
+
     default:
     case CMemory::MAP_NONE:
 #ifdef VAR_CYCLES    
@@ -379,7 +366,6 @@ INLINE void S9xSetWord (uint16 Word, uint32 Address)
        char str[64];
        sprintf(str,"wr @ %04X %04X",Address,Word);
        S9xMessage(0,0,str);
-       gp32_pause();
 #endif
 #ifdef __memcheck__
        mem_check+=Word;
@@ -387,12 +373,8 @@ INLINE void S9xSetWord (uint16 Word, uint32 Address)
 #if defined(CPU_SHUTDOWN)
     CPU.WaitAddress = NULL;
 #endif
-#if defined (VAR_CYCLES)
-    int block;
-    uint8 *SetAddress = Memory.WriteMap [block = ((Address >> MEMMAP_SHIFT) & MEMMAP_MASK)];
-#else
-    uint8 *SetAddress = Memory.WriteMap [(Address >> MEMMAP_SHIFT) & MEMMAP_MASK];
-#endif
+       const int block = (Address >> MEMMAP_SHIFT) & MEMMAP_MASK;
+       uint8 *SetAddress = Memory.WriteMap[block];
 
     if (SetAddress >= (uint8 *) CMemory::MAP_LAST)
     {
@@ -400,7 +382,7 @@ INLINE void S9xSetWord (uint16 Word, uint32 Address)
        CPU.Cycles += Memory.MemorySpeed [block] << 1;
 #endif
 #if defined(CPU_SHUTDOWN) && defined(USE_SA1)
-       uint8 *SetAddressSA1 += Address & 0xffff;
+       uint8 *SetAddressSA1 = SetAddress + (Address & 0xffff);
        if (SetAddressSA1 == SA1.WaitByteAddress1 ||
            SetAddressSA1 == SA1.WaitByteAddress2)
        {
@@ -417,7 +399,7 @@ INLINE void S9xSetWord (uint16 Word, uint32 Address)
        return;
     }
 
-    switch ((int) SetAddress)
+    switch ((CMemory::Types)(intptr_t) SetAddress)
     {
     case CMemory::MAP_PPU:
 #ifdef VAR_CYCLES
@@ -462,12 +444,16 @@ INLINE void S9xSetWord (uint16 Word, uint32 Address)
 #endif
        if (CPU.Memory_SRAMMask)
        {
-           *(Memory.SRAM + 
-             (((Address & 0x7fff) - 0x6000 +
-               ((Address & 0xf0000) >> MEMMAP_SHIFT) & CPU.Memory_SRAMMask))) = (uint8) Word;
-           *(Memory.SRAM + 
-             ((((Address + 1) & 0x7fff) - 0x6000 +
-               (((Address + 1) & 0xf0000) >> MEMMAP_SHIFT) & CPU.Memory_SRAMMask))) = (uint8) (Word >> 8);
+               *(Memory.SRAM +
+                       ((Address & 0x7fff) - 0x6000) +
+                       (((Address & 0xf0000) >> MEMMAP_SHIFT) & CPU.Memory_SRAMMask)
+               ) =     (uint8) Word;
+
+               *(Memory.SRAM +
+                       (((Address + 1) & 0x7fff) - 0x6000) +
+                       ((((Address + 1) & 0xf0000) >> MEMMAP_SHIFT) & CPU.Memory_SRAMMask)
+               ) = (uint8) (Word >> 8);
+
            CPU.SRAMModified = TRUE;
        }
        return;
@@ -494,12 +480,12 @@ INLINE void S9xSetWord (uint16 Word, uint32 Address)
        *(Memory.SRAM + ((Address + 1) & 0xffff)) = (uint8) (Word >> 8);
        SA1.Executing = !SA1.Waiting;
        break;
-//#ifndef __GP32__
+
     case CMemory::MAP_C4:
        S9xSetC4 (Word & 0xff, Address & 0xffff);
        S9xSetC4 ((uint8) (Word >> 8), (Address + 1) & 0xffff);
        return;
-//#endif       
+
     default:
     case CMemory::MAP_NONE:
 #ifdef VAR_CYCLES    
@@ -518,7 +504,7 @@ INLINE uint8 *GetBasePointer (uint32 Address)
     if (GetAddress >= (uint8 *) CMemory::MAP_LAST)
        return (GetAddress);
 
-    switch ((int) GetAddress)
+    switch ((CMemory::Types)(intptr_t) GetAddress)
     {
     case CMemory::MAP_PPU:
        return (Memory.FillRAM - 0x2000);
@@ -533,15 +519,12 @@ INLINE uint8 *GetBasePointer (uint32 Address)
        return (Memory.BWRAM - 0x6000);
     case CMemory::MAP_HIROM_SRAM:
        return (Memory.SRAM - 0x6000);
-//#ifndef __GP32__     
     case CMemory::MAP_C4:
        return (Memory.C4RAM - 0x6000);
-//#endif       
     case CMemory::MAP_DEBUG:
 #ifdef DEBUGGER
        printf ("GBP %06x\n", Address);
 #endif
-
     default:
     case CMemory::MAP_NONE:
 #ifdef DEBUGGER
@@ -557,7 +540,7 @@ INLINE uint8 *S9xGetMemPointer (uint32 Address)
     if (GetAddress >= (uint8 *) CMemory::MAP_LAST)
        return (GetAddress + (Address & 0xffff));
 
-    switch ((int) GetAddress)
+    switch ((CMemory::Types)(intptr_t) GetAddress)
     {
     case CMemory::MAP_PPU:
        return (Memory.FillRAM - 0x2000 + (Address & 0xffff));
@@ -572,10 +555,10 @@ INLINE uint8 *S9xGetMemPointer (uint32 Address)
        return (Memory.BWRAM - 0x6000 + (Address & 0xffff));
     case CMemory::MAP_HIROM_SRAM:
        return (Memory.SRAM - 0x6000 + (Address & 0xffff));
-//#ifndef __GP32__     
+
     case CMemory::MAP_C4:
        return (Memory.C4RAM - 0x6000 + (Address & 0xffff));
-//#endif
+
     case CMemory::MAP_DEBUG:
 #ifdef DEBUGGER
        printf ("GMP %06x\n", Address);
@@ -608,7 +591,7 @@ INLINE void S9xSetPCBase (uint32 Address)
        return;
     }
 
-    switch ((int) GetAddress)
+    switch ((CMemory::Types)(intptr_t) GetAddress)
     {
     case CMemory::MAP_PPU:
 #ifdef VAR_CYCLES
@@ -663,7 +646,7 @@ INLINE void S9xSetPCBase (uint32 Address)
        CPU.PCBase = Memory.SRAM - 0x6000;
        CPU.PC = CPU.PCBase + (Address & 0xffff);
        return;
-//#ifndef __GP32__
+
     case CMemory::MAP_C4:
 #ifdef VAR_CYCLES
        CPU.MemSpeed = SLOW_ONE_CYCLE;
@@ -672,7 +655,7 @@ INLINE void S9xSetPCBase (uint32 Address)
        CPU.PCBase = Memory.C4RAM - 0x6000;
        CPU.PC = CPU.PCBase + (Address & 0xffff);
        return;
-//#endif
+
     case CMemory::MAP_DEBUG:
 #ifdef DEBUGGER
        printf ("SBP %06x\n", Address);