;**************************************************************************** ; Player variables ;**************************************************************************** ds $100-($&$FF), $FF RAM_PSGData: ds 4*16 ; PSG envelope data ; ds 1 ... Channel volume ; ds 1 ... Global volume ; ds 3 ... Current address ; ds 3 ... Looping address ; ds 3 ... Start address ; ds 1 ... Semitone ($FF if void) ; ds 3 ... BGM instrument address ; ds 1 ... BGM channel volume RAM_BGMFMInstr: ds 8 ; FM instruments used by BGM RAM_BGMFMVol: ds 8, $7F ; FM volumes used by BGM RAM_BGMFMPan: ds 8, $C0 ; FM panning used by BGM RAM_FMVol: ds 8 ; FM volume of each channel RAM_FMData: ds 8*5 ; FM info (for volume handling) ; ds 8*1 ... Register $B0 ; ds 8*1 ... Register $40 ; ds 8*1 ... Register $44 ; ds 8*1 ... Register $48 ; ds 8*1 ... Register $4C RAM_Locked: ds 12 ; Locked channels RAM_PSGNote: ds 4 ; Current PSG notes RAM_LastBank: ds 1 ; Last accessed bank RAM_BGMData: ; Where BGM data starts RAM_BGMPlaying: ds 1 ; Set if a BGM is playing RAM_BGMDelay: ds 1 ; How many ticks to wait RAM_BGMBank: ds 1 ; Current BGM bank RAM_BGMAddress: ds 2 ; Current BGM address RAM_BGMLoopPoint: ds 3 ; BGM loop point RAM_SFXData: ; Where SFX data starts RAM_SFXPlaying: ds 1 ; Set if a SFX is playing RAM_SFXDelay: ds 1 ; How many ticks to wait RAM_SFXBank: ds 1 ; Current SFX bank RAM_SFXAddress: ds 2 ; Current SFX address RAM_SFXLoopPoint: ds 3 ; SFX loop point RAM_Paused: ds 1 ; Set if BGM stream is paused RAM_Mono: ds 1 ; Set if panning is disabled RAM_PCMBank1: db 1 ; (not implemented yet) RAM_PCMAddr1: dw 1 ; (not implemented yet) RAM_PCMBank2: db 1 ; (not implemented yet) RAM_PCMAddr2: dw 1 ; (not implemented yet) RAM_Scratch: ds 32 ; Scratch bytes, may be useful when ; buffering to speed up to avoid bank ; switching conflicts ds $F0-($&$FF), $FF RAM_PCMBuffer: ds 0 ; PCM buffer RAM_PCMBuffer1: ds 8 ; (not implemented yet) RAM_PCMBuffer2: ds 8 ; (not implemented yet) ;**************************************************************************** ; Pointer list starts being stored from here ; $300 (768) bytes are needed to store the pointer list ; ; Format for a pointer list entry is as follows: ; RAM_PointerList[$000+n] = address high ; RAM_PointerList[$100+n] = address low ; RAM_PointerList[$200+n] = bank ;**************************************************************************** RAM_PointerList: equ $1C00 ;**************************************************************************** ; 68000 communication variables ;**************************************************************************** RAM_DirectLen: equ $1F80 ; Length of direct event stream RAM_Stack: equ $1FE0 ; Where stack starts RAM_GlobalVol: equ $1FE0 ; Global volume for all channels RAM_Status: equ $1FF0 ; Current playback status RAM_RefreshVol: equ $1FF1 ; Set to refresh all volumes RAM_Flags: equ $1FF2 ; Track flags RAM_Command: equ $1FFF ; Command type RAM_ComAddr: equ $1FFD ; Command address parameter RAM_ComBank: equ $1FFC ; Command bank parameter RAM_Command2: equ $1FFB ; (second slot for all the above) RAM_ComAddr2: equ $1FF9 RAM_ComBank2: equ $1FF8