--- np2/sound/soundrom.c 2003/12/04 09:47:08 1.4 +++ np2/sound/soundrom.c 2005/02/09 20:11:35 1.10 @@ -1,33 +1,32 @@ #include "compiler.h" #include "dosio.h" +#include "cpucore.h" #include "pccore.h" -#include "memory.h" #include "soundrom.h" SOUNDROM soundrom; -static const char file_sound[] = "sound"; -static const char file_extrom[] = ".rom"; -static const BYTE defsoundrom[9] = { +static const OEMCHAR file_sound[] = OEMTEXT("sound"); +static const OEMCHAR file_extrom[] = OEMTEXT(".rom"); +static const UINT8 defsoundrom[9] = { 0x01,0x00,0x00,0x00,0xd2,0x00,0x08,0x00,0xcb}; -static BOOL loadsoundrom(UINT address, const char *name) { +static BRESULT loadsoundrom(UINT address, const OEMCHAR *name) { - char romname[24]; - char path[MAX_PATH]; + OEMCHAR romname[24]; + OEMCHAR path[MAX_PATH]; FILEH fh; UINT rsize; - file_cpyname(romname, file_sound, sizeof(romname)); + file_cpyname(romname, file_sound, NELEMENTS(romname)); if (name) { - file_catname(romname, name, sizeof(romname)); + file_catname(romname, name, NELEMENTS(romname)); } - file_catname(romname, file_extrom, sizeof(romname)); - file_cpyname(path, np2cfg.biospath, sizeof(path)); - file_catname(path, romname, sizeof(path)); + file_catname(romname, file_extrom, NELEMENTS(romname)); + getbiospath(path, romname, NELEMENTS(path)); fh = file_open_rb(path); if (fh == FILEH_INVALID) { goto lsr_err; @@ -37,8 +36,14 @@ static BOOL loadsoundrom(UINT address, c if (rsize != 0x4000) { goto lsr_err; } - file_cpyname(soundrom.name, romname, sizeof(soundrom.name)); + file_cpyname(soundrom.name, romname, NELEMENTS(soundrom.name)); soundrom.address = address; + if (address == 0xd0000) { + CPU_RAM_D000 &= ~(0x0f << 0); + } + else if (address == 0xd4000) { + CPU_RAM_D000 &= ~(0x0f << 4); + } return(SUCCESS); lsr_err: @@ -53,7 +58,7 @@ void soundrom_reset(void) { ZeroMemory(&soundrom, sizeof(soundrom)); } -void soundrom_load(UINT32 address, const char *primary) { +void soundrom_load(UINT32 address, const OEMCHAR *primary) { if (primary != NULL) { if (loadsoundrom(address, primary) == SUCCESS) { @@ -68,7 +73,7 @@ void soundrom_load(UINT32 address, const soundrom.address = address; } -void soundrom_loadex(BYTE sw, const char *primary) { +void soundrom_loadex(UINT sw, const OEMCHAR *primary) { if (sw < 4) { soundrom_load((0xc8000 + ((UINT32)sw << 14)), primary);