1 // license:BSD-3-Clause
2 // copyright-holders:David Haywood
3
4 /*
5 CPS1 single board bootlegs (thought to be produced by "Playmark")
6
7 sound hardware: Z80, YM2151, 2x oki MSM5205 (instead of oki M6295)
8
9 Games known to use this h/w:
10 Captain Commando 911014 ETC
11 Knights of the Round 911127 ETC
12 Street Fighter II: The World Warrior 910204 ETC
13 Street Fighter II': Champion Edition 920313 ETC * this might be hacked WW (uses WW portraits on character select screen)
14 Street Fighter II': Magic Delta Turbo 920313 ETC
15 The King of Dragons ? (No dump)
16
17 Generally the sound quality is quite poor compared to official Capcom hardware (consequence of M6295->2xM5205 conversion).
18 Most noticeable is missing percussion backing of music tracks and no fade in/out effect.
19 Often the 2x M5205 are clocked with a 400KHz xtal (should really be 384KHz) so pitch of samples is slightly out as well.
20 The sf2 sets seem to have quite a few missing samples?
21
22 Status of each game:
23 --------------------
24 sf2mdt, sf2mdtb: OK.
25 sf2mdta, sf2ceb: Scroll 2X has strange 0x200 writes that cause missing fighters' portraits at the vs. screen
26 and glitched backgrounds during fights. Masking them out seems a hack.
27 captcommb2: OK.
28 knightsb3: OK.
29
30 */
31
32 #include "emu.h"
33 #include "includes/fcrash.h"
34
35 #include "cpu/z80/z80.h"
36 #include "cpu/m68000/m68000.h"
37 #include "sound/msm5205.h"
38 #include "sound/ym2151.h"
39 #include "speaker.h"
40
41
42 #define CPS1_ROWSCROLL_OFFS (0x20/2) /* base of row scroll offsets in other RAM */
43 #define CODE_SIZE 0x400000
44
45
46 class cps1bl_5205_state : public fcrash_state
47 {
48 public:
cps1bl_5205_state(const machine_config & mconfig,device_type type,const char * tag)49 cps1bl_5205_state(const machine_config &mconfig, device_type type, const char *tag)
50 : fcrash_state(mconfig, type, tag)
51 , m_msm_mux(*this, "msm_mux%u", 1)
52 { }
53
54 void captcommb2(machine_config &config);
55 void knightsb(machine_config &config);
56 void sf2b(machine_config &config);
57 void sf2mdt(machine_config &config);
58
59 void init_captcommb2();
60 void init_knightsb();
61 void init_sf2b();
62 void init_sf2mdt();
63 void init_sf2mdta();
64 void init_sf2mdtb();
65
66 private:
67 DECLARE_MACHINE_START(captcommb2);
68 DECLARE_MACHINE_RESET(captcommb2);
69 DECLARE_MACHINE_START(sf2mdt);
70
71 void captcommb2_layer_w(offs_t offset, uint16_t data);
72 void captcommb2_soundlatch_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
73 uint8_t captcommb2_soundlatch_r();
74 void captcommb2_snd_bankswitch_w(uint8_t data);
75 DECLARE_WRITE_LINE_MEMBER(captcommb2_mux_select_w);
76 void knightsb_layer_w(offs_t offset, uint16_t data);
77 void sf2b_layer_w(offs_t offset, uint16_t data);
78 void sf2mdt_layer_w(offs_t offset, uint16_t data);
79 void sf2mdt_soundlatch_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
80 void sf2mdta_layer_w(offs_t offset, uint16_t data);
81
82 void captcommb2_map(address_map &map);
83 void sf2b_map(address_map &map);
84 void sf2mdt_map(address_map &map);
85 void captcommb2_z80map(address_map &map);
86
87 bool m_captcommb2_mux_toggle;
88
89 optional_device_array<ls157_device, 2> m_msm_mux;
90 };
91
92 class captcommb2_state : public cps1bl_5205_state
93 {
94 public:
captcommb2_state(const machine_config & mconfig,device_type type,const char * tag)95 captcommb2_state(const machine_config &mconfig, device_type type, const char *tag)
96 : cps1bl_5205_state(mconfig, type, tag)
97 { }
98
99 private:
100 void bootleg_render_sprites(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect) override;
101 };
102
103
captcommb2_layer_w(offs_t offset,uint16_t data)104 void cps1bl_5205_state::captcommb2_layer_w(offs_t offset, uint16_t data)
105 {
106 switch (offset)
107 {
108 case 0x00:
109 m_cps_a_regs[0x0e / 2] = data; // scroll1 y
110 break;
111 case 0x01:
112 m_cps_a_regs[0x0c / 2] = data; // scroll1 x
113 break;
114 case 0x02:
115 m_cps_a_regs[0x12 / 2] = data; // scroll2 y
116 m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; // probably don't need this
117 break;
118 case 0x03:
119 m_cps_a_regs[0x10 / 2] = data; // scroll2 x
120 break;
121 case 0x04:
122 m_cps_a_regs[0x16 / 2] = data; // scroll3 y
123 break;
124 case 0x05:
125 m_cps_a_regs[0x14 / 2] = data; // scroll3 x
126 break;
127 case 0x06:
128 m_cps_b_regs[m_layer_enable_reg / 2] = data;
129 m_cps_a_regs[0x02 / 2] = 0x9000 + ((data & 0x1f) << 5); // scroll1 base
130 break;
131 case 0x10:
132 m_cps_b_regs[m_layer_mask_reg[1] / 2] = data;
133 break;
134 case 0x11:
135 m_cps_b_regs[m_layer_mask_reg[2] / 2] = (data & 0x8000) ? data & 0x7fff : data;
136 m_cps_b_regs[m_layer_mask_reg[3] / 2] = (data & 0x8000) ? 0x7fff : 0x07ff;
137 break;
138 }
139 }
140
captcommb2_soundlatch_w(offs_t offset,uint16_t data,uint16_t mem_mask)141 void cps1bl_5205_state::captcommb2_soundlatch_w(offs_t offset, uint16_t data, uint16_t mem_mask)
142 {
143 if (ACCESSING_BITS_0_7)
144 {
145 m_soundlatch->write(data & 0xff);
146 m_audiocpu->set_input_line(0, ASSERT_LINE);
147 }
148 }
149
captcommb2_soundlatch_r()150 uint8_t cps1bl_5205_state::captcommb2_soundlatch_r()
151 {
152 uint8_t latch = m_soundlatch->read();
153 m_audiocpu->set_input_line(0, CLEAR_LINE);
154 return latch;
155 }
156
captcommb2_snd_bankswitch_w(uint8_t data)157 void cps1bl_5205_state::captcommb2_snd_bankswitch_w(uint8_t data)
158 {
159 m_msm_1->reset_w(BIT(data, 5));
160 m_msm_2->reset_w(BIT(data, 4));
161 membank("bank1")->set_entry(data & 0x0f);
162 }
163
WRITE_LINE_MEMBER(cps1bl_5205_state::captcommb2_mux_select_w)164 WRITE_LINE_MEMBER(cps1bl_5205_state::captcommb2_mux_select_w)
165 {
166 // toggle both mux select pins (and fire /nmi)
167 // vck halved by flipflop IC186 ~2kHz
168 if (!state)
169 return;
170
171 m_captcommb2_mux_toggle = !m_captcommb2_mux_toggle;
172 m_msm_mux[0]->select_w(m_captcommb2_mux_toggle);
173 m_msm_mux[1]->select_w(m_captcommb2_mux_toggle);
174 m_audiocpu->set_input_line(INPUT_LINE_NMI, m_captcommb2_mux_toggle);
175 }
176
knightsb_layer_w(offs_t offset,uint16_t data)177 void cps1bl_5205_state::knightsb_layer_w(offs_t offset, uint16_t data)
178 {
179 switch (offset)
180 {
181 case 0x00:
182 m_cps_a_regs[0x0e / 2] = data;
183 break;
184 case 0x01:
185 m_cps_a_regs[0x0c / 2] = data;
186 break;
187 case 0x02:
188 m_cps_a_regs[0x12 / 2] = data;
189 m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
190 break;
191 case 0x03:
192 m_cps_a_regs[0x10 / 2] = data;
193 break;
194 case 0x04:
195 m_cps_a_regs[0x16 / 2] = data;
196 break;
197 case 0x05:
198 m_cps_a_regs[0x14 / 2] = data;
199 break;
200 case 0x06:
201 {
202 switch (data)
203 {
204 case 0x0000:
205 case 0x001f:
206 case 0x00ff:
207 case 0x07ff:
208 data = 0x12f2;
209 break;
210 case 0x2000:
211 data = 0x06c0;
212 break;
213 case 0x5800:
214 case 0x5f00:
215 data = 0x12c0;
216 break;
217 case 0x80ff:
218 case 0x87ff:
219 data = 0x1380;
220 break;
221 case 0xa000:
222 data = 0x24c0;
223 break;
224 case 0xd800:
225 data = 0x1380;
226 break;
227 default:
228 printf ("Unknown control word = %X\n",data);
229 data = 0x12c0;
230 }
231 m_cps_b_regs[m_layer_enable_reg / 2] = data;
232 break;
233 }
234 case 0x10:
235 m_cps_b_regs[m_layer_mask_reg[1] / 2] = data;
236 break;
237 case 0x11:
238 m_cps_b_regs[m_layer_mask_reg[2] / 2] = data;
239 break;
240 case 0x12:
241 m_cps_b_regs[m_layer_mask_reg[3] / 2] = data;
242 }
243 }
244
sf2b_layer_w(offs_t offset,uint16_t data)245 void cps1bl_5205_state::sf2b_layer_w(offs_t offset, uint16_t data)
246 {
247 switch (offset)
248 {
249 case 0x06:
250 m_cps_a_regs[0x0c / 2] = data + 0xffbe; /* scroll 1x */
251 break;
252 case 0x07:
253 m_cps_a_regs[0x0e / 2] = data; /* scroll 1y */
254 break;
255 case 0x08:
256 m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */
257 break;
258 case 0x09:
259 m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */
260 m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
261 break;
262 case 0x0a:
263 m_cps_a_regs[0x10 / 2] = data + 0xffce; /* scroll 2x */
264 break;
265 case 0x0b:
266 m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */
267 break;
268 case 0x26:
269 m_cps_b_regs[m_layer_enable_reg / 2] = data;
270 break;
271 default:
272 printf("%X:%X ",offset,data);
273 }
274 }
275
sf2mdt_layer_w(offs_t offset,uint16_t data)276 void cps1bl_5205_state::sf2mdt_layer_w(offs_t offset, uint16_t data)
277 {
278 /* layer enable and scroll registers are written here - passing them to m_cps_b_regs and m_cps_a_regs for now for drawing routines
279 the scroll layers aren't buttery smooth, due to the lack of using the row scroll address tables in the rendering code, this is also
280 supported by the fact that the game doesn't write the table address anywhere */
281
282 switch (offset)
283 {
284 case 0x06:
285 m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */
286 break;
287 case 0x07:
288 m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */
289 break;
290 case 0x08:
291 m_cps_a_regs[0x10 / 2] = data + 0xffce; /* scroll 2x */
292 break;
293 case 0x09:
294 m_cps_a_regs[0x0c / 2] = data + 0xffca; /* scroll 1x */
295 break;
296 case 0x0a:
297 m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */
298 m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
299 break;
300 case 0x0b:
301 m_cps_a_regs[0x0e / 2] = data; /* scroll 1y */
302 break;
303 case 0x26:
304 m_cps_b_regs[m_layer_enable_reg / 2] = data;
305 }
306 }
307
sf2mdt_soundlatch_w(offs_t offset,uint16_t data,uint16_t mem_mask)308 void cps1bl_5205_state::sf2mdt_soundlatch_w(offs_t offset, uint16_t data, uint16_t mem_mask)
309 {
310 if (ACCESSING_BITS_8_15)
311 {
312 m_soundlatch->write(data >> 8);
313 m_audiocpu->set_input_line(0, ASSERT_LINE);
314 }
315 }
316
sf2mdta_layer_w(offs_t offset,uint16_t data)317 void cps1bl_5205_state::sf2mdta_layer_w(offs_t offset, uint16_t data)
318 {
319 /* layer enable and scroll registers are written here - passing them to m_cps_b_regs and m_cps_a_regs for now for drawing routines
320 the scroll layers aren't buttery smooth, due to the lack of using the row scroll address tables in the rendering code, this is also
321 supported by the fact that the game doesn't write the table address anywhere */
322
323 switch (offset)
324 {
325 case 0x06:
326 m_cps_a_regs[0x0c / 2] = data + 0xffbe; /* scroll 1x */
327 break;
328 case 0x07:
329 m_cps_a_regs[0x0e / 2] = data; /* scroll 1y */
330 break;
331 case 0x08:
332 m_cps_a_regs[0x14 / 2] = data + 0xffce; /* scroll 3x */
333 break;
334 case 0x09:
335 m_cps_a_regs[0x12 / 2] = data; /* scroll 2y */
336 m_cps_a_regs[CPS1_ROWSCROLL_OFFS] = data; /* row scroll start */
337 break;
338 case 0x0a:
339 m_cps_a_regs[0x10 / 2] = 0xffce; /* scroll 2x */
340 break;
341 case 0x0b:
342 m_cps_a_regs[0x16 / 2] = data; /* scroll 3y */
343 break;
344 case 0x26:
345 m_cps_b_regs[m_layer_enable_reg / 2] = data;
346 }
347 }
348
349
captcommb2(machine_config & config)350 void cps1bl_5205_state::captcommb2(machine_config &config)
351 {
352 // xtals: 30MHz, 24MHz, 400KHz
353 M68000(config, m_maincpu, 24000000 / 2); // 12MHz measured on pcb
354 m_maincpu->set_addrmap(AS_PROGRAM, &cps1bl_5205_state::captcommb2_map);
355 m_maincpu->set_vblank_int("screen", FUNC(cps1bl_5205_state::cps1_interrupt));
356 m_maincpu->set_addrmap(m68000_base_device::AS_CPU_SPACE, &cps1bl_5205_state::cpu_space_map);
357
358 Z80(config, m_audiocpu, 30000000 / 8); // 3.75MHz measured on pcb
359 m_audiocpu->set_addrmap(AS_PROGRAM, &cps1bl_5205_state::captcommb2_z80map);
360
361 MCFG_MACHINE_START_OVERRIDE(cps1bl_5205_state, captcommb2)
362 MCFG_MACHINE_RESET_OVERRIDE(cps1bl_5205_state, captcommb2)
363
364 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
365 m_screen->set_raw(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART);
366 m_screen->set_screen_update(FUNC(cps1bl_5205_state::screen_update_fcrash));
367 m_screen->screen_vblank().set(FUNC(cps1bl_5205_state::screen_vblank_cps1));
368 m_screen->set_palette(m_palette);
369
370 GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
371 PALETTE(config, m_palette, palette_device::BLACK).set_entries(0xc00);
372
373 SPEAKER(config, "mono").front_center();
374 GENERIC_LATCH_8(config, m_soundlatch);
375
376 ym2151_device &ym2151(YM2151(config, "2151", 30000000 / 8)); // 3.75MHz measured on pcb
377 // IRQ pin not used
378 ym2151.add_route(0, "mono", 0.35);
379 ym2151.add_route(1, "mono", 0.35);
380
381 LS157(config, m_msm_mux[0], 0);
382 m_msm_mux[0]->out_callback().set("msm1", FUNC(msm5205_device::data_w));
383
384 LS157(config, m_msm_mux[1], 0);
385 m_msm_mux[1]->out_callback().set("msm2", FUNC(msm5205_device::data_w));
386
387 MSM5205(config, m_msm_1, 400000); // 400kHz measured on pcb
388 m_msm_1->vck_callback().set(FUNC(cps1bl_5205_state::captcommb2_mux_select_w));
389 m_msm_1->vck_callback().append(m_msm_2, FUNC(msm5205_device::vclk_w));
390 m_msm_1->set_prescaler_selector(msm5205_device::S96_4B);
391 m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
392
393 MSM5205(config, m_msm_2, 400000);
394 m_msm_2->set_prescaler_selector(msm5205_device::SEX_4B);
395 m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
396 }
397
knightsb(machine_config & config)398 void cps1bl_5205_state::knightsb(machine_config &config)
399 {
400 captcommb2(config);
401 m_msm_1->reset_routes().add_route(ALL_OUTPUTS, "mono", 0.5);
402 m_msm_2->reset_routes().add_route(ALL_OUTPUTS, "mono", 0.5);
403 }
404
sf2b(machine_config & config)405 void cps1bl_5205_state::sf2b(machine_config &config)
406 {
407 sf2mdt(config);
408 m_maincpu->set_addrmap(AS_PROGRAM, &cps1bl_5205_state::sf2b_map);
409 }
410
sf2mdt(machine_config & config)411 void cps1bl_5205_state::sf2mdt(machine_config &config)
412 {
413 /* basic machine hardware */
414 M68000(config, m_maincpu, 12000000);
415 m_maincpu->set_addrmap(AS_PROGRAM, &cps1bl_5205_state::sf2mdt_map);
416 m_maincpu->set_vblank_int("screen", FUNC(cps1bl_5205_state::irq4_line_hold)); /* triggers the sprite ram and scroll writes */
417
418 Z80(config, m_audiocpu, 3750000);
419 m_audiocpu->set_addrmap(AS_PROGRAM, &cps1bl_5205_state::captcommb2_z80map);
420
421 MCFG_MACHINE_START_OVERRIDE(cps1bl_5205_state, sf2mdt)
422 MCFG_MACHINE_RESET_OVERRIDE(cps1bl_5205_state, captcommb2)
423
424 /* video hardware */
425 SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
426 m_screen->set_raw(CPS_PIXEL_CLOCK, CPS_HTOTAL, CPS_HBEND, CPS_HBSTART, CPS_VTOTAL, CPS_VBEND, CPS_VBSTART);
427 m_screen->set_screen_update(FUNC(cps1bl_5205_state::screen_update_fcrash));
428 m_screen->screen_vblank().set(FUNC(cps1bl_5205_state::screen_vblank_cps1));
429 m_screen->set_palette(m_palette);
430
431 GFXDECODE(config, m_gfxdecode, m_palette, gfx_cps1);
432 PALETTE(config, m_palette, palette_device::BLACK).set_entries(4096);
433
434 /* sound hardware */
435 SPEAKER(config, "mono").front_center();
436
437 GENERIC_LATCH_8(config, m_soundlatch);
438
439 YM2151(config, "2151", 3750000).add_route(0, "mono", 0.35).add_route(1, "mono", 0.35);
440
441 LS157(config, m_msm_mux[0], 0);
442 m_msm_mux[0]->out_callback().set("msm1", FUNC(msm5205_device::data_w));
443
444 LS157(config, m_msm_mux[1], 0);
445 m_msm_mux[1]->out_callback().set("msm2", FUNC(msm5205_device::data_w));
446
447 MSM5205(config, m_msm_1, 400000); // 400kHz ?
448 m_msm_1->vck_callback().set(FUNC(cps1bl_5205_state::captcommb2_mux_select_w));
449 m_msm_1->vck_callback().append(m_msm_2, FUNC(msm5205_device::vclk_w));
450 m_msm_1->set_prescaler_selector(msm5205_device::S96_4B);
451 m_msm_1->add_route(ALL_OUTPUTS, "mono", 0.25);
452
453 MSM5205(config, m_msm_2, 400000);
454 m_msm_2->set_prescaler_selector(msm5205_device::SEX_4B);
455 m_msm_2->add_route(ALL_OUTPUTS, "mono", 0.25);
456 }
457
458
captcommb2_map(address_map & map)459 void cps1bl_5205_state::captcommb2_map(address_map &map)
460 {
461 map(0x000000, 0x3fffff).rom();
462 map(0x800000, 0x800001).portr("IN1");
463 map(0x800002, 0x800003).portr("IN2"); // player 3 + 4 inputs
464 map(0x800004, 0x800005).nopw(); // writes 00 here
465 map(0x800006, 0x800007).w(FUNC(cps1bl_5205_state::captcommb2_soundlatch_w));
466 map(0x800018, 0x80001f).r(FUNC(cps1bl_5205_state::cps1_dsw_r));
467 map(0x800030, 0x800031).nopw(); // coinctrl
468 map(0x800100, 0x80013f).ram().share("cps_a_regs");
469 map(0x800140, 0x80017f).ram().share("cps_b_regs");
470 map(0x800180, 0x800181).nopw(); // original sound latch, not used
471 map(0x880000, 0x880001).nopw(); // ?
472 map(0x900000, 0x92ffff).ram().w(FUNC(cps1bl_5205_state::cps1_gfxram_w)).share("gfxram");
473 map(0x980000, 0x980023).w(FUNC(cps1bl_5205_state::captcommb2_layer_w));
474 // 0x990000, 0x993fff spriteram
475 // 0x990000, 0x990001 sprite buffer flip
476 // 0x991000, 0x9917ff sprite buffer #1
477 // 0x993000, 0x9937ff sprite buffer #2
478 map(0xff0000, 0xffffff).ram().share("mainram");
479 }
480
sf2b_map(address_map & map)481 void cps1bl_5205_state::sf2b_map(address_map &map)
482 {
483 map(0x000000, 0x3fffff).rom();
484 map(0x708100, 0x7081ff).w(FUNC(cps1bl_5205_state::sf2b_layer_w));
485 map(0x70c000, 0x70c001).portr("IN1");
486 map(0x70c008, 0x70c009).portr("IN2");
487 map(0x70c018, 0x70c01f).r(FUNC(cps1bl_5205_state::cps1_hack_dsw_r));
488 map(0x70c106, 0x70c107).w(FUNC(cps1bl_5205_state::sf2mdt_soundlatch_w));
489 map(0x70d000, 0x70d001).nopw(); // writes FFFF
490 //map(0x800030, 0x800031).w(FUNC(cps1bl_5205_state::cps1_coinctrl_w));
491 map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */
492 map(0x800140, 0x80017f).rw(FUNC(cps1bl_5205_state::cps1_cps_b_r), FUNC(cps1bl_5205_state::cps1_cps_b_w)).share("cps_b_regs"); /* CPS-B custom */
493 map(0x900000, 0x92ffff).ram().w(FUNC(cps1bl_5205_state::cps1_gfxram_w)).share("gfxram");
494 map(0xff0000, 0xffffff).ram().share("mainram");
495 }
496
sf2mdt_map(address_map & map)497 void cps1bl_5205_state::sf2mdt_map(address_map &map)
498 {
499 map(0x000000, 0x3fffff).rom();
500 map(0x708100, 0x7081ff).w(FUNC(cps1bl_5205_state::sf2mdta_layer_w));
501 map(0x70c000, 0x70c001).portr("IN1");
502 map(0x70c008, 0x70c009).portr("IN2");
503 map(0x70c018, 0x70c01f).r(FUNC(cps1bl_5205_state::cps1_hack_dsw_r));
504 map(0x70c106, 0x70c107).w(FUNC(cps1bl_5205_state::sf2mdt_soundlatch_w));
505 map(0x70d000, 0x70d001).nopw(); // writes FFFF
506 //map(0x800030, 0x800031).w(FUNC(cps1bl_5205_state::cps1_coinctrl_w));
507 map(0x800100, 0x80013f).ram().share("cps_a_regs"); /* CPS-A custom */
508 map(0x800140, 0x80017f).ram().share("cps_b_regs"); /* CPS-B custom */
509 map(0x900000, 0x92ffff).ram().w(FUNC(cps1bl_5205_state::cps1_gfxram_w)).share("gfxram");
510 map(0xff0000, 0xffffff).ram().share("mainram");
511 }
512
513 /*
514 * z80 mapper IC7 GAL16V8 + IC19 74LS138
515 * 138 pin 15 D000-D7FF R/W ram
516 * 138 pin 14 D800-DBFF R/W ym
517 * 138 pin 13 - ? pin not used
518 * 138 pin 12 DC00-DFFF R/W read sound latch, clear /int
519 * 138 pin 11 E800-EBFF W slave 5205
520 * 138 pin 10 E000-E3FF W latch bank and 5202 reset lines
521 * 138 pin 9 E400-E7FF W master 5205
522 * 138 pin 7 EC00-EFFF W ? pin not used
523 *
524 * gal pin 15 0000-BFFF R rom
525 */
captcommb2_z80map(address_map & map)526 void cps1bl_5205_state::captcommb2_z80map(address_map &map)
527 {
528 map(0x0000, 0x7fff).rom();
529 map(0x8000, 0xbfff).bankr("bank1");
530 map(0xd000, 0xd7ff).ram();
531 map(0xd800, 0xd801).rw("2151", FUNC(ym2151_device::read), FUNC(ym2151_device::write));
532 map(0xdc00, 0xdc00).r(FUNC(cps1bl_5205_state::captcommb2_soundlatch_r)); // clear /int here
533 map(0xe000, 0xe000).w(FUNC(cps1bl_5205_state::captcommb2_snd_bankswitch_w));
534 map(0xe400, 0xe400).w("msm_mux1", FUNC(ls157_device::ba_w)); // latch data for mux 1
535 map(0xe800, 0xe800).w("msm_mux2", FUNC(ls157_device::ba_w)); // latch data for mux 2
536 }
537
538
MACHINE_START_MEMBER(cps1bl_5205_state,captcommb2)539 MACHINE_START_MEMBER(cps1bl_5205_state, captcommb2)
540 {
541 membank("bank1")->configure_entries(0, 16, memregion("audiocpu")->base() + 0x10000, 0x4000);
542
543 m_layer_enable_reg = 0x28;
544 m_layer_mask_reg[0] = 0x26;
545 m_layer_mask_reg[1] = 0x24;
546 m_layer_mask_reg[2] = 0x22;
547 m_layer_mask_reg[3] = 0x20;
548 m_layer_scroll1x_offset = 0x3e;
549 m_layer_scroll2x_offset = 0x3c;
550 m_layer_scroll3x_offset = 0x40;
551 //m_sprite_base = 0x1000;
552 m_sprite_list_end_marker = 0x8000;
553 m_sprite_x_offset = 0;
554
555 save_item(NAME(m_captcommb2_mux_toggle));
556 }
557
MACHINE_RESET_MEMBER(cps1bl_5205_state,captcommb2)558 MACHINE_RESET_MEMBER(cps1bl_5205_state, captcommb2)
559 {
560 m_captcommb2_mux_toggle = 0;
561 }
562
MACHINE_START_MEMBER(cps1bl_5205_state,sf2mdt)563 MACHINE_START_MEMBER(cps1bl_5205_state, sf2mdt)
564 {
565 membank("bank1")->configure_entries(0, 8, memregion("audiocpu")->base() + 0x10000, 0x4000);
566
567 m_layer_enable_reg = 0x26;
568 m_layer_mask_reg[0] = 0x28;
569 m_layer_mask_reg[1] = 0x2a;
570 m_layer_mask_reg[2] = 0x2c;
571 m_layer_mask_reg[3] = 0x2e;
572 m_layer_scroll1x_offset = 0;
573 m_layer_scroll2x_offset = 0;
574 m_layer_scroll3x_offset = 0;
575 m_sprite_base = 0x1000;
576 m_sprite_list_end_marker = 0x8000;
577 m_sprite_x_offset = 2;
578
579 save_item(NAME(m_captcommb2_mux_toggle));
580 }
581
582
init_captcommb2()583 void cps1bl_5205_state::init_captcommb2()
584 {
585 // gfx data bits 2 and 4 swapped
586 uint8_t *gfx = memregion("gfx")->base();
587 for (int i = 0; i < 0x400000; i++)
588 {
589 uint8_t x = gfx[i];
590 gfx[i] = bitswap(x, 7, 6 ,5, 2, 3, 4, 1, 0);
591 }
592
593 init_mtwinsb();
594
595 // patch - fix invisible test screen at start
596 uint8_t *rom = memregion("maincpu")->base();
597 rom[0x65c] = 0x68;
598 rom[0x7b0] = 0x68;
599 }
600
init_knightsb()601 void cps1bl_5205_state::init_knightsb()
602 {
603 m_maincpu->space(AS_PROGRAM).unmap_write(0x980000, 0x980023);
604 m_maincpu->space(AS_PROGRAM).install_write_handler(0x980000, 0x980025, write16sm_delegate(*this, FUNC(cps1bl_5205_state::knightsb_layer_w)));
605
606 init_mtwinsb();
607 }
608
init_sf2b()609 void cps1bl_5205_state::init_sf2b()
610 {
611 /* extra sprite ram */
612 /* both of these need to be mapped - see the "Magic Delta Turbo" text on the title screen */
613 m_bootleg_sprite_ram = std::make_unique<uint16_t[]>(0x2000);
614 m_maincpu->space(AS_PROGRAM).install_ram(0x700000, 0x703fff, m_bootleg_sprite_ram.get());
615 m_maincpu->space(AS_PROGRAM).install_ram(0x704000, 0x707fff, m_bootleg_sprite_ram.get());
616
617 init_cps1();
618 }
619
init_sf2mdt()620 void cps1bl_5205_state::init_sf2mdt()
621 {
622 m_maincpu->space(AS_PROGRAM).install_write_handler(0x708100, 0x7081ff, write16sm_delegate(*this, FUNC(cps1bl_5205_state::sf2mdt_layer_w)));
623
624 /* extra work ram */
625 m_bootleg_work_ram = std::make_unique<uint16_t[]>(0x8000);
626 m_maincpu->space(AS_PROGRAM).install_ram(0xfc0000, 0xfcffff, m_bootleg_work_ram.get());
627
628 init_sf2mdtb();
629 }
630
init_sf2mdta()631 void cps1bl_5205_state::init_sf2mdta()
632 {
633 /* extra work ram */
634 m_bootleg_work_ram = std::make_unique<uint16_t[]>(0x8000);
635 m_maincpu->space(AS_PROGRAM).install_ram(0xfc0000, 0xfcffff, m_bootleg_work_ram.get());
636
637 init_sf2b();
638 }
639
init_sf2mdtb()640 void cps1bl_5205_state::init_sf2mdtb()
641 {
642 uint32_t gfx_size = memregion( "gfx" )->bytes();
643 uint8_t *rom = memregion( "gfx" )->base();
644 for (int i = 0; i < gfx_size; i += 8)
645 {
646 uint8_t tmp = rom[i + 1];
647 rom[i + 1] = rom[i + 4];
648 rom[i + 4] = tmp;
649 tmp = rom[i + 3];
650 rom[i + 3] = rom[i + 6];
651 rom[i + 6] = tmp;
652 }
653
654 init_sf2b();
655 }
656
657
658 #define CPS1_COINAGE_1 \
659 PORT_DIPNAME( 0x07, 0x07, DEF_STR( Coin_A ) ) \
660 PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
661 PORT_DIPSETTING( 0x01, DEF_STR( 3C_1C ) ) \
662 PORT_DIPSETTING( 0x02, DEF_STR( 2C_1C ) ) \
663 PORT_DIPSETTING( 0x07, DEF_STR( 1C_1C ) ) \
664 PORT_DIPSETTING( 0x06, DEF_STR( 1C_2C ) ) \
665 PORT_DIPSETTING( 0x05, DEF_STR( 1C_3C ) ) \
666 PORT_DIPSETTING( 0x04, DEF_STR( 1C_4C ) ) \
667 PORT_DIPSETTING( 0x03, DEF_STR( 1C_6C ) ) \
668 PORT_DIPNAME( 0x38, 0x38, DEF_STR( Coin_B ) ) \
669 PORT_DIPSETTING( 0x00, DEF_STR( 4C_1C ) ) \
670 PORT_DIPSETTING( 0x08, DEF_STR( 3C_1C ) ) \
671 PORT_DIPSETTING( 0x10, DEF_STR( 2C_1C ) ) \
672 PORT_DIPSETTING( 0x38, DEF_STR( 1C_1C ) ) \
673 PORT_DIPSETTING( 0x30, DEF_STR( 1C_2C ) ) \
674 PORT_DIPSETTING( 0x28, DEF_STR( 1C_3C ) ) \
675 PORT_DIPSETTING( 0x20, DEF_STR( 1C_4C ) ) \
676 PORT_DIPSETTING( 0x18, DEF_STR( 1C_6C ) )
677
678 #define CPS1_DIFFICULTY_1(diploc) \
679 PORT_DIPNAME( 0x07, 0x04, DEF_STR( Difficulty ) ) PORT_DIPLOCATION(diploc ":1,2,3") \
680 PORT_DIPSETTING( 0x07, "1 (Easiest)" ) \
681 PORT_DIPSETTING( 0x06, "2" ) \
682 PORT_DIPSETTING( 0x05, "3" ) \
683 PORT_DIPSETTING( 0x04, "4 (Normal)" ) \
684 PORT_DIPSETTING( 0x03, "5" ) \
685 PORT_DIPSETTING( 0x02, "6" ) \
686 PORT_DIPSETTING( 0x01, "7" ) \
687 PORT_DIPSETTING( 0x00, "8 (Hardest)" )
688
689 static INPUT_PORTS_START( captcommb2 )
PORT_INCLUDE(captcomm)690 PORT_INCLUDE(captcomm)
691
692 PORT_MODIFY("IN3")
693 PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNKNOWN )
694
695 PORT_MODIFY("IN2") // Player 4
696 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(4)
697 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(4)
698 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(4)
699 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(4)
700 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(4)
701 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(4)
702 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN4 )
703 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START4 )
704 INPUT_PORTS_END
705
706 static INPUT_PORTS_START( sf2mdt )
707 PORT_START("IN0")
708 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
709 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
710 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
711 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
712 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
713 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
714 PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
715 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
716
717 PORT_START("IN1")
718 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
719 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
720 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
721 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
722 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Jab Punch") PORT_PLAYER(1)
723 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Strong Punch") PORT_PLAYER(1)
724 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Fierce Punch") PORT_PLAYER(1)
725 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
726 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
727 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
728 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
729 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
730 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Jab Punch") PORT_PLAYER(2)
731 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Strong Punch") PORT_PLAYER(2)
732 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Fierce Punch") PORT_PLAYER(2)
733 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
734
735 PORT_START("IN2") /* Extra buttons */
736 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Short Kick") PORT_PLAYER(1)
737 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P1 Forward Kick") PORT_PLAYER(1)
738 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P1 Roundhouse Kick") PORT_PLAYER(1)
739 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
740 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P2 Short Kick") PORT_PLAYER(2)
741 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P2 Forward Kick") PORT_PLAYER(2)
742 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P2 Roundhouse Kick") PORT_PLAYER(2)
743 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
744
745 PORT_START("DSWA")
746 CPS1_COINAGE_1
747 PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
748 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
749 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
750 PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
751
752 PORT_START("DSWB")
753 CPS1_DIFFICULTY_1( "SW(B)" )
754 PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(B):4" )
755 PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(B):5" )
756 PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" )
757 PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
758 PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
759
760 PORT_START("DSWC")
761 PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
762 PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
763 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
764 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
765 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
766 PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
767 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
768 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
769 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
770 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
771 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
772 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
773 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
774 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
775 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
776 PORT_DIPSETTING( 0x40, DEF_STR( No ) )
777 PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
778 PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
779 PORT_DIPSETTING( 0x80, "Game" )
780 PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
781 INPUT_PORTS_END
782
783 static INPUT_PORTS_START( sf2mdtb )
784 PORT_START("IN0")
785 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_COIN1 )
786 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_COIN2 )
787 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE1 )
788 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
789 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_START1 )
790 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_START2 )
791 PORT_SERVICE_NO_TOGGLE( 0x40, IP_ACTIVE_LOW )
792 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
793
794 PORT_START("IN1")
795 PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(1)
796 PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(1)
797 PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(1)
798 PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(1)
799 PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P1 Jab Punch") PORT_PLAYER(1)
800 PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P1 Strong Punch") PORT_PLAYER(1)
801 PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P1 Fierce Punch") PORT_PLAYER(1)
802 PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_UNKNOWN )
803 PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
804 PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
805 PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
806 PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
807 PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_NAME("P2 Jab Punch") PORT_PLAYER(2)
808 PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_NAME("P2 Strong Punch") PORT_PLAYER(2)
809 PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_NAME("P2 Fierce Punch") PORT_PLAYER(2)
810 PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN )
811
812 PORT_START("IN2") /* Extra buttons */
813 PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P1 Short Kick") PORT_PLAYER(1)
814 PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P1 Forward Kick") PORT_PLAYER(1)
815 PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P1 Roundhouse Kick") PORT_PLAYER(1)
816 PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
817 PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON4 ) PORT_NAME("P2 Short Kick") PORT_PLAYER(2)
818 PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON5 ) PORT_NAME("P2 Forward Kick") PORT_PLAYER(2)
819 PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON6 ) PORT_NAME("P2 Roundhouse Kick") PORT_PLAYER(2)
820 PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
821
822 PORT_START("DSWA")
823 CPS1_COINAGE_1
824 PORT_DIPNAME( 0x40, 0x40, "2 Coins to Start, 1 to Continue" ) PORT_DIPLOCATION("SW(A):7")
825 PORT_DIPSETTING( 0x40, DEF_STR( Off ) )
826 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
827 // debug mode? depending on other DSW setting get different "game" mode, autoplay, bonus round, etc...
828 PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(A):8" )
829
830 PORT_START("DSWB")
831 CPS1_DIFFICULTY_1("SW(B)")
832 PORT_DIPUNUSED_DIPLOC( 0x08, 0x08, "SW(B):4" )
833 PORT_DIPUNUSED_DIPLOC( 0x10, 0x10, "SW(B):5" )
834 PORT_DIPUNUSED_DIPLOC( 0x20, 0x20, "SW(B):6" )
835 PORT_DIPUNUSED_DIPLOC( 0x40, 0x40, "SW(B):7" )
836 PORT_DIPUNUSED_DIPLOC( 0x80, 0x80, "SW(B):8" )
837
838 PORT_START("DSWC")
839 PORT_DIPUNUSED_DIPLOC( 0x01, 0x01, "SW(C):1" )
840 PORT_DIPUNUSED_DIPLOC( 0x02, 0x02, "SW(C):2" )
841 PORT_DIPNAME( 0x04, 0x04, DEF_STR( Free_Play ) ) PORT_DIPLOCATION("SW(C):3")
842 PORT_DIPSETTING( 0x04, DEF_STR( Off ) )
843 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
844 PORT_DIPNAME( 0x08, 0x08, "Freeze" ) PORT_DIPLOCATION("SW(C):4")
845 PORT_DIPSETTING( 0x08, DEF_STR( Off ) )
846 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
847 PORT_DIPNAME( 0x10, 0x10, DEF_STR( Flip_Screen ) ) PORT_DIPLOCATION("SW(C):5")
848 PORT_DIPSETTING( 0x10, DEF_STR( Off ) )
849 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
850 PORT_DIPNAME( 0x20, 0x00, DEF_STR( Demo_Sounds ) ) PORT_DIPLOCATION("SW(C):6")
851 PORT_DIPSETTING( 0x20, DEF_STR( Off ) )
852 PORT_DIPSETTING( 0x00, DEF_STR( On ) )
853 PORT_DIPNAME( 0x40, 0x00, DEF_STR( Allow_Continue ) ) PORT_DIPLOCATION("SW(C):7")
854 PORT_DIPSETTING( 0x40, DEF_STR( No ) )
855 PORT_DIPSETTING( 0x00, DEF_STR( Yes ) )
856 PORT_DIPNAME( 0x80, 0x80, "Game Mode") PORT_DIPLOCATION("SW(C):8")
857 PORT_DIPSETTING( 0x80, "Game" )
858 PORT_DIPSETTING( 0x00, DEF_STR( Test ) )
859 INPUT_PORTS_END
860
861
862 void captcommb2_state::bootleg_render_sprites( screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect )
863 {
864 int pos;
865 int last_sprite_offset = 0;
866 uint16_t tileno, colour, xpos, ypos;
867 bool flipx, flipy;
868 uint16_t *sprite_ram = m_bootleg_sprite_ram.get();
869 int base = (sprite_ram[0] ? 0x3000 : 0x1000) / 2; // writes sprite buffer flip here instead of obj_base register
870
871 // end of sprite table marker is 0x8000
872 // 1st sprite always 0x100e/0x300e
873 // sprites are: [ypos][tile#][color][xpos]
874 // no block sprites
875 for (pos = base + 7; pos < base + 0x400; pos += 4)
876 if (sprite_ram[pos] == m_sprite_list_end_marker)
877 {
878 last_sprite_offset = pos - 3;
879 break;
880 }
881
882 for (pos = last_sprite_offset - base; pos >= 0; pos -= 4)
883 {
884 tileno = sprite_ram[base + pos] & 0x7fff; // see below
885 xpos = sprite_ram[base + pos + 2] & 0x1ff;
886 ypos = sprite_ram[base + pos - 1] & 0x1ff;
887 flipx = BIT(sprite_ram[base + pos + 1], 5);
888 flipy = BIT(sprite_ram[base + pos + 1], 6);
889 colour = sprite_ram[base + pos + 1] & 0x1f;
890 ypos = 256 - ypos - 16;
891 xpos = xpos + m_sprite_x_offset + 49;
892
893 if (flip_screen())
894 m_gfxdecode->gfx(2)->prio_transpen(bitmap, cliprect, tileno, colour, !flipx, !flipy, 512-16-xpos, 256-16-ypos, screen.priority(), 2, 15);
895 else
896 m_gfxdecode->gfx(2)->prio_transpen(bitmap, cliprect, tileno, colour, flipx, flipy, xpos, ypos, screen.priority(), 2, 15);
897 }
898
899 /* tileno note:
900 sets the unused msb for certain tiles eg. middle parts of rocket launcher weapon,
901 this means the tile is out of range and therefore transparent,
902 most likely just a bug and the real h/w ignores the unused bit so the effect is not seen.
903 */
904 }
905
906
907 // ************************************************************************* CAPTCOMMB2
908
909 /*
910 Captain Commando:
911
912 h/w issues compared to original game (captcomm)
913 -----------------------------------------------
914 these are present on the real board so are not emulation issues:
915
916 * End sequence row scroll effect doesn't work.
917 * Capcom copyright text missing on title screen, deliberately shifted down out of visible area by bootleggers.
918 * Capcom logo missing from end sequence, as above.
919 * Sprite flickering effects eg. when character has invincibility, look a little different to original.
920 * Certain static sprites wobble vertically just a pixel or two eg. manhole covers, breakable oil drums etc.
921
922 these are present on the real board but are unintentionally "fixed" in emulation:
923
924 * All '0' characters are missing in test menu eg. sound test, input test etc.
925 * Wrong tile displayed when character select count-down timer reaches zero (superscript '1' with white bar underneath)
926 */
927 ROM_START( captcommb2 )
928 ROM_REGION( CODE_SIZE, "maincpu", 0 ) // = captcommr1 + additional code mapped on top
929 ROM_LOAD16_BYTE( "5.bin", 0x000000, 0x80000, CRC(c3a6ed28) SHA1(f79fed35f7b0dc383837a2ead846acc686dd3487) )
930 ROM_LOAD16_BYTE( "3.bin", 0x000001, 0x80000, CRC(28729335) SHA1(6dd23c2d41e4e182434fe80c03d5c90785e6c0ce) )
931 ROM_LOAD16_BYTE( "4.bin", 0x100000, 0x20000, CRC(1b526d73) SHA1(3dd8dec61db4f4f5546937602a8fb01c639d72f8) )
932 ROM_CONTINUE( 0x000000, 0x04000)
933 ROM_CONTINUE( 0x018000, 0x04000)
934 ROM_IGNORE( 0x18000)
935 ROM_LOAD16_BYTE( "2.bin", 0x100001, 0x20000, CRC(73c99709) SHA1(e122e3771b698c44fb998589af0542b1f2a3876a) )
936 ROM_CONTINUE( 0x000001, 0x04000)
937 ROM_CONTINUE( 0x018001, 0x04000)
938 ROM_IGNORE( 0x18000)
939
940 ROM_REGION( 0x400000, "gfx", 0 ) // some data bits are swapped, see init()
941 ROM_LOAD64_BYTE( "bnh-01.bin", 0x000000, 0x40000, CRC(ffbc3bdd) SHA1(fcee1befd8279d41a81689394a562e2344191e2a) )
942 ROM_CONTINUE( 0x000004, 0x40000)
943 ROM_LOAD64_BYTE( "bnh-02.bin", 0x000001, 0x40000, CRC(40e58d52) SHA1(d980d075f4feeaf95ad599e1b95a1b550f6a85d9) )
944 ROM_CONTINUE( 0x000005, 0x40000)
945 ROM_LOAD64_BYTE( "bnh-03.bin", 0x000002, 0x40000, CRC(58f92cad) SHA1(041cd7d7d325147eefab245cd0610203200be1ce) )
946 ROM_CONTINUE( 0x000006, 0x40000)
947 ROM_LOAD64_BYTE( "bnh-04.bin", 0x000003, 0x40000, CRC(284eea8a) SHA1(b95cf797b3576d7d62f58d4a70d4b6e64ece7601) )
948 ROM_CONTINUE( 0x000007, 0x40000)
949 ROM_LOAD64_BYTE( "bnh-05.bin", 0x200000, 0x40000, CRC(d02719b7) SHA1(c67bc53c22030c7a75f2fdde1480f619e2be314c) )
950 ROM_CONTINUE( 0x200004, 0x40000)
951 ROM_LOAD64_BYTE( "bnh-06.bin", 0x200001, 0x40000, CRC(d9d43b55) SHA1(db462900958e06610cfdc47bb774f37ea1c0a1b7) )
952 ROM_CONTINUE( 0x200005, 0x40000)
953 ROM_LOAD64_BYTE( "bnh-07.bin", 0x200002, 0x40000, CRC(03b7900d) SHA1(ade31f4b37e8ca50214c5b32a2e5899043f49c8a) )
954 ROM_CONTINUE( 0x200006, 0x40000)
955 ROM_LOAD64_BYTE( "bnh-08.bin", 0x200003, 0x40000, CRC(327b8da8) SHA1(4bcc6fd637d382ce35b9387568c53d89a55e8ed2) )
956 ROM_CONTINUE( 0x200007, 0x40000)
957
958 ROM_REGION( 0x50000, "audiocpu", 0 )
959 ROM_LOAD( "1.bin", 0x00000, 0x40000, CRC(aed2f4bd) SHA1(3bd567dc350bf6ac3a349548790ad49eb5bd8307) )
960 ROM_RELOAD( 0x10000, 0x40000 )
961
962 /* pld devices */
963 ROM_REGION( 0xc00, "plds", 0 )
964 ROM_LOAD( "1_gal20v8.ic169", 0x000, 0x157, CRC(e5cf9f53) SHA1(9c5f88d2dcfaab1c1ba80019e9ec60f0c1fb8c49) ) // all unsecured
965 ROM_LOAD( "2_gal16v8.ic7", 0x200, 0x117, CRC(0ebc7cd7) SHA1(95f0cba1f588920634b5f09b85197474201d9aed) )
966 ROM_LOAD( "3_gal16v8.ic72", 0x400, 0x117, CRC(ebf1f643) SHA1(d2d1d60ced5665469589122001d9b7b36b7444d2) )
967 ROM_LOAD( "4_gal16v8.ic80", 0x600, 0x117, CRC(2c43c330) SHA1(7df648b63bc0c845a579a29722004f28d3e04a10) )
968 ROM_LOAD( "5_gal20v8.ic121", 0x800, 0x157, CRC(76fa8969) SHA1(8fce620ece2d70511868c9cdd8c421762a467c11) )
969 ROM_LOAD( "6_gal20v8.ic120", 0xa00, 0x157, CRC(6a55a974) SHA1(f4df5a45409eca84c1ac36f7f8dbb218b79b57ac) )
970 // ic116 tpc1020afn-084c no dump
971 ROM_END
972
973
974 // ************************************************************************* KNIGHTSB, KNIGHTSB3
975
976 /*
977 CPU
978 1x MC68000P12 ic65 main
979 1x Z0840006PSC ic1 sound
980 1x YM2151 ic29 sound
981 1x YM3012 ic30 sound
982 2x LM324 ic15,ic31 sound
983 2x M5205 ic184,ic185 sound
984 1x TDA2003 ic14 sound
985 1x oscillator 24.000000MHz (close to main)
986 1x oscillator 29.821000MHz (close to sound)
987
988 ROMs
989 5x M27C2001 1,2,3,4,5 dumped
990 4x mask ROM KA,KB,KC,KD not dumped
991
992 RAMs
993 4x KM62256ALP ic112,ic113,ic168,ic170
994 1x SYC6116L ic24
995 1x MCM2018AN ic7,ic8,ic51,ic56,ic70,ic71,ic77,ic78
996
997 PLDs
998 1x TPC1020AFN ic116 read protected
999 3x GAL20V8A ic120,ic121,ic169 read protected
1000 3x GAL16V8A ic7,ic72,ic80 read protected
1001
1002 Note
1003 1x JAMMA edge connector
1004 2x 10 legs connector
1005 1x trimmer (volume)
1006 3x 8x2 switches DIP
1007
1008 FIXME - graphics ROMs are wrong, copied from the other version
1009 ROMs missing are KA.IC91 KB.IC92 KC.IC93 KD.IC94
1010 */
1011 ROM_START( knightsb )
1012 ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
1013 ROM_LOAD16_BYTE( "3.ic173", 0x00001, 0x40000, CRC(c9c6e720) SHA1(e8a1cd73458b548e88fc49d8f659e0dc33a8e756) )
1014 ROM_LOAD16_BYTE( "5.ic172", 0x00000, 0x40000, CRC(7fd91118) SHA1(d2832b21309a467938891946d7af35d8095787a4) )
1015 ROM_LOAD16_BYTE( "2.ic175", 0x80001, 0x40000, CRC(1eb91343) SHA1(e02cfbbd7689346f14f2e3455ed17e7f0b51bad0) )
1016 ROM_LOAD16_BYTE( "4.ic176", 0x80000, 0x40000, CRC(af352703) SHA1(7855ac65752203f45af4ef41af8c291540a1c8a8) )
1017
1018 ROM_REGION( 0x400000, "gfx", 0 ) /* bootleg had 4x 1meg mask ROMs, these need dumping so that the format is known */
1019 ROM_LOAD64_WORD( "kr_gfx1.rom", 0x000000, 0x80000, BAD_DUMP CRC(9e36c1a4) SHA1(772daae74e119371dfb76fde9775bda78a8ba125) )
1020 ROM_LOAD64_WORD( "kr_gfx3.rom", 0x000002, 0x80000, BAD_DUMP CRC(c5832cae) SHA1(a188cf401cd3a2909b377d3059f14d22ec3b0643) )
1021 ROM_LOAD64_WORD( "kr_gfx2.rom", 0x000004, 0x80000, BAD_DUMP CRC(f095be2d) SHA1(0427d1574062f277a9d04440019d5638b05de561) )
1022 ROM_LOAD64_WORD( "kr_gfx4.rom", 0x000006, 0x80000, BAD_DUMP CRC(179dfd96) SHA1(b1844e69da7ab13474da569978d5b47deb8eb2be) )
1023 ROM_LOAD64_WORD( "kr_gfx5.rom", 0x200000, 0x80000, BAD_DUMP CRC(1f4298d2) SHA1(4b162a7f649b0bcd676f8ca0c5eee9a1250d6452) )
1024 ROM_LOAD64_WORD( "kr_gfx7.rom", 0x200002, 0x80000, BAD_DUMP CRC(37fa8751) SHA1(b88b39d1f08621f15a5620095aef998346fa9891) )
1025 ROM_LOAD64_WORD( "kr_gfx6.rom", 0x200004, 0x80000, BAD_DUMP CRC(0200bc3d) SHA1(c900b1be2b4e49b951e5c1e3fd1e19d21b82986e) )
1026 ROM_LOAD64_WORD( "kr_gfx8.rom", 0x200006, 0x80000, BAD_DUMP CRC(0bb2b4e7) SHA1(983b800925d58e4aeb4e5105f93ed5faf66d009c) )
1027
1028 ROM_REGION( 0x50000, "audiocpu", 0 ) /* 64k for the audio CPU (+banks) */
1029 ROM_LOAD( "1.ic26", 0x00000, 0x40000, CRC(bd6f9cc1) SHA1(9f33cccef224d2204736a9eae761196866bd6e41) )
1030 ROM_RELOAD( 0x10000, 0x40000 )
1031 ROM_END
1032
1033 /*
1034 Knights of the Round
1035 pcb marking: ORD 92032
1036 Very similar to knightsb set:
1037 maincpu roms are just 1 byte different, vector 1 (stack pointer init) is ff80d6 instead of ff81d6
1038 knightsb gfx roms are 4x 1MB (but not dumped), these are 8x 512KB (suspect data is same)
1039 Some sound samples are very quiet on real pcb
1040 Confirmed clocks (measured) are same as captcommb2:
1041 xtals: 30MHz, 24MHz, 400KHz
1042 68k = 12MHz (P10 model, overclocked)
1043 z80/ym = 3.75MHz
1044 5202 = 400KHz
1045 */
1046 ROM_START( knightsb3 )
1047 ROM_REGION( CODE_SIZE, "maincpu", 0 )
1048 ROM_LOAD16_BYTE( "5.bin", 0x00000, 0x80000, CRC(b818272c) SHA1(680b1539bbeebf26706c9367decce2a8de0144e4) ) // 27c040
1049 ROM_LOAD16_BYTE( "3.bin", 0x00001, 0x80000, CRC(b0b9a4c2) SHA1(7d49b260224756303f9c6cdb67e8c531b0f5689f) ) // 27c040
1050
1051 ROM_REGION( 0x400000, "gfx", 0 ) // = knights but arranged differently
1052 ROM_LOAD64_BYTE( "svr-01.bin", 0x000000, 0x40000, CRC(b08dc61f) SHA1(9527636ba0ccc7f02db6ba7013e932582ff85a93) )
1053 ROM_CONTINUE( 0x000004, 0x40000)
1054 ROM_LOAD64_BYTE( "svr-02.bin", 0x000001, 0x40000, CRC(cca262aa) SHA1(587b25a724a89095299bd1f655d833d26a420c30) )
1055 ROM_CONTINUE( 0x000005, 0x40000)
1056 ROM_LOAD64_BYTE( "svr-03.bin", 0x000002, 0x40000, CRC(1fe7056c) SHA1(eb9e5955c6cf2cfef565672cd0efcfd6921fefc3) )
1057 ROM_CONTINUE( 0x000006, 0x40000)
1058 ROM_LOAD64_BYTE( "svr-04.bin", 0x000003, 0x40000, CRC(b29ce7cf) SHA1(d8f99c57561c60bec260c6b5daef81ba7856b547) )
1059 ROM_CONTINUE( 0x000007, 0x40000)
1060 ROM_LOAD64_BYTE( "svr-05.bin", 0x200000, 0x40000, CRC(1c774671) SHA1(d553b87e8a0f13f404cff64089847325a18d1afb) )
1061 ROM_CONTINUE( 0x200004, 0x40000)
1062 ROM_LOAD64_BYTE( "svr-06.bin", 0x200001, 0x40000, CRC(05463aa3) SHA1(27cc2724e22bf74e972283d6c35d31cea2c1a943) )
1063 ROM_CONTINUE( 0x200005, 0x40000)
1064 ROM_LOAD64_BYTE( "svr-07.bin", 0x200002, 0x40000, CRC(87944aaa) SHA1(57d4637d5cf10b9cef95e12c64362c04a604cf64) )
1065 ROM_CONTINUE( 0x200006, 0x40000)
1066 ROM_LOAD64_BYTE( "svr-08.bin", 0x200003, 0x40000, CRC(aa9d82fb) SHA1(41ff75bc0cc3766c19d79080893b52d9c759a443) )
1067 ROM_CONTINUE( 0x200007, 0x40000)
1068
1069 // TODO: dump
1070 ROM_REGION( 0x50000, "audiocpu", 0 )
1071 ROM_LOAD( "1.ic26", 0x00000, 0x40000, CRC(bd6f9cc1) SHA1(9f33cccef224d2204736a9eae761196866bd6e41) ) // knightsb
1072 ROM_RELOAD( 0x10000, 0x40000 )
1073
1074 /* pld devices:
1075 ________________________
1076 | 4 | (no component reference markings on pcb)
1077 | |
1078 == 2 3 |
1079 == 7 |
1080 == |
1081 == |
1082 == |
1083 | 1 5 6 |
1084 |________________________|
1085
1086 #1 palce20v8h secured, bruteforce ok
1087 #2 palce16v8h secured, bruteforce ok
1088 #3 palce16v8h secured, registered
1089 #4 palce16v8h secured, registered
1090 #5 palce20v8h secured, registered
1091 #6 palce20v8h secured, registered
1092 #7 a1020a pl84c unattempted
1093 */
1094 ROM_REGION( 0x400, "plds", 0 )
1095 ROM_LOAD( "1_palce20v8.bin", 0x000, 0x157, CRC(a5078c38) SHA1(59558a514ec60cd7148ede78a5641f5e6c0479c8) )
1096 ROM_LOAD( "2_palce16v8.bin", 0x200, 0x117, CRC(bad3316b) SHA1(b25141540fbaab028ba563f4fe1796b6039a4d59) )
1097 ROM_END
1098
1099
1100 // ************************************************************************* SF2B, SF2B2
1101
1102 ROM_START( sf2b )
1103 ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
1104 ROM_LOAD16_WORD_SWAP( "pf1-2-sg076.bin", 0x000000, 0x100000, CRC(1d15bc7a) SHA1(834627545f191f39de6beb008c89623f2b88c13b) )
1105
1106 ROM_REGION( 0x600000, "gfx", 0 )
1107 ROM_LOAD32_WORD( "pf4-sg072.bin", 0x000000, 0x100000, CRC(16289710) SHA1(4f3236712b979a1eb2fa97740e32d7913cee0d0d) )
1108 ROM_LOAD32_WORD( "pf7-sg103.bin", 0x000002, 0x100000, CRC(fb78022e) SHA1(b8974387056dd52db96b01cc4648edc814398c7e) )
1109 ROM_LOAD32_WORD( "pf5-sg095.bin", 0x200000, 0x100000, CRC(0a6be48b) SHA1(b7e72c94d4e3eb4a6bba6608d9b9a093c8901ad9) )
1110 ROM_LOAD32_WORD( "pf8-sg101.bin", 0x200002, 0x100000, CRC(6258c7cf) SHA1(4cd7519245c0aa816934a43e6743160f715d7dc2) )
1111 ROM_LOAD32_WORD( "pf6-sg068.bin", 0x400000, 0x100000, CRC(9b5b09d7) SHA1(698a6aab41e495bd0c37a19aee16a84f04d15797) )
1112 ROM_LOAD32_WORD( "pf9-sh001.bin", 0x400002, 0x100000, CRC(9f25090e) SHA1(12ff0431ef6550db446985c8914ac7d78eec6b6d) )
1113
1114 ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
1115 ROM_LOAD( "3snd.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) )
1116 ROM_RELOAD( 0x10000, 0x20000 )
1117 ROM_END
1118
1119 // this PCB has stickers in Spanish. It's extremely similar to sf2b, but audiocpu ROM is identical to sf2mdt and 11.bin is slightly different.
1120 ROM_START( sf2b2 )
1121 ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
1122 ROM_LOAD16_BYTE( "2.bin", 0x000000, 0x80000, CRC(42809e5a) SHA1(ee91ecfce29bc50cf3f492ff646109c60bf65551) )
1123 ROM_LOAD16_BYTE( "1.bin", 0x000001, 0x80000, CRC(e58db26c) SHA1(da1a4e063fa770257fd3df5fdb3785c1856511a5) )
1124
1125 ROM_REGION( 0x600000, "gfx", 0 ) /* rearranged in init */
1126 ROM_LOAD64_WORD( "5.bin", 0x000000, 0x80000, CRC(47fab9ed) SHA1(1709becbe189b21f2c1920acef96f9412eb954e2) )
1127 ROM_LOAD64_WORD( "8.bin", 0x000002, 0x80000, CRC(b8c39d56) SHA1(ee2939f42e95c926bdd88adf326eee02cba3f37a) )
1128 ROM_LOAD64_WORD( "11.bin", 0x000004, 0x80000, CRC(6e8c98d8) SHA1(fbd7d788349fd418c48aedd906c40960e41c20f1) )
1129 ROM_LOAD64_WORD( "14.bin", 0x000006, 0x80000, CRC(672d4f85) SHA1(511a8878d14d3fd39c9a22efb983550098ea8760) )
1130 ROM_LOAD64_WORD( "4.bin", 0x200000, 0x80000, CRC(69d7b06b) SHA1(b428a0b5dfdee20d4d198673fe3b0147cad2d5bd) )
1131 ROM_LOAD64_WORD( "7.bin", 0x200002, 0x80000, CRC(ded88f5f) SHA1(71c63fed5a15f6ce1df878dca7aa5d53868e68ee) )
1132 ROM_LOAD64_WORD( "10.bin", 0x200004, 0x80000, CRC(8c2fca3c) SHA1(a84399e91dbf5790c3fe003385f6d9f4bc9d3366) )
1133 ROM_LOAD64_WORD( "13.bin", 0x200006, 0x80000, CRC(26f09d38) SHA1(3babc4f502ea9e07f79306b1abc9c94f484f9cc1) )
1134 ROM_LOAD64_WORD( "6.bin", 0x400000, 0x80000, CRC(b6215991) SHA1(5e20632e1a2d6eebe3b5d314cf2549bb74d7118e) )
1135 ROM_LOAD64_WORD( "9.bin", 0x400002, 0x80000, CRC(b6a71ed7) SHA1(1850b4b4aa4b5cafc594b174322afefbdf215221) )
1136 ROM_LOAD64_WORD( "12.bin", 0x400004, 0x80000, CRC(971903fa) SHA1(849ee7200815ef73f75456e656f061f1e852af59) )
1137 ROM_LOAD64_WORD( "15.bin", 0x400006, 0x80000, CRC(00983914) SHA1(4ead6bbce6ca8c4cc884d55c1f821242d0e67fae) )
1138
1139 ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
1140 ROM_LOAD( "3.bin", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
1141 ROM_RELOAD( 0x10000, 0x20000 )
1142 ROM_END
1143
1144
1145 // ************************************************************************* SF2CEB
1146
1147 ROM_START( sf2ceb )
1148 ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
1149 ROM_LOAD16_BYTE( "3.ic171", 0x000000, 0x80000, CRC(a2355d90) SHA1(6c9e1294c55a5a9f244f6f1ce46224c51f910bb1) )
1150 ROM_LOAD16_BYTE( "5.ic171", 0x000001, 0x80000, CRC(c6f86e84) SHA1(546841fe7d423fff05a7772aa57fa3274515c32b) )
1151 ROM_LOAD16_BYTE( "2.ic171", 0x100000, 0x20000, CRC(74844192) SHA1(99cd546c78cce7f632007af454d8a55eddb6b19b) )
1152 ROM_LOAD16_BYTE( "4.ic171", 0x100001, 0x20000, CRC(bd98ff15) SHA1(ed902d949b0b5c5beaaea78a4b418ffa6db9e1df) )
1153
1154 ROM_REGION( 0x600000, "gfx", 0 )
1155 ROM_LOAD32_WORD( "pf4-sg072.ic90", 0x000000, 0x100000, CRC(446575c7) SHA1(2bd769674fbe280d304b389daf74202cf9e4ac22) )
1156 ROM_LOAD32_WORD( "pf7-sg103.ic88", 0x000002, 0x100000, CRC(fb78022e) SHA1(b8974387056dd52db96b01cc4648edc814398c7e) )
1157 ROM_LOAD32_WORD( "pf5-sg063.ic91", 0x200000, 0x100000, CRC(0a6be48b) SHA1(b7e72c94d4e3eb4a6bba6608d9b9a093c8901ad9) )
1158 ROM_LOAD32_WORD( "pf8-sg101.ic93", 0x200002, 0x100000, CRC(6258c7cf) SHA1(4cd7519245c0aa816934a43e6743160f715d7dc2) )
1159 ROM_LOAD32_WORD( "pf6-sg070.ic86", 0x400000, 0x100000, CRC(9b5b09d7) SHA1(698a6aab41e495bd0c37a19aee16a84f04d15797) )
1160 ROM_LOAD32_WORD( "pf9-sh001.ic84", 0x400002, 0x100000, CRC(9f25090e) SHA1(12ff0431ef6550db446985c8914ac7d78eec6b6d) )
1161
1162 ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
1163 ROM_LOAD( "3.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) )
1164 ROM_RELOAD( 0x10000, 0x20000 )
1165 ROM_END
1166
1167 ROM_START( sf2ceb2 ) // sf2ceeab3 in FBNeo, all ROMs but the first two program ROMs match sf2mdt. Dump has been confirmed on 2 different PCBs
1168 ROM_REGION( CODE_SIZE, "maincpu", 0 )
1169 ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(11b5fe98) SHA1(6dda11e6c443a7c0ddf17a9840c93be00a424472) )
1170 ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(6d948623) SHA1(0bcdda9ba2ef2051ad70277fbc383035a63540f3) )
1171 ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
1172 ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
1173
1174 ROM_REGION( 0x600000, "gfx", 0 ) // rearranged in init
1175 ROM_LOAD64_WORD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) )
1176 ROM_LOAD64_WORD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) )
1177 ROM_LOAD64_WORD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) )
1178 ROM_LOAD64_WORD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) )
1179 ROM_LOAD64_WORD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) )
1180 ROM_LOAD64_WORD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) )
1181 ROM_LOAD64_WORD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) )
1182 ROM_LOAD64_WORD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) )
1183 ROM_LOAD64_WORD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) )
1184 ROM_LOAD64_WORD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) )
1185 ROM_LOAD64_WORD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) )
1186 ROM_LOAD64_WORD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) )
1187
1188 ROM_REGION( 0x30000, "audiocpu", 0 ) // Sound program + samples
1189 ROM_LOAD( "5.ic26", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
1190 ROM_RELOAD( 0x10000, 0x20000 )
1191 ROM_END
1192
1193 ROM_START( sf2ceb3 ) // sf2ceeab4 in FBNeo, all ROMs but the first match sf2ceb2. Changes do not seem a result of bit-rot
1194 ROM_REGION( CODE_SIZE, "maincpu", 0 ) // main CPU has a (sic) 'Street Figter III 00325' sticker
1195 ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(30848e16) SHA1(b48809350f033010d33666a8cd5a610f9721f994) )
1196 ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(6d948623) SHA1(0bcdda9ba2ef2051ad70277fbc383035a63540f3) )
1197 ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
1198 ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
1199
1200 ROM_REGION( 0x600000, "gfx", 0 ) // rearranged in init
1201 ROM_LOAD64_WORD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) )
1202 ROM_LOAD64_WORD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) )
1203 ROM_LOAD64_WORD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) )
1204 ROM_LOAD64_WORD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) )
1205 ROM_LOAD64_WORD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) )
1206 ROM_LOAD64_WORD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) )
1207 ROM_LOAD64_WORD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) )
1208 ROM_LOAD64_WORD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) )
1209 ROM_LOAD64_WORD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) )
1210 ROM_LOAD64_WORD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) )
1211 ROM_LOAD64_WORD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) )
1212 ROM_LOAD64_WORD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) )
1213
1214 ROM_REGION( 0x30000, "audiocpu", 0 ) // Sound program + samples
1215 ROM_LOAD( "5.ic26", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
1216 ROM_RELOAD( 0x10000, 0x20000 )
1217 ROM_END
1218
1219 ROM_START( sf2ceb4 ) // sf2ceeab5 in FBNeo, all ROMs but ic171 match sf2ceb2. Dump has been confirmed on 3 different PCBs
1220 ROM_REGION( CODE_SIZE, "maincpu", 0 )
1221 ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(11b5fe98) SHA1(6dda11e6c443a7c0ddf17a9840c93be00a424472) )
1222 ROM_LOAD16_BYTE( "5.ic171", 0x000001, 0x80000, CRC(43e85f2c) SHA1(56026e5d0ba4e0fb1bc92b981f69d0fc9d7af1d2) )
1223 ROM_LOAD16_BYTE( "2.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
1224 ROM_LOAD16_BYTE( "4.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
1225
1226 ROM_REGION( 0x600000, "gfx", 0 ) // rearranged in init
1227 ROM_LOAD64_WORD( "10.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) )
1228 ROM_LOAD64_WORD( "7.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) )
1229 ROM_LOAD64_WORD( "16.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) )
1230 ROM_LOAD64_WORD( "13.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) )
1231 ROM_LOAD64_WORD( "11.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) )
1232 ROM_LOAD64_WORD( "8.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) )
1233 ROM_LOAD64_WORD( "17.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) )
1234 ROM_LOAD64_WORD( "14.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) )
1235 ROM_LOAD64_WORD( "9.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) )
1236 ROM_LOAD64_WORD( "6.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) )
1237 ROM_LOAD64_WORD( "15.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) )
1238 ROM_LOAD64_WORD( "12.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) )
1239
1240 ROM_REGION( 0x30000, "audiocpu", 0 ) // Sound program + samples
1241 ROM_LOAD( "1.ic26", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
1242 ROM_RELOAD( 0x10000, 0x20000 )
1243 ROM_END
1244
1245 // ************************************************************************* SF2MDT, SF2MDTA, SF2MDTB
1246
1247 /*
1248 CPU
1249 1x MC68000P12 (main)
1250 1x TPC1020AFN-084C (main)
1251 1x Z0840006PSC-Z80CPU (sound)
1252 1x YM2151 (sound)
1253 1x YM3012 (sound)
1254 2x M5205 (sound)
1255 2x LM324N (sound)
1256 1x TDA2003 (sound)
1257 1x oscillator 24.000000MHz
1258 1x oscillator 30.000MHz
1259
1260 ROMs
1261 14x AM27C040 (1,3,6,7,8,9,10,11,12,13,14,15,16,17)
1262 3x TMS27C010A (2,4,5)
1263 3x PAL 16S20 (ic7,ic72, ic80) (read protected, not dumped)
1264 3x GAL20V8A (ic120, ic121, ic169) (read protected, not dumped)
1265
1266 Note
1267 1x JAMMA edge connector
1268 1x trimmer (volume)
1269 3x 8x2 switches dip
1270 */
1271 ROM_START( sf2mdt )
1272 ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
1273 ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(5301b41f) SHA1(6855a57b21e8c5d74e5cb18f9ce6af650d7fb422) )
1274 ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(c1c803f6) SHA1(9fe18ae2553a63d8e4dcc20bafd5a4634f8b93c4) )
1275 ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(1073b7b6) SHA1(81ca1eab65ceac69520584bb23a684ccb9d92f89) )
1276 ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(924c6ce2) SHA1(676a912652bd75da5087f0c7eae047b7681a993c) )
1277
1278 ROM_REGION( 0x600000, "gfx", 0 ) /* rearranged in init */
1279 ROM_LOAD64_WORD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) )
1280 ROM_LOAD64_WORD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) )
1281 ROM_LOAD64_WORD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) )
1282 ROM_LOAD64_WORD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) )
1283 ROM_LOAD64_WORD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) )
1284 ROM_LOAD64_WORD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) )
1285 ROM_LOAD64_WORD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) )
1286 ROM_LOAD64_WORD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) )
1287 ROM_LOAD64_WORD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) )
1288 ROM_LOAD64_WORD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) )
1289 ROM_LOAD64_WORD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) )
1290 ROM_LOAD64_WORD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) )
1291
1292 ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
1293 ROM_LOAD( "5.ic26", 0x00000, 0x20000, CRC(17d5ba8a) SHA1(6ff3b8860d7e1fdee3561846f645eb4d3a8965ec) )
1294 ROM_RELOAD( 0x10000, 0x20000 )
1295 ROM_END
1296
1297 ROM_START( sf2mdta )
1298 /* unconfirmed if working on real hardware, pf4 is a bad dump (bad pin) */
1299 ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
1300 ROM_LOAD16_BYTE( "3.mdta", 0x000000, 0x80000, CRC(9f544ef4) SHA1(f784809e59a5fcabd6d15d3f1c36250a5528c9f8) )
1301 ROM_LOAD16_BYTE( "5.mdta", 0x000001, 0x80000, CRC(d76d6621) SHA1(aa9cea9ddace212a7b3c535b8f6e3fbc50da1f94) )
1302 ROM_LOAD16_BYTE( "2.mdta", 0x100000, 0x20000, CRC(74844192) SHA1(99cd546c78cce7f632007af454d8a55eddb6b19b) )
1303 ROM_LOAD16_BYTE( "4.mdta", 0x100001, 0x20000, CRC(bd98ff15) SHA1(ed902d949b0b5c5beaaea78a4b418ffa6db9e1df) )
1304
1305 ROM_REGION( 0x600000, "gfx", 0 )
1306 ROM_LOAD32_WORD( "pf4 sh058.ic89", 0x000000, 0x100000, CRC(16289710) SHA1(4f3236712b979a1eb2fa97740e32d7913cee0d0d) )
1307 ROM_LOAD32_WORD( "pf7 sh072.ic92", 0x000002, 0x100000, CRC(fb78022e) SHA1(b8974387056dd52db96b01cc4648edc814398c7e) )
1308 ROM_LOAD32_WORD( "pf5 sh036.ic90", 0x200000, 0x100000, CRC(0a6be48b) SHA1(b7e72c94d4e3eb4a6bba6608d9b9a093c8901ad9) )
1309 ROM_LOAD32_WORD( "pf8 sh074.ic93", 0x200002, 0x100000, CRC(6258c7cf) SHA1(4cd7519245c0aa816934a43e6743160f715d7dc2) )
1310 ROM_LOAD32_WORD( "pf6 sh070.ic88", 0x400000, 0x100000, CRC(9b5b09d7) SHA1(698a6aab41e495bd0c37a19aee16a84f04d15797) )
1311 ROM_LOAD32_WORD( "pf9 sh001.ic91", 0x400002, 0x100000, CRC(9f25090e) SHA1(12ff0431ef6550db446985c8914ac7d78eec6b6d) )
1312
1313 ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
1314 ROM_LOAD( "1.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) )
1315 ROM_RELOAD( 0x10000, 0x20000 )
1316 ROM_END
1317
1318 ROM_START( sf2mdtb )
1319 ROM_REGION( CODE_SIZE, "maincpu", 0 ) /* 68000 code */
1320 ROM_LOAD16_BYTE( "3.ic172", 0x000000, 0x80000, CRC(0bdb9da2) SHA1(5224ee81d94be70a84ffaa3a56b8093aa36d6b4f) ) // sldh
1321 ROM_LOAD16_BYTE( "1.ic171", 0x000001, 0x80000, CRC(d88abbce) SHA1(57667a92710bb1d37daed09262c3064d09cbf4af) ) // sldh
1322 ROM_LOAD16_BYTE( "4.ic176", 0x100000, 0x20000, CRC(74844192) SHA1(99cd546c78cce7f632007af454d8a55eddb6b19b) ) // sldh
1323 ROM_LOAD16_BYTE( "2.ic175", 0x100001, 0x20000, CRC(bd98ff15) SHA1(ed902d949b0b5c5beaaea78a4b418ffa6db9e1df) ) // sldh
1324
1325 ROM_REGION( 0x600000, "gfx", 0 ) /* rearranged in init */
1326 ROM_LOAD64_WORD( "7.ic90", 0x000000, 0x80000, CRC(896eaf48) SHA1(5a13ae8b554e05eed3d5749aaf5845d499bce45b) )
1327 ROM_LOAD64_WORD( "10.ic88", 0x000002, 0x80000, CRC(ef3f5be8) SHA1(d4e1de7d7caf6977e48544d6701618ae70c717f9) )
1328 ROM_LOAD64_WORD( "13.ic89", 0x000004, 0x80000, CRC(305dd72a) SHA1(c373b517c23f3b019abb06e21f6b9ab6e1e47909) )
1329 ROM_LOAD64_WORD( "16.ic87", 0x000006, 0x80000, CRC(e57f6db9) SHA1(b37f95737804002ec0e237472eaacf0bc1e868e8) )
1330 ROM_LOAD64_WORD( "6.ic91", 0x200000, 0x80000, CRC(054cd5c4) SHA1(07f275e118c141a84ca15a2e9edc81694af37cf2) )
1331 ROM_LOAD64_WORD( "9.ic93", 0x200002, 0x80000, CRC(818ca33d) SHA1(dfb707e17c83216f8a62e905f8c7cd6d406b417b) )
1332 ROM_LOAD64_WORD( "12.ic92", 0x200004, 0x80000, CRC(87e069e8) SHA1(cddd3be84f8379134590bfbbb080518f28120e49) )
1333 ROM_LOAD64_WORD( "15.ic94", 0x200006, 0x80000, CRC(5dfb44d1) SHA1(08e44b8efc84f9cfc829aabf704155ddc700de76) )
1334 ROM_LOAD64_WORD( "8.ic86", 0x400000, 0x80000, CRC(34bbb3fa) SHA1(7794e89258f12b17d38c3d302dc15c502a8c8eb6) )
1335 ROM_LOAD64_WORD( "11.ic84", 0x400002, 0x80000, CRC(cea6d1d6) SHA1(9c953db42f0d877e43c0c239f69a00df39a18295) )
1336 ROM_LOAD64_WORD( "14.ic85", 0x400004, 0x80000, CRC(7d9f1a67) SHA1(6deb7fff867c42b13a32bb11eda798cfdb4cbaa8) )
1337 ROM_LOAD64_WORD( "17.ic83", 0x400006, 0x80000, CRC(91a9a05d) SHA1(5266ceddd2df925e79b4200843dec2f7aa9297b3) )
1338
1339 ROM_REGION( 0x30000, "audiocpu", 0 ) /* Sound program + samples */
1340 ROM_LOAD( "5.ic28", 0x00000, 0x20000, CRC(d5bee9cc) SHA1(e638cb5ce7a22c18b60296a7defe8b03418da56c) )
1341 ROM_RELOAD( 0x10000, 0x20000 )
1342 ROM_END
1343
1344 // ************************************************************************* DRIVER MACROS
1345
1346 GAME( 1991, captcommb2, captcomm, captcommb2, captcommb2, captcommb2_state, init_captcommb2, ROT0, "bootleg", "Captain Commando (bootleg with 2xMSM5205)", MACHINE_SUPPORTS_SAVE ) // 911014 ETC
1347
1348 GAME( 1991, knightsb, knights, knightsb, knights, captcommb2_state, init_knightsb, ROT0, "bootleg", "Knights of the Round (bootleg with 2xMSM5205, set 1)", MACHINE_SUPPORTS_SAVE ) // 911127 ETC
1349 GAME( 1991, knightsb3, knights, knightsb, knights, captcommb2_state, init_knightsb, ROT0, "bootleg", "Knights of the Round (bootleg with 2xMSM5205, set 2)", MACHINE_SUPPORTS_SAVE ) // 911127 ETC
1350
1351 GAME( 1992, sf2b, sf2, sf2b, sf2mdt, cps1bl_5205_state, init_sf2b, ROT0, "bootleg (Playmark)", "Street Fighter II: The World Warrior (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 910204 ETC
1352 GAME( 1992, sf2b2, sf2, sf2b, sf2mdt, cps1bl_5205_state, init_sf2mdtb, ROT0, "bootleg", "Street Fighter II: The World Warrior (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 910204 ETC
1353
1354 GAME( 1992, sf2ceb, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdta, ROT0, "bootleg (Playmark)", "Street Fighter II': Champion Edition (Playmark bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
1355 GAME( 1992, sf2ceb2, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdtb, ROT0, "bootleg", "Street Fighter II': Champion Edition (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
1356 GAME( 1992, sf2ceb3, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdtb, ROT0, "bootleg", "Street Fighter II': Champion Edition (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
1357 GAME( 1992, sf2ceb4, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdtb, ROT0, "bootleg", "Street Fighter II': Champion Edition (Playmark bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
1358
1359 GAME( 1992, sf2mdt, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdt, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 1)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
1360 GAME( 1992, sf2mdta, sf2ce, sf2mdt, sf2mdt, cps1bl_5205_state, init_sf2mdta, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 2)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
1361 GAME( 1992, sf2mdtb, sf2ce, sf2mdt, sf2mdtb, cps1bl_5205_state, init_sf2mdtb, ROT0, "bootleg", "Street Fighter II': Magic Delta Turbo (bootleg, set 3)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) // 920313 ETC
1362