This commit is contained in:
Barry Harris 2018-11-15 09:42:11 +00:00
commit 21bb0131a7
4 changed files with 800 additions and 809 deletions

View File

@ -866,12 +866,12 @@ static INT32 alt2_kludge(UINT32 /*offset*/)
{
static const SekRegister SekRegs1[8] = { SEK_REG_A0, SEK_REG_A1, SEK_REG_A2, SEK_REG_A3, SEK_REG_A4, SEK_REG_A5, SEK_REG_A6, SEK_REG_A7 };
/* first verify that the prefetched PC matches the first alternate */
if (MATCHES_MASK_VALUE((INT32)(SekGetPC(-1) >> 1), slapstic.alt1))
UINT32 pc = SekDbgGetRegister(SEK_REG_PPC);
/* first verify that the prefetched PC matches the first alternate */
if (MATCHES_MASK_VALUE((INT32)((pc+2) >> 1), slapstic.alt1))
{
/* now look for a move.w (An),(An) or cmpm.w (An)+,(An)+ */
UINT16 opcode = SekFetchWord((SekGetPC(-1) - 4) & 0xffffff); // IQ_132 check this!
// UINT16 opcode = space->direct().read_decrypted_word(cpu_get_previouspc(&space->device()) & 0xffffff);
UINT16 opcode = SekReadWord(pc);
if ((opcode & 0xf1f8) == 0x3090 || (opcode & 0xf1f8) == 0xb148)
{
/* fetch the value of the register for the second operand, and see */

View File

@ -204,7 +204,7 @@ static struct BurnDIPInfo bestbestDIPList[]=
{
{0x1a, 0xff, 0xff, 0xff, NULL },
{0x1b, 0xff, 0xff, 0xff, NULL },
{0x1a, 0xfe, 0, 8, "Coinage" },
{0x1a, 0x01, 0x07, 0x00, "5C 1C" },
{0x1a, 0x01, 0x07, 0x01, "4C 1C" },
@ -430,7 +430,7 @@ static void suna_palette_write(INT32 offset)
//------------------
// 68k
UINT16 __fastcall bestbest_read_word(UINT32 address)
static UINT16 __fastcall bestbest_read_word(UINT32 address)
{
switch (address & ~1)
{
@ -447,7 +447,7 @@ UINT16 __fastcall bestbest_read_word(UINT32 address)
return 0;
}
UINT8 __fastcall bestbest_read_byte(UINT32 address)
static UINT8 __fastcall bestbest_read_byte(UINT32 address)
{
switch (address)
{
@ -470,7 +470,7 @@ UINT8 __fastcall bestbest_read_byte(UINT32 address)
return 0;
}
void __fastcall bestbest_write_word(UINT32 address, UINT16 data)
static void __fastcall bestbest_write_word(UINT32 address, UINT16 data)
{
if ((address & 0xfff000) == 0x540000) {
*((UINT16*)(DrvPalRAM + (address & 0x0fff))) = BURN_ENDIAN_SWAP_INT16(data);
@ -492,7 +492,7 @@ void __fastcall bestbest_write_word(UINT32 address, UINT16 data)
return;
}
void __fastcall bestbest_write_byte(UINT32 address, UINT8 data)
static void __fastcall bestbest_write_byte(UINT32 address, UINT8 data)
{
if ((address & 0xfff000) == 0x540000) {
DrvPalRAM[address & 0xfff] = data;
@ -528,7 +528,7 @@ void __fastcall bestbest_write_byte(UINT32 address, UINT8 data)
//------------------
// Z80 #0
void __fastcall bestbest_sound0_write(UINT16 address, UINT8 data)
static void __fastcall bestbest_sound0_write(UINT16 address, UINT8 data)
{
switch (address)
{
@ -550,7 +550,7 @@ void __fastcall bestbest_sound0_write(UINT16 address, UINT8 data)
return;
}
UINT8 __fastcall bestbest_sound0_read(UINT16 address)
static UINT8 __fastcall bestbest_sound0_read(UINT16 address)
{
switch (address)
{
@ -564,21 +564,21 @@ UINT8 __fastcall bestbest_sound0_read(UINT16 address)
//------------------
// Z80 #1
void __fastcall bestbest_sound1_out(UINT16 port, UINT8 data)
static void __fastcall bestbest_sound1_out(UINT16 port, UINT8 data)
{
switch (port & 0xff)
{
case 0x00: { DACWrite(0, (data & 0xf) * 0x11); return; }
case 0x01: { DACWrite(1, (data & 0xf) * 0x11); return; }
case 0x00: { DACSignedWrite(0, (data & 0xf) * 0x11); return; }
case 0x01: { DACSignedWrite(1, (data & 0xf) * 0x11); return; }
case 0x02: { DACWrite(2, (data & 0xf) * 0x11); return; }
case 0x03: { DACWrite(3, (data & 0xf) * 0x11); return; }
case 0x02: { DACSignedWrite(2, (data & 0xf) * 0x11); return; }
case 0x03: { DACSignedWrite(3, (data & 0xf) * 0x11); return; }
}
return;
}
UINT8 __fastcall bestbest_sound1_in(UINT16 port)
static UINT8 __fastcall bestbest_sound1_in(UINT16 port)
{
switch (port & 0xff)
{
@ -597,7 +597,7 @@ UINT8 __fastcall bestbest_sound1_in(UINT16 port)
//------------------
// 68k
UINT16 __fastcall sunaq_read_word(UINT32 address)
static UINT16 __fastcall sunaq_read_word(UINT32 address)
{
if ((address & 0xfff000) == 0x540000) {
if (address & 0x200) {
@ -626,7 +626,7 @@ UINT16 __fastcall sunaq_read_word(UINT32 address)
return 0;
}
UINT8 __fastcall sunaq_read_byte(UINT32 address)
static UINT8 __fastcall sunaq_read_byte(UINT32 address)
{
if ((address & 0xfff000) == 0x540000) {
if (address & 0x200) {
@ -649,7 +649,7 @@ UINT8 __fastcall sunaq_read_byte(UINT32 address)
case 0x500004:
case 0x500005:
return DrvInputs[2] >> ((~address & 1) << 3);
return DrvInputs[2] >> ((~address & 1) << 3);
case 0x500006:
case 0x500007:
@ -659,7 +659,7 @@ UINT8 __fastcall sunaq_read_byte(UINT32 address)
return 0;
}
void __fastcall sunaq_write_word(UINT32 address, UINT16 data)
static void __fastcall sunaq_write_word(UINT32 address, UINT16 data)
{
if ((address & 0xfff000) == 0x540000) {
if (address & 0x200) {
@ -690,7 +690,7 @@ void __fastcall sunaq_write_word(UINT32 address, UINT16 data)
return;
}
void __fastcall sunaq_write_byte(UINT32 address, UINT8 data)
static void __fastcall sunaq_write_byte(UINT32 address, UINT8 data)
{
if ((address & 0xfff000) == 0x540000) {
if (address & 0x200) {
@ -728,7 +728,7 @@ void __fastcall sunaq_write_byte(UINT32 address, UINT8 data)
//------------------
// Z80 #0
void __fastcall sunaq_sound0_write(UINT16 address, UINT8 data)
static void __fastcall sunaq_sound0_write(UINT16 address, UINT8 data)
{
switch (address)
{
@ -793,7 +793,7 @@ static void uballoon_prot_write(UINT16 offset, UINT8 data)
}
}
UINT16 __fastcall uballoon_read_word(UINT32 address)
static UINT16 __fastcall uballoon_read_word(UINT32 address)
{
if ((address & 0xfff000) == 0x200000) {
if (address & 0x200) {
@ -822,7 +822,7 @@ UINT16 __fastcall uballoon_read_word(UINT32 address)
return 0;
}
UINT8 __fastcall uballoon_read_byte(UINT32 address)
static UINT8 __fastcall uballoon_read_byte(UINT32 address)
{
if ((address & 0xff0000) == 0xa00000) {
return uballoon_prot_read(address);
@ -859,7 +859,7 @@ UINT8 __fastcall uballoon_read_byte(UINT32 address)
return 0;
}
void __fastcall uballoon_write_word(UINT32 address, UINT16 data)
static void __fastcall uballoon_write_word(UINT32 address, UINT16 data)
{
if ((address & 0xfff000) == 0x200000) {
if (address & 0x200) {
@ -886,7 +886,7 @@ void __fastcall uballoon_write_word(UINT32 address, UINT16 data)
return;
}
void __fastcall uballoon_write_byte(UINT32 address, UINT8 data)
static void __fastcall uballoon_write_byte(UINT32 address, UINT8 data)
{
if ((address & 0xfff000) == 0x200000) {
if (address & 0x200) {
@ -928,17 +928,16 @@ static void uballoon_bankswitch(INT32 data)
z80bankdata[0] = data;
INT32 bank = ((data & 1) << 16) | 0x400;
ZetMapArea(0x0400, 0xffff, 0, DrvZ80ROM1 + bank);
ZetMapArea(0x0400, 0xffff, 2, DrvZ80ROM1 + bank);
ZetMapMemory(DrvZ80ROM1 + bank, 0x0400, 0xffff, MAP_ROM);
}
void __fastcall uballoon_sound1_out(UINT16 port, UINT8 data)
static void __fastcall uballoon_sound1_out(UINT16 port, UINT8 data)
{
switch (port & 0xff)
{
case 0x00: { DACWrite(0, (data & 0xf) * 0x11); return; }
case 0x01: { DACWrite(1, (data & 0xf) * 0x11); return; }
case 0x00: { DACSignedWrite(0, (data & 0xf) * 0x11); return; }
case 0x01: { DACSignedWrite(1, (data & 0xf) * 0x11); return; }
case 0x03:
uballoon_bankswitch(data);
@ -948,7 +947,7 @@ void __fastcall uballoon_sound1_out(UINT16 port, UINT8 data)
return;
}
UINT8 __fastcall uballoon_sound1_in(UINT16 port)
static UINT8 __fastcall uballoon_sound1_in(UINT16 port)
{
switch (port & 0xff)
{
@ -967,7 +966,7 @@ UINT8 __fastcall uballoon_sound1_in(UINT16 port)
//------------------
// 68k
UINT16 __fastcall bssoccer_read_word(UINT32 address)
static UINT16 __fastcall bssoccer_read_word(UINT32 address)
{
if ((address & 0xfff000) == 0x400000) {
if (address & 0x200) {
@ -1003,7 +1002,7 @@ UINT16 __fastcall bssoccer_read_word(UINT32 address)
return 0;
}
UINT8 __fastcall bssoccer_read_byte(UINT32 address)
static UINT8 __fastcall bssoccer_read_byte(UINT32 address)
{
if ((address & 0xfff000) == 0x400000) {
if (address & 0x200) {
@ -1044,7 +1043,7 @@ UINT8 __fastcall bssoccer_read_byte(UINT32 address)
return 0;
}
void __fastcall bssoccer_write_word(UINT32 address, UINT16 data)
static void __fastcall bssoccer_write_word(UINT32 address, UINT16 data)
{
if ((address & 0xfff000) == 0x400000) {
if (address & 0x200) {
@ -1071,7 +1070,7 @@ void __fastcall bssoccer_write_word(UINT32 address, UINT16 data)
return;
}
void __fastcall bssoccer_write_byte(UINT32 address, UINT8 data)
static void __fastcall bssoccer_write_byte(UINT32 address, UINT8 data)
{
if ((address & 0xfff000) == 0x400000) {
if (address & 0x200) {
@ -1109,11 +1108,10 @@ static void bssoccer_bankswitch_w(UINT8 *z80data, INT32 p, INT32 data)
INT32 bank = ((data & 7) << 16) | 0x1000;
ZetMapArea(0x1000, 0xffff, 0, z80data + bank);
ZetMapArea(0x1000, 0xffff, 2, z80data + bank);
ZetMapMemory(z80data + bank, 0x1000, 0xffff, MAP_ROM);
}
void __fastcall bssoccer_sound0_write(UINT16 address, UINT8 data)
static void __fastcall bssoccer_sound0_write(UINT16 address, UINT8 data)
{
switch (address)
{
@ -1137,7 +1135,7 @@ void __fastcall bssoccer_sound0_write(UINT16 address, UINT8 data)
return;
}
UINT8 __fastcall bssoccer_sound0_read(UINT16 address)
static UINT8 __fastcall bssoccer_sound0_read(UINT16 address)
{
switch (address)
{
@ -1154,12 +1152,12 @@ UINT8 __fastcall bssoccer_sound0_read(UINT16 address)
//------------------
// Z80 #1
void __fastcall bssoccer_sound1_out(UINT16 port, UINT8 data)
static void __fastcall bssoccer_sound1_out(UINT16 port, UINT8 data)
{
switch (port & 0xff)
{
case 0x00: { DACWrite(0, (data & 0xf) * 0x11); return; }
case 0x01: { DACWrite(1, (data & 0xf) * 0x11); return; }
case 0x00: { DACSignedWrite(0, (data & 0xf) * 0x11); return; }
case 0x01: { DACSignedWrite(1, (data & 0xf) * 0x11); return; }
case 0x03:
bssoccer_bankswitch_w(DrvZ80ROM1, 0, data);
@ -1169,7 +1167,7 @@ void __fastcall bssoccer_sound1_out(UINT16 port, UINT8 data)
return;
}
UINT8 __fastcall bssoccer_sound1_in(UINT16 port)
static UINT8 __fastcall bssoccer_sound1_in(UINT16 port)
{
switch (port & 0xff)
{
@ -1183,12 +1181,12 @@ UINT8 __fastcall bssoccer_sound1_in(UINT16 port)
//------------------
// Z80 #2
void __fastcall bssoccer_sound2_out(UINT16 port, UINT8 data)
static void __fastcall bssoccer_sound2_out(UINT16 port, UINT8 data)
{
switch (port & 0xff)
{
case 0x00: { DACWrite(2, (data & 0xf) * 0x11); return; }
case 0x01: { DACWrite(3, (data & 0xf) * 0x11); return; }
case 0x00: { DACSignedWrite(2, (data & 0xf) * 0x11); return; }
case 0x01: { DACSignedWrite(3, (data & 0xf) * 0x11); return; }
return;
case 0x03:
@ -1199,7 +1197,7 @@ void __fastcall bssoccer_sound2_out(UINT16 port, UINT8 data)
return;
}
UINT8 __fastcall bssoccer_sound2_in(UINT16 port)
static UINT8 __fastcall bssoccer_sound2_in(UINT16 port)
{
switch (port & 0xff)
{
@ -1229,7 +1227,7 @@ static INT32 DrvDoReset()
ZetReset();
ZetClose();
}
if (game_select == 3) {
ZetOpen(2);
ZetReset();
@ -1259,7 +1257,7 @@ static INT32 DrvDoReset()
uballoon_bankswitch(z80bankdata[0]);
ZetClose();
}
if (game_select == 1) {
ZetOpen(1);
bssoccer_bankswitch_w(DrvZ80ROM1, 0, z80bankdata[0]);
@ -1401,7 +1399,7 @@ static INT32 DrvLoadRoms()
gfx1_len += ri.nLen;
continue;
}
}
}
nGfxROM0Len = gfx0_len >> 5;
@ -1412,7 +1410,7 @@ static INT32 DrvLoadRoms()
return 0;
}
void bestbest_ay8910_write_a(UINT32,UINT32)
static void bestbest_ay8910_write_a(UINT32,UINT32)
{
}
@ -1430,16 +1428,6 @@ static INT32 bestbestSynchroniseStream(INT32 nSoundRate)
return (INT64)ZetTotalCycles() * nSoundRate / 6000000;
}
static INT32 bestbestSyncDAC()
{
return (INT32)(float)(nBurnSoundLen * (ZetTotalCycles() / (6000000.0000 / (nBurnFPS / 100.0000))));
}
static INT32 bssoccerSyncDAC()
{
return (INT32)(float)(nBurnSoundLen * (ZetTotalCycles() / (5000000.0000 / (nBurnFPS / 100.0000))));
}
static INT32 BestbestInit()
{
INT32 nLen;
@ -1475,19 +1463,15 @@ static INT32 BestbestInit()
ZetInit(0);
ZetOpen(0);
ZetMapArea(0x0000, 0xbfff, 0, DrvZ80ROM0);
ZetMapArea(0x0000, 0xbfff, 2, DrvZ80ROM0);
ZetMapArea(0xe000, 0xe7ff, 0, DrvZ80RAM0);
ZetMapArea(0xe000, 0xe7ff, 1, DrvZ80RAM0);
ZetMapArea(0xe000, 0xe7ff, 2, DrvZ80RAM0);
ZetMapMemory(DrvZ80ROM0, 0x0000, 0xbfff, MAP_ROM);
ZetMapMemory(DrvZ80RAM0, 0xe000, 0xe7ff, MAP_RAM);
ZetSetReadHandler(bestbest_sound0_read);
ZetSetWriteHandler(bestbest_sound0_write);
ZetClose();
ZetInit(1);
ZetOpen(1);
ZetMapArea(0x0000, 0xffff, 0, DrvZ80ROM1);
ZetMapArea(0x0000, 0xffff, 2, DrvZ80ROM1);
ZetMapMemory(DrvZ80ROM1, 0x0000, 0xffff, MAP_ROM);
ZetSetInHandler(bestbest_sound1_in);
ZetSetOutHandler(bestbest_sound1_out);
ZetClose();
@ -1495,17 +1479,17 @@ static INT32 BestbestInit()
BurnYM3526Init(3000000, &bestbestFMIRQHandler, &bestbestSynchroniseStream, 0);
BurnTimerAttachYM3526(&ZetConfig, 6000000);
BurnYM3526SetRoute(BURN_SND_YM3526_ROUTE, 1.00, BURN_SND_ROUTE_BOTH);
AY8910Init(0, 1500000, 0);
AY8910SetPorts(0, NULL, NULL, bestbest_ay8910_write_a, NULL);
AY8910SetRoute(0, BURN_SND_AY8910_ROUTE_1, 1.00, BURN_SND_ROUTE_LEFT);
AY8910SetRoute(0, BURN_SND_AY8910_ROUTE_2, 1.00, BURN_SND_ROUTE_RIGHT);
AY8910SetRoute(0, BURN_SND_AY8910_ROUTE_3, 0.00, BURN_SND_ROUTE_BOTH); // suppressed?
DACInit(0, 0, 1, bestbestSyncDAC);
DACInit(1, 0, 1, bestbestSyncDAC);
DACInit(2, 0, 1, bestbestSyncDAC);
DACInit(3, 0, 1, bestbestSyncDAC);
DACInit(0, 0, 1, ZetTotalCycles, 6000000);
DACInit(1, 0, 1, ZetTotalCycles, 6000000);
DACInit(2, 0, 1, ZetTotalCycles, 6000000);
DACInit(3, 0, 1, ZetTotalCycles, 6000000);
DACSetRoute(0, 0.40, BURN_SND_ROUTE_LEFT);
DACSetRoute(1, 0.40, BURN_SND_ROUTE_RIGHT);
DACSetRoute(2, 0.40, BURN_SND_ROUTE_LEFT);
@ -1547,21 +1531,15 @@ static INT32 SunaqInit()
ZetInit(0);
ZetOpen(0);
ZetMapArea(0x0000, 0xefff, 0, DrvZ80ROM0);
ZetMapArea(0x0000, 0xefff, 2, DrvZ80ROM0);
ZetMapArea(0xf000, 0xf7ff, 0, DrvZ80RAM0);
ZetMapArea(0xf000, 0xf7ff, 1, DrvZ80RAM0);
ZetMapArea(0xf000, 0xf7ff, 2, DrvZ80RAM0);
ZetMapMemory(DrvZ80ROM0, 0x0000, 0xefff, MAP_ROM);
ZetMapMemory(DrvZ80RAM0, 0xf000, 0xf7ff, MAP_RAM);
ZetSetWriteHandler(sunaq_sound0_write);
ZetSetReadHandler(bssoccer_sound0_read);
ZetClose();
ZetInit(1);
ZetOpen(1);
ZetMapArea(0x0000, 0x0fff, 0, DrvZ80ROM1);
ZetMapArea(0x0000, 0x0fff, 2, DrvZ80ROM1);
ZetMapArea(0x1000, 0xffff, 0, DrvZ80ROM1 + 0x1000);
ZetMapArea(0x1000, 0xffff, 2, DrvZ80ROM1 + 0x1000);
ZetMapMemory(DrvZ80ROM1, 0x0000, 0xffff, MAP_ROM);
ZetSetInHandler(bssoccer_sound1_in);
ZetSetOutHandler(bssoccer_sound1_out);
ZetClose();
@ -1570,8 +1548,8 @@ static INT32 SunaqInit()
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_1, 0.50, BURN_SND_ROUTE_LEFT);
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_2, 0.50, BURN_SND_ROUTE_RIGHT);
DACInit(0, 0, 2, bestbestSyncDAC);
DACInit(1, 0, 2, bestbestSyncDAC);
DACInit(0, 0, 2, ZetTotalCycles, 6000000);
DACInit(1, 0, 2, ZetTotalCycles, 6000000);
DACSetRoute(0, 0.50, BURN_SND_ROUTE_LEFT);
DACSetRoute(1, 0.50, BURN_SND_ROUTE_RIGHT);
@ -1613,21 +1591,15 @@ static INT32 UballoonInit()
ZetInit(0);
ZetOpen(0);
ZetMapArea(0x0000, 0xefff, 0, DrvZ80ROM0);
ZetMapArea(0x0000, 0xefff, 2, DrvZ80ROM0);
ZetMapArea(0xf000, 0xf7ff, 0, DrvZ80RAM0);
ZetMapArea(0xf000, 0xf7ff, 1, DrvZ80RAM0);
ZetMapArea(0xf000, 0xf7ff, 2, DrvZ80RAM0);
ZetMapMemory(DrvZ80ROM0, 0x0000, 0xefff, MAP_ROM);
ZetMapMemory(DrvZ80RAM0, 0xf000, 0xf7ff, MAP_RAM);
ZetSetWriteHandler(sunaq_sound0_write);
ZetSetReadHandler(bssoccer_sound0_read);
ZetClose();
ZetInit(1);
ZetOpen(1);
ZetMapArea(0x0000, 0x03ff, 0, DrvZ80ROM1);
ZetMapArea(0x0000, 0x03ff, 2, DrvZ80ROM1);
ZetMapArea(0x0400, 0xffff, 0, DrvZ80ROM1 + 0x400);
ZetMapArea(0x0400, 0xffff, 2, DrvZ80ROM1 + 0x400);
ZetMapMemory(DrvZ80ROM1, 0x0000, 0xffff, MAP_ROM);
ZetSetInHandler(uballoon_sound1_in);
ZetSetOutHandler(uballoon_sound1_out);
ZetClose();
@ -1636,8 +1608,8 @@ static INT32 UballoonInit()
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_1, 0.50, BURN_SND_ROUTE_LEFT);
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_2, 0.50, BURN_SND_ROUTE_RIGHT);
DACInit(0, 0, 1, bssoccerSyncDAC);
DACInit(1, 0, 1, bssoccerSyncDAC);
DACInit(0, 0, 1, ZetTotalCycles, 5333333);
DACInit(1, 0, 1, ZetTotalCycles, 5333333);
DACSetRoute(0, 0.50, BURN_SND_ROUTE_LEFT);
DACSetRoute(1, 0.50, BURN_SND_ROUTE_RIGHT);
@ -1677,31 +1649,22 @@ static INT32 BssoccerInit()
ZetInit(0);
ZetOpen(0);
ZetMapArea(0x0000, 0x7fff, 0, DrvZ80ROM0);
ZetMapArea(0x0000, 0x7fff, 2, DrvZ80ROM0);
ZetMapArea(0xf000, 0xf7ff, 0, DrvZ80RAM0);
ZetMapArea(0xf000, 0xf7ff, 1, DrvZ80RAM0);
ZetMapArea(0xf000, 0xf7ff, 2, DrvZ80RAM0);
ZetMapMemory(DrvZ80ROM0, 0x0000, 0x7fff, MAP_ROM);
ZetMapMemory(DrvZ80RAM0, 0xf000, 0xf7ff, MAP_RAM);
ZetSetWriteHandler(bssoccer_sound0_write);
ZetSetReadHandler(bssoccer_sound0_read);
ZetClose();
ZetInit(1);
ZetOpen(1);
ZetMapArea(0x0000, 0x0fff, 0, DrvZ80ROM1);
ZetMapArea(0x0000, 0x0fff, 2, DrvZ80ROM1);
ZetMapArea(0x1000, 0xffff, 0, DrvZ80ROM1 + 0x1000);
ZetMapArea(0x1000, 0xffff, 2, DrvZ80ROM1 + 0x1000);
ZetSetInHandler(bssoccer_sound1_in);
ZetMapMemory(DrvZ80ROM1, 0x0000, 0xffff, MAP_ROM);
ZetSetInHandler(bssoccer_sound1_in);
ZetSetOutHandler(bssoccer_sound1_out);
ZetClose();
ZetInit(2);
ZetOpen(2);
ZetMapArea(0x0000, 0x0fff, 0, DrvZ80ROM2);
ZetMapArea(0x0000, 0x0fff, 2, DrvZ80ROM2);
ZetMapArea(0x1000, 0xffff, 0, DrvZ80ROM2 + 0x1000);
ZetMapArea(0x1000, 0xffff, 2, DrvZ80ROM2 + 0x1000);
ZetMapMemory(DrvZ80ROM2, 0x0000, 0xffff, MAP_ROM);
ZetSetInHandler(bssoccer_sound2_in);
ZetSetOutHandler(bssoccer_sound2_out);
ZetClose();
@ -1710,12 +1673,12 @@ static INT32 BssoccerInit()
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_1, 0.20, BURN_SND_ROUTE_LEFT);
BurnYM2151SetRoute(BURN_SND_YM2151_YM2151_ROUTE_2, 0.20, BURN_SND_ROUTE_RIGHT);
DACInit(0, 0, 1, bssoccerSyncDAC);
DACInit(1, 0, 1, bssoccerSyncDAC);
DACInit(2, 0, 1, bssoccerSyncDAC);
DACInit(3, 0, 1, bssoccerSyncDAC);
DACSetRoute(0, 0.40, BURN_SND_ROUTE_LEFT);
DACSetRoute(1, 0.40, BURN_SND_ROUTE_RIGHT);
DACInit(0, 0, 1, ZetTotalCycles, 5333333);
DACInit(1, 0, 1, ZetTotalCycles, 5333333);
DACInit(2, 0, 1, ZetTotalCycles, 5333333);
DACInit(3, 0, 1, ZetTotalCycles, 5333333);
DACSetRoute(0, 0.40, BURN_SND_ROUTE_BOTH);
DACSetRoute(1, 0.40, BURN_SND_ROUTE_BOTH);
DACSetRoute(2, 0.40, BURN_SND_ROUTE_LEFT);
DACSetRoute(3, 0.40, BURN_SND_ROUTE_RIGHT);
@ -1836,7 +1799,7 @@ static void draw_sprites(UINT16 *sprites, UINT8 *gfx_base, INT32 max_tile)
tile_x += tile_xinc;
if (sy < -15 || sy > (nScreenHeight - 1) || sx < -15 || sx > (nScreenWidth - 1)) {
continue;
continue;
}
if (tile_flipy) {
@ -1870,9 +1833,7 @@ static INT32 DrvDraw()
}
}
for (INT32 i = 0; i < nScreenWidth * nScreenHeight; i++) {
pTransDraw[i] = 0xff;
}
BurnTransferClear(0xff);
draw_sprites((UINT16*)DrvSprRAM0, DrvGfxROM0, nGfxROM0Len);
if (!game_select) {
@ -1949,7 +1910,7 @@ static INT32 BestbestFrame()
SekNewFrame();
ZetNewFrame();
SekOpen(0);
for (INT32 i = 0; i < nInterleave; i++) {
@ -1960,22 +1921,22 @@ static INT32 BestbestFrame()
ZetOpen(0);
BurnTimerUpdateYM3526(i * (nCyclesTotal[1] / nInterleave));
ZetClose();
ZetOpen(1);
ZetRun(nCyclesTotal[2] / nInterleave);
ZetClose();
if (pBurnSoundOut) {
INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pSoundBuffer + (nSoundBufferPos << 1);
AY8910Render(pSoundBuf, nSegmentLength);
nSoundBufferPos += nSegmentLength;
}
}
SekClose();
if (pBurnSoundOut) {
INT32 nSegmentLength = nBurnSoundLen - nSoundBufferPos;
INT16* pSoundBuf = pSoundBuffer + (nSoundBufferPos << 1);
@ -1984,7 +1945,7 @@ static INT32 BestbestFrame()
AY8910Render(pSoundBuf, nSegmentLength);
}
}
ZetOpen(0);
BurnTimerEndFrameYM3526(nCyclesTotal[1]);
if (pBurnSoundOut) {
@ -2019,10 +1980,10 @@ static INT32 SunaqFrame()
nCyclesTotal[0] = 6000000 / 60;
nCyclesTotal[1] = 3579500 / 60;
nCyclesTotal[2] = 6000000 / 60;
SekNewFrame();
ZetNewFrame();
SekOpen(0);
for (INT32 i = 0; i < nInterleave; i++)
@ -2035,7 +1996,7 @@ static INT32 SunaqFrame()
ZetRun(nCyclesTotal[j+1] / nInterleave);
ZetClose();
}
if (pBurnSoundOut) {
INT32 nSegmentLength = nBurnSoundLen / nInterleave;
INT16* pSoundBuf = pBurnSoundOut + (nSoundBufferPos << 1);
@ -2052,7 +2013,7 @@ static INT32 SunaqFrame()
if (nSegmentLength) {
BurnYM2151Render(pSoundBuf, nSegmentLength);
}
DACUpdate(pBurnSoundOut, nBurnSoundLen);
}
@ -2070,6 +2031,7 @@ static INT32 UballoonFrame()
INT32 nInterleave = 50;
INT32 nSoundBufferPos = 0;
INT32 nCyclesTotal[3];
INT32 nCyclesDone[3] = { 0, 0, 0 };
if (DrvReset) {
DrvDoReset();
@ -2079,8 +2041,8 @@ static INT32 UballoonFrame()
nCyclesTotal[0] = 8000000 / 60;
nCyclesTotal[1] = 3579500 / 60;
nCyclesTotal[2] = 5000000 / 60;
nCyclesTotal[2] = 5333333 / 60;
SekNewFrame();
ZetNewFrame();
@ -2091,11 +2053,13 @@ static INT32 UballoonFrame()
SekRun(nCyclesTotal[0] / nInterleave);
if (i == (nInterleave )-1) SekSetIRQLine(1, CPU_IRQSTATUS_AUTO);
for (INT32 j = 0; j < 2; j++) {
ZetOpen(j);
ZetRun(nCyclesTotal[j+1] / nInterleave);
ZetClose();
}
ZetOpen(0);
nCyclesDone[1] += ZetRun(((i + 1) * nCyclesTotal[1] / nInterleave) - nCyclesDone[1]);
ZetClose();
ZetOpen(1);
nCyclesDone[2] += ZetRun(((i + 1) * nCyclesTotal[2] / nInterleave) - nCyclesDone[2]);
ZetClose();
if (pBurnSoundOut) {
INT32 nSegmentLength = nBurnSoundLen / nInterleave;
@ -2114,8 +2078,10 @@ static INT32 UballoonFrame()
if (nSegmentLength) {
BurnYM2151Render(pSoundBuf, nSegmentLength);
}
ZetOpen(1);
DACUpdate(pBurnSoundOut, nBurnSoundLen);
ZetClose();
}
SekClose();
@ -2133,6 +2099,7 @@ static INT32 BssoccerFrame()
INT32 nInterleave = 50;
INT32 nSoundBufferPos = 0;
INT32 nCyclesTotal[4];
INT32 nCyclesDone[4] = { 0, 0, 0, 0 };
if (DrvReset) {
DrvDoReset();
@ -2142,9 +2109,9 @@ static INT32 BssoccerFrame()
nCyclesTotal[0] = 8000000 / 60;
nCyclesTotal[1] = 3579500 / 60;
nCyclesTotal[2] = 5000000 / 60;
nCyclesTotal[3] = 5000000 / 60;
nCyclesTotal[2] = 5333333 / 60;
nCyclesTotal[3] = 5333333 / 60;
SekNewFrame();
ZetNewFrame();
@ -2156,11 +2123,15 @@ static INT32 BssoccerFrame()
if (i == (nInterleave / 2)-1) SekSetIRQLine(2, CPU_IRQSTATUS_AUTO);
if (i == (nInterleave )-1) SekSetIRQLine(1, CPU_IRQSTATUS_AUTO);
for (INT32 j = 0; j < 3; j++) {
ZetOpen(j);
ZetRun(nCyclesTotal[j+1] / nInterleave);
ZetClose();
}
ZetOpen(0);
nCyclesDone[1] += ZetRun(((i + 1) * nCyclesTotal[1] / nInterleave) - nCyclesDone[1]);
ZetClose();
ZetOpen(1);
nCyclesDone[2] += ZetRun(((i + 1) * nCyclesTotal[2] / nInterleave) - nCyclesDone[2]);
ZetClose();
ZetOpen(2);
nCyclesDone[3] += ZetRun(((i + 1) * nCyclesTotal[3] / nInterleave) - nCyclesDone[3]);
ZetClose();
if (pBurnSoundOut) {
INT32 nSegmentLength = nBurnSoundLen / nInterleave;
@ -2178,8 +2149,10 @@ static INT32 BssoccerFrame()
if (nSegmentLength) {
BurnYM2151Render(pSoundBuf, nSegmentLength);
}
ZetOpen(1);
DACUpdate(pBurnSoundOut, nBurnSoundLen);
ZetClose();
}
SekClose();
@ -2192,7 +2165,7 @@ static INT32 BssoccerFrame()
}
static INT32 DrvScan(INT32 nAction,INT32 *pnMin)
static INT32 DrvScan(INT32 nAction, INT32 *pnMin)
{
struct BurnArea ba;
@ -2200,7 +2173,7 @@ static INT32 DrvScan(INT32 nAction,INT32 *pnMin)
*pnMin = 0x029692;
}
if (nAction & ACB_VOLATILE) {
if (nAction & ACB_VOLATILE) {
memset(&ba, 0, sizeof(ba));
ba.Data = AllRam;
@ -2261,7 +2234,7 @@ static struct BurnRomInfo bestbestRomDesc[] = {
{ "2.bin", 0x20000, 0x42843dec, 1 | BRF_ESS | BRF_PRG }, // 1
{ "3.bin", 0x80000, 0xe2bb8f26, 1 | BRF_ESS | BRF_PRG }, // 2
{ "1.bin", 0x80000, 0xd365e20a, 1 | BRF_ESS | BRF_PRG }, // 3
{ "5.bin", 0x10000, 0xbb9265e6, 2 | BRF_ESS | BRF_PRG }, // 4 - Z80 #0 Code
{ "6.bin", 0x10000, 0xdd445f6b, 3 | BRF_ESS | BRF_PRG }, // 5 - Z80 #1 Code
@ -2308,7 +2281,7 @@ static struct BurnRomInfo sunaqRomDesc[] = {
{ "audio2.bin", 0x80000, 0xcac85ba9, 3 | BRF_ESS | BRF_PRG }, // 3 - Z80 #1 Code
{ "gfx1.bin", 0x80000, 0x0bde5acf, 5 | BRF_GRA }, // 4 - Sprites
{ "gfx1.bin", 0x80000, 0x0bde5acf, 5 | BRF_GRA }, // 4 - Sprites
{ "gfx2.bin", 0x80000, 0x24b74826, 5 | BRF_GRA }, // 5
};
@ -2383,7 +2356,7 @@ STD_ROM_FN(bssoccer)
struct BurnDriver BurnDrvBssoccer = {
"bssoccer", NULL, NULL, NULL, "1996",
"Back Street Soccer\0", "graphics issues?", "SunA", "Miscellaneous",
"Back Street Soccer\0", NULL, "SunA", "Miscellaneous",
NULL, NULL, NULL, NULL,
BDF_GAME_WORKING, 4, HARDWARE_MISC_POST90S, GBF_SPORTSFOOTBALL, 0,
NULL, bssoccerRomInfo, bssoccerRomName, NULL, NULL, BssoccerInputInfo, bssoccerDIPInfo,

File diff suppressed because it is too large Load Diff

View File

@ -982,14 +982,14 @@ void GenericTilemapDraw(INT32 which, UINT16 *Bitmap, INT32 priority)
INT32 scrollx = ((cur_map->scrollx - cur_map->xoffset) / cur_map->twidth) * cur_map->twidth;
// start drawing at tile-border, and let RenderCustomTile..Clip() take care of the sub-tile clipping.
miny -= (miny % cur_map->theight);
minx -= (minx % cur_map->twidth);
INT32 starty = miny - (miny % cur_map->theight);
INT32 startx = minx - (minx % cur_map->twidth);
for (INT32 y = miny; y < (INT32)(maxy + cur_map->theight); y += cur_map->theight)
for (INT32 y = starty; y < (INT32)(maxy + cur_map->theight); y += cur_map->theight)
{
INT32 syy = (y + scrolly) % (cur_map->theight * cur_map->mheight);
for (INT32 x = minx; x < (INT32)(maxx + cur_map->twidth); x += cur_map->twidth)
for (INT32 x = startx; x < (INT32)(maxx + cur_map->twidth); x += cur_map->twidth)
{
INT32 sxx = (x + scrollx) % (cur_map->twidth * cur_map->mwidth);