1 /* Tecmo System
2  Driver by Farfetch & David Haywood
3 
4 can't do anything with this, its protected and expects to read back 68k code :-(
5 
6 */
7 
8 /*
9 
10 Deroon DeroDero
11 (c)1996 Tecmo
12 Tecmo System Board
13 
14 CPU  : TMP68HC000P-16
15 Sound: TMPZ84C00AP-8 YMF262 YMZ280B M6295
16 OSC  : 14.3181MHz (X1) 28.0000MHz (X2) 16.0000MHz (X3) 16.9MHz (X4)
17 
18 Custom chips:
19 TECMO AA02-1927 (160pin PQFP) (x4)
20 TECMO AA03-8431 (208pin PQFP) (x4)
21 
22 Others:
23 93C46 EEPROM (settings are stored to this)
24 
25 EPROMs:
26 t001upau.bin - Main program (even) (27c4001)
27 t002upal.bin - Main program (odd)  (27c4001)
28 
29 t003uz1.bin - Sound program (27c2001)
30 
31 Mask ROMs:
32 t101uah1.j66 - Graphics (23c16000 SOP)
33 t102ual1.j67 |
34 t103ubl1.j08 |
35 t104ucl1.j68 /
36 
37 t201ubb1.w61 - Graphics (23c8000)
38 t202ubc1.w62 /
39 
40 t301ubd1.w63 - Graphics (23c8000)
41 
42 t401uya1.w16 - YMZ280B Samples (23c16000)
43 
44 t501uad1.w01 - M6295 Samples (23c4001)
45 
46 */
47 
48 /*
49 
50 Touki Denshou -Angel Eyes-
51 (c)1996 Tecmo
52 Tecmo System Board
53 
54 CPU  : TMP68HC000P-16
55 Sound: TMPZ84C00AP-8 YMF262 YMZ280B M6295
56 OSC  : 14.3181MHz (X1) 28.0000MHz (X2) 16.0000MHz (X3) 16.9MHz (X4)
57 
58 Custom chips:
59 TECMO AA02-1927 (160pin PQFP) (x4)
60 TECMO AA03-8431 (208pin PQFP) (x4)
61 
62 Others:
63 93C46 EEPROM (settings are stored to this)
64 
65 EPROMs:
66 aeprge-2.pal - Main program (even) (27c4001)
67 aeprgo-2.pau - Main program (odd)  (27c4001)
68 
69 aesprg-2.z1 - Sound program (27c1001)
70 
71 Mask ROMs:
72 ae100h.ah1 - Graphics (23c32000/16000 SOP)
73 ae100.al1  |
74 ae101h.bh1 |
75 ae101.bl1  |
76 ae102h.ch1 |
77 ae102.cl1  |
78 ae104.el1  |
79 ae105.fl1  |
80 ae106.gl1  /
81 
82 ae200w74.ba1 - Graphics (23c16000)
83 ae201w75.bb1 |
84 ae202w76.bc1 /
85 
86 ae300w36.bd1 - Graphics (23c4000)
87 
88 ae400t23.ya1 - YMZ280B Samples (23c16000)
89 ae401t24.yb1 /
90 
91 ae500w07.ad1 - M6295 Samples (23c4001)
92 
93 */
94 
95 #include "driver.h"
96 
97 
98 static data16_t* protram;
99 
100 static UINT8 device[0x10000];
101 static UINT32 device_read_ptr = 0;
102 static UINT32 device_write_ptr = 0;
103 
104 enum DEV_STATUS
105 {
106 	DS_CMD,
107 	DS_WRITE,
108 	DS_WRITE_ACK,
109 	DS_READ,
110 	DS_READ_ACK
111 };
112 
113 static UINT8 device_status = DS_CMD;
114 
READ16_HANDLER(reg_f80000_r)115 static READ16_HANDLER(reg_f80000_r)
116 {
117 	UINT16 dt;
118 
119 	/* 0 means ok, no errors. -1 means error*/
120 	if (device_status == DS_CMD)
121 		return 0;
122 
123 	if (device_status == DS_WRITE_ACK)
124 	{
125 		/* Notice, this is the maximum. I think the device lets 68k just writes 4/5 bytes,*/
126 		/* they contain "LUNA". Then, it starts sending to the 68k a bunch of stuff, including*/
127 		/* 68k code.*/
128 		if (device_write_ptr == 0x10000)
129 		{
130 /*			log_cb(RETRO_LOG_DEBUG, LOGPRE "DEVICE write finished\n");*/
131 			device_status = DS_READ_ACK;
132 			device_write_ptr = 0;
133 			device_read_ptr = 0;
134 		}
135 		else
136 			device_status = DS_WRITE;
137 
138 		return 0;
139 	}
140 
141 	if (device_status == DS_WRITE)
142 	{
143 		log_cb(RETRO_LOG_DEBUG, LOGPRE "UNEXPECTED read DS_WRITE (write ptr %x)\n", device_write_ptr);
144 		return 0;
145 	}
146 
147 
148 	if (device_status == DS_READ_ACK)
149 	{
150 /*		log_cb(RETRO_LOG_DEBUG, LOGPRE "Read ACK\n");*/
151 		device_status = DS_READ;
152 		return 0;
153 	}
154 
155 	dt = device[device_read_ptr];
156 
157 /*	log_cb(RETRO_LOG_DEBUG, LOGPRE "DEVICE read %x: %x (at %x)\n", device_read_ptr, dt, cpunum_get_pc(0));*/
158 
159 	device_read_ptr++;
160 	device_read_ptr &= 0xFFFF;
161 
162 	device_status = DS_READ_ACK;
163 
164 	return dt<<8;
165 }
166 
167 /* Write 0x13*/
168 /* Read something (acknowledge? If -1, write -1 and restart)*/
169 /* Write data*/
170 /* Read value (!=1 is ok)*/
171 
READ16_HANDLER(reg_b80000_r)172 static READ16_HANDLER(reg_b80000_r)
173 {
174 	if (ACCESSING_MSB)
175 	{
176 		/* Bit 7: 0 = ready to write*/
177 		/* Bit 6: 0 = ready to read*/
178 		return 0;
179 	}
180 
181 	return 0;
182 }
183 
WRITE16_HANDLER(reg_e80000_w)184 static WRITE16_HANDLER(reg_e80000_w)
185 {
186 	/* Only LSB*/
187 	data >>= 8;
188 
189 	if (device_status == DS_CMD)
190 	{
191 		switch (data)
192 		{
193 		case 0x13:
194 /*			log_cb(RETRO_LOG_DEBUG, LOGPRE "DEVICE mode WRITE (cmd 0x13)\n");*/
195 			device_status = DS_WRITE;
196 			device_write_ptr = 0;
197 			break;
198 		}
199 
200 		return;
201 	}
202 
203 	/* @@@ Should skip the writes while in read mode?*/
204 	if (device_status == DS_READ || device_status == DS_READ_ACK)
205 	{
206 /*		log_cb(RETRO_LOG_DEBUG, LOGPRE "EEPROM write %x: %x\n", device_write_ptr, data);*/
207 		return;
208 	}
209 
210 	device[device_write_ptr] = (UINT8)data;
211 	device_write_ptr++;
212 	device_status = DS_WRITE_ACK;
213 
214 }
215 
MEMORY_READ16_START(readmem)216 static MEMORY_READ16_START( readmem )
217 	{ 0x000000, 0x0fffff, MRA16_ROM },
218 	{ 0x200000, 0x20ffff, MRA16_RAM },
219 	{ 0x300000, 0x3013ff, MRA16_RAM },
220 	{ 0x400000, 0x4013ff, MRA16_RAM },
221 	{ 0x500000, 0x5013ff, MRA16_RAM },
222 	{ 0x700000, 0x703fff, MRA16_RAM },
223 	{ 0x800000, 0x80ffff, MRA16_RAM },
224 	{ 0x900000, 0x907fff, MRA16_RAM },
225 	{ 0x980000, 0x980fff, MRA16_RAM },
226 
227 	{ 0xb80000, 0xb80001, reg_b80000_r },
228 	{ 0xf80000, 0xf80001, reg_f80000_r },
229 
230 MEMORY_END
231 
232 static MEMORY_WRITE16_START( writemem )
233 	{ 0x000000, 0x0fffff, MWA16_ROM },
234 	{ 0x200000, 0x20ffff, MWA16_RAM, &protram  },
235 	{ 0x300000, 0x3013ff, MWA16_RAM },
236 	{ 0x400000, 0x4013ff, MWA16_RAM },
237 	{ 0x500000, 0x5013ff, MWA16_RAM },
238 	{ 0x700000, 0x703fff, MWA16_RAM },
239 	{ 0x800000, 0x80ffff, MWA16_RAM },
240 	{ 0x900000, 0x907fff, MWA16_RAM },
241 	{ 0x980000, 0x980fff, MWA16_RAM },
242 
243 {0x880022, 0x880023, MWA16_NOP },
244 
245 	{ 0xe80000, 0xe80001, reg_e80000_w },
246 MEMORY_END
247 
248 INPUT_PORTS_START( deroon )
249 INPUT_PORTS_END
250 
251 /*
252 static struct GfxLayout tecmosys_charlayout =
253 {
254 	8,8,
255 	RGN_FRAC(1,1),
256 	4,
257 	{ 0,1,2,3 },
258 	{ 0, 4, 8, 12, 16, 20, 24, 28 },
259 	{ 0*32, 1*32, 2*32, 3*32, 4*32, 5*32, 6*32, 7*32 },
260 	8*32
261 };
262 
263 
264 static struct GfxDecodeInfo gfxdecodeinfo[] =
265 {
266 	{ REGION_GFX1, 0, &tecmosys_charlayout,   0, 1  },
267 	{ -1 }
268 };
269 */
270 
271 
272 
273 
274 static WRITE_HANDLER( deroon_bankswitch_w )
275 {
276 	cpu_setbank( 1, memory_region(REGION_CPU2) + ((data-2) & 0x0f) * 0x4000 + 0x10000 );
277 }
278 
MEMORY_READ_START(sound_readmem)279 static MEMORY_READ_START( sound_readmem )
280 	{ 0x0000, 0x7fff, MRA_ROM },
281 	{ 0x8000, 0xbfff, MRA_BANK1 },
282 	{ 0xe000, 0xf7ff, MRA_RAM },
283 
284 MEMORY_END
285 
286 static MEMORY_WRITE_START( sound_writemem )
287 	{ 0x0000, 0xbfff, MWA_ROM },
288 	{ 0xe000, 0xf7ff, MWA_RAM },
289 MEMORY_END
290 
291 
292 
293 static PORT_READ_START( readport )
294 	{ 0x00, 0x00, YMF262_status_0_r },
295 	{ 0x40, 0x40, soundlatch_r },
296 	/*{ 0x60, 0x60, YMZ280B_status_0_r },*/
297 PORT_END
298 
299 static PORT_WRITE_START( writeport )
300 	{ 0x00, 0x00, YMF262_register_A_0_w },
301 	{ 0x01, 0x01, YMF262_data_A_0_w },
302 	{ 0x02, 0x02, YMF262_register_B_0_w },
303 	{ 0x03, 0x03, YMF262_data_B_0_w },
304 
305 	{ 0x10, 0x10, OKIM6295_data_0_w },
306 
307 	{ 0x30, 0x30, deroon_bankswitch_w },
308 
309 	/*{ 0x50, 0x50, to_main_cpu_latch_w },*/
310 	{ 0x50, 0x50, IOWP_NOP },
311 
312 	{ 0x60, 0x60, YMZ280B_register_0_w },
313 	{ 0x61, 0x61, YMZ280B_data_0_w },
314 PORT_END
315 
316 
317 
318 VIDEO_START(deroon)
319 {
320 return 0;
321 }
322 
323 
324 static int command_data=0;
325 
VIDEO_UPDATE(deroon)326 VIDEO_UPDATE(deroon)
327 {
328 /* nothing  - just simulate sound commands writes here ... to test OPL3 emulator */
329 
330 	int j,trueorientation;
331 	char buf[64];
332 
333 	if (keyboard_pressed_memory(KEYCODE_Q))
334 	{
335 		command_data++;
336 	}
337 	if (keyboard_pressed_memory(KEYCODE_A))
338 	{
339 		command_data--;
340 	}
341 	command_data &= 0xff;
342 
343 
344 
345 	trueorientation = Machine->orientation;
346 	Machine->orientation = ROT0;
347 
348 	sprintf(buf,"keys: Q,A and C");
349 	for (j = 0;j < 16;j++)
350 		drawgfx(bitmap,Machine->uifont,buf[j],0,0,0,10+6*j,20,0,TRANSPARENCY_NONE,0);
351 	sprintf(buf,"command code: %2x", command_data);
352 	for (j = 0;j < 16;j++)
353 		drawgfx(bitmap,Machine->uifont,buf[j],0,0,0,10+6*j,40,0,TRANSPARENCY_NONE,0);
354 
355 	Machine->orientation = trueorientation;
356 
357 
358 	if (keyboard_pressed_memory(KEYCODE_C))
359 	{
360 		soundlatch_w(0,command_data);
361 		cpu_set_irq_line(1, IRQ_LINE_NMI, PULSE_LINE);
362 		usrintf_showmessage("command write=%2x",command_data);
363 	}
364 }
365 
366 /*
367 >>> Richard wrote:
368 > Here's the sound info (I got it playing in M1, I
369 > didn't bother "porting" it since the main game doesn't
370 > even boot).
371 >
372 > memory map:
373 > 0000-7fff: fixed program ROM
374 > 8000-bfff: banked ROM
375 > e000-f7ff: work RAM
376 >
377 > I/O ports:
378 
379 > 0-3: YMF262 OPL3
380 > 0x10: OKIM6295
381 > 0x30: bank select, in 0x4000 byte units based at the
382 > start of the ROM (so 2 = 0x8000).
383 > 0x40: latch from 68000
384 > 0x50: latch to 68000
385 > 0x60/0x61: YMZ280B
386 >
387 > IRQ from YMF262 goes to Z80 IRQ.
388 >
389 > NMI is asserted when the 68000 writes a command.
390 >
391 > Z80 clock appears to be 8 MHz (music slows down in
392 > "intense" sections if it's 4 MHz, and the crystals are
393 > all in the area of 16 MHz).
394 >
395 > The YMZ280B samples for both games may be misdumped,
396 > deroon has lots of "bad" noises but tkdensho only has
397 > a few.
398 */
399 
400 
sound_irq(int irq)401 static void sound_irq(int irq)
402 {
403 	/* IRQ */
404 	cpu_set_irq_line(1,0,irq ? ASSERT_LINE : CLEAR_LINE);
405 }
406 
407 static struct YMF262interface ymf262_interface =
408 {
409 	1,					/* 1 chip */
410 	14318180,			/* X1 ? */
411 	{ YAC512_VOL(100,MIXER_PAN_LEFT,100,MIXER_PAN_RIGHT) },	/* channels A and B */
412 	{ YAC512_VOL(100,MIXER_PAN_LEFT,100,MIXER_PAN_RIGHT) },	/* channels C and D */
413 	{ sound_irq },		/* irq */
414 };
415 
416 
417 static struct OKIM6295interface okim6295_interface =
418 {
419 	1,					/* 1 chip */
420 	{ 14318180/2048 },	/* = 6991 Hz ? */
421 	{ REGION_SOUND2 },
422 	{ 50 }
423 };
424 
425 static struct YMZ280Binterface ymz280b_interface =
426 {
427 	1,					/* 1 chip */
428 	{ 16900000 },		/* X4 ? */
429 	{ REGION_SOUND1 },
430 	{ YM3012_VOL(30,MIXER_PAN_LEFT,30,MIXER_PAN_RIGHT) },
431 	{ 0 }	/* irq */
432 };
433 
434 static MACHINE_DRIVER_START( deroon )
435 	MDRV_CPU_ADD(M68000, 16000000/8) /* the /8 divider is here only for OPL3 testing */
MDRV_CPU_MEMORY(readmem,writemem)436 	MDRV_CPU_MEMORY(readmem,writemem)
437 	/*MDRV_CPU_VBLANK_INT(irq1_line_hold,1)*/
438 
439 	MDRV_CPU_ADD(Z80, 16000000/2 )	/* 8 MHz ??? */
440 	MDRV_CPU_FLAGS(CPU_AUDIO_CPU)
441 	MDRV_CPU_MEMORY(sound_readmem,sound_writemem)
442 	MDRV_CPU_PORTS(readport,writeport)
443 
444 	MDRV_FRAMES_PER_SECOND(60)
445 	MDRV_VBLANK_DURATION(DEFAULT_60HZ_VBLANK_DURATION)
446 
447 /*	MDRV_GFXDECODE(gfxdecodeinfo)*/
448 
449 	MDRV_VIDEO_ATTRIBUTES(VIDEO_TYPE_RASTER | VIDEO_UPDATE_AFTER_VBLANK)
450 	MDRV_SCREEN_SIZE(32*8, 32*8) 	/*was:64*8, 64*8*/
451 	MDRV_VISIBLE_AREA(0*8, 32*8-1, 0*8, 32*8-1)
452 	MDRV_PALETTE_LENGTH(0x800)
453 
454 	MDRV_VIDEO_START(deroon)
455 	MDRV_VIDEO_UPDATE(deroon)
456 
457 	/* sound hardware */
458 	MDRV_SOUND_ATTRIBUTES(SOUND_SUPPORTS_STEREO)
459 	MDRV_SOUND_ADD(YMF262,   ymf262_interface)
460 	MDRV_SOUND_ADD(OKIM6295, okim6295_interface)
461 	MDRV_SOUND_ADD(YMZ280B,  ymz280b_interface)
462 MACHINE_DRIVER_END
463 
464 
465 ROM_START( deroon )
466 	ROM_REGION( 0x100000, REGION_CPU1, 0 ) /* Main Program*/
467 	ROM_LOAD16_BYTE( "t001upau.bin", 0x00000, 0x80000, CRC(14b92c18) SHA1(b47b8c828222a3f7c0fe9271899bd38171d972fb) )
468 	ROM_LOAD16_BYTE( "t002upal.bin", 0x00001, 0x80000, CRC(0fb05c68) SHA1(5140592e15414770fb46d5ac9ba8f76e3d4ab323) )
469 
470 	ROM_REGION( 0x048000, REGION_CPU2, 0 ) /* Sound Porgram*/
471 	ROM_LOAD( "t003uz1.bin", 0x000000, 0x008000, CRC(8bdfafa0) SHA1(c0cf3eb7a65d967958fe2aace171859b0faf7753) )
472 	ROM_CONTINUE(            0x010000, 0x038000 ) /* banked part */
473 
474 	ROM_REGION( 0xb00000, REGION_GFX1, 0 ) /* Graphics - mostly (maybe all?) not tile based*/
475 	ROM_LOAD( "t101uah1.j66", 0x000000, 0x200000, CRC(74baf845) SHA1(935d2954ba227a894542be492654a2750198e1bc) )
476 	ROM_LOAD( "t102ual1.j67", 0x200000, 0x200000, CRC(1a02c4a3) SHA1(5155eeaef009fc9a9f258e3e54ca2a7f78242df5) )
477 	ROM_LOAD( "t103ubl1.j08", 0x400000, 0x200000, CRC(75431ec5) SHA1(c03e724c15e1fe7a0a385332f849e9ac9d149887) )
478 	ROM_LOAD( "t104ucl1.j68", 0x600000, 0x200000, CRC(66eb611a) SHA1(64435d35677fea3c06fdb03c670f3f63ee481c02) )
479 	ROM_LOAD( "t201ubb1.w61", 0x800000, 0x100000, CRC(d5a087ac) SHA1(5098160ce7719d93e3edae05f6edd317d4c61f0d) )
480 	ROM_LOAD( "t202ubc1.w62", 0x900000, 0x100000, CRC(f051dae1) SHA1(f5677c07fe644b3838657370f0309fb09244c619) )
481 	ROM_LOAD( "t301ubd1.w63", 0xa00000, 0x100000, CRC(8b026177) SHA1(3887856bdaec4d9d3669fe3bc958ef186fbe9adb) )
482 
483 	ROM_REGION( 0x200000, REGION_SOUND1, 0 ) /* YMZ280B Samples*/
484 	ROM_LOAD( "t401uya1.w16", 0x000000, 0x200000, CRC(92111992) SHA1(ae27e11ae76dec0b9892ad32e1a8bf6ab11f2e6c) )
485 
486 	ROM_REGION( 0x080000, REGION_SOUND2, 0 ) /* M6295 Samples*/
487 	ROM_LOAD( "t501uad1.w01", 0x000000, 0x080000, CRC(2fbcfe27) SHA1(f25c830322423f0959a36955edb563a6150f2142) )
488 ROM_END
489 
490 ROM_START( tkdensho )
491 	ROM_REGION( 0x600000, REGION_CPU1, 0 )
492 	ROM_LOAD16_BYTE( "aeprge-2.pal", 0x00000, 0x80000, CRC(25e453d6) SHA1(9c84e2af42eff5cc9b14c1759d5bab42fa7bb663) )
493 	ROM_LOAD16_BYTE( "aeprgo-2.pau", 0x00001, 0x80000, CRC(22d59510) SHA1(5ade482d6ab9a22df2ee8337458c22cfa9045c73) )
494 
495 	ROM_REGION( 0x038000, REGION_CPU2, 0 ) /* Sound Porgram*/
496 	ROM_LOAD( "aesprg-2.z1", 0x000000, 0x008000, CRC(43550ab6) SHA1(2580129ef8ebd9295249175de4ba985c752e06fe) )
497 	ROM_CONTINUE(            0x010000, 0x018000 ) /* banked part */
498 
499 	ROM_REGION( 0x2900000, REGION_GFX1, 0 ) /* Graphics - mostly (maybe all?) not tile based*/
500 	ROM_LOAD( "ae100h.ah1",    0x0000000, 0x0400000, CRC(06be252b) SHA1(08d1bb569fd2e66e2c2f47da7780b31945232e62) )
501 	ROM_LOAD( "ae100.al1",     0x0400000, 0x0400000, CRC(009cdff4) SHA1(fd88f07313d14fd4429b09a1e8d6b595df3b98e5) )
502 	ROM_LOAD( "ae101h.bh1",    0x0800000, 0x0400000, CRC(f2469eff) SHA1(ba49d15cc7949437ba9f56d9b425a5f0e62137df) )
503 	ROM_LOAD( "ae101.bl1",     0x0c00000, 0x0400000, CRC(db7791bb) SHA1(1fe40b747b7cee7a9200683192b1d60a735a0446) )
504 	ROM_LOAD( "ae102h.ch1",    0x1000000, 0x0200000, CRC(f9d2a343) SHA1(d141ac0b20be587e77a576ef78f15d269d9c84e5) )
505 	ROM_LOAD( "ae102.cl1",     0x1200000, 0x0200000, CRC(681be889) SHA1(8044ca7cbb325e6dcadb409f91e0c01b88a1bca7) )
506 	ROM_LOAD( "ae104.el1",     0x1400000, 0x0400000, CRC(e431b798) SHA1(c2c24d4f395bba8c78a45ecf44009a830551e856) )
507 	ROM_LOAD( "ae105.fl1",     0x1800000, 0x0400000, CRC(b7f9ebc1) SHA1(987f664072b43a578b39fa6132aaaccc5fe5bfc2) )
508 	ROM_LOAD( "ae106.gl1",     0x1c00000, 0x0200000, CRC(7c50374b) SHA1(40865913125230122072bb13f46fb5fb60c088ea) )
509 	ROM_LOAD( "ae200w74.ba1",  0x1e00000, 0x0100000, CRC(c1645041) SHA1(323670a6aa2a4524eb968cc0b4d688098ffeeb12) )
510 	ROM_LOAD( "ae201w75.bb1",  0x1f00000, 0x0100000, CRC(3f63bdff) SHA1(0d3d57fdc0ec4bceef27c11403b3631d23abadbf) )
511 	ROM_LOAD( "ae202w76.bc1",  0x2000000, 0x0100000, CRC(5cc857ca) SHA1(2553fb5220433acc15dfb726dc064fe333e51d88) )
512 	ROM_LOAD( "ae300w36.bd1",  0x2100000, 0x0080000, CRC(e829f29e) SHA1(e56bfe2669ed1d1ae394c644def426db129d97e3) )
513 
514 	ROM_REGION( 0x400000, REGION_SOUND1, 0 ) /* YMZ280B Samples*/
515 	ROM_LOAD( "ae400t23.ya1", 0x000000, 0x200000, CRC(c6ffb043) SHA1(e0c6c5f6b840f63c9a685a2c3be66efa4935cbeb) )
516 	ROM_LOAD( "ae401t24.yb1", 0x200000, 0x200000, CRC(d83f1a73) SHA1(412b7ac9ff09a984c28b7d195330d78c4aac3dc5) )
517 
518 	ROM_REGION( 0x080000, REGION_SOUND2, 0 ) /* M6295 Samples*/
519 	ROM_LOAD( "ae500w07.ad1", 0x000000, 0x080000, CRC(3734f92c) SHA1(048555b5aa89eaf983305c439ba08d32b4a1bb80) )
520 ROM_END
521 
522 
523 static DRIVER_INIT( deroon )
524 {
525 	data16_t *ROM = (data16_t *)memory_region(REGION_CPU1);
526 
527 	memcpy(protram, ROM+0xC46/2, 0x10);
528 
529 	/* Patch the long eeprom write delay to speedup bootstrapping*/
530 	ROM[0x39C2/2] = 0x1;
531 
532 /*	ROM[0x448/2] = 0x4E71;*/
533 /*	ROM[0x44A/2] = 0x4E71;*/
534 }
535 
536 GAMEX( 1996, deroon,      0, deroon, deroon, deroon,     ROT0, "Tecmo", "Deroon DeroDero", GAME_NOT_WORKING | GAME_NO_SOUND )
537 GAMEX( 1996, tkdensho,    0, deroon, deroon, 0,          ROT0, "Tecmo", "Touki Denshou -Angel Eyes-", GAME_NOT_WORKING | GAME_NO_SOUND )
538