mirror of
https://github.com/holub/mame
synced 2025-06-06 04:43:45 +03:00
Clean up some mess:
* moog/source.cpp: A synth without sound output is not working by definition. * casio/pickytlk.cpp: Don't use overly generic short names for Plet's systems. * casio/pickytlk.cpp: Don't use overly convolutes code for setting internal layout.
This commit is contained in:
parent
9b914fbfe6
commit
9e463d2b89
@ -1463,7 +1463,7 @@ void lua_engine::initialize()
|
||||
machine_type["images"] = sol::property([] (running_machine &m) { return devenum<image_interface_enumerator>(m.root_device()); });
|
||||
machine_type["slots"] = sol::property([](running_machine &m) { return devenum<slot_interface_enumerator>(m.root_device()); });
|
||||
machine_type["phase"] = sol::property(
|
||||
[](running_machine& m)
|
||||
[] (running_machine const &m) -> char const *
|
||||
{
|
||||
switch (m.phase())
|
||||
{
|
||||
@ -1472,10 +1472,11 @@ void lua_engine::initialize()
|
||||
case machine_phase::RESET: return "reset";
|
||||
case machine_phase::RUNNING: return "running";
|
||||
case machine_phase::EXIT: return "exit";
|
||||
default: return "";
|
||||
}
|
||||
return nullptr;
|
||||
});
|
||||
|
||||
|
||||
auto game_driver_type = sol().registry().new_usertype<game_driver>("game_driver", sol::no_constructor);
|
||||
game_driver_type["name"] = sol::property([] (game_driver const &driver) { return &driver.name[0]; });
|
||||
game_driver_type["description"] = sol::property([] (game_driver const &driver) { return &driver.type.fullname()[0]; });
|
||||
|
@ -65,21 +65,6 @@ namespace {
|
||||
class pickytlk_base_state : public driver_device
|
||||
{
|
||||
public:
|
||||
pickytlk_base_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_display_ram(*this, "display_ram")
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_io_buttons(*this, "BUTTONS")
|
||||
, m_io_pen_x(*this, "PEN_X")
|
||||
, m_io_pen_y(*this, "PEN_Y")
|
||||
, m_io_pen_y_rescale(*this, "PEN_Y_RESCALE")
|
||||
, m_ko(0)
|
||||
, m_port(0)
|
||||
, m_opt(0)
|
||||
{ }
|
||||
|
||||
void pickytlk(machine_config &config);
|
||||
|
||||
DECLARE_CROSSHAIR_MAPPER_MEMBER(pen_y_mapper);
|
||||
ioport_value pen_y_rescale_r();
|
||||
ioport_value pen_target_r();
|
||||
@ -98,9 +83,24 @@ protected:
|
||||
PEN_HOLD = 2,
|
||||
};
|
||||
|
||||
pickytlk_base_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_display_ram(*this, "display_ram")
|
||||
, m_maincpu(*this, "maincpu")
|
||||
, m_io_buttons(*this, "BUTTONS")
|
||||
, m_io_pen_x(*this, "PEN_X")
|
||||
, m_io_pen_y(*this, "PEN_Y")
|
||||
, m_io_pen_y_rescale(*this, "PEN_Y_RESCALE")
|
||||
, m_ko(0)
|
||||
, m_port(0)
|
||||
, m_opt(0)
|
||||
{ }
|
||||
|
||||
virtual void machine_start() override ATTR_COLD;
|
||||
virtual void machine_reset() override ATTR_COLD;
|
||||
|
||||
void pickytlk(machine_config &config) ATTR_COLD;
|
||||
|
||||
void kol_w(u8 data);
|
||||
void koh_w(u8 data);
|
||||
void port_w(u8 data);
|
||||
@ -112,10 +112,9 @@ protected:
|
||||
TIMER_CALLBACK_MEMBER(io_timer_tick);
|
||||
u8 io_pen_x_read();
|
||||
u8 io_pen_y_read();
|
||||
virtual u8 tablet_read(offs_t offset);
|
||||
virtual u8 tablet_read(offs_t offset) = 0;
|
||||
void tablet_write(offs_t offset, u8 data);
|
||||
|
||||
virtual void pickytlk_layout(machine_config &config);
|
||||
void update_crosshair(screen_device &screen);
|
||||
u32 screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
|
||||
|
||||
@ -231,12 +230,6 @@ u8 pickytlk_base_state::io_pen_y_read()
|
||||
: rescale(io_pen_y_pos, io_pen_y_min, io_pen_y_max, 0xa0, 0xf0);
|
||||
}
|
||||
|
||||
u8 pickytlk_base_state::tablet_read(offs_t offset)
|
||||
{
|
||||
// Default (overriden by each system)
|
||||
return 0;
|
||||
}
|
||||
|
||||
void pickytlk_base_state::tablet_write(offs_t offset, u8 data)
|
||||
{
|
||||
LOGMASKED(LOG_TABLET, "%s: tablet_write [%02x] = %02x\n", machine().describe_context(), offset, data);
|
||||
@ -286,7 +279,7 @@ u8 pickytlk_base_state::ki_r()
|
||||
m_io_timer->reset(attotime::never);
|
||||
}
|
||||
|
||||
return m_pen_state == PEN_PRESS ? 0x80 : 0;
|
||||
return (m_pen_state == PEN_PRESS) ? 0x80 : 0;
|
||||
}
|
||||
|
||||
u8 pickytlk_base_state::in0_r()
|
||||
@ -303,12 +296,7 @@ u8 pickytlk_base_state::in0_r()
|
||||
|
||||
u8 pickytlk_base_state::input_flag_read()
|
||||
{
|
||||
return m_pen_state == PEN_PRESS || m_pen_state == PEN_HOLD ? 0 : 1;
|
||||
}
|
||||
|
||||
void pickytlk_base_state::pickytlk_layout(machine_config &config)
|
||||
{
|
||||
// Nothing (overriden by each system)
|
||||
return (m_pen_state == PEN_PRESS || m_pen_state == PEN_HOLD) ? 0 : 1;
|
||||
}
|
||||
|
||||
void pickytlk_base_state::update_crosshair(screen_device &screen)
|
||||
@ -384,8 +372,6 @@ void pickytlk_base_state::pickytlk(machine_config &config)
|
||||
screen.set_visarea(0, 126, 0, 63);
|
||||
screen.set_screen_update(FUNC(pickytlk_base_state::screen_update));
|
||||
screen.set_palette("palette");
|
||||
|
||||
pickytlk_layout(config);
|
||||
}
|
||||
|
||||
|
||||
@ -396,20 +382,14 @@ public:
|
||||
: pickytlk_base_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void pickytlk_monocolor(machine_config &config);
|
||||
void pickytlk_monocolor(machine_config &config) ATTR_COLD;
|
||||
|
||||
private:
|
||||
virtual u8 tablet_read(offs_t offset) override;
|
||||
virtual void pickytlk_layout(machine_config &config) override;
|
||||
void pickytlk_mem(address_map &map);
|
||||
void pickytlk_palette(palette_device &palette) const;
|
||||
void pickytlk_mem(address_map &map) ATTR_COLD;
|
||||
void pickytlk_palette(palette_device &palette) const ATTR_COLD;
|
||||
};
|
||||
|
||||
void pickytlk_monocolor_state::pickytlk_layout(machine_config &config)
|
||||
{
|
||||
config.set_default_layout(layout_pickytlk);
|
||||
}
|
||||
|
||||
u8 pickytlk_monocolor_state::tablet_read(offs_t offset)
|
||||
{
|
||||
LOGMASKED(LOG_TABLET, "%s: tablet_read [%02x] = %02x\n", machine().describe_context(), offset, m_io_tablet_regs[offset]);
|
||||
@ -460,6 +440,8 @@ void pickytlk_monocolor_state::pickytlk_monocolor(machine_config &config)
|
||||
|
||||
// TODO: Verify palette. Colors can be changed by changing the contrast.
|
||||
PALETTE(config, "palette", FUNC(pickytlk_monocolor_state::pickytlk_palette), 4);
|
||||
|
||||
config.set_default_layout(layout_pickytlk);
|
||||
}
|
||||
|
||||
|
||||
@ -470,20 +452,15 @@ public:
|
||||
: pickytlk_base_state(mconfig, type, tag)
|
||||
{ }
|
||||
|
||||
void pickytlk_multicolor(machine_config &config);
|
||||
void plets(machine_config &config) ATTR_COLD;
|
||||
void pickytlk_multicolor(machine_config &config) ATTR_COLD;
|
||||
|
||||
private:
|
||||
virtual u8 tablet_read(offs_t offset) override;
|
||||
virtual void pickytlk_layout(machine_config &config) override;
|
||||
void pickytlk_mem(address_map &map);
|
||||
void pickytlk_palette(palette_device &palette) const;
|
||||
void pickytlk_mem(address_map &map) ATTR_COLD;
|
||||
void pickytlk_palette(palette_device &palette) const ATTR_COLD;
|
||||
};
|
||||
|
||||
void pickytlk_multicolor_state::pickytlk_layout(machine_config &config)
|
||||
{
|
||||
config.set_default_layout(layout_pickytlk);
|
||||
}
|
||||
|
||||
u8 pickytlk_multicolor_state::tablet_read(offs_t offset)
|
||||
{
|
||||
/*
|
||||
@ -545,7 +522,7 @@ void pickytlk_multicolor_state::pickytlk_palette(palette_device &palette) const
|
||||
palette.set_pen_color(3, 0xee, 0x77, 0x33);
|
||||
}
|
||||
|
||||
void pickytlk_multicolor_state::pickytlk_multicolor(machine_config &config)
|
||||
void pickytlk_multicolor_state::plets(machine_config &config)
|
||||
{
|
||||
pickytlk_base_state::pickytlk(config);
|
||||
|
||||
@ -555,21 +532,11 @@ void pickytlk_multicolor_state::pickytlk_multicolor(machine_config &config)
|
||||
PALETTE(config, "palette", FUNC(pickytlk_multicolor_state::pickytlk_palette), 4);
|
||||
}
|
||||
|
||||
|
||||
class plets_state : public pickytlk_multicolor_state
|
||||
void pickytlk_multicolor_state::pickytlk_multicolor(machine_config &config)
|
||||
{
|
||||
public:
|
||||
plets_state(const machine_config &mconfig, device_type type, const char *tag)
|
||||
: pickytlk_multicolor_state(mconfig, type, tag)
|
||||
{ }
|
||||
plets(config);
|
||||
|
||||
private:
|
||||
virtual void pickytlk_layout(machine_config &config) override;
|
||||
};
|
||||
|
||||
void plets_state::pickytlk_layout(machine_config &config)
|
||||
{
|
||||
// Nothing
|
||||
config.set_default_layout(layout_pickytlk);
|
||||
}
|
||||
|
||||
|
||||
@ -617,14 +584,14 @@ ROM_START(pickytlk)
|
||||
ROM_LOAD("d23c8000xgx-c64.lsi5", 0x00000, 0x100000, CRC(6ed6feae) SHA1(f9a63db3d048da0954cab052690deb01ec384b22))
|
||||
ROM_END
|
||||
|
||||
ROM_START(mk300)
|
||||
ROM_START(plets300)
|
||||
CPU_ROM_MULTICOLOR
|
||||
|
||||
ROM_REGION(0x100000, "mask_rom", 0)
|
||||
ROM_LOAD("d23c8000xgx-c77.lsi5", 0x00000, 0x100000, CRC(50ecb853) SHA1(5f2564ccb6ff7e0e5a21064ca32626f35dc81506))
|
||||
ROM_END
|
||||
|
||||
ROM_START(mk350)
|
||||
ROM_START(plets350)
|
||||
CPU_ROM_MULTICOLOR
|
||||
|
||||
ROM_REGION(0x100000, "mask_rom", 0)
|
||||
@ -650,7 +617,7 @@ COMP(1997?, jd368, 0, 0, pickytlk_multicolor, pickytlk, pickytlk_multicolor_stat
|
||||
COMP(1998, pickytlk, 0, 0, pickytlk_multicolor, pickytlk, pickytlk_multicolor_state, empty_init, "Casio", "Super Picky Talk - Forest of Gurutan", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
|
||||
|
||||
// Release date 1999-09 from "Casio Game Perfect Catalogue"
|
||||
COMP(1999, mk300, 0, 0, pickytlk_multicolor, pickytlk, plets_state, empty_init, "Casio", "Plet's (MK-300)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
|
||||
COMP(1999, plets300, 0, 0, plets, pickytlk, pickytlk_multicolor_state, empty_init, "Casio", "Plet's (MK-300)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
|
||||
|
||||
// ROM date 0019K7001
|
||||
COMP(2000?, mk350, 0, 0, pickytlk_multicolor, pickytlk, plets_state, empty_init, "Casio", "Plet's (MK-350)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
|
||||
COMP(2000?, plets350, 0, 0, plets, pickytlk, pickytlk_multicolor_state, empty_init, "Casio", "Plet's (MK-350)", MACHINE_NO_SOUND | MACHINE_NOT_WORKING)
|
||||
|
@ -16189,10 +16189,10 @@ pb2000c // Casio PB-2000C
|
||||
jd363 // Casio Picky Talk - Super Denshi Techou
|
||||
jd364 // Casio Color Picky Talk - Super Denshi Techou
|
||||
jd368 // Casio Super Picky Talk - Access Pet
|
||||
mk300 // Casio Plet's (MK-300)
|
||||
mk350 // Casio Plet's (MK-350)
|
||||
pickydis // Tsukuda Original Disney Characters - Tegaki Electronic Note
|
||||
pickytlk // Casio Super Picky Talk - Forest of Gurutan
|
||||
plets300 // Casio Plet's (MK-300)
|
||||
plets350 // Casio Plet's (MK-350)
|
||||
|
||||
@source:casio/pv1000.cpp
|
||||
pv1000 // Casio PV-1000
|
||||
|
@ -264,7 +264,7 @@ uint8_t mrokumei_state::mrokumei_keyboard_r(offs_t offset)
|
||||
{
|
||||
uint8_t res = 0x3f;
|
||||
|
||||
// offset 0 is player 1, offset 1 player 2 (not supported)
|
||||
// offset 0 is player 1, offset 1 player 2
|
||||
for (int i = 0; i < 5; i++)
|
||||
{
|
||||
if (BIT(m_keyb, i))
|
||||
|
@ -47,17 +47,18 @@ TODO:
|
||||
|
||||
#include "moog_source.lh"
|
||||
|
||||
#define LOG_CV (1U << 1)
|
||||
#define LOG_BUTTONS (1U << 2)
|
||||
#define LOG_ENCODER (1U << 3)
|
||||
#define LOG_KEYBOARD (1U << 4)
|
||||
#define LOG_CV_KEYBOARD_APPROX (1U << 5)
|
||||
#define LOG_CV (1U << 1)
|
||||
#define LOG_BUTTONS (1U << 2)
|
||||
#define LOG_ENCODER (1U << 3)
|
||||
#define LOG_KEYBOARD (1U << 4)
|
||||
#define LOG_CV_KEYBOARD_APPROX (1U << 5)
|
||||
|
||||
#define VERBOSE (LOG_GENERAL|LOG_CV)
|
||||
#define LOG_OUTPUT_FUNC osd_printf_info
|
||||
//#define LOG_OUTPUT_FUNC osd_printf_info
|
||||
|
||||
#include "logmacro.h"
|
||||
|
||||
namespace
|
||||
{
|
||||
namespace {
|
||||
|
||||
constexpr const char MAINCPU_TAG[] = "z80";
|
||||
constexpr const char NVRAM_TAG[] = "nvram";
|
||||
@ -65,8 +66,7 @@ constexpr const char NVRAM_TAG[] = "nvram";
|
||||
class source_state : public driver_device
|
||||
{
|
||||
public:
|
||||
source_state(const machine_config& mconfig, device_type type,
|
||||
const char* tag) ATTR_COLD
|
||||
source_state(const machine_config &mconfig, device_type type, const char* tag) ATTR_COLD
|
||||
: driver_device(mconfig, type, tag)
|
||||
, m_maincpu(*this, MAINCPU_TAG)
|
||||
, m_octave_io(*this, "octave_buttons")
|
||||
@ -90,14 +90,15 @@ public:
|
||||
, m_cv(static_cast<int>(CV::SIZE), -1)
|
||||
{}
|
||||
|
||||
void source(machine_config& config) ATTR_COLD;
|
||||
|
||||
void machine_start() override ATTR_COLD;
|
||||
void machine_reset() override ATTR_COLD;
|
||||
void source(machine_config &config) ATTR_COLD;
|
||||
|
||||
DECLARE_INPUT_CHANGED_MEMBER(octave_button_pressed);
|
||||
DECLARE_INPUT_CHANGED_MEMBER(encoder_moved);
|
||||
|
||||
protected:
|
||||
void machine_start() override ATTR_COLD;
|
||||
void machine_reset() override ATTR_COLD;
|
||||
|
||||
private:
|
||||
void update_octave_leds();
|
||||
|
||||
@ -144,6 +145,8 @@ private:
|
||||
u8 m_button_row_latch = 0xff;
|
||||
bool m_encoder_incr = false;
|
||||
|
||||
std::vector<float> m_cv;
|
||||
|
||||
// All MUXes are CD4051B.
|
||||
// Component designations refer to board 2 (synthesizer board).
|
||||
// The enum names match the CV labels in the schematic, but some
|
||||
@ -182,7 +185,6 @@ private:
|
||||
|
||||
SIZE
|
||||
};
|
||||
std::vector<float> m_cv;
|
||||
|
||||
static constexpr const float MAX_CV = 10; // In Volts.
|
||||
static constexpr const u8 PATTERNS_7447[16] =
|
||||
@ -365,9 +367,9 @@ void source_state::cv_w(offs_t offset, u8 data)
|
||||
return;
|
||||
|
||||
const float cv = MAX_CV * data / 255.0f;
|
||||
if (cv == m_cv.at(offset))
|
||||
if (cv == m_cv[offset])
|
||||
return;
|
||||
m_cv.at(offset) = cv;
|
||||
m_cv[offset] = cv;
|
||||
|
||||
if (offset == static_cast<int>(CV::KEYBOARD_APPROX))
|
||||
LOGMASKED(LOG_CV_KEYBOARD_APPROX,
|
||||
@ -445,7 +447,7 @@ u8 source_state::keyboard_r()
|
||||
// TODO: Compute keyboard voltage in an input callback.
|
||||
static constexpr const int KB_APPROX_INDEX =
|
||||
static_cast<int>(CV::KEYBOARD_APPROX);
|
||||
const u8 d0 = (get_keyboard_v() >= m_cv.at(KB_APPROX_INDEX)) ? 1 : 0;
|
||||
const u8 d0 = (get_keyboard_v() >= m_cv[KB_APPROX_INDEX]) ? 1 : 0;
|
||||
|
||||
// D1, D2: Loudness and Filter contour peaks.
|
||||
// D1 <- U32, FILT CNTR <- S22-11: 0 when envolope reaches almost 10V
|
||||
@ -833,7 +835,6 @@ ROM_START(moogsource)
|
||||
ROMX_LOAD("3p3.u23", 0x000000, 0x001000, CRC(4211331f) SHA1(8767ef6b1cbb032a89a78bdb77bb7dbc1c187974), ROM_BIOS(0))
|
||||
ROM_END
|
||||
|
||||
} // Anonymous namespace.
|
||||
|
||||
SYST(1981, moogsource, 0, 0, source, source, source_state, empty_init, "Moog Music", "Moog Source", MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND)
|
||||
} // anonymous namespace.
|
||||
|
||||
SYST(1981, moogsource, 0, 0, source, source, source_state, empty_init, "Moog Music", "Moog Source", MACHINE_NOT_WORKING | MACHINE_SUPPORTS_SAVE | MACHINE_NO_SOUND)
|
||||
|
Loading…
Reference in New Issue
Block a user