@@ -82,6 +82,18 @@ static const char * const fractional_Framerate_hack_db[] =
82
82
"SCUS94425" , "SCES02104" ,
83
83
};
84
84
85
+ static const char * const f1_hack_db [] =
86
+ {
87
+ /* Formula One Arcade */
88
+ "SCES03886" ,
89
+ /* Formula One '99 */
90
+ "SLUS00870" , "SCPS10101" , "SCES01979" , "SLES01979" ,
91
+ /* Formula One 2000 */
92
+ "SLUS01134" , "SCES02777" , "SCES02778" , "SCES02779" ,
93
+ /* Formula One 2001 */
94
+ "SCES03404" , "SCES03423" , "SCES03424" , "SCES03524" ,
95
+ };
96
+
85
97
#define HACK_ENTRY (var , list ) \
86
98
{ #var, &Config.hacks.var, list, ARRAY_SIZE(list) }
87
99
@@ -100,6 +112,7 @@ hack_db[] =
100
112
HACK_ENTRY (gpu_timing1024 , dualshock_timing1024_hack_db ),
101
113
HACK_ENTRY (dualshock_init_analog , dualshock_init_analog_hack_db ),
102
114
HACK_ENTRY (fractional_Framerate , fractional_Framerate_hack_db ),
115
+ HACK_ENTRY (f1 , f1_hack_db ),
103
116
};
104
117
105
118
static const struct
@@ -142,35 +155,6 @@ cycle_multiplier_overrides[] =
142
155
{ 153 , { "SLUS00943" } },
143
156
};
144
157
145
- static const struct
146
- {
147
- const char * const id ;
148
- u32 hacks ;
149
- }
150
- lightrec_hacks_db [] =
151
- {
152
- /* Formula One Arcade */
153
- { "SCES03886" , LIGHTREC_HACK_INV_DMA_ONLY },
154
-
155
- /* Formula One '99 */
156
- { "SLUS00870" , LIGHTREC_HACK_INV_DMA_ONLY },
157
- { "SCPS10101" , LIGHTREC_HACK_INV_DMA_ONLY },
158
- { "SCES01979" , LIGHTREC_HACK_INV_DMA_ONLY },
159
- { "SLES01979" , LIGHTREC_HACK_INV_DMA_ONLY },
160
-
161
- /* Formula One 2000 */
162
- { "SLUS01134" , LIGHTREC_HACK_INV_DMA_ONLY },
163
- { "SCES02777" , LIGHTREC_HACK_INV_DMA_ONLY },
164
- { "SCES02778" , LIGHTREC_HACK_INV_DMA_ONLY },
165
- { "SCES02779" , LIGHTREC_HACK_INV_DMA_ONLY },
166
-
167
- /* Formula One 2001 */
168
- { "SCES03404" , LIGHTREC_HACK_INV_DMA_ONLY },
169
- { "SCES03423" , LIGHTREC_HACK_INV_DMA_ONLY },
170
- { "SCES03424" , LIGHTREC_HACK_INV_DMA_ONLY },
171
- { "SCES03524" , LIGHTREC_HACK_INV_DMA_ONLY },
172
- };
173
-
174
158
/* Function for automatic patching according to GameID. */
175
159
void Apply_Hacks_Cdrom (void )
176
160
{
@@ -211,6 +195,8 @@ void Apply_Hacks_Cdrom(void)
211
195
212
196
/* Dynarec game-specific hacks */
213
197
ndrc_g .hacks_pergame = 0 ;
198
+ if (Config .hacks .f1 )
199
+ ndrc_g .hacks_pergame |= NDHACK_THREAD_FORCE ; // force without *_ON -> off
214
200
Config .cycle_multiplier_override = 0 ;
215
201
216
202
for (i = 0 ; i < ARRAY_SIZE (cycle_multiplier_overrides ); i ++ )
@@ -229,15 +215,12 @@ void Apply_Hacks_Cdrom(void)
229
215
}
230
216
}
231
217
232
- lightrec_hacks = 0 ;
233
-
234
- for (i = 0 ; drc_is_lightrec () && i < ARRAY_SIZE (lightrec_hacks_db ); i ++ ) {
235
- if (strcmp (CdromId , lightrec_hacks_db [i ].id ) == 0 )
236
- {
237
- lightrec_hacks = lightrec_hacks_db [i ].hacks ;
218
+ if (drc_is_lightrec ()) {
219
+ lightrec_hacks = 0 ;
220
+ if (Config .hacks .f1 )
221
+ lightrec_hacks |= LIGHTREC_HACK_INV_DMA_ONLY ;
222
+ if (lightrec_hacks )
238
223
SysPrintf ("using lightrec_hacks: 0x%x\n" , lightrec_hacks );
239
- break ;
240
- }
241
224
}
242
225
}
243
226
0 commit comments