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