From 549c0e9cf71f1d40f31f5debfcdf4e951fe07430 Mon Sep 17 00:00:00 2001 From: Vas Crabb Date: Sun, 10 Jan 2021 02:37:22 +1100 Subject: [PATCH] Miscellaneous cleanup. * audio/redbaron.cpp: Added save state support. * gladiatr.cpp: Fixed typo. * Changed some unused functions to use [[maybe_unused]] attribute so they don't rot. --- src/devices/bus/coco/coco_midi.cpp | 4 +- src/mame/audio/redbaron.cpp | 73 ++++++++++++++++-------------- src/mame/audio/redbaron.h | 28 ++++++------ src/mame/drivers/bitgraph.cpp | 50 ++++++++++++-------- src/mame/drivers/deco_ld.cpp | 10 ++-- src/mame/drivers/gladiatr.cpp | 2 +- src/mame/drivers/pinball2k.cpp | 3 +- src/mame/drivers/tutor.cpp | 22 ++++++--- src/mame/video/nbmj8900.cpp | 17 ++++--- 9 files changed, 119 insertions(+), 90 deletions(-) diff --git a/src/devices/bus/coco/coco_midi.cpp b/src/devices/bus/coco/coco_midi.cpp index e735a892f0e..0e6e38b839b 100644 --- a/src/devices/bus/coco/coco_midi.cpp +++ b/src/devices/bus/coco/coco_midi.cpp @@ -16,9 +16,10 @@ #include "machine/clock.h" #include "bus/midi/midi.h" +namespace { + // ======================> coco_midi_device -namespace { class coco_midi_device : public device_t, public device_cococart_interface @@ -108,6 +109,7 @@ void dragon_midi_device::device_start() read8sm_delegate(m_acia, FUNC(acia6850_device::read)), write8sm_delegate(m_acia, FUNC(acia6850_device::write))); } + } // anonymous namespace DEFINE_DEVICE_TYPE_PRIVATE(COCO_MIDI, device_cococart_interface, coco_midi_device, "coco_midi", "CoCo MIDI PAK") diff --git a/src/mame/audio/redbaron.cpp b/src/mame/audio/redbaron.cpp index 51586a809fd..7873ac577cb 100644 --- a/src/mame/audio/redbaron.cpp +++ b/src/mame/audio/redbaron.cpp @@ -38,25 +38,24 @@ DEFINE_DEVICE_TYPE(REDBARON, redbaron_sound_device, "redbaron_custom", "Red Baro // redbaron_sound_device - constructor //------------------------------------------------- -redbaron_sound_device::redbaron_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) - : device_t(mconfig, REDBARON, tag, owner, clock), - device_sound_interface(mconfig, *this), - m_vol_lookup(nullptr), - m_channel(nullptr), - m_latch(0), - m_poly_counter(0), - m_poly_shift(0), - m_filter_counter(0), - m_crash_amp(0), - m_shot_amp(0), - m_shot_amp_counter(0), - m_squeal_amp(0), - m_squeal_amp_counter(0), - m_squeal_off_counter(0), - m_squeal_on_counter(0), - m_squeal_out(0) +redbaron_sound_device::redbaron_sound_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : + device_t(mconfig, REDBARON, tag, owner, clock), + device_sound_interface(mconfig, *this), + m_vol_lookup(nullptr), + m_channel(nullptr), + m_latch(0), + m_poly_counter(0), + m_poly_shift(0), + m_filter_counter(0), + m_crash_amp(0), + m_shot_amp(0), + m_shot_amp_counter(0), + m_squeal_amp(0), + m_squeal_amp_counter(0), + m_squeal_off_counter(0), + m_squeal_on_counter(0), + m_squeal_out(0) { - std::fill(std::begin(m_vol_crash), std::end(m_vol_crash), 0); } @@ -66,13 +65,11 @@ redbaron_sound_device::redbaron_sound_device(const machine_config &mconfig, cons void redbaron_sound_device::device_start() { - int i; - m_vol_lookup = std::make_unique(32768); - for( i = 0; i < 0x8000; i++ ) - m_vol_lookup[0x7fff-i] = (int16_t) (0x7fff/exp(1.0*i/4096)); + for( int i = 0; i < 0x8000; i++ ) + m_vol_lookup[0x7fff-i] = int16_t(0x7fff/exp(1.0*i/4096)); - for( i = 0; i < 16; i++ ) + for( int i = 0; i < 16; i++ ) { /* r0 = R18 and R24, r1 = open */ double r0 = 1.0/(5600 + 680), r1 = 1/6e12; @@ -103,6 +100,19 @@ void redbaron_sound_device::device_start() } m_channel = stream_alloc(0, 1, OUTPUT_RATE); + + save_item(NAME(m_latch)); + save_item(NAME(m_poly_counter)); + save_item(NAME(m_poly_shift)); + save_item(NAME(m_filter_counter)); + save_item(NAME(m_crash_amp)); + save_item(NAME(m_shot_amp)); + save_item(NAME(m_shot_amp_counter)); + save_item(NAME(m_squeal_amp)); + save_item(NAME(m_squeal_amp_counter)); + save_item(NAME(m_squeal_off_counter)); + save_item(NAME(m_squeal_on_counter)); + save_item(NAME(m_squeal_out)); } @@ -123,7 +133,7 @@ void redbaron_sound_device::sound_stream_update(sound_stream &stream, std::vecto while( m_poly_counter <= 0 ) { m_poly_counter += OUTPUT_RATE; - if( ((m_poly_shift & 0x0001) == 0) == ((m_poly_shift & 0x4000) == 0) ) + if( BIT(m_poly_shift, 0) == BIT(m_poly_shift, 14) ) m_poly_shift = (m_poly_shift << 1) | 1; else m_poly_shift <<= 1; @@ -142,17 +152,16 @@ void redbaron_sound_device::sound_stream_update(sound_stream &stream, std::vecto /* shot not active: charge C32 (0.1u) */ if( (m_latch & 0x04) == 0 ) m_shot_amp = 32767; - else - if( (m_poly_shift & 0x8000) == 0 ) + else if( (m_poly_shift & 0x8000) == 0 ) { if( m_shot_amp > 0 ) { /* discharge C32 (0.1u) through R26 (33k) + R27 (15k) * 0.68 * C32 * (R26 + R27) = 3264us */ -// #define C32_DISCHARGE_TIME (int)(32767 / 0.003264); +// constexpr int C32_DISCHARGE_TIME = int(32767 / 0.003264); /* I think this is to short. Is C32 really 1u? */ - #define C32_DISCHARGE_TIME (int)(32767 / 0.03264); + constexpr int C32_DISCHARGE_TIME = int(32767 / 0.03264); m_shot_amp_counter -= C32_DISCHARGE_TIME; while( m_shot_amp_counter <= 0 ) { @@ -175,7 +184,7 @@ void redbaron_sound_device::sound_stream_update(sound_stream &stream, std::vecto /* charge C5 (22u) over R3 (68k) and CR1 (1N914) * time = 0.68 * C5 * R3 = 1017280us */ - #define C5_CHARGE_TIME (int)(32767 / 1.01728); + constexpr int C5_CHARGE_TIME = int(32767 / 1.01728); m_squeal_amp_counter -= C5_CHARGE_TIME; while( m_squeal_amp_counter <= 0 ) { @@ -230,10 +239,8 @@ void redbaron_sound_device::sounds_w(uint8_t data) } -#ifdef UNUSED_FUNCTION void redbaron_sound_device::pokey_w(offs_t offset, uint8_t data) { - if( m_latch & 0x20 ) - m_pokey->write(offset, data); + //if( m_latch & 0x20 ) + //m_pokey->write(offset, data); } -#endif diff --git a/src/mame/audio/redbaron.h b/src/mame/audio/redbaron.h index 71f072ff44f..8262f9619db 100644 --- a/src/mame/audio/redbaron.h +++ b/src/mame/audio/redbaron.h @@ -7,8 +7,6 @@ // TYPE DEFINITIONS //************************************************************************** -// ======================> redbaron_sound_device - class redbaron_sound_device : public device_t, public device_sound_interface { public: @@ -24,26 +22,28 @@ protected: virtual void sound_stream_update(sound_stream &stream, std::vector const &inputs, std::vector &outputs) override; private: + [[maybe_unused]] void pokey_w(offs_t offset, uint8_t data); + std::unique_ptr m_vol_lookup; int16_t m_vol_crash[16]; sound_stream *m_channel; - int m_latch; - int m_poly_counter; - int m_poly_shift; + uint8_t m_latch; + int32_t m_poly_counter; + uint16_t m_poly_shift; - int m_filter_counter; + int32_t m_filter_counter; - int m_crash_amp; - int m_shot_amp; - int m_shot_amp_counter; + uint8_t m_crash_amp; + uint16_t m_shot_amp; + int32_t m_shot_amp_counter; - int m_squeal_amp; - int m_squeal_amp_counter; - int m_squeal_off_counter; - int m_squeal_on_counter; - int m_squeal_out; + uint16_t m_squeal_amp; + int32_t m_squeal_amp_counter; + int32_t m_squeal_off_counter; + int32_t m_squeal_on_counter; + uint8_t m_squeal_out; }; DECLARE_DEVICE_TYPE(REDBARON, redbaron_sound_device) diff --git a/src/mame/drivers/bitgraph.cpp b/src/mame/drivers/bitgraph.cpp index 52279795d3c..4f337e67c24 100644 --- a/src/mame/drivers/bitgraph.cpp +++ b/src/mame/drivers/bitgraph.cpp @@ -87,6 +87,7 @@ #define LOGPIA(...) LOGMASKED(LOG_PIA, __VA_ARGS__) #define LOGDBG(...) LOGMASKED(LOG_DEBUG, __VA_ARGS__) +namespace { class bitgraph_state : public driver_device { @@ -111,6 +112,13 @@ public: static constexpr feature_type imperfect_features() { return feature::KEYBOARD; } + void bitgrpha(machine_config &config); + void bitgrphb(machine_config &config); + +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + uint8_t pia_r(offs_t offset); void pia_w(offs_t offset, uint8_t data); uint8_t pia_pa_r(); @@ -135,19 +143,17 @@ public: uint32_t screen_update(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect); - uint8_t ppu_read(offs_t offset); + [[maybe_unused]] uint8_t ppu_read(offs_t offset); void ppu_write(offs_t offset, uint8_t data); - void ppu_i8243_w(offs_t offset, uint8_t data); + template void ppu_i8243_w(uint8_t data); void bg_motherboard(machine_config &config); - void bitgrpha(machine_config &config); - void bitgrphb(machine_config &config); + [[maybe_unused]] void bg_ppu(machine_config &config); + void bitgrapha_mem(address_map &map); void bitgraphb_mem(address_map &map); void ppu_io(address_map &map); -private: - virtual void machine_start() override; - virtual void machine_reset() override; + required_device m_maincpu; required_device m_ram; required_device m_acia0; @@ -419,12 +425,10 @@ void bitgraph_state::ppu_write(offs_t offset, uint8_t data) m_ppu[offset] = data; } -#ifdef UNUSED_FUNCTION void bitgraph_state::ppu_io(address_map &map) { // map(0x00, 0x00).r(FUNC(bitgraph_state::ppu_irq)); } -#endif /* p4 O: Centronics data 3..0 @@ -432,29 +436,29 @@ void bitgraph_state::ppu_io(address_map &map) p6 O: Centronics control p7 I: Centronics status */ -void bitgraph_state::ppu_i8243_w(offs_t offset, uint8_t data) +template void bitgraph_state::ppu_i8243_w(uint8_t data) { - LOG("PPU 8243 %d <- %02X\n", offset + 4, data); - switch (offset) + LOG("PPU 8243 %d <- %02X\n", Offset, data); + switch (Offset) { - case 0: + case 4: m_centronics->write_data0(BIT(data, 0)); m_centronics->write_data1(BIT(data, 1)); m_centronics->write_data2(BIT(data, 2)); m_centronics->write_data3(BIT(data, 3)); break; - case 1: + case 5: m_centronics->write_data4(BIT(data, 0)); m_centronics->write_data5(BIT(data, 1)); m_centronics->write_data6(BIT(data, 2)); m_centronics->write_data7(BIT(data, 3)); break; - case 2: + case 6: m_centronics->write_strobe(BIT(data, 0)); // 1: Paper instruction m_centronics->write_init(BIT(data, 2)); break; - case 3: + case 7: m_centronics->write_ack(BIT(data, 0)); m_centronics->write_busy(BIT(data, 1)); m_centronics->write_perror(BIT(data, 2)); @@ -547,7 +551,6 @@ void bitgraph_state::bg_motherboard(machine_config &config) m_psg->add_route(ALL_OUTPUTS, "mono", 1.00); } -#ifdef UNUSED_FUNCTION void bitgraph_state::bg_ppu(machine_config &config) { i8035_device &ppu(I8035(config, PPU_TAG, XTAL(6'900'000))); @@ -556,8 +559,14 @@ void bitgraph_state::bg_ppu(machine_config &config) ppu.prog_out_cb().set("i8243", FUNC(i8243_device::prog_w)); i8243_device &i8243(I8243(config, "i8243")); - i8243.read_handler().set_nop(); - i8243.write_handler().set(FUNC(bitgraph_state::ppu_i8243_w)); + i8243.p4_in_cb().set_constant(0); + i8243.p5_in_cb().set_constant(0); + i8243.p6_in_cb().set_constant(0); + i8243.p7_in_cb().set_constant(0); + i8243.p4_out_cb().set(FUNC(bitgraph_state::ppu_i8243_w<4>)); + i8243.p5_out_cb().set(FUNC(bitgraph_state::ppu_i8243_w<5>)); + i8243.p6_out_cb().set(FUNC(bitgraph_state::ppu_i8243_w<6>)); + i8243.p7_out_cb().set(FUNC(bitgraph_state::ppu_i8243_w<7>)); CENTRONICS(config, m_centronics, centronics_devices, "printer"); m_centronics->ack_handler().set("cent_status_in", FUNC(input_buffer_device::write_bit6)); @@ -570,7 +579,6 @@ void bitgraph_state::bg_ppu(machine_config &config) output_latch_device ¢_data_out(OUTPUT_LATCH(config, "cent_data_out")); m_centronics->set_output_latch(cent_data_out); } -#endif void bitgraph_state::bitgrpha(machine_config &config) { @@ -638,6 +646,8 @@ ROM_START( bitgrphb ) ROM_LOAD( "bg_mouse_u9.bin", 0x0000, 0x0800, CRC(fd827ff5) SHA1(6d4a8e9b18c7610c5cfde40464826d144d387601)) ROM_END +} // anonymous namespace + /* Driver */ // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 1981, bitgrpha, 0, 0, bitgrpha, bitgraph, bitgraph_state, empty_init, "BBN", "BitGraph rev A", ROT90 ) diff --git a/src/mame/drivers/deco_ld.cpp b/src/mame/drivers/deco_ld.cpp index 5f9587bc537..df3e8fe79b1 100644 --- a/src/mame/drivers/deco_ld.cpp +++ b/src/mame/drivers/deco_ld.cpp @@ -117,6 +117,7 @@ Sound processor - 6502 #include "emupal.h" #include "speaker.h" +namespace { class deco_ld_state : public driver_device { @@ -143,6 +144,9 @@ public: DECLARE_READ_LINE_MEMBER(begas_vblank_r); DECLARE_INPUT_CHANGED_MEMBER(coin_inserted); +protected: + virtual void machine_start() override; + private: required_device m_maincpu; optional_device m_audiocpu; @@ -159,11 +163,12 @@ private: required_shared_ptr m_attr1; int m_nmimask; + uint8_t acia_status_hack_r(); uint8_t sound_status_r(); void decold_sound_cmd_w(uint8_t data); - virtual void machine_start() override; uint32_t screen_update_rblaster(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); + [[maybe_unused]] void nmimask_w(uint8_t data); INTERRUPT_GEN_MEMBER(sound_interrupt); void draw_sprites(bitmap_rgb32 &bitmap, const rectangle &cliprect, uint8_t *spriteram, uint16_t tile_bank ); void rblaster_map(address_map &map); @@ -294,12 +299,10 @@ void deco_ld_state::rblaster_map(address_map &map) /* sound arrangement is practically identical to Zero Target. */ -#ifdef UNUSED_FUNCTION void deco_ld_state::nmimask_w(uint8_t data) { m_nmimask = data & 0x80; } -#endif INTERRUPT_GEN_MEMBER(deco_ld_state::sound_interrupt) { @@ -654,6 +657,7 @@ ROM_START( cobraa ) ROM_LOAD( "vd0-t.f6", 0x0000, 0x00020, CRC(78449942) SHA1(584e25f7bffccd943c4db1edf05552f7989e08a4) ) ROM_END +} // anonymous namespace GAME( 1983, begas, 0, rblaster, begas, deco_ld_state, empty_init, ROT0, "Data East", "Bega's Battle (Revision 3)", MACHINE_NOT_WORKING ) diff --git a/src/mame/drivers/gladiatr.cpp b/src/mame/drivers/gladiatr.cpp index 02ad08679ec..952506d8f4a 100644 --- a/src/mame/drivers/gladiatr.cpp +++ b/src/mame/drivers/gladiatr.cpp @@ -863,7 +863,7 @@ static INPUT_PORTS_START( gladiatr ) PORT_BIT( 0x04, IP_ACTIVE_LOW, IPT_JOYSTICK_UP ) PORT_8WAY PORT_BIT( 0x08, IP_ACTIVE_LOW, IPT_JOYSTICK_DOWN ) PORT_8WAY PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_BUTTON1 ) PORT_CHANGED_MEMBER(DEVICE_SELF, gladiatr_state, p1_s1, 0) - PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, gladiatr_state, p2_s2, 0) + PORT_BIT( 0x20, IP_ACTIVE_LOW, IPT_BUTTON2 ) PORT_CHANGED_MEMBER(DEVICE_SELF, gladiatr_state, p1_s2, 0) PORT_BIT( 0x40, IP_ACTIVE_LOW, IPT_START1 ) PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START2 ) diff --git a/src/mame/drivers/pinball2k.cpp b/src/mame/drivers/pinball2k.cpp index f99f1dbd9c4..505645a1d2d 100644 --- a/src/mame/drivers/pinball2k.cpp +++ b/src/mame/drivers/pinball2k.cpp @@ -96,6 +96,7 @@ private: void memory_ctrl_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); uint32_t biu_ctrl_r(offs_t offset); void biu_ctrl_w(offs_t offset, uint32_t data, uint32_t mem_mask = ~0); + [[maybe_unused]] void bios_ram_w(offs_t offset, uint32_t data, uint32_t mem_mask); uint32_t parallel_port_r(); void parallel_port_w(uint32_t data); uint8_t io20_r(offs_t offset); @@ -398,11 +399,9 @@ void pinball2k_state::biu_ctrl_w(offs_t offset, uint32_t data, uint32_t mem_mask } } -#ifdef UNUSED_FUNCTION void pinball2k_state::bios_ram_w(offs_t offset, uint32_t data, uint32_t mem_mask) { } -#endif uint8_t pinball2k_state::io20_r(offs_t offset) { diff --git a/src/mame/drivers/tutor.cpp b/src/mame/drivers/tutor.cpp index 5261578d882..12d4dfda871 100644 --- a/src/mame/drivers/tutor.cpp +++ b/src/mame/drivers/tutor.cpp @@ -183,6 +183,8 @@ A=AMA, P=PRO, these keys don't exist, and so the games cannot be played. #include "speaker.h" +namespace { + class tutor_state : public driver_device { public: @@ -202,6 +204,10 @@ public: void pyuutajr(machine_config &config); void tutor(machine_config &config); +protected: + virtual void machine_start() override; + virtual void machine_reset() override; + private: required_device m_maincpu; required_device m_cart; @@ -212,7 +218,12 @@ private: required_memory_bank m_bank2; memory_region *m_cart_rom; + int m_tape_interrupt_enable; + emu_timer *m_tape_interrupt_timer; + int m_bank1_switching; + int m_centronics_busy; + uint8_t key_r(offs_t offset); uint8_t tutor_mapper_r(offs_t offset); void tutor_mapper_w(offs_t offset, uint8_t data); @@ -222,14 +233,11 @@ private: void tutor_printer_w(offs_t offset, uint8_t data); uint8_t tutor_highmem_r(offs_t offset); - int m_tape_interrupt_enable; - emu_timer *m_tape_interrupt_timer; - virtual void machine_start() override; - virtual void machine_reset() override; TIMER_CALLBACK_MEMBER(tape_interrupt_handler); - int m_centronics_busy; DECLARE_WRITE_LINE_MEMBER(write_centronics_busy); + [[maybe_unused]] void test_w(offs_t offset, uint8_t data); + void pyuutajr_mem(address_map &map); void tutor_io(address_map &map); void tutor_memmap(address_map &map); @@ -540,7 +548,6 @@ void tutor_state::tutor_printer_w(offs_t offset, uint8_t data) @>f000-@>f0fb: tms9995 internal RAM 2 */ -#ifdef UNUSED_FUNCTION void tutor_state::test_w(offs_t offset, uint8_t data) { switch (offset) @@ -550,7 +557,6 @@ void tutor_state::test_w(offs_t offset, uint8_t data) break; } } -#endif void tutor_state::tutor_memmap(address_map &map) { @@ -808,6 +814,8 @@ ROM_START(pyuutajr) ROM_LOAD( "ipl.rom", 0x0000, 0x4000, CRC(2ca37e62) SHA1(eebdc5c37d3b532edd5e5ca65eb785269ebd1ac0)) /* system ROM */ ROM_END +} // anonymous namespace + // YEAR NAME PARENT COMPAT MACHINE INPUT CLASS INIT COMPANY FULLNAME FLAGS COMP( 1983?, tutor, 0, 0, tutor, tutor, tutor_state, empty_init, "Tomy", "Tomy Tutor" , 0) COMP( 1982, pyuuta, tutor, 0, tutor, tutor, tutor_state, empty_init, "Tomy", "Tomy Pyuuta" , 0) diff --git a/src/mame/video/nbmj8900.cpp b/src/mame/video/nbmj8900.cpp index f6a1e8deff1..0cd4fe37c92 100644 --- a/src/mame/video/nbmj8900.cpp +++ b/src/mame/video/nbmj8900.cpp @@ -23,19 +23,18 @@ uint8_t nbmj8900_state::palette_type1_r(offs_t offset) void nbmj8900_state::palette_type1_w(offs_t offset, uint8_t data) { - int r, g, b; - m_palette_ptr[offset] = data; - if (!(offset & 1)) return; + if (offset & 1) + { + offset &= 0x1fe; - offset &= 0x1fe; + int const r = (m_palette_ptr[offset + 0] >> 0) & 0x0f; + int const g = (m_palette_ptr[offset + 1] >> 4) & 0x0f; + int const b = (m_palette_ptr[offset + 1] >> 0) & 0x0f; - r = ((m_palette_ptr[offset + 0] & 0x0f) >> 0); - g = ((m_palette_ptr[offset + 1] & 0xf0) >> 4); - b = ((m_palette_ptr[offset + 1] & 0x0f) >> 0); - - m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b)); + m_palette->set_pen_color((offset >> 1), pal4bit(r), pal4bit(g), pal4bit(b)); + } } #ifdef UNUSED_FUNCTION