new z80 scheduling method, timers are still wip
[picodrive.git] / Pico / sound / ym2612.c
index 144c334..b9749f2 100644 (file)
 #ifndef EXTERNAL_YM2612\r
 #include <stdlib.h>\r
 // let it be 1 global to simplify things\r
-static YM2612 ym2612;\r
+YM2612 ym2612;\r
 \r
 #else\r
 extern YM2612 *ym2612_940;\r
@@ -1584,11 +1584,8 @@ static int OPNWriteReg(int r, int v)
 /*      YM2612 local section                                                   */\r
 /*******************************************************************************/\r
 \r
-int   *ym2612_dacen;\r
-INT32 *ym2612_dacout;\r
 FM_ST *ym2612_st;\r
 \r
-\r
 /* Generate samples for YM2612 */\r
 int YM2612UpdateOne_(int *buffer, int length, int stereo, int is_buf_empty)\r
 {\r
@@ -1654,8 +1651,6 @@ int YM2612UpdateOne_(int *buffer, int length, int stereo, int is_buf_empty)
 void YM2612Init_(int clock, int rate)\r
 {\r
        // notaz\r
-       ym2612_dacen = &ym2612.dacen;\r
-       ym2612_dacout = &ym2612.dacout;\r
        ym2612_st = &ym2612.OPN.ST;\r
 \r
        memset(&ym2612, 0, sizeof(ym2612));\r
@@ -1728,9 +1723,6 @@ int YM2612Write_(unsigned int a, unsigned int v)
                }\r
 \r
                addr = ym2612.OPN.ST.address;\r
-#ifndef EXTERNAL_YM2612\r
-               ym2612.REGS[addr] = v;\r
-#endif\r
 \r
                switch( addr & 0xf0 )\r
                {\r
@@ -1747,6 +1739,7 @@ int YM2612Write_(unsigned int a, unsigned int v)
                                        ym2612.OPN.lfo_inc = 0;\r
                                }\r
                                break;\r
+#if 0 // handled elsewhere\r
                        case 0x24: { // timer A High 8\r
                                        int TAnew = (ym2612.OPN.ST.TA & 0x03)|(((int)v)<<2);\r
                                        if(ym2612.OPN.ST.TA != TAnew) {\r
@@ -1781,6 +1774,7 @@ int YM2612Write_(unsigned int a, unsigned int v)
                                set_timers( v );\r
                                ret=0;\r
                                break;\r
+#endif\r
                        case 0x28:      /* key on / off */\r
                                {\r
                                        UINT8 c;\r
@@ -1794,6 +1788,7 @@ int YM2612Write_(unsigned int a, unsigned int v)
                                        if(v&0x80) FM_KEYON(c,SLOT4); else FM_KEYOFF(c,SLOT4);\r
                                        break;\r
                                }\r
+#if 0\r
                        case 0x2a:      /* DAC data (YM2612) */\r
                                ym2612.dacout = ((int)v - 0x80) << 6;   /* level unknown (notaz: 8 seems to be too much) */\r
                                ret=0;\r
@@ -1803,6 +1798,7 @@ int YM2612Write_(unsigned int a, unsigned int v)
                                ym2612.dacen = v & 0x80;\r
                                ret=0;\r
                                break;\r
+#endif\r
                        default:\r
                                break;\r
                        }\r
@@ -1826,9 +1822,6 @@ int YM2612Write_(unsigned int a, unsigned int v)
                }\r
 \r
                addr = ym2612.OPN.ST.address | 0x100;\r
-#ifndef EXTERNAL_YM2612\r
-               ym2612.REGS[addr] = v;\r
-#endif\r
 \r
                ret = OPNWriteReg(addr, v);\r
                break;\r