diff options
Diffstat (limited to 'src/mame/machine/galaxold.cpp')
-rw-r--r-- | src/mame/machine/galaxold.cpp | 187 |
1 files changed, 0 insertions, 187 deletions
diff --git a/src/mame/machine/galaxold.cpp b/src/mame/machine/galaxold.cpp deleted file mode 100644 index e42eb2718ca..00000000000 --- a/src/mame/machine/galaxold.cpp +++ /dev/null @@ -1,187 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Nicola Salmoria -/*************************************************************************** - - galaxold.cpp - - Functions to emulate general aspects of the machine (RAM, ROM, interrupts, - I/O ports) - -***************************************************************************/ - -#include "emu.h" -#include "includes/galaxold.h" - - -uint8_t galaxold_state::hunchbkg_intack() -{ - m_maincpu->set_input_line(0, CLEAR_LINE); - return 0x03; -} - -/* FIXME: remove trampoline */ -WRITE_LINE_MEMBER(galaxold_state::galaxold_7474_9m_2_q_callback) -{ - /* Q bar clocks the other flip-flop, - Q is VBLANK (not visible to the CPU) */ - m_7474_9m_1->clock_w(state); -} - -WRITE_LINE_MEMBER(galaxold_state::galaxold_7474_9m_1_callback) -{ - /* Q goes to the NMI line */ - m_maincpu->set_input_line(m_irq_line, state ? CLEAR_LINE : ASSERT_LINE); -} - -void galaxold_state::galaxold_nmi_enable_w(uint8_t data) -{ - m_7474_9m_1->preset_w(data ? 1 : 0); -} - - -TIMER_DEVICE_CALLBACK_MEMBER(galaxold_state::galaxold_interrupt_timer) -{ - /* 128V, 64V and 32V go to D */ - m_7474_9m_2->d_w(((param & 0xe0) != 0xe0) ? 1 : 0); - - /* 16V clocks the flip-flop */ - m_7474_9m_2->clock_w(((param & 0x10) == 0x10) ? 1 : 0); - - param = (param + 0x10) & 0xff; - - timer.adjust(m_screen->time_until_pos(param), param); -} - - -void galaxold_state::machine_reset_common(int line) -{ - m_irq_line = line; - - /* initialize main CPU interrupt generator flip-flops */ - m_7474_9m_2->preset_w(1); - m_7474_9m_2->clear_w (1); - - m_7474_9m_1->clear_w (1); - m_7474_9m_1->d_w (0); - m_7474_9m_1->preset_w(0); - - /* start a timer to generate interrupts */ - subdevice<timer_device>("int_timer")->adjust(m_screen->time_until_pos(0)); -} - -MACHINE_RESET_MEMBER(galaxold_state,galaxold) -{ - machine_reset_common(INPUT_LINE_NMI); -} - -MACHINE_RESET_MEMBER(galaxold_state,devilfsg) -{ - machine_reset_common(0); -} - -MACHINE_RESET_MEMBER(galaxold_state,hunchbkg) -{ - machine_reset_common(0); -} - -void galaxold_state::galaxold_coin_lockout_w(uint8_t data) -{ - machine().bookkeeping().coin_lockout_global_w(~data & 1); -} - - -void galaxold_state::galaxold_coin_counter_w(offs_t offset, uint8_t data) -{ - machine().bookkeeping().coin_counter_w(offset, data & 0x01); -} - -void galaxold_state::galaxold_coin_counter_1_w(uint8_t data) -{ - machine().bookkeeping().coin_counter_w(1, data & 0x01); -} - -void galaxold_state::galaxold_coin_counter_2_w(uint8_t data) -{ - machine().bookkeeping().coin_counter_w(2, data & 0x01); -} - - -void galaxold_state::galaxold_leds_w(offs_t offset, uint8_t data) -{ - m_leds[offset] = BIT(data, 0); -} - -uint8_t galaxold_state::scramblb_protection_1_r() -{ - switch (m_maincpu->pc()) - { - case 0x01da: return 0x80; - case 0x01e4: return 0x00; - default: - logerror("%04x: read protection 1\n",m_maincpu->pc()); - return 0; - } -} - -uint8_t galaxold_state::scramblb_protection_2_r() -{ - switch (m_maincpu->pc()) - { - case 0x01ca: return 0x90; - default: - logerror("%04x: read protection 2\n",m_maincpu->pc()); - return 0; - } -} - - -void galaxold_state::_4in1_bank_w(uint8_t data) -{ - m__4in1_bank = data & 0x03; - galaxold_gfxbank_w(0, m__4in1_bank); - membank("bank1")->set_entry(m__4in1_bank); -} - -void galaxold_state::init_4in1() -{ - const offs_t len = memregion("maincpu")->bytes(); - uint8_t *RAM = memregion("maincpu")->base(); - - /* Decrypt Program Roms */ - for (offs_t i = 0; i < len; i++) - RAM[i] = RAM[i] ^ (i & 0xff); - - /* games are banked at 0x0000 - 0x3fff */ - membank("bank1")->configure_entries(0, 4, &RAM[0x10000], 0x4000); - - _4in1_bank_w(0); /* set the initial CPU bank */ - - save_item(NAME(m__4in1_bank)); -} - -INTERRUPT_GEN_MEMBER(galaxold_state::hunchbks_vh_interrupt) -{ - m_maincpu->pulse_input_line(0, m_maincpu->minimum_quantum_time()); -} - -void galaxold_state::init_bullsdrtg() -{ - // patch char supposed to be space - uint8_t *gfxrom = memregion("gfx1")->base(); - for (int i = 0; i < 8; i++) - { - gfxrom[i] = 0; - } - - // patch gfx for charset (seems to be 1bpp with bitplane data in correct rom) - for (int i = 0*8; i < 27*8; i++) - { - gfxrom[0x1000 + i] = 0; - } - - // patch gfx for digits (seems to be 1bpp with bitplane data in correct rom) - for (int i = 48*8; i < (48+10)*8; i++ ) - { - gfxrom[0x1000 + i] = 0; - } -} |