summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/namcos10.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/namcos10.cpp')
-rw-r--r--src/mame/drivers/namcos10.cpp1364
1 files changed, 0 insertions, 1364 deletions
diff --git a/src/mame/drivers/namcos10.cpp b/src/mame/drivers/namcos10.cpp
deleted file mode 100644
index 5aabe9b3387..00000000000
--- a/src/mame/drivers/namcos10.cpp
+++ /dev/null
@@ -1,1364 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:smf
-/***************************************************************************
-
-Namco System 10 - Arcade PSX Hardware
-=====================================
-Driver by smf. Board notes by Guru
-
-
-----------------------------------------
-Guru Readme for Namco System 10 Hardware
-----------------------------------------
-Note! This document is a Work-In-Progress and will be updated from time to time when more dumps are available.
-
-This document covers all the known Namco System 10 games, including....
-*Drum Master (C) Namco, 2001
-*Drum Master 2 (C) Namco, 2001
-*Drum Master 3 (C) Namco, 2002
-*Drum Master 4 (C) Namco, 2003
-*Drum Master 5 (C) Namco, 2003
-*Drum Master 6 (C) Namco, 2004
-*Drum Master 7 (C) Namco, 2005
-GAHAHA Ippatsu-dou (GID2 Ver.A) (C) Namco/Metro, 2000
-GAHAHA Ippatsu-dou 2 (GIS1 Ver.A) (C) Namco/Metro, 2001
-Gamshara (10021 Ver.A) (C) Mitchell, 2003
-Gegege no Kitarō Yōkai Yokochō Matsuri De Batoru Ja (GYM1 Ver.A) (C) Namco, 2007
-Gekitoride-Jong Space (10011 Ver.A) (C) Namco/Metro, 2001
-Golgo 13 Juusei no Chinkonka (GLT1 Ver.A) (C) Namco/8ing/Raizing, 2001
-Gunbalina (GNN1 Ver. A) (C) Namco, 2000
-*Hard Puncher Hajime no Ippo 2 Ouja e no Chousen (C) Namco/Taito, 2002
-*Honne Hakkenki (C) Namco, 2001
-Keroro Gunsō Chikyū Shinryaku Shirei Dearimasu! (KRG1 Ver.A) (C) Namco, 2006
-**Knock Down 2001 (C) Namco, 2001
-Kotoba no Puzzle Mojipittan (KPM1 Ver.A) (C) Namco, 2001
-*Kurukuru Food (C) Namco, 2002
-Mr Driller 2 (DR21 Ver.A) (C) Namco, 2000
-Mr Driller 2 (DR22 Ver.A) (C) Namco, 2000
-Mr Driller G (DRG1 Ver.A) (C) Namco, 2001
-NFL Classic Football (NCF3 Ver.A) (C) Namco, 2003
-Pacman Ball (PMB2 Ver.A) (C) Namco, 2003
-Panicuru Panekuru (PPA1 Ver.A) (C) Namco, 2001
-*Photo Battle (C) Namco, 2001
-Point Blank 3 (GNN2 Ver. A) (C) Namco, 2000
-*Ren-ai Quiz High School Angel (C) Namco, 2002
-Seishun Quiz Colorful High School (CHS1 Ver.A) (C) Namco, 2002
-Sekai Kaseki Hakken (Japan, SKH1 Ver.A) (C) Namco, 2004
-Shamisen Brothers (C) Kato/Konami, 2003
-Star Trigon (STT1 Ver.A) (C) Namco, 2002
-*Taiko no Tatsujin (C) Namco, 2001
-Taiko no Tatsujin 2 (TK21 Ver.C) (C) Namco, 2001
-Taiko no Tatsujin 3 (TK31 Ver.A) (C) Namco, 2002
-Taiko no Tatsujin 4 (TK41 Ver.A) (C) Namco, 2003
-Taiko no Tatsujin 5 (TK51 Ver.A) (C) Namco, 2003
-Taiko no Tatsujin 6 (TK61 Ver.A) (C) Namco, 2004
-Tsukkomi Yousei Gips Nice Tsukkomi (NTK1 Ver.A) (C) Namco/Metro, 2002
-Uchuu Daisakusen Chocovader Contactee (CVC1 Ver.A) (C) Namco, 2002
-Unknown medal (?) game (MTL1 SPR0B) (C) ?, 200?
-
-* - denotes not dumped yet.
-** - denotes incomplete dump.
-
-The Namco System 10 system comprises 2 or 3 PCB's....
-MAIN PCB - This is the mother board PCB. It holds the main CPU/GPU & SPU and all sound circuitry, program & video RAM,
- controller/input logic and video output circuitry. Basically everything except the ROMs.
- There are three known revisions of this PCB so far. The differences seem very minor. The 2nd and 3rd revision
- have an updated CPLD revision.
- The 3rd revision has an updated model Sony chip. The only other _noticeable_ difference is some component
- shuffling in the sound amplification section to accommodate two extra 1000uF capacitors and one 470uF capacitor
- has been replaced by a 1000uF capacitor. Everything else, including all the PLDs appears to be identical.
- Note there are no ROMs on the Main PCB and also no custom Namco chips on System10, which seem to have been
- phased out. Instead, they have been replaced by (custom programmed) CPLDs, probably due to cost-cutting
- measures within the company, or to reduce the cost of System10 to an entry-level no-frills development platform.
-MEM PCB - There are three known revisions of this PCB (so far). They're mostly identical except for the type/number of ROMs
- used and the contents of the CPLD. The 2nd revision also has a RAM chip on it. The 3rd revision has some extra
- hardware present to decode MP3 data.
- Each game has a multi-letter code assigned to it which is printed on a small sticker and placed on the top side
- of the MEM PCB.
- This code is then proceeded by a number (only '1' & '2' seen so far), then 'Ver.' then A/B/C/D/E (only 'A' seen so far)
- which denotes the software revision, and in some cases a sub-revision such as 1 or 2 (usually only listed in the
- test mode).
- The first 1 denotes a Japanese version. Other numbers denote a World version.
- For World versions, only the main program changes, the rest of the (graphics) ROMs use the Japanese version ROMs.
- If the version sticker has a red dot it means nothing as several identical versions of the same games exist with and
- without the red dot. A similar red dot has also been seen on Namco System 246 security carts and means nothing.
- Speculation about a red dot on a sticker is pointless and has no impact on the dumps or the emulation.
- Any System 10 MEM PCB can be swapped to run on any System 10 Main PCB regardless of the main board revision.
- The high scores are stored on the MEM PCB (probably inside the main program EEPROMs/FlashROMs).
- There are no "alt" versions with the same code, this simply means the game was dumped without first resetting the
- high score records and coinage/play statistics info to factory defaults.
- Also, on all System 10 games, there is a sticker with a serial number on it and the program ROMs also contain
- that same serial number. I'm not sure why, they're not exactly _easily_ traceable and no one cares either way ;-)
-EXIO PCB - Optional I/O & Extra Controls PCB
-
- See the Main PCB, ROM Daughterboard PCB and Expansion PCB below for more details.
-
-
-Main PCB Layout
----------------
-
-Revision 1
-SYSTEM10 MAIN PCB 8906960103 (8906970103)
-
-Revision 2
-SYSTEM10 MAIN PCB 8906960104 (8906970104)
-
-Revision 3
-SYSTEM10 MAIN PCB 8906962400 (8906972400)
- |----------------------------------------------------------|
- | LA4705 VR1 J201 |
- | |----------------------| |
- | NJM3414 |----------------------| |
-|-| J10 |
-| BA3121 |
-| NJM3414 54V25632 54V25632 J1|
-| CXD1178Q |
-|J JP4 |---------| |-------| |
-|A | | | | |
-|M CXA2067AS |CXD8561CQ| |CY37128| |
-|M 53.693175MHz | | |VP160 | |
-|A | | | | |
-| |---------| |-------| |
-| |
-| 101.4912MHz |
-|-| MAX734 IS41LV16100 |
- | |---------| |
- | DSW1 IS41LV16100 | | |
- | |CXD8606BQ| |
- | GAL16V8D | | |
- |J5 |-| * | | PST592 |
- | | | |---------| |--------| |
- | | | | | |
- | | | * |CXD2938Q| |
- |J4 | |J202 IS41LV16256 | | |
- | | | | | |
- | | | EPM3064 |--------| |
- | | | |
- | |-| PQ30RV21 |
- | J103 |
- |----------------------------------------------------------|
-Notes:
-------
- CXD8606BQ : SONY CXD8606BQ Central Processing Unit / GTE (QFP208)
- - replaced by CXD8606CQ on Revision 3 Main PCB
- CXD8561CQ : SONY CXD8561CQ Graphics Processor Unit (QFP208)
- CXD2938Q : SONY CXD2938Q Sound Processor Unit (QFP208)
- CXD1178Q : SONY CXD1178Q 8-bit RGB 3-channel D/A converter (QFP48)
- CXA2067AS : SONY CXA2067AS TV/Video circuit RGB Pre-Driver (SDIP30)
- CY37128VP160: CYPRESS CY37128VP160 Complex Programmable Logic Device (TQFP160, stamped 'S10MA1')
- - replaced by an updated revision on Revision 2 & 3 Main PCB and stamped 'S10MA1B'
- EPM3064 : Altera MAX EPM3064ATC100-10 Complex Programmable Logic Device (TQFP100, stamped 'S10MA2A')
- GAL16V8D : GAL16V8D PAL (PLCC20, stamped 'S10MA3A')
- IS41LV16100 : ISSI IS41LV16100S-50T 1M x16 EDO DRAM (x2, TSOP50(44) Type II)
- IS41LV16256 : ISSI IS41LV16256-50T 256k x16 EDO DRAM (TSOP44(40) Type II)
- 54V25632 : OKI 54V25632 256K x32 SGRAM (x2, QFP100)
- PQ30RV31 : Sharp PQ30RV31 5 Volt to 3.3 Volt Voltage Regulator
- LA4705 : LA4705 15W 2-channel Power Amplifier (SIP18)
- MAX734 : MAX734 +12V 120mA Flash Memory Programming Supply Switching Regulator (SOIC8)
- PST592 : PST592J System Reset IC with 2.7V detection circuit (MMP-4A)
- BA3121 : Rohm BA3121 Dual Channel Ground Isolation Amplifier & Noise Eliminator (SOIC8)
- JRC3414 : New Japan Radio Co. Ltd. JRC3414 Single-Supply Dual High Current Operational Amplifier (x2, SOIC8)
- DSW1 : 8 position DIP switch
- JP4 : 2 position jumper, set to NC, alt. position labelled SYNC (Note: changing the jumper position has no visual effect)
- J1 : 40 Pin IDC connector for a flat 40-wire cable, used for games that have a DVDROM Drive
- J4 : 10 pin header for extra controls etc \ (note: custom Namco 48 pin edge connector is not on System10 PCBs)
- J5 : 4 pin header for stereo sound out /
- J10 : 4 pin header for audio input from ROM board type 3. This audio is mixed with the other main board audio.
- J201 : 100 pin custom Namco connector for mounting of MEM PCB. This connector is surface-mounted, not a thru-hole type.
- J202 : 80 pin custom Namco connector for mounting of another board. This connector is surface-mounted, not a thru-hole type.
- There are additional boards that plug in here and provide extra functionality. See below for the details.
- J103 : 6-pin JAMMA2 power plug (Note none of the other JAMMA2 standard connectors are present)
- VR1 : Volume potentiometer
- * : Unpopulated position for IS41LV16100 1M x16 EDO DRAM
-
-Additional Notes:
- 1. In test mode (Display Test) the screen can be set to interlace or non-interlace mode. The graphics in
- interlace mode are visually much smoother with noticeable screen flickering. Non-interlace modes gives
- a much blockier graphic display (i.e. lower resolution) but without screen flickering.
- 2. There is no dedicated highscore/options EEPROM present on the PCB, the game stores it's settings on the
- game board (probably in the program EEPROMs/FlashROMs).
-
-ROM Daughterboard PCBs
-----------------------
-This PCB holds all the ROMs.
-There are three known types of ROM daughterboards used on S10 games (so far).
-All of the PCBs are the same size (approx 5" x 5") containing one custom connector surface-mounted to the underside of
-the PCB, some mask ROMs/flash ROMs, a CPLD (which seems to be the customary 'KEYCUS' chip. On the 2nd type a RAM
-chip is also present. The 3rd type has additional hardware to decode MP3 audio and a ROMless Microcontroller.
-
-********
-*Type 1*
-********
-System10 MEM(M) PCB 8906961000 (8906970700)
-|-------------------------------------|
-| |
-| |-------| +-
-| | | +-
-| |CY37128| J1+-
-| |VP160 | +-
-| | | +-
-| 7E 7D |-------| +-
-| |
-| 6E 6D |
-| |
-| 5E 5D 5A |
-| |
-| 4E 4D 4A |
-| |
-| 3E 3D |
-| |
-| 2E 2D 2A |
-| |
-| 1E 1D 1A |
-| |
-|-------------------------------------|
-Notes:
- CY37128VP160: CY37128VP160 Cypress Complex Programmable Logic Device (TQFP160)
- 1A - 5A : Intel Flash DA28F640J5 64MBit Flash EEPROM (SSOP56)
- 1D - 7E : Samsung Electronics K3N9V1000A-YC 128MBit mask ROM (TSOP48) (see note 3)
- J1 : 6 pin header for programming the CPLD via JTAG
-
-This PCB is used on:
-
- Software MEM PCB
-Game Revision Sticker KEYCUS ROMs Populated
-------------------------------------------------------------------------------------
-Mr Driller 2 DR21/VER.A3 DR21 Ver.A KC001A DR21VERA.1A, DR21MA1.1D, DR21MA2.2D
-Mr Driller 2 DR22/VER.A3 DR22 Ver.A KC001A DR22VERA.1A, DR21MA1.1D, DR21MA2.2D
-
- Note
- 1. The ROM PCB has locations for 4x 64MBit program ROMs, but only 1A is populated.
- 2. The ROM PCB has locations for 14x 128MBit GFX ROMs (Total capacity = 2048MBits) but only 1D and 2D are populated.
- 3. These ROMs are only 18mm long, dumping them requires a special custom adapter
-
-********
-*Type 2*
-********
-System10 MEM(N) PCB 8906961402 (8906971402)
-|-------------------------------------|
-| |
-| |---------| +-
-| | | +-
-| |CY37256 | J1+-
-| 8E 8D |VP208 | +-
-| | | +-
-| 7E 7D |---------| +-
-| |
-| 6E 6D |
-| |
-| 5E 5D CY7C1019 |
-| |
-| 4E 4D |
-| |
-| 3E 3D |
-| |
-| 2E 2D |
-| |
-| 1E 1D |
-| |
-|-------------------------------------|
-Notes:
- CY37256VP208: Cypress CY37256VP208 Complex Programmable Logic Device (TQFP208)
- CY7C1019 : Cypress CY7C1019BV33-15VC or Samsung Electronics K6R1008V1C-JC15 128k x8 bit 3.3V High Speed CMOS Static Ram (SOJ32)
- 1D - 8E : Samsung Electronics K9F2808U0B-YCBO 128MBit NAND Flash EEPROM (TSOP48)
- J1 : 6 pin header for programming the CPLD via JTAG
-
-This PCB is used on:
-
- MEM PCB
-Game Sticker KEYCUS ROMs Populated CD Notes
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
-Gamshara 10021 Ver.A KC020A 8E, 8D N/A
-Gegege no Kitarō Yōkai Yokochō Matsuri De Batoru Ja GYM1 Ver.A KC052A 8E, 8D N/A also has a Namco S10 MGEX10 (8681960200) PCB
-Gekitoride-Jong Space 10011 Ver.A KC003A 8E, 8D, 7E, 7D N/A
-Gunbalina GNN1 Ver.A KC002A 8E, 8D N/A see note 3
-Keroro Gunsō Chikyū Shinryaku Shirei Dearimasu! KRG1 Ver.A KC047A1 8E, 8D N/A also has a Namco S10 MGEX10 (8681960200) PCB
-Knock Down 2001 KD11 Ver.B KC011A 8E, 8D N/A also has a Namco P-DRIVE PCB 1908961101 (1908971101) with an H8/3002
-Kono Tako 10021 Ver.A KC034A 8E, 8D N/A
-Kotoba no Puzzle Mojipittan KPM1 Ver.A KC012A 8E, 8D, 7E N/A
-Mr Driller G DRG1 Ver.A KC007A 8E, 8D, 7E N/A
-NFL Classic Football NCF3 Ver.A KC027A 8E, 8D, 7E, 7D N/A
-Pacman Ball PMB2 Ver.A KC026A 8E, 8D N/A
-Panicuru Panekuru PPA1 Ver.A KC017A 8E, 8D, 7E N/A
-Point Blank 3 GNN2 Ver.A KC002A 8E, 8D N/A see note 3
-Sekai Kaseki Hakken SKH1 Ver.A KC035A 8E, 8D N/A also has a Namco S10 MGEX10 (8681960201) PCB, unverified title
-Star Trigon STT1 Ver.A KC019A 8E, 8D N/A
-Taiko no Tatsujin 2 TK21 Ver.C KC010A 8E, 8D, 7E TK21-A KEYCUS is marked KC007A, KC010A is a sticker
-Taiko no Tatsujin 3 TK31 Ver.A KC016A 8E, 8D, 7E not dumped For all TK* games see note 2
-Taiko no Tatsujin 4 TK41 Ver.A KC024A 8E, 8D, 7E TK-4
-Taiko no Tatsujin 5 TK51 Ver.A KC031A 8E, 8D, 7E not dumped
-Taiko no Tatsujin 6 TK61 Ver.A KC036A 8E, 8D, 7E TK-6
-Utyuu Daisakusen Chocovader Contactee CVC1 Ver.A KC022A 8E, 8D, 7E, 7D, 6E N/A
-unknown medal (?) game MTL1 SPR0B KC043A 8E, 8D N/A also has a Namco System10 EXFINAL PCB 8906962603 (8906962703)
-
- Notes:
- 1. The ROM PCB has locations for 16x 128MBit FlashROMs (Total capacity = 2048MBits) but usually only a few are populated.
- 2. All of the Taiko no Tatsujin games require a CDROM disc. The game will not show anything on screen
- if the CD drive & disc is not present and working. The disc contains binary data.
- 3. Some kind of block locking or protection issues in the NAND FlashROM prevents the last NAND block being dumped.
-
-********
-*Type 3*
-********
-System10 MEM(P3) PCB 8906962201 (8906972201)
-|-------------------------------------|
-|TMP95C061 J101 L K6R1008 |
-| PST575D +-
-| LLLL |-------| +-
-|VHCT245 | | |-------| +-
-| LCX245 |CY37256| | |J1+-
-| 07VZ5M |VP208 | |CY37256| +-
-| 07VZ5M |(2) | |VP208 | +-
-| |-------| |(1) | |
-|J3 |-------| |
-| HY57V641620 DSW(4) |
-| LCX245 LCX245|
-| LC82310 LCX245 LCX245|
-| 3414 16.9344MHz |
-| VHC14 L |
-| L |
-| L |
-| L |
-| 0 2 4 6 8 10 12 14 |
-|J2 |
-| 1 3 5 7 9 11 13 15 |
-|-------------------------------------|
-Notes:
- TMP95C061 : Toshiba TMP95C061 TLCS-900 Series CMOS 16-bit Microcontroller; No internal ROM or RAM (QFP100)
- CY37256VP208(1): Cypress CY37256VP208 Complex Programmable Logic Device, marked with code 'KC' and a number.
- This is the Namco KEYCUS chip which is unique to each game (TQFP208)
- CY37256VP208(2): Cypress CY37256VP208 Complex Programmable Logic Device, marked 'S10MEP2A' (TQFP208)
- K6R1008 : Samsung Electronics K6R1008V1C-JC15 128k x8-bit 3.3V High Speed CMOS Static Ram (SOJ32)
- HY57V641620 : Hyundai HY57V641620 4 Banks x1M x16-bit Synchronous DRAM (TSOP54 Type II)
- 0-15 : Samsung Electronics K9F2808U0A-YCBO 16Mx8-bit (128M-bit) NAND Flash ROM (TSOP48)
- Note! These ROMs also hold data for high scores and play time and coin history.
- They must be reset to factory defaults before dumping so the dump is clean.
- LC82310 : Sanyo LC82310 MP3 decoder IC (QFP64)
- 3414 : New Japan Radio Co. Ltd. JRC3414 Single-Supply Dual High Current Operational Amplifier (SOIC8)
- 07VZ5M : Sharp 07VZ5M Variable Voltage Regulator
- PST575D : Mitsumi PST575D System Reset IC. Available in voltage detection C through L with voltages 4.5V-2.3V
- This D version triggers a reset at 4.2V (MMP-4A)
- J1 : 6 pin header for programming the CPLDs via JTAG
- J2 : 4 pin connector joined to main board for MP3 audio output from ROM board
- J3 : 6 pin connector joined to V278 EMI PCB (filter board on outside of metal box) via 16-pin IDC connector
- This connector is probably for extra controls
- L : LED (SMD 0603)
-
- Note
- 1. The ROM PCB has locations for 16x Flash ROMs (Total capacity = 2048M-bits) but usually only a few are populated.
-
-This PCB is used on:
-
- MEM PCB
-Game Sticker KEYCUS ROMs Populated
------------------------------------------------------------------------------------------------------
-Golgo 13 Juusei no Chinkonka GLT1 Ver.A KC009A 0, 1, 2, 3, 4, 5
-Seishun Quiz Colorful High School CHS1 Ver.A KC025A 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13
-Tsukkomi Yousei Gips Nice Tsukkomi NTK1 Ver.A KC018A 0, 1, 2, 3, 4, 5, 6, 7
-
-
-Expansion Daughterboard PCB
----------------------------
-This PCB provides input/output capabilities for JVS hook-ups and allows extra controls to be connected.
-There is actually only one PCB design but there are several variations where some of the connectors and
-ICs are not populated if the game does not need that capability. However the PCB contains all the
-locations/pads/holes etc to mount those parts. In most cases seen so far this PCB is optional but on some
-games (e.g. Point Blank 3) it is required for proper game play.
-
-System10 EXIO PCB 8906960602 (8906970602)
-|--------------------------------------------------------|
-| J4 J5 J3 J2 |
-| ADM485 MC14052 |-|
-| LT1181A |
-| VHCT245 |
-| CY37128VP100 VHCT245 |
-|J6 VHCT245 VHCT245 J1|
-| VHCT245 |
-| VHCT245 |
-| VHC14 61C256 |
-| TMP95C061 |
-| 22.1184MHz VHCT244 |-|
-| LLLL J7 VHCT574 J8|
-|--------------------------------------------------------|
-Notes:
- TMP95C061 : Toshiba TMP95C061 TLCS-900 Series CMOS 16-bit Microcontroller; No internal ROM or RAM (QFP100)
- CY37128VP160 : CY37128VP100 Cypress Complex Programmable Logic Device, marked 'S10XIO1A' or 'S10XIO1B' or 'S10XIO1C' (TQFP100)
- VHC* : Common 3.3v logic chips
- ADM485 : Analog Devices ADM485 Low Power EIA RS485 transceiver (SOIC8)
- 61C256 : ISSI IS61C256AH-15J 32k x8-bit SRAM (SOJ28)
- LT1181A : Linear Technology LT1181A or Analog Devices ADM202EARW Low Power 5V RS232 Dual Driver/Receiver (SOIC16W)
- MC14052 : OnSemi MC14052 Analog DP4T Multiplexers/Demultiplexer (SOIC16)
- L : LED (SMD 0603)
- J1 : 48-Way Card Edge Connector
- J2 : USB Connector for JVS External I/O board
- J3 : Dual RCA Jacks marked 'AUDIO', for audio output
- J4/J5 : HD15F DSUB Connector marked 'CRT1/CRT2', for video output
- J6 : DB9 DSUB Connector marked 'RS232C'. Possibly for networking several PCBs together
- J7 : 6 pin header for programming the CPLDs via JTAG
- J8 : 2 pin header for connection of gun. Pin 1:Player 1 Gun Opto. Pin2:Player 2 Gun Opto
-
-This PCB is required by Point Blank 3 since it controls the gun opto signal. Only the CPLD and J8 and some minor
-logic and other small support parts are populated.
-This PCB has been found almost fully populated (minus J6) on some Taiko no Tatsujin games (TK51/TK61) (and on Knock Down 2001) but not
-earlier TK games, so it appears to be optional or is only used by the later TK51 and TK61 games.
-*/
-
-#include "emu.h"
-#include "machine/ns10crypt.h"
-
-#include "cpu/psx/psx.h"
-#include "cpu/tlcs900/tmp95c061.h"
-#include "machine/ram.h"
-//#include "sound/spu.h"
-#include "video/psx.h"
-#include "screen.h"
-#include "speaker.h"
-
-
-class namcos10_state : public driver_device
-{
-public:
- namcos10_state(const machine_config &mconfig, device_type type, const char *tag)
- : driver_device(mconfig, type, tag)
- , m_maincpu(*this, "maincpu")
- , m_exio_mcu(*this, "exio_mcu")
- , m_memp3_mcu(*this, "memp3_mcu")
- { }
-
- void namcos10_base(machine_config &config);
- void namcos10_memm(machine_config &config);
- void namcos10_memn(machine_config &config);
- void namcos10_memn_exio(machine_config &config);
- void namcos10_memp3(machine_config &config);
- void ns10_konotako(machine_config &config);
- void ns10_mrdrilr2(machine_config &config);
- void ns10_knpuzzle(machine_config &config);
- void ns10_chocovdr(machine_config &config);
- void ns10_startrgn(machine_config &config);
- void ns10_gjspace(machine_config &config);
- void ns10_nflclsfb(machine_config &config);
- void ns10_gamshara(machine_config &config);
-
- void init_knpuzzle();
- void init_panikuru();
- void init_mrdrilr2();
- void init_startrgn();
- void init_gunbalna();
- void init_nflclsfb();
- void init_gjspace();
- void init_gamshara();
- void init_mrdrilrg();
- void init_chocovdr();
- void init_konotako();
-
-private:
- // memm variant interface
- void crypto_switch_w(uint16_t data);
- uint16_t range_r(offs_t offset);
- void bank_w(offs_t offset, uint16_t data);
-
- // memn variant interface
- uint16_t nand_status_r();
- void nand_address1_w(uint8_t data);
- void nand_address2_w(uint8_t data);
- void nand_address3_w(uint8_t data);
- void nand_address4_w(uint8_t data);
- uint16_t nand_data_r();
- void nand_block_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- uint16_t nand_block_r(offs_t offset);
-
- uint16_t control_r(offs_t offset);
- void control_w(offs_t offset, uint16_t data);
-
- uint16_t i2c_clock_r();
- void i2c_clock_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
- uint16_t i2c_data_r();
- void i2c_data_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0);
-
- uint16_t sprot_r();
- void sprot_w(uint16_t data);
-
- uint8_t *nand_base;
- void nand_copy( uint32_t *dst, uint32_t address, int len );
-
- void namcos10_map(address_map &map);
- void namcos10_memm_map(address_map &map);
- void namcos10_memn_map(address_map &map);
-
- enum {
- I2CP_IDLE,
- I2CP_RECIEVE_BYTE,
- I2CP_RECIEVE_ACK_1,
- I2CP_RECIEVE_ACK_0
- };
-
- uint32_t bank_base;
- uint32_t nand_address;
- uint16_t block[0x1ff];
- ns10_decrypter_device* decrypter;
-
- uint16_t i2c_host_clock, i2c_host_data, i2c_dev_clock, i2c_dev_data, i2c_prev_clock, i2c_prev_data;
- int i2cp_mode;
- uint8_t i2c_byte;
- int i2c_bit;
-
- int sprot_bit, sprot_byte;
- uint16_t nand_read( uint32_t address );
- uint16_t nand_read2( uint32_t address );
-
- void i2c_update();
-
- DECLARE_MACHINE_RESET(namcos10);
- void memn_driver_init( );
- required_device<psxcpu_device> m_maincpu;
- optional_device<tmp95c061_device> m_exio_mcu;
- optional_device<tmp95c061_device> m_memp3_mcu;
-};
-
-
-void namcos10_state::namcos10_map(address_map &map)
-{
- map(0x1f500000, 0x1f501fff).ram().share("share3"); /* ram? stores block numbers */
- map(0x9f500000, 0x9f501fff).ram().share("share3"); /* ram? stores block numbers */
- map(0xbf500000, 0xbf501fff).ram().share("share3"); /* ram? stores block numbers */
-
- map(0x1fba0000, 0x1fba000f).rw(FUNC(namcos10_state::control_r), FUNC(namcos10_state::control_w));
- map(0x1fba0002, 0x1fba0003).rw(FUNC(namcos10_state::sprot_r), FUNC(namcos10_state::sprot_w));
- map(0x1fba0008, 0x1fba0009).rw(FUNC(namcos10_state::i2c_clock_r), FUNC(namcos10_state::i2c_clock_w));
- map(0x1fba000a, 0x1fba000b).rw(FUNC(namcos10_state::i2c_data_r), FUNC(namcos10_state::i2c_data_w));
-}
-
-
-// memm variant interface
-//
-// banked view with dynamic decryption over the flash. Access to the
-// nand is unknown, but may just be using the memn interface. Won't
-// know until the decryption is done.
-//
-// bios copies 62000-37ffff from the flash to 80012000 in ram through the
-// decryption in range_r then jumps there
-
-void namcos10_state::crypto_switch_w(uint16_t data)
-{
- printf("crypto_switch_w: %04x\n", data);
- if (decrypter == nullptr)
- return;
-
- if (BIT(data, 15) != 0)
- decrypter->activate(data & 0xf);
- else
- decrypter->deactivate();
-}
-
-void namcos10_state::bank_w(offs_t offset, uint16_t data)
-{
- bank_base = 0x100000 * offset;
-}
-
-uint16_t namcos10_state::range_r(offs_t offset)
-{
- uint16_t data = ((const uint16_t *)(memregion("maincpu:rom")->base()))[bank_base+offset];
-
- if (decrypter == nullptr)
- return data;
-
- if (decrypter->is_active())
- return decrypter->decrypt(data);
- else
- return data;
-}
-
-uint16_t namcos10_state::control_r(offs_t offset)
-{
- logerror("%s: control_r %d (%x)\n", machine().describe_context(), offset);
- if(offset == 2)
- return 1^0xffff;
- return 0;
-}
-
-void namcos10_state::control_w(offs_t offset, uint16_t data)
-{
- logerror("%s: control_w %d, %04x (%x)\n", machine().describe_context(), offset, data);
-}
-
-void namcos10_state::sprot_w(uint16_t data)
-{
- logerror("%s: sprot_w %04x (%x)\n", machine().describe_context(), data);
- sprot_bit = 7;
- sprot_byte = 0;
-}
-
-// startrgn:
-// 8004b6f8: jal 4b730, dies if v0!=0 (answers 1)
-// flash access, unhappy with the results
-
-// 800128d8: jal 37b58 (flash death)
-// 800128e0: jal 1649c
-// 800128e8: jal 2c47c
-
-uint16_t namcos10_state::sprot_r()
-{
- // If line 3 has 0x30/0x31 in it, something happens. That
- // something currently kills the system though.
-
- const static uint8_t prot[0x40] = {
- 0x10, 0x11, 0x12, 0x13, 0x14, 0x15, 0x16, 0x17, 0x18, 0x19, 0x1a, 0x1b, 0x1c, 0x1d, 0x1e, 0x1f,
- 0x20, 0x21, 0x22, 0x23, 0x24, 0x25, 0x26, 0x27, 0x28, 0x29, 0x2a, 0x2b, 0x2c, 0x2d, 0x2e, 0x2f,
- 0x50, 0x51, 0x50, 0x51, 0x50, 0x51, 0x50, 0x51, 0x50, 0x51, 0x50, 0x51, 0x50, 0x51, 0x50, 0x51,
- 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f,
- };
- uint16_t res = sprot_byte >= 0x20 ? 0x3 :
- (((prot[sprot_byte ] >> sprot_bit) & 1) ? 1 : 0) |
- (((prot[sprot_byte+0x20] >> sprot_bit) & 1) ? 2 : 0);
-
- sprot_bit--;
- if(sprot_bit == -1) {
- sprot_bit = 7;
- sprot_byte++;
- }
- return res;
-}
-
-uint16_t namcos10_state::i2c_clock_r()
-{
- uint16_t res = i2c_dev_clock & i2c_host_clock & 1;
- // logerror("i2c_clock_r %d (%x)\n", res, m_maincpu->pc());
- return res;
-}
-
-
-void namcos10_state::i2c_clock_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- COMBINE_DATA(&i2c_host_clock);
- // logerror("i2c_clock_w %d (%x)\n", data, m_maincpu->pc());
- i2c_update();
-}
-
-uint16_t namcos10_state::i2c_data_r()
-{
- uint16_t res = i2c_dev_data & i2c_host_data & 1;
- // logerror("i2c_data_r %d (%x)\n", res, m_maincpu->pc());
- return res;
-}
-
-
-void namcos10_state::i2c_data_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- COMBINE_DATA(&i2c_host_data);
- // logerror("i2c_data_w %d (%x)\n", data, m_maincpu->pc());
- i2c_update();
-}
-
-void namcos10_state::i2c_update()
-{
- uint16_t clock = i2c_dev_clock & i2c_host_clock & 1;
- uint16_t data = i2c_dev_data & i2c_host_data & 1;
-
- if(i2c_prev_data == data && i2c_prev_clock == clock)
- return;
-
- switch(i2cp_mode) {
- case I2CP_IDLE:
- if(clock && !data) {
- logerror("i2c: start bit\n");
- i2c_byte = 0;
- i2c_bit = 7;
- i2cp_mode = I2CP_RECIEVE_BYTE;
- }
- break;
- case I2CP_RECIEVE_BYTE:
- if(clock && data && !i2c_prev_data) {
- logerror("i2c stop bit\n");
- i2cp_mode = I2CP_IDLE;
- } else if(clock && !i2c_prev_clock) {
- i2c_byte |= (data << i2c_bit);
- // logerror("i2c_byte = %02x (%d)\n", i2c_byte, i2c_bit);
- i2c_bit--;
- if(i2c_bit < 0) {
- i2cp_mode = I2CP_RECIEVE_ACK_1;
- logerror("i2c received byte %02x\n", i2c_byte);
- i2c_dev_data = 0;
- data = 0;
- }
- }
- break;
- case I2CP_RECIEVE_ACK_1:
- if(clock && !i2c_prev_clock) {
- // logerror("i2c ack on\n");
- i2cp_mode = I2CP_RECIEVE_ACK_0;
- }
- break;
- case I2CP_RECIEVE_ACK_0:
- if(!clock && i2c_prev_clock) {
- // logerror("i2c ack off\n");
- i2c_dev_data = 1;
- data = i2c_host_data & 1;
- i2c_byte = 0;
- i2c_bit = 7;
- i2cp_mode = I2CP_RECIEVE_BYTE;
- }
- break;
- }
- i2c_prev_data = data;
- i2c_prev_clock = clock;
-}
-
-void namcos10_state::namcos10_memm_map(address_map &map)
-{
- namcos10_map(map);
-
- map(0x1f300000, 0x1f300001).w(FUNC(namcos10_state::crypto_switch_w));
- map(0x1f400000, 0x1f5fffff).r(FUNC(namcos10_state::range_r));
- map(0x1fb40000, 0x1fb4000f).w(FUNC(namcos10_state::bank_w));
-}
-
-
-// memn variant interface
-//
-// Block access to the nand. Something strange is going on with the
-// status port. Interaction with the decryption is unclear at best.
-
-uint16_t namcos10_state::nand_status_r()
-{
- return 0;
-}
-
-void namcos10_state::nand_address1_w(uint8_t data)
-{
- logerror("%s: nand_a1_w %08x (%08x)\n", machine().describe_context(), data);
- // nand_address = ( nand_address & 0x00ffffff ) | ( data << 24 );
-}
-
-void namcos10_state::nand_address2_w(uint8_t data)
-{
- logerror("%s: nand_a2_w %08x (%08x)\n", machine().describe_context(), data);
- nand_address = ( nand_address & 0xffffff00 ) | ( data << 0 );
-}
-
-void namcos10_state::nand_address3_w(uint8_t data)
-{
- logerror("%s: nand_a3_w %08x (%08x)\n", machine().describe_context(), data);
- nand_address = ( nand_address & 0xffff00ff ) | ( data << 8 );
-}
-
-void namcos10_state::nand_address4_w(uint8_t data)
-{
- nand_address = ( nand_address & 0xff00ffff ) | ( data << 16 );
- logerror("%s: nand_a4_w %08x (%08x) -> %08x\n", machine().describe_context(), data, nand_address*2);
-}
-
-uint16_t namcos10_state::nand_read( uint32_t address )
-{
- int index = ( ( address / 512 ) * 528 ) + ( address % 512 );
- return nand_base[ index ] | ( nand_base[ index + 1 ] << 8 );
-}
-
-uint16_t namcos10_state::nand_read2( uint32_t address )
-{
- int index = ( ( address / 512 ) * 528 ) + ( address % 512 );
- return nand_base[ index + 1 ] | ( nand_base[ index ] << 8 );
-}
-
-uint16_t namcos10_state::nand_data_r()
-{
- uint16_t data = nand_read2( nand_address * 2 );
-
- // logerror("read %08x = %04x\n", nand_address*2, data);
- // printf("read %08x = %04x\n", nand_address*2, data);
-
-
-/* printf( "data<-%08x (%08x)\n", data, nand_address ); */
- nand_address++;
-
- if (decrypter == nullptr)
- return data;
-
- if (decrypter->is_active())
- return decrypter->decrypt(data);
- else
- return data;
-}
-
-void namcos10_state::nand_copy( uint32_t *dst, uint32_t address, int len )
-{
- while( len > 0 )
- {
- *( dst++ ) = nand_read( address ) | ( nand_read( address + 2 ) << 16 );
- address += 4;
- len -= 4;
- }
-}
-
-void namcos10_state::nand_block_w(offs_t offset, uint16_t data, uint16_t mem_mask)
-{
- COMBINE_DATA( &block[offset] );
-}
-
-uint16_t namcos10_state::nand_block_r(offs_t offset)
-{
- return block[ offset ];
-}
-
-void namcos10_state::namcos10_memn_map(address_map &map)
-{
- namcos10_map(map);
-
- map(0x1f300000, 0x1f300001).w(FUNC(namcos10_state::crypto_switch_w));
- map(0x1f380000, 0x1f380001).w(FUNC(namcos10_state::crypto_switch_w));
- map(0x1f400000, 0x1f400001).r(FUNC(namcos10_state::nand_status_r));
- map(0x1f410000, 0x1f410000).w(FUNC(namcos10_state::nand_address1_w));
- map(0x1f420000, 0x1f420000).w(FUNC(namcos10_state::nand_address2_w));
- map(0x1f430000, 0x1f430000).w(FUNC(namcos10_state::nand_address3_w));
- map(0x1f440000, 0x1f440000).w(FUNC(namcos10_state::nand_address4_w));
- map(0x1f450000, 0x1f450001).r(FUNC(namcos10_state::nand_data_r));
- map(0x1fb60000, 0x1fb60001).rw(FUNC(namcos10_state::nand_block_r), FUNC(namcos10_state::nand_block_w));
-}
-
-void namcos10_state::memn_driver_init( )
-{
- uint8_t *BIOS = (uint8_t *)memregion( "maincpu:rom" )->base();
- nand_base = (uint8_t *)memregion( "user2" )->base();
- decrypter = static_cast<ns10_decrypter_device*>(machine().root_device().subdevice("decrypter"));
-
- nand_copy( (uint32_t *)( BIOS + 0x0000000 ), 0x08000, 0x001c000 );
- nand_copy( (uint32_t *)( BIOS + 0x0020000 ), 0x24000, 0x03e0000 );
-}
-
-static void decrypt_bios( running_machine &machine, const char *regionName, int start, int end, int b15, int b14, int b13, int b12, int b11, int b10, int b9, int b8,
- int b7, int b6, int b5, int b4, int b3, int b2, int b1, int b0 )
-{
- memory_region *region = machine.root_device().memregion( regionName );
- uint16_t *BIOS = (uint16_t *)( region->base() + start );
- int len = (end - start) / 2;
-
- for( int i = 0; i < len; i++ )
- {
- BIOS[ i ] = bitswap<16>( BIOS[ i ] ^ 0xaaaa,
- b15, b14, b13, b12, b11, b10, b9, b8, b7, b6, b5, b4, b3, b2, b1, b0 );
- }
-}
-
-void namcos10_state::init_mrdrilr2()
-{
- int regSize = machine().root_device().memregion("maincpu:rom")->bytes();
-
- decrypt_bios(machine(), "maincpu:rom", 0, 0x62000, 0xc, 0xd, 0xf, 0xe, 0xb, 0xa, 0x9, 0x8, 0x7, 0x6, 0x4, 0x1, 0x2, 0x5, 0x0, 0x3);
- decrypt_bios(machine(), "maincpu:rom", 0x380000, regSize, 0xc, 0xd, 0xf, 0xe, 0xb, 0xa, 0x9, 0x8, 0x7, 0x6, 0x4, 0x1, 0x2, 0x5, 0x0, 0x3);
- decrypter = static_cast<ns10_decrypter_device*>(machine().root_device().subdevice("decrypter"));
-}
-
-void namcos10_state::init_gjspace()
-{
- int regSize = machine().root_device().memregion("user2")->bytes();
- decrypt_bios(machine(), "user2", 0x0008400, 0x0029400, 0x0, 0x2, 0xe, 0xd, 0xf, 0x6, 0xc, 0x7, 0x5, 0x1, 0x9, 0x8, 0xa, 0x3, 0x4, 0xb);
- decrypt_bios(machine(), "user2", 0x0210000, 0x104e800, 0x0, 0x2, 0xe, 0xd, 0xf, 0x6, 0xc, 0x7, 0x5, 0x1, 0x9, 0x8, 0xa, 0x3, 0x4, 0xb);
- decrypt_bios(machine(), "user2", 0x1077c00, regSize, 0x0, 0x2, 0xe, 0xd, 0xf, 0x6, 0xc, 0x7, 0x5, 0x1, 0x9, 0x8, 0xa, 0x3, 0x4, 0xb);
- memn_driver_init();
-}
-
-void namcos10_state::init_mrdrilrg()
-{
- int regSize = machine().root_device().memregion("user2")->bytes();
- decrypt_bios(machine(), "user2", 0x8400, regSize, 0x6, 0x4, 0x7, 0x5, 0x2, 0x1, 0x0, 0x3, 0xc, 0xd, 0xe, 0xf, 0x8, 0x9, 0xb, 0xa);
- memn_driver_init();
-}
-
-void namcos10_state::init_knpuzzle()
-{
- int regSize = machine().root_device().memregion("user2")->bytes();
- decrypt_bios(machine(), "user2", 0x0008400, 0x0029400, 0x6, 0x7, 0x4, 0x5, 0x2, 0x0, 0x3, 0x1, 0xc, 0xd, 0xe, 0xf, 0x9, 0xb, 0x8, 0xa);
- decrypt_bios(machine(), "user2", 0x047ac00, 0x1042200, 0x6, 0x7, 0x4, 0x5, 0x2, 0x0, 0x3, 0x1, 0xc, 0xd, 0xe, 0xf, 0x9, 0xb, 0x8, 0xa);
- decrypt_bios(machine(), "user2", 0x104a600, regSize , 0x6, 0x7, 0x4, 0x5, 0x2, 0x0, 0x3, 0x1, 0xc, 0xd, 0xe, 0xf, 0x9, 0xb, 0x8, 0xa);
- memn_driver_init();
-}
-
-void namcos10_state::init_startrgn()
-{
- int regSize = machine().root_device().memregion("user2")->bytes();
- decrypt_bios(machine(), "user2", 0x0008400, 0x0029400, 0x6, 0x5, 0x4, 0x7, 0x1, 0x3, 0x0, 0x2, 0xc, 0xd, 0xe, 0xf, 0x8, 0xb, 0xa, 0x9);
- decrypt_bios(machine(), "user2", 0x00b9a00, 0x105ae00, 0x6, 0x5, 0x4, 0x7, 0x1, 0x3, 0x0, 0x2, 0xc, 0xd, 0xe, 0xf, 0x8, 0xb, 0xa, 0x9);
- decrypt_bios(machine(), "user2", 0x1080000, regSize , 0x6, 0x7, 0x4, 0x5, 0x0, 0x1, 0x3, 0x2, 0xd, 0xc, 0xf, 0xe, 0x8, 0x9, 0xb, 0xa);
- memn_driver_init();
-}
-
-void namcos10_state::init_gamshara()
-{
- int regSize = machine().root_device().memregion("user2")->bytes();
- decrypt_bios(machine(), "user2", 0x0008400, 0x0029400, 0x5, 0x4, 0x7, 0x6, 0x0, 0x1, 0x3, 0x2, 0xd, 0xf, 0xc, 0xe, 0x8, 0x9, 0xa, 0xb);
- decrypt_bios(machine(), "user2", 0x014e200, 0x105ae00, 0x5, 0x4, 0x7, 0x6, 0x0, 0x1, 0x3, 0x2, 0xd, 0xf, 0xc, 0xe, 0x8, 0x9, 0xa, 0xb);
- decrypt_bios(machine(), "user2", 0x1080000, regSize , 0x5, 0x4, 0x7, 0x6, 0x0, 0x1, 0x3, 0x2, 0xd, 0xf, 0xc, 0xe, 0x8, 0x9, 0xa, 0xb);
- memn_driver_init();
-}
-
-void namcos10_state::init_gunbalna()
-{
- int regSize = machine().root_device().memregion("user2")->bytes();
- decrypt_bios(machine(), "user2", 0x8400, regSize, 0x5, 0x4, 0x7, 0x6, 0x0, 0x1, 0x3, 0x2, 0xd, 0xf, 0xc, 0xe, 0x9, 0x8, 0xa, 0xb);
- memn_driver_init();
-}
-
-void namcos10_state::init_chocovdr()
-{
- int regSize = machine().root_device().memregion("user2")->bytes();
- decrypt_bios(machine(), "user2", 0x0008400, 0x0029400, 0x5, 0x4, 0x6, 0x7, 0x1, 0x0, 0x2, 0x3, 0xc, 0xf, 0xe, 0xd, 0x8, 0xb, 0xa, 0x9);
- decrypt_bios(machine(), "user2", 0x01eae00, 0x105ae00, 0x5, 0x4, 0x6, 0x7, 0x1, 0x0, 0x2, 0x3, 0xc, 0xf, 0xe, 0xd, 0x8, 0xb, 0xa, 0x9);
- decrypt_bios(machine(), "user2", 0x1080000, regSize , 0x5, 0x4, 0x6, 0x7, 0x1, 0x0, 0x2, 0x3, 0xc, 0xf, 0xe, 0xd, 0x8, 0xb, 0xa, 0x9);
- memn_driver_init();
-}
-
-void namcos10_state::init_panikuru()
-{
- int regSize = machine().root_device().memregion("user2")->bytes();
- decrypt_bios(machine(), "user2", 0x8400, regSize, 0x6, 0x4, 0x7, 0x5, 0x0, 0x1, 0x2, 0x3, 0xc, 0xf, 0xe, 0xd, 0x9, 0x8, 0xb, 0xa);
- memn_driver_init();
-}
-
-void namcos10_state::init_nflclsfb()
-{
- int regSize = machine().root_device().memregion("user2")->bytes();
- decrypt_bios(machine(), "user2", 0x0008400, 0x0029400, 0x6, 0x5, 0x4, 0x7, 0x1, 0x3, 0x0, 0x2, 0xc, 0xd, 0xe, 0xf, 0x8, 0xb, 0xa, 0x9);
- decrypt_bios(machine(), "user2", 0x0214200, 0x105ae00, 0x6, 0x5, 0x4, 0x7, 0x1, 0x3, 0x0, 0x2, 0xc, 0xd, 0xe, 0xf, 0x8, 0xb, 0xa, 0x9);
- decrypt_bios(machine(), "user2", 0x1080000, regSize , 0x6, 0x5, 0x4, 0x7, 0x1, 0x3, 0x0, 0x2, 0xc, 0xd, 0xe, 0xf, 0x8, 0xb, 0xa, 0x9);
- memn_driver_init();
-}
-
-void namcos10_state::init_konotako()
-{
- int regSize = machine().root_device().memregion("user2")->bytes();
- decrypt_bios(machine(), "user2", 0x0008400, 0x0029400, 0x6, 0x7, 0x4, 0x5, 0x0, 0x1, 0x3, 0x2, 0xd, 0xc, 0xf, 0xe, 0x8, 0x9, 0xb, 0xa);
- decrypt_bios(machine(), "user2", 0x00b9a00, 0x105ae00, 0x6, 0x7, 0x4, 0x5, 0x0, 0x1, 0x3, 0x2, 0xd, 0xc, 0xf, 0xe, 0x8, 0x9, 0xb, 0xa);
- decrypt_bios(machine(), "user2", 0x1080000, regSize , 0x6, 0x7, 0x4, 0x5, 0x0, 0x1, 0x3, 0x2, 0xd, 0xc, 0xf, 0xe, 0x8, 0x9, 0xb, 0xa);
- memn_driver_init();
-}
-
-
-MACHINE_RESET_MEMBER(namcos10_state,namcos10)
-{
- i2c_dev_clock = i2c_dev_data = 1;
- i2c_host_clock = i2c_host_data = 1;
- i2c_prev_clock = i2c_prev_data = 1;
- i2cp_mode = I2CP_IDLE;
- i2c_byte = 0x00;
- i2c_bit = 0;
-}
-
-void namcos10_state::namcos10_base(machine_config &config)
-{
- /* basic machine hardware */
- CXD8606BQ(config, m_maincpu, XTAL(101'491'200));
- m_maincpu->set_disable_rom_berr(true);
- m_maincpu->subdevice<ram_device>("ram")->set_default_size("16M"); // ->set_default_size("4M"); 2 IS41LV16100s
- // The bios first configures the ROM window as 80000-big, then
- // switches to 400000. If berr is active, the first configuration
- // wipes all handlers after 1fc80000, which kills the system
- // afterwards
-
- MCFG_MACHINE_RESET_OVERRIDE(namcos10_state, namcos10)
-
- /* video hardware */
- CXD8561CQ(config, "gpu", XTAL(53'693'175), 0x200000, subdevice<psxcpu_device>("maincpu")).set_screen("screen"); // 2 54V25632s
-
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
-
- /* sound hardware */
- SPEAKER(config, "lspeaker").front_left();
- SPEAKER(config, "rspeaker").front_right();
-
- // CXD2938Q; SPU with CD-ROM controller - also seen in PSone, 101.4912MHz / 3?
-}
-
-void namcos10_state::namcos10_memm(machine_config &config)
-{
- namcos10_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos10_state::namcos10_memm_map);
-}
-
-void namcos10_state::namcos10_memn(machine_config &config)
-{
- namcos10_base(config);
- m_maincpu->set_addrmap(AS_PROGRAM, &namcos10_state::namcos10_memn_map);
-}
-
-void namcos10_state::namcos10_memn_exio(machine_config &config)
-{
- namcos10_memn(config);
- TMP95C061(config, m_exio_mcu, XTAL(22'118'400)).set_disable(); // not hooked up
-}
-
-void namcos10_state::namcos10_memp3(machine_config &config)
-{
- namcos10_memn(config);
- TMP95C061(config, m_memp3_mcu, XTAL(16'934'400)).set_disable(); // not hooked up
- // LC82310 16.9344MHz
-}
-
-void namcos10_state::ns10_mrdrilr2(machine_config &config)
-{
- namcos10_memm(config);
- /* decrypter device (CPLD in hardware?) */
- MRDRILR2_DECRYPTER(config, "decrypter", 0);
-}
-
-void namcos10_state::ns10_chocovdr(machine_config &config)
-{
- namcos10_memn(config);
- /* decrypter device (CPLD in hardware?) */
- CHOCOVDR_DECRYPTER(config, "decrypter", 0);
-}
-
-void namcos10_state::ns10_gamshara(machine_config &config)
-{
- namcos10_memn(config);
- /* decrypter device (CPLD in hardware?) */
- GAMSHARA_DECRYPTER(config, "decrypter", 0);
-}
-
-void namcos10_state::ns10_gjspace(machine_config &config)
-{
- namcos10_memn(config);
- /* decrypter device (CPLD in hardware?) */
- GJSPACE_DECRYPTER(config, "decrypter", 0);
-}
-
-void namcos10_state::ns10_knpuzzle(machine_config &config)
-{
- namcos10_memn(config);
- /* decrypter device (CPLD in hardware?) */
- KNPUZZLE_DECRYPTER(config, "decrypter", 0);
-}
-
-void namcos10_state::ns10_konotako(machine_config &config)
-{
- namcos10_memn(config);
- /* decrypter device (CPLD in hardware?) */
- KONOTAKO_DECRYPTER(config, "decrypter", 0);
-}
-
-void namcos10_state::ns10_nflclsfb(machine_config &config)
-{
- namcos10_memn(config);
- /* decrypter device (CPLD in hardware?) */
- NFLCLSFB_DECRYPTER(config, "decrypter", 0);
-}
-
-void namcos10_state::ns10_startrgn(machine_config &config)
-{
- namcos10_memn(config);
- /* decrypter device (CPLD in hardware?) */
- STARTRGN_DECRYPTER(config, "decrypter", 0);
-}
-
-static INPUT_PORTS_START( namcos10 )
- /* IN 0 */
- PORT_START("SYSTEM")
- PORT_SERVICE_NO_TOGGLE( 0x8000, IP_ACTIVE_HIGH )
- PORT_BIT( 0x7fff, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- /* IN 1 */
- PORT_START("P1")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_START1 )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_SERVICE1 )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON1 )
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON2 )
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON3 )
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON4 )
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON5 )
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON6 )
- PORT_BIT( 0x000f, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- /* IN 2 */
- PORT_START("P2")
- PORT_BIT( 0x8000, IP_ACTIVE_HIGH, IPT_START2 )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x8000, DEF_STR( On ) )
- PORT_BIT( 0x4000, IP_ACTIVE_HIGH, IPT_SERVICE2 )
- PORT_DIPSETTING( 0x0000, DEF_STR( Off ) )
- PORT_DIPSETTING( 0x4000, DEF_STR( On ) )
- PORT_BIT( 0x2000, IP_ACTIVE_HIGH, IPT_JOYSTICK_UP ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x1000, IP_ACTIVE_HIGH, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0800, IP_ACTIVE_HIGH, IPT_JOYSTICK_LEFT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0400, IP_ACTIVE_HIGH, IPT_JOYSTICK_RIGHT ) PORT_8WAY PORT_PLAYER(2)
- PORT_BIT( 0x0200, IP_ACTIVE_HIGH, IPT_BUTTON1 ) PORT_PLAYER(2)
- PORT_BIT( 0x0100, IP_ACTIVE_HIGH, IPT_BUTTON2 ) PORT_PLAYER(2)
- PORT_BIT( 0x0080, IP_ACTIVE_HIGH, IPT_BUTTON3 ) PORT_PLAYER(2)
- PORT_BIT( 0x0040, IP_ACTIVE_HIGH, IPT_BUTTON4 ) PORT_PLAYER(2)
- PORT_BIT( 0x0020, IP_ACTIVE_HIGH, IPT_BUTTON5 ) PORT_PLAYER(2)
- PORT_BIT( 0x0010, IP_ACTIVE_HIGH, IPT_BUTTON6 ) PORT_PLAYER(2)
- PORT_BIT( 0x000f, IP_ACTIVE_HIGH, IPT_UNUSED )
-
- /* IN 3 */
- PORT_START("COINS")
- PORT_BIT( 0x01, IP_ACTIVE_HIGH, IPT_COIN1 )
- PORT_BIT( 0x02, IP_ACTIVE_HIGH, IPT_COIN2 )
-INPUT_PORTS_END
-
-
-ROM_START( mrdrilr2 )
- ROM_REGION32_LE( 0x800000, "maincpu:rom", 0 ) /* main prg */
- ROM_LOAD( "dr21vera.1a", 0x000000, 0x800000, CRC(f93532a2) SHA1(8b72f2868978be1f0e0abd11425a3c8b2b0c4e99) )
-
- ROM_REGION( 0x4000000, "user2", 0 ) /* main prg */
- ROM_LOAD( "dr21ma1.1d", 0x0000000, 0x1000000, CRC(26dc6f55) SHA1(a9cedf547fa7a4d5850b9b3b867d46e577a035e0) )
- ROM_LOAD( "dr21ma2.2d", 0x1000000, 0x1000000, CRC(702556ff) SHA1(c95defd5fd6a9b406fc8d8f28ecfab732ef1ff42) )
-ROM_END
-
-ROM_START( mrdrlr2a )
- ROM_REGION32_LE( 0x800000, "maincpu:rom", 0 ) /* main prg */
- ROM_LOAD( "dr22vera.1a", 0x000000, 0x800000, CRC(f2633388) SHA1(42e56c9758ee833390003d4b41956f75f5a22760) )
-
- ROM_REGION( 0x4000000, "user2", 0 ) /* main prg */
- ROM_LOAD( "dr21ma1.1d", 0x0000000, 0x1000000, CRC(26dc6f55) SHA1(a9cedf547fa7a4d5850b9b3b867d46e577a035e0) )
- ROM_LOAD( "dr21ma2.2d", 0x1000000, 0x1000000, CRC(702556ff) SHA1(c95defd5fd6a9b406fc8d8f28ecfab732ef1ff42) )
-ROM_END
-
-ROM_START( gjspace )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x4200000, "user2", 0 ) /* main prg */
- ROM_LOAD( "10011a_0.bin", 0x0000000, 0x1080000, CRC(df862033) SHA1(4141357ed315adb4de636d7bf752354e953e8cbf) )
- ROM_LOAD( "10011a_1.bin", 0x1080000, 0x1080000, CRC(734c7ac0) SHA1(2f325236a4e4f2dba886682e9a7e8e243b5fbb3d) )
- ROM_LOAD( "10011a_2.bin", 0x2100000, 0x1080000, CRC(3bbbc0b7) SHA1(ad02ec2e5f401f0f5d40a413038649ebd25d5343) )
- ROM_LOAD( "10011a_3.bin", 0x3180000, 0x1080000, CRC(fb0de5ca) SHA1(50a462a52ff4a0bc112b9d89f2b2d032c60cf59c) )
-ROM_END
-
-
-ROM_START( g13jnc )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x6300000, "user2", 0 ) /* main prg */
- ROM_LOAD( "glt1_ver.a.0", 0x0000000, 0x1080000, CRC(e60f78d3) SHA1(5c876ac7366b5c46b5229a6b6f694ad222f36195) )
- ROM_LOAD( "glt1_ver.a.1", 0x1080000, 0x1080000, CRC(c3f31dd9) SHA1(05e6d39f33191979bcc00a585b64904a077000dc) )
- ROM_LOAD( "glt1_ver.a.2", 0x2100000, 0x1080000, CRC(e464e03a) SHA1(751f6bd753dacbb881fb47bc1b146ef59245bd10) )
- ROM_LOAD( "glt1_ver.a.3", 0x3180000, 0x1080000, CRC(f7486979) SHA1(a44c33ae7004e79fe66c6d2cba3d11671ce2582c) )
- ROM_LOAD( "glt1_ver.a.4", 0x4200000, 0x1080000, CRC(e39969b4) SHA1(3348839c0cc4a4bcaa7803ef22981420c527e1a4) )
- ROM_LOAD( "glt1_ver.a.5", 0x5280000, 0x1080000, CRC(a82800b4) SHA1(ce4cc479acdf7ac5a7237d07422ea3ee580d899a) )
-ROM_END
-
-ROM_START( mrdrilrg )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x3180000, "user2", 0 ) /* main prg */
- ROM_LOAD( "drg1a_0.bin", 0x0000000, 0x1080000, CRC(e0801878) SHA1(fbb771c1e76e0690f6dffed2287eb470b561ec20) )
- ROM_LOAD( "drg1a_1.bin", 0x1080000, 0x1080000, CRC(4d8cde73) SHA1(62a5fab8be8fd0a6bfeb101020d4cf58866a757c) )
- ROM_LOAD( "drg1a_2.bin", 0x2100000, 0x1080000, CRC(ccfabf7b) SHA1(0cbd91ce8abd6efca5d427b52279ce265f685aa9) )
-ROM_END
-
-ROM_START( mrdrilrga )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x3180000, "user2", 0 ) /* main prg */
- ROM_LOAD( "0.8e", 0x0000000, 0x1080000, CRC(def72bcd) SHA1(e243b7ef23b2b00612c185e01493cd01be51f154) )
- ROM_LOAD( "1.8d", 0x1080000, 0x1080000, CRC(c87b5e86) SHA1(b034210da30e1f2f7d04f77e00bf7724437e2024) )
- ROM_LOAD( "2.7e", 0x2100000, 0x1080000, CRC(e0a9339f) SHA1(4284e7233876cfaf8021440d78ccc8c70d00cc00) )
-ROM_END
-
-ROM_START( knpuzzle )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x3180000, "user2", 0 ) /* main prg */
- ROM_LOAD( "kpm1a_0.bin", 0x0000000, 0x1080000, CRC(b2947eb8) SHA1(fa941bf3598bb25d2c8f0a93154e32bf78a6507c) )
- ROM_LOAD( "kpm1a_1.bin", 0x1080000, 0x1080000, CRC(f3aa855a) SHA1(87b94e22db4bc4169324bbff93c4ea19c1d99b40) )
- ROM_LOAD( "kpm1a_2.bin", 0x2100000, 0x1080000, CRC(b297cc8d) SHA1(c3494e7a8a0b4e0c8c40b99121373effbfe848eb) )
-ROM_END
-
-ROM_START( startrgn )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x2100000, "user2", 0 ) /* main prg */
- ROM_LOAD( "stt1a_0.bin", 0x0000000, 0x1080000, CRC(1e090644) SHA1(a7a293e2bd9eea2eb64a492a47272d9d9ee2c724) )
- ROM_LOAD( "stt1a_1.bin", 0x1080000, 0x1080000, CRC(aa527694) SHA1(a25dcbeca58a1443070848b3487a24d51d41a34b) )
-ROM_END
-
-ROM_START( gamshara )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x2100000, "user2", 0 ) /* main prg */
- ROM_LOAD( "10021a_e.8e", 0x0000000, 0x1080000, CRC(684ab324) SHA1(95c2e0a04c4f33039535fc451c5559d239b8fbc6) )
- ROM_LOAD( "10021a.8d", 0x1080000, 0x1080000, CRC(73669ff7) SHA1(eb8bbf931f1f8a049208d081d040512a3ffa9c00) )
-ROM_END
-
-ROM_START( gamsharaj )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x2100000, "user2", 0 ) /* main prg */
- ROM_LOAD( "10021a.8e", 0x0000000, 0x1080000, CRC(6c0361fc) SHA1(7debf1f2e6bed31d59fb224a78a17a94fc573785) )
- ROM_LOAD( "10021a.8d", 0x1080000, 0x1080000, CRC(73669ff7) SHA1(eb8bbf931f1f8a049208d081d040512a3ffa9c00) )
-ROM_END
-
-ROM_START( ptblank3 )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x2100000, "user2", 0 ) /* main prg */
- // protection issues preventing the last NAND block to be dumped
- ROM_LOAD("gnn2a.8e", 0x0000000, 0x1080000, BAD_DUMP CRC(31b39221) SHA1(7fcb14aaa26c531928a6cd704e746d0e3ae3e031))
- ROM_LOAD( "gnn2a.8d", 0x1080000, 0x1080000, BAD_DUMP CRC(82d2cfb5) SHA1(4b5e713a55e74a7b32b1b9b5811892df2df86256) )
-ROM_END
-
-ROM_START( gunbalina )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x2100000, "user2", 0 ) /* main prg */
- // protection issues preventing the last NAND block to be dumped
- ROM_LOAD( "gnn1a.8e", 0x0000000, 0x1080000, BAD_DUMP CRC(981b03d4) SHA1(1c55458f1b2964afe2cf4e9d84548c0699808e9f) )
- ROM_LOAD( "gnn1a.8d", 0x1080000, 0x1080000, BAD_DUMP CRC(6cd343e0) SHA1(dcec44abae1504025895f42fe574549e5010f7d5) )
-ROM_END
-
-ROM_START( chocovdr )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x5280000, "user2", 0 ) /* main prg */
- ROM_LOAD( "0.8e", 0x0000000, 0x1080000, CRC(f36eebb5) SHA1(a0464186b247b28f37005ffd9e9b7370145f67ef) )
- ROM_LOAD( "1.8d", 0x1080000, 0x1080000, CRC(4aecd6fc) SHA1(31fe8f36e38020a92f15c44fd1a4b486636b40ce) )
- ROM_LOAD( "2.7e", 0x2100000, 0x1080000, CRC(ac212e5a) SHA1(f2d2e65a3249992730b8b90561b9bcf5eaaafb88) )
- ROM_LOAD( "3.7d", 0x3180000, 0x1080000, CRC(907d3d15) SHA1(20519d1f8bd9c6bc45b65e2d7444d588e922611d) )
- ROM_LOAD( "4.6e", 0x4200000, 0x1080000, CRC(1ed957dd) SHA1(bc8ce9f249fe496c130c6fe67b2260c4d0734ab9) )
-ROM_END
-
-ROM_START( panikuru )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x3180000, "user2", 0 ) /* main prg */
- ROM_LOAD( "0.8e", 0x0000000, 0x1080000, CRC(3aa66da4) SHA1(3f6ff164981e2c1825766c775442608fbf86d702) )
- ROM_LOAD( "1.8d", 0x1080000, 0x1080000, CRC(18e5135d) SHA1(a7b1533a1df71be5498718e301d1c9c548551fb4) )
- ROM_LOAD( "2.7e", 0x2100000, 0x1080000, CRC(cd3b25e0) SHA1(39dfebc59e71b8f1c28e718ee71032620f11440c) )
-ROM_END
-
-ROM_START( nflclsfb )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x4200000, "user2", 0 ) /* main prg */
- ROM_LOAD( "0.8e", 0x0000000, 0x1080000, CRC(b08d4270) SHA1(5f5dc1c2862292a9e597f6a21c0f9db2e5796ded) )
- ROM_LOAD( "1.8d", 0x1080000, 0x1080000, CRC(d3f519d8) SHA1(60d5f2fafd700e39245bed17e3cc6d608cc2c088) )
- ROM_LOAD( "2.7e", 0x2100000, 0x1080000, CRC(0c65fdc2) SHA1(fa5d41a7b10ae8f8d312b61cc6d34408123bda97) )
- ROM_LOAD( "3.7d", 0x3180000, 0x1080000, CRC(0a4e601d) SHA1(9c302a0b5aaf7046390982e62092b867c3a534a5) )
-ROM_END
-
-ROM_START( konotako )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x4200000, "user2", 0 ) /* main prg */
- ROM_LOAD( "0.8e", 0x0000000, 0x1080000, CRC(63d23a0c) SHA1(31b54119f20827ff13ecf0cd87803a5e27eaafe7) )
- ROM_LOAD( "1.8d", 0x1080000, 0x1080000, CRC(bdbed53c) SHA1(5773069c43642e6f334cee185a6fb6908eedcf4a) )
-ROM_END
-
-ROM_START( sekaikh )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x2100000, "user2", 0 ) /* main prg */
- ROM_LOAD( "0.8e", 0x0000000, 0x1080000, CRC(e32c36ac) SHA1(d762723b6ecf65c8cb7c85c25d9a1fbbcdcfd27a) )
- ROM_LOAD( "1.8d", 0x1080000, 0x1080000, CRC(7cb38ece) SHA1(e21fbc9ff09ca51e1857e32318b95107ae4b3f0b) )
-
- ROM_REGION( 0x8000, "mgexio", 0 )
- ROM_LOAD( "m48z35y.ic11", 0x0000, 0x8000, CRC(e0e52ffc) SHA1(557490e2f286773a945851f44ed0214de731cd75) )
-ROM_END
-
-ROM_START( taiko6 )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x3180000, "user2", 0 ) /* main prg */
- ROM_LOAD( "k9f2808u0c.8e", 0x0000000, 0x1080000, CRC(a87352c9) SHA1(1816fabecfaa140da2cd46334701c3e2fb93258e) )
- ROM_LOAD( "k9f2808u0c.8d", 0x1080000, 0x1080000, CRC(e89aa7a3) SHA1(c34d693f4715ce930dbd105eda1ffc8379991c22) )
- ROM_LOAD( "k9f2808u0c.7e", 0x2100000, 0x1080000, CRC(098920ef) SHA1(06a689d8abb8454ed62dda92d93a8f5d756a6166) )
-
- DISK_REGION("cd")
- DISK_IMAGE_READONLY( "tk-6", 0, SHA1(ca8b8dfccc2022094c428b5e0b6391a77ec351f4) )
-ROM_END
-
-ROM_START( unks10md )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x2100000, "user2", 0 ) /* main prg */
- ROM_LOAD( "k9f2808u0c.8e", 0x0000000, 0x1080000, CRC(b8ce45c6) SHA1(cfc85e796e32f5f3cc16e12ce902f0ae088eea31) )
- ROM_LOAD( "k9f2808u0c.8d", 0x1080000, 0x1080000, CRC(49a2a732) SHA1(1a473177827a6d0e58c289d9af064665b941519b) )
-ROM_END
-
-ROM_START( kd2001 )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x2100000, "user2", 0 ) /* main prg */
- ROM_LOAD( "0.8e", 0x0000000, 0x1080000, NO_DUMP ) // broken flash ROM, couldn't be dumped
- ROM_LOAD( "1.8d", 0x1080000, 0x1080000, CRC(2b0d0e8c) SHA1(d679e7044e1f93bb7bd449e6d8fcb7737d154025) )
-
- ROM_REGION( 0x20000, "pdrivecpu", 0 )
- ROM_LOAD( "kd11-dr0-ic10.bin", 0x00000, 0x20000, CRC(59649293) SHA1(71c3a0e73d077398e7f3d95acedc47814e99fbc6) )
-ROM_END
-
-ROM_START( keroro )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x4200000, "user2", 0 ) /* main prg */
- ROM_LOAD( "krg1.8e", 0x0000000, 0x2100000, CRC(12e78c66) SHA1(83573f68f27ace345a3be16f29f874f14e593233) ) // K9F5608U0D, double sized wrt to the other games and PCB silkscreen
- ROM_LOAD( "krg1.8d", 0x2100000, 0x2100000, CRC(879a87b7) SHA1(fcef8eb9423b4825bf27fbfe8cae6d4018cb534f) ) // K9F5608U0D, double sized wrt to the other games and PCB silkscreen
-ROM_END
-
-ROM_START( gegemdb )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x4200000, "user2", 0 ) /* main prg */
- ROM_LOAD( "gym1.8e", 0x0000000, 0x2100000, CRC(ea740351) SHA1(4dc7ce256a2d60be512d04a992b2103602bcfaa9) ) // K9F5608U0D, double sized wrt to the other games and PCB silkscreen
- ROM_LOAD( "gym1.8d", 0x2100000, 0x2100000, CRC(0145a8c1) SHA1(a32dd944d022df14450bbcb01b4d1712683c0680) ) // K9F5608U0D, double sized wrt to the other games and PCB silkscreen
-
- ROM_REGION( 0x8000, "nvram", 0 )
- ROM_LOAD( "nvram.bin", 0x0000, 0x8000, CRC(c0c87c71) SHA1(263f7f3df772644bcf973413d3fac9ae305fda6c) )
-ROM_END
-
-ROM_START( pacmball )
- ROM_REGION32_LE( 0x400000, "maincpu:rom", 0 ) /* bios */
- ROM_FILL( 0x0000000, 0x400000, 0x55 )
-
- ROM_REGION16_LE( 0x2100000, "user2", 0 ) /* main prg */
- ROM_LOAD( "k9f2808u0c.8e", 0x0000000, 0x1080000, CRC(7b6f814d) SHA1(728167866d9350150b5fd9ebcf8fe7280efedb91) )
- ROM_LOAD( "k9f2808u0c.8d", 0x1080000, 0x1080000, CRC(f79d7199) SHA1(4ef9b758ee778e12f7fef717e063597299fb8219) )
-ROM_END
-
-GAME( 2000, mrdrilr2, 0, ns10_mrdrilr2, namcos10, namcos10_state, init_mrdrilr2, ROT0, "Namco", "Mr. Driller 2 (Japan, DR21 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // PORT_4WAY joysticks
-GAME( 2000, mrdrlr2a, mrdrilr2, ns10_mrdrilr2, namcos10, namcos10_state, init_mrdrilr2, ROT0, "Namco", "Mr. Driller 2 (World, DR22 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // PORT_4WAY joysticks
-GAME( 2000, ptblank3, 0, namcos10_memn_exio, namcos10, namcos10_state, init_gunbalna, ROT0, "Namco", "Point Blank 3 (World, GNN2 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // needs to hookup gun IO
-GAME( 2000, gunbalina, ptblank3, namcos10_memn_exio, namcos10, namcos10_state, init_gunbalna, ROT0, "Namco", "Gunbalina (Japan, GNN1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // ""
-GAME( 2001, gjspace, 0, ns10_gjspace, namcos10, namcos10_state, init_gjspace, ROT0, "Namco / Metro", "Gekitoride-Jong Space (10011 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 2001, g13jnc, 0, namcos10_memp3, namcos10, namcos10_state, empty_init, ROT0, "Eighting / Raizing / Namco", "Golgo 13: Juusei no Chinkonka (Japan, GLT1 VER.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 2001, mrdrilrg, 0, namcos10_memn, namcos10, namcos10_state, init_mrdrilrg, ROT0, "Namco", "Mr. Driller G (Japan, DRG1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // PORT_4WAY joysticks
-GAME( 2001, mrdrilrga, mrdrilrg, namcos10_memn, namcos10, namcos10_state, init_mrdrilrg, ROT0, "Namco", "Mr. Driller G ALT (Japan, DRG1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // PORT_4WAY joysticks
-GAME( 2001, knpuzzle, 0, ns10_knpuzzle, namcos10, namcos10_state, init_knpuzzle, ROT0, "Namco", "Kotoba no Puzzle Mojipittan (Japan, KPM1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 2001, kd2001, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Knock Down 2001 (Japan, KD11 Ver. B)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
-GAME( 2002, chocovdr, 0, ns10_chocovdr, namcos10, namcos10_state, init_chocovdr, ROT0, "Namco", "Uchuu Daisakusen: Chocovader Contactee (Japan, CVC1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 2002, startrgn, 0, ns10_startrgn, namcos10, namcos10_state, init_startrgn, ROT0, "Namco", "Star Trigon (Japan, STT1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
-GAME( 2002, panikuru, 0, namcos10_memn, namcos10, namcos10_state, init_panikuru, ROT0, "Namco", "Panicuru Panekuru (Japan, PPA1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 2002, gamshara, 0, ns10_gamshara, namcos10, namcos10_state, init_gamshara, ROT0, "Mitchell", "Gamshara (World, 10021 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND ) // Ver. 20020912A ETC
-GAME( 2002, gamsharaj, gamshara, ns10_gamshara, namcos10, namcos10_state, init_gamshara, ROT0, "Mitchell", "Gamshara (Japan, 10021 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 2003, nflclsfb, 0, ns10_nflclsfb, namcos10, namcos10_state, init_nflclsfb, ROT0, "Namco", "NFL Classic Football (US, NCF3 Ver.A.)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 2003, pacmball, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Pacman BALL (PMB2 Ver.A.)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND )
-GAME( 2003, konotako, 0, ns10_konotako, namcos10, namcos10_state, init_konotako, ROT0, "Mitchell", "Kono Tako (10021 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
-GAME( 2004, sekaikh, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Sekai Kaseki Hakken (Japan, SKH1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
-GAME( 2004, taiko6, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Taiko no Tatsujin 6 (Japan, TK61 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)
-GAME( 2006, keroro, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Keroro Gunso Chikyu Shinryaku Shirei Dearimasu! (KRG1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // ケロロ軍曹 地球侵略指令…であります!
-GAME( 2007, gegemdb, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "Gegege no Kitaro Yokai Yokocho Matsuri De Batoru Ja (GYM1 Ver.A)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND) // ゲゲゲの鬼太郎 妖怪横丁まつりでバトルじゃ
-GAME( 200?, unks10md, 0, namcos10_memn, namcos10, namcos10_state, empty_init, ROT0, "Namco", "unknown Namco System 10 medal game (MTL1 SPR0B)", MACHINE_NOT_WORKING | MACHINE_NO_SOUND)