twinkle: Changed RF5C400 clock to match board notes in driver. [smf]

twinkle: Added 8mb of dummy ram to the RF5C400 and adjusted the banking so that sounds play correctly. [smf]
twinkle: Improved LED font from available reference sources. [smf]
twinkle: Mapped lamps and dip switches [smf]
twinkle: Added basic internal artwork. [smf]

Machines promoted to working
----------------------------
beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM) [smf, R. Belmont, Sarah Purohit]
beatmania IIDX 4th style (GCA03 JAA) [smf, R. Belmont, Sarah Purohit]
beatmania IIDX 6th style (GCB4U JAB) [smf, R. Belmont, Sarah Purohit]
beatmania IIDX 6th style (GCB4U JAA) [smf, R. Belmont, Sarah Purohit]
beatmania IIDX 7th style (GCB44 JAA) [smf, R. Belmont, Sarah Purohit]
beatmania IIDX 8th style (GCC44 JAA) [smf, R. Belmont, Sarah Purohit]
This commit is contained in:
smf- 2017-12-02 16:12:05 +00:00
parent 280fb70b58
commit 3eb7d8aa7d
2 changed files with 343 additions and 118 deletions

View File

@ -9,7 +9,7 @@ driver by smf and R. Belmont
TODO: TODO:
dvd check for bmiidx, bmiidxa, bmiidxc & bmiidxca dvd check for bmiidx, bmiidxa, bmiidxc & bmiidxca
finish sound board emulation and remove response hle remove dummy 8mb bank
emulate dvd player and video mixing emulate dvd player and video mixing
16seg led font 16seg led font
@ -247,6 +247,8 @@ Notes:
#include "sound/rf5c400.h" #include "sound/rf5c400.h"
#include "speaker.h" #include "speaker.h"
#include "bmiidx.lh"
class twinkle_state : public driver_device class twinkle_state : public driver_device
{ {
public: public:
@ -256,6 +258,8 @@ public:
m_ata(*this, "ata"), m_ata(*this, "ata"),
m_waveram(*this, "rfsnd"), m_waveram(*this, "rfsnd"),
m_spu_ata_dma(0), m_spu_ata_dma(0),
m_spu_ata_dmarq(0),
m_wave_bank(0),
m_maincpu(*this, "maincpu"), m_maincpu(*this, "maincpu"),
m_audiocpu(*this, "audiocpu") m_audiocpu(*this, "audiocpu")
{ {
@ -268,16 +272,17 @@ public:
uint16_t m_spu_ctrl; // SPU board control register uint16_t m_spu_ctrl; // SPU board control register
uint8_t m_spu_shared[0x400]; // SPU/PSX shared dual-ported RAM uint8_t m_spu_shared[0x400]; // SPU/PSX shared dual-ported RAM
uint32_t m_spu_ata_dma; uint32_t m_spu_ata_dma;
uint32_t m_wave_bank;
int m_spu_ata_dmarq; int m_spu_ata_dmarq;
uint32_t m_wave_bank;
int m_io_offset; int m_io_offset;
int m_output_last[ 0x100 ]; int m_output_last[ 0x100 ];
int m_last_io_offset;
uint8_t m_sector_buffer[ 4096 ]; uint8_t m_sector_buffer[ 4096 ];
DECLARE_WRITE8_MEMBER(twinkle_io_w); DECLARE_WRITE8_MEMBER(twinkle_io_w);
DECLARE_READ8_MEMBER(twinkle_io_r); DECLARE_READ8_MEMBER(twinkle_io_r);
DECLARE_WRITE16_MEMBER(twinkle_output_w); 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(serial_w);
DECLARE_WRITE8_MEMBER(shared_psx_w); DECLARE_WRITE8_MEMBER(shared_psx_w);
DECLARE_READ8_MEMBER(shared_psx_r); DECLARE_READ8_MEMBER(shared_psx_r);
@ -288,6 +293,7 @@ public:
DECLARE_WRITE16_MEMBER(twinkle_waveram_w); DECLARE_WRITE16_MEMBER(twinkle_waveram_w);
DECLARE_READ16_MEMBER(shared_68k_r); DECLARE_READ16_MEMBER(shared_68k_r);
DECLARE_WRITE16_MEMBER(shared_68k_w); DECLARE_WRITE16_MEMBER(shared_68k_w);
DECLARE_WRITE16_MEMBER(spu_led_w);
DECLARE_WRITE16_MEMBER(spu_wavebank_w); DECLARE_WRITE16_MEMBER(spu_wavebank_w);
DECLARE_READ16_MEMBER(unk_68k_r); DECLARE_READ16_MEMBER(unk_68k_r);
DECLARE_WRITE_LINE_MEMBER(spu_ata_irq); DECLARE_WRITE_LINE_MEMBER(spu_ata_irq);
@ -306,8 +312,6 @@ public:
int m_output_clock; int m_output_clock;
}; };
/* RTC */
#define LED_A1 0x0001 #define LED_A1 0x0001
#define LED_A2 0x0002 #define LED_A2 0x0002
#define LED_B 0x0004 #define LED_B 0x0004
@ -334,23 +338,24 @@ public:
static const uint16_t asciicharset[]= static const uint16_t asciicharset[]=
{ {
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_J | LED_M, // 0 // 0
LED_B | LED_C, // 1 0, // (default on boot)
LED_A1 | LED_A2 | LED_B | LED_D1 | LED_D2 | LED_E | LED_G1 | LED_G2, // 2 0,
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_G2, // 3 0,
LED_B | LED_C | LED_F | LED_G1 | LED_G2 , // 4 0,
LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_F | LED_G1 | LED_K, // 5 0,
LED_A1 | LED_A2 | LED_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_G1 | LED_G2, // 6 0,
LED_A1 | LED_A2 | LED_B | LED_C, // 7 0,
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F, // 8 0,
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_F, // 9 0,
LED_A1 | LED_A2 | LED_B | LED_C | LED_E | LED_F, // A 0,
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_G2 | LED_I | LED_L, // B 0,
LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_E | LED_F, // C 0,
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_I | LED_L, // D 0,
LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_E | LED_F | LED_G1 | LED_G2, // E 0,
LED_A1 | LED_A2 | LED_E | LED_F | LED_G1, // F 0,
// 16 0,
// 0x10
0, 0,
0, 0,
0, 0,
@ -367,63 +372,64 @@ static const uint16_t asciicharset[]=
0, 0,
0, 0,
0, 0,
// 32 // 0x20
0, // space 0, // space
0, // ! LED_D2 | LED_A2 | LED_I | LED_J, // !
0, // " LED_I | LED_B, // "
0, // # 0, // #
0, // $ 0, // $
0, // % 0, // %
0, // & LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_H | LED_J | LED_M | LED_K | LED_C, // &
0, // ' 0, // '
0, // ( LED_J | LED_K, // (
0, // ) LED_H | LED_M, // )
0, // * LED_G1 | LED_G2 | LED_H | LED_I | LED_J | LED_K | LED_L | LED_M, // *
0, // + 0, // +
0, // , 0, // ,
0, // - LED_G1 | LED_G2, // -
0, // . 0, // .
0, // / LED_J | LED_M, // /
// 48 // 0x30
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_J | LED_M, // 0 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_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_D1 | LED_D2 | LED_E | LED_G1 | LED_G2, // 2
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_G2, // 3 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_B | LED_C | LED_F | LED_G1 | LED_G2 , // 4
LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_F | LED_G1 | LED_K, // 5 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, // 6 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, // 7 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, // 8 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, // 9 LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_F | LED_G1 | LED_G2, // 9
0, // : 0, // :
0, // ; 0, // ;
0, // < 0, // <
0, // = 0, // =
0, // > 0, // >
0, // ? LED_A1 | LED_A2 | LED_J | LED_D2, // ?
// 64 // 0x40
0, // @ 0, // @
LED_A1 | LED_A2 | LED_B | LED_C | LED_E | LED_F, // A LED_A1 | LED_A2 | LED_B | LED_C | LED_E | LED_F | LED_G1 | LED_G2, // A
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_G2 | LED_I | LED_L, // B 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_A1 | LED_A2 | LED_D1 | LED_D2 | LED_E | LED_F, // C
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_I | LED_L, // D 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_D1 | LED_D2 | LED_E | LED_F | LED_G1 | LED_G2, // E
LED_A1 | LED_A2 | LED_E | LED_F | LED_G1, // F 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_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_B | LED_C | LED_E | LED_F | LED_G1 | LED_G2, // H
LED_I | LED_L, // I LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_I | LED_L, // I
LED_B | LED_C | LED_D1 | LED_D2 | LED_E, // J LED_A1 | LED_A2 | LED_I | LED_L | LED_D2, // J
LED_E | LED_F | LED_G1 | LED_J | LED_K, // K LED_E | LED_F | LED_G1 | LED_J | LED_K, // K
LED_D1 | LED_D2 | LED_E | LED_F, // L 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_J, // M
LED_B | LED_C | LED_E | LED_F | LED_H | LED_K, // N 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 LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F, // O
LED_A1 | LED_A2 | LED_B | LED_E | LED_F, // P // 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_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_K, // Q
LED_A1 | LED_A2 | LED_B | LED_E | LED_F | LED_K, // R 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_C | LED_D1 | LED_D2 | LED_F | LED_G1 | LED_G2, // S
LED_A1 | LED_A2 | LED_I | LED_L, // T LED_A1 | LED_A2 | LED_I | LED_L, // T
LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F, // O LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F, // U
LED_E | LED_F | LED_M | LED_J, // V LED_E | LED_F | LED_M | LED_J, // V
LED_B | LED_C | LED_E | LED_F | LED_M | LED_K, // W 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_K | LED_M, // X
@ -434,33 +440,35 @@ static const uint16_t asciicharset[]=
0, // ] 0, // ]
0, // ^ 0, // ^
0, // _ 0, // _
// 0x60
0, // ` 0, // `
LED_A1 | LED_A2 | LED_B | LED_C | LED_E | LED_F, // A 0, // a
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_G2 | LED_I | LED_L, // B 0, // b
LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_E | LED_F, // C 0, // c
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_I | LED_L, // D 0, // d
LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_E | LED_F | LED_G1 | LED_G2, // E 0, // e
LED_A1 | LED_A2 | LED_E | LED_F | LED_G1, // F 0, // f
LED_A1 | LED_A2 | LED_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_G2, // G 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)
LED_B | LED_C | LED_E | LED_F | LED_G1 | LED_G2, // H 0, // h
LED_I | LED_L, // I 0, // i
LED_B | LED_C | LED_D1 | LED_D2 | LED_E, // J 0, // j
LED_E | LED_F | LED_G1 | LED_J | LED_K, // K 0, // k
LED_D1 | LED_D2 | LED_E | LED_F, // L 0, // l
LED_B | LED_C | LED_E | LED_F | LED_H | LED_J, // M LED_D2, // m (".")
LED_B | LED_C | LED_E | LED_F | LED_H | LED_K, // N 0, // n
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F, // O 0, // o
LED_A1 | LED_A2 | LED_B | LED_E | LED_F, // P // 0x70
LED_A1 | LED_A2 | LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F | LED_K, // Q 0, // p
LED_A1 | LED_A2 | LED_B | LED_E | LED_F | LED_K, // R LED_J, // q ("'")
LED_A1 | LED_A2 | LED_C | LED_D1 | LED_D2 | LED_F | LED_G1 | LED_G2, // S 0, // r
LED_A1 | LED_A2 | LED_I | LED_L, // T 0, // s
LED_B | LED_C | LED_D1 | LED_D2 | LED_E | LED_F, // O 0, // t
LED_E | LED_F | LED_M | LED_J, // V LED_M, // u (",")
LED_B | LED_C | LED_E | LED_F | LED_M | LED_K, // W 0, // v
LED_H | LED_J | LED_K | LED_M, // X 0, // w
LED_H | LED_J | LED_L, // Y 0, // x
LED_A1 | LED_A2 | LED_D1 | LED_D2 | LED_J | LED_M, // Z 0, // y
0, // z
0, // { 0, // {
0, // | 0, // |
0, // } 0, // }
@ -486,9 +494,25 @@ WRITE8_MEMBER(twinkle_state::twinkle_io_w)
case 0x1f: case 0x1f:
case 0x27: case 0x27:
case 0x2f: case 0x2f:
case 0x37: 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;
/* led */
case 0x3f: case 0x3f:
case 0x47: case 0x47:
case 0x4f: case 0x4f:
@ -498,7 +522,7 @@ WRITE8_MEMBER(twinkle_state::twinkle_io_w)
case 0x6f: case 0x6f:
case 0x77: case 0x77:
case 0x7f: case 0x7f:
output().set_indexed_value( "led", ( m_io_offset - 7 ) / 8, asciicharset[ ( data ^ 0xff ) & 0x7f ] ); output().set_indexed_value( "led", ( m_io_offset - 0x3f ) / 8, asciicharset[ ( data ^ 0xff ) & 0x7f ] );
break; break;
case 0x87: case 0x87:
@ -519,7 +543,7 @@ WRITE8_MEMBER(twinkle_state::twinkle_io_w)
if( ( data & 0xf8 ) != 0xf8 ) if( ( data & 0xf8 ) != 0xf8 )
{ {
printf("%02x = %02x\n", m_io_offset, data ); osd_printf_warning("unknown io %02x = %02x\n", m_io_offset, data);
} }
break; break;
@ -570,10 +594,7 @@ READ8_MEMBER(twinkle_state::twinkle_io_r)
break; break;
default: default:
if( m_last_io_offset != m_io_offset ) osd_printf_warning("unknown io 0x%02x\n", m_io_offset);
{
m_last_io_offset = m_io_offset;
}
break; break;
} }
break; break;
@ -597,7 +618,7 @@ WRITE16_MEMBER(twinkle_state::twinkle_output_w)
/* data */ /* data */
break; break;
case 0x08: case 0x08:
/* ?? */ // overlay enable?
break; break;
case 0x10: case 0x10:
{ {
@ -644,6 +665,45 @@ WRITE16_MEMBER(twinkle_state::twinkle_output_w)
} }
} }
WRITE16_MEMBER(twinkle_state::led_w)
{
output().set_indexed_value("main_led", 0, (~data >> 0) & 1);
output().set_indexed_value("main_led", 1, (~data >> 1) & 1);
output().set_indexed_value("main_led", 2, (~data >> 2) & 1);
output().set_indexed_value("main_led", 3, (~data >> 3) & 1);
output().set_indexed_value("main_led", 4, (~data >> 4) & 1);
output().set_indexed_value("main_led", 5, (~data >> 5) & 1);
output().set_indexed_value("main_led", 6, (~data >> 6) & 1);
output().set_indexed_value("main_led", 7, (~data >> 7) & 1);
output().set_indexed_value("main_led", 8, (~data >> 8) & 1);
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
output().set_indexed_value("key1-", 1, (data >> 0) & 1);
output().set_indexed_value("key1-", 2, (data >> 1) & 1);
output().set_indexed_value("key1-", 3, (data >> 2) & 1);
output().set_indexed_value("key1-", 4, (data >> 3) & 1);
output().set_indexed_value("key1-", 5, (data >> 4) & 1);
output().set_indexed_value("key1-", 6, (data >> 5) & 1);
output().set_indexed_value("key1-", 7, (data >> 6) & 1);
output().set_indexed_value("key2-", 1, (data >> 7) & 1);
output().set_indexed_value("key2-", 2, (data >> 8) & 1);
output().set_indexed_value("key2-", 3, (data >> 9) & 1);
output().set_indexed_value("key2-", 4, (data >> 10) & 1);
output().set_indexed_value("key2-", 5, (data >> 11) & 1);
output().set_indexed_value("key2-", 6, (data >> 12) & 1);
output().set_indexed_value("key2-", 7, (data >> 13) & 1);
output().set_value("unknown3", (data >> 14) & 1);
output().set_value("unknown4", (data >> 15) & 1);
}
WRITE16_MEMBER(twinkle_state::serial_w) WRITE16_MEMBER(twinkle_state::serial_w)
{ {
int _do = ( data >> 4 ) & 1; int _do = ( data >> 4 ) & 1;
@ -705,9 +765,9 @@ static ADDRESS_MAP_START( main_map, AS_PROGRAM, 32, twinkle_state )
AM_RANGE(0x1f218000, 0x1f218003) AM_DEVWRITE8("watchdog", watchdog_timer_device, reset_w, 0x000000ff) /* LTC1232 */ AM_RANGE(0x1f218000, 0x1f218003) AM_DEVWRITE8("watchdog", watchdog_timer_device, reset_w, 0x000000ff) /* LTC1232 */
AM_RANGE(0x1f220000, 0x1f220003) AM_WRITE8(twinkle_io_w, 0x00ff00ff) AM_RANGE(0x1f220000, 0x1f220003) AM_WRITE8(twinkle_io_w, 0x00ff00ff)
AM_RANGE(0x1f220004, 0x1f220007) AM_READ8(twinkle_io_r, 0x00ff00ff) AM_RANGE(0x1f220004, 0x1f220007) AM_READ8(twinkle_io_r, 0x00ff00ff)
AM_RANGE(0x1f230000, 0x1f230003) AM_WRITENOP AM_RANGE(0x1f230000, 0x1f230003) AM_WRITE16(led_w, 0x0000ffff)
AM_RANGE(0x1f240000, 0x1f240003) AM_READ_PORT("IN6") AM_RANGE(0x1f240000, 0x1f240003) AM_READ_PORT("IN6")
AM_RANGE(0x1f250000, 0x1f250003) AM_WRITENOP AM_RANGE(0x1f250000, 0x1f250003) AM_WRITE16(key_led_w, 0x0000ffff)
AM_RANGE(0x1f260000, 0x1f260003) AM_WRITE16(serial_w, 0x0000ffff) AM_RANGE(0x1f260000, 0x1f260003) AM_WRITE16(serial_w, 0x0000ffff)
AM_RANGE(0x1f270000, 0x1f270003) AM_WRITE_PORT("OUTSEC") AM_RANGE(0x1f270000, 0x1f270003) AM_WRITE_PORT("OUTSEC")
AM_RANGE(0x1f280000, 0x1f280003) AM_READ_PORT("INSEC") AM_RANGE(0x1f280000, 0x1f280003) AM_READ_PORT("INSEC")
@ -804,11 +864,7 @@ WRITE16_MEMBER(twinkle_state::spu_wavebank_w)
// then to bank 2, and finally to bank 3. // then to bank 2, and finally to bank 3.
// //
// neither the 68k nor DMA access wave RAM when the bank is 0. // neither the 68k nor DMA access wave RAM when the bank is 0.
if (data == 0) m_wave_bank = data * (4*1024*1024);
{
data = 1;
}
m_wave_bank = ((data-1) * (4*1024*1024));
} }
READ16_MEMBER(twinkle_state::twinkle_waveram_r) READ16_MEMBER(twinkle_state::twinkle_waveram_r)
@ -837,20 +893,28 @@ WRITE16_MEMBER(twinkle_state::shared_68k_w)
m_spu_shared[offset] = data & 0xff; m_spu_shared[offset] = data & 0xff;
} }
READ16_MEMBER(twinkle_state::unk_68k_r) WRITE16_MEMBER(twinkle_state::spu_led_w)
{ {
return 0xffff; // must return 0xff for 68000 POST to complete properly // upper 8 bits are occassionally written as all zeros
output().set_indexed_value("spu_led", 0, (~data >> 0) & 1);
output().set_indexed_value("spu_led", 1, (~data >> 1) & 1);
output().set_indexed_value("spu_led", 2, (~data >> 2) & 1);
output().set_indexed_value("spu_led", 3, (~data >> 3) & 1);
output().set_indexed_value("spu_led", 4, (~data >> 4) & 1);
output().set_indexed_value("spu_led", 5, (~data >> 5) & 1);
output().set_indexed_value("spu_led", 6, (~data >> 6) & 1);
output().set_indexed_value("spu_led", 7, (~data >> 7) & 1);
} }
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 16, twinkle_state ) static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 16, twinkle_state )
AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x000000, 0x07ffff) AM_ROM
AM_RANGE(0x100000, 0x13ffff) AM_RAM AM_RANGE(0x100000, 0x13ffff) AM_RAM
AM_RANGE(0x200000, 0x200001) AM_READ(unk_68k_r) AM_RANGE(0x200000, 0x200001) AM_READ_PORT("SPU_DSW")
// 220000 = LEDs? AM_RANGE(0x220000, 0x220001) AM_WRITE(spu_led_w)
AM_RANGE(0x230000, 0x230003) AM_WRITE(twinkle_spu_ctrl_w) AM_RANGE(0x230000, 0x230003) AM_WRITE(twinkle_spu_ctrl_w)
AM_RANGE(0x240000, 0x240003) AM_WRITE(spu_ata_dma_low_w) AM_RANGE(0x240000, 0x240003) AM_WRITE(spu_ata_dma_low_w) AM_READNOP
AM_RANGE(0x250000, 0x250003) AM_WRITE(spu_ata_dma_high_w) AM_RANGE(0x250000, 0x250003) AM_WRITE(spu_ata_dma_high_w) AM_READNOP
AM_RANGE(0x260000, 0x260001) AM_WRITE(spu_wavebank_w) AM_RANGE(0x260000, 0x260001) AM_WRITE(spu_wavebank_w) AM_READNOP
AM_RANGE(0x280000, 0x280fff) AM_READWRITE(shared_68k_r, shared_68k_w) AM_RANGE(0x280000, 0x280fff) AM_READWRITE(shared_68k_r, shared_68k_w)
AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs0, write_cs0) AM_RANGE(0x300000, 0x30000f) AM_DEVREADWRITE("ata", ata_interface_device, read_cs0, write_cs0)
// 34000E = ??? // 34000E = ???
@ -1004,7 +1068,7 @@ static MACHINE_CONFIG_START( twinkle )
MCFG_SOUND_ROUTE( 0, "speakerleft", 0.75 ) MCFG_SOUND_ROUTE( 0, "speakerleft", 0.75 )
MCFG_SOUND_ROUTE( 1, "speakerright", 0.75 ) MCFG_SOUND_ROUTE( 1, "speakerright", 0.75 )
MCFG_RF5C400_ADD("rfsnd", 32000000/2) MCFG_RF5C400_ADD("rfsnd", XTAL_33_8688MHz/2);
MCFG_SOUND_ROUTE(0, "speakerleft", 1.0) MCFG_SOUND_ROUTE(0, "speakerleft", 1.0)
MCFG_SOUND_ROUTE(1, "speakerright", 1.0) MCFG_SOUND_ROUTE(1, "speakerright", 1.0)
MACHINE_CONFIG_END MACHINE_CONFIG_END
@ -1066,6 +1130,16 @@ static INPUT_PORTS_START( twinkle )
PORT_START("OUTSEC") PORT_START("OUTSEC")
PORT_START("INSEC") 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 INPUT_PORTS_END
static INPUT_PORTS_START( twinklex ) static INPUT_PORTS_START( twinklex )
@ -1098,7 +1172,7 @@ INPUT_PORTS_END
ROM_REGION32_LE( 0x080000, "audiocpu", 0 )\ ROM_REGION32_LE( 0x080000, "audiocpu", 0 )\
ROM_LOAD16_WORD_SWAP( "863a05.2x", 0x000000, 0x080000, CRC(6f42a09e) SHA1(cab5209f90f47b9ee6e721479913ad74e3ba84b1) )\ ROM_LOAD16_WORD_SWAP( "863a05.2x", 0x000000, 0x080000, CRC(6f42a09e) SHA1(cab5209f90f47b9ee6e721479913ad74e3ba84b1) )\
\ \
ROM_REGION16_LE(0x1800000, "rfsnd", ROMREGION_ERASE00) ROM_REGION16_LE(0x2000000, "rfsnd", ROMREGION_ERASE00) // the first 8mb isn't populated
ROM_START( gq863 ) ROM_START( gq863 )
TWINKLE_BIOS TWINKLE_BIOS
@ -1344,20 +1418,20 @@ ROM_START( bmiidxc2 )
DISK_IMAGE_READONLY( "983hdda01", 0, SHA1(bcbbf55acf8bebc5773ffc5769420a0129f4da57) ) DISK_IMAGE_READONLY( "983hdda01", 0, SHA1(bcbbf55acf8bebc5773ffc5769420a0129f4da57) )
ROM_END ROM_END
GAME( 1999, gq863, 0, twinkle, twinkle, twinkle_state, 0, ROT0, "Konami", "Twinkle System", MACHINE_IS_BIOS_ROOT ) GAMEL( 1999, gq863, 0, twinkle, twinkle, twinkle_state, 0, ROT0, "Konami", "Twinkle System", MACHINE_IS_BIOS_ROOT, layout_bmiidx )
GAME( 1999, bmiidx, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX (863 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 1999, bmiidx, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX (863 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING, layout_bmiidx )
GAME( 1999, bmiidxa, bmiidx, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX (863 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 1999, bmiidxa, bmiidx, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX (863 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING, layout_bmiidx )
GAME( 1999, bmiidxc, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX with DDR 2nd Club Version (896 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 1999, bmiidxc, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX with DDR 2nd Club Version (896 JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING, layout_bmiidx )
GAME( 1999, bmiidxca, bmiidxc, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX with DDR 2nd Club Version (896 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 1999, bmiidxca, bmiidxc, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX with DDR 2nd Club Version (896 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING, layout_bmiidx )
GAME( 1999, bmiidxs, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX Substream (983 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 1999, bmiidxs, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX Substream (983 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING, layout_bmiidx )
GAME( 1999, bmiidxc2, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 1999, bmiidxc2, gq863, twinklex, twinklex, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX Substream with DDR 2nd Club Version 2 (984 A01 BM)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS, layout_bmiidx )
GAME( 1999, bmiidx2, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 2nd style (GC985 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 1999, bmiidx2, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 2nd style (GC985 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING, layout_bmiidx )
GAME( 2000, bmiidx3, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 3rd style (GC992 JAC)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 2000, bmiidx3, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 3rd style (GC992 JAC)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING, layout_bmiidx )
GAME( 2000, bmiidx3a, bmiidx3, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 3rd style (GC992 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 2000, bmiidx3a, bmiidx3, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 3rd style (GC992 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING, layout_bmiidx )
GAME( 2000, bmiidx4, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 4th style (GCA03 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 2000, bmiidx4, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 4th style (GCA03 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS, layout_bmiidx )
GAME( 2001, bmiidx5, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 5th style (GCA17 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 2001, bmiidx5, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 5th style (GCA17 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING, layout_bmiidx )
GAME( 2001, bmiidx6, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 6th style (GCB4U JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 2001, bmiidx6, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 6th style (GCB4U JAB)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS, layout_bmiidx )
GAME( 2001, bmiidx6a, bmiidx6, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 6th style (GCB4U JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 2001, bmiidx6a, bmiidx6, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 6th style (GCB4U JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS, layout_bmiidx )
GAME( 2002, bmiidx7, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 7th style (GCB44 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 2002, bmiidx7, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 7th style (GCB44 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS, layout_bmiidx )
GAME( 2002, bmiidx8, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 8th style (GCC44 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS | MACHINE_NOT_WORKING ) GAMEL( 2002, bmiidx8, gq863, twinklei, twinklei, twinkle_state, 0, ROT0, "Konami", "beatmania IIDX 8th style (GCC44 JAA)", MACHINE_IMPERFECT_SOUND | MACHINE_IMPERFECT_GRAPHICS, layout_bmiidx )

151
src/mame/layout/bmiidx.lay Normal file
View File

@ -0,0 +1,151 @@
<?xml version="1.0"?>
<mamelayout version="2">
<element name="spotlight0"><text string="spot 1" state="1"/></element>
<element name="spotlight1"><text string="spot 2" state="1"/></element>
<element name="spotlight2"><text string="spot 3" state="1"/></element>
<element name="spotlight3"><text string="spot 4" state="1"/></element>
<element name="spotlight4"><text string="spot 5" state="1"/></element>
<element name="spotlight5"><text string="spot 6" state="1"/></element>
<element name="spotlight6"><text string="spot 7" state="1"/></element>
<element name="spotlight7"><text string="spot 8" state="1"/></element>
<element name="key1-1"><text string="key 1-1" state="1"/></element>
<element name="key1-2"><text string="key 1-2" state="1"/></element>
<element name="key1-3"><text string="key 1-3" state="1"/></element>
<element name="key1-4"><text string="key 1-4" state="1"/></element>
<element name="key1-5"><text string="key 1-5" state="1"/></element>
<element name="key1-6"><text string="key 1-6" state="1"/></element>
<element name="key1-7"><text string="key 1-7" state="1"/></element>
<element name="key2-1"><text string="key 2-1" state="1"/></element>
<element name="key2-2"><text string="key 2-2" state="1"/></element>
<element name="key2-3"><text string="key 2-3" state="1"/></element>
<element name="key2-4"><text string="key 2-4" state="1"/></element>
<element name="key2-5"><text string="key 2-5" state="1"/></element>
<element name="key2-6"><text string="key 2-6" state="1"/></element>
<element name="key2-7"><text string="key 2-7" state="1"/></element>
<element name="unknown3"><text string="unknown3" state="1"/></element>
<element name="unknown4"><text string="unknown4" state="1"/></element>
<element name="1p"><text string="1p" state="1"/></element>
<element name="2p"><text string="2p" state="1"/></element>
<element name="effect"><text string="effect" state="1"/></element>
<element name="vefx"><text string="vefx" state="1"/></element>
<element name="credit"><text string="credit" state="1"/></element>
<element name="neonlamp"><text string="neon" state="1"/></element>
<element name="unknown1"><text string="unknown1" state="1"/></element>
<element name="unknown2"><text string="unknown2" state="1"/></element>
<element name="main_led0"><text string="main 1" state="1"/></element>
<element name="main_led1"><text string="main 2" state="1"/></element>
<element name="main_led2"><text string="main 3" state="1"/></element>
<element name="main_led3"><text string="main 4" state="1"/></element>
<element name="main_led4"><text string="main 5" state="1"/></element>
<element name="main_led5"><text string="main 6" state="1"/></element>
<element name="main_led6"><text string="main 7" state="1"/></element>
<element name="main_led7"><text string="main 8" state="1"/></element>
<element name="main_led8"><text string="main 9" state="1"/></element>
<element name="spu_led0"><text string="spu 1" state="1"/></element>
<element name="spu_led1"><text string="spu 2" state="1"/></element>
<element name="spu_led2"><text string="spu 3" state="1"/></element>
<element name="spu_led3"><text string="spu 4" state="1"/></element>
<element name="spu_led4"><text string="spu 5" state="1"/></element>
<element name="spu_led5"><text string="spu 6" state="1"/></element>
<element name="spu_led6"><text string="spu 7" state="1"/></element>
<element name="spu_led7"><text string="spu 8" state="1"/></element>
<element name="led">
<led16seg>
<color red="0" green="0.6" blue="1.0" />
</led16seg>
</element>
<view name="Lamps">
<screen index="0">
<bounds left="0" top="0" right="320" bottom="240"/>
</screen>
<bezel name="1p" element="1p"><bounds x="0" y="240" width="48" height="16"/></bezel>
<bezel name="2p" element="2p"><bounds x="0" y="256" width="48" height="16"/></bezel>
<bezel name="effect" element="effect"><bounds x="0" y="272" width="48" height="16"/></bezel>
<bezel name="vefx" element="vefx"><bounds x="0" y="288" width="48" height="16"/></bezel>
<bezel name="credit" element="credit"><bounds x="48" y="240" width="48" height="16"/></bezel>
<bezel name="neonlamp" element="neonlamp"><bounds x="48" y="256" width="48" height="16"/></bezel>
<bezel name="unknown1" element="neonlamp"><bounds x="48" y="272" width="48" height="16"/></bezel>
<bezel name="unknown2" element="neonlamp"><bounds x="48" y="288" width="48" height="16"/></bezel>
<bezel name="spotlight0" element="spotlight0"><bounds x="96" y="240" width="48" height="16"/></bezel>
<bezel name="spotlight1" element="spotlight1"><bounds x="96" y="256" width="48" height="16"/></bezel>
<bezel name="spotlight2" element="spotlight2"><bounds x="96" y="272" width="48" height="16"/></bezel>
<bezel name="spotlight3" element="spotlight3"><bounds x="96" y="288" width="48" height="16"/></bezel>
<bezel name="spotlight4" element="spotlight4"><bounds x="144" y="240" width="48" height="16"/></bezel>
<bezel name="spotlight5" element="spotlight5"><bounds x="144" y="256" width="48" height="16"/></bezel>
<bezel name="spotlight6" element="spotlight6"><bounds x="144" y="272" width="48" height="16"/></bezel>
<bezel name="spotlight7" element="spotlight7"><bounds x="144" y="288" width="48" height="16"/></bezel>
<bezel name="led0" element="led" state="0">
<bounds x="0" y="304" width="32" height="64"/>
</bezel>
<bezel name="led1" element="led" state="0">
<bounds x="32" y="304" width="32" height="64"/>
</bezel>
<bezel name="led2" element="led" state="0">
<bounds x="64" y="304" width="32" height="64"/>
</bezel>
<bezel name="led3" element="led" state="0">
<bounds x="96" y="304" width="32" height="64"/>
</bezel>
<bezel name="led4" element="led" state="0">
<bounds x="128" y="304" width="32" height="64"/>
</bezel>
<bezel name="led5" element="led" state="0">
<bounds x="160" y="304" width="32" height="64"/>
</bezel>
<bezel name="led6" element="led" state="0">
<bounds x="192" y="304" width="32" height="64"/>
</bezel>
<bezel name="led7" element="led" state="0">
<bounds x="224" y="304" width="32" height="64"/>
</bezel>
<bezel name="led8" element="led" state="0">
<bounds x="256" y="304" width="32" height="64"/>
</bezel>
<bezel name="key1-1" element="key1-1"><bounds x="0" y="368" width="48" height="16"/></bezel>
<bezel name="key1-2" element="key1-2"><bounds x="0" y="384" width="48" height="16"/></bezel>
<bezel name="key1-3" element="key1-3"><bounds x="0" y="400" width="48" height="16"/></bezel>
<bezel name="key1-4" element="key1-4"><bounds x="0" y="416" width="48" height="16"/></bezel>
<bezel name="key1-5" element="key1-5"><bounds x="48" y="368" width="48" height="16"/></bezel>
<bezel name="key1-6" element="key1-6"><bounds x="48" y="384" width="48" height="16"/></bezel>
<bezel name="key1-7" element="key1-7"><bounds x="48" y="400" width="48" height="16"/></bezel>
<bezel name="key2-1" element="key2-1"><bounds x="48" y="416" width="48" height="16"/></bezel>
<bezel name="key2-2" element="key2-2"><bounds x="96" y="368" width="48" height="16"/></bezel>
<bezel name="key2-3" element="key2-3"><bounds x="96" y="384" width="48" height="16"/></bezel>
<bezel name="key2-4" element="key2-4"><bounds x="96" y="400" width="48" height="16"/></bezel>
<bezel name="key2-5" element="key2-5"><bounds x="96" y="416" width="48" height="16"/></bezel>
<bezel name="key2-6" element="key2-6"><bounds x="144" y="368" width="48" height="16"/></bezel>
<bezel name="key2-7" element="key2-7"><bounds x="144" y="384" width="48" height="16"/></bezel>
<bezel name="unknown3" element="unknown3"><bounds x="144" y="400" width="48" height="16"/></bezel>
<bezel name="unknown4" element="unknown4"><bounds x="144" y="416" width="48" height="16"/></bezel>
<bezel name="main_led0" element="main_led0"><bounds x="0" y="432" width="24" height="16"/></bezel>
<bezel name="main_led1" element="main_led1"><bounds x="24" y="432" width="24" height="16"/></bezel>
<bezel name="main_led2" element="main_led2"><bounds x="48" y="432" width="24" height="16"/></bezel>
<bezel name="main_led3" element="main_led3"><bounds x="72" y="432" width="24" height="16"/></bezel>
<bezel name="main_led4" element="main_led4"><bounds x="96" y="432" width="24" height="16"/></bezel>
<bezel name="main_led5" element="main_led5"><bounds x="120" y="432" width="24" height="16"/></bezel>
<bezel name="main_led6" element="main_led6"><bounds x="144" y="432" width="24" height="16"/></bezel>
<bezel name="main_led7" element="main_led7"><bounds x="168" y="432" width="24" height="16"/></bezel>
<bezel name="main_led8" element="main_led8"><bounds x="192" y="432" width="24" height="16"/></bezel>
<bezel name="spu_led0" element="spu_led0"><bounds x="0" y="448" width="24" height="16"/></bezel>
<bezel name="spu_led1" element="spu_led1"><bounds x="24" y="448" width="24" height="16"/></bezel>
<bezel name="spu_led2" element="spu_led2"><bounds x="48" y="448" width="24" height="16"/></bezel>
<bezel name="spu_led3" element="spu_led3"><bounds x="72" y="448" width="24" height="16"/></bezel>
<bezel name="spu_led4" element="spu_led4"><bounds x="96" y="448" width="24" height="16"/></bezel>
<bezel name="spu_led5" element="spu_led5"><bounds x="120" y="448" width="24" height="16"/></bezel>
<bezel name="spu_led6" element="spu_led6"><bounds x="144" y="448" width="24" height="16"/></bezel>
<bezel name="spu_led7" element="spu_led7"><bounds x="168" y="448" width="24" height="16"/></bezel>
</view>
</mamelayout>