mirror of
https://github.com/holub/mame
synced 2025-06-07 13:23:50 +03:00
casio/cz230s.cpp: Added Casio CZ-230S and SZ-1. (#11969)
* cpu/upd7810: Added support for internal RAM. * sound/upd934g.cpp: Corrected channel mapping for play sample command. * video/mn1252.cpp: Added Panasonic MN1252 LCD controller emulation. * casio/ra3.cpp: Added RA-5 8 KiB RAM cartridge. New working systems ---------- Casio CZ-230S [BCM, =CO=Windler, Devin Acker] Casio SZ-1 [BCM, Devin Acker]
This commit is contained in:
parent
d851eb3224
commit
8e9d6cc955
@ -809,6 +809,18 @@ if (VIDEOS["MOS8563"]~=null) then
|
|||||||
}
|
}
|
||||||
end
|
end
|
||||||
|
|
||||||
|
--------------------------------------------------
|
||||||
|
--
|
||||||
|
--@src/devices/video/mn1252.h,VIDEOS["MN1252"] = true
|
||||||
|
--------------------------------------------------
|
||||||
|
|
||||||
|
if (VIDEOS["MN1252"]~=null) then
|
||||||
|
files {
|
||||||
|
MAME_DIR .. "src/devices/video/mn1252.cpp",
|
||||||
|
MAME_DIR .. "src/devices/video/mn1252.h",
|
||||||
|
}
|
||||||
|
end
|
||||||
|
|
||||||
--------------------------------------------------
|
--------------------------------------------------
|
||||||
--
|
--
|
||||||
--@src/devices/video/pc_vga.h,VIDEOS["PC_VGA"] = true
|
--@src/devices/video/pc_vga.h,VIDEOS["PC_VGA"] = true
|
||||||
|
@ -389,7 +389,8 @@ void upd7810_device::upd_internal_128_ram_map(address_map &map)
|
|||||||
|
|
||||||
void upd7810_device::upd_internal_256_ram_map(address_map &map)
|
void upd7810_device::upd_internal_256_ram_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0xff00, 0xffff).ram();
|
map(0xff00, 0xffff).view(m_ram_view);
|
||||||
|
m_ram_view[0](0xff00, 0xffff).ram();
|
||||||
}
|
}
|
||||||
|
|
||||||
void upd7810_device::upd_internal_4096_rom_128_ram_map(address_map &map)
|
void upd7810_device::upd_internal_4096_rom_128_ram_map(address_map &map)
|
||||||
@ -401,7 +402,8 @@ void upd7810_device::upd_internal_4096_rom_128_ram_map(address_map &map)
|
|||||||
void upd7810_device::upd_internal_4096_rom_256_ram_map(address_map &map)
|
void upd7810_device::upd_internal_4096_rom_256_ram_map(address_map &map)
|
||||||
{
|
{
|
||||||
map(0x0000, 0x0fff).rom();
|
map(0x0000, 0x0fff).rom();
|
||||||
map(0xff00, 0xffff).ram();
|
map(0xff00, 0xffff).view(m_ram_view);
|
||||||
|
m_ram_view[0](0xff00, 0xffff).ram();
|
||||||
}
|
}
|
||||||
|
|
||||||
upd7810_device::upd7810_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map)
|
upd7810_device::upd7810_device(const machine_config &mconfig, device_type type, const char *tag, device_t *owner, uint32_t clock, address_map_constructor internal_map)
|
||||||
@ -424,6 +426,7 @@ upd7810_device::upd7810_device(const machine_config &mconfig, device_type type,
|
|||||||
, m_pf_out_cb(*this)
|
, m_pf_out_cb(*this)
|
||||||
, m_pt_in_cb(*this, 0) // TODO: uPD7807 only
|
, m_pt_in_cb(*this, 0) // TODO: uPD7807 only
|
||||||
, m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0, internal_map)
|
, m_program_config("program", ENDIANNESS_LITTLE, 8, 16, 0, internal_map)
|
||||||
|
, m_ram_view(*this, "ram_view")
|
||||||
, m_pa_pullups(0xff)
|
, m_pa_pullups(0xff)
|
||||||
, m_pb_pullups(0xff)
|
, m_pb_pullups(0xff)
|
||||||
, m_pc_pullups(0xff)
|
, m_pc_pullups(0xff)
|
||||||
|
@ -236,6 +236,7 @@ protected:
|
|||||||
static const struct opcode_s s_opXX_78c06[256];
|
static const struct opcode_s s_opXX_78c06[256];
|
||||||
|
|
||||||
address_space_config m_program_config;
|
address_space_config m_program_config;
|
||||||
|
memory_view m_ram_view;
|
||||||
|
|
||||||
PAIR m_ppc; /* previous program counter */
|
PAIR m_ppc; /* previous program counter */
|
||||||
PAIR m_pc; /* program counter */
|
PAIR m_pc; /* program counter */
|
||||||
|
@ -1042,6 +1042,11 @@ void upd7810_device::MOV_TMM_A()
|
|||||||
void upd7810_device::MOV_MM_A()
|
void upd7810_device::MOV_MM_A()
|
||||||
{
|
{
|
||||||
MM = A;
|
MM = A;
|
||||||
|
|
||||||
|
if (BIT(A, 3))
|
||||||
|
m_ram_view.select(0);
|
||||||
|
else
|
||||||
|
m_ram_view.disable();
|
||||||
}
|
}
|
||||||
|
|
||||||
/* 4d d1: 0100 1101 1101 0001 */
|
/* 4d d1: 0100 1101 1101 0001 */
|
||||||
|
@ -9,13 +9,14 @@
|
|||||||
TODO:
|
TODO:
|
||||||
- Correct MUTED and ACCENTED (currently just changes volume)
|
- Correct MUTED and ACCENTED (currently just changes volume)
|
||||||
- T1 input
|
- T1 input
|
||||||
- 8 channels?
|
|
||||||
|
|
||||||
***************************************************************************/
|
***************************************************************************/
|
||||||
|
|
||||||
#include "emu.h"
|
#include "emu.h"
|
||||||
#include "upd934g.h"
|
#include "upd934g.h"
|
||||||
|
|
||||||
|
#define VERBOSE (0)
|
||||||
|
#include "logmacro.h"
|
||||||
|
|
||||||
//**************************************************************************
|
//**************************************************************************
|
||||||
// DEVICE DEFINITIONS
|
// DEVICE DEFINITIONS
|
||||||
@ -54,13 +55,9 @@ void upd934g_device::device_start()
|
|||||||
// register for save states
|
// register for save states
|
||||||
save_pointer(NAME(m_addr), 16);
|
save_pointer(NAME(m_addr), 16);
|
||||||
|
|
||||||
for (unsigned i = 0; i < 4; i++)
|
save_item(STRUCT_MEMBER(m_channel, pos));
|
||||||
{
|
save_item(STRUCT_MEMBER(m_channel, playing));
|
||||||
save_item(NAME(m_channel[i].pos), i);
|
save_item(STRUCT_MEMBER(m_channel, effect));
|
||||||
save_item(NAME(m_channel[i].playing), i);
|
|
||||||
save_item(NAME(m_channel[i].volume), i);
|
|
||||||
save_item(NAME(m_channel[i].effect), i);
|
|
||||||
}
|
|
||||||
|
|
||||||
save_item(NAME(m_sample));
|
save_item(NAME(m_sample));
|
||||||
save_item(NAME(m_ready));
|
save_item(NAME(m_ready));
|
||||||
@ -93,13 +90,13 @@ void upd934g_device::sound_stream_update(sound_stream &stream, std::vector<read_
|
|||||||
|
|
||||||
for (unsigned i = 0; i < outputs[ch].samples(); i++)
|
for (unsigned i = 0; i < outputs[ch].samples(); i++)
|
||||||
{
|
{
|
||||||
int8_t raw = static_cast<int8_t>(read_byte(m_channel[ch].pos));
|
int16_t raw = static_cast<int8_t>(read_byte(m_channel[ch].pos)) * 4;
|
||||||
|
|
||||||
// normal, muted, accented
|
// normal, muted, accented
|
||||||
const double adjust[] = { 0, 0.7, 0.4, 1.0 };
|
const double adjust[] = { 0, 0.7, 0.4, 1.0 };
|
||||||
raw *= adjust[m_channel[ch].effect];
|
raw *= adjust[m_channel[ch].effect];
|
||||||
|
|
||||||
outputs[ch].put_int(i, raw * (m_channel[ch].volume + 1), 32768 / 64);
|
outputs[ch].put_int(i, raw, 32768 / 64);
|
||||||
|
|
||||||
if (++m_channel[ch].pos >= end)
|
if (++m_channel[ch].pos >= end)
|
||||||
{
|
{
|
||||||
@ -127,24 +124,23 @@ void upd934g_device::write(offs_t offset, uint8_t data)
|
|||||||
// format of data written here is:
|
// format of data written here is:
|
||||||
// 76------ command
|
// 76------ command
|
||||||
// --5432-- sample number
|
// --5432-- sample number
|
||||||
// ------10 volume?
|
// ------10 output channel
|
||||||
m_sample = (data >> 2) & 0x0f;
|
m_sample = (data >> 2) & 0x0f;
|
||||||
|
|
||||||
switch (data >> 6)
|
switch (data >> 6)
|
||||||
{
|
{
|
||||||
case 0:
|
case 0:
|
||||||
logerror("CMD STORE ADDRESS sample %x\n", m_sample);
|
LOG("CMD STORE ADDRESS sample %x\n", m_sample);
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1: // normal
|
||||||
case 2:
|
case 2: // muted
|
||||||
case 3:
|
case 3: // accented
|
||||||
logerror("CMD PLAY sample %x (channel %d, effect %d)\n", m_sample, m_sample >> 1, data >> 6);
|
|
||||||
if (m_sample < 8)
|
|
||||||
{
|
{
|
||||||
m_channel[m_sample >> 1].pos = m_addr[m_sample];
|
const u8 ch = (data & 3) ^ 2; // effective order seems to be "2, 3, 0, 1"
|
||||||
m_channel[m_sample >> 1].playing = m_sample;
|
LOG("CMD PLAY sample %x (channel %d, effect %d)\n", m_sample, ch, data >> 6);
|
||||||
m_channel[m_sample >> 1].volume = data & 0x03;
|
m_channel[ch].pos = m_addr[m_sample];
|
||||||
m_channel[m_sample >> 1].effect = data >> 6;
|
m_channel[ch].playing = m_sample;
|
||||||
|
m_channel[ch].effect = data >> 6;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
@ -154,7 +150,7 @@ void upd934g_device::write(offs_t offset, uint8_t data)
|
|||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
m_addr[m_sample] = (m_addr[m_sample] & 0x00ff) | (data << 8);
|
m_addr[m_sample] = (m_addr[m_sample] & 0x00ff) | (data << 8);
|
||||||
logerror(" sample %x address = %04x\n", m_sample, m_addr[m_sample]);
|
LOG(" sample %x address = %04x\n", m_sample, m_addr[m_sample]);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
m_ready = true;
|
m_ready = true;
|
||||||
|
@ -45,7 +45,6 @@ private:
|
|||||||
{
|
{
|
||||||
uint16_t pos;
|
uint16_t pos;
|
||||||
int playing;
|
int playing;
|
||||||
int volume;
|
|
||||||
int effect;
|
int effect;
|
||||||
}
|
}
|
||||||
m_channel[4];
|
m_channel[4];
|
||||||
|
103
src/devices/video/mn1252.cpp
Normal file
103
src/devices/video/mn1252.cpp
Normal file
@ -0,0 +1,103 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Devin Acker
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Panasonic MN1252 LCD controller
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
#include "mn1252.h"
|
||||||
|
|
||||||
|
#include <cassert>
|
||||||
|
|
||||||
|
|
||||||
|
DEFINE_DEVICE_TYPE(MN1252, mn1252_device, "mn1252", "Panasonic MN1252 LCD controller")
|
||||||
|
|
||||||
|
const u8 mn1252_device::OUTPUT_DIGITS[0x40] =
|
||||||
|
{
|
||||||
|
// bit 0..7 = segment a..h (from datasheet)
|
||||||
|
0x00, 0x77, 0x7f, 0x39, 0x3f, 0x79, 0x71, 0x3d,
|
||||||
|
0x76, 0x06, 0x1e, 0xf0, 0x38, 0xb7, 0xb6, 0xbf,
|
||||||
|
0x73, 0xbf, 0xf3, 0x6d, 0x07, 0x3e, 0xa6, 0xbe,
|
||||||
|
0xf2, 0x6e, 0x5b, 0x48, 0x0f, 0x46, 0x49, 0x44,
|
||||||
|
0x00, 0x08, 0x10, 0x18, 0x20, 0x28, 0x30, 0x38,
|
||||||
|
0x7c, 0x58, 0x5e, 0x54, 0x5c, 0x40, 0x21, 0x0c,
|
||||||
|
0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07,
|
||||||
|
0x7f, 0x6f, 0x01, 0x36, 0x5f, 0x7b, 0x74, 0x62
|
||||||
|
};
|
||||||
|
|
||||||
|
mn1252_device::mn1252_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: device_t(mconfig, MN1252, tag, owner, clock)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void mn1252_device::device_start()
|
||||||
|
{
|
||||||
|
save_item(NAME(m_data));
|
||||||
|
save_item(NAME(m_first_nibble));
|
||||||
|
save_item(NAME(m_nibble_count));
|
||||||
|
save_item(NAME(m_ce));
|
||||||
|
save_item(NAME(m_std));
|
||||||
|
save_item(NAME(m_output));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void mn1252_device::device_reset()
|
||||||
|
{
|
||||||
|
m_data = m_first_nibble = 0;
|
||||||
|
m_nibble_count = 0;
|
||||||
|
m_ce = m_std = 0;
|
||||||
|
|
||||||
|
std::fill(std::begin(m_output), std::end(m_output), 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
u16 mn1252_device::output(offs_t digit) const
|
||||||
|
{
|
||||||
|
assert(digit < 6);
|
||||||
|
return m_output[digit];
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void mn1252_device::data_w(u8 data)
|
||||||
|
{
|
||||||
|
m_data = data & 0xf;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void mn1252_device::ce_w(int state)
|
||||||
|
{
|
||||||
|
if (!m_ce && state)
|
||||||
|
{
|
||||||
|
m_nibble_count = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_ce = state;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void mn1252_device::std_w(int state)
|
||||||
|
{
|
||||||
|
if (m_ce && m_std && !state && m_nibble_count < 12)
|
||||||
|
{
|
||||||
|
if (!(m_nibble_count % 2))
|
||||||
|
{
|
||||||
|
m_first_nibble = m_data;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
const u8 data = (m_first_nibble << 4) | m_data;
|
||||||
|
u16 output = OUTPUT_DIGITS[data & 0x3f];
|
||||||
|
if (BIT(data, 6)) output |= 0x80; // segment h
|
||||||
|
if (BIT(data, 7)) output |= 0x100; // segment p
|
||||||
|
|
||||||
|
m_output[m_nibble_count / 2] = output;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_nibble_count++;
|
||||||
|
}
|
||||||
|
|
||||||
|
m_std = state;
|
||||||
|
}
|
42
src/devices/video/mn1252.h
Normal file
42
src/devices/video/mn1252.h
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
// license:BSD-3-Clause
|
||||||
|
// copyright-holders:Devin Acker
|
||||||
|
/***************************************************************************
|
||||||
|
|
||||||
|
Panasonic MN1252 LCD controller
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#ifndef MAME_VIDEO_MN1252_H
|
||||||
|
#define MAME_VIDEO_MN1252_H
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
class mn1252_device : public device_t
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
mn1252_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||||
|
|
||||||
|
u16 output(offs_t digit) const;
|
||||||
|
|
||||||
|
void data_w(u8 data);
|
||||||
|
void ce_w(int state);
|
||||||
|
void std_w(int state);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void device_start() override;
|
||||||
|
virtual void device_reset() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
static const u8 OUTPUT_DIGITS[0x40];
|
||||||
|
|
||||||
|
u8 m_data;
|
||||||
|
u8 m_first_nibble;
|
||||||
|
u8 m_nibble_count;
|
||||||
|
u8 m_ce, m_std;
|
||||||
|
|
||||||
|
u16 m_output[6];
|
||||||
|
};
|
||||||
|
|
||||||
|
DECLARE_DEVICE_TYPE(MN1252, mn1252_device)
|
||||||
|
|
||||||
|
#endif // MAME_VIDEO_MN1252_H
|
694
src/mame/casio/cz230s.cpp
Normal file
694
src/mame/casio/cz230s.cpp
Normal file
@ -0,0 +1,694 @@
|
|||||||
|
// license: BSD-3-Clause
|
||||||
|
// copyright-holders: Devin Acker
|
||||||
|
/***************************************************************************
|
||||||
|
Casio CZ-230S digital synthesizer and SZ-1 MIDI sequencer
|
||||||
|
|
||||||
|
Misc. stuff:
|
||||||
|
Both of these devices have a way of loading and running external code.
|
||||||
|
- CZ-230S:
|
||||||
|
Hold "portamento speed", "value up", and "value down" together on boot. This will cause the
|
||||||
|
LCD to display "L-", as when loading from tape. At this point, the unit will try to load
|
||||||
|
$700 bytes over MIDI/serial to address $3800 and then jump to it.
|
||||||
|
- SZ-1:
|
||||||
|
While not recording or playing, pressing the Rest + Dot + Triplet buttons at the same time will
|
||||||
|
cause the firmware to check for a JMP instruction (54) at the first byte of cartridge memory
|
||||||
|
($e000), and execute it if there is one.
|
||||||
|
|
||||||
|
TODO: auto power off. Even after activating this, both units still continue executing as normal
|
||||||
|
(and the power switch itself is not connected to the CPU, unlike on the CZ-101/1000)
|
||||||
|
|
||||||
|
***************************************************************************/
|
||||||
|
|
||||||
|
#include "emu.h"
|
||||||
|
|
||||||
|
#include "ra3.h"
|
||||||
|
|
||||||
|
#include "bus/midi/midiinport.h"
|
||||||
|
#include "bus/midi/midioutport.h"
|
||||||
|
#include "cpu/upd7810/upd7811.h"
|
||||||
|
#include "imagedev/cassette.h"
|
||||||
|
#include "machine/clock.h"
|
||||||
|
#include "machine/nvram.h"
|
||||||
|
#include "sound/beep.h"
|
||||||
|
#include "sound/upd933.h"
|
||||||
|
#include "sound/upd934g.h"
|
||||||
|
#include "video/mn1252.h"
|
||||||
|
|
||||||
|
#include "screen.h"
|
||||||
|
#include "speaker.h"
|
||||||
|
|
||||||
|
#include "cz230s.lh"
|
||||||
|
#include "sz1.lh"
|
||||||
|
|
||||||
|
namespace {
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// TYPE DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
class cz230s_state : public driver_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
cz230s_state(const machine_config &mconfig, device_type type, const char *tag) :
|
||||||
|
driver_device(mconfig, type, tag),
|
||||||
|
m_maincpu(*this, "maincpu"),
|
||||||
|
m_lcdc(*this, "lcdc"),
|
||||||
|
m_cassette(*this, "cassette"),
|
||||||
|
m_pd(*this, "pd"),
|
||||||
|
m_pcm(*this, "pcm"),
|
||||||
|
m_keys(*this, "KC%u", 0U),
|
||||||
|
m_lcd_seg(*this, "%u.%u", 0U, 0U),
|
||||||
|
m_led(*this, "led%u.%u", 0U, 0U),
|
||||||
|
m_rhythm(*this, "rhythm_pos"),
|
||||||
|
m_mode(*this, "mode_pos")
|
||||||
|
{ }
|
||||||
|
|
||||||
|
void config_base(machine_config &config, u16 screen_w, u16 screen_h, bool midi_thru = true);
|
||||||
|
void cz230s(machine_config &config);
|
||||||
|
void sz1(machine_config &config);
|
||||||
|
|
||||||
|
void keys_w(int state) { m_key_sel = state; }
|
||||||
|
void keys_mux_w(int state) { m_key_mux = state; }
|
||||||
|
template <int Row> DECLARE_CUSTOM_INPUT_MEMBER(keys_row_r);
|
||||||
|
template <int Row> u8 keys_analog_r();
|
||||||
|
|
||||||
|
DECLARE_INPUT_CHANGED_MEMBER(rhythm_w);
|
||||||
|
template <int Bit> DECLARE_CUSTOM_INPUT_MEMBER(rhythm_r) { return m_rhythm >> Bit; }
|
||||||
|
DECLARE_INPUT_CHANGED_MEMBER(mode_w);
|
||||||
|
DECLARE_CUSTOM_INPUT_MEMBER(mode_r) { return m_mode; }
|
||||||
|
|
||||||
|
void cassette_w(int state);
|
||||||
|
void cassette_motor_w(int state);
|
||||||
|
DECLARE_CUSTOM_INPUT_MEMBER(cassette_r);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
virtual void machine_start() override;
|
||||||
|
virtual void machine_reset() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
void cz230s_map(address_map &map);
|
||||||
|
void cz230s_pcm_map(address_map &map);
|
||||||
|
void sz1_map(address_map &map);
|
||||||
|
|
||||||
|
void pcm_w(offs_t offset, u8 data);
|
||||||
|
template <int Num> void led_w(u8 data);
|
||||||
|
void port_a_w(u8 data);
|
||||||
|
u8 keys_r();
|
||||||
|
|
||||||
|
void render_w(int state);
|
||||||
|
|
||||||
|
required_device<upd7811_device> m_maincpu;
|
||||||
|
required_device<mn1252_device> m_lcdc;
|
||||||
|
required_device<cassette_image_device> m_cassette;
|
||||||
|
optional_device<upd933_device> m_pd;
|
||||||
|
optional_device<upd934g_device> m_pcm;
|
||||||
|
|
||||||
|
optional_ioport_array<12> m_keys;
|
||||||
|
|
||||||
|
output_finder<6, 9> m_lcd_seg;
|
||||||
|
output_finder<2, 8> m_led;
|
||||||
|
output_finder<> m_rhythm;
|
||||||
|
output_finder<> m_mode;
|
||||||
|
|
||||||
|
u8 m_port_a;
|
||||||
|
u8 m_key_sel;
|
||||||
|
u8 m_key_mux;
|
||||||
|
u8 m_midi_rx;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// ADDRESS MAPS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
void cz230s_state::cz230s_map(address_map &map)
|
||||||
|
{
|
||||||
|
map.unmap_value_high();
|
||||||
|
|
||||||
|
// map(0x0000, 0x0fff).rom(); - internal
|
||||||
|
map(0x1000, 0x1fff).w(FUNC(cz230s_state::pcm_w));
|
||||||
|
map(0x2000, 0x3fff).ram().share("nvram");
|
||||||
|
map(0x4000, 0x7fff).rw(m_pd, FUNC(upd933_device::read), FUNC(upd933_device::write));
|
||||||
|
map(0x8000, 0xffff).rom().region("program", 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void cz230s_state::cz230s_pcm_map(address_map &map)
|
||||||
|
{
|
||||||
|
map(0x0000, 0x7fff).rom();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void cz230s_state::sz1_map(address_map &map)
|
||||||
|
{
|
||||||
|
map.unmap_value_high();
|
||||||
|
|
||||||
|
// map(0x0000, 0x0fff).rom(); - internal
|
||||||
|
map(0x4000, 0x7fff).rom().region("program", 0);
|
||||||
|
map(0x8000, 0x9fff).mirror(0x2000).ram().share("nvram");
|
||||||
|
map(0xc000, 0xcfff).w(FUNC(cz230s_state::led_w<0>));
|
||||||
|
map(0xd000, 0xdfff).w(FUNC(cz230s_state::led_w<1>));
|
||||||
|
map(0xe000, 0xffff).rw("cart", FUNC(casio_ram_cart_device::read), FUNC(casio_ram_cart_device::write));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// INPUT PORT DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( cz230s )
|
||||||
|
PORT_START("KC0")
|
||||||
|
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("C2")
|
||||||
|
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("C#2")
|
||||||
|
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("D2")
|
||||||
|
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("D#2")
|
||||||
|
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("E2")
|
||||||
|
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("F2")
|
||||||
|
PORT_BIT(0x1c0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Solo / Insert")
|
||||||
|
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Portamento On/Off")
|
||||||
|
PORT_BIT(0x800, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_T) PORT_NAME("Bend Range / Check")
|
||||||
|
|
||||||
|
PORT_START("KC1")
|
||||||
|
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("F#2")
|
||||||
|
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("G2")
|
||||||
|
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("G#2")
|
||||||
|
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("A2")
|
||||||
|
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("A#2")
|
||||||
|
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("B2")
|
||||||
|
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Rhythm 1")
|
||||||
|
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Rhythm 2")
|
||||||
|
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Rhythm 3")
|
||||||
|
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Rhythm 4")
|
||||||
|
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_5) PORT_NAME("Rhythm 5")
|
||||||
|
PORT_BIT(0x800, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_G) PORT_NAME("Preset 1")
|
||||||
|
|
||||||
|
PORT_START("KC2")
|
||||||
|
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("C3")
|
||||||
|
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("C#3")
|
||||||
|
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("D3")
|
||||||
|
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("D#3")
|
||||||
|
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("E3")
|
||||||
|
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("F3")
|
||||||
|
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_6) PORT_NAME("Rhythm 6")
|
||||||
|
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_7) PORT_NAME("Rhythm 7")
|
||||||
|
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_8) PORT_NAME("Rhythm 8")
|
||||||
|
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_9) PORT_NAME("Rhythm 9")
|
||||||
|
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_0) PORT_NAME("Rhythm 10")
|
||||||
|
PORT_BIT(0x800, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_H) PORT_NAME("Preset 2")
|
||||||
|
|
||||||
|
PORT_START("KC3")
|
||||||
|
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("F#3")
|
||||||
|
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("G3")
|
||||||
|
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("G#3")
|
||||||
|
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("A3")
|
||||||
|
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("A#3")
|
||||||
|
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("B3")
|
||||||
|
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_J) PORT_NAME("Program")
|
||||||
|
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Intro / Fill In")
|
||||||
|
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_LEFT) PORT_NAME("Tempo Down")
|
||||||
|
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("Tempo Up")
|
||||||
|
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Start / Stop / Record")
|
||||||
|
PORT_BIT(0x800, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("Synchro / Clear")
|
||||||
|
|
||||||
|
PORT_START("KC4")
|
||||||
|
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("C4")
|
||||||
|
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("C#4")
|
||||||
|
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("D4")
|
||||||
|
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("D#4")
|
||||||
|
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("E4")
|
||||||
|
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("F4")
|
||||||
|
PORT_BIT(0xfc0, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_CUSTOM_MEMBER(cz230s_state, rhythm_r<0>)
|
||||||
|
|
||||||
|
PORT_START("KC5")
|
||||||
|
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("F#4")
|
||||||
|
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("G4")
|
||||||
|
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("G#4")
|
||||||
|
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("A4")
|
||||||
|
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("A#4")
|
||||||
|
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("B4")
|
||||||
|
PORT_BIT(0xfc0, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_CUSTOM_MEMBER(cz230s_state, rhythm_r<6>)
|
||||||
|
|
||||||
|
PORT_START("KC6")
|
||||||
|
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("C5")
|
||||||
|
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("C#5")
|
||||||
|
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("D5")
|
||||||
|
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("D#5")
|
||||||
|
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("E5")
|
||||||
|
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("F5")
|
||||||
|
PORT_BIT(0x3c0, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_CUSTOM_MEMBER(cz230s_state, rhythm_r<12>)
|
||||||
|
PORT_BIT(0xc00, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
|
||||||
|
PORT_START("KC7")
|
||||||
|
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("F#5")
|
||||||
|
PORT_BIT(0x002, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("G5")
|
||||||
|
PORT_BIT(0x004, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("G#5")
|
||||||
|
PORT_BIT(0x008, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("A5")
|
||||||
|
PORT_BIT(0x010, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("A#5")
|
||||||
|
PORT_BIT(0x020, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("B5")
|
||||||
|
PORT_BIT(0x7c0, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_CUSTOM_MEMBER(cz230s_state, mode_r)
|
||||||
|
PORT_BIT(0x800, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
|
||||||
|
PORT_START("KC8")
|
||||||
|
PORT_BIT(0x001, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("C6")
|
||||||
|
PORT_BIT(0x03e, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_Y) PORT_NAME("MT")
|
||||||
|
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("MIDI Channel")
|
||||||
|
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Portamento Speed")
|
||||||
|
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Transpose")
|
||||||
|
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_DOWN) PORT_NAME("Value Down / Save")
|
||||||
|
PORT_BIT(0x800, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_UP) PORT_NAME("Value Up / Load")
|
||||||
|
|
||||||
|
PORT_START("KC9")
|
||||||
|
PORT_BIT(0x03f, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("Tone 4")
|
||||||
|
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("Tone 5")
|
||||||
|
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("Tone 6")
|
||||||
|
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("Tone 7")
|
||||||
|
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Tone 8")
|
||||||
|
PORT_BIT(0x800, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("Tone 9")
|
||||||
|
|
||||||
|
PORT_START("KC10")
|
||||||
|
PORT_BIT(0x03f, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("Tone 0")
|
||||||
|
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Tone 1")
|
||||||
|
PORT_BIT(0x100, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Tone 2")
|
||||||
|
PORT_BIT(0x200, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Tone 3")
|
||||||
|
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL_PAD) PORT_NAME("Cancel")
|
||||||
|
PORT_BIT(0x800, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
|
||||||
|
PORT_START("KC11")
|
||||||
|
PORT_BIT(0x03f, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x040, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Tune Down")
|
||||||
|
PORT_BIT(0x080, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_NAME("Tune Up")
|
||||||
|
PORT_BIT(0x100, 0x000, IPT_OTHER ) PORT_TOGGLE PORT_NAME("MIDI Clock")
|
||||||
|
PORT_DIPSETTING(0x100, "External")
|
||||||
|
PORT_DIPSETTING(0x000, "Internal")
|
||||||
|
PORT_BIT(0x200, 0x000, IPT_OTHER ) PORT_TOGGLE PORT_NAME("MIDI")
|
||||||
|
PORT_DIPSETTING(0x200, DEF_STR(Off)) // this should be on by default
|
||||||
|
PORT_DIPSETTING(0x000, DEF_STR(On))
|
||||||
|
PORT_BIT(0x400, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x800, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_TOGGLE PORT_NAME("Auto Power Off")
|
||||||
|
|
||||||
|
PORT_START("RHYTHM")
|
||||||
|
PORT_BIT(0x0001, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (BD)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0001)
|
||||||
|
PORT_BIT(0x0002, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (SD)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0002)
|
||||||
|
PORT_BIT(0x0004, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (LT)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0004)
|
||||||
|
PORT_BIT(0x0008, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (HT)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0008)
|
||||||
|
PORT_BIT(0x0010, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (LB)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0010)
|
||||||
|
PORT_BIT(0x0020, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (HB)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0020)
|
||||||
|
PORT_BIT(0x0040, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (CH)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0040)
|
||||||
|
PORT_BIT(0x0080, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (Rim)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0080)
|
||||||
|
PORT_BIT(0x0100, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (OH)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0100)
|
||||||
|
PORT_BIT(0x0200, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (CB)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0200)
|
||||||
|
PORT_BIT(0x0400, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (Ride)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0400)
|
||||||
|
PORT_BIT(0x0800, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (Claps)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x0800)
|
||||||
|
PORT_BIT(0x1000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (PD 1)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x1000)
|
||||||
|
PORT_BIT(0x2000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (PD 2)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x2000)
|
||||||
|
PORT_BIT(0x4000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (PD 3)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x4000)
|
||||||
|
PORT_BIT(0x8000, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Rhythm Sound (PD 4)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, rhythm_w, 0x8000)
|
||||||
|
|
||||||
|
PORT_START("MODE")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Mode (Pattern Play)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, mode_w, 0x01)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Mode (Pattern Memory 4/4)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, mode_w, 0x02)
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Mode (Pattern Memory 3/4)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, mode_w, 0x04)
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Mode (Song Play)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, mode_w, 0x08)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OTHER ) PORT_NAME("Mode (Song Memory)") PORT_CHANGED_MEMBER(DEVICE_SELF, cz230s_state, mode_w, 0x10)
|
||||||
|
|
||||||
|
PORT_START("PB")
|
||||||
|
PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_OUTPUT) PORT_WRITE_LINE_MEMBER(cz230s_state, keys_w)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_CUSTOM) PORT_READ_LINE_DEVICE_MEMBER("pd", upd933_device, rq_r)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OUTPUT) PORT_WRITE_LINE_DEVICE_MEMBER("pd", upd933_device, cs_w)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OUTPUT) // TODO: auto power off
|
||||||
|
|
||||||
|
PORT_START("PC")
|
||||||
|
PORT_BIT(0x07, IP_ACTIVE_HIGH, IPT_UNUSED) // MIDI in/out/clock
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(cz230s_state, cassette_r)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OUTPUT) PORT_WRITE_LINE_MEMBER(cz230s_state, cassette_w)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OUTPUT) PORT_WRITE_LINE_MEMBER(cz230s_state, cassette_motor_w)
|
||||||
|
PORT_BIT(0xc0, IP_ACTIVE_LOW, IPT_OUTPUT) PORT_WRITE_LINE_MEMBER(cz230s_state, keys_mux_w)
|
||||||
|
|
||||||
|
PORT_START("AN1")
|
||||||
|
PORT_BIT(0xff, 0x7f, IPT_PADDLE) PORT_NAME("Pitch Wheel") PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CODE_DEC(JOYCODE_Y_DOWN_SWITCH) PORT_CODE_INC(JOYCODE_Y_UP_SWITCH)
|
||||||
|
|
||||||
|
PORT_START("AN2")
|
||||||
|
PORT_CONFNAME(0xff, 0xff, "Battery Level")
|
||||||
|
PORT_CONFSETTING( 0x00, "Low")
|
||||||
|
PORT_CONFSETTING( 0xff, "Normal")
|
||||||
|
|
||||||
|
PORT_START("AN3")
|
||||||
|
PORT_BIT(0xff, 0xff, IPT_POSITIONAL_H) PORT_NAME("PD Rhythm Volume") PORT_REVERSE PORT_SENSITIVITY(100) PORT_KEYDELTA(10) PORT_CENTERDELTA(0) PORT_CODE_DEC(JOYCODE_X_LEFT_SWITCH) PORT_CODE_INC(JOYCODE_X_RIGHT_SWITCH)
|
||||||
|
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
static INPUT_PORTS_START( sz1 )
|
||||||
|
PORT_START("KC0")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_0_PAD) PORT_NAME("Rest")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_1_PAD) PORT_NAME("Dot")
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_2_PAD) PORT_NAME("Triplet")
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_3_PAD) PORT_NAME("Tie")
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_LEFT) PORT_NAME("Reverse / Save")
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_RIGHT) PORT_NAME("Forward / Load")
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_Z) PORT_NAME("Play / Check")
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_X) PORT_NAME("Stop")
|
||||||
|
|
||||||
|
PORT_START("KC1")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_4_PAD) PORT_NAME("8th Note")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_5_PAD) PORT_NAME("16th Note")
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_6_PAD) PORT_NAME("32nd Note")
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_DOWN ) PORT_NAME("Tempo Down")
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_A) PORT_NAME("Real Time")
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_S) PORT_NAME("Manual")
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_D) PORT_NAME("Record")
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_F) PORT_NAME("Reset")
|
||||||
|
|
||||||
|
PORT_START("KC2")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_7_PAD) PORT_NAME("Quarter Note")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_8_PAD) PORT_NAME("Half Note")
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_9_PAD) PORT_NAME("Whole Note")
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_UP) PORT_NAME("Tempo Up")
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_1) PORT_NAME("Track 1")
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_2) PORT_NAME("Track 2")
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_3) PORT_NAME("Track 3")
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_4) PORT_NAME("Track 4")
|
||||||
|
|
||||||
|
PORT_START("KC3")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_Q) PORT_NAME("Copy")
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_INSERT) PORT_NAME("Insert")
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_DEL) PORT_NAME("Delete")
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_ENTER) PORT_NAME("Metronome / Enter")
|
||||||
|
PORT_BIT(0xf0, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
|
||||||
|
PORT_START("KC4")
|
||||||
|
PORT_BIT(0x01, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x02, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_E) PORT_NAME("Repeat")
|
||||||
|
PORT_BIT(0x04, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_W) PORT_NAME("MIDI")
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_LOW, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OTHER ) PORT_TOGGLE PORT_NAME("Auto Power Off")
|
||||||
|
PORT_BIT(0x20, 0x00, IPT_OTHER ) PORT_TOGGLE PORT_NAME("MIDI Clock")
|
||||||
|
PORT_DIPSETTING(0x20, "External")
|
||||||
|
PORT_DIPSETTING(0x00, "Internal")
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_LOW, IPT_OTHER ) PORT_TOGGLE PORT_NAME("Touch Data")
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_KEYPAD) PORT_CODE(KEYCODE_R) PORT_NAME("Cartridge / MT")
|
||||||
|
|
||||||
|
PORT_START("PA")
|
||||||
|
PORT_BIT(0x0f, IP_ACTIVE_HIGH, IPT_OUTPUT) PORT_WRITE_LINE_DEVICE_MEMBER("lcdc", mn1252_device, data_w)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_HIGH, IPT_OUTPUT) PORT_WRITE_LINE_DEVICE_MEMBER("lcdc", mn1252_device, ce_w)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OUTPUT) PORT_WRITE_LINE_DEVICE_MEMBER("lcdc", mn1252_device, std_w)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(cz230s_state, keys_row_r<7>)
|
||||||
|
|
||||||
|
PORT_START("PB")
|
||||||
|
PORT_BIT(0x1f, IP_ACTIVE_LOW, IPT_OUTPUT) PORT_WRITE_LINE_MEMBER(cz230s_state, keys_w)
|
||||||
|
PORT_BIT(0x60, IP_ACTIVE_HIGH, IPT_UNUSED)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_HIGH, IPT_OUTPUT) // TODO: auto power off
|
||||||
|
|
||||||
|
PORT_START("PC")
|
||||||
|
PORT_BIT(0x07, IP_ACTIVE_HIGH, IPT_UNUSED) // MIDI in/out/clock
|
||||||
|
PORT_BIT(0x08, IP_ACTIVE_HIGH, IPT_CUSTOM) PORT_CUSTOM_MEMBER(cz230s_state, cassette_r)
|
||||||
|
PORT_BIT(0x10, IP_ACTIVE_LOW, IPT_OUTPUT) PORT_WRITE_LINE_DEVICE_MEMBER("beep", beep_device, set_state)
|
||||||
|
PORT_BIT(0x20, IP_ACTIVE_HIGH, IPT_OUTPUT) PORT_WRITE_LINE_MEMBER(cz230s_state, cassette_motor_w)
|
||||||
|
PORT_BIT(0x40, IP_ACTIVE_HIGH, IPT_OUTPUT) PORT_WRITE_LINE_MEMBER(cz230s_state, cassette_w)
|
||||||
|
PORT_BIT(0x80, IP_ACTIVE_LOW, IPT_OTHER ) PORT_NAME("Foot Switch")
|
||||||
|
INPUT_PORTS_END
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// MACHINE EMULATION
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
void cz230s_state::machine_start()
|
||||||
|
{
|
||||||
|
m_lcd_seg.resolve();
|
||||||
|
m_led.resolve();
|
||||||
|
m_rhythm.resolve();
|
||||||
|
m_mode.resolve();
|
||||||
|
|
||||||
|
m_rhythm = 1;
|
||||||
|
m_mode = 1;
|
||||||
|
|
||||||
|
m_port_a = 0;
|
||||||
|
|
||||||
|
save_item(NAME(m_port_a));
|
||||||
|
save_item(NAME(m_key_sel));
|
||||||
|
save_item(NAME(m_key_mux));
|
||||||
|
save_item(NAME(m_midi_rx));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void cz230s_state::machine_reset()
|
||||||
|
{
|
||||||
|
m_key_sel = m_key_mux = 0;
|
||||||
|
m_midi_rx = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void cz230s_state::pcm_w(offs_t offset, u8 data)
|
||||||
|
{
|
||||||
|
data = (BIT(offset, 0, 6) << 2) | BIT(offset, 8, 2);
|
||||||
|
m_pcm->write(offset >> 10, data);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
template <int Num>
|
||||||
|
void cz230s_state::led_w(u8 data)
|
||||||
|
{
|
||||||
|
for (int i = 0; i < 8; i++)
|
||||||
|
m_led[Num][i] = BIT(data, i);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void cz230s_state::port_a_w(u8 data)
|
||||||
|
{
|
||||||
|
m_lcdc->data_w(data & 0xf);
|
||||||
|
m_lcdc->std_w(BIT(data, 5));
|
||||||
|
m_lcdc->ce_w(BIT(data, 6));
|
||||||
|
|
||||||
|
if (BIT(data, 7) && !BIT(m_port_a, 7))
|
||||||
|
led_w<0>(~data & 0x3f);
|
||||||
|
|
||||||
|
m_port_a = data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
u8 cz230s_state::keys_r()
|
||||||
|
{
|
||||||
|
u8 data = 0x3f;
|
||||||
|
|
||||||
|
if (m_key_sel < m_keys.size())
|
||||||
|
{
|
||||||
|
const u16 input = m_keys[m_key_sel].read_safe(0xfff);
|
||||||
|
if (BIT(m_key_mux, 0))
|
||||||
|
data &= (input & 0x3f);
|
||||||
|
if (BIT(m_key_mux, 1))
|
||||||
|
data &= (input >> 6);
|
||||||
|
}
|
||||||
|
|
||||||
|
return data;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
template <int Row>
|
||||||
|
CUSTOM_INPUT_MEMBER(cz230s_state::keys_row_r)
|
||||||
|
{
|
||||||
|
u8 data = 0xff;
|
||||||
|
|
||||||
|
for (int i = 0; i < 5; i++)
|
||||||
|
if (BIT(m_key_sel, i))
|
||||||
|
data &= m_keys[i].read_safe(0xff);
|
||||||
|
|
||||||
|
return BIT(data, Row);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
template <int Row>
|
||||||
|
u8 cz230s_state::keys_analog_r()
|
||||||
|
{
|
||||||
|
return keys_row_r<Row>() ? 0xff : 0x00;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
INPUT_CHANGED_MEMBER(cz230s_state::rhythm_w)
|
||||||
|
{
|
||||||
|
if (!oldval && newval)
|
||||||
|
m_rhythm = param;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
INPUT_CHANGED_MEMBER(cz230s_state::mode_w)
|
||||||
|
{
|
||||||
|
if (!oldval && newval)
|
||||||
|
m_mode = param;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void cz230s_state::cassette_w(int state)
|
||||||
|
{
|
||||||
|
m_cassette->output(state ? -1.0 : 1.0);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void cz230s_state::cassette_motor_w(int state)
|
||||||
|
{
|
||||||
|
m_cassette->change_state(state ? CASSETTE_MOTOR_ENABLED : CASSETTE_MOTOR_DISABLED, CASSETTE_MASK_MOTOR);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
CUSTOM_INPUT_MEMBER(cz230s_state::cassette_r)
|
||||||
|
{
|
||||||
|
return m_cassette->input() > 0 ? 0 : 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void cz230s_state::render_w(int state)
|
||||||
|
{
|
||||||
|
if (!state)
|
||||||
|
return;
|
||||||
|
|
||||||
|
for (int digit = 0; digit < 6; digit++)
|
||||||
|
{
|
||||||
|
const u16 data = m_lcdc->output(digit);
|
||||||
|
for (int seg = 0; seg < 9; seg++)
|
||||||
|
m_lcd_seg[digit][seg] = BIT(data, seg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// MACHINE DEFINTIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
void cz230s_state::config_base(machine_config &config, u16 screen_w, u16 screen_h, bool midi_thru)
|
||||||
|
{
|
||||||
|
UPD7811(config, m_maincpu, 10_MHz_XTAL);
|
||||||
|
|
||||||
|
CLOCK(config, "midi_clock", 2_MHz_XTAL).signal_handler().set(m_maincpu, FUNC(upd7810_device::sck_w));
|
||||||
|
|
||||||
|
midi_port_device &mdin(MIDI_PORT(config, "mdin", midiin_slot, "midiin"));
|
||||||
|
mdin.rxd_handler().set([this](int state) { m_midi_rx = state; });
|
||||||
|
m_maincpu->rxd_func().set([this]() { return m_midi_rx; });
|
||||||
|
|
||||||
|
MIDI_PORT(config, "mdout", midiout_slot, "midiout");
|
||||||
|
m_maincpu->txd_func().set("mdout", FUNC(midi_port_device::write_txd));
|
||||||
|
|
||||||
|
if (midi_thru)
|
||||||
|
{
|
||||||
|
MIDI_PORT(config, "mdthru", midiout_slot, "midiout");
|
||||||
|
mdin.rxd_handler().append("mdthru", FUNC(midi_port_device::write_txd));
|
||||||
|
}
|
||||||
|
|
||||||
|
NVRAM(config, "nvram", nvram_device::DEFAULT_ALL_0);
|
||||||
|
|
||||||
|
MN1252(config, m_lcdc);
|
||||||
|
|
||||||
|
auto &screen = SCREEN(config, "screen", SCREEN_TYPE_SVG);
|
||||||
|
screen.set_refresh_hz(60);
|
||||||
|
screen.set_size(screen_w, screen_h);
|
||||||
|
screen.set_visarea_full();
|
||||||
|
screen.screen_vblank().set(FUNC(cz230s_state::render_w));
|
||||||
|
|
||||||
|
SPEAKER(config, "speaker").front_center();
|
||||||
|
|
||||||
|
CASSETTE(config, m_cassette);
|
||||||
|
m_cassette->set_default_state(CASSETTE_PLAY | CASSETTE_MOTOR_DISABLED | CASSETTE_SPEAKER_ENABLED);
|
||||||
|
m_cassette->add_route(ALL_OUTPUTS, "speaker", 0.05);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void cz230s_state::cz230s(machine_config &config)
|
||||||
|
{
|
||||||
|
config_base(config, 975, 205);
|
||||||
|
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &cz230s_state::cz230s_map);
|
||||||
|
m_maincpu->pa_in_cb().set(FUNC(cz230s_state::keys_r));
|
||||||
|
m_maincpu->pa_out_cb().set(FUNC(cz230s_state::port_a_w));
|
||||||
|
m_maincpu->pb_in_cb().set_ioport("PB");
|
||||||
|
m_maincpu->pb_out_cb().set_ioport("PB");
|
||||||
|
m_maincpu->pc_in_cb().set_ioport("PC");
|
||||||
|
m_maincpu->pc_out_cb().set_ioport("PC");
|
||||||
|
m_maincpu->an1_func().set_ioport("AN1");
|
||||||
|
m_maincpu->an2_func().set_ioport("AN2");
|
||||||
|
m_maincpu->an3_func().set_ioport("AN3");
|
||||||
|
|
||||||
|
UPD933(config, m_pd, 8.96_MHz_XTAL / 2);
|
||||||
|
m_pd->irq_cb().set_inputline(m_maincpu, UPD7810_INTF1);
|
||||||
|
m_pd->add_route(0, "speaker", 1.0);
|
||||||
|
|
||||||
|
UPD934G(config, m_pcm, 1'280'000);
|
||||||
|
m_pcm->set_addrmap(0, &cz230s_state::cz230s_pcm_map);
|
||||||
|
m_pcm->add_route(ALL_OUTPUTS, "speaker", 0.5);
|
||||||
|
|
||||||
|
config.set_default_layout(layout_cz230s);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
void cz230s_state::sz1(machine_config &config)
|
||||||
|
{
|
||||||
|
config_base(config, 938, 205, false);
|
||||||
|
|
||||||
|
m_maincpu->set_addrmap(AS_PROGRAM, &cz230s_state::sz1_map);
|
||||||
|
m_maincpu->pa_in_cb().set_ioport("PA");
|
||||||
|
m_maincpu->pa_out_cb().set_ioport("PA");
|
||||||
|
m_maincpu->pb_out_cb().set_ioport("PB");
|
||||||
|
m_maincpu->pc_in_cb().set_ioport("PC");
|
||||||
|
m_maincpu->pc_out_cb().set_ioport("PC");
|
||||||
|
m_maincpu->an0_func().set(FUNC(cz230s_state::keys_analog_r<0>));
|
||||||
|
m_maincpu->an1_func().set(FUNC(cz230s_state::keys_analog_r<1>));
|
||||||
|
m_maincpu->an2_func().set(FUNC(cz230s_state::keys_analog_r<2>));
|
||||||
|
m_maincpu->an3_func().set(FUNC(cz230s_state::keys_analog_r<3>));
|
||||||
|
m_maincpu->an4_func().set(FUNC(cz230s_state::keys_analog_r<4>));
|
||||||
|
m_maincpu->an5_func().set(FUNC(cz230s_state::keys_analog_r<5>));
|
||||||
|
m_maincpu->an6_func().set(FUNC(cz230s_state::keys_analog_r<6>));
|
||||||
|
|
||||||
|
CASIO_RA5(config, "cart");
|
||||||
|
|
||||||
|
BEEP(config, "beep", 2000).add_route(ALL_OUTPUTS, "speaker", 0.5); // TODO: verify freq
|
||||||
|
|
||||||
|
config.set_default_layout(layout_sz1);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// ROM DEFINITIONS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
ROM_START( cz230s )
|
||||||
|
ROM_REGION(0x1000, "maincpu", 0)
|
||||||
|
ROM_LOAD("upd7811g-301.bin", 0x0000, 0x1000, CRC(506b008c) SHA1(2d91d817bd0fa4688591160e53cbc6e14acd7014))
|
||||||
|
|
||||||
|
ROM_REGION(0x8000, "program", 0)
|
||||||
|
ROM_LOAD("hn613256pda4.bin", 0x0000, 0x8000, CRC(f58758ec) SHA1(11e5c95e51e1c77c89682ea3db85b9457f8b6cf6))
|
||||||
|
|
||||||
|
ROM_REGION(0x8000, "pcm", 0)
|
||||||
|
ROM_LOAD("hn613256pct1.bin", 0x0000, 0x8000, CRC(97b9805b) SHA1(f3502a26b6a9bccb60bea11ae940619ab9960e05))
|
||||||
|
|
||||||
|
ROM_REGION(0x2000, "nvram", 0)
|
||||||
|
ROM_LOAD("init_ram.bin", 0x0000, 0x2000, CRC(eb756425) SHA1(3a21b45269a00d27d5943de50825edc329062c60))
|
||||||
|
|
||||||
|
ROM_REGION(0x7bb5, "screen", 0)
|
||||||
|
ROM_LOAD("cz230s.svg", 0x0000, 0x7bb5, CRC(e35cc3d3) SHA1(36cb369414f1e65843cd0ea318ad27f536b582be))
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
ROM_START( sz1 )
|
||||||
|
ROM_REGION(0x1000, "maincpu", 0)
|
||||||
|
ROM_LOAD("upd7811g-120.bin", 0x0000, 0x1000, CRC(597ac04a) SHA1(96451a764296eaa22aaad3cba121226dcba865f4))
|
||||||
|
|
||||||
|
ROM_REGION(0x4000, "program", 0)
|
||||||
|
ROM_LOAD("program.bin", 0x0000, 0x4000, CRC(15f83fa5) SHA1(cb0d8d8390266f247dc7718b95bc658d1719d105))
|
||||||
|
|
||||||
|
ROM_REGION(0x6437, "screen", 0)
|
||||||
|
ROM_LOAD("sz1.svg", 0x0000, 0x6437, CRC(fd14625b) SHA1(069790868b382725d309fcab0148147f76ff82cc))
|
||||||
|
ROM_END
|
||||||
|
|
||||||
|
} // anonymous namespace
|
||||||
|
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// SYSTEM DRIVERS
|
||||||
|
//**************************************************************************
|
||||||
|
|
||||||
|
// YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS
|
||||||
|
SYST( 1985, cz230s, 0, 0, cz230s, cz230s, cz230s_state, empty_init, "Casio", "CZ-230S", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
||||||
|
SYST( 1985, sz1, 0, 0, sz1, sz1, cz230s_state, empty_init, "Casio", "SZ-1", MACHINE_SUPPORTS_SAVE | MACHINE_CLICKABLE_ARTWORK )
|
@ -13,6 +13,7 @@
|
|||||||
|
|
||||||
// device type definition
|
// device type definition
|
||||||
DEFINE_DEVICE_TYPE(CASIO_RA3, casio_ra3_device, "casio_ra3", "Casio RA-3 RAM cartridge")
|
DEFINE_DEVICE_TYPE(CASIO_RA3, casio_ra3_device, "casio_ra3", "Casio RA-3 RAM cartridge")
|
||||||
|
DEFINE_DEVICE_TYPE(CASIO_RA5, casio_ra5_device, "casio_ra5", "Casio RA-5 RAM cartridge")
|
||||||
DEFINE_DEVICE_TYPE(CASIO_RA6, casio_ra6_device, "casio_ra6", "Casio RA-6 RAM cartridge")
|
DEFINE_DEVICE_TYPE(CASIO_RA6, casio_ra6_device, "casio_ra6", "Casio RA-6 RAM cartridge")
|
||||||
|
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
@ -34,6 +35,12 @@ casio_ra3_device::casio_ra3_device(const machine_config &mconfig, const char *ta
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**************************************************************************/
|
||||||
|
casio_ra5_device::casio_ra5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
|
: casio_ram_cart_device(mconfig, CASIO_RA5, tag, owner, clock, 0x2000)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
/**************************************************************************/
|
/**************************************************************************/
|
||||||
casio_ra6_device::casio_ra6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
casio_ra6_device::casio_ra6_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||||
: casio_ram_cart_device(mconfig, CASIO_RA6, tag, owner, clock, 0x4000)
|
: casio_ram_cart_device(mconfig, CASIO_RA6, tag, owner, clock, 0x4000)
|
||||||
|
@ -47,6 +47,12 @@ public:
|
|||||||
casio_ra3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
casio_ra3_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||||
};
|
};
|
||||||
|
|
||||||
|
class casio_ra5_device : public casio_ram_cart_device
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
casio_ra5_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock = 0);
|
||||||
|
};
|
||||||
|
|
||||||
class casio_ra6_device : public casio_ram_cart_device
|
class casio_ra6_device : public casio_ram_cart_device
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
@ -55,6 +61,7 @@ public:
|
|||||||
|
|
||||||
// device type definition
|
// device type definition
|
||||||
DECLARE_DEVICE_TYPE(CASIO_RA3, casio_ra3_device)
|
DECLARE_DEVICE_TYPE(CASIO_RA3, casio_ra3_device)
|
||||||
|
DECLARE_DEVICE_TYPE(CASIO_RA5, casio_ra5_device)
|
||||||
DECLARE_DEVICE_TYPE(CASIO_RA6, casio_ra6_device)
|
DECLARE_DEVICE_TYPE(CASIO_RA6, casio_ra6_device)
|
||||||
|
|
||||||
#endif // MAME_CASIO_RA3_H
|
#endif // MAME_CASIO_RA3_H
|
||||||
|
601
src/mame/layout/cz230s.lay
Normal file
601
src/mame/layout/cz230s.lay
Normal file
@ -0,0 +1,601 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
license:CC0-1.0
|
||||||
|
-->
|
||||||
|
|
||||||
|
<mamelayout version="2">
|
||||||
|
<element name="bg"><rect><color red="0.06" green="0.06" blue="0.06" /></rect></element>
|
||||||
|
<element name="black"><rect><color red="0" green="0" blue="0" /></rect></element>
|
||||||
|
<element name="grey"><rect><color red="0.04" green="0.04" blue="0.04" /></rect></element>
|
||||||
|
<element name="white"><rect><color red="1" green="1" blue="1" /></rect></element>
|
||||||
|
|
||||||
|
<!-- text elements -->
|
||||||
|
<element name="num1"><text string="1" /></element>
|
||||||
|
<element name="num2"><text string="2" /></element>
|
||||||
|
<element name="num3"><text string="3" /></element>
|
||||||
|
<element name="num4"><text string="4" /></element>
|
||||||
|
|
||||||
|
<element name="solo">
|
||||||
|
<text string="SOLO"><color red="1" green="0.9" blue="0.4" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="insert"><text string="(INSERT)" /></element>
|
||||||
|
<element name="portamento1">
|
||||||
|
<text string="PORTAMENTO"><color red="1" green="0.9" blue="0.4" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="on_off"><text string="ON/OFF" /></element>
|
||||||
|
|
||||||
|
<element name="rhythm">
|
||||||
|
<text string="RHYTHM"><color red="1" green="0.9" blue="0.4" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="tempo"><text string="TEMPO" /></element>
|
||||||
|
<element name="arrow_up"><text string="▲" /></element>
|
||||||
|
<element name="arrow_down"><text string="▼" /></element>
|
||||||
|
<element name="start"><text string="START" /></element>
|
||||||
|
<element name="stop"><text string="/STOP" /></element>
|
||||||
|
<element name="record"><text string="(RECORD)" /></element>
|
||||||
|
<element name="synchro"><text string="SYNCHRO" /></element>
|
||||||
|
<element name="clear"><text string="(CLEAR)" /></element>
|
||||||
|
<element name="intro"><text string="INTRO./FILL-IN" /></element>
|
||||||
|
<element name="bar"><text string="(1/2/FILL-IN BAR)" /></element>
|
||||||
|
<element name="preset"><text string="PRESET" /></element>
|
||||||
|
<element name="program"><text string="PROGRAM" /></element>
|
||||||
|
|
||||||
|
<element name="rhythm_sound">
|
||||||
|
<text string="RHYTHM SOUND SOURCE"><color red="1" green="0.9" blue="0.4" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="bd"><text string="BD" /></element>
|
||||||
|
<element name="sd"><text string="SD" /></element>
|
||||||
|
<element name="lt"><text string="LT" /></element>
|
||||||
|
<element name="ht"><text string="HT" /></element>
|
||||||
|
<element name="lb"><text string="LB" /></element>
|
||||||
|
<element name="hb"><text string="HB" /></element>
|
||||||
|
<element name="ch"><text string="CH" /></element>
|
||||||
|
<element name="rim"><text string="RIM" /></element>
|
||||||
|
<element name="oh"><text string="OH" /></element>
|
||||||
|
<element name="cb"><text string="CB" /></element>
|
||||||
|
<element name="ride"><text string="RIDE" /></element>
|
||||||
|
<element name="claps"><text string="CLAPS" /></element>
|
||||||
|
<element name="pd"><text string="PD" /></element>
|
||||||
|
|
||||||
|
<element name="rhythm_mode">
|
||||||
|
<text string="RHYTHM MODE"><color red="1" green="0.9" blue="0.4" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="pattern"><text string="PATTERN" /></element>
|
||||||
|
<element name="song"><text string="SONG" /></element>
|
||||||
|
<element name="play1">
|
||||||
|
<rect><color red="1" green="1" blue="1" /></rect>
|
||||||
|
<text string="PLAY" align="1"><color red="0.04" green="0.04" blue="0.04" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="play2">
|
||||||
|
<rect><color red="0.04" green="0.04" blue="0.04" /></rect>
|
||||||
|
<text string="PLAY" align="2" />
|
||||||
|
</element>
|
||||||
|
<element name="memory1">
|
||||||
|
<rect><color red="0.04" green="0.04" blue="0.04" /></rect>
|
||||||
|
<text string="MEMORY" align="1" />
|
||||||
|
</element>
|
||||||
|
<element name="memory2">
|
||||||
|
<rect><color red="0.04" green="0.04" blue="0.04" /></rect>
|
||||||
|
<text string="MEMORY" align="2" />
|
||||||
|
</element>
|
||||||
|
<element name="mem34"><text string="3/4" /></element>
|
||||||
|
<element name="mem44"><text string="4/4" /></element>
|
||||||
|
|
||||||
|
<element name="data_entry">
|
||||||
|
<text string="DATA ENTRY"><color red="1" green="0.9" blue="0.4" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="value"><text string="VALUE" /></element>
|
||||||
|
<element name="save"><text string="(SAVE)" /></element>
|
||||||
|
<element name="load"><text string="(LOAD)" /></element>
|
||||||
|
<element name="midi"><text string="MIDI CH" /></element>
|
||||||
|
<element name="transpose"><text string="TRANSPOSE" /></element>
|
||||||
|
<element name="portamento2"><text string="PORTAMENTO" /></element>
|
||||||
|
<element name="speed"><text string="SPEED" /></element>
|
||||||
|
<element name="bend"><text string="BEND" /></element>
|
||||||
|
<element name="range"><text string="RANGE" /></element>
|
||||||
|
<element name="check"><text string="(CHECK)" /></element>
|
||||||
|
<element name="mt"><text string="MT" /></element>
|
||||||
|
|
||||||
|
<element name="pd_sound">
|
||||||
|
<text string="PD SOUND SELECTOR"><color red="1" green="0.9" blue="0.4" /></text>
|
||||||
|
</element>
|
||||||
|
<element name="tune"><text string="TUNE"><color red="1" green="0.9" blue="0.4" /></text></element>
|
||||||
|
<element name="power"><text string="POWER"><color red="1" green="0.9" blue="0.4" /></text></element>
|
||||||
|
|
||||||
|
<element name="arrow_left"><text string="◀" /></element>
|
||||||
|
<element name="accent"><text string="ACCENT"></text></element>
|
||||||
|
|
||||||
|
<!-- LED primitives -->
|
||||||
|
<element name="led" defstate="0">
|
||||||
|
<rect state="0"><color red="0.2" green="0" blue="0" /></rect>
|
||||||
|
<rect state="1"><color red="1" green="0.1" blue="0" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="led_g" defstate="0">
|
||||||
|
<rect state="1"><color red="0" green="1" blue="0.1" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<!-- button primitives -->
|
||||||
|
<element name="button" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="5" /></rect>
|
||||||
|
<rect state="0"><color red="0.9" green="0.9" blue="0.8" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.5" green="0.5" blue="0.42" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="button_grey" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="5" /></rect>
|
||||||
|
<rect state="0"><color red="0.1" green="0.1" blue="0.1" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.07" green="0.07" blue="0.07" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="button_blue" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="5" /></rect>
|
||||||
|
<rect state="0"><color red="0.35" green="0.45" blue="0.92" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.2" green="0.3" blue="0.75" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="button_yellow" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="5" /></rect>
|
||||||
|
<rect state="0"><color red="1" green="0.9" blue="0.4" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.8" green="0.7" blue="0.25" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="button_down" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="10" /></rect>
|
||||||
|
<rect state="0"><color red="0.9" green="0.9" blue="0.8" /><bounds xc="7.5" yc="5" width="13.5" height="8.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.5" green="0.5" blue="0.42" /><bounds xc="7.5" yc="5" width="13.5" height="8.5" /></rect>
|
||||||
|
<image>
|
||||||
|
<bounds xc="7.5" yc="5" width="10" height="10" />
|
||||||
|
<data><![CDATA[
|
||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" version="1.1">
|
||||||
|
<polygon points="2,2 5,8 8,2" fill="none" stroke="black" stroke-width="0.4" />
|
||||||
|
</svg>
|
||||||
|
]]></data>
|
||||||
|
</image>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="button_up" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="10" /></rect>
|
||||||
|
<rect state="0"><color red="0.9" green="0.9" blue="0.8" /><bounds xc="7.5" yc="5" width="13.5" height="8.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.5" green="0.5" blue="0.42" /><bounds xc="7.5" yc="5" width="13.5" height="8.5" /></rect>
|
||||||
|
<image>
|
||||||
|
<bounds xc="7.5" yc="5" width="10" height="10" />
|
||||||
|
<data><![CDATA[
|
||||||
|
<?xml version="1.0" standalone="no"?>
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 10 10" version="1.1">
|
||||||
|
<polygon points="2,8 5,2 8,8" fill="none" stroke="black" stroke-width="0.4" />
|
||||||
|
</svg>
|
||||||
|
]]></data>
|
||||||
|
</image>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<repeat count="11">
|
||||||
|
<param name="num" start="0" increment="1" />
|
||||||
|
|
||||||
|
<element name="button_num_~num~" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="5" /></rect>
|
||||||
|
<rect state="0"><color red="0.9" green="0.9" blue="0.8" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.5" green="0.5" blue="0.42" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
<text string="~num~"><bounds xc="7.5" yc="2.5" width="15" height="4" /><color red="0" green="0" blue="0" /></text>
|
||||||
|
</element>
|
||||||
|
</repeat>
|
||||||
|
|
||||||
|
<element name="button_clear" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="5" /></rect>
|
||||||
|
<rect state="0"><color red="0.8" green="0.2" blue="0.1" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.6" green="0.1" blue="0" /><bounds xc="7.5" yc="2.5" width="13.5" height="4.5" /></rect>
|
||||||
|
<text string="C"><bounds xc="7.5" yc="2.5" width="15" height="4" /><color red="0" green="0" blue="0" /></text>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<!-- note chart -->
|
||||||
|
<element name="note_chart">
|
||||||
|
<rect><color red="1" green="1" blue="1"/><bounds x="0" y="0" width="135" height="12" /></rect>
|
||||||
|
<rect><color red="0.04" green="0.04" blue="0.04" /><bounds x="0.5" y="0.5" width="134" height="11" /></rect>
|
||||||
|
|
||||||
|
<rect><color red="1" green="0.9" blue="0.4" /><bounds x="5" y="1" width="94" height="0.5" /></rect>
|
||||||
|
<rect><color red="1" green="0.9" blue="0.4" /><bounds x="5" y="1" width="0.5" height="8" /></rect>
|
||||||
|
<disk><color red="1" green="0.9" blue="0.4" /><bounds x="3" y="8" width="2.5" height="1.5" /></disk>
|
||||||
|
<rect><color red="1" green="0.9" blue="0.4" /><bounds x="52" y="1" width="0.5" height="8" /></rect>
|
||||||
|
<disk><color red="1" green="0.9" blue="0.4" /><bounds x="50" y="8" width="2.5" height="1.5" /></disk>
|
||||||
|
<rect><color red="1" green="0.9" blue="0.4" /><bounds x="98.5" y="1" width="0.5" height="8" /></rect>
|
||||||
|
<disk><color red="1" green="0.9" blue="0.4" /><bounds x="96.5" y="8" width="2.5" height="1.5" /></disk>
|
||||||
|
|
||||||
|
<rect><color red="0.2" green="0.8" blue="0.6" /><bounds x="8" y="2" width="102" height="0.5" /></rect>
|
||||||
|
<rect><color red="0.2" green="0.8" blue="0.6" /><bounds x="8" y="3" width="102" height="0.5" /></rect>
|
||||||
|
<rect><color red="0.2" green="0.8" blue="0.6" /><bounds x="8" y="2" width="0.5" height="7" /></rect>
|
||||||
|
<disk><color red="0.2" green="0.8" blue="0.6" /><bounds x="6" y="8" width="2.5" height="1.5" /></disk>
|
||||||
|
<rect><color red="0.2" green="0.8" blue="0.6" /><bounds x="40" y="2" width="0.5" height="7" /></rect>
|
||||||
|
<disk><color red="0.2" green="0.8" blue="0.6" /><bounds x="38" y="8" width="2.5" height="1.5" /></disk>
|
||||||
|
<rect><color red="0.2" green="0.8" blue="0.6" /><bounds x="75" y="2" width="0.5" height="7" /></rect>
|
||||||
|
<disk><color red="0.2" green="0.8" blue="0.6" /><bounds x="73" y="8" width="2.5" height="1.5" /></disk>
|
||||||
|
<rect><color red="0.2" green="0.8" blue="0.6" /><bounds x="109.5" y="2" width="0.5" height="7" /></rect>
|
||||||
|
<disk><color red="0.2" green="0.8" blue="0.6" /><bounds x="107.5" y="8" width="2.5" height="1.5" /></disk>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<!-- rhythm sound slider -->
|
||||||
|
<element name="rhythm_sw">
|
||||||
|
<rect><color red="0.06" green="0.06" blue="0.06" /><bounds x="0" y="0" width="104" height="8" /></rect>
|
||||||
|
<rect><color red="0" green="0" blue="0" /><bounds x="4" yc="4" width="96" height="4" /></rect>
|
||||||
|
<rect>
|
||||||
|
<color red="0.12" green="0.12" blue="0.12" />
|
||||||
|
<bounds state="0x0001" xc="6" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0002" xc="12" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0004" xc="18" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0008" xc="24" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0010" xc="30" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0020" xc="36" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0040" xc="42" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0080" xc="48" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0100" xc="54" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0200" xc="60" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0400" xc="66" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0800" xc="72" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x1000" xc="80" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x2000" xc="86" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x4000" xc="92" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x8000" xc="98" y="0" width="12" height="8" />
|
||||||
|
</rect>
|
||||||
|
<rect>
|
||||||
|
<color red="1" green="1" blue="1" />
|
||||||
|
<bounds state="0x0001" xc="6" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0002" xc="12" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0004" xc="18" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0008" xc="24" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0010" xc="30" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0020" xc="36" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0040" xc="42" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0080" xc="48" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0100" xc="54" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0200" xc="60" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0400" xc="66" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0800" xc="72" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x1000" xc="80" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x2000" xc="86" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x4000" xc="92" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x8000" xc="98" y="0" width="1" height="8" />
|
||||||
|
</rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<group name="rhythm_slider">
|
||||||
|
<repeat count="16">
|
||||||
|
<param name="x" start="6" increment="6" />
|
||||||
|
<param name="mask" start="1" lshift="1" />
|
||||||
|
<element ref="grey" inputtag="RHYTHM" inputmask="~mask~"><bounds xc="~x~" y="5" width="4" height="8" /></element>
|
||||||
|
</repeat>
|
||||||
|
<element ref="bd"><bounds xc="6" y="0" width="10" height="5" /></element>
|
||||||
|
<element ref="sd"><bounds xc="12" y="13" width="10" height="5" /></element>
|
||||||
|
<element ref="lt"><bounds xc="18" y="0" width="10" height="5" /></element>
|
||||||
|
<element ref="ht"><bounds xc="24" y="13" width="10" height="5" /></element>
|
||||||
|
<element ref="lb"><bounds xc="30" y="0" width="10" height="5" /></element>
|
||||||
|
<element ref="hb"><bounds xc="36" y="13" width="10" height="5" /></element>
|
||||||
|
<element ref="ch"><bounds xc="42" y="0" width="10" height="5" /></element>
|
||||||
|
<element ref="rim"><bounds xc="48" y="13" width="10" height="5" /></element>
|
||||||
|
<element ref="oh"><bounds xc="54" y="0" width="10" height="5" /></element>
|
||||||
|
<element ref="cb"><bounds xc="60" y="13" width="10" height="5" /></element>
|
||||||
|
<element ref="ride"><bounds xc="66" y="0" width="10" height="5" /></element>
|
||||||
|
<element ref="claps"><bounds xc="72" y="13" width="15" height="5" /></element>
|
||||||
|
<element ref="num1"><bounds xc="80" y="0" width="10" height="5" /></element>
|
||||||
|
<element ref="num2"><bounds xc="86" y="13" width="10" height="5" /></element>
|
||||||
|
<element ref="num3"><bounds xc="92" y="0" width="10" height="5" /></element>
|
||||||
|
<element ref="num4"><bounds xc="98" y="13" width="10" height="5" /></element>
|
||||||
|
<element ref="rhythm_sw" name="rhythm_pos"><bounds x="0" y="5" width="104" height="8" /></element>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<!-- rhythm mode slider -->
|
||||||
|
<element name="mode_sw">
|
||||||
|
<rect><color red="0.06" green="0.06" blue="0.06" /><bounds x="0" y="0" width="36" height="8" /></rect>
|
||||||
|
<rect><color red="0" green="0" blue="0" /><bounds x="4" yc="4" width="28" height="4" /></rect>
|
||||||
|
<rect>
|
||||||
|
<color red="0.12" green="0.12" blue="0.12" />
|
||||||
|
<bounds state="0x0001" xc="6" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0002" xc="12" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0004" xc="18" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0008" xc="24" y="0" width="12" height="8" />
|
||||||
|
<bounds state="0x0010" xc="30" y="0" width="12" height="8" />
|
||||||
|
</rect>
|
||||||
|
<rect>
|
||||||
|
<color red="1" green="1" blue="1" />
|
||||||
|
<bounds state="0x0001" xc="6" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0002" xc="12" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0004" xc="18" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0008" xc="24" y="0" width="1" height="8" />
|
||||||
|
<bounds state="0x0010" xc="30" y="0" width="1" height="8" />
|
||||||
|
</rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<group name="mode_slider">
|
||||||
|
<repeat count="5">
|
||||||
|
<param name="x" start="11" increment="6" />
|
||||||
|
<param name="mask" start="1" lshift="1" />
|
||||||
|
<element ref="grey" inputtag="MODE" inputmask="~mask~"><bounds xc="~x~" y="10" width="4" height="8" /></element>
|
||||||
|
</repeat>
|
||||||
|
<element ref="white"><bounds x="0" yc="2.5" width="23" height="0.5" /></element>
|
||||||
|
<element ref="memory1"><bounds x="0" y="0" width="15" height="5" /></element>
|
||||||
|
<element ref="white"><bounds x="0" yc="7.5" width="12" height="0.5" /></element>
|
||||||
|
<element ref="play1"><bounds x="0" y="5" width="8" height="5" /></element>
|
||||||
|
<element ref="mem44"><bounds xc="17" y="5" width="10" height="5" /></element>
|
||||||
|
<element ref="mem34"><bounds xc="23" y="5" width="10" height="5" /></element>
|
||||||
|
|
||||||
|
<element ref="white"><bounds x="29" yc="2.5" width="10" height="0.5" /></element>
|
||||||
|
<element ref="white"><bounds x="29" y="2.5" width="0.5" height="5" /></element>
|
||||||
|
<element ref="memory2"><bounds x="31" y="0" width="15" height="5" /></element>
|
||||||
|
<element ref="white"><bounds x="35" yc="7.5" width="10" height="0.5" /></element>
|
||||||
|
<element ref="play2"><bounds x="37" y="5" width="9" height="5" /></element>
|
||||||
|
<element ref="mode_sw" name="mode_pos"><bounds x="5" y="10" width="36" height="8" /></element>
|
||||||
|
<element ref="pattern"><bounds xc="12" y="18" width="20" height="5" /></element>
|
||||||
|
<element ref="song"><bounds xc="35" y="18" width="10" height="5" /></element>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<!-- effect group -->
|
||||||
|
<group name="effect">
|
||||||
|
<element ref="grey"><bounds x="0" y="0" width="32" height="78" /></element>
|
||||||
|
<element ref="white"><bounds x="1" y="1" width="0.75" height="74" /></element>
|
||||||
|
<element ref="white"><bounds xc="17" y="50" width="30" height="0.75" /></element>
|
||||||
|
|
||||||
|
<element ref="led" name="led0.4"><bounds xc="17" y="26" width="6" height="3" /></element>
|
||||||
|
<element ref="insert"><bounds xc="17" y="32" width="15" height="3" /></element>
|
||||||
|
<element ref="button" inputtag="KC0" inputmask="0x200"><bounds xc="17" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="solo"><bounds xc="17" y="44" width="28" height="5" /></element>
|
||||||
|
|
||||||
|
<element ref="led" name="led0.2"><bounds xc="17" y="52" width="6" height="3" /></element>
|
||||||
|
<element ref="on_off"><bounds xc="17" y="58" width="15" height="3" /></element>
|
||||||
|
<element ref="button" inputtag="KC0" inputmask="0x400"><bounds xc="17" y="63" width="15" height="5" /></element>
|
||||||
|
<element ref="portamento1"><bounds xc="17" y="70" width="28" height="5" /></element>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<!-- rhythm group -->
|
||||||
|
<group name="rhythm">
|
||||||
|
<element ref="grey"><bounds x="0" y="0" width="206" height="78" /></element>
|
||||||
|
<element ref="white"><bounds x="1" y="1" width="0.75" height="74" /></element>
|
||||||
|
|
||||||
|
<group ref="rhythm_slider"><bounds xc="100" y="6" width="75" height="13" /></group>
|
||||||
|
<element ref="rhythm_sound"><bounds xc="100" y="20" width="75" height="5" /></element>
|
||||||
|
<element ref="led" name="led0.3"><bounds xc="144" y="11" width="6" height="3" /></element>
|
||||||
|
<element ref="pd"><bounds xc="144" y="15" width="15" height="4" /></element>
|
||||||
|
|
||||||
|
<group ref="mode_slider"><bounds xc="180" y="1" width="44" height="18" /></group>
|
||||||
|
<element ref="rhythm_mode"><bounds xc="180" y="20" width="40" height="5" /></element>
|
||||||
|
|
||||||
|
<element ref="arrow_down"><bounds xc="12.5" y="31" width="15" height="5" /></element>
|
||||||
|
<element ref="button" inputtag="KC3" inputmask="0x100"><bounds x="5" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="arrow_up"><bounds xc="29.5" y="31" width="15" height="5" /></element>
|
||||||
|
<element ref="button" inputtag="KC3" inputmask="0x200"><bounds x="22" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="tempo"><bounds xc="21" y="44" width="15" height="4" /></element>
|
||||||
|
|
||||||
|
<element ref="button_num_1" inputtag="KC1" inputmask="0x40"><bounds x="45" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_2" inputtag="KC1" inputmask="0x80"><bounds x="61" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_3" inputtag="KC1" inputmask="0x100"><bounds x="77" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_4" inputtag="KC1" inputmask="0x200"><bounds x="93" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_5" inputtag="KC1" inputmask="0x400"><bounds x="109" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_6" inputtag="KC2" inputmask="0x40"><bounds x="125" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_7" inputtag="KC2" inputmask="0x80"><bounds x="141" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_8" inputtag="KC2" inputmask="0x100"><bounds x="157" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_9" inputtag="KC2" inputmask="0x200"><bounds x="173" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_10" inputtag="KC2" inputmask="0x400"><bounds x="189" y="37" width="15" height="5" /></element>
|
||||||
|
|
||||||
|
<element ref="led" name="led0.1"><bounds xc="21" y="52" width="6" height="3" /></element>
|
||||||
|
<element ref="led_g" name="led0.0"><bounds xc="21" y="52" width="6" height="3" /></element>
|
||||||
|
<element ref="start"><bounds xc="12.5" y="55" width="15" height="4" /></element>
|
||||||
|
<element ref="stop"><bounds xc="12.5" y="59" width="15" height="4" /></element>
|
||||||
|
<element ref="button_yellow" inputtag="KC3" inputmask="0x400"><bounds x="5" y="63" width="15" height="5" /></element>
|
||||||
|
<element ref="record"><bounds xc="12.5" y="69" width="15" height="3" /></element>
|
||||||
|
<element ref="synchro"><bounds xc="29.5" y="57" width="15" height="4" /></element>
|
||||||
|
<element ref="button_yellow" inputtag="KC3" inputmask="0x800"><bounds x="22" y="63" width="15" height="5" /></element>
|
||||||
|
<element ref="clear"><bounds xc="29.5" y="69" width="15" height="3" /></element>
|
||||||
|
|
||||||
|
<element ref="intro"><bounds xc="72.5" y="57" width="45" height="4" /></element>
|
||||||
|
<element ref="button_blue" inputtag="KC3" inputmask="0x80"><bounds x="50" y="63" width="45" height="5" /></element>
|
||||||
|
<element ref="bar"><bounds xc="72.5" y="69" width="45" height="3" /></element>
|
||||||
|
|
||||||
|
<element ref="preset"><bounds xc="143.5" y="55" width="15" height="4" /></element>
|
||||||
|
<element ref="num1"><bounds xc="143.5" y="59" width="15" height="4" /></element>
|
||||||
|
<element ref="button" inputtag="KC1" inputmask="0x800"><bounds x="136" y="63" width="15" height="5" /></element>
|
||||||
|
<element ref="preset"><bounds xc="160.5" y="55" width="15" height="4" /></element>
|
||||||
|
<element ref="num2"><bounds xc="160.5" y="59" width="15" height="4" /></element>
|
||||||
|
<element ref="button" inputtag="KC2" inputmask="0x800"><bounds x="153" y="63" width="15" height="5" /></element>
|
||||||
|
<element ref="program"><bounds xc="178.5" y="55" width="15" height="4" /></element>
|
||||||
|
<element ref="button" inputtag="KC3" inputmask="0x40"><bounds x="171" y="63" width="15" height="5" /></element>
|
||||||
|
|
||||||
|
<element ref="rhythm"><bounds xc="103" y="70" width="64" height="5" /></element>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<!-- data entry group -->
|
||||||
|
<group name="data">
|
||||||
|
<element ref="black"><bounds x="0" y="0" width="106" height="48" /></element>
|
||||||
|
<element ref="white"><bounds xc="53" y="2" width="96" height="23" /></element>
|
||||||
|
<element ref="black"><bounds xc="53" y="3" width="94.5" height="21.5" /></element>
|
||||||
|
<screen index="0"><bounds xc="53" yc="13.5" width="85.5" height="17.975" /></screen>
|
||||||
|
|
||||||
|
<element ref="midi"><bounds xc="12.5" y="33" width="15" height="4" /></element>
|
||||||
|
<element ref="button_grey" inputtag="KC8" inputmask="0x80"><bounds x="5" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="transpose"><bounds xc="29.5" y="33" width="18" height="4" /></element>
|
||||||
|
<element ref="button_grey" inputtag="KC8" inputmask="0x200"><bounds x="22" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="portamento2"><bounds xc="46.5" y="29" width="20" height="4" /></element>
|
||||||
|
<element ref="speed"><bounds xc="46.5" y="33" width="15" height="4" /></element>
|
||||||
|
<element ref="button_grey" inputtag="KC8" inputmask="0x100"><bounds x="39" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="bend"><bounds xc="63.5" y="29" width="15" height="4" /></element>
|
||||||
|
<element ref="range"><bounds xc="63.5" y="33" width="15" height="4" /></element>
|
||||||
|
<element ref="check"><bounds xc="63.5" y="43" width="15" height="3" /></element>
|
||||||
|
<element ref="button_grey" inputtag="KC0" inputmask="0x800"><bounds x="56" y="37" width="15" height="5" /></element>
|
||||||
|
<element ref="mt"><bounds xc="92.5" y="33" width="15" height="4" /></element>
|
||||||
|
<element ref="button_blue" inputtag="KC8" inputmask="0x40"><bounds x="85" y="37" width="15" height="5" /></element>
|
||||||
|
|
||||||
|
<element ref="grey"><bounds x="0" y="50" width="106" height="28" /></element>
|
||||||
|
|
||||||
|
<element ref="value"><bounds xc="53" y="51" width="64" height="4" /></element>
|
||||||
|
<element ref="save"><bounds xc="43" y="55" width="15" height="3" /></element>
|
||||||
|
<element ref="button_down" inputtag="KC8" inputmask="0x400"><bounds xc="43" y="58" width="15" height="10" /></element>
|
||||||
|
<element ref="load"><bounds xc="63" y="55" width="15" height="3" /></element>
|
||||||
|
<element ref="button_up" inputtag="KC8" inputmask="0x800"><bounds xc="63" y="58" width="15" height="10" /></element>
|
||||||
|
<element ref="data_entry"><bounds xc="53" y="70" width="64" height="5" /></element>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<!-- PD sound group -->
|
||||||
|
<group name="pd">
|
||||||
|
<element ref="black"><bounds x="0" y="0" width="244" height="48" /></element>
|
||||||
|
<element ref="grey"><bounds x="2" y="50" width="252" height="28" /></element>
|
||||||
|
|
||||||
|
<element ref="button_num_5" inputtag="KC9" inputmask="0x80"><bounds x="45" y="53" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_6" inputtag="KC9" inputmask="0x100"><bounds x="65" y="53" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_7" inputtag="KC9" inputmask="0x200"><bounds x="85" y="53" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_8" inputtag="KC9" inputmask="0x400"><bounds x="105" y="53" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_9" inputtag="KC9" inputmask="0x800"><bounds x="125" y="53" width="15" height="5" /></element>
|
||||||
|
|
||||||
|
<element ref="button_clear" inputtag="KC10" inputmask="0x400"><bounds x="145" y="58" width="15" height="5" /></element>
|
||||||
|
|
||||||
|
<element ref="button_num_0" inputtag="KC10" inputmask="0x40"><bounds x="45" y="63" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_1" inputtag="KC10" inputmask="0x80"><bounds x="65" y="63" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_2" inputtag="KC10" inputmask="0x100"><bounds x="85" y="63" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_3" inputtag="KC10" inputmask="0x200"><bounds x="105" y="63" width="15" height="5" /></element>
|
||||||
|
<element ref="button_num_4" inputtag="KC9" inputmask="0x40"><bounds x="125" y="63" width="15" height="5" /></element>
|
||||||
|
|
||||||
|
<element ref="pd_sound"><bounds xc="92.5" y="70" width="64" height="5" /></element>
|
||||||
|
|
||||||
|
<element ref="arrow_down"><bounds xc="220" y="53" width="15" height="5" /></element>
|
||||||
|
<element ref="button_grey" inputtag="KC11" inputmask="0x40"><bounds xc="220" y="60" width="15" height="8" /></element>
|
||||||
|
<element ref="arrow_up"><bounds xc="240" y="53" width="15" height="5" /></element>
|
||||||
|
<element ref="button_grey" inputtag="KC11" inputmask="0x80"><bounds xc="240" y="60" width="15" height="8" /></element>
|
||||||
|
<element ref="tune"><bounds xc="230" y="70" width="64" height="5" /></element>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<!-- keyboard primitives -->
|
||||||
|
<element name="keyfill"><rect><color red="0.0" green="0.0" blue="0.0" /></rect></element>
|
||||||
|
<element name="whitekey" defstate="0">
|
||||||
|
<rect state="0"><bounds x="0" y="0" width="79" height="252" /><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="1"><bounds x="0" y="0" width="79" height="252" /><color red="0.9" green="0.9" blue="0.9" /></rect>
|
||||||
|
</element>
|
||||||
|
<element name="whitekey-l" defstate="0">
|
||||||
|
<rect state="0"><bounds x="0" y="0" width="45" height="252" /><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="0"><bounds x="0" y="252" width="79" height="172" /><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="1"><bounds x="0" y="0" width="45" height="252" /><color red="0.9" green="0.9" blue="0.9" /></rect>
|
||||||
|
<rect state="1"><bounds x="0" y="252" width="79" height="172" /><color red="0.9" green="0.9" blue="0.9" /></rect>
|
||||||
|
</element>
|
||||||
|
<element name="whitekey-m" defstate="0">
|
||||||
|
<rect state="0"><bounds x="13" y="0" width="53" height="252" /><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="0"><bounds x="0" y="252" width="79" height="172" /><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="1"><bounds x="13" y="0" width="53" height="252" /><color red="0.9" green="0.9" blue="0.9" /></rect>
|
||||||
|
<rect state="1"><bounds x="0" y="252" width="79" height="172" /><color red="0.9" green="0.9" blue="0.9" /></rect>
|
||||||
|
</element>
|
||||||
|
<element name="whitekey-lm" defstate="0">
|
||||||
|
<rect state="0"><bounds x="10" y="0" width="44" height="252" /><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="0"><bounds x="0" y="252" width="79" height="172" /><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="1"><bounds x="10" y="0" width="44" height="252" /><color red="0.9" green="0.9" blue="0.9" /></rect>
|
||||||
|
<rect state="1"><bounds x="0" y="252" width="79" height="172" /><color red="0.9" green="0.9" blue="0.9" /></rect>
|
||||||
|
</element>
|
||||||
|
<element name="whitekey-rm" defstate="0">
|
||||||
|
<rect state="0"><bounds x="22" y="0" width="44" height="252" /><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="0"><bounds x="0" y="252" width="79" height="172" /><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="1"><bounds x="22" y="0" width="44" height="252" /><color red="0.9" green="0.9" blue="0.9" /></rect>
|
||||||
|
<rect state="1"><bounds x="0" y="252" width="79" height="172" /><color red="0.9" green="0.9" blue="0.9" /></rect>
|
||||||
|
</element>
|
||||||
|
<element name="whitekey-r" defstate="0">
|
||||||
|
<rect state="0"><bounds x="34" y="0" width="45" height="252" /><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="0"><bounds x="0" y="252" width="79" height="172" /><color red="1.0" green="1.0" blue="1.0" /></rect>
|
||||||
|
<rect state="1"><bounds x="34" y="0" width="45" height="252" /><color red="0.9" green="0.9" blue="0.9" /></rect>
|
||||||
|
<rect state="1"><bounds x="0" y="252" width="79" height="172" /><color red="0.9" green="0.9" blue="0.9" /></rect>
|
||||||
|
</element>
|
||||||
|
<element name="blackkey" defstate="0">
|
||||||
|
<rect state="0"><bounds x="0" y="0" width="44" height="252" /><color red="0.0" green="0.0" blue="0.0" /></rect>
|
||||||
|
<rect state="0"><bounds x="4" y="0" width="36" height="248" /><color red="0.1" green="0.1" blue="0.1" /></rect>
|
||||||
|
<rect state="1"><bounds x="0" y="0" width="44" height="252" /><color red="0.1" green="0.1" blue="0.1" /></rect>
|
||||||
|
<rect state="1"><bounds x="4" y="0" width="36" height="248" /><color red="0.1" green="0.1" blue="0.1" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<!-- keyboard group -->
|
||||||
|
<group name="keyboard">
|
||||||
|
<element ref="keyfill"><bounds x="72" y="98" width="2396" height="444" /></element>
|
||||||
|
|
||||||
|
<!-- octave 1 -->
|
||||||
|
<element ref="blackkey" inputtag="KC0" inputmask="0x02"><bounds x="130" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC0" inputmask="0x08"><bounds x="233" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC1" inputmask="0x01"><bounds x="373" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC1" inputmask="0x04"><bounds x="467" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC1" inputmask="0x10"><bounds x="561" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="whitekey-l" inputtag="KC0" inputmask="0x01"><bounds x="82" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-m" inputtag="KC0" inputmask="0x04"><bounds x="164" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-r" inputtag="KC0" inputmask="0x10"><bounds x="246" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-l" inputtag="KC0" inputmask="0x20"><bounds x="328" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-lm" inputtag="KC1" inputmask="0x02"><bounds x="410" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-rm" inputtag="KC1" inputmask="0x08"><bounds x="492" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-r" inputtag="KC1" inputmask="0x20"><bounds x="574" y="108" width="79" height="424" /></element>
|
||||||
|
|
||||||
|
<!-- octave 2 -->
|
||||||
|
<element ref="blackkey" inputtag="KC2" inputmask="0x02"><bounds x="704" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC2" inputmask="0x08"><bounds x="807" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC3" inputmask="0x01"><bounds x="947" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC3" inputmask="0x04"><bounds x="1041" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC3" inputmask="0x10"><bounds x="1135" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="whitekey-l" inputtag="KC2" inputmask="0x01"><bounds x="656" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-m" inputtag="KC2" inputmask="0x04"><bounds x="738" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-r" inputtag="KC2" inputmask="0x10"><bounds x="820" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-l" inputtag="KC2" inputmask="0x20"><bounds x="902" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-lm" inputtag="KC3" inputmask="0x02"><bounds x="984" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-rm" inputtag="KC3" inputmask="0x08"><bounds x="1066" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-r" inputtag="KC3" inputmask="0x20"><bounds x="1148" y="108" width="79" height="424" /></element>
|
||||||
|
|
||||||
|
<!-- octave 3 -->
|
||||||
|
<element ref="blackkey" inputtag="KC4" inputmask="0x02"><bounds x="1278" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC4" inputmask="0x08"><bounds x="1381" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC5" inputmask="0x01"><bounds x="1521" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC5" inputmask="0x04"><bounds x="1615" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC5" inputmask="0x10"><bounds x="1709" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="whitekey-l" inputtag="KC4" inputmask="0x01"><bounds x="1230" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-m" inputtag="KC4" inputmask="0x04"><bounds x="1312" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-r" inputtag="KC4" inputmask="0x10"><bounds x="1394" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-l" inputtag="KC4" inputmask="0x20"><bounds x="1476" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-lm" inputtag="KC5" inputmask="0x02"><bounds x="1558" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-rm" inputtag="KC5" inputmask="0x08"><bounds x="1640" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-r" inputtag="KC5" inputmask="0x20"><bounds x="1722" y="108" width="79" height="424" /></element>
|
||||||
|
|
||||||
|
<!-- octave 4 -->
|
||||||
|
<element ref="blackkey" inputtag="KC6" inputmask="0x02"><bounds x="1852" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC6" inputmask="0x08"><bounds x="1955" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC7" inputmask="0x01"><bounds x="2095" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC7" inputmask="0x04"><bounds x="2189" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="blackkey" inputtag="KC7" inputmask="0x10"><bounds x="2283" y="108" width="44" height="252" /></element>
|
||||||
|
<element ref="whitekey-l" inputtag="KC6" inputmask="0x01"><bounds x="1804" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-m" inputtag="KC6" inputmask="0x04"><bounds x="1886" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-r" inputtag="KC6" inputmask="0x10"><bounds x="1968" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-l" inputtag="KC6" inputmask="0x20"><bounds x="2050" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-lm" inputtag="KC7" inputmask="0x02"><bounds x="2132" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-rm" inputtag="KC7" inputmask="0x08"><bounds x="2214" y="108" width="79" height="424" /></element>
|
||||||
|
<element ref="whitekey-r" inputtag="KC7" inputmask="0x20"><bounds x="2296" y="108" width="79" height="424" /></element>
|
||||||
|
|
||||||
|
<!-- final key -->
|
||||||
|
<element ref="whitekey" inputtag="KC8" inputmask="0x01"><bounds x="2378" y="108" width="79" height="424" /></element>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<group name="panel">
|
||||||
|
<group ref="effect"><bounds x="0" y="0" width="32" height="78" /></group>
|
||||||
|
<group ref="rhythm"><bounds x="32" y="0" width="206" height="78" /></group>
|
||||||
|
<group ref="data"><bounds x="240" y="0" width="106" height="78" /></group>
|
||||||
|
<group ref="pd"><bounds x="346" y="0" width="254" height="78" /></group>
|
||||||
|
</group>
|
||||||
|
|
||||||
|
<view name="Keyboard">
|
||||||
|
<bounds x="0" y="0" width="640" height="202" />
|
||||||
|
<element ref="bg"><bounds x="0" y="16" width="640" height="186" /></element>
|
||||||
|
|
||||||
|
<element ref="grey"><bounds x="0" y="18" width="36" height="184" /></element>
|
||||||
|
<element ref="grey"><bounds x="620" y="18" width="36" height="184" /></element>
|
||||||
|
|
||||||
|
<group ref="panel"><bounds x="36" y="18" width="600" height="78" /></group>
|
||||||
|
|
||||||
|
<element ref="led" name="led0.5"><bounds xc="630" y="40" width="6" height="3" /></element>
|
||||||
|
<element ref="power"><bounds xc="630" y="50" width="64" height="5" /></element>
|
||||||
|
|
||||||
|
<element ref="grey"><bounds xc="328" y="98" width="580" height="40" /></element>
|
||||||
|
<element ref="note_chart"><bounds x="40" y="99" width="135" height="12" /></element>
|
||||||
|
<element ref="note_chart"><bounds x="180" y="99" width="135" height="12" /></element>
|
||||||
|
<element ref="note_chart"><bounds x="320" y="99" width="135" height="12" /></element>
|
||||||
|
<element ref="mem34"><bounds x="442" y="105" width="15" height="4" /></element>
|
||||||
|
<element ref="note_chart"><bounds x="460" y="99" width="135" height="12" /></element>
|
||||||
|
<element ref="mem44"><bounds x="582" y="105" width="15" height="4" /></element>
|
||||||
|
<element ref="accent"><bounds xc="608" y="105" width="15" height="4" /></element>
|
||||||
|
<element ref="arrow_left"><bounds xc="245" y="110" width="15" height="6" /></element>
|
||||||
|
|
||||||
|
<group ref="keyboard"><bounds xc="328" y="116" width="584" height="86" /></group>
|
||||||
|
</view>
|
||||||
|
|
||||||
|
</mamelayout>
|
230
src/mame/layout/sz1.lay
Normal file
230
src/mame/layout/sz1.lay
Normal file
@ -0,0 +1,230 @@
|
|||||||
|
<?xml version="1.0"?>
|
||||||
|
<!--
|
||||||
|
license:CC0-1.0
|
||||||
|
-->
|
||||||
|
|
||||||
|
<mamelayout version="2">
|
||||||
|
<element name="bg"><rect><color red="0.06" green="0.06" blue="0.06" /></rect></element>
|
||||||
|
<element name="grey"><rect><color red="0.04" green="0.04" blue="0.04" /></rect></element>
|
||||||
|
<element name="yellow"><rect><color red="0.9" green="0.85" blue="0.45" /></rect></element>
|
||||||
|
|
||||||
|
<element name="led" defstate="0">
|
||||||
|
<rect state="0"><color red="0.2" green="0" blue="0" /></rect>
|
||||||
|
<rect state="1"><color red="1" green="0.1" blue="0" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<!-- text elements -->
|
||||||
|
<element name="copy"><text string="COPY" /></element>
|
||||||
|
<element name="edit"><text string="EDIT" /></element>
|
||||||
|
<element name="insert"><text string="INSERT" /></element>
|
||||||
|
<element name="delete"><text string="DELETE" /></element>
|
||||||
|
|
||||||
|
<element name="midi"><text string="MIDI" /></element>
|
||||||
|
<element name="repeat"><text string="REPEAT" /></element>
|
||||||
|
<element name="track"><text string="TRACK" /></element>
|
||||||
|
<element name="track1"><text string="1" /></element>
|
||||||
|
<element name="track2"><text string="2" /></element>
|
||||||
|
<element name="track3"><text string="3" /></element>
|
||||||
|
<element name="track4"><text string="4" /></element>
|
||||||
|
<element name="cartridge"><text string="CARTRIDGE" /></element>
|
||||||
|
<element name="mt"><text string="/MT" /></element>
|
||||||
|
|
||||||
|
<element name="note4"><text string="1/4" /></element>
|
||||||
|
<element name="note2"><text string="1/2" /></element>
|
||||||
|
<element name="note1"><text string="1/1" /></element>
|
||||||
|
<element name="note8"><text string="1/8" /></element>
|
||||||
|
<element name="note16"><text string="1/16" /></element>
|
||||||
|
<element name="note32"><text string="1/32" /></element>
|
||||||
|
<element name="rest"><text string="REST" /></element>
|
||||||
|
<element name="dot"><text string="DOT" /></element>
|
||||||
|
<element name="triplet"><text string="TRIPLET" /></element>
|
||||||
|
<element name="tie"><text string="TIE" /></element>
|
||||||
|
<element name="manual_data"><text string="MANUAL DATA" /></element>
|
||||||
|
|
||||||
|
<element name="metronome"><text string="METRONOME" /></element>
|
||||||
|
<element name="enter"><text string="/ENTER" /></element>
|
||||||
|
<element name="tempo"><text string="TEMPO" /></element>
|
||||||
|
<element name="down"><text string="DOWN" /></element>
|
||||||
|
<element name="up"><text string="UP" /></element>
|
||||||
|
|
||||||
|
<element name="record_track"><text string="RECORD TRACK" /></element>
|
||||||
|
<element name="realtime"><text string="REAL TIME" /></element>
|
||||||
|
<element name="manual"><text string="MANUAL" /></element>
|
||||||
|
<element name="record"><text string="RECORD" /></element>
|
||||||
|
<element name="reset"><text string="RESET" /></element>
|
||||||
|
|
||||||
|
<element name="rev"><text string="REV" /></element>
|
||||||
|
<element name="fwd"><text string="FWD" /></element>
|
||||||
|
<element name="play"><text string="PLAY" /></element>
|
||||||
|
<element name="stop"><text string="STOP" /></element>
|
||||||
|
<element name="save"><text string="SAVE" /></element>
|
||||||
|
<element name="load"><text string="LOAD" /></element>
|
||||||
|
<element name="check"><text string="CHECK" /></element>
|
||||||
|
|
||||||
|
<!-- button primitives -->
|
||||||
|
<element name="button_black" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="15" /></rect>
|
||||||
|
<rect state="0"><color red="0.14" green="0.14" blue="0.14" /><bounds xc="7.5" yc="7.5" width="13.5" height="13.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.08" green="0.08" blue="0.08" /><bounds xc="7.5" yc="7.5" width="13.5" height="13.5" /></rect>
|
||||||
|
</element>
|
||||||
|
<element name="button_black_small" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="10" height="15" /></rect>
|
||||||
|
<rect state="0"><color red="0.14" green="0.14" blue="0.14" /><bounds xc="5" yc="7.5" width="8.5" height="13.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.08" green="0.08" blue="0.08" /><bounds xc="5" yc="7.5" width="8.5" height="13.5" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="button_tempo" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="15" /></rect>
|
||||||
|
<rect state="0"><color red="0.11" green="0.1" blue="0.1" /><bounds xc="7.5" yc="7.5" width="13.5" height="13.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.075" green="0.07" blue="0.07" /><bounds xc="7.5" yc="7.5" width="13.5" height="13.5" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="button_track" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="15" /></rect>
|
||||||
|
<rect state="0"><color red="0.45" green="0.45" blue="0.45" /><bounds xc="7.5" yc="7.5" width="13.5" height="13.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.3" green="0.3" blue="0.3" /><bounds xc="7.5" yc="7.5" width="13.5" height="13.5" /></rect>
|
||||||
|
</element>
|
||||||
|
<element name="button_track_small" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="10" height="15" /></rect>
|
||||||
|
<rect state="0"><color red="0.45" green="0.45" blue="0.45" /><bounds xc="5" yc="7.5" width="8.5" height="13.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.3" green="0.3" blue="0.3" /><bounds xc="5" yc="7.5" width="8.5" height="13.5" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="button_blue" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="15" /></rect>
|
||||||
|
<rect state="0"><color red="0.35" green="0.45" blue="0.92" /><bounds xc="7.5" yc="7.5" width="13.5" height="13.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.2" green="0.3" blue="0.75" /><bounds xc="7.5" yc="7.5" width="13.5" height="13.5" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<element name="button_record" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="15" height="15" /></rect>
|
||||||
|
<rect state="0"><color red="0.55" green="0.6" blue="0.8" /><bounds xc="7.5" yc="7.5" width="13.5" height="13.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.42" green="0.45" blue="0.6" /><bounds xc="7.5" yc="7.5" width="13.5" height="13.5" /></rect>
|
||||||
|
</element>
|
||||||
|
<element name="button_copy" defstate="0">
|
||||||
|
<rect><color red="0.05" green="0.05" blue="0.05" /><bounds x="0" y="0" width="10" height="15" /></rect>
|
||||||
|
<rect state="0"><color red="0.55" green="0.6" blue="0.8" /><bounds xc="5" yc="7.5" width="8.5" height="13.5" /></rect>
|
||||||
|
<rect state="1"><color red="0.42" green="0.45" blue="0.6" /><bounds xc="5" yc="7.5" width="8.5" height="13.5" /></rect>
|
||||||
|
</element>
|
||||||
|
|
||||||
|
<view name="Normal">
|
||||||
|
<element ref="bg"><bounds x="-15" y="30" width="215" height="110" /></element>
|
||||||
|
<element ref="grey"><bounds x="-15" y="30" width="215" height="2" /></element>
|
||||||
|
<element ref="grey"><bounds x="-15" y="45" width="215" height="2" /></element>
|
||||||
|
|
||||||
|
<screen index="0"><bounds x="15" y="33" width="50" height="10.93" /></screen>
|
||||||
|
|
||||||
|
<!-- copy/insert/delete -->
|
||||||
|
<element ref="button_copy" inputtag="KC3" inputmask="0x01"><bounds xc="22.5" y="60" width="10" height="15" /></element>
|
||||||
|
<element ref="copy"><bounds xc="22.5" yc="67.5" width="8" height="3" /></element>
|
||||||
|
<element ref="edit"><bounds xc="45" yc="52" width="20" height="3" /></element>
|
||||||
|
<element ref="yellow"><bounds xc="45" y="54" width="24" height="0.5" /></element>
|
||||||
|
<element ref="button_black_small" inputtag="KC3" inputmask="0x02"><bounds xc="37.5" y="60" width="10" height="15" /></element>
|
||||||
|
<element ref="insert"><bounds xc="37.5" yc="67.5" width="8" height="3" /></element>
|
||||||
|
<element ref="button_black_small" inputtag="KC3" inputmask="0x04"><bounds xc="52.5" y="60" width="10" height="15" /></element>
|
||||||
|
<element ref="delete"><bounds xc="52.5" yc="67.5" width="8" height="3" /></element>
|
||||||
|
|
||||||
|
<!-- manual data -->
|
||||||
|
<element ref="yellow"><bounds xc="30" y="84" width="58" height="1" /></element>
|
||||||
|
<element ref="yellow"><bounds xc="30" y="138" width="58" height="1" /></element>
|
||||||
|
|
||||||
|
<element ref="button_black" inputtag="KC2" inputmask="0x01"><bounds x="15" y="90" width="15" height="15" /></element>
|
||||||
|
<element ref="note4"><bounds xc="22.5" yc="97.5" width="13" height="4" /></element>
|
||||||
|
<element ref="button_black" inputtag="KC2" inputmask="0x02"><bounds x="30" y="90" width="15" height="15" /></element>
|
||||||
|
<element ref="note2"><bounds xc="37.5" yc="97.5" width="10" height="4" /></element>
|
||||||
|
<element ref="button_black" inputtag="KC2" inputmask="0x04"><bounds x="45" y="90" width="15" height="15" /></element>
|
||||||
|
<element ref="note1"><bounds xc="52.5" yc="97.5" width="10" height="4" /></element>
|
||||||
|
|
||||||
|
<element ref="button_black" inputtag="KC1" inputmask="0x01"><bounds x="15" y="105" width="15" height="15" /></element>
|
||||||
|
<element ref="note8"><bounds xc="22.5" yc="112.5" width="13" height="4" /></element>
|
||||||
|
<element ref="button_black" inputtag="KC1" inputmask="0x02"><bounds x="30" y="105" width="15" height="15" /></element>
|
||||||
|
<element ref="note16"><bounds xc="37.5" yc="112.5" width="13" height="4" /></element>
|
||||||
|
<element ref="button_black" inputtag="KC1" inputmask="0x04"><bounds x="45" y="105" width="15" height="15" /></element>
|
||||||
|
<element ref="note32"><bounds xc="52.5" yc="112.5" width="13" height="4" /></element>
|
||||||
|
|
||||||
|
<element ref="button_black" inputtag="KC0" inputmask="0x01"><bounds x="0" y="120" width="15" height="15" /></element>
|
||||||
|
<element ref="rest"><bounds xc="7.5" yc="127.5" width="13" height="3" /></element>
|
||||||
|
<element ref="button_black" inputtag="KC0" inputmask="0x02"><bounds x="15" y="120" width="15" height="15" /></element>
|
||||||
|
<element ref="dot"><bounds xc="22.5" yc="127.5" width="13" height="3" /></element>
|
||||||
|
<element ref="button_black" inputtag="KC0" inputmask="0x04"><bounds x="30" y="120" width="15" height="15" /></element>
|
||||||
|
<element ref="triplet"><bounds xc="37.5" yc="127.5" width="13" height="3" /></element>
|
||||||
|
<element ref="button_black" inputtag="KC0" inputmask="0x08"><bounds x="45" y="120" width="15" height="15" /></element>
|
||||||
|
<element ref="tie"><bounds xc="52.5" yc="127.5" width="13" height="3" /></element>
|
||||||
|
<element ref="manual_data"><bounds xc="30" y="135" width="30" height="3" /></element>
|
||||||
|
|
||||||
|
<!-- midi / repeat -->
|
||||||
|
<element ref="led" name="led1.3"><bounds xc="82.5" yc="57" width="4" height="2" /></element>
|
||||||
|
<element ref="led" name="led1.4"><bounds xc="102.5" yc="57" width="4" height="2" /></element>
|
||||||
|
<element ref="button_track" inputtag="KC4" inputmask="0x04"><bounds x="75" y="60" width="15" height="15" /></element>
|
||||||
|
<element ref="midi"><bounds xc="82.5" yc="67.5" width="13" height="3" /></element>
|
||||||
|
<element ref="button_track" inputtag="KC4" inputmask="0x02"><bounds x="95" y="60" width="15" height="15" /></element>
|
||||||
|
<element ref="repeat"><bounds xc="102.5" yc="67.5" width="13" height="3" /></element>
|
||||||
|
|
||||||
|
<!-- metronome -->
|
||||||
|
<element ref="led" name="led1.5"><bounds xc="92.5" yc="87" width="4" height="2" /></element>
|
||||||
|
<element ref="button_tempo" inputtag="KC3" inputmask="0x08"><bounds xc="92.5" y="90" width="15" height="15" /></element>
|
||||||
|
<element ref="metronome"><bounds xc="92.5" yc="96" width="13" height="3" /></element>
|
||||||
|
<element ref="enter"><bounds xc="92.5" yc="99" width="13" height="3" /></element>
|
||||||
|
|
||||||
|
<!-- tempo -->
|
||||||
|
<element ref="button_tempo" inputtag="KC1" inputmask="0x08"><bounds x="75" y="120" width="15" height="15" /></element>
|
||||||
|
<element ref="down"><bounds xc="82.5" yc="127.5" width="13" height="4" /></element>
|
||||||
|
<element ref="button_tempo" inputtag="KC2" inputmask="0x08"><bounds x="95" y="120" width="15" height="15" /></element>
|
||||||
|
<element ref="up"><bounds xc="102.5" yc="127.5" width="13" height="4" /></element>
|
||||||
|
|
||||||
|
<!-- tracks, cartridge/mt -->
|
||||||
|
<element ref="led" name="led0.7"><bounds xc="130" yc="57" width="4" height="2" /></element>
|
||||||
|
<element ref="led" name="led1.0"><bounds xc="140" yc="57" width="4" height="2" /></element>
|
||||||
|
<element ref="led" name="led1.1"><bounds xc="150" yc="57" width="4" height="2" /></element>
|
||||||
|
<element ref="led" name="led1.2"><bounds xc="160" yc="57" width="4" height="2" /></element>
|
||||||
|
<element ref="track"><bounds xc="145" yc="52" width="20" height="3" /></element>
|
||||||
|
<element ref="yellow"><bounds xc="145" y="54" width="38" height="0.5" /></element>
|
||||||
|
<element ref="button_track_small" inputtag="KC2" inputmask="0x10"><bounds x="125" y="60" width="10" height="15" /></element>
|
||||||
|
<element ref="track1"><bounds xc="130" yc="67.5" width="8" height="4" /></element>
|
||||||
|
<element ref="button_track_small" inputtag="KC2" inputmask="0x20"><bounds x="135" y="60" width="10" height="15" /></element>
|
||||||
|
<element ref="track2"><bounds xc="140" yc="67.5" width="8" height="4" /></element>
|
||||||
|
<element ref="button_track_small" inputtag="KC2" inputmask="0x40"><bounds x="145" y="60" width="10" height="15" /></element>
|
||||||
|
<element ref="track3"><bounds xc="150" yc="67.5" width="8" height="4" /></element>
|
||||||
|
<element ref="button_track_small" inputtag="KC2" inputmask="0x80"><bounds x="155" y="60" width="10" height="15" /></element>
|
||||||
|
<element ref="track4"><bounds xc="160" yc="67.5" width="8" height="4" /></element>
|
||||||
|
|
||||||
|
<element ref="led" name="led1.6"><bounds xc="177.5" yc="57" width="4" height="2" /></element>
|
||||||
|
<element ref="button_track" inputtag="KC4" inputmask="0x80"><bounds x="170" y="60" width="15" height="15" /></element>
|
||||||
|
<element ref="cartridge"><bounds xc="177.5" yc="66" width="13" height="3" /></element>
|
||||||
|
<element ref="mt"><bounds xc="177.5" yc="69" width="13" height="3" /></element>
|
||||||
|
|
||||||
|
<element ref="yellow"><bounds xc="155" y="84" width="58" height="1" /></element>
|
||||||
|
<element ref="yellow"><bounds xc="155" y="138" width="58" height="1" /></element>
|
||||||
|
<!-- real time/manual/record/reset -->
|
||||||
|
<element ref="led" name="led0.4"><bounds xc="132.5" yc="87" width="4" height="2" /></element>
|
||||||
|
<element ref="led" name="led0.5"><bounds xc="147.5" yc="87" width="4" height="2" /></element>
|
||||||
|
<element ref="led" name="led0.6"><bounds xc="162.5" yc="87" width="4" height="2" /></element>
|
||||||
|
<element ref="button_blue" inputtag="KC1" inputmask="0x10"><bounds x="125" y="90" width="15" height="15" /></element>
|
||||||
|
<element ref="realtime"><bounds xc="132.5" yc="97.5" width="13" height="3" /></element>
|
||||||
|
<element ref="button_blue" inputtag="KC1" inputmask="0x20"><bounds x="140" y="90" width="15" height="15" /></element>
|
||||||
|
<element ref="manual"><bounds xc="147.5" yc="97.5" width="13" height="3" /></element>
|
||||||
|
<element ref="button_record" inputtag="KC1" inputmask="0x40"><bounds x="155" y="90" width="15" height="15" /></element>
|
||||||
|
<element ref="record"><bounds xc="162.5" yc="97.5" width="13" height="3" /></element>
|
||||||
|
<element ref="button_blue" inputtag="KC1" inputmask="0x80"><bounds x="170" y="90" width="15" height="15" /></element>
|
||||||
|
<element ref="reset"><bounds xc="177.5" yc="97.5" width="13" height="3" /></element>
|
||||||
|
<element ref="yellow"><bounds xc="140" y="106" width="28" height="0.5" /></element>
|
||||||
|
<element ref="record_track"><bounds xc="140" yc="109" width="20" height="3" /></element>
|
||||||
|
|
||||||
|
<!-- rev/fwd/play/stop -->
|
||||||
|
<element ref="led" name="led0.0"><bounds xc="132.5" yc="117" width="4" height="2" /></element>
|
||||||
|
<element ref="led" name="led0.1"><bounds xc="147.5" yc="117" width="4" height="2" /></element>
|
||||||
|
<element ref="led" name="led0.2"><bounds xc="162.5" yc="117" width="4" height="2" /></element>
|
||||||
|
<element ref="led" name="led0.3"><bounds xc="177.5" yc="117" width="4" height="2" /></element>
|
||||||
|
<element ref="button_blue" inputtag="KC0" inputmask="0x10"><bounds x="125" y="120" width="15" height="15" /></element>
|
||||||
|
<element ref="rev"><bounds xc="132.5" yc="127.5" width="13" height="3" /></element>
|
||||||
|
<element ref="save"><bounds xc="132.5" y="135" width="13" height="3" /></element>
|
||||||
|
<element ref="button_blue" inputtag="KC0" inputmask="0x20"><bounds x="140" y="120" width="15" height="15" /></element>
|
||||||
|
<element ref="fwd"><bounds xc="147.5" yc="127.5" width="13" height="3" /></element>
|
||||||
|
<element ref="load"><bounds xc="147.5" y="135" width="13" height="3" /></element>
|
||||||
|
<element ref="button_blue" inputtag="KC0" inputmask="0x40"><bounds x="155" y="120" width="15" height="15" /></element>
|
||||||
|
<element ref="play"><bounds xc="162.5" yc="127.5" width="13" height="3" /></element>
|
||||||
|
<element ref="check"><bounds xc="162.5" y="135" width="13" height="3" /></element>
|
||||||
|
<element ref="button_blue" inputtag="KC0" inputmask="0x80"><bounds x="170" y="120" width="15" height="15" /></element>
|
||||||
|
<element ref="stop"><bounds xc="177.5" yc="127.5" width="13" height="3" /></element>
|
||||||
|
</view>
|
||||||
|
</mamelayout>
|
@ -15916,6 +15916,10 @@ mz1 // 1986 Casio (unreleased)
|
|||||||
@source:casio/cz101.cpp
|
@source:casio/cz101.cpp
|
||||||
cz101 // 1984 Casio
|
cz101 // 1984 Casio
|
||||||
|
|
||||||
|
@source:casio/cz230s.cpp
|
||||||
|
cz230s // 1985 Casio
|
||||||
|
sz1 // 1985 Casio
|
||||||
|
|
||||||
@source:casio/fp200.cpp
|
@source:casio/fp200.cpp
|
||||||
fp200 //
|
fp200 //
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user