"SLPM86009",
};
+static const char * const dualshock_timing1024_hack_db[] =
+{
+ /* Judge Dredd - could also be poor cdrom+mdec+dma timing */
+ "SLUS00630", "SLES00755",
+};
+
static const char * const dualshock_init_analog_hack_db[] =
{
/* Formula 1 Championship Edition */
HACK_ENTRY(gpu_slow_list_walking, gpu_slow_llist_db),
HACK_ENTRY(gpu_busy, gpu_busy_hack_db),
HACK_ENTRY(gpu_centering, gpu_centering_hack_db),
+ HACK_ENTRY(gpu_timing1024, dualshock_timing1024_hack_db),
HACK_ENTRY(dualshock_init_analog, dualshock_init_analog_hack_db),
};
#endif
/* Discworld Noir - audio skips if CPU runs too fast */
{ 222, { "SLES01549", "SLES02063", "SLES02064" } },
- /* Judge Dredd - could also be poor MDEC timing */
- { 128, { "SLUS00630", "SLES00755" } },
/* Digimon World */
{ 153, { "SLUS01032", "SLES02914" } },
/* Syphon Filter - reportedly hangs under unknown conditions */
madr_next = 0xffffff;
do_walking = Config.GpuListWalking;
- if (do_walking < 0)
+ if (do_walking < 0 || Config.hacks.gpu_timing1024)
do_walking = Config.hacks.gpu_slow_list_walking;
madr_next_p = do_walking ? &madr_next : NULL;
HW_DMA2_MADR = SWAPu32(madr_next);
- // Tekken 3 = use 1.0 only (not 1.5x)
+ // a hack for Judge Dredd which is annoyingly sensitive to timing
+ if (Config.hacks.gpu_timing1024)
+ size = 1024;
- // Einhander = parse linked list in pieces (todo)
- // Rebel Assault 2 = parse linked list in pieces (todo)
psxRegs.gpuIdleAfter = psxRegs.cycle + size + 16;
set_event(PSXINT_GPUDMA, size);
return;