refactoring z80 if code for sms preparation
[picodrive.git] / cpu / cz80 / cz80.c
index 18fd620..091e2a5 100644 (file)
@@ -15,7 +15,7 @@
 \r
 #if PICODRIVE_HACKS\r
 #undef EMU_M68K\r
-#include <Pico/PicoInt.h>\r
+#include <pico/pico_int.h>\r
 #endif\r
 \r
 #ifndef ALIGN_DATA\r
@@ -219,7 +219,10 @@ void Cz80_Reset(cz80_struc *CPU)
 #if PICODRIVE_HACKS\r
 static inline unsigned char picodrive_read(unsigned short a)\r
 {\r
-       return (a < 0x4000) ? Pico.zram[a&0x1fff] : z80_read(a);\r
+       unsigned long v = z80_read_map[a >> Z80_MEM_SHIFT];\r
+       if (v & 0x80000000)\r
+               return ((z80_read_f *)(v << 1))(a);\r
+       return *(unsigned char *)((v << 1) + a);\r
 }\r
 #endif\r
 \r
@@ -242,6 +245,7 @@ INT32 Cz80_Exec(cz80_struc *CPU, INT32 cycles)
        UINT32 res;\r
        UINT32 val;\r
        int afterEI = 0;\r
+       union16 *data;\r
 \r
        PC = CPU->PC;\r
 #if CZ80_ENCRYPTED_ROM\r
@@ -255,7 +259,8 @@ INT32 Cz80_Exec(cz80_struc *CPU, INT32 cycles)
 Cz80_Exec:\r
                if (CPU->ICount > 0)\r
                {\r
-                       union16 *data = pzHL;\r
+Cz80_Exec_nocheck:\r
+                       data = pzHL;\r
                        Opcode = READ_OP();\r
 #if CZ80_EMULATE_R_EXACTLY\r
                        zR++;\r