add a hack for Decap Attack
[picodrive.git] / pico / sound / ym2612.h
index f5e98a0..a2921b2 100644 (file)
@@ -43,10 +43,16 @@ typedef struct
        INT16   volume;         /* #0x1a envelope counter | need_save */\r
        UINT32  sl;             /* #0x1c sustain level:sl_table[SL] */\r
 \r
-       UINT32  eg_pack_ar;     /* #0x20 (attack state) */\r
-       UINT32  eg_pack_d1r;    /* #0x24 (decay state) */\r
-       UINT32  eg_pack_d2r;    /* #0x28 (sustain state) */\r
-       UINT32  eg_pack_rr;     /* #0x2c (release state) */\r
+       /* asm relies on this order: */\r
+       union {\r
+               struct {\r
+                       UINT32 eg_pack_rr;  /* #0x20 1 (release state) */\r
+                       UINT32 eg_pack_d2r; /* #0x24 2 (sustain state) */\r
+                       UINT32 eg_pack_d1r; /* #0x28 3 (decay state) */\r
+                       UINT32 eg_pack_ar;  /* #0x2c 4 (attack state) */\r
+               };\r
+               UINT32 eg_pack[4];\r
+       };\r
 } FM_SLOT;\r
 \r
 \r
@@ -170,20 +176,20 @@ int  YM2612PicoStateLoad2(int *tat, int *tbt);
 #else\r
 /* GP2X specific */\r
 #include "../../platform/gp2x/940ctl.h"\r
-extern int PicoOpt;\r
+extern int PicoIn.opt;\r
 #define YM2612Init(baseclock,rate) { \\r
-       if (PicoOpt&0x200) YM2612Init_940(baseclock, rate); \\r
+       if (PicoIn.opt&0x200) YM2612Init_940(baseclock, rate); \\r
        else               YM2612Init_(baseclock, rate); \\r
 }\r
 #define YM2612ResetChip() { \\r
-       if (PicoOpt&0x200) YM2612ResetChip_940(); \\r
+       if (PicoIn.opt&0x200) YM2612ResetChip_940(); \\r
        else               YM2612ResetChip_(); \\r
 }\r
 #define YM2612UpdateOne(buffer,length,stereo,is_buf_empty) \\r
-       (PicoOpt&0x200) ? YM2612UpdateOne_940(buffer, length, stereo, is_buf_empty) : \\r
+       (PicoIn.opt&0x200) ? YM2612UpdateOne_940(buffer, length, stereo, is_buf_empty) : \\r
                                YM2612UpdateOne_(buffer, length, stereo, is_buf_empty);\r
 #define YM2612PicoStateLoad() { \\r
-       if (PicoOpt&0x200) YM2612PicoStateLoad_940(); \\r
+       if (PicoIn.opt&0x200) YM2612PicoStateLoad_940(); \\r
        else               YM2612PicoStateLoad_(); \\r
 }\r
 #endif /* __GP2X__ */\r