Haze: DoDonPachi Dai Jou Ou protection fixes, game seems playable (no credit wanted)

This commit is contained in:
Angelo Salese 2010-12-10 15:48:47 +00:00
parent 96b9776773
commit b35e5f6eb1

View File

@ -5454,6 +5454,8 @@ static DRIVER_INIT( kovqhsgs )
*/ */
static UINT16 value0, value1, valuekey, ddp3lastcommand; static UINT16 value0, value1, valuekey, ddp3lastcommand;
static UINT32 valueresponse; static UINT32 valueresponse;
int ddp3internal_slot = 0;
UINT32 ddp3slots[0xff];
static WRITE16_HANDLER( ddp3_asic_w ) static WRITE16_HANDLER( ddp3_asic_w )
{ {
@ -5500,13 +5502,32 @@ static WRITE16_HANDLER( ddp3_asic_w )
break; break;
case 0x40: case 0x40:
case 0x67:
case 0x8e: // what is it?
case 0xe5:
printf("%06x command %02x | %04x\n", cpu_get_pc(space->cpu), ddp3lastcommand, value0); printf("%06x command %02x | %04x\n", cpu_get_pc(space->cpu), ddp3lastcommand, value0);
valueresponse = 0x880000; valueresponse = 0x880000;
break; break;
case 0x67:
printf("%06x command %02x | %04x\n", cpu_get_pc(space->cpu), ddp3lastcommand, value0);
valueresponse = 0x880000;
ddp3internal_slot = (value0 & 0xff00)>>8;
ddp3slots[ddp3internal_slot] = (value0 & 0x00ff) << 16;
break;
case 0xe5:
printf("%06x command %02x | %04x\n", cpu_get_pc(space->cpu), ddp3lastcommand, value0);
valueresponse = 0x880000;
ddp3slots[ddp3internal_slot] |= (value0 & 0xffff);
break;
case 0x8e:
printf("%06x command %02x | %04x\n", cpu_get_pc(space->cpu), ddp3lastcommand, value0);
valueresponse = ddp3slots[value0&0xff];
break;
case 0x99: // reset? case 0x99: // reset?
valuekey = 0x100; valuekey = 0x100;
valueresponse = 0x00880000; valueresponse = 0x00880000;
@ -5551,7 +5572,7 @@ static READ16_HANDLER( ddp3_ram_mirror_r )
// HACK! // HACK!
// this should be a mirror of main ram, at least according to the standard PGM map. // this should be a mirror of main ram, at least according to the standard PGM map.
// returning 0x0000 for all values read from here allows the games to run for a bit longer tho // returning 0x0000 for all values read from here allows the games to run for a bit longer tho
printf("%06x ddp3_ram_mirror_r would return %04x returning 0x0000 instead\n", cpu_get_pc(space->cpu), pgm_mainram[offset]); //printf("%06x ddp3_ram_mirror_r would return %04x returning 0x0000 instead\n", cpu_get_pc(space->cpu), pgm_mainram[offset]);
return 0x0000; return 0x0000;
//return pgm_mainram[offset]; //return pgm_mainram[offset];
} }