; MOD player  (c) 2002 mls
;
; generates samples for 11000 HZ
; bpm always 125

STATE_OFF	equ 0
STATE_PLAY	equ 1
STATE_SAMPLE	equ 2

; struct volume
vo_volume	equ 0
vo_volumegoal	equ vo_volume + 2
vo_volumerate	equ vo_volumegoal + 2
vo_sizeof	equ vo_volumerate + 2

; struct channel
ch_samp		equ 0
ch_startseg	equ ch_samp + 2
ch_pitch	equ ch_startseg + 2
ch_finetune	equ ch_pitch + 2
ch_volume	equ ch_finetune + 2

ch_start	equ ch_volume + 2		; pointer, rel to ch_startseg
ch_pointer	equ ch_start + 4
ch_pointer8	equ ch_pointer + 2
ch_end		equ ch_pointer8 + 2
ch_send		equ ch_end + 2
ch_roff		equ ch_send + 2
ch_rend		equ ch_roff + 2
ch_step		equ ch_rend + 2
ch_step8	equ ch_step + 2

ch_slide	equ ch_step8 + 2
ch_vibrate	equ ch_slide + 2
ch_viboffset	equ ch_vibrate + 2
ch_vibdepth	equ ch_viboffset + 2
ch_pitchgoal	equ ch_vibdepth + 2
ch_pitchrate	equ ch_pitchgoal + 2
ch_volumerate	equ ch_pitchrate + 2
ch_arpindex	equ ch_volumerate + 2
ch_arp		equ ch_arpindex + 2
ch_current	equ ch_arp + 3 * 2
ch_retrig	equ ch_current + 2
ch_latesamp	equ ch_retrig + 2
ch_effect	equ ch_latesamp + 2
ch_player	equ ch_effect + 2		; pointer to player data, rel to ds
ch_sizeof       equ ch_player + 4

; struct player
pl_volume	equ 0
pl_state	equ pl_volume + vo_sizeof
pl_songlen	equ pl_state + 2
pl_speed	equ pl_songlen + 2
pl_effpos	equ pl_speed + 2
pl_nextsongnum	equ pl_effpos + 2
pl_nextnotenum	equ pl_nextsongnum + 2
pl_songnum	equ pl_nextnotenum + 2
pl_notenum	equ pl_songnum + 2
pl_loop_notenum	equ pl_notenum + 2
pl_loop_counter	equ pl_loop_notenum + 2
pl_seg		equ pl_loop_counter + 2
pl_song		equ pl_seg + 2			; pointer, rel to pl_seg
pl_patterns     equ pl_song + 4			; pointer, rel to pl_seg
pl_sampinfo     equ pl_patterns + 4		; pointer, rel to pl_seg
pl_sampd        equ pl_sampinfo + 4		; pointer array, rel to pl_sampdseg
pl_sampdseg     equ pl_sampd + 4 * 32
pl_channs       equ pl_sampdseg + 2 * 32
pl_loaded	equ pl_channs + 4 * ch_sizeof
pl_sizeof	equ pl_loaded + 2

EFF_ARP		equ 1
EFF_SLIDE	equ 2
EFF_PORTA	equ 3
EFF_VIBRA	equ 4
EFF_RETRIG	equ 5
EFF_CUT		equ 6
EFF_LATESTART	equ 7
EFF_SLIDEVOL	equ 8
EFF_PORTASLIDE	equ 8 + 3
EFF_VIBRASLIDE	equ 8 + 4

		; _must_ be 320
num_samples	equ 320

; struct area
ar_hassamp	equ 0
ar_samps	equ ar_hassamp + 1
ar_volume	equ ar_samps + num_samples + 1
ar_players	equ ar_volume + vo_sizeof
ar_ssamps	equ ar_players + pl_sizeof * 4
ar_sizeof	equ ar_ssamps + num_samples * 2

