diff options
Diffstat (limited to 'plugins/ao/eng_ssf/scsp.h')
-rw-r--r-- | plugins/ao/eng_ssf/scsp.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/plugins/ao/eng_ssf/scsp.h b/plugins/ao/eng_ssf/scsp.h new file mode 100644 index 00000000..345c78b8 --- /dev/null +++ b/plugins/ao/eng_ssf/scsp.h @@ -0,0 +1,43 @@ +/* + + SCSP (YMF292-F) header +*/ + +#ifndef _SCSP_H_ +#define _SCSP_H_ + +#define MAX_SCSP (2) + +#define COMBINE_DATA(varptr) (*(varptr) = (*(varptr) & mem_mask) | (data & ~mem_mask)) + +// convert AO types +typedef int8 data8_t; +typedef int16 data16_t; +typedef int32 data32_t; +typedef int offs_t; + +struct SCSPinterface +{ + int num; + void *region[MAX_SCSP]; + int mixing_level[MAX_SCSP]; /* volume */
+ void (*irq_callback[MAX_SCSP])(int state); /* irq callback */ +}; + +void *scsp_start(const void *config); +void SCSP_Update(void *param, INT16 **inputs, INT16 **buf, int samples); + +#define READ16_HANDLER(name) data16_t name(offs_t offset, data16_t mem_mask) +#define WRITE16_HANDLER(name) void name(offs_t offset, data16_t data, data16_t mem_mask) + +// SCSP register access +READ16_HANDLER( SCSP_0_r ); +WRITE16_HANDLER( SCSP_0_w ); +READ16_HANDLER( SCSP_1_r ); +WRITE16_HANDLER( SCSP_1_w ); + +// MIDI I/O access (used for comms on Model 2/3) +WRITE16_HANDLER( SCSP_MidiIn ); +READ16_HANDLER( SCSP_MidiOutR ); + +#endif |