diff options
author | Angelo Salese <angelosa@users.noreply.github.com> | 2011-11-06 23:03:46 +0000 |
---|---|---|
committer | Angelo Salese <angelosa@users.noreply.github.com> | 2011-11-06 23:03:46 +0000 |
commit | 004692732c8fd613b8975c2869860b9b6b0e2ebe (patch) | |
tree | a5e18e7b36134c92830cc5831180c156fc7d2ea5 | |
parent | b384d01bc376da24aed0d4fbf7fb07f8058d6ccf (diff) |
Added a preliminary ES5510 DSP DRAM input/output latches support in Taito F3 driver, fixes sound in Ring Rage and Riding Fight [Angelo Salese]
-rw-r--r-- | src/mame/audio/taito_en.c | 50 | ||||
-rw-r--r-- | src/mame/drivers/taito_f3.c | 19 |
2 files changed, 51 insertions, 18 deletions
diff --git a/src/mame/audio/taito_en.c b/src/mame/audio/taito_en.c index 1a4163e9d0c..ef2d4792879 100644 --- a/src/mame/audio/taito_en.c +++ b/src/mame/audio/taito_en.c @@ -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]); diff --git a/src/mame/drivers/taito_f3.c b/src/mame/drivers/taito_f3.c index a3cc14b03ba..d78ee18c377 100644 --- a/src/mame/drivers/taito_f3.c +++ b/src/mame/drivers/taito_f3.c @@ -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 ) |