{\r
int clock; /* master clock (Hz) */\r
int rate; /* sampling rate (Hz) */\r
- double freqbase; /* frequency base */\r
- UINT8 address; /* address register */\r
- UINT8 status; /* status flag */\r
+ double freqbase; /* 08 frequency base */\r
+ UINT8 address; /* 10 address register */\r
+ UINT8 status; /* 11 status flag */\r
UINT8 mode; /* mode CSM / 3SLOT */\r
UINT8 fn_h; /* freq latch */\r
int TA; /* timer a */\r
int TAC; /* timer a maxval */\r
int TAT; /* timer a ticker */\r
UINT8 TB; /* timer b */\r
+ UINT8 pad[3];\r
int TBC; /* timer b maxval */\r
int TBT; /* timer b ticker */\r
/* local time tables */\r
INT32 dacout;\r
\r
FM_OPN OPN; /* OPN state */\r
+\r
+ UINT32 slot_mask; /* active slot mask (performance hack) */\r
} YM2612;\r
#endif\r
\r
+extern int *ym2612_dacen;\r
+extern INT32 *ym2612_dacout;\r
+extern FM_ST *ym2612_st;\r
+\r
+\r
+#define YM2612Read() ym2612_st->status\r
+\r
+#define YM2612PicoTick(n) \\r
+{ \\r
+ /* timer A */ \\r
+ if(ym2612_st->mode & 0x01 && (ym2612_st->TAT+=64*n) >= ym2612_st->TAC) { \\r
+ ym2612_st->TAT -= ym2612_st->TAC; \\r
+ if(ym2612_st->mode & 0x04) ym2612_st->status |= 1; \\r
+ } \\r
+ \\r
+ /* timer B */ \\r
+ if(ym2612_st->mode & 0x02 && (ym2612_st->TBT+=64*n) >= ym2612_st->TBC) { \\r
+ ym2612_st->TBT -= ym2612_st->TBC; \\r
+ if(ym2612_st->mode & 0x08) ym2612_st->status |= 2; \\r
+ } \\r
+}\r
\r
\r
void YM2612Init_(int baseclock, int rate);\r
#define YM2612ResetChip YM2612ResetChip_\r
#define YM2612UpdateOne YM2612UpdateOne_\r
#define YM2612Write YM2612Write_\r
-#define YM2612Read YM2612Read_\r
-#define YM2612PicoTick YM2612PicoTick_\r
#define YM2612PicoStateLoad YM2612PicoStateLoad_\r
#else\r
/* GP2X specific */\r
YM2612UpdateOne_(buffer, length, stereo, is_buf_empty);\r
#define YM2612Write(a,v) \\r
(PicoOpt&0x200) ? YM2612Write_940(a, v) : YM2612Write_(a, v)\r
-#define YM2612Read() \\r
- (PicoOpt&0x200) ? YM2612Read_940() : YM2612Read_()\r
-#define YM2612PicoTick(n) \\r
- (PicoOpt&0x200) ? YM2612PicoTick_940(n) : YM2612PicoTick_(n)\r
#define YM2612PicoStateLoad() { \\r
if (PicoOpt&0x200) YM2612PicoStateLoad_940(); \\r
else YM2612PicoStateLoad_(); \\r