mirror of
https://github.com/holub/mame
synced 2025-05-28 08:33:05 +03:00
Added a preliminary ES5510 DSP DRAM input/output latches support in Taito F3 driver, fixes sound in Ring Rage and Riding Fight [Angelo Salese]
This commit is contained in:
parent
b384d01bc3
commit
004692732c
@ -3,11 +3,16 @@
|
||||
#include "taito_en.h"
|
||||
|
||||
static int counter,vector_reg,imr_status;
|
||||
static UINT16 es5510_dsp_ram[0x200];
|
||||
static UINT16 es5510_dsp_ram[0x200];
|
||||
static UINT32 es5510_gpr[0xc0];
|
||||
static UINT32 es5510_dram[1<<24];
|
||||
static UINT32 es5510_dol_latch;
|
||||
static UINT32 es5510_dil_latch;
|
||||
static UINT32 es5510_dadr_latch;
|
||||
static UINT32 es5510_gpr_latch;
|
||||
static UINT8 es5510_ram_sel;
|
||||
static int timer_mode,m68681_imr;
|
||||
static UINT32 *f3_shared_ram;
|
||||
static UINT32 *f3_shared_ram;
|
||||
|
||||
//static int es_tmp=1;
|
||||
|
||||
@ -200,6 +205,13 @@ static READ16_HANDLER(es5510_dsp_r)
|
||||
|
||||
//if (offset<7 && es5510_dsp_ram[0]!=0xff) return space->machine().rand()%0xffff;
|
||||
|
||||
switch(offset)
|
||||
{
|
||||
case 0x09: return (es5510_dil_latch >> 16) & 0xff;
|
||||
case 0x0a: return (es5510_dil_latch >> 8) & 0xff;
|
||||
case 0x0b: return (es5510_dil_latch >> 0) & 0xff; //TODO: docs says that this always returns 0
|
||||
}
|
||||
|
||||
if (offset==0x12) return 0;
|
||||
|
||||
// if (offset>4)
|
||||
@ -218,10 +230,36 @@ static WRITE16_HANDLER(es5510_dsp_w)
|
||||
COMBINE_DATA(&es5510_dsp_ram[offset]);
|
||||
|
||||
switch (offset) {
|
||||
case 0x00: es5510_gpr_latch=(es5510_gpr_latch&0x00ffff)|((data&0xff)<<16);
|
||||
case 0x01: es5510_gpr_latch=(es5510_gpr_latch&0xff00ff)|((data&0xff)<< 8);
|
||||
case 0x02: es5510_gpr_latch=(es5510_gpr_latch&0xffff00)|((data&0xff)<< 0);
|
||||
case 0x03: break;
|
||||
case 0x00: es5510_gpr_latch=(es5510_gpr_latch&0x00ffff)|((data&0xff)<<16); break;
|
||||
case 0x01: es5510_gpr_latch=(es5510_gpr_latch&0xff00ff)|((data&0xff)<< 8); break;
|
||||
case 0x02: es5510_gpr_latch=(es5510_gpr_latch&0xffff00)|((data&0xff)<< 0); break;
|
||||
|
||||
/* 0x03 to 0x08 INSTR Register */
|
||||
/* 0x09 to 0x0b DIL Register (r/o) */
|
||||
|
||||
case 0x0c: es5510_dol_latch=(es5510_dol_latch&0x00ffff)|((data&0xff)<<16); break;
|
||||
case 0x0d: es5510_dol_latch=(es5510_dol_latch&0xff00ff)|((data&0xff)<< 8); break;
|
||||
case 0x0e: es5510_dol_latch=(es5510_dol_latch&0xffff00)|((data&0xff)<< 0); break; //TODO: docs says that this always returns 0xff
|
||||
|
||||
case 0x0f:
|
||||
es5510_dadr_latch=(es5510_dadr_latch&0x00ffff)|((data&0xff)<<16);
|
||||
if(es5510_ram_sel)
|
||||
es5510_dil_latch = es5510_dram[es5510_dadr_latch];
|
||||
else
|
||||
es5510_dram[es5510_dadr_latch] = es5510_dol_latch;
|
||||
break;
|
||||
|
||||
case 0x10: es5510_dadr_latch=(es5510_dadr_latch&0xff00ff)|((data&0xff)<< 8); break;
|
||||
case 0x11: es5510_dadr_latch=(es5510_dadr_latch&0xffff00)|((data&0xff)<< 0); break;
|
||||
|
||||
/* 0x12 Host Control */
|
||||
|
||||
case 0x14: es5510_ram_sel = data & 0x80; /* bit 6 is i/o select, everything else is undefined */break;
|
||||
|
||||
/* 0x16 Program Counter (test purpose, r/o?) */
|
||||
/* 0x17 Internal Refresh counter (test purpose) */
|
||||
/* 0x18 Host Serial Control */
|
||||
/* 0x1f Halt enable (w) / Frame Counter (r) */
|
||||
|
||||
case 0x80: /* Read select - GPR + INSTR */
|
||||
// logerror("ES5510: Read GPR/INSTR %06x (%06x)\n",data,es5510_gpr[data]);
|
||||
|
@ -11,13 +11,8 @@
|
||||
sprite sync fixes, sprite zoom fixes and others!
|
||||
|
||||
Other Issues:
|
||||
- Dsp isn't hooked up.
|
||||
- ES5510 DSP isn't hooked up.
|
||||
- Various hacks in video core that needs squashing;
|
||||
- Sound doesn't work in RidingF/RingRage?
|
||||
(for RingRage it's probably a timing / cpu sync bug, if you go into test mode
|
||||
for a while then exit you'll have sound, this doesn't work on RidingF)
|
||||
\- It does work in ringrage but you have to enter test mode first
|
||||
- Sound balance is not emulated (see arabianm test mode)
|
||||
- When playing space invaders dx in original mode, t.t. with overlay, the
|
||||
alpha blending effect is wrong (see Taito B version of game)
|
||||
- Bubble Symphony has an alpha transition effect that doesn't appear in Mame
|
||||
@ -4076,15 +4071,15 @@ static DRIVER_INIT( commandw )
|
||||
|
||||
/******************************************************************************/
|
||||
|
||||
GAME( 1992, ringrage, 0, f3_224a, f3, ringrage, ROT0, "Taito Corporation Japan", "Ring Rage (Ver 2.3O 1992/08/09)", GAME_IMPERFECT_SOUND )
|
||||
GAME( 1992, ringragej,ringrage, f3_224a, f3, ringrage, ROT0, "Taito Corporation", "Ring Rage (Ver 2.3J 1992/08/09)", GAME_IMPERFECT_SOUND )
|
||||
GAME( 1992, ringrageu,ringrage, f3_224a, f3, ringrage, ROT0, "Taito America Corporation", "Ring Rage (Ver 2.3A 1992/08/09)", GAME_IMPERFECT_SOUND )
|
||||
GAME( 1992, ringrage, 0, f3_224a, f3, ringrage, ROT0, "Taito Corporation Japan", "Ring Rage (Ver 2.3O 1992/08/09)", 0 )
|
||||
GAME( 1992, ringragej,ringrage, f3_224a, f3, ringrage, ROT0, "Taito Corporation", "Ring Rage (Ver 2.3J 1992/08/09)", 0 )
|
||||
GAME( 1992, ringrageu,ringrage, f3_224a, f3, ringrage, ROT0, "Taito America Corporation", "Ring Rage (Ver 2.3A 1992/08/09)", 0 )
|
||||
GAME( 1992, arabianm, 0, f3_224a, f3, arabianm, ROT0, "Taito Corporation Japan", "Arabian Magic (Ver 1.0O 1992/07/06)", 0 )
|
||||
GAME( 1992, arabianmj,arabianm, f3_224a, f3, arabianm, ROT0, "Taito Corporation", "Arabian Magic (Ver 1.0J 1992/07/06)", 0 )
|
||||
GAME( 1992, arabianmu,arabianm, f3_224a, f3, arabianm, ROT0, "Taito America Corporation", "Arabian Magic (Ver 1.0A 1992/07/06)", 0 )
|
||||
GAME( 1992, ridingf, 0, f3_224b, f3, ridingf, ROT0, "Taito Corporation Japan", "Riding Fight (Ver 1.0O)", GAME_NO_SOUND )
|
||||
GAME( 1992, ridingfj, ridingf, f3_224b, f3, ridingf, ROT0, "Taito Corporation", "Riding Fight (Ver 1.0J)", GAME_NO_SOUND )
|
||||
GAME( 1992, ridingfu, ridingf, f3_224b, f3, ridingf, ROT0, "Taito America Corporation", "Riding Fight (Ver 1.0A)", GAME_NO_SOUND )
|
||||
GAME( 1992, ridingf, 0, f3_224b, f3, ridingf, ROT0, "Taito Corporation Japan", "Riding Fight (Ver 1.0O)", 0 )
|
||||
GAME( 1992, ridingfj, ridingf, f3_224b, f3, ridingf, ROT0, "Taito Corporation", "Riding Fight (Ver 1.0J)", 0 )
|
||||
GAME( 1992, ridingfu, ridingf, f3_224b, f3, ridingf, ROT0, "Taito America Corporation", "Riding Fight (Ver 1.0A)", 0 )
|
||||
GAME( 1992, gseeker, 0, f3_224b_eeprom, f3, gseeker, ROT90, "Taito Corporation Japan", "Grid Seeker: Project Storm Hammer (Ver 1.3O)", 0 )
|
||||
GAME( 1992, gseekerj, gseeker, f3_224b_eeprom, f3, gseeker, ROT90, "Taito Corporation", "Grid Seeker: Project Storm Hammer (Ver 1.3J)", 0 )
|
||||
GAME( 1992, gseekeru, gseeker, f3_224b_eeprom, f3, gseeker, ROT90, "Taito America Corporation", "Grid Seeker: Project Storm Hammer (Ver 1.3A)", 0 )
|
||||
|
Loading…
Reference in New Issue
Block a user