diff options
Diffstat (limited to 'src/mess/machine/advision.c')
-rw-r--r-- | src/mess/machine/advision.c | 193 |
1 files changed, 0 insertions, 193 deletions
diff --git a/src/mess/machine/advision.c b/src/mess/machine/advision.c deleted file mode 100644 index 4f1f19b105e..00000000000 --- a/src/mess/machine/advision.c +++ /dev/null @@ -1,193 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Nathan Woods -/*************************************************************************** - - advision.c - - Machine file to handle emulation of the AdventureVision. - -***************************************************************************/ - -#include "emu.h" -#include "includes/advision.h" -#include "cpu/mcs48/mcs48.h" -#include "sound/dac.h" - -/* - 8048 Ports: - - P1 Bit 0..1 - RAM bank select - Bit 3..7 - Keypad input - - P2 Bit 0..3 - A8-A11 - Bit 4..7 - Sound control/Video write address - - T1 Mirror sync pulse -*/ - -/* Machine Initialization */ - -void advision_state::machine_start() -{ - std::string region_tag; - m_cart_rom = memregion(region_tag.assign(m_cart->tag()).append(GENERIC_ROM_REGION_TAG).c_str()); - - /* configure EA banking */ - m_bank1->configure_entry(0, memregion(I8048_TAG)->base()); - m_bank1->configure_entry(1, m_cart_rom->base()); - m_maincpu->space(AS_PROGRAM).install_readwrite_bank(0x0000, 0x03ff, "bank1"); - m_bank1->set_entry(0); - - /* allocate external RAM */ - m_ext_ram.resize(0x400); - save_item(NAME(m_ext_ram)); - - save_item(NAME(m_ea_bank)); - save_item(NAME(m_rambank)); - save_item(NAME(m_frame_count)); - save_item(NAME(m_frame_start)); - save_item(NAME(m_video_enable)); - save_item(NAME(m_video_bank)); - save_item(NAME(m_led_latch)); - save_item(NAME(m_sound_cmd)); - save_item(NAME(m_sound_d)); - save_item(NAME(m_sound_g)); -} - -void advision_state::machine_reset() -{ - m_ea_bank = 0; - m_rambank = 0x300; - m_frame_start = 0; - m_video_enable = 0; - m_sound_cmd = 0; - - /* enable internal ROM */ - m_maincpu->set_input_line(MCS48_INPUT_EA, CLEAR_LINE); - m_bank1->set_entry(m_ea_bank); - - /* reset sound CPU */ - m_soundcpu->set_input_line(INPUT_LINE_RESET, ASSERT_LINE); -} - -/* Bank Switching */ - -WRITE8_MEMBER( advision_state::bankswitch_w ) -{ - m_ea_bank = BIT(data, 2); - m_rambank = (data & 0x03) << 8; - - m_maincpu->set_input_line(MCS48_INPUT_EA, m_ea_bank ? ASSERT_LINE : CLEAR_LINE); - if (m_cart_rom) - m_bank1->set_entry(m_ea_bank); -} - -/* External RAM */ - -READ8_MEMBER( advision_state::ext_ram_r ) -{ - UINT8 data = m_ext_ram[m_rambank + offset]; - - if (!m_video_enable) - { - /* the video hardware interprets reads as writes */ - vh_write(data); - } - - if (m_video_bank == 0x06) - { - m_soundcpu->set_input_line(INPUT_LINE_RESET, (data & 0x01) ? CLEAR_LINE : ASSERT_LINE); - } - - return data; -} - -WRITE8_MEMBER( advision_state::ext_ram_w ) -{ - m_ext_ram[m_rambank + offset] = data; -} - -/* Sound */ - -READ8_MEMBER( advision_state::sound_cmd_r ) -{ - return m_sound_cmd; -} - -void advision_state::update_dac() -{ - if (m_sound_g == 0 && m_sound_d == 0) - m_dac->write_unsigned8(0xff); - else if (m_sound_g == 1 && m_sound_d == 1) - m_dac->write_unsigned8(0x80); - else - m_dac->write_unsigned8(0x00); -} - -WRITE8_MEMBER( advision_state::sound_g_w ) -{ - m_sound_g = data & 0x01; - - update_dac(); -} - -WRITE8_MEMBER( advision_state::sound_d_w ) -{ - m_sound_d = data & 0x01; - - update_dac(); -} - -/* Video */ - -WRITE8_MEMBER( advision_state::av_control_w ) -{ - m_sound_cmd = data >> 4; - - if ((m_video_enable == 0x00) && (data & 0x10)) - { - vh_update(m_video_hpos); - - m_video_hpos++; - - if (m_video_hpos > 255) - { - m_video_hpos = 0; - logerror("HPOS OVERFLOW\n"); - } - } - - m_video_enable = data & 0x10; - m_video_bank = (data & 0xe0) >> 5; -} - -READ8_MEMBER( advision_state::vsync_r ) -{ - if (m_frame_start) - { - m_frame_start = 0; - - return 0; - } - else - { - return 1; - } -} - -/* Input */ - -READ8_MEMBER( advision_state::controller_r ) -{ - // Get joystick switches - UINT8 in = m_joy->read(); - UINT8 data = in | 0x0f; - - // Get buttons - if (in & 0x02) data = data & 0xf7; /* Button 3 */ - if (in & 0x08) data = data & 0xcf; /* Button 1 */ - if (in & 0x04) data = data & 0xaf; /* Button 2 */ - if (in & 0x01) data = data & 0x6f; /* Button 4 */ - - return data & 0xf8; -} |