1 // license:BSD-3-Clause
2 // copyright-holders:David Haywood
3 /*
4 
5 Sega System SP (Spider)
6 skeleton driver
7 
8 this is another 'Naomi-derived' system
9 
10 as for SP... it must be done having few things in mind:
11 differences with Naomi in SH4 memory map only:
12 0x00200000 - 0x00207fff - no SRAM here
13 0x01000000 - 0x0100ffff - banked access to ROM board address space, see later
14 0x01010000 - 0x010101ff - I/O registers, IRQ control, reg 0 - upper 16bits of rombd bank address
15 
16 as for ROM board - unlike regular Naomi M4 it have not only ROM itself,
17 but the other hardware too*:
18 0x00000000 - 0x1fffffff - FlashROM, like in regular Naomi M4 cart
19 0x39xxxxxx - SRAM(128KB)**
20 0x3axxxxxx - CF IDE registers (0 - data, 4 - error, 8 - sector count, etc)
21 0x3bxxxxxx - CF IDE AltStatus/Device Ctrl register
22 0x3dxxxxxx - Network aka Media board shared buffer/RAM
23 0x3fxxxxxx - Network board present flag (0x01)**
24 
25 *note: M4-decryption works for all areas if address bit 30 is 1,
26 for example BIOS can read CF IDE data with on-fly data decryption
27 
28 **note: this is 8bit device on 16bit bus, each even byte access actual
29 data, each odd byte is 0xFF.
30 
31 so, unlike regular Naomi this "rom board" can be accessed via BOTH regular
32 G1 bus PIO or DMA, or directly via banked  area 0x0100xxxx in SH4 address space.
33 
34 
35 
36 todo: make this actually readable, we don't support unicode source files
37 
38  Title                                       PCB ID     REV CFID    Dumped Region  PIC             MAIN BD Serial
39 Battle Police                               ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx
40 Beetle DASH!!                               ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx
41 Bingo Galaxy (main)                         834-14788    C            ROM  JP     253-5508-0513J  AAFE-01A37754716, AAFE-01E10924916, AAFE-01D67304905, Medal
42 Bingo Galaxy (satellite)                    837-14481    C            ROM  JP     not used        AAFE-01A36474716, Medal
43 Bingo Galaxy (satellite)                    837-14789    F*           ROM  JP     not used        AAFE-xxxxxxxxxxx, game is same as above
44 Bingo Parade                                ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx, Medal
45 Brick People / Block People                 834-14881                 ROM  ANY    253-5508-0558   AAFE-01F67905202, AAFE-01F68275202
46 Dinosaur King                               834-14493-01 D            ROM  US     253-5508-0408   AAFE-01D1132xxxx, AAFE-01D15924816
47 Dinosaur King - Operation: Dinosaur Rescue  837-14434-91              ROM  US/EXP 253-5508-0408   AAFE-01A30164715, AAFE-01B92094811
48 - // -                                      834-14662-01    MDA-C0021 CF                          AAFE-01B87574811
49 Dinosaur King 2                             ???-?????                 no          253-5508-0408   AAFE-xxxxxxxxxxx
50 Dinosaur King 2 Ver 2.5                     834-14792-02 F  MDA-C0047 CF   EXP    253-5508-0408   AAFE-01D73384904
51 Dinosaur King 2 Ver 2.501 China             ???-?????       MDA-C0081 CF   EXP    253-5508-0408   AAFE-xxxxxxxxxxx
52 Dinosaur King Ver 4.000                     ???-?????       MDA-C0061 CF   JP     253-5508-0408   AAFE-xxxxxxxxxxx
53 Disney: Magical Dream Dance on Stage        ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx
54 Future Police Patrol Chase                  ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx
55 Issyouni Turbo Drive                        ???-?????                 no          ???-????-????   AAFE-01E91305101
56 Issyouni Wan Wan                            ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx
57 King of Beetle: Battle Terminal             ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx
58 Love & Berry Ver 1.003                      834-14661-02              ROM  EXP    253-5508-0446   AAFE-01D84934906
59 Love & Berry Ver 2.000                      834-14661-02              ROM  EXP    253-5508-0446   AAFE-01D8493xxxx
60 Love & Berry 3 EXP Ver 1.002                834-14661-01    MDA-C0042 CF   US/EXP 253-5508-0446   AAFE-01D64704904
61 Love & Berry 3 CHN                          ???-?????       MDA-C0071 CF   EXP    253-5508-0446   AAFE-01G15765216
62 Marine & Marine                             ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx
63 Medalink                                    837-14699                 no
64 Medalink                                    837-14700                 no
65 Mirage World (SP MRW SATL)                  834-14713                 ROM  ANY    ???-????-????   AAFG-01A3xxxxxxx, Medal
66 Monopoly: The Medal                         ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx, Medal
67 Monopoly: The Medal 2nd Edition             ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx, Medal
68 Mushiking 2K6 2ND                           ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx
69 Mushiking 2K7 1ST                           ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx
70 Ocha-Ken Hot Medal (Medalink)               837-14790    G            ROM  JP     unknown         AAFE-01G03115212, Satellite Medal
71 Tetris Giant / Tetris Dekaris               834-14970    G  MDA-C0076 CF   ANY    253-5508-0604   AAFE-01G03025212
72 Tetris Giant / Tetris Dekaris Ver.2.000     834-14970    G            ROM  ANY    253-5508-0604   AAFE-xxxxxxxxxxx
73 Thomas: The Tank Engine                     ???-?????                 no          ???-????-????   AAFE-xxxxxxxxxxx
74 UNO the Medal (Medalink)                    ???-?????                 ROM  JP     253-5508-0526J  AAFE-01G00225212, Satellite Medal
75 Yataimura Kingyosukui (4-player, China)     837-14875                 CF   EXP    253-5508-0563J  AAFE-xxxxxxxxxxx
76 Unknown                                     834-14865                      JAP
77 
78 REV PCB       IC6s      Flash       AU1500
79 C  171-8278C  315-6370  8x 128Mbit  AMD
80 D  171-8278D  315-6370  8x 128Mbit  AMD
81 F  171-8278F  315-6416  8x 512Mbit  AMD
82 F* 171-8278F  315-6416  2x 512Mbit  RMI
83 G  171-8278G  315-6416  2x 512Mbit  RMI
84 
85 */
86 
87 #include "emu.h"
88 #include "cpu/sh/sh4.h"
89 #include "debugger.h"
90 #include "includes/segasp.h"
91 #include "machine/naomim4.h"
92 
sp_bank_r(offs_t offset,uint64_t mem_mask)93 uint64_t segasp_state::sp_bank_r(offs_t offset, uint64_t mem_mask)
94 {
95 	if (ACCESSING_BITS_32_63)
96 		return -1;
97 	return m_sp_bank;
98 }
99 
sp_bank_w(offs_t offset,uint64_t data,uint64_t mem_mask)100 void segasp_state::sp_bank_w(offs_t offset, uint64_t data, uint64_t mem_mask)
101 {
102 	if (ACCESSING_BITS_32_63)
103 		return;
104 	uint16_t bank = data & 0xffff;
105 	if (bank != m_sp_bank)
106 		logerror("SystemSP: G2 Bank set to %08X%s\n", (bank & 0x3fff) << 16, (bank & 0x4000) ? " decrypt ON" :"" );
107 	m_sp_bank = bank;
108 }
109 
sn_93c46a_r()110 uint64_t segasp_state::sn_93c46a_r()
111 {
112 	int res;
113 
114 	/* bit 3 is EEPROM data */
115 	res = m_eeprom->do_read() << 4;
116 	res |= (ioport("DSW")->read() << 4) & 0xC0; // note: only old REV D PCB have DSW 3-4 here, newer does not, always 0 readed
117 	return res;
118 }
119 
sn_93c46a_w(uint64_t data)120 void segasp_state::sn_93c46a_w(uint64_t data)
121 {
122 	/* bit 4 is data */
123 	/* bit 2 is clock */
124 	/* bit 5 is cs */
125 	m_eeprom->di_write((data & 0x8) >> 3);
126 	m_eeprom->cs_write((data & 0x20) ? ASSERT_LINE : CLEAR_LINE);
127 	m_eeprom->clk_write((data & 0x4) ? ASSERT_LINE : CLEAR_LINE);
128 }
129 
sp_eeprom_r(offs_t offset,uint64_t mem_mask)130 uint64_t segasp_state::sp_eeprom_r(offs_t offset, uint64_t mem_mask)
131 {
132 	if (ACCESSING_BITS_32_63)
133 		return -1;
134 	return m_sp_eeprom->do_read() << 4;
135 }
136 
sp_eeprom_w(offs_t offset,uint64_t data,uint64_t mem_mask)137 void segasp_state::sp_eeprom_w(offs_t offset, uint64_t data, uint64_t mem_mask)
138 {
139 	if (ACCESSING_BITS_32_63)
140 		return;
141 	m_sp_eeprom->di_write(data & 1);
142 	m_sp_eeprom->cs_write((data & 2) ? ASSERT_LINE : CLEAR_LINE);
143 	m_sp_eeprom->clk_write((data & 4) ? ASSERT_LINE : CLEAR_LINE);
144 }
145 
sp_rombdflg_r()146 uint64_t segasp_state::sp_rombdflg_r()
147 {
148 	// bit 0 - romboard type, 1 = M4
149 	// bit 1 - debug mode (enable easter eggs in BIOS, can boot game without proper eeproms/settings)
150 	return ioport("CFG")->read();
151 }
152 
sp_io_r(offs_t offset,uint64_t mem_mask)153 uint64_t segasp_state::sp_io_r(offs_t offset, uint64_t mem_mask)
154 {
155 	uint64_t retval;
156 
157 	int reg = offset * 2;
158 	int shift = 0;
159 
160 	if (ACCESSING_BITS_32_63)
161 	{
162 		reg++;
163 		shift = 32;
164 	}
165 
166 	switch (reg)
167 	{
168 	case 0x00/4:        // CN9 17-24 IN_PORT 0 (IN)
169 		retval = ioport("IN_PORT0")->read();
170 		break;
171 	case 0x04/4:        // CN9 41-48 IN_PORT 1 (IN)
172 		retval = ioport("IN_PORT1")->read();
173 		break;
174 	case 0x08/4:        // CN9 25-32 (I/O)
175 		retval = ioport("IN_PORT3")->read();
176 		break;
177 	case 0x18/4:        // IN_PORT 2
178 		// bit 0:3 - DIPSW 1-4
179 		// bit 4:5 - TEST/SERVICE SW, CN9 5-6 (old rev PCB only)
180 		retval = ioport("DSW")->read();
181 		retval |= ioport("IN_PORT2")->read();
182 		break;
183 	default:
184 		retval = -1;
185 	}
186 
187 	return retval << shift;
188 }
189 
190 // todo, base DC / Naomi stuff should be in it's own map, differences only here, same for Naomi 2 etc.
segasp_map(address_map & map)191 void segasp_state::segasp_map(address_map &map)
192 {
193 	/* Area 0 */
194 	map(0x00000000, 0x001fffff).mirror(0xa2000000).rom().region("maincpu", 0); // BIOS
195 
196 	map(0x005f6800, 0x005f69ff).mirror(0x02000000).rw(FUNC(segasp_state::dc_sysctrl_r), FUNC(segasp_state::dc_sysctrl_w));
197 	map(0x005f6c00, 0x005f6cff).mirror(0x02000000).m(m_maple, FUNC(maple_dc_device::amap));
198 	map(0x005f7000, 0x005f70ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::submap)).umask64(0x0000ffff0000ffff);
199 	map(0x005f7400, 0x005f74ff).mirror(0x02000000).m(m_naomig1, FUNC(naomi_g1_device::amap));
200 	map(0x005f7800, 0x005f78ff).mirror(0x02000000).rw(FUNC(segasp_state::dc_g2_ctrl_r), FUNC(segasp_state::dc_g2_ctrl_w));
201 	map(0x005f7c00, 0x005f7cff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::pd_dma_map));
202 	map(0x005f8000, 0x005f9fff).mirror(0x02000000).m(m_powervr2, FUNC(powervr2_device::ta_map));
203 	map(0x00600000, 0x006007ff).mirror(0x02000000).rw(FUNC(segasp_state::dc_modem_r), FUNC(segasp_state::dc_modem_w));
204 	map(0x00700000, 0x00707fff).mirror(0x02000000).rw(FUNC(segasp_state::dc_aica_reg_r), FUNC(segasp_state::dc_aica_reg_w));
205 	map(0x00710000, 0x0071000f).mirror(0x02000000).rw("aicartc", FUNC(aicartc_device::read), FUNC(aicartc_device::write)).umask64(0x0000ffff0000ffff);
206 
207 	map(0x00800000, 0x00ffffff).mirror(0x02000000).rw(FUNC(segasp_state::soundram_r), FUNC(segasp_state::soundram_w));           // sound RAM (8 MB)
208 
209 	/* External Device */
210 	map(0x01000000, 0x0100ffff).ram(); // banked access to ROM/NET board address space, mainly backup SRAM and ATA
211 	map(0x01010000, 0x01010007).rw(FUNC(segasp_state::sp_bank_r), FUNC(segasp_state::sp_bank_w));
212 //  map(0x01010080, 0x01010087) IRQ pending/reset, ATA control
213 	map(0x01010100, 0x01010127).r(FUNC(segasp_state::sp_io_r));
214 	map(0x01010128, 0x0101012f).rw(FUNC(segasp_state::sp_eeprom_r), FUNC(segasp_state::sp_eeprom_w));
215 	map(0x01010150, 0x01010157).r(FUNC(segasp_state::sp_rombdflg_r));
216 //  map(0x01010180, 0x010101af) custom UART 1
217 //  map(0x010101c0, 0x010101ef) custom UART 2
218 
219 	/* Area 1 */
220 	map(0x04000000, 0x04ffffff).mirror(0x02000000).ram().share("dc_texture_ram");      // texture memory 64 bit access
221 	map(0x05000000, 0x05ffffff).mirror(0x02000000).ram().share("frameram"); // apparently this actually accesses the same memory as the 64-bit texture memory access, but in a different format, keep it apart for now
222 
223 	/* Area 2*/
224 	map(0x08000000, 0x09ffffff).mirror(0x02000000).noprw(); // 'Unassigned'
225 
226 	/* Area 3 */
227 	map(0x0c000000, 0x0dffffff).mirror(0xa2000000).ram().share("dc_ram");
228 
229 	/* Area 4 */
230 	map(0x10000000, 0x107fffff).mirror(0x02000000).w(m_powervr2, FUNC(powervr2_device::ta_fifo_poly_w));
231 	map(0x10800000, 0x10ffffff).w(m_powervr2, FUNC(powervr2_device::ta_fifo_yuv_w));
232 	map(0x11000000, 0x11ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath0_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE0 register - cannot be written directly, only through dma / store queue)
233 	/*       0x12000000 -0x13ffffff Mirror area of  0x10000000 -0x11ffffff */
234 	map(0x13000000, 0x13ffffff).w(m_powervr2, FUNC(powervr2_device::ta_texture_directpath1_w)); // access to texture / framebuffer memory (either 32-bit or 64-bit area depending on SB_LMMODE1 register - cannot be written directly, only through dma / store queue)
235 
236 	/* Area 5 */
237 	//map(0x14000000, 0x17ffffff).noprw(); // MPX Ext.
238 
239 	/* Area 6 */
240 	//map(0x18000000, 0x1bffffff).noprw(); // Unassigned
241 
242 	/* Area 7 */
243 	//map(0x1c000000, 0x1fffffff).noprw(); // SH4 Internal
244 }
245 
onchip_port(address_map & map)246 void segasp_state::onchip_port(address_map &map)
247 {
248 	map(0x00, 0x0f).rw(FUNC(segasp_state::sn_93c46a_r), FUNC(segasp_state::sn_93c46a_w));
249 }
250 
251 
252 INPUT_PORTS_START( segasp )
PORT_INCLUDE(naomi_debug)253 	PORT_INCLUDE( naomi_debug )
254 
255 	PORT_START("CFG")
256 	PORT_DIPNAME( 0x01, 0x01, "ROM Board type" )
257 	PORT_DIPSETTING(    0x00, "other" )
258 	PORT_DIPSETTING(    0x01, "M4-type" )
259 	PORT_DIPNAME( 0x02, 0x00, "BIOS Debug mode" )
260 	PORT_DIPSETTING(    0x00, DEF_STR( Off ) )
261 	PORT_DIPSETTING(    0x02, DEF_STR( On ) )
262 
263 	PORT_START("DSW")
264 	PORT_DIPNAME( 0x01, 0x01, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:1")
265 	PORT_DIPSETTING(    0x01, DEF_STR( Off ) )
266 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
267 	PORT_DIPNAME( 0x02, 0x02, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:2")
268 	PORT_DIPSETTING(    0x02, DEF_STR( Off ) )
269 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
270 	PORT_DIPNAME( 0x04, 0x04, "Monitor" ) PORT_DIPLOCATION("SW:3")
271 	PORT_DIPSETTING(    0x04, "31 kHz" )
272 	PORT_DIPSETTING(    0x00, "15 kHz" )
273 	PORT_DIPNAME( 0x08, 0x00, DEF_STR( Unknown ) ) PORT_DIPLOCATION("SW:4")     // Must be ON, with off BIOS bootstrap will deadloop with green screen
274 	PORT_DIPSETTING(    0x08, DEF_STR( Off ) )
275 	PORT_DIPSETTING(    0x00, DEF_STR( On ) )
276 
277 	PORT_START("IN_PORT0")
278 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1 )
279 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2 )
280 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY
281 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
282 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY
283 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
284 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY
285 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
286 
287 	PORT_START("IN_PORT1")
288 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_SERVICE1 )
289 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_SERVICE2 )
290 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_COIN1 )
291 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_COIN2 )
292 	PORT_BIT( 0xca, IP_ACTIVE_LOW, IPT_UNKNOWN )
293 
294 	PORT_START("IN_PORT2")
295 	PORT_SERVICE_NO_TOGGLE( 0x10, IP_ACTIVE_LOW )
296 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1 )
297 	PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN )
298 
299 	PORT_START("IN_PORT3")
300 	PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY
301 	PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
302 	PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON1 )
303 	PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2)
304 	PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON2 )
305 	PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2)
306 	PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_BUTTON3 )
307 	PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2)
308 
309 INPUT_PORTS_END
310 
311 void segasp_state::segasp(machine_config &config)
312 {
313 	naomi_aw_base(config);
314 	m_maincpu->set_addrmap(AS_PROGRAM, &segasp_state::segasp_map);
315 	m_maincpu->set_addrmap(AS_IO, &segasp_state::onchip_port);
316 
317 	EEPROM_93C46_16BIT(config, "main_eeprom");
318 	EEPROM_93C46_16BIT(config, "sp_eeprom");
319 
320 // todo, not exactly NaomiM4 (see notes at top of driver) use custom board type here instead
321 	X76F100(config, "naomibd_eeprom");  // actually not present
322 	naomi_m4_board &rom_board(NAOMI_M4_BOARD(config, "rom_board", 0, "naomibd_eeprom", "pic_readout"));
323 	rom_board.irq_callback().set(FUNC(dc_state::g1_irq));
324 }
325 
init_segasp()326 void segasp_state::init_segasp()
327 {
328 	set_drc_options();
329 }
330 
331 #define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \
332 		ROMX_LOAD(name, offset, length, hash, ROM_GROUPWORD | ROM_BIOS(bios))
333 
334 #define SEGASP_BIOS \
335 	ROM_REGION( 0x200000, "maincpu", 0) \
336 	ROM_SYSTEM_BIOS( 0, "v101", "BOOT VER 1.01" ) \
337 	ROM_LOAD16_WORD_SWAP_BIOS( 0, "epr-24236a.ic50", 0x000000, 0x200000, CRC(ca7df0de) SHA1(504c74d5fc96c53ef9f7753e9e37fb8b39cb628c) ) \
338 	ROM_SYSTEM_BIOS( 1, "v200", "BOOT VER 2.00" ) \
339 	ROM_LOAD16_WORD_SWAP_BIOS( 1, "epr-24328.ic50", 0x000000, 0x200000, CRC(25f2ef00) SHA1(e58dec9f171e52b3ded213b3fcd9a0de8a438076) ) \
340 	ROM_SYSTEM_BIOS( 2, "v201", "BOOT VER 2.01" ) \
341 	ROM_LOAD16_WORD_SWAP_BIOS( 2, "epr-24328a.ic50", 0x000000, 0x200000, CRC(03ec3805) SHA1(a8fbaea826ca257be0b2b86952f247254929e046) ) \
342 	ROM_REGION16_BE( 0x80, "main_eeprom", 0 ) \
343 	ROM_LOAD16_WORD( "mb_serial.ic57", 0x0000, 0x0080, CRC(e1e3c009) SHA1(66bc636c527389c3338f631d78c788b4bd4e93be) )
344 
345 // net_firm_119.ic72  - Network/Media Board firmware VER 1.19(VxWorks), 1st half contain original 1.10 version
346 // fpr-24208a.ic72    - version 1.23, 1st half - 1.10
347 // fpr-24329.ic72     - version 1.21, 1st half - 1.20
348 // fpr-24407_123.ic72 - version 1.23, 1st half - 1.20
349 // fpr-24407.ic72     - version 1.25, 1st half - 1.20
350 #define SEGASP_NETFIRM \
351 	ROM_REGION( 0x200000, "netcpu", 0) \
352 	ROM_LOAD( "net_eeprom.ic74s",  0x00000000,    0x200, CRC(77cc5a6c) SHA1(cbfba546256b70bce6c6fd0030d7e2e410a25526) ) \
353 	ROM_LOAD( "net_firm_119.ic72", 0x00000000, 0x200000, CRC(a738ea1c) SHA1(d25187a973a7e166e70334f964363adf2be87257) ) \
354 	ROM_LOAD( "fpr-24208a.ic72",   0x00000000, 0x200000, CRC(a738ea1c) SHA1(3c32ddfb3c40be66b9fb2ba35fbfd5b534bb3da0) ) \
355 	ROM_LOAD( "fpr-24329.ic72",    0x00000000, 0x200000, CRC(a738ea1c) SHA1(d0d062a4089a2d3404df45eb015faaf7eee9b8c2) ) \
356 	ROM_LOAD( "fpr-24407.ic72",    0x00000000, 0x200000, CRC(a738ea1c) SHA1(fbcc3d119b47a6da4d194e3fe4a98126c7049edf) ) \
357 	ROM_LOAD( "fpr-24407_123.ic72",0x00000000, 0x200000, CRC(a738ea1c) SHA1(3f5a2fb03bbb1bd9af9fe32ad76a224c97aa9b7a) )
358 
359 // keep M4 board code happy for now
360 #define SEGASP_MISC \
361 	ROM_REGION( 0x84, "naomibd_eeprom", ROMREGION_ERASEFF )
362 
363 #define SEGASPEE_US \
364 	ROM_LOAD16_WORD( "mb_eeprom_us.ic54s", 0x0000, 0x0080, CRC(4186d7ab) SHA1(fc23da69a511a7643b6a066161bcfc3cdeeacf04) )
365 
366 #define SEGASPEE_EXP \
367 	ROM_LOAD16_WORD( "mb_eeprom_exp.ic54s", 0x0000, 0x0080, CRC(947ddfad) SHA1(832a3db097af680d1d0eb9451b4650565f0cf8c7) )
368 
369 #define SEGASP_US \
370 	ROM_REGION16_BE(0x80, "sp_eeprom", 0) \
371 	SEGASPEE_US
372 
373 #define SEGASP_EXP \
374 	ROM_REGION16_BE(0x80, "sp_eeprom", 0) \
375 	SEGASPEE_EXP
376 
377 #define SEGASP_JP \
378 	ROM_REGION16_BE(0x80, "sp_eeprom",  ROMREGION_ERASEFF)
379 
380 ROM_START( segasp )
381 	SEGASP_BIOS
382 	SEGASP_NETFIRM
383 	SEGASP_MISC
384 	SEGASP_JP
385 	SEGASPEE_US
386 	SEGASPEE_EXP
387 
388 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
389 	ROM_PARAMETER( ":rom_board:id", "5502" )
390 	ROM_REGION( 0x800, "pic_readout", ROMREGION_ERASE00 )
391 ROM_END
392 
393 ROM_START( brickppl )
394 	SEGASP_BIOS
395 	ROM_DEFAULT_BIOS( "v201" )
396 	SEGASP_JP
397 	SEGASP_MISC
398 
399 	ROM_REGION( 0x10000000, "rom_board", ROMREGION_ERASE)
400 	ROM_LOAD( "ic62",  0x00000000, 0x4000000, CRC(d79afdb6) SHA1(328e535980624d9173164b756ebbdc1ca4cb6f18) )
401 	ROM_LOAD( "ic63",  0x04000000, 0x4000000, CRC(4f3c0937) SHA1(72d68b66c57ff539b8058f80f1a15ffa44095460) )
402 	ROM_LOAD( "ic64",  0x08000000, 0x4000000, CRC(383e90d9) SHA1(eeca4b1bd0cd1fed7b85f045d71e0c7258d4350b) )
403 	ROM_LOAD( "ic65",  0x0c000000, 0x4000000, CRC(4c29b5ac) SHA1(9e6a79ad2d2498eed5b2590c8764222e7d6c0229) )
404 
405 	ROM_PARAMETER( ":rom_board:id", "5508" )  // 8x 512Mbit FlashROMs
406 
407 	ROM_REGION( 0x800, "pic_readout", 0 )
408 	ROM_LOAD( "317-0558-com.ic15", 0, 0x800, BAD_DUMP CRC(7592d004) SHA1(632373d807f54953d68c95a9f874ed3e8011f085) )
409 ROM_END
410 
411 ROM_START( bingogal )
412 	SEGASP_BIOS
413 	SEGASP_JP
414 	SEGASP_MISC
415 
416 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASE)
417 	ROM_LOAD( "ic62",  0x00000000, 0x01000000, CRC(c07d9870) SHA1(5d40c14c398c11908f05ef1fd274aa3818409fc6) )
418 	ROM_LOAD( "ic63",  0x01000000, 0x01000000, CRC(5d85e6c0) SHA1(c09e843399fa4855ea149564480adbdf02dcc182) )
419 	ROM_LOAD( "ic64",  0x02000000, 0x01000000, CRC(73134f52) SHA1(63e32fbbd15bb527d9b840dcc92bb9dd86483ae3) )
420 	ROM_LOAD( "ic65",  0x03000000, 0x01000000, CRC(1e4ae511) SHA1(55b4f9dc86f7da8db9e4875a6ee120228be42591) )
421 	ROM_LOAD( "ic66s", 0x04000000, 0x01000000, CRC(810d5dfc) SHA1(6998a622d0a4be27ba6d1fcfb2a89586f269b59e) )
422 	ROM_LOAD( "ic67s", 0x05000000, 0x01000000, CRC(92014e31) SHA1(6a5cf75da4c81dc55386996b6e62bbb4594591e8) )
423 	ROM_LOAD( "ic68s", 0x06000000, 0x01000000, CRC(0640172c) SHA1(44ccf6919922a1ce8ffd49ad3306c68b15193a71) )
424 	ROM_LOAD( "ic69s", 0x07000000, 0x01000000, CRC(ca26fbf9) SHA1(fe131e23109d4ff2b79ce53b79c22009b2078c85) )
425 
426 	ROM_PARAMETER( ":rom_board:id", "5502" )  // actually 8x 128Mbit FlashROMs
427 
428 	ROM_REGION( 0x800, "pic_readout", 0 )
429 	ROM_LOAD( "317-0513-jpn.ic15", 0, 0x800, BAD_DUMP CRC(778dc297) SHA1(a920ab31ea670cc5056c40baea3b832b7868bfe7) )
430 ROM_END
431 
432 // Also was dumped 837-14789 PCB, which uses 2x 512Mbit Flash ROMs. Game contents is the same as joined IC 62-64 dumps below.
433 ROM_START( bingogals )
434 	SEGASP_BIOS
435 	SEGASP_JP
436 	SEGASP_MISC
437 
438 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASE)
439 	ROM_LOAD( "ic62",  0x00000000, 0x01000000, CRC(880eb905) SHA1(7afdb154329d49c85b10316d62aef4934e9a5479) )
440 	ROM_LOAD( "ic63",  0x01000000, 0x01000000, CRC(41dab407) SHA1(d4582e6d8a0e67e6bfebcb336a4c8392f7cdba39) )
441 	ROM_LOAD( "ic64",  0x02000000, 0x01000000, CRC(97dfb2ab) SHA1(97f95643145717b199cf79020d5e81bf913a96a7) )
442 
443 	ROM_PARAMETER( ":rom_board:id", "5502" )  // actually 8x 128Mbit FlashROMs
444 
445 	ROM_REGION( 0x800, "pic_readout", ROMREGION_ERASEFF) // not populated
446 ROM_END
447 
448 ROM_START( dinoking )
449 	SEGASP_BIOS
450 	SEGASP_US
451 	SEGASP_MISC
452 
453 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASE)
454 	ROM_LOAD( "ic62",  0x00000000, 0x01000000, CRC(8bd18bf7) SHA1(8972ed2bf5bc2f8af9b864118f7a22940c392079) )
455 	ROM_LOAD( "ic63",  0x01000000, 0x01000000, CRC(8e8c8d1b) SHA1(4ec4a91515e57524d82a0cb98beabe8a286a5cd1) )
456 	ROM_LOAD( "ic64",  0x02000000, 0x01000000, CRC(01b32ff7) SHA1(27301813ccd895b16a247ebed5edc3d8e3eab334) )
457 	ROM_LOAD( "ic65",  0x03000000, 0x01000000, CRC(4b60cdb3) SHA1(4ad3e97845d6bdd8b32369aa23e622e066c8ba67) )
458 	ROM_LOAD( "ic66s", 0x04000000, 0x01000000, CRC(ee3c278e) SHA1(3273a9f1eace78f65ba25bf0f6fcaa77fa421fc4) )
459 	ROM_LOAD( "ic67s", 0x05000000, 0x01000000, CRC(42441393) SHA1(7ba94bc12ace699ea1159cece3d070fb35789d31) )
460 	ROM_LOAD( "ic68s", 0x06000000, 0x01000000, CRC(4a787a44) SHA1(4d8f348466187fb67ffff8605be151cea1f77ec6) )
461 	ROM_LOAD( "ic69s", 0x07000000, 0x01000000, CRC(c78e46c2) SHA1(b8224c68face23010414d13ebb4cc05a2a9dce8a) )
462 
463 
464 	ROM_PARAMETER( ":rom_board:id", "5502" )  // actually 8x 128Mbit FlashROMs
465 
466 	ROM_REGION( 0x800, "pic_readout", 0 )
467 	ROM_LOAD( "317-0408-com.ic15", 0, 0x800, CRC(f77c49dc) SHA1(e10173bbbd5930ed159cec9a7dba308e2a3f3c43) )
468 ROM_END
469 
470 ROM_START( lovebery )
471 	SEGASP_BIOS
472 	ROM_DEFAULT_BIOS( "v201" )
473 	SEGASP_EXP
474 	SEGASP_MISC
475 
476 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASE)
477 	ROM_LOAD( "ic62",  0x00000000, 0x4000000, CRC(1bd80ed0) SHA1(d50307573389ebe71e381a75deb83811fa397b94) )
478 	ROM_LOAD( "ic63",  0x04000000, 0x4000000, CRC(d3870287) SHA1(efd3630d54068f5a8caf242a48db410bedf48e7a) )
479 
480 	ROM_PARAMETER( ":rom_board:id", "5508" )  // 8x 512Mbit FlashROMs
481 
482 	ROM_REGION( 0x800, "pic_readout", 0 )
483 	ROM_LOAD( "317-0446-com.ic15", 0, 0x800, BAD_DUMP CRC(60f56bf2) SHA1(35e697aca7213e3fb1ebe75bb8991b1b992af6d9) )
484 
485 	// LOVE AND BERRY
486 	// Dress up and Dance!
487 	// Type-3
488 	// 800
489 	// note: this dump from "empty/dead" Management Chip with no game run count left
490 	ROM_REGION( 0x80, "rf_tag", 0 )
491 	ROM_LOAD( "berry_type3.bin", 0, 0x80, CRC(0c58aabd) SHA1(8e5d8c9fd2c84e93b442192682930cf4da3fcf79) )
492 ROM_END
493 
494 ROM_START( lovebero )
495 	SEGASP_BIOS
496 	ROM_DEFAULT_BIOS( "v201" )
497 	SEGASP_EXP
498 	SEGASP_MISC
499 
500 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASE)
501 	ROM_LOAD( "ic62",  0x00000000, 0x4000000, CRC(0a23cea3) SHA1(1780d935b0d641769859b2022df8e4262e7bafd8) ) // sldh
502 	ROM_LOAD( "ic63",  0x04000000, 0x4000000, CRC(d3870287) SHA1(efd3630d54068f5a8caf242a48db410bedf48e7a) )
503 
504 	ROM_PARAMETER( ":rom_board:id", "5508" )  // 8x 512Mbit FlashROMs
505 
506 	ROM_REGION( 0x800, "pic_readout", 0 )
507 	ROM_LOAD( "317-0446-com.ic15", 0, 0x800, BAD_DUMP CRC(60f56bf2) SHA1(35e697aca7213e3fb1ebe75bb8991b1b992af6d9) )
508 ROM_END
509 
510 // Mirage World
511 // "coin pusher" type medal game machine, consists of "Main", "Center" and several "Satellite" units connected via Ethernet.
512 // Only Satellite unit was dumped, Main and Center units is missing.
513 // 834-14713 SP MRW SATL
514 ROM_START( mirworld )
515 	SEGASP_BIOS
516 	ROM_DEFAULT_BIOS( "v201" )
517 	SEGASP_JP
518 	SEGASP_MISC
519 
520 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASE)
521 	ROM_LOAD( "ic62",  0x00000000, 0x4000000, CRC(beda1ded) SHA1(a493a298d8fbe1fa2c66423da2dee378e691a7f4) )
522 	ROM_LOAD( "ic63",  0x04000000, 0x4000000, CRC(ec7e58cb) SHA1(8c6a45da31cd87a71b8e2f7454dc31bc2891210b) )
523 
524 	ROM_PARAMETER( ":rom_board:id", "5502" )  // 2x 512Mbit FlashROMs
525 
526 	ROM_REGION( 0x800, "pic_readout", ROMREGION_ERASEFF ) // not populated
527 ROM_END
528 
529 ROM_START( ochaken )
530 	SEGASP_BIOS
531 	ROM_DEFAULT_BIOS( "v201" )
532 	SEGASP_JP
533 	SEGASP_MISC
534 
535 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASE)
536 	ROM_LOAD( "ic62",  0x00000000, 0x4000000, CRC(7eb89b69) SHA1(5991c72df7ee68073f6de158f6ddf3f0490444ac) )
537 	ROM_LOAD( "ic63",  0x04000000, 0x4000000, CRC(e52d7885) SHA1(96485af39b7cbf3c7bfd403f673eb8678077bbe8) )
538 
539 	ROM_PARAMETER( ":rom_board:id", "5502" )  // 2x 512Mbit FlashROMs
540 
541 	ROM_REGION( 0x800, "pic_readout", 0 )
542 	// no PIC was provided with game board, brute forced key
543 	ROM_LOAD( "317-unknown.ic15", 0, 0x800, BAD_DUMP CRC(0a6e8627) SHA1(01a0b66bffbf7caca8199b132a6014813f04843f) )
544 ROM_END
545 
546 ROM_START( tetgiant )
547 	SEGASP_BIOS
548 	ROM_DEFAULT_BIOS( "v201" )
549 	SEGASP_JP
550 	SEGASP_MISC
551 
552 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASE)
553 	ROM_LOAD( "ic62",  0x00000000, 0x4000000, CRC(31ba1938) SHA1(9b5a05193b3df13cd7617a38913e0b0fbd61da44) )
554 	ROM_LOAD( "ic63",  0x04000000, 0x4000000, CRC(cb946213) SHA1(6195e33c44a1e8eb464dfc3558dc1c9b4d910ef3) )
555 
556 	ROM_PARAMETER( ":rom_board:id", "5502" )  // 2x 512Mbit FlashROMs
557 
558 	ROM_REGION( 0x800, "pic_readout", 0 )
559 	ROM_LOAD( "317-0604-com.ic15", 0, 0x800, CRC(a46dfd47) SHA1(9e24739ecaaf85ef3b862485064450db6c607189) )
560 ROM_END
561 
562 ROM_START( unomedal )
563 	SEGASP_BIOS
564 	ROM_DEFAULT_BIOS( "v201" )
565 	SEGASP_JP
566 	SEGASP_MISC
567 
568 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
569 	ROM_LOAD( "ic62",  0x00000000, 0x4000000, CRC(2af0cfb3) SHA1(88e75e547e525d7752f365256ba22411d2f0c7d9) )
570 	ROM_LOAD( "ic63",  0x04000000, 0x4000000, CRC(fe375da9) SHA1(b2c6ddf3f15ba801bfa1d0c6ae7ebde0ce6766e9) )
571 
572 	ROM_PARAMETER( ":rom_board:id", "5502" )  // 2x 512Mbit FlashROMs
573 
574 	ROM_REGION( 0x800, "pic_readout", 0 )
575 	ROM_LOAD( "317-0526-jpn.ic15", 0, 0x800, CRC(14232fb7) SHA1(5fb8f832c760081aec6fdaa3be8535e3d641ae13) )
576 ROM_END
577 
578 
579 ROM_START( dinokior )
580 	SEGASP_BIOS
581 	SEGASP_US
582 	SEGASP_MISC
583 
584 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
585 
586 	// DINOSAUR KING
587 	// Operation:Dinosaur Rescue
588 	// MDA-C0021
589 	DISK_REGION( "cflash" )
590 	DISK_IMAGE( "mda-c0021", 0, SHA1(947c987fb93a32c5acf7839e0186de91b5a9facc) )
591 
592 	ROM_PARAMETER( ":rom_board:id", "5502" )  // actually 8x 128Mbit FlashROMs
593 
594 	ROM_REGION( 0x800, "pic_readout", 0 )
595 	ROM_LOAD( "317-0408-com.ic15", 0, 0x800, CRC(f77c49dc) SHA1(e10173bbbd5930ed159cec9a7dba308e2a3f3c43) )
596 ROM_END
597 
598 ROM_START( dinoki25 )
599 	SEGASP_BIOS
600 	ROM_DEFAULT_BIOS( "v200" )
601 	SEGASP_EXP
602 	SEGASP_MISC
603 
604 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
605 
606 	// DINOSAUR KING
607 	// VER2.5 ENG_ASIA
608 	// MDA-C0047
609 	DISK_REGION( "cflash" )
610 	DISK_IMAGE( "mda-c0047", 0, SHA1(0f97291d9c5dbe3e66a5220da05aebdfaa78b35d) )
611 
612 	ROM_PARAMETER( ":rom_board:id", "5508" )  // 8x 512Mbit FlashROMs
613 
614 	ROM_REGION( 0x800, "pic_readout", 0 )
615 	ROM_LOAD( "317-0408-com.ic15", 0, 0x800, CRC(f77c49dc) SHA1(e10173bbbd5930ed159cec9a7dba308e2a3f3c43) )
616 
617 	// DINOSAUR KING
618 	// TYPE-3
619 	// 800
620 	// note: this dump from "empty/dead" Management Chip with no game run count left
621 	ROM_REGION( 0x80, "rf_tag", 0 )
622 	ROM_LOAD( "dino_type3.bin", 0, 0x80, CRC(1b6c9ea7) SHA1(2e56a1969c49c347f7facda187e5bf787c74328c) )
623 ROM_END
624 
625 // This game's protection uses contact IC card reader made by Hirocon, with 2 IC card slots, cards probably SLE4428 or SLE5528.
626 ROM_START( dinokich )
627 	SEGASP_BIOS
628 	ROM_DEFAULT_BIOS( "v200" )
629 	SEGASP_EXP
630 	SEGASP_MISC
631 
632 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
633 
634 	// DINOSAUR KING
635 	// MDA-C0081
636 	DISK_REGION( "cflash" )
637 	DISK_IMAGE( "mda-c0081", 0, SHA1(c9b8449666124f52b175a3d3d795bc0e7ea4d91e) ) // unused space contain leftovers from "Disney Magical Dream Dance" game, encrypted, key is 1ffbc9f0
638 
639 	ROM_PARAMETER( ":rom_board:id", "5508" )  // 8x 512Mbit FlashROMs
640 
641 	ROM_REGION( 0x800, "pic_readout", 0 )
642 	ROM_LOAD( "317-0408-com.ic15", 0, 0x800, CRC(f77c49dc) SHA1(e10173bbbd5930ed159cec9a7dba308e2a3f3c43) )
643 ROM_END
644 
645 // This version does not use RFID readers and Management chips.
646 ROM_START( dinoki4 )
647 	SEGASP_BIOS
648 	ROM_DEFAULT_BIOS( "v200" )
649 	SEGASP_JP
650 	SEGASP_MISC
651 
652 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
653 
654 	// 古代王者 恐竜キング
655 	// 目覚めよ! 新たなる力!!
656 	// MDA-C0061
657 	DISK_REGION( "cflash" )
658 	DISK_IMAGE( "mda-c0061", 0, BAD_DUMP SHA1(d9e21aff3d33cc5d3d97decacf963cff23c60ff1) ) // BAD_DUMP note: actual game files is all good and genuine, but image itself was modified and not original.
659 
660 	ROM_PARAMETER( ":rom_board:id", "5502" )
661 
662 	ROM_REGION( 0x800, "pic_readout", 0 )
663 	ROM_LOAD( "317-0408-com.ic15", 0, 0x800, CRC(f77c49dc) SHA1(e10173bbbd5930ed159cec9a7dba308e2a3f3c43) )
664 ROM_END
665 
666 ROM_START( kingyoch )
667 	SEGASP_BIOS
668 	ROM_DEFAULT_BIOS( "v201" )
669 	SEGASP_EXP
670 	SEGASP_MISC
671 
672 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
673 
674 	// YATAIMURA
675 	// KINGYOSUKUI EX
676 	DISK_REGION( "cflash" )
677 	DISK_IMAGE( "kingyo", 0, SHA1(f3685a0c6109b78f4812972b71bcec4ef9e9198f) ) // free space contain other game leftovers, presumable Issyouni Wan Wan, encrypted, key is 511248c2
678 
679 	ROM_PARAMETER( ":rom_board:id", "5508" )  // 8x 512Mbit FlashROMs
680 
681 	ROM_REGION( 0x800, "pic_readout", 0 )
682 	// no PIC was provided with CF card, brute forced key
683 	ROM_LOAD( "317-0563-jpn.ic15", 0, 0x800, BAD_DUMP CRC(8af67833) SHA1(0b79abf9182c249a6d4976d6fd3b90101d66354f) )
684 ROM_END
685 
686 ROM_START( loveber3 )
687 	SEGASP_BIOS
688 	ROM_DEFAULT_BIOS( "v200" )
689 	SEGASP_US
690 	SEGASP_MISC
691 
692 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
693 
694 	// LOVE AND BERRY III ENG
695 	// MDA-C0042
696 	DISK_REGION( "cflash" )
697 	DISK_IMAGE( "mda-c0042", 0, SHA1(9992d90dae8ce7636e4153e02b779c27931b3be6) )
698 
699 	ROM_PARAMETER( ":rom_board:id", "5508" )  // 8x 512Mbit FlashROMs
700 
701 	ROM_REGION( 0x800, "pic_readout", 0 )
702 	ROM_LOAD( "317-0446-com.ic15", 0, 0x800, BAD_DUMP CRC(60f56bf2) SHA1(35e697aca7213e3fb1ebe75bb8991b1b992af6d9) )
703 ROM_END
704 
705 // This game's protection uses contact IC card reader made by Hirocon, with 2 IC card slots, cards probably SLE4428 or SLE5528.
706 ROM_START( loveber3cn )
707 	SEGASP_BIOS
708 	ROM_DEFAULT_BIOS( "v201" )
709 	SEGASP_EXP
710 	SEGASP_MISC
711 
712 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
713 
714 	// LOVE AND BERRY III CHN
715 	// MDA-C0071
716 	DISK_REGION( "cflash" )
717 	DISK_IMAGE( "mda-c0071", 0, SHA1(ea65def6d97dc76c08654fae3c89b80a0492575b) ) // unused space contain leftovers from "Disney Magical Dream Dance" game, encrypted, key is 1ffbc9f0
718 
719 	ROM_PARAMETER( ":rom_board:id", "5508" )  // 8x 512Mbit FlashROMs
720 
721 	ROM_REGION( 0x800, "pic_readout", 0 )
722 	ROM_LOAD( "317-0446-com.ic15", 0, 0x800, BAD_DUMP CRC(60f56bf2) SHA1(35e697aca7213e3fb1ebe75bb8991b1b992af6d9) )
723 ROM_END
724 
725 ROM_START( tetgiano )
726 	SEGASP_BIOS
727 	ROM_DEFAULT_BIOS( "v201" )
728 	SEGASP_JP
729 	SEGASP_MISC
730 
731 	ROM_REGION( 0x08000000, "rom_board", ROMREGION_ERASEFF)
732 
733 	// TETRIS - DEKARIS (romaji)
734 	// / TETRIS® - GIANT
735 	// MDA-C0076
736 	DISK_REGION( "cflash" )
737 	DISK_IMAGE( "mda-c0076", 0, SHA1(6987c888d2a3ada2d07f6396d47fdba507ca859d) )
738 
739 	ROM_PARAMETER( ":rom_board:id", "5502" )  // 2x 512Mbit FlashROMs
740 
741 	ROM_REGION( 0x800, "pic_readout", 0 )
742 	ROM_LOAD( "317-0604-com.ic15", 0, 0x800, CRC(a46dfd47) SHA1(9e24739ecaaf85ef3b862485064450db6c607189) )
743 ROM_END
744 
745 
746 #define GAME_FLAGS (MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS|MACHINE_IMPERFECT_SOUND)
747 
748 GAME( 2004, segasp,  0,          segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Sega System SP (Spider) BIOS", GAME_FLAGS | MACHINE_IS_BIOS_ROOT )
749 // These use ROMs
750 GAME( 2009, bingogal,segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Bingo Galaxy (main)", GAME_FLAGS ) // 28.05.2009
751 GAME( 2009, bingogals,segasp,    segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Bingo Galaxy (satellite)", GAME_FLAGS ) // 28.05.2009
752 GAME( 2009, brickppl,segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Brick People / Block PeePoo (Ver 1.002)", GAME_FLAGS )
753 GAME( 2005, dinoking,segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Dinosaur King (USA)", GAME_FLAGS )
754 GAME( 2006, lovebery,segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Love And Berry - 1st-2nd Collection (Export, Ver 2.000)", GAME_FLAGS )
755 GAME( 2006, lovebero,lovebery,   segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Love And Berry - 1st-2nd Collection (Export, Ver 1.003)", GAME_FLAGS )
756 GAME( 2007, mirworld,segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Mirage World (satellite)", GAME_FLAGS )
757 GAME( 2007, ochaken, segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Ocha-Ken Hot Medal", GAME_FLAGS )
758 GAME( 2009, tetgiant,segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Tetris Giant / Tetris Dekaris (Ver.2.000)", GAME_FLAGS )
759 GAME( 2009, unomedal,segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "UNO the Medal", GAME_FLAGS )
760 // These use a CF card
761 GAME( 2006, dinokior,segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Dinosaur King - Operation: Dinosaur Rescue (USA, Export) (MDA-C0021)", GAME_FLAGS )
762 GAME( 2008, dinoki25,segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Dinosaur King - D-Team VS. the Alpha Fortress (Export, Ver 2.500) (MDA-C0047)", GAME_FLAGS )
763 GAME( 2010, dinokich,dinoki25,   segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Konglongwang - D-Kids VS Alpha Yaosai (China, Ver 2.501) (MDA-C0081)", GAME_FLAGS ) // D-Kids VS 亚法要塞
764 GAME( 2008, dinoki4,segasp,      segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Kodai Ouja Kyouryuu King - Mezame yo! Arata-naru Chikara!! (Japan, Ver 4.000) (MDA-C0061)", GAME_FLAGS ) // Ancient Ruler Dinosaur King - Wake up! New Power!!
765 GAME( 2009, kingyoch,segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Yataimura Kingyosukui (4-player, China, Ver 1.000)", GAME_FLAGS )
766 GAME( 2007, loveber3,segasp,     segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Love And Berry - 3rd-5th Collection (USA, Export, Ver 1.002) (MDA-C0042)", GAME_FLAGS )
767 GAME( 2010, loveber3cn,loveber3, segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Love And Berry - 3rd-5th Collection (China, Ver 1.001) (MDA-C0071)", GAME_FLAGS )
768 GAME( 2009, tetgiano,tetgiant,   segasp,    segasp, segasp_state, init_segasp, ROT0, "Sega", "Tetris Giant / Tetris Dekaris (MDA-C0076)", GAME_FLAGS )
769