fix ym2612 asm, rework EG
[picodrive.git] / pico / sound / ym2612.h
index f5e98a0..73a36a8 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