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