Add sound sample hack support to Teki Paki (sample hack from ThunderMAME)
This commit is contained in:
parent
3e7a704080
commit
124f92416e
|
@ -1,4 +1,6 @@
|
||||||
#include "toaplan.h"
|
#include "toaplan.h"
|
||||||
|
#include "samples.h"
|
||||||
|
|
||||||
// Teki Paki
|
// Teki Paki
|
||||||
|
|
||||||
static UINT8 DrvButton[8] = {0, 0, 0, 0, 0, 0, 0, 0};
|
static UINT8 DrvButton[8] = {0, 0, 0, 0, 0, 0, 0, 0};
|
||||||
|
@ -327,6 +329,106 @@ static INT32 LoadRoms()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#ifdef TOAPLAN_SOUND_SAMPLES_HACK
|
||||||
|
static void StopAllSamples()
|
||||||
|
{
|
||||||
|
for (INT32 i = 0x00; i <= 0x15; i++) {
|
||||||
|
BurnSampleStop(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void StopSamplesChannel0()
|
||||||
|
{
|
||||||
|
for (INT32 i = 0x01; i <= 0x05; i++) {
|
||||||
|
BurnSampleStop(i);
|
||||||
|
BurnSampleSetLoop(i, 0);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void StopSamplesChannel1()
|
||||||
|
{
|
||||||
|
for (INT32 i = 0x06; i <= 0x07; i++) {
|
||||||
|
BurnSampleStop(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void StopSamplesChannel2()
|
||||||
|
{
|
||||||
|
for (INT32 i = 0x08; i <= 0x09; i++) {
|
||||||
|
BurnSampleStop(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void StopSamplesChannel3()
|
||||||
|
{
|
||||||
|
for (INT32 i = 0x0a; i <= 0x0d; i++) {
|
||||||
|
BurnSampleStop(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void StopSamplesChannel4()
|
||||||
|
{
|
||||||
|
for (INT32 i = 0x0e; i <= 0x12; i++) {
|
||||||
|
BurnSampleStop(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void StopSamplesChannel5()
|
||||||
|
{
|
||||||
|
for (INT32 i = 0x13; i <= 0x14; i++) {
|
||||||
|
BurnSampleStop(i);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static void tekipakiHD647180Write(UINT16 d)
|
||||||
|
{
|
||||||
|
if (d == 0xfe) {
|
||||||
|
StopAllSamples();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (d >= 0x01 && d <= 0x03) {
|
||||||
|
StopSamplesChannel0();
|
||||||
|
BurnSampleSetLoop(d, 1);
|
||||||
|
BurnSamplePlay(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (d >= 0x04 && d <= 0x05) {
|
||||||
|
StopSamplesChannel0();
|
||||||
|
BurnSamplePlay(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (d >= 0x06 && d <= 0x07) {
|
||||||
|
StopSamplesChannel1();
|
||||||
|
BurnSamplePlay(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (d == 0x08 || d == 0x09) {
|
||||||
|
StopSamplesChannel2();
|
||||||
|
BurnSamplePlay(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (d >= 0x0a && d <= 0x0d) {
|
||||||
|
StopSamplesChannel3();
|
||||||
|
BurnSamplePlay(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (d == 0x0e || d == 0x12) {
|
||||||
|
StopSamplesChannel4();
|
||||||
|
BurnSamplePlay(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (d >= 0x13 && d <= 0x14) {
|
||||||
|
StopSamplesChannel5();
|
||||||
|
BurnSamplePlay(d);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (d == 0x15) {
|
||||||
|
BurnSampleStop(d);
|
||||||
|
BurnSamplePlay(d);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
UINT8 __fastcall tekipakiReadByte(UINT32 sekAddress)
|
UINT8 __fastcall tekipakiReadByte(UINT32 sekAddress)
|
||||||
{
|
{
|
||||||
switch (sekAddress) {
|
switch (sekAddress) {
|
||||||
|
@ -347,8 +449,8 @@ UINT8 __fastcall tekipakiReadByte(UINT32 sekAddress)
|
||||||
case 0x14000D: // VBlank
|
case 0x14000D: // VBlank
|
||||||
return ToaVBlankRegister();
|
return ToaVBlankRegister();
|
||||||
|
|
||||||
// default:
|
default:
|
||||||
// printf("Attempt to read byte value of location %x\n", sekAddress);
|
bprintf(PRINT_NORMAL, _T("Attempt to read byte value of location %x\n"), sekAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -380,8 +482,8 @@ UINT16 __fastcall tekipakiReadWord(UINT32 sekAddress)
|
||||||
case 0x14000C:
|
case 0x14000C:
|
||||||
return ToaVBlankRegister();
|
return ToaVBlankRegister();
|
||||||
|
|
||||||
// default:
|
default:
|
||||||
// printf("Attempt to read word value of location %x\n", sekAddress);
|
bprintf(PRINT_NORMAL, _T("Attempt to read word value of location %x\n"), sekAddress);
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -390,9 +492,9 @@ UINT16 __fastcall tekipakiReadWord(UINT32 sekAddress)
|
||||||
void __fastcall tekipakiWriteByte(UINT32 /*sekAddress*/, UINT8 /*byteValue*/)
|
void __fastcall tekipakiWriteByte(UINT32 /*sekAddress*/, UINT8 /*byteValue*/)
|
||||||
{
|
{
|
||||||
// switch (sekAddress) {
|
// switch (sekAddress) {
|
||||||
|
//
|
||||||
// default:
|
// default:
|
||||||
// printf("Attempt to write byte value %x to location %x\n", byteValue, sekAddress);
|
// bprintf(PRINT_NORMAL, _T("Attempt to write byte value %x to location %x\n"), byteValue, sekAddress);
|
||||||
// }
|
// }
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -418,9 +520,15 @@ void __fastcall tekipakiWriteWord(UINT32 sekAddress, UINT16 wordValue)
|
||||||
case 0x14000C:
|
case 0x14000C:
|
||||||
ToaGP9001WriteRegister(wordValue);
|
ToaGP9001WriteRegister(wordValue);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 0x180070:
|
||||||
|
#ifdef TOAPLAN_SOUND_SAMPLES_HACK
|
||||||
|
tekipakiHD647180Write(wordValue);
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
|
||||||
// default:
|
default:
|
||||||
// printf("Attempt to write word value %x to location %x\n", wordValue, sekAddress);
|
bprintf(PRINT_NORMAL, _T("Attempt to write word value %x to location %x\n"), wordValue, sekAddress);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -429,6 +537,11 @@ static INT32 DrvDoReset()
|
||||||
SekOpen(0);
|
SekOpen(0);
|
||||||
SekReset();
|
SekReset();
|
||||||
SekClose();
|
SekClose();
|
||||||
|
|
||||||
|
BurnSampleReset();
|
||||||
|
#ifdef TOAPLAN_SOUND_SAMPLES_HACK
|
||||||
|
StopAllSamples();
|
||||||
|
#endif
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -486,6 +599,9 @@ static INT32 DrvInit()
|
||||||
nToaPalLen = nColCount;
|
nToaPalLen = nColCount;
|
||||||
ToaPalSrc = RamPal;
|
ToaPalSrc = RamPal;
|
||||||
ToaPalInit();
|
ToaPalInit();
|
||||||
|
|
||||||
|
BurnSampleInit(0);
|
||||||
|
BurnSampleSetAllRoutesAllSamples(1.00, BURN_SND_ROUTE_BOTH);
|
||||||
|
|
||||||
bDrawScreen = true;
|
bDrawScreen = true;
|
||||||
|
|
||||||
|
@ -499,6 +615,7 @@ static INT32 DrvExit()
|
||||||
|
|
||||||
ToaExitGP9001();
|
ToaExitGP9001();
|
||||||
SekExit(); // Deallocate 68000s
|
SekExit(); // Deallocate 68000s
|
||||||
|
BurnSampleExit();
|
||||||
|
|
||||||
BurnFree(Mem);
|
BurnFree(Mem);
|
||||||
|
|
||||||
|
@ -588,6 +705,8 @@ static INT32 DrvFrame()
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
BurnSampleRender(pBurnSoundOut, nBurnSoundLen);
|
||||||
|
|
||||||
SekClose();
|
SekClose();
|
||||||
|
|
||||||
|
@ -598,12 +717,43 @@ static INT32 DrvFrame()
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static struct BurnSampleInfo tekipakiSampleDesc[] = {
|
||||||
|
#ifdef TOAPLAN_SOUND_SAMPLES_HACK
|
||||||
|
{ "dm.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "01.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "02.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "03.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "04.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "05.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "06.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "07.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "08.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "09.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "0a.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "0b.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "0c.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "0d.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "0e.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "0f.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "10.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "11.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "12.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "13.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "14.wav", SAMPLE_NOLOOP },
|
||||||
|
{ "15.wav", SAMPLE_NOLOOP },
|
||||||
|
#endif
|
||||||
|
{ "", 0 }
|
||||||
|
};
|
||||||
|
|
||||||
|
STD_SAMPLE_PICK(tekipaki)
|
||||||
|
STD_SAMPLE_FN(tekipaki)
|
||||||
|
|
||||||
struct BurnDriver BurnDrvTekiPaki = {
|
struct BurnDriver BurnDrvTekiPaki = {
|
||||||
"tekipaki", NULL, NULL, NULL, "1991",
|
"tekipaki", NULL, NULL, "tekipaki", "1991",
|
||||||
"Teki Paki\0", "No sound (sound MCU not dumped)", "Toaplan", "Toaplan GP9001 based",
|
"Teki Paki\0", "No sound (sound MCU not dumped)", "Toaplan", "Toaplan GP9001 based",
|
||||||
L"Teki Paki\0\u6D17\u8133\u30B2\u30FC\u30E0\0", NULL, NULL, NULL,
|
L"Teki Paki\0\u6D17\u8133\u30B2\u30FC\u30E0\0", NULL, NULL, NULL,
|
||||||
1, 2, HARDWARE_TOAPLAN_68K_Zx80, GBF_PUZZLE, 0,
|
1, 2, HARDWARE_TOAPLAN_68K_Zx80, GBF_PUZZLE, 0,
|
||||||
NULL, drvRomInfo, drvRomName, NULL, NULL, tekipakiInputInfo, tekipakiDIPInfo,
|
NULL, drvRomInfo, drvRomName, tekipakiSampleInfo, tekipakiSampleName, tekipakiInputInfo, tekipakiDIPInfo,
|
||||||
DrvInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &ToaRecalcPalette, 0x800,
|
DrvInit, DrvExit, DrvFrame, DrvDraw, DrvScan, &ToaRecalcPalette, 0x800,
|
||||||
320, 240, 4, 3
|
320, 240, 4, 3
|
||||||
};
|
};
|
||||||
|
|
Loading…
Reference in New Issue