diff options
| author | 2026-03-08 13:29:46 +0100 | |
|---|---|---|
| committer | 2026-03-08 13:29:59 +0100 | |
| commit | 0a88465813915b7e617d98020ad1ef5d73d4d54c (patch) | |
| tree | 514c9533e1b2dce43a59bcd792ea991be1338c49 | |
| parent | dc9cda9954529029d308087e9df7d3168d015373 (diff) | |
vlm5030: fix pin rising edge detect if state high val is not 1, add _r/_w to handlers
| -rw-r--r-- | src/devices/bus/msx/cart/konami.cpp | 8 | ||||
| -rw-r--r-- | src/devices/sound/vlm5030.cpp | 122 | ||||
| -rw-r--r-- | src/devices/sound/vlm5030.h | 12 | ||||
| -rw-r--r-- | src/mame/konami/ddribble.cpp | 9 | ||||
| -rw-r--r-- | src/mame/konami/jailbrek.cpp | 10 | ||||
| -rw-r--r-- | src/mame/konami/nemesis.cpp | 12 | ||||
| -rw-r--r-- | src/mame/konami/rockrage.cpp | 6 | ||||
| -rw-r--r-- | src/mame/konami/trackfld.cpp | 19 | ||||
| -rw-r--r-- | src/mame/konami/trackfld_a.cpp | 36 | ||||
| -rw-r--r-- | src/mame/konami/trackfld_a.h | 3 | ||||
| -rw-r--r-- | src/mame/konami/yiear.cpp | 9 | ||||
| -rw-r--r-- | src/mame/nintendo/punchout.cpp | 10 |
12 files changed, 106 insertions, 150 deletions
diff --git a/src/devices/bus/msx/cart/konami.cpp b/src/devices/bus/msx/cart/konami.cpp index 6e0cb011326..41eee56630f 100644 --- a/src/devices/bus/msx/cart/konami.cpp +++ b/src/devices/bus/msx/cart/konami.cpp @@ -840,14 +840,14 @@ uint8_t msx_cart_keyboard_master_device::read_vlm(offs_t offset) void msx_cart_keyboard_master_device::io_20_w(uint8_t data) { - m_vlm5030->rst(BIT(data, 0) ? 1 : 0); - m_vlm5030->vcu(BIT(data, 2) ? 1 : 0); - m_vlm5030->st(BIT(data, 1) ? 1 : 0); + m_vlm5030->rst_w(BIT(data, 0)); + m_vlm5030->vcu_w(BIT(data, 2)); + m_vlm5030->st_w(BIT(data, 1)); } uint8_t msx_cart_keyboard_master_device::io_00_r() { - return m_vlm5030->bsy() ? 0x10 : 0x00; + return m_vlm5030->bsy_r() ? 0x10 : 0x00; } diff --git a/src/devices/sound/vlm5030.cpp b/src/devices/sound/vlm5030.cpp index 8f6e3715360..ff2e7e04601 100644 --- a/src/devices/sound/vlm5030.cpp +++ b/src/devices/sound/vlm5030.cpp @@ -264,7 +264,16 @@ void vlm5030_device::device_reset() void vlm5030_device::device_post_load() { - restore_state(); + int interp_effect = FR_SIZE - (m_interp_count%FR_SIZE); + /* restore parameter data */ + setup_parameter(m_parameter); + + /* restore current energy,pitch & filter */ + m_current_energy = m_old_energy + (m_target_energy - m_old_energy) * interp_effect / FR_SIZE; + if (m_old_pitch > 1) + m_current_pitch = m_old_pitch + (m_target_pitch - m_old_pitch) * interp_effect / FR_SIZE; + for (int i = 0; i <= 9; i++) + m_current_k[i] = m_old_k[i] + (m_target_k[i] - m_old_k[i]) * interp_effect / FR_SIZE; } void vlm5030_device::rom_bank_pre_change() @@ -272,14 +281,13 @@ void vlm5030_device::rom_bank_pre_change() m_channel->update(); } -int vlm5030_device::get_bits(int sbit,int bits) +int vlm5030_device::get_bits(int sbit, int bits) { - int offset = m_address + (sbit>>3); - int data; + const int offset = m_address + (sbit >> 3); - data = read_byte(offset) | (read_byte(offset+1)<<8); - data >>= (sbit&7); - data &= (0xff>>(8-bits)); + int data = read_byte(offset) | (read_byte(offset + 1) << 8); + data >>= (sbit & 7); + data &= (0xff >> (8 - bits)); return data; } @@ -326,16 +334,16 @@ int vlm5030_device::parse_frame() m_new_energy = m_coeff->energytable[get_bits(6,m_coeff->energy_bits)]; /* 10 K's */ - m_new_k[9] = m_coeff->ktable[9][get_bits(11,m_coeff->kbits[9])]; - m_new_k[8] = m_coeff->ktable[8][get_bits(14,m_coeff->kbits[8])]; - m_new_k[7] = m_coeff->ktable[7][get_bits(17,m_coeff->kbits[7])]; - m_new_k[6] = m_coeff->ktable[6][get_bits(20,m_coeff->kbits[6])]; - m_new_k[5] = m_coeff->ktable[5][get_bits(23,m_coeff->kbits[5])]; - m_new_k[4] = m_coeff->ktable[4][get_bits(26,m_coeff->kbits[4])]; - m_new_k[3] = m_coeff->ktable[3][get_bits(29,m_coeff->kbits[3])]; - m_new_k[2] = m_coeff->ktable[2][get_bits(33,m_coeff->kbits[2])]; - m_new_k[1] = m_coeff->ktable[1][get_bits(37,m_coeff->kbits[1])]; - m_new_k[0] = m_coeff->ktable[0][get_bits(42,m_coeff->kbits[0])]; + m_new_k[9] = m_coeff->ktable[9][get_bits(11, m_coeff->kbits[9])]; + m_new_k[8] = m_coeff->ktable[8][get_bits(14, m_coeff->kbits[8])]; + m_new_k[7] = m_coeff->ktable[7][get_bits(17, m_coeff->kbits[7])]; + m_new_k[6] = m_coeff->ktable[6][get_bits(20, m_coeff->kbits[6])]; + m_new_k[5] = m_coeff->ktable[5][get_bits(23, m_coeff->kbits[5])]; + m_new_k[4] = m_coeff->ktable[4][get_bits(26, m_coeff->kbits[4])]; + m_new_k[3] = m_coeff->ktable[3][get_bits(29, m_coeff->kbits[3])]; + m_new_k[2] = m_coeff->ktable[2][get_bits(33, m_coeff->kbits[2])]; + m_new_k[1] = m_coeff->ktable[1][get_bits(37, m_coeff->kbits[1])]; + m_new_k[0] = m_coeff->ktable[0][get_bits(42, m_coeff->kbits[0])]; m_address += 6; logerror("VLM5030 %04X voice \n", m_address); @@ -343,12 +351,6 @@ int vlm5030_device::parse_frame() return FR_SIZE; } -/* realtime update */ -void vlm5030_device::update() -{ - m_channel->update(); -} - /* setup parameteroption when RST=H */ void vlm5030_device::setup_parameter(uint8_t param) { @@ -364,7 +366,7 @@ void vlm5030_device::setup_parameter(uint8_t param) m_interp_step = 1; /* 2400bps : 4 interpolator */ /* bit 3,4,5 : speed (frame size) */ - m_frame_size = vlm5030_speed_table[(param>>3) & 7]; + m_frame_size = vlm5030_speed_table[(param >> 3) & 7]; /* bit 6,7 : low / high pitch */ if (param & 0x80) /* bit7=1 , high pitch */ @@ -376,24 +378,10 @@ void vlm5030_device::setup_parameter(uint8_t param) } -void vlm5030_device::restore_state() -{ - int interp_effect = FR_SIZE - (m_interp_count%FR_SIZE); - /* restore parameter data */ - setup_parameter(m_parameter); - - /* restore current energy,pitch & filter */ - m_current_energy = m_old_energy + (m_target_energy - m_old_energy) * interp_effect / FR_SIZE; - if (m_old_pitch > 1) - m_current_pitch = m_old_pitch + (m_target_pitch - m_old_pitch) * interp_effect / FR_SIZE; - for (int i = 0; i <= 9 ; i++) - m_current_k[i] = m_old_k[i] + (m_target_k[i] - m_old_k[i]) * interp_effect / FR_SIZE; -} - /* get BSY pin level */ -int vlm5030_device::bsy() +int vlm5030_device::bsy_r() { - update(); + m_channel->update(); return m_pin_BSY; } @@ -404,23 +392,24 @@ void vlm5030_device::data_w(uint8_t data) } /* set RST pin level : reset / set table address A8-A15 */ -void vlm5030_device::rst(int state) +void vlm5030_device::rst_w(int state) { + state = state ? 1 : 0; + if (m_pin_RST != state) { /* pin level is changed */ - update(); + m_channel->update(); + m_pin_RST = state; if (!state) { /* H -> L : latch parameters */ - m_pin_RST = 0; setup_parameter(m_latch_data); } else { /* L -> H : reset chip */ - m_pin_RST = 1; if (m_pin_BSY) { device_reset(); @@ -430,29 +419,30 @@ void vlm5030_device::rst(int state) } /* set VCU pin level : ?? unknown */ -void vlm5030_device::vcu(int state) +void vlm5030_device::vcu_w(int state) { /* direct mode / indirect mode */ - m_pin_VCU = state; + m_pin_VCU = state ? 1 : 0; } /* set ST pin level : set table address A0-A7 / start speech */ -void vlm5030_device::st(int state) +void vlm5030_device::st_w(int state) { + state = state ? 1 : 0; + if (m_pin_ST != state) { /* pin level is changed */ - update(); + m_channel->update(); + m_pin_ST = state; if (!state) { /* H -> L */ - m_pin_ST = 0; - if (m_pin_VCU) { /* direct access mode & address High */ - m_vcu_addr_h = ((int)m_latch_data<<8) + 0x01; + m_vcu_addr_h = ((int)m_latch_data << 8) + 0x01; } else { @@ -461,14 +451,14 @@ void vlm5030_device::st(int state) if (m_vcu_addr_h) { /* direct access mode */ - m_address = (m_vcu_addr_h&0xff00) + m_latch_data; + m_address = (m_vcu_addr_h & 0xff00) + m_latch_data; m_vcu_addr_h = 0; } else { /* indirect access mode */ - int table = (m_latch_data&0xfe) + (((int)m_latch_data&1)<<8); - m_address = (read_byte(table)<<8) | read_byte(table+1); + int table = (m_latch_data & 0xfe) + (((int)m_latch_data & 1) << 8); + m_address = (read_byte(table) << 8) | read_byte(table + 1); /* show unsupported parameter message */ /* if (m_interp_step != 1) popmessage("No %d %dBPS parameter",table/2,m_interp_step*2400); */ } @@ -484,7 +474,6 @@ void vlm5030_device::st(int state) else { /* L -> H */ - m_pin_ST = 1; /* setup speech , BSY on after 30ms? */ m_phase = PH_SETUP; m_sample_count = 1; /* wait time for busy on */ @@ -500,16 +489,13 @@ void vlm5030_device::st(int state) void vlm5030_device::sound_stream_update(sound_stream &stream) { - int interp_effect; - int i; - int u[11]; - /* running */ - int sampindex = 0; if (m_phase == PH_RUN || m_phase == PH_STOP) { + int u[11]; + /* playing speech */ - for ( ; sampindex < stream.samples(); sampindex++) + for (int sampindex = 0; sampindex < stream.samples(); sampindex++) { int current_val; @@ -540,7 +526,7 @@ void vlm5030_device::sound_stream_update(sound_stream &stream) /* Set old target as new start of frame */ m_current_energy = m_old_energy; m_current_pitch = m_old_pitch; - for (i = 0; i <= 9; i++) + for (int i = 0; i <= 9; i++) m_current_k[i] = m_old_k[i]; /* is this a zero energy frame? */ @@ -549,7 +535,7 @@ void vlm5030_device::sound_stream_update(sound_stream &stream) /*osd_printf_debug("processing frame: zero energy\n");*/ m_target_energy = 0; m_target_pitch = m_current_pitch; - for (i = 0; i <= 9; i++) + for (int i = 0; i <= 9; i++) m_target_k[i] = m_current_k[i]; } else @@ -559,7 +545,7 @@ void vlm5030_device::sound_stream_update(sound_stream &stream) /*osd_printf_debug("proc: %d %d\n",last_fbuf_head,fbuf_head);*/ m_target_energy = m_new_energy; m_target_pitch = m_new_pitch; - for (i = 0; i <= 9; i++) + for (int i = 0; i <= 9; i++) m_target_k[i] = m_new_k[i]; } } @@ -568,11 +554,11 @@ void vlm5030_device::sound_stream_update(sound_stream &stream) /* Update values based on step values 25% , 50% , 75% , 100% */ m_interp_count -= m_interp_step; /* 3,2,1,0 -> 1,2,3,4 */ - interp_effect = FR_SIZE - (m_interp_count%FR_SIZE); + int interp_effect = FR_SIZE - (m_interp_count % FR_SIZE); m_current_energy = m_old_energy + (m_target_energy - m_old_energy) * interp_effect / FR_SIZE; if (m_old_pitch > 1) m_current_pitch = m_old_pitch + (m_target_pitch - m_old_pitch) * interp_effect / FR_SIZE; - for (i = 0; i <= 9 ; i++) + for (int i = 0; i <= 9; i++) m_current_k[i] = m_old_k[i] + (m_target_k[i] - m_old_k[i]) * interp_effect / FR_SIZE; } @@ -595,9 +581,9 @@ void vlm5030_device::sound_stream_update(sound_stream &stream) /* Lattice filter here */ u[10] = current_val; - for (i = 9; i >= 0; i--) + for (int i = 9; i >= 0; i--) u[i] = u[i+1] - ((-m_current_k[i] * m_x[i]) / 512); - for (i = 9; i >= 1; i--) + for (int i = 9; i >= 1; i--) m_x[i] = m_x[i-1] + ((-m_current_k[i-1] * u[i-1]) / 512); m_x[0] = u[0]; diff --git a/src/devices/sound/vlm5030.h b/src/devices/sound/vlm5030.h index f9d05749882..9ccee24bfd7 100644 --- a/src/devices/sound/vlm5030.h +++ b/src/devices/sound/vlm5030.h @@ -13,19 +13,19 @@ public: vlm5030_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock); /* get BSY pin level */ - int bsy(); + int bsy_r(); /* latch contoll data */ void data_w(uint8_t data); /* set RST pin level : reset / set table address A8-A15 */ - void rst(int state); + void rst_w(int state); /* set VCU pin level : ?? unknown */ - void vcu(int state); + void vcu_w(int state); /* set ST pin level : set table address A0-A7 / start speech */ - void st(int state); + void st_w(int state); protected: // device-level overrides @@ -88,11 +88,9 @@ private: int32_t m_x[10]; - int get_bits(int sbit,int bits); + int get_bits(int sbit, int bits); int parse_frame(); - void update(); void setup_parameter(uint8_t param); - void restore_state(); }; DECLARE_DEVICE_TYPE(VLM5030, vlm5030_device) diff --git a/src/mame/konami/ddribble.cpp b/src/mame/konami/ddribble.cpp index 39bd1f5005f..9ef896ef31b 100644 --- a/src/mame/konami/ddribble.cpp +++ b/src/mame/konami/ddribble.cpp @@ -349,8 +349,7 @@ uint8_t ddribble_state::vlm5030_busy_r() return machine().rand(); // patch // FIXME: remove ? #if 0 - if (m_vlm->bsy()) return 1; - else return 0; + return m_vlm->bsy_r(); #endif } @@ -359,13 +358,13 @@ void ddribble_state::vlm5030_ctrl_w(uint8_t data) // b7 : vlm data bus OE // b6 : VLM5030-RST - m_vlm->rst(BIT(data, 6)); + m_vlm->rst_w(BIT(data, 6)); // b5 : VLM5030-ST - m_vlm->st(BIT(data, 5)); + m_vlm->st_w(BIT(data, 5)); // b4 : VLM5300-VCU - m_vlm->vcu(BIT(data, 4)); + m_vlm->vcu_w(BIT(data, 4)); // b3 : ROM bank select m_vlmbank->set_entry(BIT(data, 3)); diff --git a/src/mame/konami/jailbrek.cpp b/src/mame/konami/jailbrek.cpp index 35a1f7db216..1145c3e6d53 100644 --- a/src/mame/konami/jailbrek.cpp +++ b/src/mame/konami/jailbrek.cpp @@ -268,20 +268,20 @@ uint32_t jailbrek_state::screen_update(screen_device &screen, bitmap_ind16 &bitm void jailbrek_state::coin_w(uint8_t data) { - machine().bookkeeping().coin_counter_w(0, data & 0x01); - machine().bookkeeping().coin_counter_w(1, data & 0x02); + machine().bookkeeping().coin_counter_w(0, BIT(data, 0)); + machine().bookkeeping().coin_counter_w(1, BIT(data, 1)); } uint8_t jailbrek_state::speech_r() { - return (m_vlm->bsy() ? 1 : 0); + return m_vlm->bsy_r(); } void jailbrek_state::speech_w(uint8_t data) { // bit 0 is latch direction like in yiear - m_vlm->st((data >> 1) & 1); - m_vlm->rst((data >> 2) & 1); + m_vlm->st_w(BIT(data, 1)); + m_vlm->rst_w(BIT(data, 2)); } void jailbrek_state::prg_map(address_map &map) diff --git a/src/mame/konami/nemesis.cpp b/src/mame/konami/nemesis.cpp index 167a3707581..4c14bb729c4 100644 --- a/src/mame/konami/nemesis.cpp +++ b/src/mame/konami/nemesis.cpp @@ -386,22 +386,22 @@ void gx400_state::speech_w(offs_t offset, uint8_t data) m_vlm->data_w(data); // bit 5: ST, bit 6: RST - m_vlm->st(BIT(offset, 5)); - m_vlm->rst(BIT(offset, 6)); + m_vlm->st_w(BIT(offset, 5)); + m_vlm->rst_w(BIT(offset, 6)); m_speech_offset = offset; } void salamand_state::speech_start_w(uint8_t data) { - m_vlm->rst(BIT(data, 0)); - m_vlm->st(BIT(data, 1)); + m_vlm->rst_w(BIT(data, 0)); + m_vlm->st_w(BIT(data, 1)); // bit 2 is OE for VLM data } uint8_t salamand_state::speech_busy_r() { - return m_vlm->bsy(); + return m_vlm->bsy_r(); } uint8_t gx400_state::nemesis_portA_r() @@ -416,7 +416,7 @@ uint8_t gx400_state::nemesis_portA_r() res |= 0xd0; - if (m_vlm != nullptr && m_vlm->bsy()) + if (m_vlm != nullptr && m_vlm->bsy_r()) res |= 0x20; return res; diff --git a/src/mame/konami/rockrage.cpp b/src/mame/konami/rockrage.cpp index 58335b4460e..c1b0c83a313 100644 --- a/src/mame/konami/rockrage.cpp +++ b/src/mame/konami/rockrage.cpp @@ -219,14 +219,14 @@ void rockrage_state::bankswitch_w(uint8_t data) uint8_t rockrage_state::vlm5030_busy_r() { - return (m_vlm->bsy() ? 1 : 0); + return m_vlm->bsy_r(); } void rockrage_state::speech_w(uint8_t data) { // bit2 = data bus enable - m_vlm->rst((data >> 1) & 0x01); - m_vlm->st((data >> 0) & 0x01); + m_vlm->rst_w(BIT(data, 1)); + m_vlm->st_w(BIT(data, 0)); } void rockrage_state::main_map(address_map &map) diff --git a/src/mame/konami/trackfld.cpp b/src/mame/konami/trackfld.cpp index 8cc9eb51b69..f340fdbac9b 100644 --- a/src/mame/konami/trackfld.cpp +++ b/src/mame/konami/trackfld.cpp @@ -489,9 +489,8 @@ void trackfld_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre { uint8_t *spriteram = m_spriteram; uint8_t *spriteram_2 = m_spriteram2; - int offs; - for (offs = m_spriteram.bytes() - 2; offs >= 0; offs -= 2) + for (int offs = m_spriteram.bytes() - 2; offs >= 0; offs -= 2) { int attr = spriteram_2[offs]; int code = spriteram[offs + 1]; @@ -520,17 +519,14 @@ void trackfld_state::draw_sprites( bitmap_ind16 &bitmap, const rectangle &clipre // sy++; /* fix title screen & garbage at the bottom of the screen */ //} - - - m_gfxdecode->gfx(0)->transmask(bitmap,cliprect, + m_gfxdecode->gfx(0)->transmask(bitmap,cliprect, code + m_sprite_bank1 + m_sprite_bank2, color, flipx, flipy, sx, sy, m_palette->transpen_mask(*m_gfxdecode->gfx(0), color, 0)); /* redraw with wraparound */ - - m_gfxdecode->gfx(0)->transmask(bitmap,cliprect, + m_gfxdecode->gfx(0)->transmask(bitmap,cliprect, code + m_sprite_bank1 + m_sprite_bank2, color, flipx, flipy, sx - 256, sy, @@ -617,17 +613,14 @@ void trackfld_state::nmi_mask_w(int state) uint8_t trackfld_state::trackfld_speech_r() { - if (m_vlm->bsy()) - return 1; - else - return 0; + return m_vlm->bsy_r(); } void trackfld_state::trackfld_VLM5030_control_w(uint8_t data) { /* bit 0 is latch direction */ - m_vlm->st((data >> 1) & 1); - m_vlm->rst((data >> 2) & 1); + m_vlm->st_w(BIT(data, 1)); + m_vlm->rst_w(BIT(data, 2)); } diff --git a/src/mame/konami/trackfld_a.cpp b/src/mame/konami/trackfld_a.cpp index 62d0ba911df..fea1eea2f2f 100644 --- a/src/mame/konami/trackfld_a.cpp +++ b/src/mame/konami/trackfld_a.cpp @@ -6,15 +6,12 @@ constexpr unsigned TIMER_RATE = 4096 / 4; - - DEFINE_DEVICE_TYPE(TRACKFLD_AUDIO, trackfld_audio_device, "trackfld_audio", "Track And Field Audio") trackfld_audio_device::trackfld_audio_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock) : device_t(mconfig, TRACKFLD_AUDIO, tag, owner, clock) , m_audiocpu(*this, finder_base::DUMMY_TAG) , m_vlm(*this, finder_base::DUMMY_TAG) - , m_last_addr(0) , m_last_irq(0) { } @@ -25,7 +22,6 @@ trackfld_audio_device::trackfld_audio_device(const machine_config &mconfig, cons void trackfld_audio_device::device_start() { - save_item(NAME(m_last_addr)); save_item(NAME(m_last_irq)); } @@ -52,31 +48,25 @@ uint8_t trackfld_audio_device::trackfld_sh_timer_r() { uint32_t clock = m_audiocpu->total_cycles() / TIMER_RATE; - return clock & 0xF; + return clock & 0xf; } uint8_t trackfld_audio_device::trackfld_speech_r() { - return m_vlm->bsy() ? 0x10 : 0; + return m_vlm->bsy_r() ? 0x10 : 0; } void trackfld_audio_device::trackfld_sound_w(offs_t offset, uint8_t data) { - const uint8_t changes = offset ^ m_last_addr; - // A7 = data enable for VLM5030 (don't care) - // A8 = STA pin (1->0 data data , 0->1 start speech + // A8 = STA pin (1->0 data data, 0->1 start speech) // A9 = RST pin 1=reset // A8 VLM5030 ST pin - if (changes & 0x100) - m_vlm->st(offset & 0x100); + m_vlm->st_w(BIT(offset, 8)); // A9 VLM5030 RST pin - if (changes & 0x200) - m_vlm->rst(offset & 0x200); - - m_last_addr = offset; + m_vlm->rst_w(BIT(offset, 9)); } uint8_t trackfld_audio_device::hyperspt_sh_timer_r() @@ -84,31 +74,25 @@ uint8_t trackfld_audio_device::hyperspt_sh_timer_r() uint32_t clock = m_audiocpu->total_cycles() / TIMER_RATE; if (m_vlm != nullptr) - return (clock & 0x3) | (m_vlm->bsy() ? 0x04 : 0); + return (clock & 0x3) | (m_vlm->bsy_r() ? 0x04 : 0); else return (clock & 0x3); } void trackfld_audio_device::hyperspt_sound_w(offs_t offset, uint8_t data) { - const uint8_t changes = offset ^ m_last_addr; - // A3 = data enable for VLM5030 (don't care ) - // A4 = STA pin (1->0 data data , 0->1 start speech + // A4 = STA pin (1->0 data data, 0->1 start speech) // A5 = RST pin 1=reset // A6 = VLM5030 output disable (don't care ) // A7 = kONAMI DAC output disable (don't care ) // A8 = SN76489AN output disable (don't care ) // A4 VLM5030 ST pin - if (changes & 0x10) - m_vlm->st(offset & 0x10); + m_vlm->st_w(BIT(offset, 4)); // A5 VLM5030 RST pin - if( changes & 0x20 ) - m_vlm->rst(offset & 0x20); - - m_last_addr = offset; + m_vlm->rst_w(BIT(offset, 5)); } @@ -116,7 +100,7 @@ void trackfld_audio_device::hyperspt_sound_w(offs_t offset, uint8_t data) void trackfld_audio_device::sh_irqtrigger_w(int state) { // setting bit 0 low then high triggers IRQ on the sound CPU - if (m_last_irq == 0 && state) + if (!m_last_irq && state) m_audiocpu->set_input_line_and_vector(0, HOLD_LINE, 0xff); // Z80 m_last_irq = state; diff --git a/src/mame/konami/trackfld_a.h b/src/mame/konami/trackfld_a.h index a7dd896011b..808244b4059 100644 --- a/src/mame/konami/trackfld_a.h +++ b/src/mame/konami/trackfld_a.h @@ -38,8 +38,7 @@ private: optional_device<vlm5030_device> m_vlm; // internal state - int m_last_addr; - int m_last_irq; + uint8_t m_last_irq; }; DECLARE_DEVICE_TYPE(TRACKFLD_AUDIO, trackfld_audio_device) diff --git a/src/mame/konami/yiear.cpp b/src/mame/konami/yiear.cpp index 5643f468a7c..23f28be0ae6 100644 --- a/src/mame/konami/yiear.cpp +++ b/src/mame/konami/yiear.cpp @@ -315,17 +315,14 @@ uint32_t yiear_state::screen_update(screen_device &screen, bitmap_ind16 &bitmap, uint8_t yiear_state::speech_r() { - if (m_vlm->bsy()) - return 1; - else - return 0; + return m_vlm->bsy_r(); } void yiear_state::vlm5030_control_w(uint8_t data) { // bit 0 is latch direction - m_vlm->st((data >> 1) & 1); - m_vlm->rst((data >> 2) & 1); + m_vlm->st_w(BIT(data, 1)); + m_vlm->rst_w(BIT(data, 2)); } void yiear_state::vblank_irq(int state) diff --git a/src/mame/nintendo/punchout.cpp b/src/mame/nintendo/punchout.cpp index f8649010ebc..1b4db1cc715 100644 --- a/src/mame/nintendo/punchout.cpp +++ b/src/mame/nintendo/punchout.cpp @@ -329,7 +329,7 @@ static INPUT_PORTS_START( punchout ) PORT_DIPSETTING( 0x0a, DEF_STR( 1C_5C ) ) PORT_DIPSETTING( 0x07, DEF_STR( 1C_6C ) ) PORT_DIPSETTING( 0x0f, DEF_STR( Free_Play ) ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("vlm", FUNC(vlm5030_device::bsy)) /* VLM5030 busy signal */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("vlm", FUNC(vlm5030_device::bsy_r)) /* VLM5030 busy signal */ PORT_BIT( 0x20, IP_ACTIVE_HIGH, IPT_UNUSED ) PORT_DIPUNUSED_DIPLOC( 0x40, 0x00, "R18:!1" ) /* Not documented, R18 resistor */ PORT_DIPNAME( 0x80, 0x00, "Copyright" ) PORT_DIPLOCATION("R19:!1") /* Not documented, R19 resistor */ @@ -562,7 +562,7 @@ bit 3210 5432 L R C PORT_DIPSETTING( 0x0d, "1101" ) PORT_DIPSETTING( 0x0e, "1110" ) PORT_DIPSETTING( 0x0f, "1111" ) - PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("vlm", FUNC(vlm5030_device::bsy)) /* VLM5030 busy signal */ + PORT_BIT( 0x10, IP_ACTIVE_LOW, IPT_CUSTOM ) PORT_READ_LINE_DEVICE_MEMBER("vlm", FUNC(vlm5030_device::bsy_r)) /* VLM5030 busy signal */ PORT_DIPNAME( 0x40, 0x00, "Coin Slots" ) PORT_DIPLOCATION("R18:!1") /* R18 resistor */ PORT_DIPSETTING( 0x40, "1" ) PORT_DIPSETTING( 0x00, "2" ) @@ -623,9 +623,9 @@ void punchout_state::punchout(machine_config &config) mainlatch.q_out_cb<1>().set_nop(); // watchdog reset, seldom used because 08 clears the watchdog as well mainlatch.q_out_cb<2>().set_nop(); // ? mainlatch.q_out_cb<3>().set_inputline("audiocpu", INPUT_LINE_RESET); - mainlatch.q_out_cb<4>().set("vlm", FUNC(vlm5030_device::rst)); - mainlatch.q_out_cb<5>().set("vlm", FUNC(vlm5030_device::st)); - mainlatch.q_out_cb<6>().set("vlm", FUNC(vlm5030_device::vcu)); + mainlatch.q_out_cb<4>().set("vlm", FUNC(vlm5030_device::rst_w)); + mainlatch.q_out_cb<5>().set("vlm", FUNC(vlm5030_device::st_w)); + mainlatch.q_out_cb<6>().set("vlm", FUNC(vlm5030_device::vcu_w)); mainlatch.q_out_cb<7>().set_nop(); // enable NVRAM? /* video hardware */ |
