.global	advpsg
	.global	sndboard_psgreg
	.global	sndboard_psgdat
	.global	sndboard_psgsta
	.global	sndboard_reset
	.extern	advpsg_setreg
	.extern	advpsg_reset
ADVPSG_REG			= 0x00
ADVPSG_ADDR			= 0x10
ADVPSG_ENVBMP		= 0x11
ADVPSG_CH3BANK		= 0x12
ADVPSG_VOL			= 0x14
ADVPSG_FREQ			= 0x18
ADVPSG_LASTCLOCK	= 0x20
ADVPSG_ENVCNT		= 0x24
ADVPSG_ENVMAX		= 0x28
ADVPSG_MIXER		= 0x2c
ADVPSG_ENVMODE		= 0x2d
ADVPSG_ENVVOL		= 0x2e
ADVPSG_ENVVOLCNT	= 0x2f
ADVPSG_SIZE			= 0x30
	.section	.iwram.text
	.code	32
	.align	0
sndboard_psgreg:
				strb	r1, advpsg + ADVPSG_ADDR
				add		pc, lr, #4
sndboard_psgdat:
				adr		r0, advpsg
				mov		r2, r1
				ldrb	r1, advpsg + ADVPSG_ADDR
				ldr		pc, 100f
100:			.word	advpsg_setreg
sndboard_psgsta:
				ldrb	r1, advpsg + ADVPSG_ADDR
				cmp		r1, #0x10
				movcs	r0, #0xff
				ldrccb	r0, [pc, r1]
				add		pc, lr, #4
advpsg:			.fill	ADVPSG_SIZE, 1, 0
	.section	.text
	.code	32
	.align	0
sndboard_reset:
				ldr		r0, 200f
				b		advpsg_reset
200:			.word	advpsg
	.end
RetroPC.NET-CVS <cvs@retropc.net>