File:  [RetroPC.NET] / xmil / io / sndboard.c
Revision 1.1: download - view: text, annotated - select for diffs
Sun Aug 1 14:31:30 2004 JST (21 years, 3 months ago) by yui
Branches: MAIN
CVS tags: HEAD
initialize

#include	"compiler.h"
#include	"joymng.h"
#include	"pccore.h"
#include	"iocore.h"
#include	"sndctrl.h"
#include	"keystat.h"


void IOOUTCALL sndboard_opmreg(UINT port, REG8 value) {

	TRACEOUT(("%.4x, %.2x", port, value));
	sndboard.opmreg = (UINT8)value;
}

void IOOUTCALL sndboard_opmdat(UINT port, REG8 value) {

	TRACEOUT(("%.4x, %.2x", port, value));
	opmgen_setreg(sndboard.opmreg, value);
}

REG8 IOINPCALL sndboard_opmsta(UINT port) {

	if (pccore.SOUND_SW) {
		return(0x00);								// ゼリアード対策
	}
	return(0xff);
}


void IOOUTCALL sndboard_psgreg(UINT port, REG8 value) {

	sndboard.psgreg = value;
}

void IOOUTCALL sndboard_psgdat(UINT port, REG8 value) {

	if (sndboard.psgreg < 0x0e) {
		psggen_setreg(&psggen, sndboard.psgreg, value);
	}
}

REG8 IOINPCALL sndboard_psgsta(UINT port) {

	REG8	ret;

	if (sndboard.psgreg < 0x0e) {
		return(psggen_getreg(&psggen, sndboard.psgreg));
	}
	else if (sndboard.psgreg < 0x10) {
		ret = 0xff;
		if (sndboard.psgreg == (xmilcfg.KEY_MODE + 0x0d)) {
			ret &= keystat_getjoy();
		}
		if (sndboard.psgreg == 0x0e) {
			ret &= joymng_getstat();
		}
		if (xmilcfg.BTN_RAPID) {
			sndboard.rapids ^= 0x60;
			ret |= sndboard.rapids;
		}
		if (xmilcfg.BTN_MODE) {
			ret = (ret & (~0x60)) | ((ret & 0x40) >> 1) | ((ret & 0x20) << 1);
		}
		return(ret);
	}
	else {
		return(0xff);
	}
}


// ----

void sndboard_reset(void) {

	sndboard.opmreg = 0;
	sndboard.psgreg = 0;
	sndctrl_reset();
}


RetroPC.NET-CVS <cvs@retropc.net>