add a header fixup
[picodrive.git] / pico / carthw.cfg
1 # hardware (hw = ...):
2 #  svp      - Sega Virtua Processor
3 #  pico     - Sega Pico (not really cart hw, but convenient to support here)
4 #  prot     - siple copy protection devices in unlicensed cartridges (see prot. below)
5 #  prot_lk3 - Lion King 3 / Super King Kong 99 protection.
6 #
7 # cartridge properties (prop = ...):
8 #  no_sram     - don't emulate sram/EEPROM even if ROM headers tell it's there
9 #  no_eeprom   - save storage is not EEPROM, even if ROM headers tell it is
10 #  filled_sram - save storage needs to be initialized with FFh instead of 00h
11 #  force_6btn  - game only supports 6 button pad (32X X-men proto)
12 #  
13 # mappers (hw = ...):
14 #  ssf2_mapper      - used in Super Street Fighter2
15 #  x_in_1_mapper    - used in many *-in-1 pirate carts
16 #  realtec_mapper
17 #  radica_mapper    - similar to x_in_1_mapper
18 #  piersolar_mapper - used in Pier Solar
19 #
20 # save storage memory range (inclusive, overrides ROM header):
21 #  sram_range = <start, end>
22 #
23 # EEPROM:
24 #  eeprom_type = <1|2|3> - enable EEPROM, use type X (7bit, 2 addr words, 3 addr words).
25 #                          See EkeEke's gen_eeprom.pdf "mode" descriptions for 24Cxx EEPROMs.
26 #  eeprom_lines = <SCL,SDA_IN,SDA_OUT>
27 #                        - select data bus pins that are connected to EEPROM
28 #                          SCL, SDA_IN and SDA_OUT pins (0-15 for D0-D15).
29 # hw = prot:
30 #  prot_ro_value16 = <addr, mask, val> - return constant <val> on reads at location
31 #                                        (<addr> & <mask>), ignore writes.
32 #  prot_rw_value16 = <addr, mask, val> - same as above, but writeable
33
34 [Virtua Racing - SVP]
35 check_str = 0x150, "Virtua Racing"
36 check_str = 0x810, "OHMP"
37 hw = svp
38
39 [Virtua Racing - SVP]
40 check_str = 0x150, "VIRTUA RACING"
41 check_str = 0x810, "OHMP"
42 hw = svp
43
44 [Pico]
45 check_str = 0x100, "SEGA PICO"
46 hw = pico
47
48 [Pico]
49 check_str = 0x100, "IMA IKUNOUJYUKU"
50 hw = pico
51
52 # sram emulation triggers some protection for this one
53 [Puggsy]
54 check_str = 0x120, "PUGGSY"
55 prop = no_sram
56
57 # game has problems if it's save RAM is not initialized with FFh:
58 [Dino Dini's Soccer]
59 check_str = 0x150, "DINO DINI'S SOCCER"
60 prop = filled_sram
61
62 [Micro Machines 2 - Turbo Tournament]
63 check_str = 0x150, "MICRO MACHINES II"
64 prop = filled_sram
65
66 # bad headers
67 [HardBall III]
68 check_str = 0x150, "  HardBall III"
69 sram_range = 0x200000,0x20ffff
70
71 # X-Men proto
72 [X-Men (prototype)]
73 check_str = 0x150, "32X SAMPLE PROGRAM"
74 check_str = 0x32b74c, "Bishop Level"
75 prop = force_6btn
76
77 # The SSF2 mapper
78 [Mega Everdrive]
79 check_str = 0x100, "SEGA SSF"
80 hw = ssf2_mapper
81
82 [Super Street Fighter II - The New Challengers (U)]
83 check_str = 0x150, "SUPER STREET FIGHTER2 The New Challengers"
84 hw = ssf2_mapper
85 prop = no_sram
86
87 # The Pier Solar mapper, custom eeprom location
88 [Pier Solar and the Great Architects]
89 check_str = 0x150, "PIER"
90 check_str = 0x610, "Respect"
91 hw = piersolar_mapper
92
93 # detect *_in_1 based on first game and if it's larger than it should be,
94 # as some dumps look like to be incomplete.
95 # This will also pick overdumps, but those should still work with the mapper applied.
96 [12-in-1 (Unl)]
97 check_str = 0x120, "FLICKY"
98 check_size_gt = 0x020000
99 hw = x_in_1_mapper
100
101 [4-in-1]
102 check_str = 0x150, "ROBOCOP 3"
103 check_size_gt = 0x080000
104 hw = x_in_1_mapper
105
106 [4-in-1 a1]
107 check_str = 0x150, "ALIEN 3"
108 check_size_gt = 0x080000
109 hw = x_in_1_mapper
110
111 [Super 15-in-1]
112 check_str = 0x150, " SHOVE IT!"
113 check_size_gt = 0x020000
114 hw = x_in_1_mapper
115
116 [Super 19-in-1]
117 check_str = 0x150, "MS PACMAN"
118 check_size_gt = 0x020000
119 hw = x_in_1_mapper
120
121 # radica
122 [radica_v1]
123 check_str = 0x150, "KID CHAMELEON"
124 check_size_gt = 0x100000
125 hw = radica_mapper
126
127 # realtec
128 [Earth Defend, The (Unl)]
129 check_str = 0x94, "THE EARTH DEFEND"
130 hw = realtec_mapper
131
132 [Funny World & Balloon Boy (Unl)]
133 check_str = 0xfe, "WISEGAME 11-03-1993"
134 hw = realtec_mapper
135
136 [Whac-A-Critter (Unl)]
137 check_str = 0x95, "MALLET LEGEND"
138 hw = realtec_mapper
139
140 # EEPROM games - thanks to EkeEke for most of this info
141 [College Slam]
142 check_str = 0x150, "COLLEGE SLAM"
143 eeprom_type = 3
144 eeprom_lines = 8,0,0
145
146 [Frank Thomas Big Hurt Baseball]
147 check_str = 0x150, "FRANK THOMAS BIGHURT BASEBAL"
148 eeprom_type = 3
149 eeprom_lines = 8,0,0
150
151 [MICRO MACHINES II]
152 check_str = 0x150, "MICRO MACHINES II"
153 sram_range = 0x300000,0x380001
154 eeprom_type = 2
155 eeprom_lines = 9,8,7
156
157 [Micro Machines - Turbo Tournament '96]
158 check_str = 0x150, "                "
159 check_csum = 0x165e
160 sram_range = 0x300000,0x380001
161 eeprom_type = 2
162 eeprom_lines = 9,8,7
163
164 [Micro Machines - Turbo Tournament '96]
165 check_str = 0x150, "                "
166 check_csum = 0x2c41
167 sram_range = 0x300000,0x380001
168 eeprom_type = 2
169 eeprom_lines = 9,8,7
170
171 [Micro Machines Military]
172 check_str = 0x150, "                "
173 check_csum = 0x168b
174 sram_range = 0x300000,0x380001
175 eeprom_type = 2
176 eeprom_lines = 9,8,7
177
178 [Micro Machines Military]
179 check_str = 0x150, "                "
180 check_csum = 0xcee0
181 sram_range = 0x300000,0x380001
182 eeprom_type = 2
183 eeprom_lines = 9,8,7
184
185 [NBA Jam]
186 check_str = 0x150, "NBA JAM         "
187 eeprom_type = 2
188 eeprom_lines = 1,0,1
189
190 [NBA Jam Tournament Edition]
191 check_str = 0x150, "NBA JAM TOURNAMENT EDITION"
192 sram_range = 0x200000,0x200001
193 eeprom_type = 2
194 eeprom_lines = 8,0,0
195
196 [NFL Quarterback Club]
197 check_str = 0x150, "NFL QUARTERBACK CLUB"
198 eeprom_type = 2
199 eeprom_lines = 8,0,0
200
201 [NHLPA Hockey '93]
202 check_str = 0x150, "NHLPA Hockey '93"
203 sram_range = 0x200000,0x200001
204 eeprom_type = 1
205 eeprom_lines = 6,7,7
206
207 [NHLPA Hockey '93]
208 check_str = 0x150, "NHLPA HOCKEY '93"
209 sram_range = 0x200000,0x200001
210 eeprom_type = 1
211 eeprom_lines = 6,7,7
212
213 [Rings of Power]
214 check_str = 0x150, "RINGS OF POWER"
215 sram_range = 0x200000,0x200001
216 eeprom_type = 1
217 eeprom_lines = 6,7,7
218
219 # Unlicensed games with simple protections
220 # some of these come from Haze, some from myself (notaz).
221 [Bug's Life, A (Unl)]
222 check_str = 0x104, "                "
223 check_crc32 = 0x10458e09
224 hw = prot
225 prot_ro_value16 = 0xa13000,0xffff00,0x28
226
227 [Elf Wor (Unl)]
228 check_str = 0x172, "GAME : ELF WOR"
229 hw = prot
230 prot_ro_value16 = 0x400000,-2,0x5500
231 prot_ro_value16 = 0x400002,-2,0xc900 # check is done if the above one fails
232 prot_ro_value16 = 0x400004,-2,0x0f00
233 prot_ro_value16 = 0x400006,-2,0x1800 # similar to above
234
235 [King of Fighters '98, The (Unl)]
236 check_str = 0x104, "                "
237 check_crc32 = 0xcbc38eea
238 hw = prot
239 prot_ro_value16 = 0x480000,0xff0000,0xaa00
240 prot_ro_value16 = 0x4a0000,0xff0000,0x0a00
241 prot_ro_value16 = 0x4c0000,0xff0000,0xf000
242 prot_ro_value16 = 0x400000,0xc00000,0x0000 # default for 400000-7f0000
243
244 [Lion King 3 (Unl)]
245 check_str = 0x104, " are Registered  Trademarks"
246 check_crc32 = 0xc004219d
247 hw = prot_lk3
248
249 [Lion King II, The (Unl)]
250 check_str = 0x104, " are Registered  Trademarks"
251 check_crc32 = 0xaff46765
252 hw = prot
253 prot_rw_value16 = 0x400000,0xc00004,0
254 prot_rw_value16 = 0x400004,0xc00004,0
255
256 [Mahjong Lover (Unl)]
257 check_str = 0x118, "CREATON. "
258 check_crc32 = 0xddd02ba4
259 hw = prot
260 prot_ro_value16 = 0x400000,-2,0x9000
261 prot_ro_value16 = 0x401000,-2,0xd300
262
263 [Pocket Monsters (Unl)]
264 check_str = 0x104, "                "
265 check_crc32 = 0xf68f6367
266 hw = prot
267 prot_ro_value16 = 0xa13002,-2,0x01
268 prot_ro_value16 = 0xa1303e,-2,0x1f
269
270 [Pocket Monsters (Unl) [a1]]
271 check_str = 0x104, "                "
272 check_crc32 = 0xfb176667
273 hw = prot
274 prot_ro_value16 = 0xa13000,-2,0x14
275 prot_ro_value16 = 0xa13002,-2,0x01
276 prot_ro_value16 = 0xa1303e,-2,0x1f
277
278 [Rockman X3 (Unl)]
279 check_csum = 0
280 check_crc32 = 0x3ee639f0
281 hw = prot
282 prot_ro_value16 = 0xa13000,-2,0x0c
283
284 [Smart Mouse (Unl)]
285 check_csum = 0
286 check_crc32 = 0xdecdf740
287 hw = prot
288 prot_ro_value16 = 0x400000,-2,0x5500
289 prot_ro_value16 = 0x400002,-2,0x0f00
290 prot_ro_value16 = 0x400004,-2,0xaa00
291 prot_ro_value16 = 0x400006,-2,0xf000
292
293 [Soul Blade (Unl)]
294 check_str = 0x104, "                "
295 check_crc32 = 0xf26f88d1
296 hw = prot
297 prot_ro_value16 = 0x400002,-2,0x9800
298 prot_ro_value16 = 0x400004,-2,0xaa00 # or 0xc900
299 prot_ro_value16 = 0x400006,-2,0xf000
300
301 [Super Bubble Bobble (Unl)]
302 check_str = 0x104, " are Registered  Trademarks"
303 check_crc32 = 0x4820a161
304 hw = prot
305 prot_ro_value16 = 0x400000,-2,0x5500
306 prot_ro_value16 = 0x400002,-2,0x0f00
307
308 [Super King Kong 99 (Unl)]
309 check_str = 0x104, " are Registered  Trademarks"
310 check_crc32 = 0x413dfee2
311 hw = prot_lk3
312
313 [Super Mario Bros. (Unl)]
314 check_str = 0x140, "SUPER MARIO BROS "
315 hw = prot
316 prot_ro_value16 = 0xa13000,-2,0x0c
317
318 [Super Mario 2 1998 (Unl)]
319 check_str = 0x104, " are Registered  Trademarks"
320 check_crc32 = 0xf7e1b3e1
321 hw = prot
322 prot_ro_value16 = 0xa13000,-2,0x0a
323
324 [Squirrel King (R)]
325 check_str = 0x104, " are Registered  Trademarks"
326 check_crc32 = 0xb8261ff5
327 hw = prot
328 prot_rw_value16 = 0x400000,0xc00000,0
329