diff options
Diffstat (limited to 'src/mame/drivers/namcond1.cpp')
-rw-r--r-- | src/mame/drivers/namcond1.cpp | 278 |
1 files changed, 228 insertions, 50 deletions
diff --git a/src/mame/drivers/namcond1.cpp b/src/mame/drivers/namcond1.cpp index 216bef55771..20bf6089801 100644 --- a/src/mame/drivers/namcond1.cpp +++ b/src/mame/drivers/namcond1.cpp @@ -9,64 +9,180 @@ James Jenkins Walter Fath - Currently Supported Games: - Namco Classic Vol #1 - Namco Classic Vol #2 + abcheck TODOs: + - Default eeprom. AT28C16 writes 0x820 byte nvram, but will only accept 0x800. Why? + - YGV608 brokenness + - Hook up controls properly (two buttons only for 3 players, and only 1 coin slot, mapped as player 2) + + To make abcheck run when the EEPROM is clear: + - F2 to enter service mode + - Q to navigate to GAME OPTIONS + - Control to enter + - Go to LOCAL SELECT and choose the Japanese city of your choice (I don't know what it affects yet) + - Exit test mode (F2) and reset (F3) and the game will boot + +----------------------------------- +Guru-Readme for Namco ND-1 hardware +----------------------------------- + +Games on this system include... +Namco Classics Volume 1 (Namco 1995) +Namco Classics Volume 2 (Namco 1996) +Abnormal Check (Namco 1996) + PCB Layout ---------- +ND-1 GAME PCB +8655960101 (8655970101) - for Namco Classics 1 & 2 + +ND-1 GAME(B) PCB +8655960401 (8655970401) - for Namco Classics 1 & 2 -8655960101 (8655970101) +ND-1 GAME(C) PCB +8655960500 (8655970500) - for Abnormal Check |----------------------------------------| -| LA4705 NC1_MAIN0B.14D 68000 | -| 4558 LC78815 NC1_MAIN1B.13D | -|J POT1 | -| AT28C16 | +| LA4705 MAIN0 68000 | +| 4558 LC78815 MAIN1 | +|J VR1 | +| NFA221 AT28C16 | |A | -| | -|M | -| NC1_CG0.10C * | -|M M9524LT | -| POT2 | +| NFA222 | +|M CG0 CG1* | +| LT1109 | +|M NFA222 LM1203 | +| VR2 J3| |A | -| YGV608-F | -| | -| | -| NC1_VOICE.7B 49.152MHz | +| NFA222 YGV608-F | +| SW1 | +| VOICE | +| NFA222* 49.152MHz | |N 25.326MHz | -|A | -|M C352 | -|C MACH210 C416 | -|O | -|4 | -|8 H8/3002 62256 | -| NC1_SUB.1C 62256 | +|A NFA222* | +|M C352 | +|C NFA221* MACH210 C416 | +|O IR2C24* | +|4 PC410* MB3771| +|8 NFA222* H8/3002 62256 | +| PC410* SUB 62256 | |----------------------------------------| Notes: - 68000 clock : 12.288MHz (49.152 / 4) - H8/3002 clock: 16.384MHz (49.152 / 3) - C352 clock: 24.576MHz (49.152 / 2) - VSync : 60Hz - - POT1 : Master volume - POT2 : Brightness adjustment (video level) - M9524LT : ? possibly some sort of RGB video output chip - AT28C16 : 2K x8 EEPROM - YGV608-F: Yamaha YVG608-F video controller - C352 : Namco custom QFP100 - C416 : Namco custom QFP176 - H8/3002 : Hitachi H8/3002 HD6413002F16 QFP100 microcontroller (H8/3002 has no internal ROM capability) - MACH210 : PLCC44 CPLD, Namco KEYCUS, stamped 'KC001' - 62256 : 32K x8 SOJ28 SRAM - * : Unpopulated position for SOP44 Mask ROM 'CG1' - - NC1_MAIN0B.14D: 512K x16 EPROM type 27C240 - NC1_MAIN1B.13D: 512K x16 EPROM type 27C240 - NC1_SUB.1C : 512K x16 EPROM type 27C240 - NC1_CG0.10C : 16MBit SOP44 Mask ROM - NC1_VOICE.7B : 16MBit SOP44 Mask ROM - - *************************************************************/ + 68000 - Motorola MC68HC000FN12 Micro-Processor (PLCC68). Clock input 12.288MHz (49.152/4) + H8/3002 - Hitachi H8/3002 HD6413002F16 Micro-Controller (QFP100). Clock input 16.384MHz (49.152/3) + Note the H8/3002 has no internal ROM capability. + C352 - Namco custom 32-voice 4-channel PCM sound chip (QFP100). Clock input 24.576MHz (49.152/2) + Note this is probably a Micro-Controller with internal ROM. + HSync - 15.4700kHz + VSync - 59.9648Hz + J3 - 100-pin connector for daughter board (not populated on Namco Classics 1 & 2) + SW1 - 2-position DIP Switch + VR1 - Master volume + VR2 - Brightness adjustment (video level) + LM1203 - National LM1203 RGB VIDEO AMP (DIP28). Note on some PCB revisions there is a capacitor glued on top of this chip. + AT28C16 - Atmel 2k x8-bit EEPROM (DIP24) + YGV608-F - Yamaha YVG608-F video controller (QFP100) + LT1109 - Linear Technology LT1109A DC/DC converter (SOIC8). Note on some PCB revisions this is not present. If the IC is required there + is an additional 'SREG PCB' with the LT1109 and other support components present at this location. + C416 - Namco custom (QFP176), Memory/DMA Controller + MACH210 - AMD MACH211 CPLD, used as Namco "KEYCUS" protection chip (PLCC44) + - for Namco Classics 1 stamped 'KC001' at 3C + - for Namco Classics 2 stamped 'KC002' at 3C + - for Abnormal Check stamped 'KC008' at 3D + 62256 - 32k x8-bit SRAM (SOJ28) + MB3771 - Fujitsu MB3771 Master Reset IC (SOIC8) + IR2C24 - Sharp IR2C24 6-Circuit 320mA Transistor Array with Clamping Diodes and Strobe (SOIC16) + PC410 - Sharp PC410 Ultra-high Speed Response OPIC Photocoupler (SOIC5) + NFA221 - muRata NFA221 Capacitor Array EMI Suppression Filter + NFA222 - muRata NFA222 Capacitor Array EMI Suppression Filter + * - Not populated on Namco Classics 1 & 2 + + + ROMs: (note IC locations are different between GAME+GAME(B) and GAME(C) PCBs. + + Namco Classics Volume 1 + ------------------------- + NC2 MAIN0B.14D - 512k x16-bit EPROM type 27C240/27C4002 (for Japan: NC1) (revisions: MAIN0 or MAIN0B) + NC2 MAIN1B.13D - 512k x16-bit EPROM type 27C240/27C4002 (for Japan: NC1) (revisions: MAIN1 or MAIN1B) + NC1 SUB.1C - 512k x16-bit EPROM type 27C240/27C4002 + NC1 CG0.10C - 16M-bit SOP44 mask ROM + NC1 VOICE.7B - 16M-bit SOP44 mask ROM + + Namco Classics Volume 2 + ------------------------- + NCS2 MAIN0B.14D - 512k x16-bit EPROM type 27C240/27C4002 (for Japan: NCS1) (revisions: MAIN0 or MAIN0B) + NCS2 MAIN1B.13D - 512k x16-bit EPROM type 27C240/27C4002 (for Japan: NCS1) (revisions: MAIN1 or MAIN1B) + NCS1 SUB.1C - 512k x16-bit EPROM type 27C240/27C4002 + NCS1 CG0.10C - 16M-bit SOP44 mask ROM + NCS1 VOICE.7B - 16M-bit SOP44 mask ROM + + Abnormal Check + ------------------------- + AN1 MAIN0B.14E - 512k x16-bit EPROM type 27C240/27C4002 + AN1 MAIN1B.13E - 512k x16-bit EPROM type 27C240/27C4002 + AN1 SUB.1D - 512k x16-bit EPROM type 27C240/27C4002 + AN1 CG0.10E - 16M-bit SOP44 mask ROM + AN1 CG1.10F - 16M-bit SOP44 mask ROM + AN1 VOICE.7C - 16M-bit SOP44 mask ROM + + +------------------------------------------------------ +Additional Guru-Readme for Abnormal Check (Namco 1996) +------------------------------------------------------ + +Main PCB is common Namco ND-1 hardware documented above. +Several parts that were not populated on the GAME/GAME(B) PCB near the NAMCO48 connector +are populated on this revision and the NAMCO48 connector is used. +Because of the changes the PCB is marked 'GAME(C) PCB' with numbers 8655960500 (8655970500). +The other main difference is the presence of an extra connector on one edge between +the 68000 and the C416, labelled J3. +Most of the parts on the GAME(C) PCB have different locations, however the PCB appears +to be electrically identical to the earlier revision ND-1 GAME PCB. + +There is an extra daughter board 115mm x 110mm plugged into connector J3. +The PCB is marked "M122 MEM/PRN PCB 1507960103 (1507970103) +The PCB contains the following parts.... +1x ST 27C4002 EPROM (DIP40 at IC1) +2x ST M48Z30Y ZEROPOWER RAM (DIP28 at IC2 & IC3) +2x 74HC244 logic (SOIC20) +2x Toshiba TD64064 Darlington Driver (SOIC18) +1x AMD MACH120 CPLD (PLCC68 at IC8) +1x 10-pin JST connector labelled J11 for connection to the printer. +1x 20-pin flat cable connector labelled J12 for connection to the printer. + +Partial Pinout of J12 +---------------------- + GND 10b 10a GND + ERROR 9b 9a + EMPTY 8b 8a BUSY + 7b 7a + 6b 6a + 5b 5a + 4b 4a + 3b 3a + +12V 2b 2a +5V + GND 1b 1a GND + +To get the board to boot some pins on the J12 connector must be set to 0 or 1 (tied to ground or +5V). +The status can be checked in test mode in the "Printer Test" menu. +ERROR = HIGH (No Error) +EMPTY = LOW (Not Empty) +BUSY = LOW (Ready) + +Connected to J11/J12 is a thermal printer. It prints on a roll of 2 1/4" wide thermal paper. +Bolted onto the metal frame is a small 80mm square PCB. There is no manufacturer name on it +and only some numbers/letters "32-104C SEC-A" +The PCB contains the following parts.... +1x 27C010 128k x8-bit EPROM (DIP32 at U9) +1x 16M-bit mask ROM (SOP44 at U4) +1x 8-position DIP Switch labelled SW1. Position 2 is on, all others are off +1x NEC uPC393 Dual Comparitor (SIL9) +1x Sanyo LB1650 Dual-Directional Motor Driver (DIP16) +1x Maxim MAX202 RS232 Transceiver (SOIC16) +1x Toshiba TC55257 32k x8-bit SRAM (TSOP28) +1x Toshiba TMP95C061AF TLCS90/900 compatible 16-bit Micro-Controller (TQFP100). Note there is no internal ROM capability. +Some logic, resistors/caps/transistors, some connectors etc. + +*************************************************************/ #include "emu.h" #include "includes/namcond1.h" @@ -92,6 +208,29 @@ static ADDRESS_MAP_START( namcond1_map, AS_PROGRAM, 16, namcond1_state ) AM_RANGE(0xc3ff00, 0xc3ffff) AM_READWRITE(cuskey_r,cuskey_w) ADDRESS_MAP_END +static ADDRESS_MAP_START( abcheck_map, AS_PROGRAM, 16, namcond1_state ) + AM_RANGE(0x000000, 0x0fffff) AM_ROM + AM_RANGE(0x400000, 0x40ffff) AM_RAM AM_SHARE("shared_ram") + AM_RANGE(0x600000, 0x607fff) AM_RAM AM_SHARE("zpr1") + AM_RANGE(0x608000, 0x60ffff) AM_RAM AM_SHARE("zpr2") + AM_RANGE(0x780000, 0x780001) AM_READ(printer_r) + AM_RANGE(0x800000, 0x80000f) AM_DEVREADWRITE("ygv608", ygv608_device, read, write) + AM_RANGE(0xa00000, 0xa00fff) AM_DEVREADWRITE8("at28c16", at28c16_device, read, write, 0xff00) +#ifdef MAME_DEBUG + AM_RANGE(0xb00000, 0xb00001) AM_DEVREAD("ygv608", ygv608_device, debug_trigger_r) +#endif + AM_RANGE(0xc3ff00, 0xc3ffff) AM_READWRITE(cuskey_r,cuskey_w) +ADDRESS_MAP_END + +READ16_MEMBER(namcond1_state::printer_r) +{ + // bits tested: + // bit 2 = 0 for paper cut switch on, 1 for off + // bit 4 = 0 for paper OK, 1 for empty + // bit 5 = 1 for normal status, 0 for error + return 0x0020; +} + /*************************************************************/ static INPUT_PORTS_START( namcond1 ) @@ -102,7 +241,7 @@ static INPUT_PORTS_START( namcond1 ) PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON2 ) - PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_JOYSTICK_RIGHT ) PORT_PLAYER(2) PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_JOYSTICK_LEFT ) PORT_PLAYER(2) @@ -110,7 +249,7 @@ static INPUT_PORTS_START( namcond1 ) PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_PLAYER(2) PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_PLAYER(2) PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_PLAYER(2) - PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_UNUSED ) + PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_BUTTON3 ) PORT_PLAYER(2) PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_START2 ) PORT_START("DSW") @@ -224,6 +363,15 @@ static MACHINE_CONFIG_START( namcond1 ) MCFG_YGV608_PALETTE("palette") MACHINE_CONFIG_END +static MACHINE_CONFIG_DERIVED( abcheck, namcond1 ) + MCFG_CPU_REPLACE("maincpu", M68000, XTAL_49_152MHz/4) + MCFG_CPU_PROGRAM_MAP(abcheck_map) + MCFG_CPU_VBLANK_INT_DRIVER("screen", namcond1_state, irq1_line_hold) + + MCFG_NVRAM_ADD_0FILL("zpr1") + MCFG_NVRAM_ADD_0FILL("zpr2") +MACHINE_CONFIG_END + ROM_START( ncv1 ) ROM_REGION( 0x100000,"maincpu", 0 ) /* 16MB for Main CPU */ ROM_LOAD16_WORD( "nc2main0.14d", 0x00000, 0x80000, CRC(4ffc530b) SHA1(23d622d0261a3584236a77b2cefa522a0f46490e) ) @@ -301,8 +449,38 @@ ROM_START( ncv2j ) ROM_LOAD( "ncs1voic.7c", 0x000000, 0x200000, CRC(ed05fd88) SHA1(ad88632c89a9946708fc6b4c9247e1bae9b2944b) ) ROM_END +ROM_START( abcheck ) + ROM_REGION( 0x100000,"maincpu", 0 ) /* 16MB for Main CPU */ + ROM_LOAD( "an1main0b.14e", 0x000000, 0x080000, CRC(f1b9777d) SHA1(b28f4106e1e145dc1aaa5af455b6f991d2b04c59) ) + ROM_LOAD( "an1main1b.13e", 0x080000, 0x080000, CRC(d40ccdcc) SHA1(05f864d84bf34a1722c598378ed8d27fba00f575) ) + + ROM_REGION( 0x80000,"mcu", 0 ) /* sub CPU */ + ROM_LOAD( "an1sub.1d", 0x000000, 0x080000, CRC(50de9130) SHA1(470b3977f4bf12ca65bc42631ccdf81753ef56fd) ) + + ROM_REGION( 0x400000,"ygv608", 0 ) /* 4MB character generator */ + ROM_LOAD( "an1cg0.10e", 0x000000, 0x200000, CRC(6dae0531) SHA1(2f4a4a22d461eb9a5bb88bdfccc3aff44cd3faee) ) + ROM_LOAD( "an1cg1.10f", 0x200000, 0x200000, CRC(8485607a) SHA1(1b9a1950c6db61a2b546fe2f5e56333593e93fb4) ) + + ROM_REGION( 0x1000000, "c352", 0 ) // Samples + ROM_LOAD( "an1voice.7c", 0x000000, 0x200000, CRC(d2bfa453) SHA1(6b7d6bb4d65290d8fd3df5d12b41ae7dce5f3f1c) ) + + ROM_REGION( 0x80000, "data", 0 ) // game data? + ROM_LOAD( "an1dat0.ic1", 0x000000, 0x080000, CRC(44dc7da1) SHA1(dd57670a2b07c4988ca30bba134931c1701a926f) ) + + ROM_REGION( 0x8000, "zpr1", 0 ) + ROM_LOAD( "m48z30y.ic2", 0x000000, 0x008000, CRC(a816d989) SHA1(c78fe06b049c31cf8de2a79025823dbc0c95d526) ) + + ROM_REGION( 0x8000, "zpr2", 0 ) + ROM_LOAD( "m48z30y.ic3", 0x000000, 0x008000, CRC(bfa687bb) SHA1(463ae40f21b675f3b4155efda9c965b71519a49e) ) + + ROM_REGION( 0x220000, "printer", 0 ) + ROM_LOAD( "np-b205_nmc_ver1.00.u9", 0x000000, 0x020000, CRC(445ceb0d) SHA1(49491b936f50577564196992df3a3c93aa3fcc99) ) + ROM_LOAD( "npg1624lc.u4", 0x020000, 0x200000, CRC(7e00254f) SHA1(b0fa8f979e8322d71f842de5358ae2a2e36386f7) ) +ROM_END + GAME( 1995, ncv1, 0, namcond1, namcond1, namcond1_state, 0, ROT90, "Namco", "Namco Classic Collection Vol.1", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1995, ncv1j, ncv1, namcond1, namcond1, namcond1_state, 0, ROT90, "Namco", "Namco Classic Collection Vol.1 (Japan, v1.00)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1995, ncv1j2, ncv1, namcond1, namcond1, namcond1_state, 0, ROT90, "Namco", "Namco Classic Collection Vol.1 (Japan, v1.03)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_SUPPORTS_SAVE ) GAME( 1996, ncv2, 0, namcond1, namcond1, namcond1_state, 0, ROT90, "Namco", "Namco Classic Collection Vol.2", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) GAME( 1996, ncv2j, ncv2, namcond1, namcond1, namcond1_state, 0, ROT90, "Namco", "Namco Classic Collection Vol.2 (Japan)", MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) +GAME( 1996, abcheck, 0, abcheck, namcond1, namcond1_state, 0, ROT0, "Namco", "Abnormal Check", MACHINE_NOT_WORKING|MACHINE_IMPERFECT_GRAPHICS | MACHINE_UNEMULATED_PROTECTION | MACHINE_SUPPORTS_SAVE ) |