1 // license:BSD-3-Clause
2 // copyright-holders:Angelo Salese
3 /**********************************************************************************
4 
5     Capcom Medal / Medalusion / Medalusion 2 hardware (c) 2005 Capcom
6 
7     skeleton driver
8 
9    Main boards:
10    Capcom AMT-04054 "YUI2"
11     - Hitachi SH-4 HD6417750S at 200MHz
12     - Elpida DS1232AA-75 1M x 32-bit x 4-banks (128Mbit) SDRAM
13     - Altera ACEX EP1K50TC144-3 FPGA
14     - 2 x Xilinx XC9572XL CPLD (TQFP-100) stamped AMTPS005 and AMTPS011
15     - M48T35Y timekeeper device
16   * - 2 x Fujitsu MB86292 'Orchid' Graphics Controller
17   * - 8 x Fujitsu MB81E161622-10FH 512K x 16-bit x 2-banks (16Mbit) FCRAM
18   * - 2 x ADV7120 Video DAC
19   * - Yamaha YMZ770B-F 'AMMSL' SPU at 16.934MHz
20    components marked * might be not populated
21 
22    Capcom AMT-02008 "YUI"
23     - FPGA is Altera FLEX 6000, other differences / details is unknown
24 
25    Upper boards (game specific):
26 
27    Capcom AMT-04041 (Alien: The Arcade)
28     - 2 x Panasonic MN677511DE MPEG2 decoder
29     - 2 x Hynix HY57V161610DTC-7 512K x 16-bit x 2-banks (16Mbit) SDRAM (TSOPII-50)
30     - Hynix HY57V643220DTP-7 512K x 32-bit x 4-banks (64Mbit) SDRAM (TSOPII-86)
31     - Altera ACEX EP1K100FC484-2 FPGA
32     - S29JL064H 64Mbit FlashROM (TSOP-48)
33     - Compact Flash connector
34 
35    Capcom AMT-05057 (Pingu's Ice Block and Donkey Kong Banana Kingdom)
36     - Altera MAX EPM3064ATC100-10 CPLD (QFP-100) stamped PS015
37     - S29JL064H 64Mbit FlashROM (TSOP-48)
38     - Compact Flash connector
39 
40     Games list: http://web.archive.org/web/20090227151212/http://www.capcom.co.jp:80/arcade/medalgame.html
41 
42     6-8 player coin pusher machines:
43  *   - Alien: The Arcade Medal Edition (c) 2005
44      - Alien Danger (c) 2007
45      - Chibi Maruko-chan Aim Fuji Nippon Ichi! (c) 2008
46  *   - Donkey Kong Banana Kingdom (c) 2006
47  *   - Super Mario Fushigi no Korokoro Party (c) 2004
48  !   - Super Mario Fushigi no Korokoro Party 2 (c) 2005
49 
50     Single player medal machines:
51     Medalusion:
52      - Chibi Maruko-chan's "Sugoroku Playfully Everyone" Volume (c) 2003
53      - Donkey Kong: Jungle Fever (c) 2005 Capcom / Nintendo / Namco
54      - Rockman EXE The Medal Operation (c) 2005
55      - Super Mario Fushigi No JanJanLand (c) 2005
56 
57     Medalusion 2:
58  !   - Doko Demo Issho Toro's Fishing (c) 2006
59  !   - Pingu's Ice Block (c) 2005
60      - Geki Makaimura (c) 2005
61  !   - Won! Tertainment Happy Channel (c) 2008 note: main board is different, uses Yamaha YMZ770C instead of YMZ770B
62 
63  * - dumped
64  ! - CF card dumped, boot roms missing
65 
66 ***********************************************************************************/
67 
68 
69 #include "emu.h"
70 #include "cpu/sh/sh4.h"
71 #include "emupal.h"
72 #include "screen.h"
73 #include "speaker.h"
74 
75 #define MASTER_CLOCK    XTAL(200'000'000)
76 
77 class alien_state : public driver_device
78 {
79 public:
alien_state(const machine_config & mconfig,device_type type,const char * tag)80 	alien_state(const machine_config &mconfig, device_type type, const char *tag)
81 		: driver_device(mconfig, type, tag),
82 			m_maincpu(*this, "maincpu")
83 	{ }
84 
85 	void alien(machine_config &config);
86 
87 	void init_dkbanans();
88 
89 private:
90 	uint64_t test_r();
91 
92 	uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect);
93 
94 	void alien_map(address_map &map);
95 
96 	// devices
97 	required_device<cpu_device> m_maincpu;
98 
99 	// driver_device overrides
100 	virtual void machine_reset() override;
101 	virtual void video_start() override;
102 };
103 
video_start()104 void alien_state::video_start()
105 {
106 }
107 
screen_update(screen_device & screen,bitmap_rgb32 & bitmap,const rectangle & cliprect)108 uint32_t alien_state::screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect)
109 {
110 	return 0;
111 }
112 
test_r()113 uint64_t alien_state::test_r()
114 {
115 	return machine().rand();
116 }
117 
alien_map(address_map & map)118 void alien_state::alien_map(address_map &map)
119 {
120 	map(0x00000000, 0x0003ffff).rom();
121 	map(0x08000000, 0x08000007).r(FUNC(alien_state::test_r)); //hangs if zero
122 	map(0x0cfe0000, 0x0cffffff).ram();
123 	map(0x10000000, 0x13ffffff).ram();
124 	map(0x18000000, 0x1800000f).r(FUNC(alien_state::test_r)).nopw();
125 }
126 
127 
128 
129 
INPUT_PORTS_START(alien)130 static INPUT_PORTS_START( alien )
131 
132 INPUT_PORTS_END
133 
134 
135 void alien_state::machine_reset()
136 {
137 	//m_maincpu->set_input_line(INPUT_LINE_HALT, ASSERT_LINE);
138 }
139 
alien(machine_config & config)140 void alien_state::alien(machine_config &config)
141 {
142 	/* basic machine hardware */
143 	SH4LE(config, m_maincpu, MASTER_CLOCK);    /* 200MHz */
144 	m_maincpu->set_addrmap(AS_PROGRAM, &alien_state::alien_map);
145 	m_maincpu->set_force_no_drc(true);
146 
147 	/* video hardware */
148 
149 	screen_device &screen(SCREEN(config, "screen", SCREEN_TYPE_RASTER));
150 	screen.set_refresh_hz(60);
151 	screen.set_vblank_time(ATTOSECONDS_IN_USEC(0));
152 	screen.set_screen_update(FUNC(alien_state::screen_update));
153 	screen.set_size((32)*8, (32)*8);
154 	screen.set_visarea_full();
155 
156 	PALETTE(config, "palette").set_entries(0x1000);
157 
158 	/* sound hardware */
159 	SPEAKER(config, "mono").front_center();
160 }
161 
init_dkbanans()162 void alien_state::init_dkbanans()
163 {
164 	uint8_t *rom = memregion("maincpu")->base();
165 	rom[2] = 0x02;
166 	rom[3] = 0x60;
167 }
168 
169 /*************************
170 *        Rom Load        *
171 *************************/
172 
173 ROM_START( alien )
174 	ROM_REGION( 0x800000, "maincpu", 0 ) // BIOS code
175 	ROM_LOAD32_WORD( "aln_s04.4.ic30", 0x000000, 0x400000, CRC(11777d3f) SHA1(8cc9fcae7911e6be273b4532d89b44a309687ead) )
176 	ROM_LOAD32_WORD( "aln_s05.5.ic33", 0x000002, 0x400000, CRC(71d2f22c) SHA1(16b25aa34f8b0d988565e7ab7cecc4df62ee8cf3) )
177 
178 	ROM_REGION( 0x800100, "ymz770b", 0 ) //sound samples flash rom, not really needed, programmed by boot loader
179 	ROM_LOAD( "s29jl064hxxtfi00.u35", 0x000000, 0x800100, CRC(01890c61) SHA1(4fad321f42eab835351c6d5f73539bdbed80affe) )
180 
181 	ROM_REGION( 0x8000, "nvram", ROMREGION_ERASEFF) //timekeeper device
182 	ROM_LOAD( "m48t35y.3.ic26", 0x000000, 0x007ff8, CRC(060b0a75) SHA1(7ddf380ee0e7b54533ef7e248405bfce1c5dbb4b) )
183 
184 	DISK_REGION( "card" ) //compact flash
185 	DISK_IMAGE( "alien", 0, SHA1(0328f12765db41a9ef5c8bfb88d4983345093072) )
186 ROM_END
187 
188 // ROM board only dumped, main board is missing
189 ROM_START( pingu )
190 	ROM_REGION( 0x800000, "maincpu", 0 ) // BIOS code
191 	ROM_LOAD32_WORD( "ic30", 0x000000, 0x400000, BAD_DUMP CRC(6b2d2ef1) SHA1(0db6490b40c5716c1271b7f99608e8c7ad916516) ) //
192 	ROM_LOAD32_WORD( "ic33", 0x000002, 0x400000, BAD_DUMP CRC(64049fc3) SHA1(b373b2c8cb4d66b9c700e0542bd26444484fae40) ) // modified boot roms from dkbanans
193 
194 	ROM_REGION( 0x800100, "ymz770b", 0 ) //sound samples flash rom, not really needed, programmed by boot loader
195 	ROM_LOAD( "ic10", 0x000000, 0x800100, CRC(04cf9722) SHA1(854e056a03d6f7ac9b438ba9ce8a0499a79bdec8) )
196 
197 	DISK_REGION( "card" ) //compact flash
198 	DISK_IMAGE( "pingu", 0, SHA1(9c74e30906f229eba4bff8262c98e556d3ea1c23) )
199 ROM_END
200 
201 // Host unit board, GPUs and YMZ770B not populated.
202 ROM_START( dkbanana )
203 	ROM_REGION( 0x800000, "maincpu", 0 ) // BIOS code
204 	ROM_LOAD32_WORD( "dnk_m04.ic30", 0x000000, 0x400000, CRC(a294f17c) SHA1(7e0f865342f63f93a9a31ad7e6d3b70c59f3fa1b) )
205 	ROM_LOAD32_WORD( "dnk_m05.ic33", 0x000002, 0x400000, CRC(22f5db87) SHA1(bdca65d39e94d88979218c8c586c6f20bb00e5ce) )
206 
207 	ROM_REGION( 0x800100, "ymz770b", 0 ) //sound samples flash rom, not really needed, programmed by boot loader
208 	ROM_LOAD( "29lj064.ic10", 0x000000, 0x800100, CRC(67cec133) SHA1(1412287fe977eb422a3cca6a0da1523859c2562e) )
209 
210 	ROM_REGION( 0x8000, "nvram", ROMREGION_ERASEFF) //timekeeper device
211 	ROM_LOAD( "m48t35y.ic26", 0x000000, 0x008000, CRC(a708bbeb) SHA1(ec96decbc7e63d700b844704dafde14513eea20e) )
212 
213 	// contain host.abs and sate.abs ELF executables and game assets
214 	// same card was used in both Host and Satellite units
215 	DISK_REGION( "card" ) //compact flash
216 	DISK_IMAGE( "dkbanana", 0, SHA1(c6b50486f2a6382a7eb36167712342212f87c189) )
217 ROM_END
218 
219 // Satellite unit board
220 ROM_START( dkbanans )
221 	ROM_REGION( 0x800000, "maincpu", 0 ) // BIOS code
222 	ROM_LOAD32_WORD( "dnk_s04.ic30", 0x000000, 0x400000, CRC(eed7d46f) SHA1(43edb15ff72952f7c9825e5735faa238edfd934d) )
223 	ROM_LOAD32_WORD( "dnk_s05.ic33", 0x000002, 0x400000, BAD_DUMP CRC(2fc88385) SHA1(03393bdb1fa526c70d766469c37b453f0e1eb8a3) ) // 2 first bytes is bad/wrong or (unlikely) supplied by protection, see driver init
224 
225 	ROM_REGION( 0x1000000, "ymz770b", 0 ) //sound samples flash rom, not really needed, programmed by boot loader
226 	ROM_LOAD( "ic10", 0x000000, 0x1000000, NO_DUMP )
227 
228 	ROM_REGION( 0x8000, "nvram", ROMREGION_ERASEFF) //timekeeper device
229 	ROM_LOAD( "m48t35y.ic26", 0x000000, 0x008000, CRC(68ca07b7) SHA1(d0a3353bf0fbd98ce335dc5116b214b18c4188dd) )
230 
231 	// contain host.abs and sate.abs ELF executables and game assets
232 	// same card was used in both Host and Satellite units
233 	DISK_REGION( "card" ) //compact flash
234 	DISK_IMAGE( "dkbanana", 0, SHA1(c6b50486f2a6382a7eb36167712342212f87c189) )
235 ROM_END
236 
237 // CF card only dumped, boot ROMs is missing
238 ROM_START( dokodemo )
239 	ROM_REGION( 0x800000, "maincpu", 0 ) // BIOS code
240 	ROM_LOAD32_WORD( "ic30", 0x000000, 0x400000, BAD_DUMP CRC(6b2d2ef1) SHA1(0db6490b40c5716c1271b7f99608e8c7ad916516) ) //
241 	ROM_LOAD32_WORD( "ic33", 0x000002, 0x400000, BAD_DUMP CRC(64049fc3) SHA1(b373b2c8cb4d66b9c700e0542bd26444484fae40) ) // modified boot roms from dkbanans
242 
243 	ROM_REGION( 0x800100, "ymz770b", ROMREGION_ERASEFF ) //sound samples flash rom, not really needed, programmed by boot loader
244 
245 	DISK_REGION( "card" ) //compact flash
246 	DISK_IMAGE( "dokodemo", 0, SHA1(0c786b6857a29b26971578abe1c8439fe43d94b5) )
247 ROM_END
248 
249 // 'Center' unit, GPUs and YMZ770B not populated.
250 ROM_START( masmario )
251 	ROM_REGION( 0x400000, "maincpu", 0 ) // BIOS code
252 	ROM_LOAD32_WORD( "mpf_m04f.ic30", 0x000000, 0x200000, CRC(f83ffb1a) SHA1(fa0ec83c21d81288b69e23ee46db359a3902648e) )
253 	ROM_LOAD32_WORD( "mpf_m05f.ic33", 0x000002, 0x200000, CRC(fe19dfb7) SHA1(2fdc2feb86840448eb9e47f7bd4dcc9adfc36bdf) )
254 
255 	ROM_REGION( 0x800000, "ymz770b", ROMREGION_ERASEFF ) // not populated
256 
257 	ROM_REGION( 0x8000, "nvram", ROMREGION_ERASEFF) //timekeeper device
258 	ROM_LOAD( "m48t35y.ic26", 0x000000, 0x008000, CRC(47b9480a) SHA1(9f8a6c7212ee410485e403db57e25d478fb4ae07) )
259 ROM_END
260 
261 // Satellite unit
262 ROM_START( masmarios )
263 	ROM_REGION( 0x1000000, "maincpu", 0 ) // BIOS and game code/data
264 	ROM_LOAD32_WORD( "mpf_s04j.ic30", 0x000000, 0x400000, CRC(73d8b6bd) SHA1(8353df96107303427fc146da29b6a6a5d303c4ee) )
265 	ROM_LOAD32_WORD( "mpf_s05j.ic33", 0x000002, 0x400000, CRC(1b1e5429) SHA1(4b25fc83172c7422bfe3f2aed9d2ee6c8a2c537f) )
266 	ROM_LOAD32_WORD( "mpf_s06j.ic39", 0x800000, 0x400000, CRC(dc20e3cc) SHA1(5b9bd0fc4a6abdda16781727b01014b0a68ef8df) )
267 	ROM_LOAD32_WORD( "mpf_s07j.ic42", 0x800002, 0x400000, CRC(cb08dc74) SHA1(31e658f8bd03fea3dffa5f32dc7ac2e73930b383) )
268 
269 	ROM_REGION( 0x800000, "ymz770b", 0 )
270 	ROM_LOAD16_WORD_SWAP( "mpf_s01.ic31", 0x000000, 0x400000, CRC(99688b6d) SHA1(2052471e2a742c05c2bbd6bcb24deca681df41c3) )
271 	ROM_LOAD16_WORD_SWAP( "mpf_s02.ic38", 0x400000, 0x400000, CRC(251f7111) SHA1(4d6e4111d76e7f56e9aeff19686dd84717ccb78a) )
272 
273 	ROM_REGION(0x8000, "nvram", 0 ) //timekeeper device
274 	ROM_LOAD("m48t35y.ic26", 0x000000, 0x008000, CRC(1e62bd96) SHA1(85dc20ea9af8aa17fee39a0647600e5075bb70e0) )
275 ROM_END
276 
277 // CF card only dumped, boot ROMs is missing
278 ROM_START( masmario2 )
279 	ROM_REGION( 0x800000, "maincpu", 0 ) // BIOS code
280 	ROM_LOAD32_WORD( "ic30", 0x000000, 0x400000, BAD_DUMP CRC(6b2d2ef1) SHA1(0db6490b40c5716c1271b7f99608e8c7ad916516) ) //
281 	ROM_LOAD32_WORD( "ic33", 0x000002, 0x400000, BAD_DUMP CRC(64049fc3) SHA1(b373b2c8cb4d66b9c700e0542bd26444484fae40) ) // modified boot roms from dkbanans
282 
283 	ROM_REGION( 0x1000000, "ymz770b", ROMREGION_ERASEFF )
284 
285 	DISK_REGION( "card" ) //compact flash
286 	DISK_IMAGE( "massmario2", 0, SHA1(9632c91bf2e4983ee29f417e3122e9380baee25b) )
287 ROM_END
288 
289 // CF card only dumped, boot ROMs is missing
290 ROM_START( wontame )
291 	ROM_REGION( 0x800000, "maincpu", 0 ) // BIOS code
292 	ROM_LOAD32_WORD( "ic30", 0x000000, 0x400000, BAD_DUMP CRC(6b2d2ef1) SHA1(0db6490b40c5716c1271b7f99608e8c7ad916516) ) //
293 	ROM_LOAD32_WORD( "ic33", 0x000002, 0x400000, BAD_DUMP CRC(64049fc3) SHA1(b373b2c8cb4d66b9c700e0542bd26444484fae40) ) // modified boot roms from dkbanans
294 
295 	ROM_REGION( 0x800000, "ymz770c", ROMREGION_ERASEFF )
296 
297 	DISK_REGION( "card" ) //compact flash
298 	DISK_IMAGE( "wontame", 0, SHA1(eb4fe73d5f723b3af08d96c6d3061c9bbc7b2488) )
299 ROM_END
300 
301 
302 GAME( 2005, alien,     0,        alien, alien, alien_state, empty_init,    ROT0, "Capcom",               "Alien: The Arcade Medal Edition", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
303 GAME( 2006, pingu,     0,        alien, alien, alien_state, empty_init,    ROT0, "Pygos Group / Capcom", "Pingu's Ice Block", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
304 GAME( 2007, dkbanana,  0,        alien, alien, alien_state, empty_init,    ROT0, "Capcom",               "Donkey Kong Banana Kingdom (host)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
305 GAME( 2007, dkbanans,  dkbanana, alien, alien, alien_state, init_dkbanans, ROT0, "Capcom",               "Donkey Kong Banana Kingdom (satellite)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
306 GAME( 2006, dokodemo,  0,        alien, alien, alien_state, empty_init,    ROT0, "Sony / Capcom",        "Doko Demo Issho: Toro's Fishing", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
307 GAME( 2004, masmario,  0,        alien, alien, alien_state, empty_init,    ROT0, "Nintendo / Capcom",    "Super Mario Fushigi no Korokoro Party (center)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
308 GAME( 2004, masmarios, 0,        alien, alien, alien_state, empty_init,    ROT0, "Nintendo / Capcom",    "Super Mario Fushigi no Korokoro Party (satellite)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
309 GAME( 2005, masmario2, 0,        alien, alien, alien_state, empty_init,    ROT0, "Nintendo / Capcom",    "Super Mario Fushigi no Korokoro Party 2", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
310 GAME( 2008, wontame,   0,        alien, alien, alien_state, empty_init,    ROT0, "Capcom / Tomy",        "Won! Tertainment Happy Channel (Ver E)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING )
311