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