summaryrefslogtreecommitdiffstatshomepage
path: root/src/mame/drivers/twinkle.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/mame/drivers/twinkle.cpp')
-rw-r--r--src/mame/drivers/twinkle.cpp1471
1 files changed, 0 insertions, 1471 deletions
diff --git a/src/mame/drivers/twinkle.cpp b/src/mame/drivers/twinkle.cpp
deleted file mode 100644
index 41e1d251004..00000000000
--- a/src/mame/drivers/twinkle.cpp
+++ /dev/null
@@ -1,1471 +0,0 @@
-// license:BSD-3-Clause
-// copyright-holders:smf, R. Belmont
-/*
-
-Twinkle System
-
-driver by smf and R. Belmont
-
-TODO:
-
-dvd check for bmiidx, bmiidxa, bmiidxc & bmiidxca
- - 1st style (all variants, including club kit) connected over the mini-din8 (CN7) and dvd check requires RTS->CTS
- - substream and above switched to standard serial connection (CN5)
-The first 128k of RF5C400 bank 0 is uploaded by the 68000, the rest is unused. It may be using 16J & 18J
-emulate dvd player and video mixing
-16seg led font
-
-
-Konami Twinkle Hardware Overview
-Konami 1999-2002
-
-The following games are known to exist on this hardware (there may be more)
- Video CD Security
-Game Title Year Program CD 6/7/8 use DVD Dongle HDD label
------------------------------------------------------------------------------------------------------
-beatmania IIDX (English) 1999 GQ863 A01 GQ863 A04 *863 A02 863 HDD A01
-beatmania IIDX (Japanese) 1999 GQ863-JA B01 GQ863 A04 *863 A02 863 HDD A01
-beatmania IIDX + DDR Club Kit 1999 896 JA ABM GQ863 A04 *863 A02 863 HDD A01
- + 896 JA A01
-beatmania IIDX + DDR Club Kit(newer) 1999 896 JA BBM GQ863 A04 *863 A02 863 HDD A01
- + 896 JA A01
-beatmania IIDX Substream 1999 GC983 A01 GC983 A04 *983 A02 983 HDD A01
-beatmania IIDX Substream (Asia) 1999 GC983-AA A01 GC983 A04 *983A A02 983 HDD A01
-beatmania IIDX Club Version 2 1999 GE984 A01(BM) GC983 A04 *984 A02 983 HDD A01
- + GE984 A01(DDR)
-beatmania IIDX 2nd Style 1999 GC985 A01 GC985 A04 *985 985 HDD A01
-beatmania IIDX 3rd Style 2000 GC992-JA A01 GC992-JA A04 *992 992 HDD A01
-beatmania IIDX 3rd Style(newer) 2000 GC992-JA B01 GC992-JA A04 *992 992 HDD A01
-beatmania IIDX 3rd Style(newest) 2000 GC992-JA C01 GC992-JA A04 *992 992 HDD A01
-beatmania IIDX 4th Style 2000 A03 JA A01 A03 JA A02 A03 A03 JA A03
-beatmania IIDX 5th Style 2001 A17 JA A01 A17 JA A02 A17 A17 JA A03
-beatmania IIDX 6th Style 2001 B4U JA A01 B4U JA A02 *B4U B4U JA A03
-beatmania IIDX 6th Style(newer) 2001 B4U JA B01 B4U JA A02 *B4U B4U JA A03
-beatmania IIDX 7th Style 2002 B44 JA A01 B44 JA A02 *B44 B44 JA A03
-beatmania IIDX 7th Style(newer) 2002 B44 JA B01 B44 JA A02 *B44 B44 JA A03
-beatmania IIDX 8th Style 2002 C44 JA A01 C44 JA A02 *C44 C44 JA A03
-
-* = Not dumped.
-? = Code unknown.
-
-Where there are multiple revisions of the program cd, it has been assumed that the video and hdd are the same.
-
-The Konami Twinkle hardware basically consists of the following parts....
-3 PCBs sandwiched together in a metal box
-SCSI CDROM drive (for main program CD)
-External DVD player (plays VCD)
-CD disc (for main program)
-Security dongle
-IDE HDD (for audio)
-VCD disc (for video)
-
-The top board appears to be the main CPU/graphics board.
-The middle board appears to be for the video output/overlay.
-The bottom board appears to be for sound.
-
-
-PCB Layouts
------------
-
-(Top)
-
-TWINKLE/MAIN
-GQ751 PWB(A2)0000039085
-|-----------------------------------------------------------------------------|
-|CN11 CN1 CN8 CN7 CN5 |
-|PQ30RV21 32MHz |
-| 53CF96-2.13M 24MHz TD62083 ADM238LJR |
-|SW SMC ADM238LJR |
-| LTC1232.10P M66011FP FDC37C665GT.12G |
-| MACH111.11C DSW(8)|
-| |
-| RTC-65271.9B |
-| |----------| |
-| | | 863A03.7B |
-| |SONY | D481850GF-A12.8E |
-| KM48V514.8L |CXD8561Q | |
-| |@8J | |
-| KM48V514.7L |----------| D481850GF-A12.6E |
-| 67.737MHz |
-| KM48V514.6L |
-| 53.693MHz|----------| |
-| KM48V514.5L | | |
-| |SONY | KM416V256BT-7.4E LED|
-| KM48V514.4L |CXD8530CQ | LED|
-| |@4J | LED|
-|78L05 KM48V514.3L |----------| LED|
-| |-------| TD62083 LED|
-| MC44200 KM48V514.2L |SONY | TD62083 LED|
-| |CXD2925| LED|
-| KM48V514.1L |-------| LED|
-| CN12 CNx @3F CN9 LED|
-|-----------------------------------------------------------------------------|
-Notes:
- CN1 - 50 pin SCSI connector for CDROM drive
- CN5 - 9 pin DSUB RS-232 connector
- CN7 - Panel/controls connector
- CN8 - RJ45 network connector
- CN9 - 40 pin flat cable I/O connector
- CNx - Security card connector. The security cart contains only
- one IC, a ST 2402W 2kbit serial I2C bus EEPROM (TSSOP8)
- It appears only the first 12 bytes are actually used in this chip. The earlier games
- (possibly from BMIIDX 2nd Style and before) use a similar IC but it is not directly
- readable like the 2402W. The chip is covered with epoxy so the actual type is unknown.
- CN11 - DC power input connector
- CN12 - 15 pin DSUB connector (computer-generated video graphics output)
- SW - Reset or test switch
- MACH111 - AMD MACH111 high-performance electrically erasable CMOS programmable logic device, stamped '38471'
- 53CF96 - Symbios Logic 53CF96 SCSI chip
- PQ30RV21 - Sharp PQ30RV21 voltage regulator
- TD62083 - Toshiba TD62083 8ch darlington sink driver
- ADM238LJR - Analog Devices ADM238LJR 5V CMOS RS-232 driver/receiver
- LTC1232 - Linear Technology Corporation LTC1232 microprocessor supervisory circuit (DIP8)
- M66011FP - Renesas M66011FP serial bus controller
- FDC37C665GT- SMC FDC37C665/666GT high-performance multi-mode parallel port super I/O floppy disk controller
- RTC-65271 - Epson Toyocom RTC-65271 real-time clock
- D481850GF - NEC D481850GF-A12 128k x 32Bit x 2 Banks SGRAM (QFP100)
- CXD2925Q - Sony CXD2925Q SPU (QFP100)
- CXD8561Q - Sony CXD8561Q GPU (QFP208)
- CXD8530CQ - Sony CXD8530CQ R3000-based CPU (QFP208)
- MC44200FT - Motorola MC44200FT Triple 8-bit Video DAC (QFP44)
- KM48V514 - Samsung Electronics KM48V514BJ-6 512kx8 EDO DRAM (SOJ28)
- KM416V256 - Samsung Electronics KM416V256BT-7 256kx16 DRAM (TSOP44/40)
- 863A03.7B - 27C040 EPROM (DIP32)
-
-
-(Middle)
-
-TWINKLE/SUB2
-GQ860 PWB(A1)0000053591
-|-----------------------------------------------------------------------------|
-| CN1 CN11 RCA CN7 RCA |
-| |
-| MC141685 MC141685 AD817 |--------| AD817 |
-| AD724JR |Bt812KPF| |
-| 14.3182MHz |VIDEO | |
-| |DECODER | |
-| |--------| |
-| 26.8465MHz|
-| |
-| D42280GU-30.11B |
-| D42280GU-30.11A |
-| D42280GU-30.9B |
-| D42280GU-30.9A |
-| M5118165B-60J.9G D42280GU-30.7B |
-| D42280GU-30.7A |
-| |
-| M5118165B-60J.7G |
-| |
-| |
-| |
-| |
-| |
-| XC9572.5D |
-| XC9572.5B XC9572.5A|
-| |
-| XC9572.2F XC9536.3A|
-| XC9436.2G XC9536.2E |
-|-----------------------------------------------------------------------------|
-Notes:
- CN1 - DC power input connector
- CN7 - 5 pin plug for connection and control of external DVD player for background video
- CN11 - 15 pin DSUB connector
- RCA - Yellow RCA connectors for video (input and/or output?) from external DVD player
- MC141685 - Motorola MC141685 low cost 3CH D/A converter
- AD817 - Analog Devices 18V high speed low power wide supply range amplifier
- AD724JR - Analog Devices 6V 800mW 250MHz RGB to NTSC/PAL encoder
- Bt812KPF - Conexant Systems Inc. Bt812KPF NTSC/PAL to RGB/YCrCb decoder / video codec (QFP160)
- D42280GU - NEC uPD42280 high-speed field buffer with 256kx8 FIFO memory (SOP28)
- M5118165B- Oki Semiconductor M5118165B-60J 1M x 16 EDO DRAM
- XC9572 - Xilinx XC9572 in-system-programmable CPLD (PLCC44)
- XC9536 - Xilinx XC9536 in-system-programmable CPLD (PLCC44)
-
-
-(Bottom)
-
-TWINKLE/SPU
-GQ863 PWB(A2)0000057606
-|-----------------------------------------------------------------------------|
-| CN5 7805 CN7 CN1 GM76C8128CLLFW70.18J |
-| GM76C8128CLLFW70.16J DSW(8)|
-| SM5875 SM5875 |-------| |
-|SW |RICOH | |
-| |RF5C400| HY5117404BJ-60.15J |
-| |-------| |-------| HY5117404BJ-60.15F |
-| |M65851 | @16L HY5117404BJ-60.15C |
-| |@14R | HY5117404BJ-60.14J |
-| |-------| 33.8688MHz HY5117404BJ-60.14F |
-| HY5117404BJ-60.14C |
-| HY5117404BJ-60.13J |
-| HY5117404BJ-60.13F |
-| HY5117404BJ-60.13C |
-| CY7C131.10M HY5117404BJ-60.12J |
-| HY5117404BJ-60.12F |
-| HY5117404BJ-60.12C |
-| |
-| |
-| LED|
-| LED|
-| XC9572.6L LED|
-| LED|
-| LTC1232.5W XC9536.4N XC9536.4K LED|
-| 32MHz LED|
-|GM76C8128CLLFW70.4Y 68000-16.3S LED|
-|GM76C8128CLLFW70.4W LED|
-|863A05.2X CN4 |
-|-----------------------------------------------------------------------------|
-Notes:
- CN1 - RCA left/right audio output
- CN4 - 40 pin flat cable connector for HDD data cable
- CN5 - DC power input connector
- CN7 - RCA left/right audio output
- SM5875 - Nippon Precision Circuits SM5875 2-channel D/A converter (SSOP24)
- RF5C400 - Ricoh RF5C400 PCM 32Ch, 44.1 kHz Stereo, 3D Effect Spatializer, clock input 16.9344MHz [33.8688/2]
- M65851 - Mitsubishi M65851 single chip karaoke sound processor IC (QFP80)
- HY5117404- Hyundai Semiconductor HY5117404BJ-60 4M x 4-Bit CMOS EDO DRAM
- CY7C131 - Cypress Semiconductor CY7C131 1kx8 dual-port static RAM
- XC9572 - Xilinx XC9572 in-system-programmable CPLD (PLCC44)
- XC9536 - Xilinx XC9536 in-system-programmable CPLD (PLCC44)
- LTC1232 - Linear Technology Corporation LTC1232 microprocessor supervisory circuit (DIP8)
- 68000 - Clock input 16.000MHz [32/2]
- GM76C8128- LG GM76C8128CLLFW70 128kx8 low power CMOS static RAM
- 863A05.2X- 27C4096 EPROM (DIP40)
-
-
-*/
-
-#include "emu.h"
-#include "cpu/psx/psx.h"
-#include "cpu/m68000/m68000.h"
-#include "video/psx.h"
-#include "bus/ata/ataintf.h"
-#include "bus/scsi/scsi.h"
-#include "bus/scsi/scsicd.h"
-#include "bus/rs232/xvd701.h"
-#include "machine/am53cf96.h"
-#include "machine/fdc37c665gt.h"
-#include "machine/i2cmem.h"
-#include "machine/mb8421.h"
-#include "machine/ram.h"
-#include "machine/rtc65271.h"
-#include "machine/watchdog.h"
-#include "machine/x76f041.h"
-#include "sound/spu.h"
-#include "sound/cdda.h"
-#include "sound/rf5c400.h"
-#include "screen.h"
-#include "speaker.h"
-
-#include "bmiidx.lh"
-
-class twinkle_state : public driver_device
-{
-public:
- twinkle_state(const machine_config &mconfig, device_type type, const char *tag) :
- driver_device(mconfig, type, tag),
- m_maincpu(*this, "maincpu"),
- m_audiocpu(*this, "audiocpu"),
- m_am53cf96(*this, "am53cf96"),
- m_ata(*this, "ata"),
- m_dpram(*this, "dpram"),
- m_waveram(*this, "rfsnd"),
- m_led_displays(*this, "led%u", 0U),
- m_spotlights(*this, "spotlight%u", 0U),
- m_main_leds(*this, "main_led%u", 0U),
- m_key_leds(*this, "key%u-%u", 1U, 1U),
- m_spu_leds(*this, "spu_led%u", 0U),
- m_spu_ata_dma(0),
- m_spu_ata_dmarq(0),
- m_wave_bank(0)
- {
- }
-
- void twinklex(machine_config &config);
- void twinklei(machine_config &config);
- void twinkle(machine_config &config);
-
-private:
- virtual void machine_start() override;
-
- DECLARE_WRITE8_MEMBER(twinkle_io_w);
- DECLARE_READ8_MEMBER(twinkle_io_r);
- DECLARE_WRITE16_MEMBER(twinkle_output_w);
- DECLARE_WRITE16_MEMBER(led_w);
- DECLARE_WRITE16_MEMBER(key_led_w);
- DECLARE_WRITE16_MEMBER(serial_w);
- DECLARE_WRITE16_MEMBER(twinkle_spu_ctrl_w);
- DECLARE_WRITE16_MEMBER(spu_ata_dma_low_w);
- DECLARE_WRITE16_MEMBER(spu_ata_dma_high_w);
- DECLARE_READ16_MEMBER(twinkle_waveram_r);
- DECLARE_WRITE16_MEMBER(twinkle_waveram_w);
- DECLARE_WRITE16_MEMBER(spu_led_w);
- DECLARE_WRITE16_MEMBER(spu_wavebank_w);
- DECLARE_READ16_MEMBER(unk_68k_r);
- DECLARE_WRITE_LINE_MEMBER(spu_ata_irq);
- DECLARE_WRITE_LINE_MEMBER(spu_ata_dmarq);
- void scsi_dma_read( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size );
- void scsi_dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size );
-
- void main_map(address_map &map);
- void rf5c400_map(address_map &map);
- void sound_map(address_map &map);
-
- required_device<cpu_device> m_maincpu;
- required_device<cpu_device> m_audiocpu;
- required_device<am53cf96_device> m_am53cf96;
- required_device<ata_interface_device> m_ata;
- required_device<cy7c131_device> m_dpram;
- required_shared_ptr<uint16_t> m_waveram;
-
- output_finder<9> m_led_displays;
- output_finder<8> m_spotlights;
- output_finder<9> m_main_leds;
- output_finder<2, 7> m_key_leds;
- output_finder<8> m_spu_leds;
-
- uint16_t m_spu_ctrl; // SPU board control register
- uint32_t m_spu_ata_dma;
- int m_spu_ata_dmarq;
- uint32_t m_wave_bank;
-
- int m_io_offset;
- int m_output_last[ 0x100 ];
- uint8_t m_sector_buffer[ 4096 ];
-
- int m_serial_shift;
- int m_serial_bits;
- int m_serial_cs;
- int m_serial_clock;
-
- int m_output_shift;
- int m_output_bits;
- int m_output_cs;
- int m_output_clock;
-
- static void cdrom_config(device_t *device);
-};
-
-#define LED_A1 0x0001
-#define LED_A2 0x0002
-#define LED_B 0x0004
-#define LED_C 0x0008
-#define LED_D1 0x0010
-#define LED_D2 0x0020
-#define LED_E 0x0040
-#define LED_F 0x0080
-#define LED_G1 0x0100
-#define LED_G2 0x0200
-#define LED_H 0x2000
-#define LED_I 0x0400
-#define LED_J 0x4000
-#define LED_K 0x8000
-#define LED_L 0x0800
-#define LED_M 0x1000
-
-// A1 A2
-// F H I J B
-// G1 G2
-// E M L K C
-// D2 D1
-
-
-static const uint16_t asciicharset[]=
-{
-// 0
- 0, // (default on boot)
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
-// 0x10
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
- 0,
-// 0x20
- 0, // space
- LED_D2 | LED_A2 | LED_I | LED_J, // !
- LED_I | LED_B, // "
- 0, // #
- 0, // $
- 0, // %
- LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_H | LED_J | LED_M | LED_K | LED_C, // &
- 0, // '
- LED_J | LED_K, // (
- LED_H | LED_M, // )
- LED_G1 | LED_G2 | LED_H | LED_I | LED_J | LED_K | LED_L | LED_M, // *
- 0, // +
- 0, // ,
- LED_G1 | LED_G2, // -
- 0, // .
- LED_J | LED_M, // /
-// 0x30
- LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_J | LED_M, // 0
- LED_B | LED_C, // 1
- LED_A1 | LED_A2 | LED_B | LED_D1 | LED_D2 | LED_E | LED_G1 | LED_G2, // 2
- LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_G1 | LED_G2, // 3
- LED_B | LED_C | LED_F | LED_G1 | LED_G2 , // 4
- LED_A1 | LED_A2 | LED_C | LED_D1 | LED_D2 | LED_F | LED_G1 | LED_G2, // 5
- LED_A1 | LED_A2 | LED_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_G1 | LED_G2, // 6
- LED_A1 | LED_A2 | LED_B | LED_C | LED_F, // 7
- LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_G1 | LED_G2, // 8
- LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_F | LED_G1 | LED_G2, // 9
- 0, // :
- 0, // ;
- 0, // <
- 0, // =
- 0, // >
- LED_A1 | LED_A2 | LED_J | LED_D2, // ?
-// 0x40
- 0, // @
- LED_A1 | LED_A2 | LED_B | LED_C | LED_E | LED_F | LED_G1 | LED_G2, // A
- LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_E | LED_F | LED_G1 | LED_J | LED_K, // B
- LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_E | LED_F, // C
- LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_G1 | LED_G2, // D
- LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_E | LED_F | LED_G1 | LED_G2, // E
- LED_A1 | LED_A2 | LED_E | LED_F | LED_G1 | LED_G2, // F
- LED_A1 | LED_A2 | LED_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_G2, // G
- LED_B | LED_C | LED_E | LED_F | LED_G1 | LED_G2, // H
- LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_I | LED_L, // I
- LED_A1 | LED_A2 | LED_I | LED_L | LED_D2, // J
- LED_E | LED_F | LED_G1 | LED_J | LED_K, // K
- LED_D1 | LED_D2 | LED_E | LED_F, // L
- LED_B | LED_C | LED_E | LED_F | LED_H | LED_J, // M
- LED_B | LED_C | LED_E | LED_F | LED_H | LED_K, // N
- LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F, // O
-// 0x50
- LED_A1 | LED_A2 | LED_B | LED_E | LED_F | LED_G1 | LED_G2, // P
- LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_K, // Q
- LED_A1 | LED_A2 | LED_B | LED_E | LED_F | LED_K | LED_G1 | LED_G2, // R
- LED_A1 | LED_A2 | LED_C | LED_D1 | LED_D2 | LED_F | LED_G1 | LED_G2, // S
- LED_A1 | LED_A2 | LED_I | LED_L, // T
- LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F, // U
- LED_E | LED_F | LED_M | LED_J, // V
- LED_B | LED_C | LED_E | LED_F | LED_M | LED_K, // W
- LED_H | LED_J | LED_K | LED_M, // X
- LED_H | LED_J | LED_L, // Y
- LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_J | LED_M, // Z
- 0, // [
- 0, // "\"
- 0, // ]
- 0, // ^
- 0, // _
-// 0x60
- 0, // `
- 0, // a
- 0, // b
- 0, // c
- 0, // d
- 0, // e
- 0, // f
- LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_G1 | LED_G2 | LED_H | LED_I | LED_J | LED_K | LED_L | LED_M, // g (16 seg led test)
- 0, // h
- 0, // i
- 0, // j
- 0, // k
- 0, // l
- LED_D2, // m (".")
- 0, // n
- 0, // o
-// 0x70
- 0, // p
- LED_J, // q ("'")
- 0, // r
- 0, // s
- 0, // t
- LED_M, // u (",")
- 0, // v
- 0, // w
- 0, // x
- 0, // y
- 0, // z
- 0, // {
- 0, // |
- 0, // }
- 0, // ~
- 0, //
-};
-
-void twinkle_state::machine_start()
-{
- m_led_displays.resolve();
- m_spotlights.resolve();
- m_main_leds.resolve();
- m_key_leds.resolve();
- m_spu_leds.resolve();
-
- save_item(NAME(m_spu_ctrl));
- save_item(NAME(m_spu_ata_dma));
- save_item(NAME(m_spu_ata_dmarq));
- save_item(NAME(m_wave_bank));
-
- save_item(NAME(m_io_offset));
- save_item(NAME(m_output_last));
- save_item(NAME(m_sector_buffer));
-
- save_item(NAME(m_serial_shift));
- save_item(NAME(m_serial_bits));
- save_item(NAME(m_serial_cs));
- save_item(NAME(m_serial_clock));
-
- save_item(NAME(m_output_shift));
- save_item(NAME(m_output_bits));
- save_item(NAME(m_output_cs));
- save_item(NAME(m_output_clock));
-}
-
-WRITE8_MEMBER(twinkle_state::twinkle_io_w)
-{
- switch( offset )
- {
- case 0:
- if( m_output_last[ m_io_offset ] != data )
- {
- m_output_last[ m_io_offset ] = data;
-
- switch( m_io_offset )
- {
- /* ? */
- case 0x07:
- case 0x0f:
- case 0x17:
- case 0x1f:
- case 0x27:
- case 0x2f:
- if (data != 0xff)
- {
- osd_printf_warning("unknown io %02x = %02x\n", m_io_offset, data);
- }
- break;
-
- case 0x37:
- output().set_value("1p", (~data >> 0) & 1);
- output().set_value("2p", (~data >> 1) & 1);
- output().set_value("vefx", (~data >> 2) & 1);
- output().set_value("effect", (~data >> 3) & 1);
- output().set_value("credit", (~data >> 4) & 1);
-
- if ((data & 0xe0) != 0xe0)
- {
- osd_printf_warning("unknown io %02x = %02x\n", m_io_offset, data);
- }
- break;
-
- case 0x3f:
- case 0x47:
- case 0x4f:
- case 0x57:
- case 0x5f:
- case 0x67:
- case 0x6f:
- case 0x77:
- case 0x7f:
- m_led_displays[(m_io_offset - 0x3f) / 8] = asciicharset[(data ^ 0xff) & 0x7f];
- break;
-
- case 0x87:
- m_spotlights[0] = BIT(~data, 3);
- m_spotlights[1] = BIT(~data, 2);
- m_spotlights[2] = BIT(~data, 1);
- m_spotlights[3] = BIT(~data, 0);
- m_spotlights[4] = BIT(~data, 4);
- m_spotlights[5] = BIT(~data, 5);
- m_spotlights[6] = BIT(~data, 6);
- m_spotlights[7] = BIT(~data, 7);
- break;
-
- case 0x8f:
- output().set_value( "neonlamp", ( ~data >> 0 ) & 1 );
- output().set_value( "unknown1", ( ~data >> 1 ) & 1 );
- output().set_value( "unknown2", ( ~data >> 2 ) & 1 );
-
- if( ( data & 0xf8 ) != 0xf8 )
- {
- osd_printf_warning("unknown io %02x = %02x\n", m_io_offset, data);
- }
- break;
-
- default:
- printf( "unknown io %02x = %02x\n", m_io_offset, data );
- break;
- }
- }
- break;
-
- case 1:
- m_io_offset = data;
- break;
- }
-}
-
-READ8_MEMBER(twinkle_state::twinkle_io_r)
-{
- uint8_t data = 0;
-
- switch( offset )
- {
- case 0:
- switch( m_io_offset )
- {
- case 0x07:
- data = ioport( "IN0" )->read();
- break;
-
- case 0x0f:
- data = ioport( "IN1" )->read();
- break;
-
- case 0x17:
- data = ioport( "IN2" )->read();
- break;
-
- case 0x1f:
- data = ioport( "IN3" )->read();
- break;
-
- case 0x27:
- data = ioport( "IN4" )->read();
- break;
-
- case 0x2f:
- data = ioport( "IN5" )->read();
- break;
-
- default:
- osd_printf_warning("unknown io 0x%02x\n", m_io_offset);
- break;
- }
- break;
-
- case 1:
- /* led status? 1100 */
- break;
- }
-
- return data;
-}
-
-WRITE16_MEMBER(twinkle_state::twinkle_output_w)
-{
- switch( offset )
- {
- case 0x00:
- /* offset */
- break;
- case 0x04:
- /* data */
- break;
- case 0x08:
- // overlay enable?
- break;
- case 0x10:
- {
- int clock = (data >> 0) & 1;
- int _do = (data >> 1) & 1;
- int cs = (data >> 2) & 1;
-
- //printf( "output do=%d clock=%d cs=%d (remaining %02x)\n", _do, clock, cs, data & 0xfff8 );
-
- if (!cs && m_output_cs)
- {
- m_output_shift = 0;
- m_output_bits = 0;
- }
-
- if (clock && !m_output_clock && m_output_bits < 8)
- {
- m_output_shift <<= 1;
- m_output_shift |= _do;
- m_output_bits++;
-
- if (m_output_bits == 8)
- {
- //printf( "output %02x\n", m_output_shift );
-
- m_output_bits = 0;
- m_output_shift = 0;
- }
- }
-
- m_output_cs = cs;
- m_output_clock = clock;
- }
- break;
- case 0x18:
- /* ?? */
- break;
- case 0x30:
- /* ?? */
- break;
- case 0x48:
- /* ?? */
- break;
- }
-}
-
-WRITE16_MEMBER(twinkle_state::led_w)
-{
- m_main_leds[0] = BIT(~data, 0);
- m_main_leds[1] = BIT(~data, 1);
- m_main_leds[2] = BIT(~data, 2);
- m_main_leds[3] = BIT(~data, 3);
- m_main_leds[4] = BIT(~data, 4);
- m_main_leds[5] = BIT(~data, 5);
- m_main_leds[6] = BIT(~data, 6);
- m_main_leds[7] = BIT(~data, 7);
- m_main_leds[8] = BIT(~data, 8);
-
- if ((data & 0xfe00) != 0xfe00)
- {
- osd_printf_warning("led_w unknown %04x\n", data);
- }
-}
-
-WRITE16_MEMBER(twinkle_state::key_led_w)
-{
- // words are written using a byte write
- m_key_leds[0][0] = BIT(data, 0);
- m_key_leds[0][1] = BIT(data, 1);
- m_key_leds[0][2] = BIT(data, 2);
- m_key_leds[0][3] = BIT(data, 3);
- m_key_leds[0][4] = BIT(data, 4);
- m_key_leds[0][5] = BIT(data, 5);
- m_key_leds[0][6] = BIT(data, 6);
- m_key_leds[1][0] = BIT(data, 7);
- m_key_leds[1][1] = BIT(data, 8);
- m_key_leds[1][2] = BIT(data, 9);
- m_key_leds[1][3] = BIT(data, 10);
- m_key_leds[1][4] = BIT(data, 11);
- m_key_leds[1][5] = BIT(data, 12);
- m_key_leds[1][6] = BIT(data, 13);
- output().set_value("unknown3", (data >> 14) & 1);
- output().set_value("unknown4", (data >> 15) & 1);
-}
-
-WRITE16_MEMBER(twinkle_state::serial_w)
-{
- int _do = ( data >> 4 ) & 1;
- int clock = ( data >> 5 ) & 1;
- int cs = ( data >> 6 ) & 1;
-
- //printf( "serial_w do=%d clock=%d cs=%d (remaining %02x)\n", _do, clock, cs, data & 0xff8f );
-
- if (!cs && m_serial_cs)
- {
- m_serial_shift = 0;
- m_serial_bits = 0;
- }
-
- if (clock && !m_serial_clock && m_serial_bits < 8)
- {
- m_serial_shift <<= 1;
- m_serial_shift |= _do;
- m_serial_bits++;
-
- if (m_serial_bits == 8)
- {
- //printf( "serial %02x\n", m_serial_shift );
- }
- }
-
- m_serial_cs = cs;
- m_serial_clock = clock;
-}
-
-void twinkle_state::main_map(address_map &map)
-{
- map(0x1f000000, 0x1f0007ff).rw(m_dpram, FUNC(cy7c131_device::right_r), FUNC(cy7c131_device::right_w)).umask32(0x00ff00ff);
- map(0x1f200000, 0x1f20001f).rw(m_am53cf96, FUNC(am53cf96_device::read), FUNC(am53cf96_device::write)).umask32(0x00ff00ff);
- map(0x1f20a01c, 0x1f20a01f).nopw(); /* scsi? */
- map(0x1f210000, 0x1f2107ff).rw("fdc37c665gt", FUNC(fdc37c665gt_device::read), FUNC(fdc37c665gt_device::write)).umask32(0x00ff00ff);
- map(0x1f218000, 0x1f218000).w("watchdog", FUNC(watchdog_timer_device::reset_w)); /* LTC1232 */
- map(0x1f220000, 0x1f220003).w(FUNC(twinkle_state::twinkle_io_w)).umask32(0x00ff00ff);
- map(0x1f220004, 0x1f220007).r(FUNC(twinkle_state::twinkle_io_r)).umask32(0x00ff00ff);
- map(0x1f230000, 0x1f230001).w(FUNC(twinkle_state::led_w));
- map(0x1f240000, 0x1f240003).portr("IN6");
- map(0x1f250000, 0x1f250001).w(FUNC(twinkle_state::key_led_w));
- map(0x1f260000, 0x1f260001).w(FUNC(twinkle_state::serial_w));
- map(0x1f270000, 0x1f270003).portw("OUTSEC");
- map(0x1f280000, 0x1f280003).portr("INSEC");
- map(0x1f290000, 0x1f29007f).rw("rtc", FUNC(rtc65271_device::rtc_r), FUNC(rtc65271_device::rtc_w)).umask32(0x00ff00ff);
- map(0x1f2a0000, 0x1f2a007f).rw("rtc", FUNC(rtc65271_device::xram_r), FUNC(rtc65271_device::xram_w)).umask32(0x00ff00ff);
- map(0x1f2b0000, 0x1f2b00ff).w(FUNC(twinkle_state::twinkle_output_w));
-}
-
-/* SPU board */
-
-WRITE_LINE_MEMBER(twinkle_state::spu_ata_irq)
-{
- if ((state) && (m_spu_ctrl & 0x0400))
- {
- m_audiocpu->set_input_line(M68K_IRQ_6, ASSERT_LINE);
- }
-}
-
-/*
- System control register (Konami always has one)
-
- bit 7 = write 0 to ack IRQ 1, write 1 to enable (IRQ 1 appears to be an RF5C400-related timer, or some free-running timing source)
- bit 8 = write 0 to ack IRQ 2, write 1 to enable (IRQ 2 appears to be DMA completion)
- bit 9 = write 0 to ack IRQ 4, write 1 to enable (IRQ 4 is "command available")
- bit 10 = write 0 to ack IRQ 6, write 1 to enable (IRQ 6 is the ATA IRQ)
- bit 11 = watchdog toggle
-
- Other bits unknown.
-*/
-WRITE16_MEMBER(twinkle_state::twinkle_spu_ctrl_w)
-{
- if ((!(data & 0x0080)) && (m_spu_ctrl & 0x0080))
- {
- m_audiocpu->set_input_line(M68K_IRQ_1, CLEAR_LINE);
- }
- else if ((!(data & 0x0100)) && (m_spu_ctrl & 0x0100))
- {
- m_audiocpu->set_input_line(M68K_IRQ_2, CLEAR_LINE);
- }
- else if ((!(data & 0x0200)) && (m_spu_ctrl & 0x0200))
- {
- m_audiocpu->set_input_line(M68K_IRQ_4, CLEAR_LINE);
- }
- else if ((!(data & 0x0400)) && (m_spu_ctrl & 0x0400))
- {
- m_audiocpu->set_input_line(M68K_IRQ_6, CLEAR_LINE);
- }
-
- m_spu_ctrl = data;
-}
-
-WRITE16_MEMBER(twinkle_state::spu_ata_dma_low_w)
-{
- m_spu_ata_dma = (m_spu_ata_dma & ~0xffff) | data;
-}
-
-WRITE16_MEMBER(twinkle_state::spu_ata_dma_high_w)
-{
- m_spu_ata_dma = (m_spu_ata_dma & 0xffff) | ((uint32_t)data << 16);
- //printf("DMA now %x\n", m_spu_ata_dma);
-}
-
-WRITE_LINE_MEMBER(twinkle_state::spu_ata_dmarq)
-{
- if (m_spu_ata_dmarq != state)
- {
- m_spu_ata_dmarq = state;
-
- if (m_spu_ata_dmarq)
- {
- m_ata->write_dmack(ASSERT_LINE);
-
- while (m_spu_ata_dmarq)
- {
- uint16_t data = m_ata->read_dma();
- //printf("spu_ata_dmarq %08x %04x\n", m_spu_ata_dma * 2, data);
- m_waveram[m_wave_bank+m_spu_ata_dma] = data; //(data >> 8) | (data << 8);
- m_spu_ata_dma++;
- // bp 4a0e ;bmiidx4 checksum
- // bp 4d62 ;bmiidx4 dma
- }
-
- m_ata->write_dmack(CLEAR_LINE);
- }
- }
-}
-
-WRITE16_MEMBER(twinkle_state::spu_wavebank_w)
-{
- //printf("%x to wavebank_w, mask %04x\n", data, mem_mask);
-
- // banks are fairly clearly 8MB, so there's 3 of them in the 24 MB of RAM.
- // the games load up the full 24MB of RAM 8 MB at a time, first to bank 1,
- // then to bank 2, and finally to bank 3.
- //
- // neither the 68k nor DMA access wave RAM when the bank is 0.
- m_wave_bank = data * (4*1024*1024);
-}
-
-READ16_MEMBER(twinkle_state::twinkle_waveram_r)
-{
- return m_waveram[offset+m_wave_bank];
-}
-
-WRITE16_MEMBER(twinkle_state::twinkle_waveram_w)
-{
- COMBINE_DATA(&m_waveram[offset+m_wave_bank]);
-}
-
-WRITE16_MEMBER(twinkle_state::spu_led_w)
-{
- // upper 8 bits are occassionally written as all zeros
- m_spu_leds[0] = BIT(~data, 0);
- m_spu_leds[1] = BIT(~data, 1);
- m_spu_leds[2] = BIT(~data, 2);
- m_spu_leds[3] = BIT(~data, 3);
- m_spu_leds[4] = BIT(~data, 4);
- m_spu_leds[5] = BIT(~data, 5);
- m_spu_leds[6] = BIT(~data, 6);
- m_spu_leds[7] = BIT(~data, 7);
-}
-
-void twinkle_state::sound_map(address_map &map)
-{
- map(0x000000, 0x07ffff).rom();
- map(0x100000, 0x13ffff).ram();
- map(0x200000, 0x200001).portr("SPU_DSW");
- map(0x220000, 0x220001).w(FUNC(twinkle_state::spu_led_w));
- map(0x230000, 0x230003).w(FUNC(twinkle_state::twinkle_spu_ctrl_w));
- map(0x240000, 0x240003).w(FUNC(twinkle_state::spu_ata_dma_low_w)).nopr();
- map(0x250000, 0x250003).w(FUNC(twinkle_state::spu_ata_dma_high_w)).nopr();
- map(0x260000, 0x260001).w(FUNC(twinkle_state::spu_wavebank_w)).nopr();
- map(0x280000, 0x2807ff).rw(m_dpram, FUNC(cy7c131_device::left_r), FUNC(cy7c131_device::left_w)).umask16(0x00ff);
- map(0x300000, 0x30000f).rw(m_ata, FUNC(ata_interface_device::cs0_r), FUNC(ata_interface_device::cs0_w));
- // 34000E = ???
- map(0x34000e, 0x34000f).nopw();
- map(0x400000, 0x400fff).rw("rfsnd", FUNC(rf5c400_device::rf5c400_r), FUNC(rf5c400_device::rf5c400_w));
- map(0x800000, 0xffffff).rw(FUNC(twinkle_state::twinkle_waveram_r), FUNC(twinkle_state::twinkle_waveram_w));
-}
-
-void twinkle_state::rf5c400_map(address_map &map)
-{
- map(0x0000000, 0x1ffffff).ram().share("rfsnd");
-}
-
-/* SCSI */
-
-void twinkle_state::scsi_dma_read( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size )
-{
- int i;
- int n_this;
-
- while( n_size > 0 )
- {
- if( n_size > sizeof( m_sector_buffer ) / 4 )
- {
- n_this = sizeof( m_sector_buffer ) / 4;
- }
- else
- {
- n_this = n_size;
- }
- if( n_this < 2048 / 4 )
- {
- /* non-READ commands */
- m_am53cf96->dma_read_data( n_this * 4, m_sector_buffer );
- }
- else
- {
- /* assume normal 2048 byte data for now */
- m_am53cf96->dma_read_data( 2048, m_sector_buffer );
- n_this = 2048 / 4;
- }
- n_size -= n_this;
-
- i = 0;
- while( n_this > 0 )
- {
- p_n_psxram[ n_address / 4 ] =
- ( m_sector_buffer[ i + 0 ] << 0 ) |
- ( m_sector_buffer[ i + 1 ] << 8 ) |
- ( m_sector_buffer[ i + 2 ] << 16 ) |
- ( m_sector_buffer[ i + 3 ] << 24 );
- n_address += 4;
- i += 4;
- n_this--;
- }
- }
-}
-
-void twinkle_state::scsi_dma_write( uint32_t *p_n_psxram, uint32_t n_address, int32_t n_size )
-{
- int i;
- int n_this;
-
- while( n_size > 0 )
- {
- if( n_size > sizeof( m_sector_buffer ) / 4 )
- {
- n_this = sizeof( m_sector_buffer ) / 4;
- }
- else
- {
- n_this = n_size;
- }
- n_size -= n_this;
-
- i = 0;
- while( n_this > 0 )
- {
- m_sector_buffer[ i + 0 ] = ( p_n_psxram[ n_address / 4 ] >> 0 ) & 0xff;
- m_sector_buffer[ i + 1 ] = ( p_n_psxram[ n_address / 4 ] >> 8 ) & 0xff;
- m_sector_buffer[ i + 2 ] = ( p_n_psxram[ n_address / 4 ] >> 16 ) & 0xff;
- m_sector_buffer[ i + 3 ] = ( p_n_psxram[ n_address / 4 ] >> 24 ) & 0xff;
- n_address += 4;
- i += 4;
- n_this--;
- }
-
- m_am53cf96->dma_write_data( n_this * 4, m_sector_buffer );
- }
-}
-
-
-void twinkle_state::cdrom_config(device_t *device)
-{
- device->subdevice<cdda_device>("cdda")->add_route(0, "^^speakerleft", 1.0);
- device->subdevice<cdda_device>("cdda")->add_route(1, "^^speakerright", 1.0);
-}
-
-void twinkle_state::twinkle(machine_config &config)
-{
- /* basic machine hardware */
- CXD8530CQ(config, m_maincpu, XTAL(67'737'600));
- m_maincpu->set_addrmap(AS_PROGRAM, &twinkle_state::main_map);
- m_maincpu->subdevice<psxdma_device>("dma")->install_read_handler(5, psxdma_device::read_delegate(&twinkle_state::scsi_dma_read, this));
- m_maincpu->subdevice<psxdma_device>("dma")->install_write_handler(5, psxdma_device::write_delegate(&twinkle_state::scsi_dma_write, this));
- m_maincpu->subdevice<ram_device>("ram")->set_default_size("4M");
-
- M68000(config, m_audiocpu, 32000000/2); /* 16.000 MHz */
- m_audiocpu->set_addrmap(AS_PROGRAM, &twinkle_state::sound_map);
- m_audiocpu->set_periodic_int(FUNC(twinkle_state::irq1_line_assert), attotime::from_hz(60));
- m_audiocpu->set_periodic_int(FUNC(twinkle_state::irq2_line_assert), attotime::from_hz(60));
-
- WATCHDOG_TIMER(config, "watchdog").set_time(attotime::from_msec(1200)); /* check TD pin on LTC1232 */
-
- CY7C131(config, m_dpram); // or IDT7130 at some PCBs
- m_dpram->intl_callback().set_inputline(m_audiocpu, M68K_IRQ_4);
-
- scsi_port_device &scsi(SCSI_PORT(config, "scsi", 0));
- scsi.set_slot_device(1, "cdrom", SCSICD, DEVICE_INPUT_DEFAULTS_NAME(SCSI_ID_4));
- scsi.slot(1).set_option_machine_config("cdrom", cdrom_config);
-
- AM53CF96(config, m_am53cf96, 0);
- m_am53cf96->set_scsi_port("scsi");
- m_am53cf96->irq_handler().set("maincpu:irq", FUNC(psxirq_device::intin10));
-
- ATA_INTERFACE(config, m_ata).options(ata_devices, "hdd", nullptr, true);
- m_ata->irq_handler().set(FUNC(twinkle_state::spu_ata_irq));
- m_ata->dmarq_handler().set(FUNC(twinkle_state::spu_ata_dmarq));
-
- RTC65271(config, "rtc", 0);
-
- FDC37C665GT(config, "fdc37c665gt", XTAL(24'000'000));
-
- rs232_port_device &rs232(RS232_PORT(config, "rs232", 0));
- rs232.option_add("xvd701", JVC_XVD701);
-// rs232.option_add("xvs1100", JVC_XVS1100); // 8th mix only
- rs232.set_default_option("xvd701");
- rs232.rxd_handler().set("fdc37c665gt:uart2", FUNC(ins8250_uart_device::rx_w));
- rs232.dcd_handler().set("fdc37c665gt:uart2", FUNC(ins8250_uart_device::dcd_w));
- rs232.dsr_handler().set("fdc37c665gt:uart2", FUNC(ins8250_uart_device::dsr_w));
- rs232.ri_handler().set("fdc37c665gt:uart2", FUNC(ins8250_uart_device::ri_w));
- rs232.cts_handler().set("fdc37c665gt:uart2", FUNC(ins8250_uart_device::cts_w));
-
- ns16550_device &uart(*subdevice<ns16550_device>("fdc37c665gt:uart2"));
- uart.out_tx_callback().set("rs232", FUNC(rs232_port_device::write_txd));
- uart.out_dtr_callback().set("rs232", FUNC(rs232_port_device::write_dtr));
- uart.out_rts_callback().set("rs232", FUNC(rs232_port_device::write_rts));
-
- /* video hardware */
- CXD8561Q(config, "gpu", XTAL(53'693'175), 0x200000, subdevice<psxcpu_device>("maincpu")).set_screen("screen");
-
- SCREEN(config, "screen", SCREEN_TYPE_RASTER);
-
- /* sound hardware */
- SPEAKER(config, "speakerleft").front_left();
- SPEAKER(config, "speakerright").front_right();
-
- spu_device &spu(SPU(config, "spu", XTAL(67'737'600)/2, subdevice<psxcpu_device>("maincpu")));
- spu.add_route(0, "speakerleft", 0.75);
- spu.add_route(1, "speakerright", 0.75);
-
- rf5c400_device &rf5c400(RF5C400(config, "rfsnd", XTAL(33'868'800)/2));
- rf5c400.set_addrmap(0, &twinkle_state::rf5c400_map);
- rf5c400.add_route(0, "speakerleft", 1.0);
- rf5c400.add_route(1, "speakerright", 1.0);
-}
-
-void twinkle_state::twinklex(machine_config &config)
-{
- twinkle(config);
- X76F041(config, "security");
-}
-
-void twinkle_state::twinklei(machine_config &config)
-{
- twinkle(config);
- I2CMEM(config, "security", 0).set_data_size(0x100);
-}
-
-static INPUT_PORTS_START( twinkle )
-
- PORT_START("IN0")
- PORT_BIT( 0x01, IP_ACTIVE_LOW, IPT_START1)
- PORT_BIT( 0x02, IP_ACTIVE_LOW, IPT_START2)
- PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_BUTTON8) PORT_NAME("VEFX")
- PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_BUTTON9) PORT_NAME("Effect")
- PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_SERVICE) PORT_NAME(DEF_STR(Test))
- PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_SERVICE1)
- PORT_BIT( 0xc0, IP_ACTIVE_LOW, IPT_UNKNOWN)
-
- PORT_START("IN1")
- PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X) PORT_PLAYER(2) PORT_NAME("2P Table") PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(100) PORT_KEYDELTA(10)
-
- PORT_START("IN2")
- PORT_BIT( 0xff, 0x00, IPT_TRACKBALL_X) PORT_PLAYER(1) PORT_NAME("1P Table") PORT_MINMAX(0x00,0xff) PORT_SENSITIVITY(100) PORT_KEYDELTA(10)
-
- PORT_START("IN3")
- PORT_BIT( 0x0f, 0x00, IPT_AD_STICK_Y) PORT_NAME("Volume 1") PORT_MINMAX(0x00,0x0f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CENTERDELTA(0)
- PORT_BIT( 0xf0, 0x00, IPT_AD_STICK_Y) PORT_NAME("Volume 2") PORT_MINMAX(0x00,0xf0) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CENTERDELTA(0)
-
- PORT_START("IN4")
- PORT_BIT( 0x0f, 0x00, IPT_AD_STICK_Y) PORT_NAME("Volume 3") PORT_MINMAX(0x00,0x0f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CENTERDELTA(0)
- PORT_BIT( 0xf0, 0x00, IPT_AD_STICK_Y) PORT_NAME("Volume 4") PORT_MINMAX(0x00,0xf0) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CENTERDELTA(0)
-
- PORT_START("IN5")
- PORT_BIT( 0x0f, 0x00, IPT_AD_STICK_Y) PORT_NAME("Volume 5") PORT_MINMAX(0x00,0x0f) PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CENTERDELTA(0)
-
- PORT_START("IN6")
- PORT_BIT( 0x0001, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(1) PORT_NAME("P1-1 (SW1)" )
- PORT_BIT( 0x0002, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(1) PORT_NAME("P1-2 (SW2)" )
- PORT_BIT( 0x0004, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(1) PORT_NAME("P1-3 (SW3)" )
- PORT_BIT( 0x0008, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(1) PORT_NAME("P1-4 (SW4)" )
- PORT_BIT( 0x0010, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_PLAYER(1) PORT_NAME("P1-5 (SW5)" )
- PORT_BIT( 0x0020, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_PLAYER(1) PORT_NAME("P1-6 (SW6)" )
- PORT_BIT( 0x0040, IP_ACTIVE_LOW, IPT_BUTTON7) PORT_PLAYER(1) PORT_NAME("P1-7 (SW7)" )
- PORT_BIT( 0x0080, IP_ACTIVE_LOW, IPT_BUTTON1) PORT_PLAYER(2) PORT_NAME("P2-1 (SW8)" )
- PORT_BIT( 0x0100, IP_ACTIVE_LOW, IPT_BUTTON2) PORT_PLAYER(2) PORT_NAME("P2-2 (SW9)" )
- PORT_BIT( 0x0200, IP_ACTIVE_LOW, IPT_BUTTON3) PORT_PLAYER(2) PORT_NAME("P2-3 (SW10)" )
- PORT_BIT( 0x0400, IP_ACTIVE_LOW, IPT_BUTTON4) PORT_PLAYER(2) PORT_NAME("P2-4 (SW11)" )
- PORT_BIT( 0x0800, IP_ACTIVE_LOW, IPT_BUTTON5) PORT_PLAYER(2) PORT_NAME("P2-5 (SW12)" )
- PORT_BIT( 0x1000, IP_ACTIVE_LOW, IPT_BUTTON6) PORT_PLAYER(2) PORT_NAME("P2-6 (SW13)" )
- PORT_BIT( 0x2000, IP_ACTIVE_LOW, IPT_BUTTON7) PORT_PLAYER(2) PORT_NAME("P2-7 (SW14)" )
- PORT_BIT( 0x4000, IP_ACTIVE_LOW, IPT_COIN1)
- PORT_BIT( 0x8000, IP_ACTIVE_LOW, IPT_UNKNOWN)
-
- PORT_START("OUTSEC")
- PORT_START("INSEC")
-
- PORT_START("SPU_DSW")
- PORT_DIPUNKNOWN_DIPLOC( 0x01, IP_ACTIVE_LOW, "SPU DSW:1" )
- PORT_DIPUNKNOWN_DIPLOC( 0x02, IP_ACTIVE_LOW, "SPU DSW:2" )
- PORT_DIPUNKNOWN_DIPLOC( 0x04, IP_ACTIVE_LOW, "SPU DSW:3" )
- PORT_DIPUNKNOWN_DIPLOC( 0x08, IP_ACTIVE_LOW, "SPU DSW:4" )
- PORT_DIPUNKNOWN_DIPLOC( 0x10, IP_ACTIVE_LOW, "SPU DSW:5" )
- PORT_DIPUNKNOWN_DIPLOC( 0x20, IP_ACTIVE_LOW, "SPU DSW:6" )
- PORT_DIPUNKNOWN_DIPLOC( 0x40, IP_ACTIVE_LOW, "SPU DSW:7" )
- PORT_DIPUNKNOWN_DIPLOC( 0x80, IP_ACTIVE_LOW, "SPU DSW:8" )
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( twinklex )
- PORT_INCLUDE( twinkle )
-
- PORT_MODIFY("OUTSEC")
- PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("security", x76f041_device, write_scl)
- PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("security", x76f041_device, write_sda)
- PORT_BIT( 0x00000004, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("security", x76f041_device, write_cs)
-
- PORT_MODIFY("INSEC")
- PORT_BIT( 0x00001000, IP_ACTIVE_HIGH, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("security", x76f041_device, read_sda)
-INPUT_PORTS_END
-
-static INPUT_PORTS_START( twinklei )
- PORT_INCLUDE( twinkle )
-
- PORT_MODIFY("OUTSEC")
- PORT_BIT( 0x00000010, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("security", i2cmem_device, write_scl)
- PORT_BIT( 0x00000008, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_WRITE_LINE_DEVICE_MEMBER("security", i2cmem_device, write_sda)
-
- PORT_MODIFY("INSEC")
- PORT_BIT( 0x00001000, IP_ACTIVE_HIGH, IPT_OUTPUT ) PORT_READ_LINE_DEVICE_MEMBER("security", i2cmem_device, read_sda)
-INPUT_PORTS_END
-
-#define TWINKLE_BIOS \
- ROM_REGION32_LE( 0x080000, "maincpu:rom", 0 )\
- ROM_LOAD( "863a03.7b", 0x000000, 0x080000, CRC(81498f73) SHA1(3599b40a5872eab3a00d345287635355fcb25a71) )\
-\
- ROM_REGION32_LE( 0x080000, "audiocpu", 0 )\
- ROM_LOAD16_WORD_SWAP( "863a05.2x", 0x000000, 0x080000, CRC(6f42a09e) SHA1(cab5209f90f47b9ee6e721479913ad74e3ba84b1) )
-
-ROM_START( gq863 )
- TWINKLE_BIOS
-ROM_END
-
-ROM_START( bmiidx )
- TWINKLE_BIOS
-
- ROM_REGION( 0x224, "security", 0 )
- ROM_LOAD( "863a02", 0x000000, 0x000224, BAD_DUMP CRC(7b2a429b) SHA1(f710d19c7b900a58584c07ab8fd3ab7b9f0121d7) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) // program
- DISK_IMAGE_READONLY( "gq863-jab01", 0, SHA1(331f80b40ed560c7e017621b7daeeb8275d92b9a) )
-
- DISK_REGION( "cdrom1" ) // video CD
- DISK_IMAGE_READONLY( "gq863a04", 0, SHA1(25359f0eaff3749a6194a6b9d93f6aec67d94819) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "863hdda01", 0, SHA1(0b8dbf1c9caf4abf965dbc6e1a8e6329d48b1c90) )
-ROM_END
-
-ROM_START( bmiidxa )
- TWINKLE_BIOS
-
- ROM_REGION( 0x224, "security", 0 )
- ROM_LOAD( "863a02", 0x000000, 0x000224, BAD_DUMP CRC(7b2a429b) SHA1(f710d19c7b900a58584c07ab8fd3ab7b9f0121d7) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" ) // program
- DISK_IMAGE_READONLY( "gq863a01", 0, SHA1(07fc467f6500504729becbaf77dabc093a134e65) )
-
- DISK_REGION( "cdrom1" ) // video CD
- DISK_IMAGE_READONLY( "gq863a04", 0, SHA1(25359f0eaff3749a6194a6b9d93f6aec67d94819) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "863hdda01", 0, SHA1(0b8dbf1c9caf4abf965dbc6e1a8e6329d48b1c90) )
-ROM_END
-
-ROM_START( bmiidx2 )
- TWINKLE_BIOS
-
- ROM_REGION( 0x100, "security", 0 )
- ROM_LOAD( "985a02", 0x000000, 0x000100, BAD_DUMP CRC(a290f534) SHA1(e7089f5f9c4c90d6c082539f3d839ac7798a27e4) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "gc985a01", 0, SHA1(0b783f11317f64552ebf3323459139529e7f315f) )
-
- DISK_REGION( "cdrom1" ) // video CD
- DISK_IMAGE_READONLY( "gc985a04", 0, SHA1(4306417f61eb1ea92894d288cdb7c385eb4610f2) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "985hdda01", 0, NO_DUMP )
-ROM_END
-
-ROM_START( bmiidx3 )
- TWINKLE_BIOS
-
- ROM_REGION( 0x100, "security", 0 )
- ROM_LOAD( "992a02", 0x000000, 0x000100, BAD_DUMP CRC(4b35d2ad) SHA1(4a9015e7f11d1aab9f79f070af9906e71eb4eb6d) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "gc992-jac01", 0, SHA1(c02d6e58439be678ec0d7171eae2dfd53a21acc7) )
-
- DISK_REGION( "cdrom1" ) // video CD
- DISK_IMAGE_READONLY( "gc992-jaa04", 0, SHA1(66d0b9ac793ff3fdddd0aa2aa5f2809d0c295944) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "992hdda01", 0, NO_DUMP )
-ROM_END
-
-ROM_START( bmiidx3a )
- TWINKLE_BIOS
-
- ROM_REGION( 0x100, "security", 0 )
- ROM_LOAD( "992a02", 0x000000, 0x000100, BAD_DUMP CRC(4b35d2ad) SHA1(4a9015e7f11d1aab9f79f070af9906e71eb4eb6d) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "gc992-jaa01", 0, BAD_DUMP SHA1(7e5389735dff379bb286ba3744edf59b7dfcc74b) )
-
- DISK_REGION( "cdrom1" ) // video CD
- DISK_IMAGE_READONLY( "gc992-jaa04", 0, SHA1(66d0b9ac793ff3fdddd0aa2aa5f2809d0c295944) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "992hdda01", 0, NO_DUMP )
-ROM_END
-
-ROM_START( bmiidx4 )
- TWINKLE_BIOS
-
- ROM_REGION( 0x100, "security", 0 )
- ROM_LOAD( "a03", 0x000000, 0x000100, CRC(056816a5) SHA1(125d24d1c22b8d3da6fe53f519c8d83eba627e9f) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "a03jaa01", 0, SHA1(f54fc778c2187ccd950402a159babef956b71492) )
-
- DISK_REGION( "cdrom1" ) // video CD
- DISK_IMAGE_READONLY( "a03jaa02", 0, SHA1(d6f01d666e8de285a02215f7ef987073e2b25019) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "a03jaa03", 0, SHA1(a9814c60d2ed98b8c4f6e11ea762518a1712e7b5) )
-ROM_END
-
-ROM_START( bmiidx5 )
- TWINKLE_BIOS
-
- ROM_REGION( 0x100, "security", 0 )
- ROM_LOAD( "a17", 0x000000, 0x000100, CRC(8eef340e) SHA1(631521baf9ec5db111e62cf0439ae31400447a57) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "a17jaa01", 0, SHA1(5ac46973b42b2c66ae63297d1a7fd69b33ef4d1d) )
-
- DISK_REGION( "cdrom1" ) // video CD
- DISK_IMAGE_READONLY( "a17jaa02", 0, SHA1(cc24a4c3f5e7c77dbeee7db94c0cc8a330e2b51b) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "a17jaa03", 0, NO_DUMP )
-ROM_END
-
-ROM_START( bmiidx6 )
- TWINKLE_BIOS
-
- ROM_REGION( 0x100, "security", 0 )
- ROM_LOAD( "b4u", 0x000000, 0x000100, BAD_DUMP CRC(1076cd8d) SHA1(e4bdadbf675221cc0170e5d4a37fe1f439c2e72b) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "b4ujab01", 0, SHA1(aaae77f473c4a44ce6838da3ef6dab27e4afa0e4) )
-
- DISK_REGION( "cdrom1" ) // DVD
- DISK_IMAGE_READONLY( "b4ujaa02", 0, SHA1(70c85f6df6f21b96c02e4eefc224593edcaf9e63) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "b4ujaa03", 0, SHA1(cfcbdfab157a864cbd4ac83247be5d62218f5b72) )
-ROM_END
-
-ROM_START( bmiidx6a )
- TWINKLE_BIOS
-
- ROM_REGION( 0x100, "security", 0 )
- ROM_LOAD( "b4u", 0x000000, 0x000100, BAD_DUMP CRC(1076cd8d) SHA1(e4bdadbf675221cc0170e5d4a37fe1f439c2e72b) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "b4ujaa01", 0, BAD_DUMP SHA1(d8f5d56b8728bea761dc4cdbc04851094d276bd6) )
-
- DISK_REGION( "cdrom1" ) // DVD
- DISK_IMAGE_READONLY( "b4ujaa02", 0, SHA1(70c85f6df6f21b96c02e4eefc224593edcaf9e63) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "b4ujaa03", 0, SHA1(cfcbdfab157a864cbd4ac83247be5d62218f5b72) )
-ROM_END
-
-ROM_START( bmiidx7 )
- TWINKLE_BIOS
-
- ROM_REGION( 0x100, "security", 0 )
- ROM_LOAD( "b44", 0x000000, 0x000100, BAD_DUMP CRC(4168dcdf) SHA1(66ef68783a69b04af6bc85cef90a36085dfee612) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "b44jaa01", 0, SHA1(57fb0312d8102e959658e48a97e46aa16e592b60) )
-
- DISK_REGION( "cdrom1" ) // DVD
- DISK_IMAGE_READONLY( "b44jaa02", 0, SHA1(a45726d99025f4d824ec143ef92957c76c08a13a) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "b44jaa03", 0, SHA1(1adb8e4874e26e8ccd9822e6f9dd12f6e6f8af05) )
-ROM_END
-
-ROM_START( bmiidx8 )
- TWINKLE_BIOS
-
- ROM_REGION( 0x100, "security", 0 )
- ROM_LOAD( "c44", 0x000000, 0x000100, BAD_DUMP CRC(198de0a2) SHA1(9526e98aaeb7ab3198e7a63715c4fc2d7c9d6021) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "c44jaa01", 0, BAD_DUMP SHA1(8b544c81bc56b19e4aa1649e68824811d6d51ce5) )
-
- DISK_REGION( "cdrom1" ) // DVD
- DISK_IMAGE_READONLY( "c44jaa02", 0, SHA1(f4c454a6360c507a122888d5bc3311eed5ce083b) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "c44jaa03", 0, SHA1(14df5039a4f5a648f1a2d12a35c16f56d0f9cd28) )
-ROM_END
-
-ROM_START( bmiidxc )
- TWINKLE_BIOS
-
- ROM_REGION( 0x224, "security", 0 )
- ROM_LOAD( "896a02", 0x000000, 0x000224, BAD_DUMP CRC(7b2a429b) SHA1(f710d19c7b900a58584c07ab8fd3ab7b9f0121d7) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "896jabbm", 0, BAD_DUMP SHA1(117ae4c876207bbaf9e8fe0fdf5bb161155c1bdb) )
-
- DISK_REGION( "cdrom1" ) // video CD
- DISK_IMAGE_READONLY( "896jaa04", 0, NO_DUMP )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "863hdda01", 0, SHA1(0b8dbf1c9caf4abf965dbc6e1a8e6329d48b1c90) )
-ROM_END
-
-ROM_START( bmiidxca )
- TWINKLE_BIOS
-
- ROM_REGION( 0x224, "security", 0 )
- ROM_LOAD( "896a02", 0x000000, 0x000224, BAD_DUMP CRC(7b2a429b) SHA1(f710d19c7b900a58584c07ab8fd3ab7b9f0121d7) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "896jaabm", 0, SHA1(ea7205f86543d9273efcc226666ab530c32b23c1) )
-
- DISK_REGION( "cdrom1" ) // video CD
- DISK_IMAGE_READONLY( "896jaa04", 0, NO_DUMP )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "863hdda01", 0, SHA1(0b8dbf1c9caf4abf965dbc6e1a8e6329d48b1c90) )
-ROM_END
-
-ROM_START( bmiidxs )
- TWINKLE_BIOS
-
- ROM_REGION( 0x224, "security", 0 )
- ROM_LOAD( "983a02", 0x000000, 0x000224, NO_DUMP )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "gc983a01", 0, NO_DUMP )
-
- DISK_REGION( "cdrom1" ) // video CD
- DISK_IMAGE_READONLY( "gc983a04", 0, SHA1(73454f2acb5a1e6b9e21140eb7b93a4827072d63) )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "983hdda01", 0, SHA1(bcbbf55acf8bebc5773ffc5769420a0129f4da57) )
-ROM_END
-
-ROM_START( bmiidxc2 )
- TWINKLE_BIOS
-
- ROM_REGION( 0x224, "security", 0 )
- ROM_LOAD( "984a02", 0x000000, 0x000224, BAD_DUMP CRC(5b08e1ef) SHA1(d43ad5d958313ccb2420246621d9180230b4782d) )
-
- DISK_REGION( "scsi:" SCSI_PORT_DEVICE1 ":cdrom" )
- DISK_IMAGE_READONLY( "ge984a01,bm", 0, SHA1(03b083ba09652dfab6f328000c3c9de2a7a4e618) )
-
- DISK_REGION( "cdrom1" ) // video CD
- DISK_IMAGE_READONLY( "ge984a04", 0, NO_DUMP )
-
- DISK_REGION( "ata:0:hdd:image" )
- DISK_IMAGE_READONLY( "983hdda01", 0, SHA1(bcbbf55acf8bebc5773ffc5769420a0129f4da57) )
-ROM_END
-
-GAMEL( 1999, gq863, 0, twinkle, twinkle, twinkle_state, empty_init, ROT0, "Konami", "Twinkle System", MACHINE_IS_BIOS_ROOT, layout_bmiidx )
-
-GAMEL( 1999, bmiidx, gq863, twinklex, twinklex, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX (863 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_bmiidx )
-GAMEL( 1999, bmiidxa, bmiidx, twinklex, twinklex, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX (863 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_bmiidx )
-GAMEL( 1999, bmiidxc, gq863, twinklex, twinklex, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX with DDR 2nd Club Version (896 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_bmiidx )
-GAMEL( 1999, bmiidxca, bmiidxc, twinklex, twinklex, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX with DDR 2nd Club Version (896 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_bmiidx )
-GAMEL( 1999, bmiidxs, gq863, twinklex, twinklex, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX Substream (983 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_bmiidx )
-GAMEL( 1999, bmiidxc2, gq863, twinklex, twinklex, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM)", MACHINE_IMPERFECT_SOUND, layout_bmiidx )
-GAMEL( 1999, bmiidx2, gq863, twinklei, twinklei, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX 2nd style (GC985 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_bmiidx )
-GAMEL( 2000, bmiidx3, gq863, twinklei, twinklei, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX 3rd style (GC992 JAC)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_bmiidx )
-GAMEL( 2000, bmiidx3a, bmiidx3, twinklei, twinklei, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX 3rd style (GC992 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_bmiidx )
-GAMEL( 2000, bmiidx4, gq863, twinklei, twinklei, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX 4th style (GCA03 JAA)", MACHINE_IMPERFECT_SOUND, layout_bmiidx )
-GAMEL( 2001, bmiidx5, gq863, twinklei, twinklei, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX 5th style (GCA17 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_NOT_WORKING, layout_bmiidx )
-GAMEL( 2001, bmiidx6, gq863, twinklei, twinklei, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX 6th style (GCB4U JAB)", MACHINE_IMPERFECT_SOUND, layout_bmiidx )
-GAMEL( 2001, bmiidx6a, bmiidx6, twinklei, twinklei, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX 6th style (GCB4U JAA)", MACHINE_IMPERFECT_SOUND, layout_bmiidx )
-GAMEL( 2002, bmiidx7, gq863, twinklei, twinklei, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX 7th style (GCB44 JAA)", MACHINE_IMPERFECT_SOUND, layout_bmiidx )
-GAMEL( 2002, bmiidx8, gq863, twinklei, twinklei, twinkle_state, empty_init, ROT0, "Konami", "beatmania IIDX 8th style (GCC44 JAA)", MACHINE_IMPERFECT_SOUND, layout_bmiidx )