moe-bius/tsfm_speccy_player/opmfile.inc

176 lines
11 KiB
PHP

; OPM v0 stream data, stream-independent commands
OPM_STREAM_END_FRAME equ 0xFF ; end of frame, next channel
OPM_STREAM_END equ 0xFE ; end of stream, stop here or loop to OPM_STREAM_LOOP stream point
OPM_STREAM_NOP equ 0xFD ; nop
OPM_STREAM_NEW_ORDER equ 0xFC ; nop, marks new order
OPM_STREAM_SET_FRAME_RATE equ 0xFB ; word rate (as in opm_header_t::frame_rate)
OPM_STREAM_LOOP equ 0xFA ; set loop point here
; delay commands
OPM_STREAM_DELAY_INT32 equ 0xF9 ; dword delay
OPM_STREAM_DELAY_INT16 equ 0xF8 ; word delay
OPM_STREAM_DELAY_INT12 equ 0xD0 ; D0..DF - 0..4095 frames delay (hibyte in low 4 bits of command)
OPM_STREAM_DELAY_SHORT equ 0xC0 ; C0..CF - 1..16 frames delay
; back reference
OPM_STREAM_BACKREF equ 0xE0 ; E0..EF - word backrefpos (12 bit), byte frames
; OPN control stream commands
OPM_CTRL_EXTCH3 equ 0x00 ; 00..7F - ext. CH3 op1-3 frequency
OPM_CTRL_TIMER_CSM equ 0x80 ; 80..9F - set timer/CSM/LFO frequency
OPM_CTRL_RHYTHM equ 0xA0 ; A0..BF - rhythm control
OPM_CTRL_CMD80_REG25 equ (1 << 0) ;
OPM_CTRL_CMD80_REG25_BIT equ 0 ; shift value for OPM_CTRL_CMD80_REG25
OPM_CTRL_CMD80_REG24 equ (1 << 1) ;
OPM_CTRL_CMD80_REG24_BIT equ 1 ; shift value for OPM_CTRL_CMD80_REG24
OPM_CTRL_CMD80_REG27 equ (1 << 2) ;
OPM_CTRL_CMD80_REG27_BIT equ 2 ; shift value for OPM_CTRL_CMD80_REG27
OPM_CTRL_CMD80_REG22 equ (1 << 3) ;
OPM_CTRL_CMD80_REG22_BIT equ 3 ; shift value for OPM_CTRL_CMD80_REG22
OPM_CTRL_CMD80_EOF equ (1 << 4) ;
OPM_CTRL_CMD80_EOF_BIT equ 4 ; shift value for OPM_CTRL_CMD80_EOF
OPM_CTRL_EXTCH3_OP1_HIGH equ (1 << 0) ;
OPM_CTRL_EXTCH3_OP1_HIGH_BIT equ 0 ; shift value for OPM_CTRL_EXTCH3_OP1_HIGH
OPM_CTRL_EXTCH3_OP1_LOW equ (1 << 1) ;
OPM_CTRL_EXTCH3_OP1_LOW_BIT equ 1 ; shift value for OPM_CTRL_EXTCH3_OP1_LOW
OPM_CTRL_EXTCH3_OP2_HIGH equ (1 << 2) ;
OPM_CTRL_EXTCH3_OP2_HIGH_BIT equ 2 ; shift value for OPM_CTRL_EXTCH3_OP2_HIGH
OPM_CTRL_EXTCH3_OP2_LOW equ (1 << 3) ;
OPM_CTRL_EXTCH3_OP2_LOW_BIT equ 3 ; shift value for OPM_CTRL_EXTCH3_OP2_LOW
OPM_CTRL_EXTCH3_OP3_HIGH equ (1 << 4) ;
OPM_CTRL_EXTCH3_OP3_HIGH_BIT equ 4 ; shift value for OPM_CTRL_EXTCH3_OP3_HIGH
OPM_CTRL_EXTCH3_OP3_LOW equ (1 << 5) ;
OPM_CTRL_EXTCH3_OP3_LOW_BIT equ 5 ; shift value for OPM_CTRL_EXTCH3_OP3_LOW
OPM_CTRL_EXTCH3_EOF equ (1 << 6) ;
OPM_CTRL_EXTCH3_EOF_BIT equ 6 ; shift value for OPM_CTRL_EXTCH3_EOF
OPM_CTRL_CMDA0_REG_MASK equ (0x0F << 0) ;
OPM_CTRL_CMDA0_REG_MASK_BIT equ 0 ; shift value for OPM_CTRL_CMDA0_REG_MASK
OPM_CTRL_CMDA0_EOF equ (1 << 4) ;
OPM_CTRL_CMDA0_EOF_BIT equ 4 ; shift value for OPM_CTRL_CMDA0_EOF
; OPN FM stream commands
OPM_FM_ADSR equ 0x00 ; 00..3F - set ADSR
OPM_FM_MUL_TL_EG equ 0x40 ; 40..7F - set MULT/TL/SSG-EG
OPM_FM_FREQ_FB_PAN equ 0x80 ; 80..9F - set frequency/feedback/panning
OPM_FM_KEY equ 0xA0 ; A0..BF - key on/off
OPM_FM_CMD00_REG50 equ (1 << 0) ;
OPM_FM_CMD00_REG50_BIT equ 0 ; shift value for OPM_FM_CMD00_REG50
OPM_FM_CMD00_REG60 equ (1 << 1) ;
OPM_FM_CMD00_REG60_BIT equ 1 ; shift value for OPM_FM_CMD00_REG60
OPM_FM_CMD00_REG70 equ (1 << 2) ;
OPM_FM_CMD00_REG70_BIT equ 2 ; shift value for OPM_FM_CMD00_REG70
OPM_FM_CMD00_REG80 equ (1 << 3) ;
OPM_FM_CMD00_REG80_BIT equ 3 ; shift value for OPM_FM_CMD00_REG80
OPM_FM_CMD00_OP_MASK equ (3 << 4) ;
OPM_FM_CMD00_OP_MASK_BIT equ 4 ; shift value for OPM_FM_CMD00_OP_MASK
OPM_FM_CMD40_REG30 equ (1 << 0) ;
OPM_FM_CMD40_REG30_BIT equ 0 ; shift value for OPM_FM_CMD40_REG30
OPM_FM_CMD40_REG40 equ (1 << 1) ;
OPM_FM_CMD40_REG40_BIT equ 1 ; shift value for OPM_FM_CMD40_REG40
OPM_FM_CMD40_REG90 equ (1 << 2) ;
OPM_FM_CMD40_REG90_BIT equ 2 ; shift value for OPM_FM_CMD40_REG90
OPM_FM_CMD40_EOF equ (1 << 3) ;
OPM_FM_CMD40_EOF_BIT equ 3 ; shift value for OPM_FM_CMD40_EOF
OPM_FM_CMD40_OP_SHIFT equ 4 ;
OPM_FM_CMD40_OP_MASK equ (3 << 4) ;
OPM_FM_CMD40_OP_MASK_BIT equ 4 ; shift value for OPM_FM_CMD40_OP_MASK
OPM_FM_CMD80_REGA4 equ (1 << 0) ;
OPM_FM_CMD80_REGA4_BIT equ 0 ; shift value for OPM_FM_CMD80_REGA4
OPM_FM_CMD80_REGA0 equ (1 << 1) ;
OPM_FM_CMD80_REGA0_BIT equ 1 ; shift value for OPM_FM_CMD80_REGA0
OPM_FM_CMD80_REGB0 equ (1 << 2) ;
OPM_FM_CMD80_REGB0_BIT equ 2 ; shift value for OPM_FM_CMD80_REGB0
OPM_FM_CMD80_REGB4 equ (1 << 3) ;
OPM_FM_CMD80_REGB4_BIT equ 3 ; shift value for OPM_FM_CMD80_REGB4
OPM_FM_CMD80_EOF equ (1 << 4) ;
OPM_FM_CMD80_EOF_BIT equ 4 ; shift value for OPM_FM_CMD80_EOF
OPM_FM_CMDA0_OP_SHIFT equ 0 ;
OPM_FM_CMDA0_OP_MASK equ (0x0F << 0) ;
OPM_FM_CMDA0_OP_MASK_BIT equ 0 ; shift value for OPM_FM_CMDA0_OP_MASK
OPM_FM_CMDA0_EOF equ (1 << 4) ;
OPM_FM_CMDA0_EOF_BIT equ 4 ; shift value for OPM_FM_CMDA0_EOF
; OPNA rhythm channel stream
OPN_RHYTHM_KEY equ 0x00 ; 00..7F - key on
OPN_RHYTHM_REGS1 equ 0x80 ; 80..9F - write reg set 1
OPN_RHYTHM_REGS2 equ 0xA0 ; A0..BF - write reg set 2
OPN_RHYTHM_KEY_EOF equ (1 << 6) ;
OPN_RHYTHM_KEY_EOF_BIT equ 6 ; shift value for OPN_RHYTHM_KEY_EOF
OPN_RHYTHM_CMD80_REG10 equ (1 << 0) ;
OPN_RHYTHM_CMD80_REG10_BIT equ 0 ; shift value for OPN_RHYTHM_CMD80_REG10
OPN_RHYTHM_CMD80_REG11 equ (1 << 1) ;
OPN_RHYTHM_CMD80_REG11_BIT equ 1 ; shift value for OPN_RHYTHM_CMD80_REG11
OPN_RHYTHM_CMD80_REG18 equ (1 << 2) ;
OPN_RHYTHM_CMD80_REG18_BIT equ 2 ; shift value for OPN_RHYTHM_CMD80_REG18
OPN_RHYTHM_CMD80_REG19 equ (1 << 3) ;
OPN_RHYTHM_CMD80_REG19_BIT equ 3 ; shift value for OPN_RHYTHM_CMD80_REG19
OPN_RHYTHM_CMDA0_REG1A equ (1 << 0) ;
OPN_RHYTHM_CMDA0_REG1A_BIT equ 0 ; shift value for OPN_RHYTHM_CMDA0_REG1A
OPN_RHYTHM_CMDA0_REG1B equ (1 << 1) ;
OPN_RHYTHM_CMDA0_REG1B_BIT equ 1 ; shift value for OPN_RHYTHM_CMDA0_REG1B
OPN_RHYTHM_CMDA0_REG1C equ (1 << 2) ;
OPN_RHYTHM_CMDA0_REG1C_BIT equ 2 ; shift value for OPN_RHYTHM_CMDA0_REG1C
OPN_RHYTHM_CMDA0_REG1D equ (1 << 3) ;
OPN_RHYTHM_CMDA0_REG1D_BIT equ 3 ; shift value for OPN_RHYTHM_CMDA0_REG1D
OPN_RHYTHM_REGS_EOF equ (1 << 4) ;
OPN_RHYTHM_REGS_EOF_BIT equ 4 ; shift value for OPN_RHYTHM_REGS_EOF
; OPN SSG tone stream commands (shared with AY chip type)
OPM_AYTONE_REGS equ 0x00 ; 00..7F - set volume and period low
OPM_AYTONE_PERIOD equ 0x80 ; 80..BF - set period
OPM_AYTONE_MASK equ 0xF0 ; F0..F7 - set tone/noise mask
OPM_AYTONE_CMD00_VOLUME_MASK equ (0x1F << 0) ;
OPM_AYTONE_CMD00_VOLUME_MASK_BIT equ 0 ; shift value for OPM_AYTONE_CMD00_VOLUME_MASK
OPM_AYTONE_CMD00_PERIOD_LOW equ (1 << 5) ;
OPM_AYTONE_CMD00_PERIOD_LOW_BIT equ 5 ; shift value for OPM_AYTONE_CMD00_PERIOD_LOW
OPM_AYTONE_CMD00_EOF equ (1 << 6) ;
OPM_AYTONE_CMD00_EOF_BIT equ 6 ; shift value for OPM_AYTONE_CMD00_EOF
OPM_AYTONE_CMD80_PERIOD_HIGH equ (0xF << 0) ;
OPM_AYTONE_CMD80_PERIOD_HIGH_BIT equ 0 ; shift value for OPM_AYTONE_CMD80_PERIOD_HIGH
OPM_AYTONE_CMD80_PERIOD_LOW equ (1 << 4) ;
OPM_AYTONE_CMD80_PERIOD_LOW_BIT equ 4 ; shift value for OPM_AYTONE_CMD80_PERIOD_LOW
OPM_AYTONE_CMD80_EOF equ (1 << 5) ;
OPM_AYTONE_CMD80_EOF_BIT equ 5 ; shift value for OPM_AYTONE_CMD80_EOF
OPM_AYTONE_MASK_TONE equ (1 << 0) ;
OPM_AYTONE_MASK_TONE_BIT equ 0 ; shift value for OPM_AYTONE_MASK_TONE
OPM_AYTONE_MASK_NOISE equ (1 << 1) ;
OPM_AYTONE_MASK_NOISE_BIT equ 1 ; shift value for OPM_AYTONE_MASK_NOISE
OPM_AYTONE_MASK_EOF equ (1 << 2) ;
OPM_AYTONE_MASK_EOF_BIT equ 2 ; shift value for OPM_AYTONE_MASK_EOF
; OPN SSG envelope/noise stream commands (shared with AY chip type)
OPM_AYENV_REGS equ 0x00 ; 00..7F - set noise and period low
OPM_AYENV_ENVTYPE equ 0x80 ; 80..BF - set env type and period low
OPM_AYENV_PERIOD_FULL equ 0xF0 ; F0..F7 - set full envelope period
OPM_AYENV_CMD00_NOISE_MASK equ (0x1F << 0) ;
OPM_AYENV_CMD00_NOISE_MASK_BIT equ 0 ; shift value for OPM_AYENV_CMD00_NOISE_MASK
OPM_AYENV_CMD00_PERIOD_LOW equ (1 << 5) ;
OPM_AYENV_CMD00_PERIOD_LOW_BIT equ 5 ; shift value for OPM_AYENV_CMD00_PERIOD_LOW
OPM_AYENV_CMD00_EOF equ (1 << 6) ;
OPM_AYENV_CMD00_EOF_BIT equ 6 ; shift value for OPM_AYENV_CMD00_EOF
OPM_AYENV_CMD80_ENV_TYPE equ (0xF << 0) ;
OPM_AYENV_CMD80_ENV_TYPE_BIT equ 0 ; shift value for OPM_AYENV_CMD80_ENV_TYPE
OPM_AYENV_CMD80_PERIOD_LOW equ (1 << 4) ;
OPM_AYENV_CMD80_PERIOD_LOW_BIT equ 4 ; shift value for OPM_AYENV_CMD80_PERIOD_LOW
OPM_AYENV_CMD80_EOF equ (1 << 5) ;
OPM_AYENV_CMD80_EOF_BIT equ 5 ; shift value for OPM_AYENV_CMD80_EOF
OPM_AYENV_CMDF0_PERIOD_LOW equ (1 << 0) ;
OPM_AYENV_CMDF0_PERIOD_LOW_BIT equ 0 ; shift value for OPM_AYENV_CMDF0_PERIOD_LOW
OPM_AYENV_CMDF0_PERIOD_HIGH equ (1 << 1) ;
OPM_AYENV_CMDF0_PERIOD_HIGH_BIT equ 1 ; shift value for OPM_AYENV_CMDF0_PERIOD_HIGH
OPM_AYENV_CMDF0_EOF equ (1 << 2) ;
OPM_AYENV_CMDF0_EOF_BIT equ 2 ; shift value for OPM_AYENV_CMDF0_EOF