1 // license:BSD-3-Clause
2 // copyright-holders:Bryan McPhail, Acho A. Tang, Nicola Salmoria
3 /***************************************************************************
4 
5     POW - Prisoners Of War (US version 1)    A7008   SNK 1988
6     POW - Prisoners Of War (Japan)           A7008   SNK 1988
7     SAR - Search And Rescue (World)          A8007   SNK 1989
8     SAR - Search And Rescue (US)             A8007   SNK 1989
9     SAR - Search And Rescue (Japan)          A8007   SNK 1989
10     Street Smart (US version 1)              A8007   SNK 1989
11     Street Smart (US version 2)              A7008   SNK 1989
12     Street Smart (World version 1)           A8007   SNK 1989
13     Street Smart (Japan version 1)           A8007   SNK 1989
14     Ikari III - The Rescue (US)              A7007   SNK 1989
15 
16     For some strange reason version 2 of Street Smart runs on Pow hardware!
17 
18     Driver by Bryan McPhail, Acho A. Tang, Nicola Salmoria
19 
20 
21 Notes:
22 ------
23 - All evidence suggests that the sprite hardware doesn't have a frame buffer
24   but just a raster line buffer, like NeoGeo (unsurprisingly). The maths
25   confirm this:
26   384 pixels per raster line at 4 clocks per pixel = 1536 clocks per line
27   96 sprites * 16 pixels per sprite  = 1536 clocks to draw the sprites
28 
29   While this board doesn't have a raster interrupt capability, the way how
30   sprites are drawn needs to be kept in consideration because at least in one
31   case the program modifies the sprite list in the middle of the frame:
32   bug 00871: pow: At 3/4 of the 1st level, there is a large pillar, which pops up too late.
33   The problem in this case is that the sprite list is built by the IRQ handler,
34   however there is code in the main loop that clears some portions of sprite
35   RAM under certain conditions. Usually, this isn't a problem, but in that
36   specific point the sprites added by the IRQ handler are erased during the
37   frame.
38   To avoid glitches in that case, we force a partial screen update every time
39   sprite RAM changes. It's possible that there are other unknown small glitches
40   fixed by this (earlier notes in this driver talked about "sprite flickerings
41   and pop-ups" but I don't know where they happened).
42 
43 ***************************************************************************/
44 
45 #include "emu.h"
46 #include "includes/snk68.h"
47 
48 #include "cpu/m68000/m68000.h"
49 #include "cpu/z80/z80.h"
50 #include "sound/3812intf.h"
51 #include "sound/msm5205.h"
52 #include "emupal.h"
53 #include "speaker.h"
54 
55 
56 /******************************************************************************/
57 
sound_w(uint8_t data)58 void snk68_state::sound_w(uint8_t data)
59 {
60 	m_soundlatch->write(data);
61 	m_soundcpu->pulse_input_line(INPUT_LINE_NMI, attotime::zero); // caused by 74123
62 }
63 
64 /*******************************************************************************/
65 
pow_map(address_map & map)66 void snk68_state::pow_map(address_map &map)
67 {
68 	map(0x000000, 0x03ffff).rom();
69 	map(0x040000, 0x043fff).ram();
70 	map(0x080000, 0x080000).lr8(NAME([this] () -> u8 { return m_p2_io->read(); }));
71 	map(0x080001, 0x080001).lr8(NAME([this] () -> u8 { return m_p1_io->read(); }));
72 	map(0x080000, 0x080000).w(FUNC(snk68_state::sound_w));
73 	map(0x0c0000, 0x0c0001).portr("SYSTEM");
74 	map(0x0c0001, 0x0c0001).w(FUNC(snk68_state::flipscreen_w));   // + char bank
75 	map(0x0e0000, 0x0e0001).nopr(); /* Watchdog or IRQ ack */
76 	map(0x0e8000, 0x0e8001).nopr(); /* Watchdog or IRQ ack */
77 	map(0x0f0000, 0x0f0001).portr("DSW1");
78 	map(0x0f0008, 0x0f0009).portr("DSW2");
79 //  map(0x0f0008, 0x0f0009).nopw();    /* ?? */
80 	map(0x100000, 0x100fff).rw(FUNC(snk68_state::fg_videoram_r), FUNC(snk68_state::fg_videoram_w)).mirror(0x1000).share("fg_videoram");   // 8-bit
81 	map(0x200000, 0x207fff).rw(m_sprites, FUNC(snk68_spr_device::spriteram_r), FUNC(snk68_spr_device::spriteram_w)).share("spriteram");   // only partially populated
82 	map(0x400000, 0x400fff).rw(m_palette, FUNC(alpha68k_palette_device::read), FUNC(alpha68k_palette_device::write));
83 }
84 
85 /*******************************************************************************/
86 
machine_start()87 void searchar_state::machine_start()
88 {
89 	save_item(NAME(m_invert_controls));
90 }
91 
rotary_1_r()92 uint16_t searchar_state::rotary_1_r()
93 {
94 	return (( ~(1 << m_rotary_io[0]->read()) )<<8)&0xff00;
95 }
96 
rotary_2_r()97 uint16_t searchar_state::rotary_2_r()
98 {
99 	return (( ~(1 << m_rotary_io[1]->read()) )<<8)&0xff00;
100 }
101 
rotary_lsb_r()102 uint16_t searchar_state::rotary_lsb_r()
103 {
104 	return ((( ~(1 << m_rotary_io[1]->read())  ) <<4)&0xf000)
105 			+ ((( ~(1 << m_rotary_io[0]->read())  )    )&0x0f00);
106 }
107 
108 /*******************************************************************************/
109 
searchar_map(address_map & map)110 void searchar_state::searchar_map(address_map &map)
111 {
112 	map(0x000000, 0x03ffff).rom();
113 	map(0x040000, 0x043fff).ram();
114 	map(0x080001, 0x080001).lr8(NAME([this] () -> u8 { return m_p1_io->read() ^ m_invert_controls; }));
115 	map(0x080003, 0x080003).lr8(NAME([this] () -> u8 { return m_p2_io->read() ^ m_invert_controls; }));
116 	map(0x080005, 0x080005).lr8(NAME([this] () -> u8 { return m_system_io->read() ^ m_invert_controls; }));
117 	map(0x080000, 0x080000).w(FUNC(searchar_state::sound_w));
118 	/* top byte unknown, bottom is protection in ikari3 and streetsm */
119 	map(0x080007, 0x080007).lw8(NAME([this] (u8 data){ m_invert_controls = ((data & 0xff) == 0x07) ? 0xff : 0x00; } ));
120 	map(0x0c0001, 0x0c0001).w(FUNC(searchar_state::flipscreen_w));
121 	map(0x0c0000, 0x0c0001).r(FUNC(searchar_state::rotary_1_r)); /* Player 1 rotary */
122 	map(0x0c8000, 0x0c8001).r(FUNC(searchar_state::rotary_2_r)); /* Player 2 rotary */
123 	map(0x0d0000, 0x0d0001).r(FUNC(searchar_state::rotary_lsb_r)); /* Extra rotary bits */
124 	map(0x0e0000, 0x0e0001).nopr(); /* Watchdog or IRQ ack */
125 	map(0x0e8000, 0x0e8001).nopr(); /* Watchdog or IRQ ack */
126 //  map(0x0f0000, 0x0f0001).nopw();    /* ?? */
127 	map(0x0f0000, 0x0f0001).portr("DSW1");
128 	map(0x0f0008, 0x0f0009).portr("DSW2");
129 	map(0x0f8000, 0x0f8000).r("soundlatch2", FUNC(generic_latch_8_device::read));
130 	map(0x100000, 0x107fff).rw(m_sprites, FUNC(snk68_spr_device::spriteram_r), FUNC(snk68_spr_device::spriteram_w)).share("spriteram");   // only partially populated
131 	map(0x200000, 0x200fff).ram().w(FUNC(searchar_state::fg_videoram_w)).mirror(0x1000).share("fg_videoram"); /* Mirror is used by Ikari 3 */
132 	map(0x300000, 0x33ffff).rom().region("maincpu", 0x40000); /* Extra code bank */
133 	map(0x400000, 0x400fff).rw(m_palette, FUNC(alpha68k_palette_device::read), FUNC(alpha68k_palette_device::write));
134 }
135 
136 /******************************************************************************/
137 
sound_map(address_map & map)138 void snk68_state::sound_map(address_map &map)
139 {
140 	map(0x0000, 0xefff).rom();
141 	map(0xf000, 0xf7ff).ram();
142 	map(0xf800, 0xf800).r(m_soundlatch, FUNC(generic_latch_8_device::read)).w("soundlatch2", FUNC(generic_latch_8_device::write));
143 }
144 
D7759_write_port_0_w(uint8_t data)145 void snk68_state::D7759_write_port_0_w(uint8_t data)
146 {
147 	m_upd7759->port_w(data);
148 	m_upd7759->start_w(0);
149 	m_upd7759->start_w(1);
150 }
151 
sound_io_map(address_map & map)152 void snk68_state::sound_io_map(address_map &map)
153 {
154 	map.global_mask(0xff);
155 	map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
156 	map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w));
157 	map(0x40, 0x40).w(FUNC(snk68_state::D7759_write_port_0_w));
158 	map(0x80, 0x80).lw8(NAME([this] (u8 data) { m_upd7759->reset_w(BIT(data, 7)); } ));
159 }
160 
powb_sound_io_map(address_map & map)161 void snk68_state::powb_sound_io_map(address_map &map)
162 {
163 	map.global_mask(0xff);
164 	map(0x00, 0x00).rw("ymsnd", FUNC(ym3812_device::status_port_r), FUNC(ym3812_device::control_port_w));
165 	map(0x20, 0x20).w("ymsnd", FUNC(ym3812_device::write_port_w));
166 }
167 
168 /******************************************************************************/
169 
170 static INPUT_PORTS_START( pow )
171 	PORT_START("P1")    /* Player 1 controls */
172 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP   ) PORT_8WAY
173 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
174 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
175 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
176 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
177 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
178 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
179 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
180 
181 	PORT_START("P2")    /* Player 2 controls */
182 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP   ) PORT_8WAY PORT_PLAYER(2)
183 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
184 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
185 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
186 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
187 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
188 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
189 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
190 
191 	PORT_START("SYSTEM")
192 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
193 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE )    /* same as the service mode dsw */
194 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
195 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
196 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
197 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
198 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
199 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
200 
201 	PORT_START("DSW1")
202 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
203 	PORT_DIPNAME( 0x0300, 0x0000, DEF_STR( Coin_B ) )       PORT_DIPLOCATION("SW1:!8,!7")
204 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_1C ) )
205 	PORT_DIPSETTING(      0x0200, DEF_STR( 1C_2C ) )
206 	PORT_DIPSETTING(      0x0100, DEF_STR( 1C_3C ) )
207 	PORT_DIPSETTING(      0x0300, DEF_STR( 1C_4C ) )
208 	PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Coin_A ) )       PORT_DIPLOCATION("SW1:!6,!5")
209 	PORT_DIPSETTING(      0x0c00, DEF_STR( 4C_1C ) )
210 	PORT_DIPSETTING(      0x0400, DEF_STR( 3C_1C ) )
211 	PORT_DIPSETTING(      0x0800, DEF_STR( 2C_1C ) )
212 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_1C ) )
213 	PORT_DIPNAME( 0x1000, 0x1000, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:!4")
214 	PORT_DIPSETTING(      0x0000, "2" )
215 	PORT_DIPSETTING(      0x1000, "3" )
216 	PORT_DIPNAME( 0x2000, 0x0000, "Bonus Occurrence" )      PORT_DIPLOCATION("SW1:!3")
217 	PORT_DIPSETTING(      0x0000, "1st & 2nd only" )
218 	PORT_DIPSETTING(      0x2000, "1st & every 2nd" )
219 	PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Language ) )     PORT_DIPLOCATION("SW1:!2")
220 	PORT_DIPSETTING(      0x0000, DEF_STR( English ) )
221 	PORT_DIPSETTING(      0x4000, DEF_STR( Japanese ) )
222 	PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen ) )      PORT_DIPLOCATION("SW1:!1")
223 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
224 	PORT_DIPSETTING(      0x8000, DEF_STR( On ) )
225 
226 	PORT_START("DSW2")
227 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
228 	PORT_SERVICE_DIPLOC(  0x0100, IP_ACTIVE_HIGH, "SW2:!8" )
229 	PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Allow_Continue ) )   PORT_DIPLOCATION("SW2:!7")
230 	PORT_DIPSETTING(      0x0200, DEF_STR( No ) )
231 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
232 	PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("SW2:!6,!5")
233 	PORT_DIPSETTING(      0x0000, "20k 50k" )
234 	PORT_DIPSETTING(      0x0800, "40k 100k" )
235 	PORT_DIPSETTING(      0x0400, "60k 150k" )
236 	PORT_DIPSETTING(      0x0c00, DEF_STR( None ) )
237 	PORT_DIPNAME( 0x3000, 0x0000, "Game Mode" )         PORT_DIPLOCATION("SW2:!4,!3")
238 	PORT_DIPSETTING(      0x2000, "Demo Sounds Off" )
239 	PORT_DIPSETTING(      0x0000, "Demo Sounds On" )
240 	PORT_DIPSETTING(      0x3000, "Freeze" )
241 	PORT_DIPSETTING(      0x1000, "Infinite Lives (Cheat)")
242 	PORT_DIPNAME( 0xc000, 0x0000, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("SW2:!2,!1")
243 	PORT_DIPSETTING(      0x8000, DEF_STR( Easy ) )
244 	PORT_DIPSETTING(      0x0000, DEF_STR( Normal ) )
245 	PORT_DIPSETTING(      0x4000, DEF_STR( Hard ) )
246 	PORT_DIPSETTING(      0xc000, DEF_STR( Hardest ) )
247 INPUT_PORTS_END
248 
249 /* Identical to pow, but the Language dip switch has no effect */
250 static INPUT_PORTS_START( powj )
251 	PORT_INCLUDE( pow )
252 
253 	PORT_MODIFY("DSW1")
254 	PORT_DIPUNUSED_DIPLOC( 0x4000, IP_ACTIVE_HIGH, "SW1:!2" )
255 INPUT_PORTS_END
256 
257 
258 static INPUT_PORTS_START( searchar )
259 	PORT_START("P1")    /* Player 1 controls */
260 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP   ) PORT_8WAY
261 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
262 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
263 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
264 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
265 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 )
266 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
267 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
268 
269 	PORT_START("P2")    /* Player 2 controls */
270 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP   ) PORT_8WAY PORT_PLAYER(2)
271 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
272 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
273 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
274 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
275 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
276 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNUSED )
277 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
278 
279 	PORT_START("SYSTEM")
280 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
281 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE )    /* same as the service mode dsw */
282 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
283 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
284 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
285 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
286 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
287 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
288 
289 	PORT_START("DSW1")
290 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
291 	PORT_DIPNAME( 0x0100, 0x0000, DEF_STR( Joystick ) )     PORT_DIPLOCATION("SW1:!8")
292 	PORT_DIPSETTING(      0x0000, "Rotary Joystick" )
293 	PORT_DIPSETTING(      0x0100, "Standard Joystick" )
294 	PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:!7")
295 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
296 	PORT_DIPSETTING(      0x0200, DEF_STR( On ) )
297 	PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:!6,!5")
298 	PORT_DIPSETTING(      0x0800, "2" )
299 	PORT_DIPSETTING(      0x0000, "3" )
300 	PORT_DIPSETTING(      0x0400, "4" )
301 	PORT_DIPSETTING(      0x0c00, "5" )
302 	PORT_DIPNAME( 0x3000, 0x0000, "Coin A & B" )            PORT_DIPLOCATION("SW1:!4,!3")
303 	PORT_DIPSETTING(      0x2000, DEF_STR( 2C_1C ) )
304 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_1C ) )
305 	PORT_DIPSETTING(      0x1000, DEF_STR( 1C_2C ) )
306 	PORT_DIPSETTING(      0x3000, DEF_STR( Free_Play ) )
307 	PORT_DIPNAME( 0x4000, 0x0000, "Bonus Occurrence" )      PORT_DIPLOCATION("SW1:!2")
308 	PORT_DIPSETTING(      0x0000, "1st & 2nd only" )
309 	PORT_DIPSETTING(      0x4000, "1st & every 2nd" )
310 	PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen ) )      PORT_DIPLOCATION("SW1:!1")
311 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
312 	PORT_DIPSETTING(      0x8000, DEF_STR( On ) )
313 
314 	PORT_START("DSW2")
315 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
316 	PORT_SERVICE_DIPLOC(  0x0100, IP_ACTIVE_HIGH, "SW2:!8" )
317 	PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Allow_Continue ) )   PORT_DIPLOCATION("SW2:!7")
318 	PORT_DIPSETTING(      0x0200, DEF_STR( No ) )
319 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
320 	PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("SW2:!6,!5")
321 	PORT_DIPSETTING(      0x0000, "50k 200k" )
322 	PORT_DIPSETTING(      0x0800, "70k 270k" )
323 	PORT_DIPSETTING(      0x0400, "90k 350k" )
324 	PORT_DIPSETTING(      0x0c00, DEF_STR( None ) )
325 	PORT_DIPNAME( 0x3000, 0x0000, "Game Mode" )         PORT_DIPLOCATION("SW2:!4,!3")
326 	PORT_DIPSETTING(      0x2000, "Demo Sounds Off" )
327 	PORT_DIPSETTING(      0x0000, "Demo Sounds On" )
328 	PORT_DIPSETTING(      0x3000, "Freeze" )
329 	PORT_DIPSETTING(      0x1000, "Infinite Lives (Cheat)")
330 	PORT_DIPNAME( 0xc000, 0x0000, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("SW2:!2,!1")
331 	PORT_DIPSETTING(      0x8000, DEF_STR( Easy ) )
332 	PORT_DIPSETTING(      0x0000, DEF_STR( Normal ) )
333 	PORT_DIPSETTING(      0x4000, DEF_STR( Hard ) )
334 	PORT_DIPSETTING(      0xc000, DEF_STR( Hardest ) )
335 
336 	PORT_START("ROT1")  /* player 1 12-way rotary control  */
337 	PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL )  PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(5) PORT_KEYDELTA(5) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_REVERSE PORT_FULL_TURN_COUNT(12)
338 
339 	PORT_START("ROT2")  /* player 2 12-way rotary control */
340 	PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL )  PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(5) PORT_KEYDELTA(5) PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M) PORT_PLAYER(2) PORT_REVERSE PORT_FULL_TURN_COUNT(12)
341 INPUT_PORTS_END
342 
343 
344 static INPUT_PORTS_START( streetsm )
345 	PORT_START("P1")    /* Player 1 controls */
346 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP   ) PORT_8WAY
347 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
348 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
349 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
350 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
351 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 )
352 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
353 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
354 
355 	PORT_START("P2")    /* Player 2 controls */
356 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP   ) PORT_8WAY PORT_PLAYER(2)
357 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
358 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
359 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
360 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
361 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
362 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
363 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
364 
365 	PORT_START("SYSTEM")
366 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
367 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE )    /* same as the service mode dsw */
368 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
369 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
370 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
371 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
372 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
373 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
374 
375 	PORT_START("DSW1")  /* Dip switches (Active high) */
376 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
377 	PORT_DIPNAME( 0x0300, 0x0000, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:!8,7")
378 	PORT_DIPSETTING(      0x0200, "1" )
379 	PORT_DIPSETTING(      0x0000, "2" )
380 	PORT_DIPSETTING(      0x0100, "3" )
381 	PORT_DIPSETTING(      0x0300, "4" )
382 	PORT_DIPNAME( 0x0c00, 0x0000, "Coin A & B" )            PORT_DIPLOCATION("SW1:!6,5")
383 	PORT_DIPSETTING(      0x0800, DEF_STR( 2C_1C ) )
384 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_1C ) )
385 	PORT_DIPSETTING(      0x0400, DEF_STR( 1C_2C ) )
386 	PORT_DIPSETTING(      0x0c00, DEF_STR( Free_Play ) )
387 	PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:!4")
388 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
389 	PORT_DIPSETTING(      0x1000, DEF_STR( On ) )
390 	PORT_DIPNAME( 0x2000, 0x0000, "Bonus Occurrence" )      PORT_DIPLOCATION("SW1:!3")
391 	PORT_DIPSETTING(      0x0000, "1st & 2nd only" )
392 	PORT_DIPSETTING(      0x2000, "1st & every 2nd" )
393 	PORT_DIPNAME( 0x4000, 0x0000, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:!2")
394 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
395 	PORT_DIPSETTING(      0x4000, DEF_STR( On ) )
396 	PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen ) )      PORT_DIPLOCATION("SW1:!1")
397 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
398 	PORT_DIPSETTING(      0x8000, DEF_STR( On ) )
399 
400 	PORT_START("DSW2") /* Dip switches (Active high) */
401 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
402 	PORT_SERVICE_DIPLOC(  0x0100, IP_ACTIVE_HIGH, "SW2:!8" )
403 	PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Allow_Continue ) )   PORT_DIPLOCATION("SW2:!7")
404 	PORT_DIPSETTING(      0x0200, DEF_STR( No ) )
405 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
406 	PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("SW2:!6,!5")
407 	PORT_DIPSETTING(      0x0000, "200k 400k" )
408 	PORT_DIPSETTING(      0x0800, "400k 600k" )
409 	PORT_DIPSETTING(      0x0400, "600k 800k" )
410 	PORT_DIPSETTING(      0x0c00, DEF_STR( None ) )
411 	PORT_DIPNAME( 0x3000, 0x0000, "Game Mode" )         PORT_DIPLOCATION("SW2:!4,!3")
412 	PORT_DIPSETTING(      0x2000, "Demo Sounds Off" )
413 	PORT_DIPSETTING(      0x0000, "Demo Sounds On" )
414 	PORT_DIPSETTING(      0x3000, "Freeze" )
415 	PORT_DIPSETTING(      0x1000, "Infinite Lives (Cheat)")
416 	PORT_DIPNAME( 0xc000, 0x0000, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("SW2:!2,!1")
417 	PORT_DIPSETTING(      0x8000, DEF_STR( Easy ) )
418 	PORT_DIPSETTING(      0x0000, DEF_STR( Normal ) )
419 	PORT_DIPSETTING(      0x4000, DEF_STR( Hard ) )
420 	PORT_DIPSETTING(      0xc000, DEF_STR( Hardest ) )
421 
422 	PORT_START("ROT1")  /* player 1 12-way rotary control - not used in this game */
423 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
424 
425 	PORT_START("ROT2")  /* player 2 12-way rotary control - not used in this game */
426 	PORT_BIT( 0xff, IP_ACTIVE_LOW, IPT_UNUSED )
427 INPUT_PORTS_END
428 
429 /* Same as streetsm, but Coinage is different */
430 static INPUT_PORTS_START( streetsj )
431 	PORT_INCLUDE( streetsm )
432 
433 	PORT_MODIFY("DSW1")
434 	PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Coinage ) )      PORT_DIPLOCATION("SW1:!6,5")
435 	PORT_DIPSETTING(      0x0c00, "A 4/1 B 1/4" )
436 	PORT_DIPSETTING(      0x0400, "A 3/1 B 1/3" )
437 	PORT_DIPSETTING(      0x0800, "A 2/1 B 1/2" )
438 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_1C ) )
439 INPUT_PORTS_END
440 
441 
442 static INPUT_PORTS_START( ikari3 )
443 	PORT_START("P1")    /* Player 1 controls, maybe all are active_high? */
444 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP   ) PORT_8WAY
445 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
446 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
447 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
448 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 )
449 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 )
450 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 )
451 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 )
452 
453 	PORT_START("P2")    /* Player 2 controls */
454 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_UP   ) PORT_8WAY PORT_PLAYER(2)
455 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
456 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
457 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
458 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
459 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
460 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
461 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 )
462 
463 	PORT_START("SYSTEM")
464 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
465 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_SERVICE )    /* same as the service mode dsw */
466 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_UNKNOWN )
467 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_UNKNOWN )
468 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
469 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
470 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_UNKNOWN )
471 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_UNKNOWN )
472 
473 	PORT_START("DSW1")  /* Dip switches (Active high) */
474 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
475 	PORT_DIPNAME( 0x0300, 0x0000, DEF_STR( Lives ) )        PORT_DIPLOCATION("SW1:!8,!7")
476 	PORT_DIPSETTING(      0x0200, "2" )
477 	PORT_DIPSETTING(      0x0000, "3" )
478 	PORT_DIPSETTING(      0x0100, "4" )
479 	PORT_DIPSETTING(      0x0300, "5" )
480 	PORT_DIPNAME( 0x0c00, 0x0000, "Coin A & B" )            PORT_DIPLOCATION("SW1:!6,!5")
481 	PORT_DIPSETTING(      0x0800, "First 2 Coins/1 Credit then 1/1" )
482 	PORT_DIPSETTING(      0x0000, DEF_STR( 1C_1C ) )
483 	PORT_DIPSETTING(      0x0400, "First 1 Coin/2 Credits then 1/1" )
484 	PORT_DIPSETTING(      0x0c00, DEF_STR( Free_Play ) )
485 	PORT_DIPNAME( 0x1000, 0x0000, DEF_STR( Unknown ) )      PORT_DIPLOCATION("SW1:!4")
486 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
487 	PORT_DIPSETTING(      0x1000, DEF_STR( On ) )
488 	PORT_DIPNAME( 0x2000, 0x0000, "Bonus Occurrence" )      PORT_DIPLOCATION("SW1:!3")
489 	PORT_DIPSETTING(      0x0000, "1st & 2nd only" )
490 	PORT_DIPSETTING(      0x2000, "1st & every 2nd" )
491 	PORT_DIPNAME( 0x4000, 0x0000, "Blood" )             PORT_DIPLOCATION("SW1:!2")
492 	PORT_DIPSETTING(      0x4000, DEF_STR( Off ) )
493 	PORT_DIPSETTING(      0x0000, DEF_STR( On ) )
494 	PORT_DIPNAME( 0x8000, 0x0000, DEF_STR( Flip_Screen ) )      PORT_DIPLOCATION("SW1:!1")
495 	PORT_DIPSETTING(      0x0000, DEF_STR( Off ) )
496 	PORT_DIPSETTING(      0x8000, DEF_STR( On ) )
497 
498 	PORT_START("DSW2") /* Dip switches (Active high) */
499 	PORT_BIT( 0x00ff, IP_ACTIVE_LOW, IPT_UNUSED )
500 	PORT_SERVICE_DIPLOC(  0x0100, IP_ACTIVE_HIGH, "SW2:!8" )
501 	PORT_DIPNAME( 0x0200, 0x0000, DEF_STR( Allow_Continue ) )   PORT_DIPLOCATION("SW2:!7")
502 	PORT_DIPSETTING(      0x0200, DEF_STR( No ) )
503 	PORT_DIPSETTING(      0x0000, DEF_STR( Yes ) )
504 	PORT_DIPNAME( 0x0c00, 0x0000, DEF_STR( Bonus_Life ) )       PORT_DIPLOCATION("SW2:!6,!5")
505 	PORT_DIPSETTING(      0x0000, "20k 50k" )
506 	PORT_DIPSETTING(      0x0800, "40k 100k" )
507 	PORT_DIPSETTING(      0x0400, "60k 150k" )
508 	PORT_DIPSETTING(      0x0c00, DEF_STR( None ) )
509 	PORT_DIPNAME( 0x3000, 0x0000, "Game Mode" )         PORT_DIPLOCATION("SW2:!4,!3")
510 	PORT_DIPSETTING(      0x2000, "Demo Sounds Off" )
511 	PORT_DIPSETTING(      0x0000, "Demo Sounds On" )
512 	PORT_DIPSETTING(      0x3000, "Freeze" )
513 	PORT_DIPSETTING(      0x1000, "Infinite Lives (Cheat)")
514 	PORT_DIPNAME( 0xc000, 0x8000, DEF_STR( Difficulty ) )       PORT_DIPLOCATION("SW2:!2,!1")
515 	PORT_DIPSETTING(      0x0000, DEF_STR( Easy ) )
516 	PORT_DIPSETTING(      0x8000, DEF_STR( Normal ) )
517 	PORT_DIPSETTING(      0x4000, DEF_STR( Hard ) )
518 	PORT_DIPSETTING(      0xc000, DEF_STR( Hardest ) )
519 
520 	PORT_START("ROT1")  /* player 1 12-way rotary control */
521 	PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL )  PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(5) PORT_KEYDELTA(5) PORT_CODE_DEC(KEYCODE_Z) PORT_CODE_INC(KEYCODE_X) PORT_REVERSE PORT_FULL_TURN_COUNT(12)
522 
523 	PORT_START("ROT2")  /* player 2 12-way rotary control */
524 	PORT_BIT( 0x0f, 0x00, IPT_POSITIONAL )  PORT_POSITIONS(12) PORT_WRAPS PORT_SENSITIVITY(5) PORT_KEYDELTA(5) PORT_CODE_DEC(KEYCODE_N) PORT_CODE_INC(KEYCODE_M) PORT_PLAYER(2) PORT_REVERSE PORT_FULL_TURN_COUNT(12)
525 INPUT_PORTS_END
526 
527 /******************************************************************************/
528 
529 static const gfx_layout charlayout =
530 {
531 	8,8,
532 	RGN_FRAC(1,2),
533 	4,
534 	{ 0, 4, RGN_FRAC(1,2), RGN_FRAC(1,2)+4 },
535 	{ STEP4(8*8+3,-1), STEP4(3,-1) },
536 	{ STEP8(0,8) },
537 	16*8
538 };
539 
540 static const gfx_layout spritelayout =
541 {
542 	16,16,
543 	RGN_FRAC(1,2),
544 	4,
545 	{ 0, 8, RGN_FRAC(1,2), RGN_FRAC(1,2)+8 },
546 	{ STEP8(32*8+7,-1), STEP8(7,-1) },
547 	{ STEP16(0,16) },
548 	64*8
549 };
550 
551 static GFXDECODE_START( gfx_pow )
552 	GFXDECODE_ENTRY( "gfx1", 0, charlayout,   0,  0x80>>4 )
553 	GFXDECODE_ENTRY( "gfx2", 0, spritelayout, 0, 0x800>>4 )
554 GFXDECODE_END
555 
556 /******************************************************************************/
557 
558 // pow has 0x4000 tiles and independent x/y flipping
559 // the other games have > 0x4000 tiles and flipping in only one direction
560 // (globally selected)
tile_callback_pow(int & tile,int & fx,int & fy,int & region)561 void snk68_state::tile_callback_pow(int &tile, int& fx, int& fy, int& region)
562 {
563 	fx = tile & 0x4000;
564 	fy = tile & 0x8000;
565 	tile &= 0x3fff;
566 	region = 1;
567 }
568 
tile_callback_notpow(int & tile,int & fx,int & fy,int & region)569 void snk68_state::tile_callback_notpow(int &tile, int& fx, int& fy, int& region)
570 {
571 	if (m_sprite_flip_axis)
572 	{
573 		fx = 0;
574 		fy = tile & 0x8000;
575 	}
576 	else
577 	{
578 		fx = tile & 0x8000;
579 		fy = 0;
580 	}
581 	tile &= 0x7fff;
582 	region = 1;
583 }
584 
pow(machine_config & config)585 void snk68_state::pow(machine_config &config)
586 {
587 	/* basic machine hardware */
588 	M68000(config, m_maincpu, XTAL(18'000'000)/2); /* verified on pcb */
589 	m_maincpu->set_addrmap(AS_PROGRAM, &snk68_state::pow_map);
590 	m_maincpu->set_vblank_int("screen", FUNC(snk68_state::irq1_line_hold));
591 
592 	Z80(config, m_soundcpu, XTAL(8'000'000)/2); /* verified on pcb */
593 	m_soundcpu->set_addrmap(AS_PROGRAM, &snk68_state::sound_map);
594 	m_soundcpu->set_addrmap(AS_IO, &snk68_state::sound_io_map);
595 
596 	/* video hardware */
597 	SCREEN(config, m_screen, SCREEN_TYPE_RASTER);
598 	// the screen parameters are guessed but should be accurate. They
599 	// give a theoretical refresh rate of 59.1856Hz while the measured
600 	// rate on a SAR board is 59.16Hz.
601 	m_screen->set_raw(XTAL(24'000'000)/4, 384, 0, 256, 264, 16, 240);
602 	m_screen->set_screen_update(FUNC(snk68_state::screen_update));
603 	m_screen->set_palette(m_palette);
604 
605 	GFXDECODE(config, m_gfxdecode, m_palette, gfx_pow);
606 
607 	ALPHA68K_PALETTE(config, m_palette, 0);
608 	m_palette->set_entries(2048);
609 
610 	SNK68_SPR(config, m_sprites, 0);
611 	m_sprites->set_gfxdecode_tag(m_gfxdecode);
612 	m_sprites->set_tile_indirect_cb(FUNC(snk68_state::tile_callback_pow));
613 	m_sprites->set_xpos_shift(12);
614 	m_sprites->set_color_entry_mask(0x7f);
615 
616 	/* sound hardware */
617 	SPEAKER(config, "mono").front_center();
618 
619 	GENERIC_LATCH_8(config, m_soundlatch);
620 	GENERIC_LATCH_8(config, "soundlatch2");
621 
622 	ym3812_device &ymsnd(YM3812(config, "ymsnd", XTAL(8'000'000)/2)); /* verified on pcb  */
623 	ymsnd.irq_handler().set_inputline(m_soundcpu, 0);
624 	ymsnd.add_route(ALL_OUTPUTS, "mono", 1.0);
625 
626 	UPD7759(config, m_upd7759);
627 	m_upd7759->add_route(ALL_OUTPUTS, "mono", 0.50);
628 }
629 
powb(machine_config & config)630 void snk68_state::powb(machine_config &config)
631 {
632 	pow(config);
633 
634 	m_soundcpu->set_addrmap(AS_IO, &snk68_state::powb_sound_io_map);
635 
636 	config.device_remove("upd");
637 
638 	MSM5205(config, "msm", 0).add_route(ALL_OUTPUTS, "mono", 0.50); // TODO: hook this up
639 }
640 
streetsm(machine_config & config)641 void snk68_state::streetsm(machine_config &config)
642 {
643 	pow(config);
644 	m_sprites->set_tile_indirect_cb(FUNC(snk68_state::tile_callback_notpow));
645 }
646 
searchar(machine_config & config)647 void searchar_state::searchar(machine_config &config)
648 {
649 	streetsm(config);
650 
651 	m_maincpu->set_addrmap(AS_PROGRAM, &searchar_state::searchar_map);
652 }
653 
654 
655 /******************************************************************************/
656 
657 ROM_START( pow )
658 	ROM_REGION( 0x40000, "maincpu", 0 )
659 	ROM_LOAD16_BYTE( "dg1ver1.j14",   0x000000, 0x20000, CRC(8e71a8af) SHA1(72c2eb2316c2684491331e8adabcb2be084aa6a2) )
660 	ROM_LOAD16_BYTE( "dg2ver1.l14",   0x000001, 0x20000, CRC(4287affc) SHA1(59dfb37296edd3b42231319a9f4df819d384db38) )
661 
662 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
CRC(d1d61da3)663 	ROM_LOAD( "dg8.e25",   0x000000, 0x10000, CRC(d1d61da3) SHA1(4e78643f8a7d44db3ff091acb0a5da1cc836e3cb) )
664 
665 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
666 	ROM_LOAD( "dg9.l25",   0x000000, 0x08000, CRC(df864a08) SHA1(dd996070077efbbf9d784299b6563cab258e4a8e) )
667 	ROM_LOAD( "dg10.m25",  0x008000, 0x08000, CRC(9e470d53) SHA1(f7dc6ac39ade573480e87170a2781f0f72930580) )
668 
669 	ROM_REGION( 0x200000, "gfx2", 0 )   /* sprites */
670 	ROM_LOAD16_BYTE( "snk880.11a", 0x000000, 0x20000, CRC(e70fd906) SHA1(b9e734c074ee1c8ae73e6041d739ab30d2df7d62) )
671 	ROM_LOAD16_BYTE( "snk880.15a", 0x000001, 0x20000, CRC(7a90e957) SHA1(9650d7cdbcbbbcdd7f75a1c3c08a195aa456e169) )
672 	ROM_LOAD16_BYTE( "snk880.12a", 0x040000, 0x20000, CRC(628b1aed) SHA1(1065ef835da03f7d9776e81c225c3ecdd2affae2) )
673 	ROM_LOAD16_BYTE( "snk880.16a", 0x040001, 0x20000, CRC(e40a6c13) SHA1(7ad9dfc65f8c8b316933f0fdd3bc7a243d6eff65) )
674 	ROM_LOAD16_BYTE( "snk880.13a", 0x080000, 0x20000, CRC(19dc8868) SHA1(82aaf93fc8f4b3bf947d373d0f41cc0044207c34) ) /* Also can be labeled as DG13 */
675 	ROM_LOAD16_BYTE( "snk880.17a", 0x080001, 0x20000, CRC(c7931cc2) SHA1(908313d9b7fa4395b5fb79925d068e4f5d354b21) )
676 	ROM_LOAD16_BYTE( "snk880.14a", 0x0c0000, 0x20000, CRC(47cd498b) SHA1(7fbc007f2d817c26af02fef233f5e0681a17052a) )
677 	ROM_LOAD16_BYTE( "snk880.18a", 0x0c0001, 0x20000, CRC(eed72232) SHA1(ad614e752cf1d3eac9a04cbc90435f988e90ace7) )
678 	ROM_LOAD16_BYTE( "snk880.19a", 0x100000, 0x20000, CRC(1775b8dd) SHA1(c01154749379be6e18baa99f4d94d97942f3dd85) )
679 	ROM_LOAD16_BYTE( "snk880.23a", 0x100001, 0x20000, CRC(adb6ad68) SHA1(ed4323d2dfa3efaa496b17f4719f9566d56725e5) )
680 	ROM_LOAD16_BYTE( "snk880.20a", 0x140000, 0x20000, CRC(f8e752ec) SHA1(1e1e178303f9af84cbb15249c49a870193ef805f) )
681 	ROM_LOAD16_BYTE( "snk880.24a", 0x140001, 0x20000, CRC(dd41865a) SHA1(c86f14342beca896784b88920d9e0879af4179ab) )
682 	ROM_LOAD16_BYTE( "snk880.21a", 0x180000, 0x20000, CRC(27e9fffe) SHA1(e8058db40832b986c5addd22dd69b0308d10ec71) )
683 	ROM_LOAD16_BYTE( "snk880.25a", 0x180001, 0x20000, CRC(055759ad) SHA1(f9b12320f142075d49d447fb107af99272567d58) )
684 	ROM_LOAD16_BYTE( "snk880.22a", 0x1c0000, 0x20000, CRC(aa9c00d8) SHA1(1017ed1cc036c6084b71204a998fd05557a6e59f) )
685 	ROM_LOAD16_BYTE( "snk880.26a", 0x1c0001, 0x20000, CRC(9bc261c5) SHA1(f07fef465191d48ccc149d1a62e6382d3fc0ef9f) )
686 
687 	ROM_REGION( 0x10000, "upd", 0 ) /* UPD7759 samples */
688 	ROM_LOAD( "dg7.d20",  0x000000, 0x10000, CRC(aba9a9d3) SHA1(5098cd3a064b8ede24797de8879a277d79e79d75) )
689 
690 	ROM_REGION( 0x0100, "plds", 0 )
691 	ROM_LOAD( "pal20l10.a6", 0x0000, 0x00cc, CRC(c3d9e729) SHA1(f05f03eecf12b4d0793124ecd3195307be04046b) )
692 ROM_END
693 
694 ROM_START( powj )
695 	ROM_REGION( 0x40000, "maincpu", 0 )
696 	ROM_LOAD16_BYTE( "1-2",   0x000000, 0x20000, CRC(2f17bfb0) SHA1(8be18990829eb2586c00b9e8b35e8779bc48296a) )
697 	ROM_LOAD16_BYTE( "2-2",   0x000001, 0x20000, CRC(baa32354) SHA1(a235b82527dc025e699ba2e8e9797dac15ea9440) )
698 
699 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
700 	ROM_LOAD( "dg8.e25",   0x000000, 0x10000, CRC(d1d61da3) SHA1(4e78643f8a7d44db3ff091acb0a5da1cc836e3cb) )
701 
702 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
703 	ROM_LOAD( "dg9.l25",   0x000000, 0x08000, CRC(df864a08) SHA1(dd996070077efbbf9d784299b6563cab258e4a8e) )
704 	ROM_LOAD( "dg10.m25",  0x008000, 0x08000, CRC(9e470d53) SHA1(f7dc6ac39ade573480e87170a2781f0f72930580) )
705 
706 	ROM_REGION( 0x200000, "gfx2", 0 )   /* sprites */
707 	ROM_LOAD16_BYTE( "snk880.11a", 0x000000, 0x20000, CRC(e70fd906) SHA1(b9e734c074ee1c8ae73e6041d739ab30d2df7d62) )
708 	ROM_LOAD16_BYTE( "snk880.15a", 0x000001, 0x20000, CRC(7a90e957) SHA1(9650d7cdbcbbbcdd7f75a1c3c08a195aa456e169) )
709 	ROM_LOAD16_BYTE( "snk880.12a", 0x040000, 0x20000, CRC(628b1aed) SHA1(1065ef835da03f7d9776e81c225c3ecdd2affae2) )
710 	ROM_LOAD16_BYTE( "snk880.16a", 0x040001, 0x20000, CRC(e40a6c13) SHA1(7ad9dfc65f8c8b316933f0fdd3bc7a243d6eff65) )
711 	ROM_LOAD16_BYTE( "snk880.13a", 0x080000, 0x20000, CRC(19dc8868) SHA1(82aaf93fc8f4b3bf947d373d0f41cc0044207c34) ) /* Also can be labeled as DG13 */
712 	ROM_LOAD16_BYTE( "snk880.17a", 0x080001, 0x20000, CRC(c7931cc2) SHA1(908313d9b7fa4395b5fb79925d068e4f5d354b21) )
713 	ROM_LOAD16_BYTE( "snk880.14a", 0x0c0000, 0x20000, CRC(47cd498b) SHA1(7fbc007f2d817c26af02fef233f5e0681a17052a) )
714 	ROM_LOAD16_BYTE( "snk880.18a", 0x0c0001, 0x20000, CRC(eed72232) SHA1(ad614e752cf1d3eac9a04cbc90435f988e90ace7) )
715 	ROM_LOAD16_BYTE( "snk880.19a", 0x100000, 0x20000, CRC(1775b8dd) SHA1(c01154749379be6e18baa99f4d94d97942f3dd85) )
716 	ROM_LOAD16_BYTE( "snk880.23a", 0x100001, 0x20000, CRC(adb6ad68) SHA1(ed4323d2dfa3efaa496b17f4719f9566d56725e5) )
717 	ROM_LOAD16_BYTE( "snk880.20a", 0x140000, 0x20000, CRC(f8e752ec) SHA1(1e1e178303f9af84cbb15249c49a870193ef805f) )
718 	ROM_LOAD16_BYTE( "snk880.24a", 0x140001, 0x20000, CRC(dd41865a) SHA1(c86f14342beca896784b88920d9e0879af4179ab) )
719 	ROM_LOAD16_BYTE( "snk880.21a", 0x180000, 0x20000, CRC(27e9fffe) SHA1(e8058db40832b986c5addd22dd69b0308d10ec71) )
720 	ROM_LOAD16_BYTE( "snk880.25a", 0x180001, 0x20000, CRC(055759ad) SHA1(f9b12320f142075d49d447fb107af99272567d58) )
721 	ROM_LOAD16_BYTE( "snk880.22a", 0x1c0000, 0x20000, CRC(aa9c00d8) SHA1(1017ed1cc036c6084b71204a998fd05557a6e59f) )
722 	ROM_LOAD16_BYTE( "snk880.26a", 0x1c0001, 0x20000, CRC(9bc261c5) SHA1(f07fef465191d48ccc149d1a62e6382d3fc0ef9f) )
723 
724 	ROM_REGION( 0x10000, "upd", 0 ) /* UPD7759 samples */
725 	ROM_LOAD( "dg7.d20",  0x000000, 0x10000, CRC(aba9a9d3) SHA1(5098cd3a064b8ede24797de8879a277d79e79d75) )
726 
727 	ROM_REGION( 0x0100, "plds", 0 )
728 	ROM_LOAD( "pal20l10.a6", 0x0000, 0x00cc, CRC(c3d9e729) SHA1(f05f03eecf12b4d0793124ecd3195307be04046b) )
729 ROM_END
730 
731 ROM_START( powb ) // main PCB + sprite ROM board
732 	ROM_REGION( 0x40000, "maincpu", 0 ) // identical to pow, but smaller ROMs
733 	ROM_LOAD16_BYTE( "pow36b.bin",   0x000000, 0x10000, CRC(a4de338d) SHA1(18ac22e5e99018cc794350faed4b75006737d2bc) )
734 	ROM_LOAD16_BYTE( "pow35b.bin",   0x000001, 0x10000, CRC(ba405691) SHA1(a21eab60efbe8c56524518c389ab7d545c41af55) )
735 	ROM_LOAD16_BYTE( "pow36a.bin",   0x020000, 0x10000, CRC(fa53460c) SHA1(f4a31e27c45ac2727cbf3e855ccc787392e17866) )
736 	ROM_LOAD16_BYTE( "pow35a.bin",   0x020001, 0x10000, CRC(a67c6495) SHA1(14066d314bbe42ab12d7287724e4071869f61157) )
737 
738 	ROM_REGION( 0x10000, "soundcpu", 0 ) // very similar to pow, updated to support MSM5205 instead of UPD7759
739 	ROM_LOAD( "pow37.bin",   0x000000, 0x10000, CRC(0d22d25f) SHA1(0dca3e1bebe91da84b8537c0ff184241797ac8da) )
740 
741 	ROM_REGION( 0x010000, "gfx1", 0 )   // characters, identical to pow
742 	ROM_LOAD( "pow34.bin",  0x000000, 0x08000, CRC(df864a08) SHA1(dd996070077efbbf9d784299b6563cab258e4a8e) )
743 	ROM_LOAD( "pow33.bin",  0x008000, 0x08000, CRC(9e470d53) SHA1(f7dc6ac39ade573480e87170a2781f0f72930580) )
744 
745 	ROM_REGION( 0x200000, "gfx2", 0 )   // sprites, different format
746 	ROM_LOAD16_BYTE( "pow30.bin", 0x000000, 0x10000, CRC(40b43c09) SHA1(8b12b02284032e01ff8b9410948e1da8f88f124b) )
747 	ROM_LOAD16_BYTE( "pow24.bin", 0x000001, 0x10000, CRC(efbfdf59) SHA1(c02d18fb582bd4bdbf2b3ea6f2bd925e7d70a3af) )
748 	ROM_LOAD16_BYTE( "pow29.bin", 0x020000, 0x10000, CRC(61909aa4) SHA1(6981bf33f7261a0d5dc412e4f4bb72b523f4af37) )
749 	ROM_LOAD16_BYTE( "pow23.bin", 0x020001, 0x10000, CRC(ea9aca79) SHA1(693916685b23b10b966e6fb9e0f2846994b672c9) )
750 	ROM_LOAD16_BYTE( "pow28.bin", 0x040000, 0x10000, CRC(81da0f09) SHA1(0c788abce58b581790051741aafee72ddcdabd02) )
751 	ROM_LOAD16_BYTE( "pow22.bin", 0x040001, 0x10000, CRC(361f178b) SHA1(6a680e2b37e1ae825d548e90720999bd0188b151) )
752 	ROM_LOAD16_BYTE( "pow27.bin", 0x060000, 0x10000, CRC(f7db186c) SHA1(cbd17ee46563dcb7ad1e2f8b2c7481102ecb91f7) )
753 	ROM_LOAD16_BYTE( "pow21.bin", 0x060001, 0x10000, CRC(606fab0a) SHA1(7b60df4ee8096da6ad14d0aa197b20b7293f04a9) )
754 	ROM_LOAD16_BYTE( "pow26.bin", 0x080000, 0x10000, CRC(a028dfda) SHA1(7a84a44fc062aa946f1fddbefbde0dae0d0212a3) )
755 	ROM_LOAD16_BYTE( "pow20.bin", 0x080001, 0x10000, CRC(06be682c) SHA1(24abf7f3b525124a2b38aae6e1c313d1dc0ad1ff) )
756 	ROM_LOAD16_BYTE( "pow31.bin", 0x0a0000, 0x10000, CRC(f25ea217) SHA1(bde91824539ea037acdd3ccdbb3387f0364888ec) )
757 	ROM_LOAD16_BYTE( "pow19.bin", 0x0a0001, 0x10000, CRC(4e7b2b47) SHA1(344af976c4c82495a820437cbbdacb1027fa14c0) )
758 	ROM_LOAD16_BYTE( "pow25.bin", 0x0c0000, 0x10000, CRC(a4cf97d5) SHA1(8ff0a7fe61f3ee3167601e68a54960b3e712c4b5) )
759 	ROM_LOAD16_BYTE( "pow18.bin", 0x0c0001, 0x10000, CRC(b70c603d) SHA1(6434eeddf7009887889914edc63a348053a05bc0) )
760 	ROM_LOAD16_BYTE( "pow32.bin", 0x0e0000, 0x10000, CRC(9ffd27ea) SHA1(d693baa289811c8b612fb45b1186a361d73d223b) )
761 	ROM_LOAD16_BYTE( "pow17.bin", 0x0e0001, 0x10000, CRC(c91291ce) SHA1(1276caa972ba625f3aacbd11e5b37d66406fbe97) )
762 	ROM_LOAD16_BYTE( "pow15.bin", 0x100000, 0x10000, CRC(ffe660b2) SHA1(06b93e0f0b7dd83046c428459a47239454e9d7f2) )
763 	ROM_LOAD16_BYTE( "pow1.bin",  0x100001, 0x10000, CRC(4fc31abe) SHA1(2bdc3de7301ab512dbf3c3a9e4e249d258ea287f) )
764 	ROM_LOAD16_BYTE( "pow14.bin", 0x120000, 0x10000, CRC(07a08711) SHA1(d43707a6e8eb6925e1f46a495590c31a1683d073) )
765 	ROM_LOAD16_BYTE( "pow2.bin",  0x120001, 0x10000, CRC(0be02c0c) SHA1(7dcbc8c47982d78c887de4e8112cb17678f07213) )
766 	ROM_LOAD16_BYTE( "pow13.bin", 0x140000, 0x10000, CRC(37147ef2) SHA1(2970bfbdac856a02316ebef98c4da8fe451efc7b) )
767 	ROM_LOAD16_BYTE( "pow3.bin",  0x140001, 0x10000, CRC(fe4e3f95) SHA1(efe2665405dbd866de96a09bced43ff945d09ede) )
768 	ROM_LOAD16_BYTE( "pow12.bin", 0x160000, 0x10000, CRC(57085ebc) SHA1(ee1c4140bd24aa8721fcdba5545001ffbfb5df44) )
769 	ROM_LOAD16_BYTE( "pow4.bin",  0x160001, 0x10000, CRC(325ba653) SHA1(55e6c9d8bd61a02ef8334e9637e4be02e22750bd) )
770 	ROM_LOAD16_BYTE( "pow11.bin", 0x180000, 0x10000, CRC(2c90e2c2) SHA1(cc1d555076e780cacfeb8aa0e784da08cce7e23a) )
771 	ROM_LOAD16_BYTE( "pow5.bin",  0x180001, 0x10000, CRC(36d691e2) SHA1(b4c7fd340649380bb9736e325c31775eb515a642) )
772 	ROM_LOAD16_BYTE( "pow10.bin", 0x1a0000, 0x10000, CRC(6ac5e036) SHA1(05ec7e82080b8ea4426b18ccf1e79fc2f2f81e8b) )
773 	ROM_LOAD16_BYTE( "pow6.bin",  0x1a0001, 0x10000, CRC(e6d8123a) SHA1(23f21d0b857de6c099de5c4d139bc32475cb8b88) )
774 	ROM_LOAD16_BYTE( "pow9.bin",  0x1c0000, 0x10000, CRC(5b1a1c99) SHA1(d4748cc02021bd189e635a8578ce28201000ee4f) )
775 	ROM_LOAD16_BYTE( "pow7.bin",  0x1c0001, 0x10000, CRC(093fe9c6) SHA1(36090da050f66fea1d9edaf5673a156a3f43de77) )
776 	ROM_LOAD16_BYTE( "pow16.bin", 0x1e0000, 0x10000, CRC(bbc4d174) SHA1(73bbee1ae76a76a5c057f8ade05399c411640aaf) )
777 	ROM_LOAD16_BYTE( "pow8.bin",  0x1e0001, 0x10000, CRC(7f7c703e) SHA1(86d98d2028fef28ef629a417a1e06b7353766545) )
778 
779 	ROM_REGION( 0x10000, "msm", 0 ) // unique
780 	ROM_LOAD( "pow38.bin",  0x000000, 0x10000, CRC(72f35d38) SHA1(072d2af2a3ffa4b46be471659fc4d9bf6e02b683) )
781 ROM_END
782 
783 ROM_START( streetsm )
784 	ROM_REGION( 0x40000, "maincpu", 0 )
785 	ROM_LOAD16_BYTE( "s2-1ver2.14h", 0x00000, 0x20000, CRC(655f4773) SHA1(5374a6cf0b895c5ff839b0f52402df4cc53241cf) )
786 	ROM_LOAD16_BYTE( "s2-2ver2.14k", 0x00001, 0x20000, CRC(efae4823) SHA1(f3be25b76cf13feeaaaf0e9640c30a6a7371f108) )
787 
788 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
789 	ROM_LOAD( "s2-5.16c",    0x000000, 0x10000, CRC(ca4b171e) SHA1(a05fd81f68759a09be3ec09f38d7c9364dfb6c14) )
790 
791 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
792 	ROM_LOAD( "s2-9.25l",    0x000000, 0x08000, CRC(09b6ac67) SHA1(0b1ef51d9cd755eacc25b33360811cc86c32c0b7) )
793 	ROM_LOAD( "s2-10.25m",   0x008000, 0x08000, CRC(89e4ee6f) SHA1(21797286836ad71d2497e3e6d4df1fbe545562ab) )
794 
795 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
796 	ROM_LOAD( "stsmart.900", 0x000000, 0x80000, CRC(a8279a7e) SHA1(244bdacb29b00f71da93ed8ddddbcffcce110be8) )
797 	ROM_LOAD( "stsmart.902", 0x080000, 0x80000, CRC(2f021aa1) SHA1(699d0b5ac79e34e4fc4cef70eb448f21f1c3e9e2) )
798 	ROM_LOAD( "stsmart.904", 0x100000, 0x80000, CRC(167346f7) SHA1(fb4ea412622245db49ec15449ee4fa0d90922f06) )
799 	// 180000-1fffff empty
800 	ROM_LOAD( "stsmart.901", 0x200000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) )
801 	ROM_LOAD( "stsmart.903", 0x280000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) )
802 	ROM_LOAD( "stsmart.905", 0x300000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) )
803 	// 380000-3fffff empty
804 
805 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
806 	ROM_LOAD( "s2-6.18d",    0x000000, 0x20000, CRC(47db1605) SHA1(ae00e633eb98567f04ff97e3d63e04e049d955ec) )
807 
808 	ROM_REGION( 0x0100, "plds", 0 )
809 	ROM_LOAD( "pl20l10a.1n", 0x0000, 0x00cc, NO_DUMP ) /* PAL is read protected */
810 ROM_END
811 
812 ROM_START( streetsm1 )
813 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
814 	ROM_LOAD16_BYTE( "s2-1ver1.9c",  0x00000, 0x20000, CRC(b59354c5) SHA1(086c87541d422f90bdaad8d63b14d0d520c12564) )
815 	ROM_LOAD16_BYTE( "s2-2ver1.10c", 0x00001, 0x20000, CRC(e448b68b) SHA1(08d674ab3d9bd3d3b1d50967a56fa6a002ce0b8d) )
816 
817 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
818 	ROM_LOAD( "s2-5.16c",    0x000000, 0x10000, CRC(ca4b171e) SHA1(a05fd81f68759a09be3ec09f38d7c9364dfb6c14) )
819 
820 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
821 	ROM_LOAD( "s2-7.15l",    0x000000, 0x08000, CRC(22bedfe5) SHA1(64efb2281c32afe5a06f35cce939e6a53226c6ed) )
822 	ROM_LOAD( "s2-8.15m",    0x008000, 0x08000, CRC(6a1c70ab) SHA1(019538ddcb713d0810b26b6aa65f6e4596931621) )
823 
824 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
825 	ROM_LOAD( "stsmart.900", 0x000000, 0x80000, CRC(a8279a7e) SHA1(244bdacb29b00f71da93ed8ddddbcffcce110be8) )
826 	ROM_LOAD( "stsmart.902", 0x080000, 0x80000, CRC(2f021aa1) SHA1(699d0b5ac79e34e4fc4cef70eb448f21f1c3e9e2) )
827 	ROM_LOAD( "stsmart.904", 0x100000, 0x80000, CRC(167346f7) SHA1(fb4ea412622245db49ec15449ee4fa0d90922f06) )
828 	// 180000-1fffff empty
829 	ROM_LOAD( "stsmart.901", 0x200000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) )
830 	ROM_LOAD( "stsmart.903", 0x280000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) )
831 	ROM_LOAD( "stsmart.905", 0x300000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) )
832 	// 380000-3fffff empty
833 
834 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
835 	ROM_LOAD( "s2-6.18d",    0x000000, 0x20000, CRC(47db1605) SHA1(ae00e633eb98567f04ff97e3d63e04e049d955ec) )
836 ROM_END
837 
838 ROM_START( streetsmw )
839 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
840 	ROM_LOAD16_BYTE( "s-smart1.bin", 0x00000, 0x20000, CRC(a1f5ceab) SHA1(74f5a4288618fbce6ed3dc75b6ccfa695396193c) )
841 	ROM_LOAD16_BYTE( "s-smart2.bin", 0x00001, 0x20000, CRC(263f615d) SHA1(4576f9d2abb31ecf747a5075716579e75613d57c) )
842 
843 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
844 	ROM_LOAD( "s2-5.16c",    0x000000, 0x10000, CRC(ca4b171e) SHA1(a05fd81f68759a09be3ec09f38d7c9364dfb6c14) )
845 
846 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
847 	ROM_LOAD( "s2-7.15l",    0x000000, 0x08000, CRC(22bedfe5) SHA1(64efb2281c32afe5a06f35cce939e6a53226c6ed) )
848 	ROM_LOAD( "s2-8.15m",    0x008000, 0x08000, CRC(6a1c70ab) SHA1(019538ddcb713d0810b26b6aa65f6e4596931621) )
849 
850 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
851 	ROM_LOAD( "stsmart.900", 0x000000, 0x80000, CRC(a8279a7e) SHA1(244bdacb29b00f71da93ed8ddddbcffcce110be8) )
852 	ROM_LOAD( "stsmart.902", 0x080000, 0x80000, CRC(2f021aa1) SHA1(699d0b5ac79e34e4fc4cef70eb448f21f1c3e9e2) )
853 	ROM_LOAD( "stsmart.904", 0x100000, 0x80000, CRC(167346f7) SHA1(fb4ea412622245db49ec15449ee4fa0d90922f06) )
854 	// 180000-1fffff empty
855 	ROM_LOAD( "stsmart.901", 0x200000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) )
856 	ROM_LOAD( "stsmart.903", 0x280000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) )
857 	ROM_LOAD( "stsmart.905", 0x300000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) )
858 	// 380000-3fffff empty
859 
860 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
861 	ROM_LOAD( "s2-6.18d",    0x000000, 0x20000, CRC(47db1605) SHA1(ae00e633eb98567f04ff97e3d63e04e049d955ec) )
862 ROM_END
863 
864 ROM_START( streetsmj )
865 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
866 	ROM_LOAD16_BYTE( "s2v1j_01.bin", 0x00000, 0x20000, CRC(f031413c) SHA1(5d7dfeac03f786736914f047c28a7a0488175176) )
867 	ROM_LOAD16_BYTE( "s2v1j_02.bin", 0x00001, 0x20000, CRC(e403a40b) SHA1(e740848d716586737eff6e3c201fb3e3da048a09) )
868 
869 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
870 	ROM_LOAD( "s2-5.16c",    0x000000, 0x10000, CRC(ca4b171e) SHA1(a05fd81f68759a09be3ec09f38d7c9364dfb6c14) )
871 
872 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
873 	ROM_LOAD( "s2-7.15l",    0x000000, 0x08000, CRC(22bedfe5) SHA1(64efb2281c32afe5a06f35cce939e6a53226c6ed) )
874 	ROM_LOAD( "s2-8.15m",    0x008000, 0x08000, CRC(6a1c70ab) SHA1(019538ddcb713d0810b26b6aa65f6e4596931621) )
875 
876 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
877 	ROM_LOAD( "stsmart.900", 0x000000, 0x80000, CRC(a8279a7e) SHA1(244bdacb29b00f71da93ed8ddddbcffcce110be8) )
878 	ROM_LOAD( "stsmart.902", 0x080000, 0x80000, CRC(2f021aa1) SHA1(699d0b5ac79e34e4fc4cef70eb448f21f1c3e9e2) )
879 	ROM_LOAD( "stsmart.904", 0x100000, 0x80000, CRC(167346f7) SHA1(fb4ea412622245db49ec15449ee4fa0d90922f06) )
880 	// 180000-1fffff empty
881 	ROM_LOAD( "stsmart.901", 0x200000, 0x80000, CRC(c305af12) SHA1(18b5d448fe9608efcd2e5bb8faa24808d1489ec8) )
882 	ROM_LOAD( "stsmart.903", 0x280000, 0x80000, CRC(73c16d35) SHA1(40cf7a58926c649f89b08917afb35b08918d1a0f) )
883 	ROM_LOAD( "stsmart.905", 0x300000, 0x80000, CRC(a5beb4e2) SHA1(c26b7eee2ca32bd73fb7a09c6ef52c2ae1c7fc1c) )
884 	// 380000-3fffff empty
885 
886 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
887 	ROM_LOAD( "s2-6.18d",    0x000000, 0x20000, CRC(47db1605) SHA1(ae00e633eb98567f04ff97e3d63e04e049d955ec) )
888 ROM_END
889 
890 ROM_START( ikari3 )
891 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
892 	ROM_LOAD16_BYTE( "ik3-2-ver1.c10", 0x000000, 0x20000, CRC(1bae8023) SHA1(42d590a545cbabc596f2e0d9a3d56b1bc270ec9a) ) /* 8-Way Joystick */
893 	ROM_LOAD16_BYTE( "ik3-3-ver1.c9",  0x000001, 0x20000, CRC(10e38b66) SHA1(28cc82d868f59cd6dde1c4e4c890627012e5e978) ) /* 8-Way Joystick */
894 	ROM_LOAD16_BYTE( "ik3-1.c8",       0x040000, 0x10000, CRC(47e4d256) SHA1(7c6921cf2f1b8c3dae867eb1fc14e3da218cc1e0) )
895 	ROM_LOAD16_BYTE( "ik3-4.c12",      0x040001, 0x10000, CRC(a43af6b5) SHA1(1ad3acadbadd21642932028ecd7c282f7fd02856) )
896 
897 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
898 	ROM_LOAD( "ik3-5.16d",  0x000000, 0x10000, CRC(ce6706fc) SHA1(95505b90a9524abf0c8c1ec6b2c40d8f25cb1d92) )
899 
900 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
901 	ROM_LOAD( "ik3-7.16l",  0x000000, 0x08000, CRC(0b4804df) SHA1(66d16d245bfc404366164823faaea0bfec83e487) )
902 	ROM_LOAD( "ik3-8.16m",  0x008000, 0x08000, CRC(10ab4e50) SHA1(dee8416eb720848cf6471e568dadc1cfc6c2e67f) )
903 
904 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
905 	ROM_LOAD16_BYTE( "ik3-23.bin", 0x000000, 0x20000, CRC(d0fd5c77) SHA1(c171c64ad252f0ba5b0bbdf37808102fca37b488) )
906 	ROM_LOAD16_BYTE( "ik3-13.bin", 0x000001, 0x20000, CRC(9a56bd32) SHA1(9301b48f970b71a909fb44514b2e93c3f1516b38) )
907 	ROM_LOAD16_BYTE( "ik3-22.bin", 0x040000, 0x20000, CRC(4878d883) SHA1(8cdb541bad00e707fb65399d637b7cc9288ada77) )
908 	ROM_LOAD16_BYTE( "ik3-12.bin", 0x040001, 0x20000, CRC(0ce6a10a) SHA1(13a231aa0002b2c5a0d9404ba05a879e212d638e) )
909 	ROM_LOAD16_BYTE( "ik3-21.bin", 0x080000, 0x20000, CRC(50d0fbf0) SHA1(9ff5fbea8d35d0f9a38ddd7eb093edcd91d9f874) )
910 	ROM_LOAD16_BYTE( "ik3-11.bin", 0x080001, 0x20000, CRC(e4e2be43) SHA1(959d2799708ddae909b017c0696694c46a52697e) )
911 	ROM_LOAD16_BYTE( "ik3-20.bin", 0x0c0000, 0x20000, CRC(9a851efc) SHA1(bc7be338ee4da7fbfe6fe44a9c7889817416bc44) )
912 	ROM_LOAD16_BYTE( "ik3-10.bin", 0x0c0001, 0x20000, CRC(ac222372) SHA1(8a17e37699d691b962a6d0256a18550cc73ddfef) )
913 	ROM_LOAD16_BYTE( "ik3-19.bin", 0x100000, 0x20000, CRC(4ebdba89) SHA1(f3ecfef4c9d2aba58dc3e6aa3cf5813d68686909) )
914 	ROM_LOAD16_BYTE( "ik3-9.bin",  0x100001, 0x20000, CRC(c33971c2) SHA1(91f3eb301803f5a7027da1ff7dd2a28bc97e5125) )
915 	// 140000-1fffff empty
916 	ROM_LOAD16_BYTE( "ik3-14.bin", 0x200000, 0x20000, CRC(453bea77) SHA1(f8f8d0c048fcf32ad99e1de622d9ab635bb86eae) )
917 	ROM_LOAD16_BYTE( "ik3-24.bin", 0x200001, 0x20000, CRC(e9b26d68) SHA1(067d582d33157ed4b7980bd87f2f260ab74c347b) )
918 	ROM_LOAD16_BYTE( "ik3-15.bin", 0x240000, 0x20000, CRC(781a81fc) SHA1(e08a6cf9c632d1002176afe618605bc06168e8aa) )
919 	ROM_LOAD16_BYTE( "ik3-25.bin", 0x240001, 0x20000, CRC(073b03f1) SHA1(b8053139799fa06c7324cee928154c89d4425ab1) )
920 	ROM_LOAD16_BYTE( "ik3-16.bin", 0x280000, 0x20000, CRC(80ba400b) SHA1(2cc3e53c45f239516a60c461ad9cfa5955164262) )
921 	ROM_LOAD16_BYTE( "ik3-26.bin", 0x280001, 0x20000, CRC(9c613561) SHA1(fc7c9a642b18faa94e6a2ba53f35a4d756a25da3) )
922 	ROM_LOAD16_BYTE( "ik3-17.bin", 0x2c0000, 0x20000, CRC(0cc3ce4a) SHA1(7b34435d0bbb089055a183b821ab255170db6bec) )
923 	ROM_LOAD16_BYTE( "ik3-27.bin", 0x2c0001, 0x20000, CRC(16dd227e) SHA1(db3b1718dea65bc9a1a736aa62aa2be389313baf) )
924 	ROM_LOAD16_BYTE( "ik3-18.bin", 0x300000, 0x20000, CRC(ba106245) SHA1(ac609ec3046c21fe6058f91dd4528c5c6448dc15) )
925 	ROM_LOAD16_BYTE( "ik3-28.bin", 0x300001, 0x20000, CRC(711715ae) SHA1(90978c86884ca3d23c138d95b654e2fb3afc6f9a) )
926 	// 340000-3fffff empty
927 
928 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
929 	ROM_LOAD( "ik3-6.18e",  0x000000, 0x20000, CRC(59d256a4) SHA1(1e7b33329f761c695bc9a817bbc0c5e13386d073) )
930 ROM_END
931 
932 ROM_START( ikari3w ) /* Initial boot shows Ikari III The Rescue, then the title changes to the Japanese title - No demo play - proto or test set?? */
933 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
934 	ROM_LOAD16_BYTE( "ik_2.c10",  0x000000, 0x20000, CRC(d0b690d3) SHA1(6c31b27e6b9f1438e8ddbefe41fa8ded22cdb51c) ) /* Rotary Joystick - hand written label  */
935 	ROM_LOAD16_BYTE( "ik_3.c9",   0x000001, 0x20000, CRC(11a9e664) SHA1(bf2d8a5f3f2aeff99a45d26279c88ebf04b7f79b) ) /* Rotary Joystick - hand written label  */
936 	ROM_LOAD16_BYTE( "ik3-1.c8",  0x040000, 0x10000, CRC(47e4d256) SHA1(7c6921cf2f1b8c3dae867eb1fc14e3da218cc1e0) )
937 	ROM_LOAD16_BYTE( "ik3-4.c12", 0x040001, 0x10000, CRC(a43af6b5) SHA1(1ad3acadbadd21642932028ecd7c282f7fd02856) )
938 
939 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
940 	ROM_LOAD( "ik3-5.16d",  0x000000, 0x10000, CRC(ce6706fc) SHA1(95505b90a9524abf0c8c1ec6b2c40d8f25cb1d92) )
941 
942 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
943 	ROM_LOAD( "ik3-7.16l",  0x000000, 0x08000, CRC(0b4804df) SHA1(66d16d245bfc404366164823faaea0bfec83e487) )
944 	ROM_LOAD( "ik3-8.16m",  0x008000, 0x08000, CRC(10ab4e50) SHA1(dee8416eb720848cf6471e568dadc1cfc6c2e67f) )
945 
946 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
947 	ROM_LOAD16_BYTE( "ikari-880d_t53.d2", 0x000000, 0x80000, CRC(5855d95e) SHA1(808ed58fb927fb631ff54e8ae7a634d748739ffc) ) /* 4M mask ROM located on the A7007-SUB4M daughter board */
948 	ROM_LOAD16_BYTE( "ikari-880c_t54.c2", 0x000001, 0x80000, CRC(6d728362) SHA1(e94bf03bd5a21c8826930acb419d44c2076908cc) ) /* 4M mask ROM located on the A7007-SUB4M daughter board */
949 	ROM_LOAD16_BYTE( "ik_12.d1",          0x100000, 0x20000, CRC(4ebdba89) SHA1(f3ecfef4c9d2aba58dc3e6aa3cf5813d68686909) ) /* located on the A7007-SUB4M daughter board - hand written label */
950 	ROM_LOAD16_BYTE( "ik_11.c1",          0x100001, 0x20000, CRC(c33971c2) SHA1(91f3eb301803f5a7027da1ff7dd2a28bc97e5125) ) /* located on the A7007-SUB4M daughter board - hand written label */
951 	// 140000-1fffff empty
952 	ROM_LOAD16_BYTE( "ikari-880b_t51.b2", 0x200000, 0x80000, CRC(e25380e6) SHA1(10a0c7891ce64a538a92fe6bd40cb955305c090e) ) /* 4M mask ROM located on the A7007-SUB4M daughter board */
953 	ROM_LOAD16_BYTE( "ikari-880a_t52.a2", 0x200001, 0x80000, CRC(87607772) SHA1(cda4ab485fb9c930b564f98e8a776da111c66fe4) ) /* 4M mask ROM located on the A7007-SUB4M daughter board */
954 	ROM_LOAD16_BYTE( "ik_10.b1",          0x300000, 0x20000, CRC(ba106245) SHA1(ac609ec3046c21fe6058f91dd4528c5c6448dc15) ) /* located on the A7007-SUB4M daughter board - hand written label */
955 	ROM_LOAD16_BYTE( "ik_9.a1",           0x300001, 0x20000, CRC(711715ae) SHA1(90978c86884ca3d23c138d95b654e2fb3afc6f9a) ) /* located on the A7007-SUB4M daughter board - hand written label */
956 	// 340000-3fffff empty
957 
958 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
959 	ROM_LOAD( "ik3-6.18e",  0x000000, 0x20000, CRC(59d256a4) SHA1(1e7b33329f761c695bc9a817bbc0c5e13386d073) )
960 
961 	/* stuff below isn't used but loaded because it was on the board .. */
962 	ROM_REGION( 0x0600, "plds", 0 )
963 	ROM_LOAD( "a_pal20l10a.ic1", 0x0000, 0x00cc, CRC(1cadf26d) SHA1(348a9e4727df0a15247c7b9c5cd5ee935edd9752) )
964 	ROM_LOAD( "b_pal20l10a.ic3", 0x0200, 0x00cc, CRC(c3d9e729) SHA1(f05f03eecf12b4d0793124ecd3195307be04046b) )
965 	ROM_LOAD( "c_pal16l8a.ic2",  0x0400, 0x0104, CRC(e258b8d6) SHA1(9d000aa9a09b402208a5c2d98789cc62e23a2eb2) )
966 ROM_END
967 
968 ROM_START( ikari3u )
969 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
970 	ROM_LOAD16_BYTE( "ik3-2.c10", 0x000000, 0x20000, CRC(a7b34dcd) SHA1(7c2f20ae4f7dbebd3dfa3ec5408ed714e6535b6a) ) /* Rotary Joystick */
971 	ROM_LOAD16_BYTE( "ik3-3.c9",  0x000001, 0x20000, CRC(50f2b83d) SHA1(b1f0c554b262614dd2cff7a3857cb974d361937f) ) /* Rotary Joystick */
972 	ROM_LOAD16_BYTE( "ik3-1.c8",  0x040000, 0x10000, CRC(47e4d256) SHA1(7c6921cf2f1b8c3dae867eb1fc14e3da218cc1e0) )
973 	ROM_LOAD16_BYTE( "ik3-4.c12", 0x040001, 0x10000, CRC(a43af6b5) SHA1(1ad3acadbadd21642932028ecd7c282f7fd02856) )
974 
975 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
976 	ROM_LOAD( "ik3-5.15d",  0x000000, 0x10000, CRC(ce6706fc) SHA1(95505b90a9524abf0c8c1ec6b2c40d8f25cb1d92) )
977 
978 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
979 	ROM_LOAD( "ik3-7.16l",  0x000000, 0x08000, CRC(0b4804df) SHA1(66d16d245bfc404366164823faaea0bfec83e487) )
980 	ROM_LOAD( "ik3-8.16m",  0x008000, 0x08000, CRC(10ab4e50) SHA1(dee8416eb720848cf6471e568dadc1cfc6c2e67f) )
981 
982 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
983 	ROM_LOAD16_BYTE( "ik3-23.bin", 0x000000, 0x20000, CRC(d0fd5c77) SHA1(c171c64ad252f0ba5b0bbdf37808102fca37b488) )
984 	ROM_LOAD16_BYTE( "ik3-13.bin", 0x000001, 0x20000, CRC(9a56bd32) SHA1(9301b48f970b71a909fb44514b2e93c3f1516b38) )
985 	ROM_LOAD16_BYTE( "ik3-22.bin", 0x040000, 0x20000, CRC(4878d883) SHA1(8cdb541bad00e707fb65399d637b7cc9288ada77) )
986 	ROM_LOAD16_BYTE( "ik3-12.bin", 0x040001, 0x20000, CRC(0ce6a10a) SHA1(13a231aa0002b2c5a0d9404ba05a879e212d638e) )
987 	ROM_LOAD16_BYTE( "ik3-21.bin", 0x080000, 0x20000, CRC(50d0fbf0) SHA1(9ff5fbea8d35d0f9a38ddd7eb093edcd91d9f874) )
988 	ROM_LOAD16_BYTE( "ik3-11.bin", 0x080001, 0x20000, CRC(e4e2be43) SHA1(959d2799708ddae909b017c0696694c46a52697e) )
989 	ROM_LOAD16_BYTE( "ik3-20.bin", 0x0c0000, 0x20000, CRC(9a851efc) SHA1(bc7be338ee4da7fbfe6fe44a9c7889817416bc44) )
990 	ROM_LOAD16_BYTE( "ik3-10.bin", 0x0c0001, 0x20000, CRC(ac222372) SHA1(8a17e37699d691b962a6d0256a18550cc73ddfef) )
991 	ROM_LOAD16_BYTE( "ik3-19.bin", 0x100000, 0x20000, CRC(4ebdba89) SHA1(f3ecfef4c9d2aba58dc3e6aa3cf5813d68686909) )
992 	ROM_LOAD16_BYTE( "ik3-9.bin",  0x100001, 0x20000, CRC(c33971c2) SHA1(91f3eb301803f5a7027da1ff7dd2a28bc97e5125) )
993 	// 140000-1fffff empty
994 	ROM_LOAD16_BYTE( "ik3-14.bin", 0x200000, 0x20000, CRC(453bea77) SHA1(f8f8d0c048fcf32ad99e1de622d9ab635bb86eae) )
995 	ROM_LOAD16_BYTE( "ik3-24.bin", 0x200001, 0x20000, CRC(e9b26d68) SHA1(067d582d33157ed4b7980bd87f2f260ab74c347b) )
996 	ROM_LOAD16_BYTE( "ik3-15.bin", 0x240000, 0x20000, CRC(781a81fc) SHA1(e08a6cf9c632d1002176afe618605bc06168e8aa) )
997 	ROM_LOAD16_BYTE( "ik3-25.bin", 0x240001, 0x20000, CRC(073b03f1) SHA1(b8053139799fa06c7324cee928154c89d4425ab1) )
998 	ROM_LOAD16_BYTE( "ik3-16.bin", 0x280000, 0x20000, CRC(80ba400b) SHA1(2cc3e53c45f239516a60c461ad9cfa5955164262) )
999 	ROM_LOAD16_BYTE( "ik3-26.bin", 0x280001, 0x20000, CRC(9c613561) SHA1(fc7c9a642b18faa94e6a2ba53f35a4d756a25da3) )
1000 	ROM_LOAD16_BYTE( "ik3-17.bin", 0x2c0000, 0x20000, CRC(0cc3ce4a) SHA1(7b34435d0bbb089055a183b821ab255170db6bec) )
1001 	ROM_LOAD16_BYTE( "ik3-27.bin", 0x2c0001, 0x20000, CRC(16dd227e) SHA1(db3b1718dea65bc9a1a736aa62aa2be389313baf) )
1002 	ROM_LOAD16_BYTE( "ik3-18.bin", 0x300000, 0x20000, CRC(ba106245) SHA1(ac609ec3046c21fe6058f91dd4528c5c6448dc15) )
1003 	ROM_LOAD16_BYTE( "ik3-28.bin", 0x300001, 0x20000, CRC(711715ae) SHA1(90978c86884ca3d23c138d95b654e2fb3afc6f9a) )
1004 	// 340000-3fffff empty
1005 
1006 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
1007 	ROM_LOAD( "ik3-6.18e",  0x000000, 0x20000, CRC(59d256a4) SHA1(1e7b33329f761c695bc9a817bbc0c5e13386d073) )
1008 ROM_END
1009 
1010 ROM_START( ikari3j )
1011 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
1012 	ROM_LOAD16_BYTE( "ik3-2-j.c10", 0x000000, 0x20000, CRC(7b1b4be4) SHA1(22b7504040da7364b811c07014a776fa5d1d5d9f) ) /* Rotary Joystick */
1013 	ROM_LOAD16_BYTE( "ik3-3-j.c9",  0x000001, 0x20000, CRC(8e6e2aa9) SHA1(e624809c42a79510b34d99d9ca152a38c7051e87) ) /* Rotary Joystick */
1014 	ROM_LOAD16_BYTE( "ik3-1.c8",    0x040000, 0x10000, CRC(47e4d256) SHA1(7c6921cf2f1b8c3dae867eb1fc14e3da218cc1e0) )
1015 	ROM_LOAD16_BYTE( "ik3-4.c12",   0x040001, 0x10000, CRC(a43af6b5) SHA1(1ad3acadbadd21642932028ecd7c282f7fd02856) )
1016 
1017 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
1018 	ROM_LOAD( "ik3-5.16d",  0x000000, 0x10000, CRC(ce6706fc) SHA1(95505b90a9524abf0c8c1ec6b2c40d8f25cb1d92) )
1019 
1020 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
1021 	ROM_LOAD( "ik3-7.16l",  0x000000, 0x08000, CRC(0b4804df) SHA1(66d16d245bfc404366164823faaea0bfec83e487) )
1022 	ROM_LOAD( "ik3-8.16m",  0x008000, 0x08000, CRC(10ab4e50) SHA1(dee8416eb720848cf6471e568dadc1cfc6c2e67f) )
1023 
1024 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
1025 	ROM_LOAD16_BYTE( "ik3-23.bin", 0x000000, 0x20000, CRC(d0fd5c77) SHA1(c171c64ad252f0ba5b0bbdf37808102fca37b488) )
1026 	ROM_LOAD16_BYTE( "ik3-13.bin", 0x000001, 0x20000, CRC(9a56bd32) SHA1(9301b48f970b71a909fb44514b2e93c3f1516b38) )
1027 	ROM_LOAD16_BYTE( "ik3-22.bin", 0x040000, 0x20000, CRC(4878d883) SHA1(8cdb541bad00e707fb65399d637b7cc9288ada77) )
1028 	ROM_LOAD16_BYTE( "ik3-12.bin", 0x040001, 0x20000, CRC(0ce6a10a) SHA1(13a231aa0002b2c5a0d9404ba05a879e212d638e) )
1029 	ROM_LOAD16_BYTE( "ik3-21.bin", 0x080000, 0x20000, CRC(50d0fbf0) SHA1(9ff5fbea8d35d0f9a38ddd7eb093edcd91d9f874) )
1030 	ROM_LOAD16_BYTE( "ik3-11.bin", 0x080001, 0x20000, CRC(e4e2be43) SHA1(959d2799708ddae909b017c0696694c46a52697e) )
1031 	ROM_LOAD16_BYTE( "ik3-20.bin", 0x0c0000, 0x20000, CRC(9a851efc) SHA1(bc7be338ee4da7fbfe6fe44a9c7889817416bc44) )
1032 	ROM_LOAD16_BYTE( "ik3-10.bin", 0x0c0001, 0x20000, CRC(ac222372) SHA1(8a17e37699d691b962a6d0256a18550cc73ddfef) )
1033 	ROM_LOAD16_BYTE( "ik3-19.bin", 0x100000, 0x20000, CRC(4ebdba89) SHA1(f3ecfef4c9d2aba58dc3e6aa3cf5813d68686909) )
1034 	ROM_LOAD16_BYTE( "ik3-9.bin",  0x100001, 0x20000, CRC(c33971c2) SHA1(91f3eb301803f5a7027da1ff7dd2a28bc97e5125) )
1035 	// 140000-1fffff empty
1036 	ROM_LOAD16_BYTE( "ik3-14.bin", 0x200000, 0x20000, CRC(453bea77) SHA1(f8f8d0c048fcf32ad99e1de622d9ab635bb86eae) )
1037 	ROM_LOAD16_BYTE( "ik3-24.bin", 0x200001, 0x20000, CRC(e9b26d68) SHA1(067d582d33157ed4b7980bd87f2f260ab74c347b) )
1038 	ROM_LOAD16_BYTE( "ik3-15.bin", 0x240000, 0x20000, CRC(781a81fc) SHA1(e08a6cf9c632d1002176afe618605bc06168e8aa) )
1039 	ROM_LOAD16_BYTE( "ik3-25.bin", 0x240001, 0x20000, CRC(073b03f1) SHA1(b8053139799fa06c7324cee928154c89d4425ab1) )
1040 	ROM_LOAD16_BYTE( "ik3-16.bin", 0x280000, 0x20000, CRC(80ba400b) SHA1(2cc3e53c45f239516a60c461ad9cfa5955164262) )
1041 	ROM_LOAD16_BYTE( "ik3-26.bin", 0x280001, 0x20000, CRC(9c613561) SHA1(fc7c9a642b18faa94e6a2ba53f35a4d756a25da3) )
1042 	ROM_LOAD16_BYTE( "ik3-17.bin", 0x2c0000, 0x20000, CRC(0cc3ce4a) SHA1(7b34435d0bbb089055a183b821ab255170db6bec) )
1043 	ROM_LOAD16_BYTE( "ik3-27.bin", 0x2c0001, 0x20000, CRC(16dd227e) SHA1(db3b1718dea65bc9a1a736aa62aa2be389313baf) )
1044 	ROM_LOAD16_BYTE( "ik3-18.bin", 0x300000, 0x20000, CRC(ba106245) SHA1(ac609ec3046c21fe6058f91dd4528c5c6448dc15) )
1045 	ROM_LOAD16_BYTE( "ik3-28.bin", 0x300001, 0x20000, CRC(711715ae) SHA1(90978c86884ca3d23c138d95b654e2fb3afc6f9a) )
1046 	// 340000-3fffff empty
1047 
1048 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
1049 	ROM_LOAD( "ik3-6.18e",  0x000000, 0x20000, CRC(59d256a4) SHA1(1e7b33329f761c695bc9a817bbc0c5e13386d073) )
1050 ROM_END
1051 
1052 ROM_START( ikari3k )
1053 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
1054 	ROM_LOAD16_BYTE( "ik3-2k.c10", 0x000000, 0x20000, CRC(a15d2222) SHA1(7f9702516f9c74314b093435937dfecb69495b6c) ) /* 8-Way Joystick */
1055 	ROM_LOAD16_BYTE( "ik3-3k.c9",  0x000001, 0x20000, CRC(e3fc006e) SHA1(14e8ba1064e9bd168a4f7e5b5cc2a4b1ddbc7e32) ) /* 8-Way Joystick */
1056 	ROM_LOAD16_BYTE( "ik3-1.c8",   0x040000, 0x10000, CRC(47e4d256) SHA1(7c6921cf2f1b8c3dae867eb1fc14e3da218cc1e0) )
1057 	ROM_LOAD16_BYTE( "ik3-4.c12",  0x040001, 0x10000, CRC(a43af6b5) SHA1(1ad3acadbadd21642932028ecd7c282f7fd02856) )
1058 
1059 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
1060 	ROM_LOAD( "ik3-5.16d",  0x000000, 0x10000, CRC(ce6706fc) SHA1(95505b90a9524abf0c8c1ec6b2c40d8f25cb1d92) )
1061 
1062 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
1063 	ROM_LOAD( "ik3-7k.16l",  0x000000, 0x08000, CRC(8bfb399b) SHA1(f9f9d947a7739d13269e2ab84ab25a7e403aed34) )
1064 	ROM_LOAD( "ik3-8k.16m",  0x008000, 0x08000, CRC(3f0fe576) SHA1(70f4438e31b06ee0dc4660c04f512ccf3b7fa55f) )
1065 
1066 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
1067 	ROM_LOAD16_BYTE( "ikari-880d_t53.d2", 0x000000, 0x80000, CRC(5855d95e) SHA1(808ed58fb927fb631ff54e8ae7a634d748739ffc) ) /* 4M mask ROM located on the A7007-SUB4M daughter board */
1068 	ROM_LOAD16_BYTE( "ikari-880c_t54.c2", 0x000001, 0x80000, CRC(6d728362) SHA1(e94bf03bd5a21c8826930acb419d44c2076908cc) ) /* 4M mask ROM located on the A7007-SUB4M daughter board */
1069 	ROM_LOAD16_BYTE( "ik12.d1",           0x100000, 0x20000, CRC(4ebdba89) SHA1(f3ecfef4c9d2aba58dc3e6aa3cf5813d68686909) ) /* located on the A7007-SUB4M daughter board - hand written label */
1070 	ROM_LOAD16_BYTE( "ik11.c1",           0x100001, 0x20000, CRC(c33971c2) SHA1(91f3eb301803f5a7027da1ff7dd2a28bc97e5125) ) /* located on the A7007-SUB4M daughter board - hand written label */
1071 	// 140000-1fffff empty
1072 	ROM_LOAD16_BYTE( "ikari-880d_t52.b2", 0x200000, 0x80000, CRC(e25380e6) SHA1(10a0c7891ce64a538a92fe6bd40cb955305c090e) ) /* 4M mask ROM located on the A7007-SUB4M daughter board */
1073 	ROM_LOAD16_BYTE( "ikari-880c_t51.a2", 0x200001, 0x80000, CRC(87607772) SHA1(cda4ab485fb9c930b564f98e8a776da111c66fe4) ) /* 4M mask ROM located on the A7007-SUB4M daughter board */
1074 	ROM_LOAD16_BYTE( "ik10.b1",           0x300000, 0x20000, CRC(ba106245) SHA1(ac609ec3046c21fe6058f91dd4528c5c6448dc15) ) /* located on the A7007-SUB4M daughter board - hand written label */
1075 	ROM_LOAD16_BYTE( "ik9.a1",            0x300001, 0x20000, CRC(711715ae) SHA1(90978c86884ca3d23c138d95b654e2fb3afc6f9a) ) /* located on the A7007-SUB4M daughter board - hand written label */
1076 	// 340000-3fffff empty
1077 
1078 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
1079 	ROM_LOAD( "ik3-6.18e",  0x000000, 0x20000, CRC(59d256a4) SHA1(1e7b33329f761c695bc9a817bbc0c5e13386d073) )
1080 ROM_END
1081 
1082 ROM_START( searchar )
1083 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
1084 	ROM_LOAD16_BYTE( "bhw.2", 0x000000, 0x20000, CRC(e1430138) SHA1(eddc192524a13b2c09bd2bddcd5f8e8b771ceb21) )
1085 	ROM_LOAD16_BYTE( "bhw.3", 0x000001, 0x20000, CRC(ee1f9374) SHA1(fd41c74fd69d65713d8e1a9b8078328381119379) )
1086 	ROM_LOAD16_BYTE( "bhw.1", 0x040000, 0x20000, CRC(62b60066) SHA1(f7e7985c8f5f8191c580e777e1b7ed29d944d23f) )
1087 	ROM_LOAD16_BYTE( "bhw.4", 0x040001, 0x20000, CRC(16d8525c) SHA1(0098b0a7fcb23de2661bbec9a05254aa46579bb2) )
1088 
1089 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
1090 	ROM_LOAD( "bh.5",       0x000000, 0x10000, CRC(53e2fa76) SHA1(cf25b1def82545a1fd013822ab3cf02483074623) )
1091 
1092 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
1093 	ROM_LOAD( "bh.7",       0x000000, 0x08000, CRC(b0f1b049) SHA1(ec276984d91b5759a5e2b6815d1db2abc37b99f8) )
1094 	ROM_LOAD( "bh.8",       0x008000, 0x08000, CRC(174ddba7) SHA1(7b19087cd2ccc409878aefe7fa08bb2e9953d352) )
1095 
1096 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
1097 	ROM_LOAD( "bh.c1",      0x000000, 0x80000, CRC(1fb8f0ae) SHA1(d63c7376aa5f01bc009176b23324e720bada4286) )
1098 	ROM_LOAD( "bh.c3",      0x080000, 0x80000, CRC(fd8bc407) SHA1(88d750293808bf6ea23864b22070314b14fbee3c) )
1099 	ROM_LOAD( "bh.c5",      0x100000, 0x80000, CRC(1d30acc3) SHA1(e5ca39853779475b83fe37304e7bed2c293bd587) )
1100 	// 180000-1fffff empty
1101 	ROM_LOAD( "bh.c2",      0x200000, 0x80000, CRC(7c803767) SHA1(992516fbb28d00feabbed5769fa3a5748199a7d8) )
1102 	ROM_LOAD( "bh.c4",      0x280000, 0x80000, CRC(eede7c43) SHA1(7645acf0beb4fff9ec92205dcf34124360cd52f6) )
1103 	ROM_LOAD( "bh.c6",      0x300000, 0x80000, CRC(9f785cd9) SHA1(e5c7797ae7a3139e1814b068c5ecfe5c6bf30d0f) )
1104 	// 380000-3fffff empty
1105 
1106 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
1107 	ROM_LOAD( "bh.v1",      0x000000, 0x20000, CRC(07a6114b) SHA1(224df4616b77a56f33974d3b1793473d48ad52ca) )
1108 ROM_END
1109 
1110 ROM_START( searcharu )
1111 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
1112 	ROM_LOAD16_BYTE( "bh.2",  0x000000, 0x20000, CRC(c852e2e2) SHA1(c4b1b366f452122549046a3dec9b6b375bc273af) )
1113 	ROM_LOAD16_BYTE( "bh.3",  0x000001, 0x20000, CRC(bc04a4a1) SHA1(aa91583b987248a3e99813ab5e8ee03c02dac9b9) )
1114 	ROM_LOAD16_BYTE( "bh.1",  0x040000, 0x20000, CRC(ba9ca70b) SHA1(c46727473673554cbe4bbbc0288d66357f99a80e) )
1115 	ROM_LOAD16_BYTE( "bh.4",  0x040001, 0x20000, CRC(eabc5ddf) SHA1(08a2a8fcdf6a08a2694e00f4232a5bfbec98fd27) )
1116 
1117 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
1118 	ROM_LOAD( "bh.5",       0x000000, 0x10000, CRC(53e2fa76) SHA1(cf25b1def82545a1fd013822ab3cf02483074623) )
1119 
1120 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
1121 	ROM_LOAD( "bh.7",       0x000000, 0x08000, CRC(b0f1b049) SHA1(ec276984d91b5759a5e2b6815d1db2abc37b99f8) )
1122 	ROM_LOAD( "bh.8",       0x008000, 0x08000, CRC(174ddba7) SHA1(7b19087cd2ccc409878aefe7fa08bb2e9953d352) )
1123 
1124 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
1125 	ROM_LOAD( "bh.c1",      0x000000, 0x80000, CRC(1fb8f0ae) SHA1(d63c7376aa5f01bc009176b23324e720bada4286) )
1126 	ROM_LOAD( "bh.c3",      0x080000, 0x80000, CRC(fd8bc407) SHA1(88d750293808bf6ea23864b22070314b14fbee3c) )
1127 	ROM_LOAD( "bh.c5",      0x100000, 0x80000, CRC(1d30acc3) SHA1(e5ca39853779475b83fe37304e7bed2c293bd587) )
1128 	// 180000-1fffff empty
1129 	ROM_LOAD( "bh.c2",      0x200000, 0x80000, CRC(7c803767) SHA1(992516fbb28d00feabbed5769fa3a5748199a7d8) )
1130 	ROM_LOAD( "bh.c4",      0x280000, 0x80000, CRC(eede7c43) SHA1(7645acf0beb4fff9ec92205dcf34124360cd52f6) )
1131 	ROM_LOAD( "bh.c6",      0x300000, 0x80000, CRC(9f785cd9) SHA1(e5c7797ae7a3139e1814b068c5ecfe5c6bf30d0f) )
1132 	// 380000-3fffff empty
1133 
1134 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
1135 	ROM_LOAD( "bh.v1",      0x000000, 0x20000, CRC(07a6114b) SHA1(224df4616b77a56f33974d3b1793473d48ad52ca) )
1136 ROM_END
1137 
1138 ROM_START( searcharj )
1139 	ROM_REGION( 0x80000, "maincpu", ROMREGION_ERASE00 )
1140 	ROM_LOAD16_BYTE( "bh2ver3j.9c",  0x000000, 0x20000, CRC(7ef7b172) SHA1(85669ba72f59e4ff3a483bf611bf41c73f4e1930) )
1141 	ROM_LOAD16_BYTE( "bh3ver3j.10c", 0x000001, 0x20000, CRC(3fdea793) SHA1(49bafb53466afb7e4486a4894e4fd6fa08ea2eb2) )
1142 	ROM_LOAD16_BYTE( "bhw.1",        0x040000, 0x20000, CRC(62b60066) SHA1(f7e7985c8f5f8191c580e777e1b7ed29d944d23f) )
1143 	ROM_LOAD16_BYTE( "bhw.4",        0x040001, 0x20000, CRC(16d8525c) SHA1(0098b0a7fcb23de2661bbec9a05254aa46579bb2) )
1144 
1145 	ROM_REGION( 0x10000, "soundcpu", 0 )    /* Sound CPU */
1146 	ROM_LOAD( "bh.5",       0x000000, 0x10000, CRC(53e2fa76) SHA1(cf25b1def82545a1fd013822ab3cf02483074623) )
1147 
1148 	ROM_REGION( 0x010000, "gfx1", 0 )   /* characters */
1149 	ROM_LOAD( "bh.7",       0x000000, 0x08000, CRC(b0f1b049) SHA1(ec276984d91b5759a5e2b6815d1db2abc37b99f8) )
1150 	ROM_LOAD( "bh.8",       0x008000, 0x08000, CRC(174ddba7) SHA1(7b19087cd2ccc409878aefe7fa08bb2e9953d352) )
1151 
1152 	ROM_REGION( 0x400000, "gfx2", 0 )   /* sprites */
1153 	ROM_LOAD( "bh.c1",      0x000000, 0x80000, CRC(1fb8f0ae) SHA1(d63c7376aa5f01bc009176b23324e720bada4286) )
1154 	ROM_LOAD( "bh.c3",      0x080000, 0x80000, CRC(fd8bc407) SHA1(88d750293808bf6ea23864b22070314b14fbee3c) )
1155 	ROM_LOAD( "bh.c5",      0x100000, 0x80000, CRC(1d30acc3) SHA1(e5ca39853779475b83fe37304e7bed2c293bd587) )
1156 	// 180000-1fffff empty
1157 	ROM_LOAD( "bh.c2",      0x200000, 0x80000, CRC(7c803767) SHA1(992516fbb28d00feabbed5769fa3a5748199a7d8) )
1158 	ROM_LOAD( "bh.c4",      0x280000, 0x80000, CRC(eede7c43) SHA1(7645acf0beb4fff9ec92205dcf34124360cd52f6) )
1159 	ROM_LOAD( "bh.c6",      0x300000, 0x80000, CRC(9f785cd9) SHA1(e5c7797ae7a3139e1814b068c5ecfe5c6bf30d0f) )
1160 	// 380000-3fffff empty
1161 
1162 	ROM_REGION( 0x20000, "upd", 0 ) /* UPD7759 samples */
1163 	ROM_LOAD( "bh.v1",      0x000000, 0x20000, CRC(07a6114b) SHA1(224df4616b77a56f33974d3b1793473d48ad52ca) )
1164 ROM_END
1165 
1166 
1167 void snk68_state::init_powb()
1168 {
1169 	uint8_t *gfx2 = memregion("gfx2")->base();
1170 
1171 	// rearrange sprites to what the driver expects
1172 	for (int i = 0; i < 0x200000; i++)
1173 	{
1174 		gfx2[i] = bitswap(gfx2[i], 7, 3, 6, 2, 5, 1, 4, 0);
1175 	}
1176 }
1177 
1178 
1179 /******************************************************************************/
1180 
1181 GAME( 1988, pow,       0,        pow,      pow,      snk68_state,    empty_init, ROT0,  "SNK",     "P.O.W. - Prisoners of War (US version 1)",                 MACHINE_SUPPORTS_SAVE )
1182 GAME( 1988, powj,      pow,      pow,      powj,     snk68_state,    empty_init, ROT0,  "SNK",     "Datsugoku - Prisoners of War (Japan)",                     MACHINE_SUPPORTS_SAVE )
1183 GAME( 1988, powb,      pow,      powb,     pow,      snk68_state,    init_powb,  ROT0,  "bootleg", "P.O.W. - Prisoners of War (bootleg of US version 1)",      MACHINE_IMPERFECT_SOUND | MACHINE_SUPPORTS_SAVE ) // MSM5205 not hooked up
1184 GAME( 1989, streetsm,  0,        streetsm, streetsm, snk68_state,    empty_init, ROT0,  "SNK",     "Street Smart (US version 2)",                              MACHINE_SUPPORTS_SAVE )
1185 GAME( 1989, streetsm1, streetsm, searchar, streetsm, searchar_state, empty_init, ROT0,  "SNK",     "Street Smart (US version 1)",                              MACHINE_SUPPORTS_SAVE )
1186 GAME( 1989, streetsmw, streetsm, searchar, streetsj, searchar_state, empty_init, ROT0,  "SNK",     "Street Smart (World version 1)",                           MACHINE_SUPPORTS_SAVE )
1187 GAME( 1989, streetsmj, streetsm, searchar, streetsj, searchar_state, empty_init, ROT0,  "SNK",     "Street Smart (Japan version 1)",                           MACHINE_SUPPORTS_SAVE )
1188 GAME( 1989, ikari3,    0,        searchar, ikari3,   searchar_state, empty_init, ROT0,  "SNK",     "Ikari III - The Rescue (World version 1, 8-Way Joystick)", MACHINE_SUPPORTS_SAVE )
1189 GAME( 1989, ikari3w,   ikari3,   searchar, ikari3,   searchar_state, empty_init, ROT0,  "SNK",     "Ikari III - The Rescue (World, Rotary Joystick)",          MACHINE_SUPPORTS_SAVE )
1190 GAME( 1989, ikari3u,   ikari3,   searchar, ikari3,   searchar_state, empty_init, ROT0,  "SNK",     "Ikari III - The Rescue (US, Rotary Joystick)",             MACHINE_SUPPORTS_SAVE )
1191 GAME( 1989, ikari3j,   ikari3,   searchar, ikari3,   searchar_state, empty_init, ROT0,  "SNK",     "Ikari Three (Japan, Rotary Joystick)",                     MACHINE_SUPPORTS_SAVE )
1192 GAME( 1989, ikari3k,   ikari3,   searchar, ikari3,   searchar_state, empty_init, ROT0,  "SNK",     "Ikari Three (Korea, 8-Way Joystick)",                      MACHINE_SUPPORTS_SAVE )
1193 GAME( 1989, searchar,  0,        searchar, searchar, searchar_state, empty_init, ROT90, "SNK",     "SAR - Search And Rescue (World)",                          MACHINE_SUPPORTS_SAVE )
1194 GAME( 1989, searcharu, searchar, searchar, searchar, searchar_state, empty_init, ROT90, "SNK",     "SAR - Search And Rescue (US)",                             MACHINE_SUPPORTS_SAVE )
1195 GAME( 1989, searcharj, searchar, searchar, searchar, searchar_state, empty_init, ROT90, "SNK",     "SAR - Search And Rescue (Japan version 3)",                MACHINE_SUPPORTS_SAVE )
1196