Skip to content

Commit 2018255

Browse files
[Access Virus B] Control Panel LEDs (#14469)
* [Access Virus B] Control Panel LEDs * [Access Virus B] Fix glitch on CPanel LEDs * [Access Virus B] Simplify a bit the logic for controling CPanel LEDs
1 parent a8bebe8 commit 2018255

File tree

2 files changed

+77
-56
lines changed

2 files changed

+77
-56
lines changed

src/mame/access/acvirus.cpp

Lines changed: 24 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -70,6 +70,7 @@
7070
#include "cpu/mcs51/sab80c535.h"
7171
#include "machine/intelfsh.h"
7272
#include "video/hd44780.h"
73+
#include "video/pwm.h"
7374

7475
#include "emupal.h"
7576
#include "speaker.h"
@@ -91,8 +92,10 @@ class acvirus_state : public driver_device
9192
m_rombank(*this, "rombank"),
9293
m_row(*this, "ROW%u", 0U),
9394
m_knob(*this, "knob_%u", 0U),
95+
m_leds(*this, "leds"),
9496
m_scan(0),
95-
m_an_select(0)
97+
m_an_select(0),
98+
m_led_pattern(0)
9699
{ }
97100

98101
void virusa(machine_config &config) ATTR_COLD;
@@ -122,16 +125,19 @@ class acvirus_state : public driver_device
122125
u8 p4_r();
123126
void p1_w(u8 data);
124127
void p3_w(u8 data);
128+
void p4_w(u8 data);
125129
void p5_w(u8 data);
126130

127131
u8 p402_r();
128132

129133
void palette_init(palette_device &palette) ATTR_COLD;
130134

131135
required_ioport_array<32> m_knob;
136+
optional_device<pwm_display_device> m_leds;
132137

133138
u8 m_scan;
134139
u8 m_an_select;
140+
u8 m_led_pattern;
135141
};
136142

137143

@@ -142,6 +148,7 @@ void acvirus_state::machine_start()
142148

143149
save_item(NAME(m_scan));
144150
save_item(NAME(m_an_select));
151+
save_item(NAME(m_led_pattern));
145152
}
146153

147154
void acvirus_state::machine_reset()
@@ -171,10 +178,20 @@ u8 acvirus_state::p4_r()
171178
return m_row[m_scan & 3]->read();
172179
}
173180

181+
void acvirus_state::p4_w(u8 data)
182+
{
183+
m_leds->write_mx(data);
184+
185+
if (BIT(m_scan, 3))
186+
m_led_pattern = data;
187+
}
188+
174189
void acvirus_state::p5_w(u8 data)
175190
{
176-
m_scan = data & 7;
177191
m_rombank->set_entry((data >> 4) & 15);
192+
193+
m_scan = data & 15;
194+
m_leds->matrix(1 << m_scan, m_led_pattern);
178195
}
179196

180197
void acvirus_state::prog_map(address_map &map)
@@ -185,8 +202,9 @@ void acvirus_state::prog_map(address_map &map)
185202

186203
void acvirus_state::data_map(address_map &map)
187204
{
205+
map(0x0000, 0x7fff).ram();
188206
map(0x0400, 0x0407).rw(m_dsp, FUNC(dsp563xx_device::hi08_r), FUNC(dsp563xx_device::hi08_w));
189-
map(0x2000, 0x7fff).ram(); // TODO: RAM banks
207+
map(0x8000, 0xffff).ram(); // TODO: RAM banks
190208
}
191209

192210
void acvirus_state::dsp_p_map(address_map &map)
@@ -260,6 +278,7 @@ void acvirus_state::virusb(machine_config &config)
260278
m_maincpu->port_out_cb<1>().set(FUNC(acvirus_state::p1_w));
261279
m_maincpu->port_out_cb<3>().set(FUNC(acvirus_state::p3_w));
262280
m_maincpu->port_in_cb<4>().set(FUNC(acvirus_state::p4_r));
281+
m_maincpu->port_out_cb<4>().set(FUNC(acvirus_state::p4_w));
263282
m_maincpu->port_out_cb<5>().set(FUNC(acvirus_state::p5_w));
264283
m_maincpu->an0_func().set([this] { return m_knob[4*0 + m_an_select]->read(); });
265284
m_maincpu->an1_func().set([this] { return m_knob[4*1 + m_an_select]->read(); });
@@ -283,6 +302,8 @@ void acvirus_state::virusb(machine_config &config)
283302
HD44780(config, m_lcdc, 270000); // TODO: clock not measured, datasheet typical clock used
284303
m_lcdc->set_lcd_size(2, 16);
285304

305+
PWM_DISPLAY(config, m_leds).set_size(8, 8);
306+
286307
DSP56311(config, m_dsp, 108_MHz_XTAL);
287308
m_dsp->set_addrmap(dsp563xx_device::AS_P, &acvirus_state::dsp_p_map);
288309
m_dsp->set_addrmap(dsp563xx_device::AS_X, &acvirus_state::dsp_x_map);

src/mame/layout/virusb.lay

Lines changed: 53 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -600,11 +600,11 @@ license:CC0-1.0
600600
<element ref="0_text"><bounds x="137" y="462" width="7" height="12"/></element>
601601
<element ref="plus1_text"><bounds x="151" y="462" width="12" height="12"/></element>
602602
<element ref="plus2_text"><bounds x="169" y="462" width="12" height="12"/></element>
603-
<element ref="led" name="LED0"><bounds x="98.5" y="476" width="11" height="11"/></element>
604-
<element ref="led" name="LED1"><bounds x="116.5" y="476" width="11" height="11"/></element>
605-
<element ref="led" name="LED2"><bounds x="134.5" y="476" width="11" height="11"/></element>
606-
<element ref="led" name="LED3"><bounds x="152.5" y="476" width="11" height="11"/></element>
607-
<element ref="led" name="LED4"><bounds x="170.5" y="476" width="11" height="11"/></element>
603+
<element ref="led" name="2.0"><bounds x="98.5" y="476" width="11" height="11"/></element>
604+
<element ref="led" name="2.7"><bounds x="116.5" y="476" width="11" height="11"/></element>
605+
<element ref="led" name="3.0"><bounds x="134.5" y="476" width="11" height="11"/></element>
606+
<element ref="led" name="3.7"><bounds x="152.5" y="476" width="11" height="11"/></element>
607+
<element ref="led" name="2.3"><bounds x="170.5" y="476" width="11" height="11"/></element>
608608
<element ref="button" inputtag="ROW2" inputmask="0x01"><!-- TRANSPOSE [-] --><bounds x="95" y="495" width="45" height="45"/></element>
609609
<element ref="button" inputtag="ROW2" inputmask="0x02"><!-- TRANSPOSE [+] --><bounds x="140" y="495" width="45" height="45"/></element>
610610
<element ref="transpose_text"><bounds x="106" y="547" width="66" height="12"/></element>
@@ -621,25 +621,25 @@ license:CC0-1.0
621621
<group ref="knob"><bounds x="209" y="115" width="77" height="77"/></group>
622622
<element ref="rate_text"><bounds x="235" y="196" width="28" height="12"/></element>
623623

624-
<element ref="led" name="LED5"><bounds x="292" y="108" width="11" height="11"/></element>
624+
<element ref="led" name="7.a"><bounds x="292" y="108" width="11" height="11"/></element>
625625

626626
<element ref="button" inputtag="ROW2" inputmask="0x20"><!-- SHAPE --><bounds x="320" y="142" width="45" height="45"/></element>
627627
<element ref="shape_text"><bounds x="325" y="196" width="36" height="12"/></element>
628628

629-
<element ref="led" name="LED6"><bounds x="380" y="124" width="11" height="11"/></element>
630-
<element ref="led" name="LED7"><bounds x="380" y="141" width="11" height="11"/></element>
631-
<element ref="led" name="LED8"><bounds x="380" y="159" width="11" height="11"/></element>
632-
<element ref="led" name="LED9"><bounds x="380" y="177" width="11" height="11"/></element>
633-
<element ref="led" name="LED10"><bounds x="380" y="194" width="11" height="11"/></element>
629+
<element ref="led" name="5.5"><bounds x="380" y="124" width="11" height="11"/></element>
630+
<element ref="led" name="5.7"><bounds x="380" y="141" width="11" height="11"/></element>
631+
<element ref="led" name="4.7"><bounds x="380" y="159" width="11" height="11"/></element>
632+
<element ref="led" name="4.5"><bounds x="380" y="177" width="11" height="11"/></element>
633+
<element ref="led" name="4.0"><bounds x="380" y="194" width="11" height="11"/></element>
634634

635635
<element ref="sin_wave"><bounds x="397" y="122" width="21" height="13"/></element>
636636
<element ref="triangle_wave"><bounds x="398" y="141" width="20" height="12"/></element>
637637
<element ref="sawtooth_wave"><bounds x="399" y="158" width="18" height="13"/></element>
638638
<element ref="square_wave"><bounds x="399" y="176" width="19" height="13"/></element>
639639
<element ref="wave_text"><bounds x="394" y="194" width="29" height="12"/></element>
640640

641-
<element ref="led" name="LED11"><bounds x="247" y="230" width="11" height="11"/></element>
642-
<element ref="led" name="LED12"><bounds x="292" y="230" width="11" height="11"/></element>
641+
<element ref="led" name="0.0"><bounds x="247" y="230" width="11" height="11"/></element>
642+
<element ref="led" name="0.2"><bounds x="292" y="230" width="11" height="11"/></element>
643643

644644
<element ref="button" inputtag="ROW0" inputmask="0x01"><!-- EDIT --><bounds x="230" y="249" width="45" height="45"/></element>
645645
<element ref="button" inputtag="ROW0" inputmask="0x04"><!-- ENV MODE --><bounds x="275" y="249" width="45" height="45"/></element>
@@ -651,11 +651,11 @@ license:CC0-1.0
651651
<element ref="amount_text"><bounds x="320" y="300" width="44" height="12"/></element>
652652

653653

654-
<element ref="led" name="LED13"><bounds x="380" y="232" width="11" height="11"/></element>
655-
<element ref="led" name="LED14"><bounds x="380" y="249" width="11" height="11"/></element>
656-
<element ref="led" name="LED15"><bounds x="380" y="266" width="11" height="11"/></element>
657-
<element ref="led" name="LED16"><bounds x="380" y="283" width="11" height="11"/></element>
658-
<element ref="led" name="LED17"><bounds x="380" y="300" width="11" height="11"/></element>
654+
<element ref="led" name="2.2"><bounds x="380" y="232" width="11" height="11"/></element>
655+
<element ref="led" name="4.2"><bounds x="380" y="249" width="11" height="11"/></element>
656+
<element ref="led" name="4.1"><bounds x="380" y="266" width="11" height="11"/></element>
657+
<element ref="led" name="4.4"><bounds x="380" y="283" width="11" height="11"/></element>
658+
<element ref="led" name="5.6"><bounds x="380" y="300" width="11" height="11"/></element>
659659

660660
<element ref="osc_1_text"><bounds x="394" y="232" width="36" height="12"/></element>
661661
<element ref="osc_2_text"><bounds x="394" y="249" width="36" height="12"/></element>
@@ -670,25 +670,25 @@ license:CC0-1.0
670670
<group ref="knob"><bounds x="209" y="360" width="77" height="77"/></group>
671671
<element ref="rate_text"><bounds x="235" y="440" width="28" height="12"/></element>
672672

673-
<element ref="led" name="LED18"><bounds x="292" y="353" width="11" height="11"/></element>
673+
<element ref="led" name="7.a"><bounds x="292" y="353" width="11" height="11"/></element>
674674

675675
<element ref="button" inputtag="ROW2" inputmask="0x08"><!-- SHAPE --><bounds x="320" y="386" width="45" height="45"/></element>
676676
<element ref="shape_text"><bounds x="325" y="440" width="36" height="12"/></element>
677677

678-
<element ref="led" name="LED19"><bounds x="380" y="369" width="11" height="11"/></element>
679-
<element ref="led" name="LED20"><bounds x="380" y="386" width="11" height="11"/></element>
680-
<element ref="led" name="LED21"><bounds x="380" y="403" width="11" height="11"/></element>
681-
<element ref="led" name="LED22"><bounds x="380" y="420" width="11" height="11"/></element>
682-
<element ref="led" name="LED23"><bounds x="380" y="437" width="11" height="11"/></element>
678+
<element ref="led" name="4.6"><bounds x="380" y="369" width="11" height="11"/></element>
679+
<element ref="led" name="4.3"><bounds x="380" y="386" width="11" height="11"/></element>
680+
<element ref="led" name="3.1"><bounds x="380" y="403" width="11" height="11"/></element>
681+
<element ref="led" name="2.5"><bounds x="380" y="420" width="11" height="11"/></element>
682+
<element ref="led" name="3.5"><bounds x="380" y="437" width="11" height="11"/></element>
683683

684684
<element ref="sin_wave"><bounds x="398" y="368" width="21" height="13"/></element>
685685
<element ref="triangle_wave"><bounds x="398" y="387" width="20" height="12"/></element>
686686
<element ref="sawtooth_wave"><bounds x="399" y="404" width="18" height="13"/></element>
687687
<element ref="square_wave"><bounds x="399" y="422" width="19" height="13"/></element>
688688
<element ref="wave_text"><bounds x="398" y="438" width="29" height="12"/></element>
689689

690-
<element ref="led" name="LED24"><bounds x="247" y="476" width="11" height="11"/></element>
691-
<element ref="led" name="LED25"><bounds x="292" y="476" width="11" height="11"/></element>
690+
<element ref="led" name="0.3"><bounds x="247" y="476" width="11" height="11"/></element>
691+
<element ref="led" name="0.6"><bounds x="292" y="476" width="11" height="11"/></element>
692692

693693
<element ref="button" inputtag="ROW0" inputmask="0x08"><!-- EDIT --><bounds x="230" y="495" width="45" height="45"/></element>
694694
<element ref="button" inputtag="ROW0" inputmask="0x40"><!-- ENV MODE --><bounds x="275" y="495" width="45" height="45"/></element>
@@ -699,11 +699,11 @@ license:CC0-1.0
699699
<element ref="mode_text"><bounds x="283" y="557" width="28" height="12"/></element>
700700
<element ref="amount_text"><bounds x="320" y="547" width="44" height="12"/></element>
701701

702-
<element ref="led" name="LED26"><bounds x="380" y="478" width="11" height="11"/></element>
703-
<element ref="led" name="LED27"><bounds x="380" y="495" width="11" height="11"/></element>
704-
<element ref="led" name="LED28"><bounds x="380" y="512" width="11" height="11"/></element>
705-
<element ref="led" name="LED29"><bounds x="380" y="529" width="11" height="11"/></element>
706-
<element ref="led" name="LED30"><bounds x="380" y="547" width="11" height="11"/></element>
702+
<element ref="led" name="2.1"><bounds x="380" y="478" width="11" height="11"/></element>
703+
<element ref="led" name="3.6"><bounds x="380" y="495" width="11" height="11"/></element>
704+
<element ref="led" name="2.6"><bounds x="380" y="512" width="11" height="11"/></element>
705+
<element ref="led" name="3.4"><bounds x="380" y="529" width="11" height="11"/></element>
706+
<element ref="led" name="2.4"><bounds x="380" y="547" width="11" height="11"/></element>
707707

708708
<element ref="shape_1plus2_text"><bounds x="394" y="479" width="47" height="12"/></element>
709709
<element ref="filter_1_text"><bounds x="394" y="496" width="47" height="12"/></element>
@@ -752,8 +752,8 @@ license:CC0-1.0
752752
<group ref="wave_sel_pill_text"><bounds x="613" y="301" width="50" height="13"/></group>
753753
<element ref="slash_pw_text"><bounds x="666" y="302" width="22" height="12"/></element>
754754

755-
<element ref="led" name="LED31"><bounds x="733" y="230" width="11" height="11"/></element>
756-
<element ref="led" name="LED32"><bounds x="778" y="230" width="11" height="11"/></element>
755+
<element ref="led" name="1.0"><bounds x="733" y="230" width="11" height="11"/></element>
756+
<element ref="led" name="1.5"><bounds x="778" y="230" width="11" height="11"/></element>
757757

758758
<element ref="button" inputtag="ROW1" inputmask="0x01"><!-- EDIT --><bounds x="716" y="249" width="45" height="45"/></element>
759759
<element ref="button" inputtag="ROW1" inputmask="0x20"><!-- SYNC --><bounds x="761" y="249" width="45" height="45"/></element>
@@ -820,9 +820,9 @@ license:CC0-1.0
820820
<element ref="button" inputtag="ROW2" inputmask="0x40"><!-- STORE --><bounds x="472" y="495" width="45" height="45"/></element>
821821
<element ref="store_text"><bounds x="477" y="547" width="35" height="12"/></element>
822822

823-
<element ref="led" name="LED33"><bounds x="559" y="476" width="11" height="11"/></element>
824-
<element ref="led" name="LED34"><bounds x="604" y="476" width="11" height="11"/></element>
825-
<element ref="led" name="LED35"><bounds x="649" y="476" width="11" height="11"/></element>
823+
<element ref="led" name="0.7"><bounds x="559" y="476" width="11" height="11"/></element>
824+
<element ref="led" name="0.4"><bounds x="604" y="476" width="11" height="11"/></element>
825+
<element ref="led" name="0.5"><bounds x="649" y="476" width="11" height="11"/></element>
826826

827827
<element ref="button" inputtag="ROW0" inputmask="0x80"><!-- EFFECTS --><bounds x="542" y="495" width="45" height="45"/></element>
828828
<element ref="button" inputtag="ROW0" inputmask="0x10"><!-- DEMO: CTRL --><bounds x="587" y="495" width="45" height="45"/></element>
@@ -835,8 +835,8 @@ license:CC0-1.0
835835
<element ref="gray_line"><bounds x="596" y="561" width="23" height="1"/></element>
836836
<element ref="gray_line"><bounds x="645" y="561" width="23" height="1"/></element>
837837

838-
<element ref="led" name="LED36"><bounds x="715" y="476" width="11" height="11"/></element>
839-
<element ref="led" name="LED37"><bounds x="760" y="476" width="11" height="11"/></element>
838+
<element ref="led" name="0.1"><bounds x="715" y="476" width="11" height="11"/></element>
839+
<element ref="led" name="1.3"><bounds x="760" y="476" width="11" height="11"/></element>
840840

841841
<element ref="button" inputtag="ROW0" inputmask="0x02"><!-- MULTI --><bounds x="698" y="495" width="45" height="45"/></element>
842842
<element ref="button" inputtag="ROW1" inputmask="0x08"><!-- SINGLE --><bounds x="743" y="495" width="45" height="45"/></element>
@@ -897,29 +897,29 @@ license:CC0-1.0
897897
<group ref="knob"><bounds x="1075" y="223" width="77" height="77"/></group>
898898
<element ref="cutoff_2_text"><bounds x="1084" y="300" width="59" height="12"/></element>
899899

900-
<element ref="led" name="LED38"><bounds x="1197" y="230" width="11" height="11"/></element>
900+
<element ref="led" name="1.1"><bounds x="1197" y="230" width="11" height="11"/></element>
901901

902902
<element ref="button" inputtag="ROW1" inputmask="0x02"><!-- EDIT --><bounds x="1180" y="249" width="45" height="45"/></element>
903903
<element ref="edit_text"><bounds x="1188" y="300" width="29" height="12"/></element>
904904

905905
<element ref="button" inputtag="ROW3" inputmask="0x10"><!-- FILT 1 --><bounds x="1225" y="249" width="45" height="45"/></element>
906906
<element ref="filt_1_text"><bounds x="1234" y="300" width="27" height="12"/></element>
907907

908-
<element ref="led" name="LED39"><bounds x="1284" y="230" width="11" height="11"/></element>
908+
<element ref="led" name="5.1"><bounds x="1284" y="230" width="11" height="11"/></element>
909909
<element ref="lp_text"><bounds x="1300" y="230" width="13" height="12"/></element>
910-
<element ref="led" name="LED40"><bounds x="1284" y="248" width="11" height="11"/></element>
910+
<element ref="led" name="5.0"><bounds x="1318" y="230" width="11" height="11"/></element>
911911

912-
<element ref="led" name="LED41"><bounds x="1284" y="266" width="11" height="11"/></element>
912+
<element ref="led" name="6.1"><bounds x="1284" y="248" width="11" height="11"/></element>
913913
<element ref="hp_text"><bounds x="1300" y="248" width="14" height="12"/></element>
914-
<element ref="led" name="LED42"><bounds x="1284" y="284" width="11" height="11"/></element>
914+
<element ref="led" name="3.2"><bounds x="1318" y="248" width="11" height="11"/></element>
915915

916-
<element ref="led" name="LED43"><bounds x="1318" y="230" width="11" height="11"/></element>
916+
<element ref="led" name="3.3"><bounds x="1284" y="266" width="11" height="11"/></element>
917917
<element ref="bp_text"><bounds x="1300" y="266" width="13" height="12"/></element>
918-
<element ref="led" name="LED44"><bounds x="1318" y="248" width="11" height="11"/></element>
918+
<element ref="led" name="5.3"><bounds x="1318" y="266" width="11" height="11"/></element>
919919

920-
<element ref="led" name="LED45"><bounds x="1318" y="266" width="11" height="11"/></element>
920+
<element ref="led" name="6.3"><bounds x="1284" y="284" width="11" height="11"/></element>
921921
<element ref="bs_text"><bounds x="1300" y="284" width="13" height="12"/></element>
922-
<element ref="led" name="LED46"><bounds x="1318" y="284" width="11" height="11"/></element>
922+
<element ref="led" name="6.0"><bounds x="1318" y="284" width="11" height="11"/></element>
923923

924924
<element ref="button" inputtag="ROW3" inputmask="0x20"><!-- FILT 2 --><bounds x="1345" y="249" width="45" height="45"/></element>
925925
<element ref="filt_2_text"><bounds x="1352" y="300" width="32" height="12"/></element>
@@ -932,20 +932,20 @@ license:CC0-1.0
932932
<element ref="filter_routing_text"><bounds x="1397" y="300" width="83" height="12"/></element>
933933

934934

935-
<element ref="led" name="LED47"><bounds x="1446" y="230" width="11" height="11"/></element>
935+
<element ref="led" name="5.2"><bounds x="1446" y="230" width="11" height="11"/></element>
936936
<element ref="ser_4_text"><bounds x="1456" y="230" width="36" height="12"/></element>
937937

938-
<element ref="led" name="LED48"><bounds x="1446" y="248" width="11" height="11"/></element>
938+
<element ref="led" name="6.2"><bounds x="1446" y="248" width="11" height="11"/></element>
939939
<element ref="ser_6_text"><bounds x="1456" y="247" width="36" height="12"/></element>
940940

941-
<element ref="led" name="LED49"><bounds x="1446" y="266" width="11" height="11"/></element>
941+
<element ref="led" name="5.4"><bounds x="1446" y="266" width="11" height="11"/></element>
942942
<element ref="par_4_text"><bounds x="1456" y="265" width="36" height="12"/></element>
943943

944-
<element ref="led" name="LED50"><bounds x="1446" y="284" width="11" height="11"/></element>
944+
<element ref="led" name="6.4"><bounds x="1446" y="284" width="11" height="11"/></element>
945945
<element ref="split_text"><bounds x="1457" y="283" width="32" height="12"/></element>
946946

947-
<element ref="led" name="LED51"><bounds x="1520" y="230" width="11" height="11"/></element>
948-
<element ref="led" name="LED52"><bounds x="1565" y="230" width="11" height="11"/></element>
947+
<element ref="led" name="1.4"><bounds x="1520" y="230" width="11" height="11"/></element>
948+
<element ref="led" name="1.2"><bounds x="1565" y="230" width="11" height="11"/></element>
949949

950950
<element ref="button" inputtag="ROW1" inputmask="0x10"><!-- SELECT (Filt1) --><bounds x="1503" y="249" width="45" height="45"/></element>
951951
<element ref="button" inputtag="ROW1" inputmask="0x04"><!-- SELECT (Filt2) --><bounds x="1548" y="249" width="45" height="45"/></element>

0 commit comments

Comments
 (0)