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:
Vas Crabb 2024-12-31 04:13:40 +11:00
parent 9b914fbfe6
commit 9e463d2b89
5 changed files with 63 additions and 94 deletions

View File

@ -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]; });

View File

@ -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)

View File

@ -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

View File

@ -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))

View File

@ -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)