Fix for BG Music in Masked Riders Club Battle Race and Mad Shark (d_seta.cpp)

This commit is contained in:
dinkc64 2014-05-12 19:37:52 +00:00
parent 3d8e4b5d5a
commit 8a2e5bcb93
1 changed files with 48 additions and 5 deletions

View File

@ -6738,8 +6738,15 @@ static INT32 DrvInit(void (*p68kInit)(), INT32 cpu_speed, INT32 irq_type, INT32
buffer_sprites = spr_buffer; buffer_sprites = spr_buffer;
x1010_sound_init(16000000, 0x0000); x1010_sound_init(16000000, 0x0000);
x1010_set_route(BURN_SND_X1010_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT);
x1010_set_route(BURN_SND_X1010_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT); x1010_set_route(BURN_SND_X1010_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT);
x1010_set_route(BURN_SND_X1010_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT);
if (strstr(BurnDrvGetTextA(DRV_NAME), "madshark")) {
x1010_set_route(BURN_SND_X1010_ROUTE_1, 1.00, BURN_SND_ROUTE_BOTH);
}
if (strstr(BurnDrvGetTextA(DRV_NAME), "kamenrid")) {
x1010_set_route(BURN_SND_X1010_ROUTE_2, 1.00, BURN_SND_ROUTE_BOTH);
}
BurnYM3812Init(4000000, NULL, DrvYM3812SynchroniseStream, 0); BurnYM3812Init(4000000, NULL, DrvYM3812SynchroniseStream, 0);
BurnTimerAttachSekYM3812(16000000); BurnTimerAttachSekYM3812(16000000);
@ -7359,6 +7366,42 @@ static void Drv68k_5IRQ_FrameCallback()
} }
} }
static int flipflop = 0;
static void Drv68k_KM_FrameCallback() // kamenrid & madshark
{
INT32 nInterleave = 10;
INT32 nCyclesTotal[1] = { (cpuspeed * 100) / refresh_rate };
INT32 nCyclesDone[1] = { 0 };
SekOpen(0);
for (INT32 i = 0; i < nInterleave; i++)
{
nCyclesDone[0] += SekRun(nCyclesTotal[0] / nInterleave);
if (i & 1 && i == 1) SekSetIRQLine(2, SEK_IRQSTATUS_AUTO);
}
if (flipflop==0) { // IRQ4 is fired every other frame
SekSetIRQLine(4, SEK_IRQSTATUS_AUTO);
flipflop=1;
} else {
flipflop=0;
}
SekClose();
if (pBurnSoundOut) {
x1010_sound_update();
}
}
static INT32 DrvKMFrame()
{
return DrvCommonFrame(Drv68k_KM_FrameCallback);
}
static INT32 Drv5IRQFrame() static INT32 Drv5IRQFrame()
{ {
return DrvCommonFrame(Drv68k_5IRQ_FrameCallback); return DrvCommonFrame(Drv68k_5IRQ_FrameCallback);
@ -8317,7 +8360,7 @@ static INT32 kamenridInit()
DrvSetVideoOffsets(0, 0, -2, -2); DrvSetVideoOffsets(0, 0, -2, -2);
DrvSetColorOffsets(0, 0x400, 0x200); DrvSetColorOffsets(0, 0x400, 0x200);
return DrvInit(kamenrid68kInit, 16000000, SET_IRQLINES(2, NOIRQ2), NO_SPRITE_BUFFER, SET_GFX_DECODE(0, 2, 2)); return DrvInit(kamenrid68kInit, 16000000, SET_IRQLINES(2, 4/*2, NOIRQ2*/), NO_SPRITE_BUFFER, SET_GFX_DECODE(0, 2, 2));
} }
struct BurnDriver BurnDrvKamenrid = { struct BurnDriver BurnDrvKamenrid = {
@ -8326,7 +8369,7 @@ struct BurnDriver BurnDrvKamenrid = {
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 2, HARDWARE_SETA1, GBF_MISC, 0, BDF_GAME_WORKING, 2, HARDWARE_SETA1, GBF_MISC, 0,
NULL, kamenridRomInfo, kamenridRomName, NULL, NULL, KamenridInputInfo, KamenridDIPInfo, NULL, kamenridRomInfo, kamenridRomName, NULL, NULL, KamenridInputInfo, KamenridDIPInfo,
kamenridInit, DrvExit, DrvFrame, seta2layerDraw, DrvScan, &DrvRecalc, 0x600, kamenridInit, DrvExit, DrvKMFrame, seta2layerDraw, DrvScan, &DrvRecalc, 0x600,
384, 240, 4, 3 384, 240, 4, 3
}; };
@ -8353,7 +8396,7 @@ static INT32 madsharkInit()
DrvSetVideoOffsets(0, 0, 0, 0); DrvSetVideoOffsets(0, 0, 0, 0);
DrvSetColorOffsets(0, 0x200, 0xa00); DrvSetColorOffsets(0, 0x200, 0xa00);
INT32 nRet = DrvInit(madshark68kInit, 16000000, SET_IRQLINES(2, NOIRQ2), NO_SPRITE_BUFFER, SET_GFX_DECODE(0, 3, 3)); INT32 nRet = DrvInit(madshark68kInit, 16000000, SET_IRQLINES(4, 2/*2, NOIRQ2*/), NO_SPRITE_BUFFER, SET_GFX_DECODE(0, 3, 3));
if (nRet == 0) { if (nRet == 0) {
jjsquawkSetColorTable(); jjsquawkSetColorTable();
@ -8375,7 +8418,7 @@ struct BurnDriver BurnDrvMadshark = {
NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL,
BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_SETA1, GBF_MISC, 0, BDF_GAME_WORKING | BDF_ORIENTATION_VERTICAL, 2, HARDWARE_SETA1, GBF_MISC, 0,
NULL, madsharkRomInfo, madsharkRomName, NULL, NULL, MadsharkInputInfo, MadsharkDIPInfo, NULL, madsharkRomInfo, madsharkRomName, NULL, NULL, MadsharkInputInfo, MadsharkDIPInfo,
madsharkInit, madsharkExit, DrvFrame, seta2layerDraw, DrvScan, &DrvRecalc, 0x1200, madsharkInit, madsharkExit, DrvKMFrame, seta2layerDraw, DrvScan, &DrvRecalc, 0x1200,
224, 384, 3, 4 224, 384, 3, 4
}; };