@@ -32,6 +32,8 @@ static const char * const gpu_slow_llist_db[] =
3232 "SLES01712" , "SLPS01525" , "SLPS91138" , "SLPM87102" , "SLUS00823" ,
3333 /* Crash Bash */
3434 "SCES02834" , "SCUS94570" , "SCUS94616" , "SCUS94654" ,
35+ /* F1 2000 - aborting/resuming dma in menus */
36+ "SLUS01120" , "SLES02722" , "SLES02723" , "SLES02724" , "SLPS02758" , "SLPM80564" ,
3537 /* Final Fantasy IV */
3638 "SCES03840" , "SLPM86028" , "SLUS01360" ,
3739 /* Point Blank - calibration cursor */
@@ -54,12 +56,6 @@ static const char * const gpu_centering_hack_db[] =
5456 "SLPM86009" ,
5557};
5658
57- static const char * const dualshock_timing1024_hack_db [] =
58- {
59- /* Judge Dredd - could also be poor cdrom+mdec+dma timing */
60- "SLUS00630" , "SLES00755" ,
61- };
62-
6359static const char * const dualshock_init_analog_hack_db [] =
6460{
6561 /* Formula 1 Championship Edition */
@@ -109,7 +105,6 @@ hack_db[] =
109105 HACK_ENTRY (cdr_read_timing , cdr_read_hack_db ),
110106 HACK_ENTRY (gpu_slow_list_walking , gpu_slow_llist_db ),
111107 HACK_ENTRY (gpu_centering , gpu_centering_hack_db ),
112- HACK_ENTRY (gpu_timing1024 , dualshock_timing1024_hack_db ),
113108 HACK_ENTRY (dualshock_init_analog , dualshock_init_analog_hack_db ),
114109 HACK_ENTRY (fractional_Framerate , fractional_Framerate_hack_db ),
115110 HACK_ENTRY (f1 , f1_hack_db ),
@@ -157,6 +152,22 @@ cycle_multiplier_overrides[] =
157152 { 200 , { "SLUS01519" , "SCPS45260" , "SLPS01463" } },
158153};
159154
155+ static const struct
156+ {
157+ int cycles ;
158+ const char * const id [4 ];
159+ }
160+ gpu_timing_hack_db [] =
161+ {
162+ /* Judge Dredd - poor cdrom+mdec+dma+gpu timing */
163+ { 1024 , { "SLUS00630" , "SLES00755" } },
164+ /* F1 2000 - flooding the GPU in menus */
165+ { 300 * 1024 , { "SLUS01120" , "SLES02722" , "SLES02723" , "SLES02724" } },
166+ { 300 * 1024 , { "SLPS02758" , "SLPM80564" } },
167+ /* Soul Blade - same as above */
168+ { 512 * 1024 , { "SLUS00240" , "SCES00577" } },
169+ };
170+
160171static const char * const lightrec_hack_db [] =
161172{
162173 /* Tomb Raider (Rev 2) - boot menu clears over itself */
@@ -223,6 +234,22 @@ void Apply_Hacks_Cdrom(void)
223234 }
224235 }
225236
237+ Config .gpu_timing_override = 0 ;
238+ for (i = 0 ; i < ARRAY_SIZE (gpu_timing_hack_db ); i ++ )
239+ {
240+ const char * const * const ids = gpu_timing_hack_db [i ].id ;
241+ for (j = 0 ; j < ARRAY_SIZE (gpu_timing_hack_db [i ].id ); j ++ )
242+ if (ids [j ] && strcmp (ids [j ], CdromId ) == 0 )
243+ break ;
244+ if (j < ARRAY_SIZE (gpu_timing_hack_db [i ].id ))
245+ {
246+ Config .gpu_timing_override = gpu_timing_hack_db [i ].cycles ;
247+ SysPrintf ("using gpu_timing_override: %d\n" ,
248+ Config .gpu_timing_override );
249+ break ;
250+ }
251+ }
252+
226253 if (drc_is_lightrec ()) {
227254 lightrec_hacks = 0 ;
228255 if (Config .hacks .f1 )
0 commit comments