@@ -87,9 +87,11 @@ class acvirus_state : public driver_device
8787 acvirus_state (const machine_config &mconfig, device_type type, const char *tag) :
8888 driver_device (mconfig, type, tag),
8989 m_maincpu (*this , " maincpu" ),
90+ m_banked_ram (*this , " banked_ram" , 4 * 0x8000 , ENDIANNESS_LITTLE),
9091 m_lcdc (*this , " lcdc" ),
9192 m_dsp (*this , " dsp" ),
9293 m_rombank (*this , " rombank" ),
94+ m_rambank (*this , " rambank" ),
9395 m_row (*this , " ROW%u" , 0U ),
9496 m_knob (*this , " knob_%u" , 0U ),
9597 m_leds (*this , " leds" ),
@@ -110,9 +112,11 @@ class acvirus_state : public driver_device
110112
111113private:
112114 required_device<sab80c535_device> m_maincpu;
115+ memory_share_creator<u8 > m_banked_ram;
113116 required_device<hd44780_device> m_lcdc;
114117 required_device<dsp563xx_device> m_dsp;
115118 required_memory_bank m_rombank;
119+ required_memory_bank m_rambank;
116120 required_ioport_array<4 > m_row;
117121
118122 void prog_map (address_map &map) ATTR_COLD;
@@ -146,6 +150,9 @@ void acvirus_state::machine_start()
146150 m_rombank->configure_entries (0 , 16 , memregion (" maincpu" )->base (), 0x8000 );
147151 m_rombank->set_entry (3 );
148152
153+ m_rambank->configure_entries (0 , 4 , m_banked_ram, 0x8000 );
154+ m_rambank->set_entry (0 );
155+
149156 save_item (NAME (m_scan));
150157 save_item (NAME (m_an_select));
151158 save_item (NAME (m_led_pattern));
@@ -190,6 +197,9 @@ void acvirus_state::p5_w(u8 data)
190197{
191198 m_rombank->set_entry ((data >> 4 ) & 15 );
192199
200+ if (BIT (data, 3 ))
201+ m_rambank->set_entry ((data >> 4 ) & 3 );
202+
193203 m_scan = data & 15 ;
194204 m_leds->matrix (1 << m_scan, m_led_pattern);
195205}
@@ -204,7 +214,7 @@ void acvirus_state::data_map(address_map &map)
204214{
205215 map (0x0000 , 0x7fff ).ram ();
206216 map (0x0400 , 0x0407 ).rw (m_dsp, FUNC (dsp563xx_device::hi08_r), FUNC (dsp563xx_device::hi08_w));
207- map (0x8000 , 0xffff ).ram (); // TODO: RAM banks
217+ map (0x8000 , 0xffff ).bankrw (m_rambank);
208218}
209219
210220void acvirus_state::dsp_p_map (address_map &map)
@@ -377,10 +387,10 @@ INPUT_PORTS_START( virusa_knobs )
377387 PORT_ADJUSTER (64 , " Osc 2: Wave/PW" ) PORT_MINMAX(0 , 127 )
378388
379389 PORT_START (" knob_9" )
380- PORT_ADJUSTER (64 , " Osc 2 Semitone " ) PORT_MINMAX(0 , 127 )
390+ PORT_ADJUSTER (64 , " Osc 2 Detune " ) PORT_MINMAX(0 , 127 )
381391
382392 PORT_START (" knob_10" )
383- PORT_ADJUSTER (64 , " Osc 2 Detune " ) PORT_MINMAX(0 , 127 )
393+ PORT_ADJUSTER (64 , " Osc 2 Semitone " ) PORT_MINMAX(0 , 127 )
384394
385395 PORT_START (" knob_11" )
386396 PORT_ADJUSTER (64 , " Osc 2 FM Amount" ) PORT_MINMAX(0 , 127 )
0 commit comments