Previous 199869 Revisions Next

r19596 Sunday 16th December, 2012 at 17:14:40 UTC by David Haywood
FM splitting / note improvements (small) (nw)
[src/mame]mame.lst
[src/mame/drivers]ecoinf3.c

trunk/src/mame/drivers/ecoinf3.c
r19595r19596
11/* Electrocoin Pyramid HW type */
22
3// this seems to not like our Z180 timers much?
3// this seems to not like our Z180 timers much? (or wants a 10ms interrupt externally?)
44// also quite a few of the reads / writes are fall-through from Z180 internal reads/writes
55
66// assuming this is like the other hardware EC produced the IO devices should probably
77// be several 8255s on 4-byte boundaries
88
9// what is the sound hardware on this one?
10
11// 2 of the sets contain program scrambled roms (where the last 0x2000 bytes match between games) why, badly dumped?
12
913#include "emu.h"
1014#include "cpu/z180/z180.h"
1115#include "machine/i8255.h"
r19595r19596
2226   DECLARE_WRITE8_MEMBER(ppi8255_intf_e_write_b);
2327   DECLARE_WRITE8_MEMBER(ppi8255_intf_e_write_c);
2428   DECLARE_DRIVER_INIT(ecoinf3);
29   DECLARE_DRIVER_INIT(ecoinf3_swap);
2530};
2631
2732
r19595r19596
6772
6873WRITE8_MEMBER(ecoinf3_state::ppi8255_intf_e_write_a)
6974{
75   static UINT8 send_buffer = 0;
76   static int count = 0;
7077   // writes the 'PYRAMID' string from RAM (copied from ROM) here...
7178   // along with port 40/41/42 accesses
7279   // also error messages? (well it looks like it should, but code is strange and skips them) I guess it's a debug port or the vfd?
r19595r19596
7885
7986   // Sphinx - Writes "No % Key"  -- depends on port 0x51, writes "SPHINX  V- 1" if it's happy with that .. after that you get COIN TAMPER,  a count down with COINS TRIM and a reboot
8087   // Pennies from Heaven - same behavior as Sphinx
81   static int count = 0;
88   
89   // typically writes a letter (sometimes twice) then 0x00, usually twice
8290
83   if ((data>=0x20) && (data<0x5b))
91   if (data==0x00)
8492   {
85      if (count%80 == 0) printf("\n");
93      if (send_buffer!=0x00)
94      {
95         if ((send_buffer>=0x20) && (send_buffer<0x5b))
96         {
97            printf("%c", send_buffer);
98         }
99         else
100         {
101            printf(" (%02x) ", send_buffer);
102            count = -1;
103         }
86104
87      printf("%c", data);
88      count++;
105         count++;
106         if (count%14 == 0) printf("\n");
107
108
109         send_buffer = 0x00;
110      }
89111   }
112   else
113   {
114      send_buffer = data;
115   }
116
117
118
90119}
91120
92121WRITE8_MEMBER(ecoinf3_state::ppi8255_intf_e_write_b)
93122{
94//  printf("\nwrite b %02x\n", data);
95123}
96124
97125WRITE8_MEMBER(ecoinf3_state::ppi8255_intf_e_write_c)
98126{
99//  printf("\nwrite c %02x\n", data);
100
127   // not written at an appropriate time for it to be a 'send' address for the text
101128}
102129
103130static I8255_INTERFACE (ppi8255_intf_e)
r19595r19596
394421   MCFG_I8255_ADD( "ppi8255_f", ppi8255_intf_f )
395422   MCFG_I8255_ADD( "ppi8255_g", ppi8255_intf_g )
396423   MCFG_I8255_ADD( "ppi8255_h", ppi8255_intf_h )
397
398
399   // sphinx and pyramid on this hw contain a weird rom, looks almost like half a pair for a 16-bit cpu, but contains
400   // what looks like vectors at the end, no idea what it is.
401   //MCFG_CPU_ADD("subcpu", HD6301, 4000000) // ??
402   //MCFG_CPU_PROGRAM_MAP(pyramid_submap)
403424MACHINE_CONFIG_END
404425
405426
r19595r19596
409430 ROMs for PYRAMID Hw Type
410431********************************************************************************************************************/
411432
433
434
412435ROM_START( ec_pyram )
413   ROM_REGION( 0x200000, "maincpu", 0 )
414   // Z80 Program
415   ROM_LOAD( "pyramid 5p 3.bin", 0x0000, 0x010000, CRC(06a047d8) SHA1(4a1a15f1ab9defd3a0c5f2d333beae0daa16c6a4) )
416
417   ROM_REGION( 0x010000, "subcpu", 0 )
418   // this seems to be half of a 16-bit pair, possibly for a 68k.  It might come from a different game, it's definitely missing the other part of the pair
419   // actually the end of the code (last 0x2000) bytes look like some 6xxx ROM, is the rest just unused space? the end part is same on Pyramid and Sphinx
436   ROM_REGION( 0x200000, "maincpu", 0 ) /* the last 0x2000 bytes (unmapped?) are the same as on the ec_sphin set */
420437   ROM_LOAD( "pyramid.bin", 0x0000, 0x010000, CRC(370a6d2c) SHA1(ea4f899adeca734529b19ba8de0e371841982c20) )
421438ROM_END
422439
423
424ROM_START( ec_sphin )
440ROM_START( ec_pyrama )
425441   ROM_REGION( 0x200000, "maincpu", 0 )
426   // z80 ROMS but truncated, seem to just contain garbage at the end tho, so probably OK
427   ROM_LOAD( "sphinx8c.bin", 0x0000, 0x00e000, CRC(f8e110fc) SHA1(4f55b5de87151f9127b84ffcf7f6f2e3ce34469f) )
442   ROM_LOAD( "pyramid 5p 3.bin", 0x0000, 0x010000, CRC(06a047d8) SHA1(4a1a15f1ab9defd3a0c5f2d333beae0daa16c6a4) )
443ROM_END
428444
429   ROM_REGION( 0x010000, "subcpu", 0 )
430   // like Pyramid this looks more like half a 16-bit pair (68k?) ROM...
431   // actually the end of the code (last 0x2000) bytes look like some 6xxx ROM, is the rest just unused space? the end part is same on Pyramid and Sphinx
445ROM_START( ec_sphin ) /* the last 0x2000 bytes (unmapped?) are the same as on the ec_pyram set */
446   ROM_REGION( 0x200000, "maincpu", 0 )   
432447   ROM_LOAD( "spnx5p", 0x0000, 0x010000, CRC(b4b49259) SHA1(a26172b659b739564b25dcc0f3f31f131a144d52) )
433448ROM_END
434449
435450ROM_START( ec_sphina )
436451   ROM_REGION( 0x200000, "maincpu", 0 )
437452   ROM_LOAD( "spx10cv2.bin", 0x0000, 0x00e000, CRC(e2bf11a0) SHA1(f267385dbb06b2be8bcad7ae5e5804f5bb467f6d) )
453ROM_END
438454
439   ROM_REGION( 0x010000, "subcpu", ROMREGION_ERASE00 )
440   /* missing? */
455ROM_START( ec_sphinb )
456   ROM_REGION( 0x200000, "maincpu", 0 ) // z80 ROMS but truncated, other sets just seem to contain garbage at the end tho, so probably OK
457   ROM_LOAD( "sphinx8c.bin", 0x0000, 0x00e000, CRC(f8e110fc) SHA1(4f55b5de87151f9127b84ffcf7f6f2e3ce34469f) )
441458ROM_END
442459
443460ROM_START( ec_penni )
444461   ROM_REGION( 0x200000, "maincpu", 0 )
445462   ROM_LOAD( "pfh_8c.bin", 0x0000, 0x010000, CRC(282a42d8) SHA1(f985d238c72577e755090ce0f04dcc7850af6f3b) )
446
447   ROM_REGION( 0x010000, "subcpu", ROMREGION_ERASE00 )
448   /* missing? */
449463ROM_END
450464
451465ROM_START( ec_pennia )
452   ROM_REGION( 0x200000, "maincpu", 0 )
453   ROM_LOAD( "pfh_v6.bin", 0x0000, 0x00e000, CRC(febb3fce) SHA1(f8df085a563405ea5adcd15a4162a7ba56bcfad7) ) // this set is truncated, but that area just seems to be garbage anyway, so should be fine
454
455   ROM_REGION( 0x010000, "subcpu", ROMREGION_ERASE00 )
456   /* missing? */
466   ROM_REGION( 0x200000, "maincpu", 0 ) // z80 ROMS but truncated, other sets just seem to contain garbage at the end tho, so probably OK
467   ROM_LOAD( "pfh_v6.bin", 0x0000, 0x00e000, CRC(febb3fce) SHA1(f8df085a563405ea5adcd15a4162a7ba56bcfad7) )
457468ROM_END
458469
459470
460
461471ROM_START( ec_stair )
462472   ROM_REGION( 0x200000, "maincpu", 0 )
463473   ROM_LOAD("sth5.4",      0x0000, 0x010000, CRC(879c8dcb) SHA1(358d9bb567da4b7913434d29dcd8a81c51c5fe2e) )
464
465   ROM_REGION( 0x010000, "subcpu", ROMREGION_ERASE00 )
466   /* missing? */
467474ROM_END
468475
469476ROM_START( ec_staira )
470477   ROM_REGION( 0x200000, "maincpu", 0 )
471478   ROM_LOAD("sth5.8c",   0x0000, 0x010000, CRC(7ce6b760) SHA1(c828689481d7e187c504dd072bd6714222888d33) )
472
473   ROM_REGION( 0x010000, "subcpu", ROMREGION_ERASE00 )
474   /* missing? */
475479ROM_END
476480
477481
r19595r19596
480484   ROM_REGION( 0x200000, "maincpu", 0 )
481485   ROM_LOAD( "lab1v8.bin", 0x0000, 0x008000, CRC(16f0eeac) SHA1(9e28a6ae9176f730234dd8a7a8e50bad2904b611) )
482486   ROM_LOAD( "lab2v8.bin", 0x8000, 0x008000, CRC(14d7c58b) SHA1(e6b19523d96c9c1f39b743f8c52791465ab79637) )
483
484   ROM_REGION( 0x010000, "subcpu", ROMREGION_ERASE00 )
485   /* missing? */
486487ROM_END
487488
488489ROM_START( ec_labya ) // no header info with these
489490   ROM_REGION( 0x200000, "maincpu", 0 )
490491   ROM_LOAD( "laby10", 0x0000, 0x010000, CRC(a8b58fc3) SHA1(16e940b04fa85ff85a29197b4e45c8a39f5cad19) )
491
492   ROM_REGION( 0x010000, "subcpu", ROMREGION_ERASE00 )
493   /* missing? */
494492ROM_END
495493
496494ROM_START( ec_secrt )
497495   ROM_REGION( 0x200000, "maincpu", 0 )
498496   ROM_LOAD( "scastle1.bin", 0x0000, 0x010000, CRC(e6abb596) SHA1(35518c46f1ddf1d3a85af13e4ba8bee07e804f64) )
499
500   ROM_REGION( 0x010000, "subcpu", ROMREGION_ERASE00 )
501   // no strange rom in this set
502497ROM_END
503498
504499DRIVER_INIT_MEMBER(ecoinf3_state,ecoinf3)
r19595r19596
506501
507502}
508503
504DRIVER_INIT_MEMBER(ecoinf3_state,ecoinf3_swap)
505{
506   // not all sets have this, are they just badly dumped?
507   UINT8 table[] =
508   {
509      0x48, 0x4c, 0x49, 0x4d, 0x40, 0x44, 0x41, 0x45,     0x68, 0x78, 0x60, 0x70, 0x6a, 0x7a, 0x62, 0x72,   
510      0x08, 0x0c, 0x09, 0x0d, 0x00, 0x04, 0x01, 0x05,      0x6c, 0x7c, 0x64, 0x74, 0x6e, 0x7e, 0x66, 0x76,
511      0x58, 0x5c, 0x59, 0x5d, 0x50, 0x54, 0x51, 0x55,       0x28, 0x38, 0x20, 0x30, 0x2a, 0x3a, 0x22, 0x32,
512      0x18, 0x1c, 0x19, 0x1d, 0x10, 0x14, 0x11, 0x15,       0x2c, 0x3c, 0x24, 0x34, 0x2e, 0x3e, 0x26, 0x36,
513      0x56, 0x52, 0x57, 0x53, 0x5e, 0x5a, 0x5f, 0x5b,      0x75, 0x65, 0x7d, 0x6d, 0x77, 0x67, 0x7f ,0x6f,
514      0x16, 0x12, 0x17, 0x13, 0x1e, 0x1a, 0x1f, 0x1b,         0x71, 0x61, 0x79, 0x69, 0x73, 0x63, 0x7b, 0x6b,   
515      0x46, 0x42, 0x47, 0x43, 0x4e, 0x4a, 0x4f, 0x4b,     0x35, 0x25, 0x3d, 0x2d, 0x37, 0x27, 0x3f ,0x2f,
516       0x06, 0x02, 0x07, 0x03, 0x0e, 0x0a, 0x0f, 0x0b,     0x31, 0x21, 0x39, 0x29, 0x33, 0x23, 0x3b, 0x2b,
517   };
509518
519   UINT8*   buffer = auto_alloc_array(machine(), UINT8, 0x10000);
520   UINT8 *rom = memregion( "maincpu" )->base();
521
522
523   for (int i=0;i<0x10000;i++)
524   {
525      buffer[i] = rom[(i&0xff80)|table[i&0x7f]];
526   }
527
528   memcpy(rom,buffer,0x10000);
529
530}
531
532
533
510534// another hw type (similar to stuff in ecoinf2.c) (watchdog on port 58?)
511GAME( 19??, ec_pyram,   0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,   ROT0,  "Electrocoin", "Pyramid (v6) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
512GAME( 19??, ec_sphin,   0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,   ROT0,  "Electrocoin", "Sphinx (v1) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
513GAME( 19??, ec_sphina,  ec_sphin , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,   ROT0,  "Electrocoin", "Sphinx (v?) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
514GAME( 19??, ec_penni,   0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,   ROT0,  "Electrocoin", "Pennies From Heaven (v1) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
515GAME( 19??, ec_pennia,  ec_penni , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,   ROT0,  "Electrocoin", "Pennies From Heaven (v?) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
516GAME( 19??, ec_stair,   0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,   ROT0,  "Electrocoin", "Stairway To Heaven (Electrocoin) (set 1)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
517GAME( 19??, ec_staira,  ec_stair , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,   ROT0,  "Electrocoin", "Stairway To Heaven (Electrocoin) (set 2)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
518GAME( 19??, ec_laby,    0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,   ROT0,  "Electrocoin", "Labyrinth (v8) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
519GAME( 19??, ec_labya,   ec_laby  , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,   ROT0,  "Electrocoin", "Labyrinth (v10) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
520GAME( 19??, ec_secrt,   0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,   ROT0,  "Electrocoin", "Secret Castle (v1) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
535GAME( 19??, ec_pyram,   0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3_swap,   ROT0,  "Electrocoin", "Pyramid (v1) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
536GAME( 19??, ec_pyrama,  ec_pyram , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,        ROT0,  "Electrocoin", "Pyramid (v6) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
537GAME( 19??, ec_sphin,   0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3_swap,   ROT0,  "Electrocoin", "Sphinx (v2) (Electrocoin) (set 1)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
538GAME( 19??, ec_sphina,  ec_sphin , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,      ROT0,  "Electrocoin", "Sphinx (v2) (Electrocoin) (set 2)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
539GAME( 19??, ec_sphinb,  ec_sphin , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,      ROT0,  "Electrocoin", "Sphinx (v1) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
540GAME( 19??, ec_penni,   0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,      ROT0,  "Electrocoin", "Pennies From Heaven (v1) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
541GAME( 19??, ec_pennia,  ec_penni , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,      ROT0,  "Electrocoin", "Pennies From Heaven (v6) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
542GAME( 19??, ec_stair,   0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,      ROT0,  "Electrocoin", "Stairway To Heaven (v11) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
543GAME( 19??, ec_staira,  ec_stair , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,      ROT0,  "Electrocoin", "Stairway To Heaven (v1) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
544GAME( 19??, ec_laby,    0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,      ROT0,  "Electrocoin", "Labyrinth (v8) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
545GAME( 19??, ec_labya,   ec_laby  , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,      ROT0,  "Electrocoin", "Labyrinth (v10) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
546GAME( 19??, ec_secrt,   0       , ecoinf3_pyramid,   ecoinf3, ecoinf3_state,   ecoinf3,      ROT0,  "Electrocoin", "Secret Castle (v1) (Electrocoin)"      , GAME_NO_SOUND|GAME_REQUIRES_ARTWORK|GAME_NOT_WORKING|GAME_MECHANICAL)
521547
trunk/src/mame/mame.lst
r19595r19596
2861428614// Pyramid PCB
2861528615
2861628616ec_pyram   // Pyramid (Electrocoin)
28617ec_pyrama   //
2861728618ec_sphin   // Sphinx (Electrocoin)
2861828619ec_sphina   //
28620ec_sphinb   //
2861928621ec_penni   // Pennies From Heaven (Electrocoin)
2862028622ec_pennia   //
2862128623ec_stair   // Stairway to Heaven

Previous 199869 Revisions Next


© 1997-2024 The MAME Team