deal with some strict aliasing issues
[picodrive.git] / pico / pico_int.h
index 6b062b6..6e4917b 100644 (file)
@@ -441,6 +441,7 @@ typedef struct
                unsigned char pcm_ram[0x10000];\r
                unsigned char pcm_ram_b[0x10][0x1000];\r
        };\r
+       // FIXME: should be short\r
        unsigned char s68k_regs[0x200];                 // 110000: GA, not CPU regs\r
        unsigned char bram[0x2000];                     // 110200: 8K\r
        struct mcd_misc m;                              // 112200: misc\r
@@ -543,8 +544,14 @@ struct Pico32xMem
 #ifdef DRC_SH2\r
   unsigned short drcblk_da[2][1 << (12 - SH2_DRCBLK_DA_SHIFT)];\r
 #endif\r
-  unsigned char  sh2_rom_m[0x800];\r
-  unsigned char  sh2_rom_s[0x400];\r
+  union {\r
+    unsigned char  b[0x800];\r
+    unsigned short w[0x800/2];\r
+  } sh2_rom_m;\r
+  union {\r
+    unsigned char  b[0x400];\r
+    unsigned short w[0x400/2];\r
+  } sh2_rom_s;\r
   unsigned short pal[0x100];\r
   unsigned short pal_native[0x100];     // converted to native (for renderer)\r
   signed short   pwm[2*PWM_BUFF_LEN];   // PWM buffer for current frame\r