diff options
Diffstat (limited to 'src/mame/includes/neogeo.h')
-rw-r--r-- | src/mame/includes/neogeo.h | 283 |
1 files changed, 0 insertions, 283 deletions
diff --git a/src/mame/includes/neogeo.h b/src/mame/includes/neogeo.h deleted file mode 100644 index 6f22c274f0a..00000000000 --- a/src/mame/includes/neogeo.h +++ /dev/null @@ -1,283 +0,0 @@ -// license:BSD-3-Clause -// copyright-holders:Bryan McPhail,Ernesto Corvi,Andrew Prime,Zsolt Vasvari -// thanks-to:Fuzz -/************************************************************************* - - Neo-Geo hardware - -*************************************************************************/ -#ifndef MAME_INCLUDES_NEOGEO_H -#define MAME_INCLUDES_NEOGEO_H - -#pragma once - -#include "cpu/m68000/m68000.h" -#include "cpu/z80/z80.h" -#include "sound/ym2610.h" -#include "machine/74259.h" -#include "machine/gen_latch.h" -#include "machine/input_merger.h" -#include "machine/upd1990a.h" -#include "machine/ng_memcard.h" -#include "video/neogeo_spr.h" - -#include "bus/neogeo/slot.h" -#include "bus/neogeo/carts.h" -#include "bus/neogeo_ctrl/ctrl.h" - -#include "emupal.h" -#include "screen.h" - - -// On scanline 224, /VBLANK goes low 56 mclks (14 pixels) from the rising edge of /HSYNC. -// Two mclks after /VBLANK goes low, the hardware sets a pending IRQ1 flip-flop. -#define NEOGEO_VBLANK_IRQ_HTIM (attotime::from_ticks(56+2, NEOGEO_MASTER_CLOCK)) - - -class neogeo_base_state : public driver_device -{ -public: - DECLARE_CUSTOM_INPUT_MEMBER(get_memcard_status); - DECLARE_CUSTOM_INPUT_MEMBER(get_audio_result); - -protected: - neogeo_base_state(const machine_config &mconfig, device_type type, const char *tag) - : driver_device(mconfig, type, tag) - , m_maincpu(*this, "maincpu") - , m_audiocpu(*this, "audiocpu") - , m_ym(*this, "ymsnd") - , m_sprgen(*this, "spritegen") - , m_screen(*this, "screen") - , m_palette(*this, "palette") - , m_memcard(*this, "memcard") - , m_systemlatch(*this, "systemlatch") - , m_soundlatch(*this, "soundlatch") - , m_soundlatch2(*this, "soundlatch2") - , m_region_maincpu(*this, "maincpu") - , m_share_maincpu(*this, "maincpu") - , m_region_sprites(*this, "sprites") - , m_region_fixed(*this, "fixed") - , m_region_fixedbios(*this, "fixedbios") - , m_region_mainbios(*this, "mainbios") - , m_region_audiobios(*this, "audiobios") - , m_region_audiocpu(*this, "audiocpu") - , m_bank_audio_main(*this, "audio_main") - , m_bank_cartridge(*this, "cartridge") - , m_edge(*this, "edge") - , m_ctrl1(*this, "ctrl1") - , m_ctrl2(*this, "ctrl2") - , m_use_cart_vectors(0) - , m_use_cart_audio(0) - , m_slots(*this, "cslot%u", 1U) - , m_audionmi(*this, "audionmi") - { } - - uint16_t memcard_r(offs_t offset); - void memcard_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - uint8_t audio_cpu_bank_select_r(offs_t offset); - void audio_cpu_enable_nmi_w(offs_t offset, uint8_t data); - uint16_t unmapped_r(address_space &space); - uint16_t paletteram_r(offs_t offset); - void paletteram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - uint16_t video_register_r(address_space &space, offs_t offset, uint16_t mem_mask = ~0); - void video_register_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - - TIMER_CALLBACK_MEMBER(display_position_interrupt_callback); - TIMER_CALLBACK_MEMBER(display_position_vblank_callback); - TIMER_CALLBACK_MEMBER(vblank_interrupt_callback); - - uint32_t screen_update(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); - - virtual void io_control_w(offs_t offset, uint8_t data); - void audio_command_w(uint8_t data); - DECLARE_WRITE_LINE_MEMBER(set_use_cart_vectors); - DECLARE_WRITE_LINE_MEMBER(set_use_cart_audio); - uint16_t banked_vectors_r(offs_t offset); - void write_banksel(uint16_t data); - void write_bankprot(uint16_t data); - void write_bankprot_pvc(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - void write_bankprot_ms5p(offs_t offset, uint16_t data); - void write_bankprot_kf2k3bl(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - void write_bankprot_kof10th(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - uint16_t read_lorom_kof10th(offs_t offset); - - DECLARE_WRITE_LINE_MEMBER(set_screen_shadow); - DECLARE_WRITE_LINE_MEMBER(set_palette_bank); - - void neogeo_base(machine_config &config); - void neogeo_stereo(machine_config &config); - - void base_main_map(address_map &map); - void audio_io_map(address_map &map); - void audio_map(address_map &map); - - // device overrides - virtual void machine_start() override; - virtual void machine_reset() override; - - virtual void device_post_load() override; - - // devices - required_device<cpu_device> m_maincpu; - required_device<cpu_device> m_audiocpu; - // MVS-specific devices - optional_device<ym2610_device> m_ym; - required_device<neosprite_optimized_device> m_sprgen; - - required_device<screen_device> m_screen; - optional_device<palette_device> m_palette; - optional_device<ng_memcard_device> m_memcard; - required_device<hc259_device> m_systemlatch; - required_device<generic_latch_8_device> m_soundlatch; - required_device<generic_latch_8_device> m_soundlatch2; - - // memory - optional_memory_region m_region_maincpu; - optional_shared_ptr<uint16_t> m_share_maincpu; - optional_memory_region m_region_sprites; - optional_memory_region m_region_fixed; - optional_memory_region m_region_fixedbios; - optional_memory_region m_region_mainbios; - optional_memory_region m_region_audiobios; - optional_memory_region m_region_audiocpu; - optional_memory_bank m_bank_audio_main; // optional because of neocd - memory_bank *m_bank_audio_cart[4]; - memory_bank_creator m_bank_cartridge; - - optional_device<neogeo_ctrl_edge_port_device> m_edge; - optional_device<neogeo_control_port_device> m_ctrl1; - optional_device<neogeo_control_port_device> m_ctrl2; - - // video hardware, including maincpu interrupts - // TODO: make into a device - virtual void video_start() override; - virtual void video_reset() override; - - const pen_t *m_bg_pen; - uint8_t m_vblank_level; - uint8_t m_raster_level; - - int m_use_cart_vectors; - int m_use_cart_audio; - - void set_slot_idx(int slot); - - // cart slots - void init_cpu(); - void init_audio(); - void init_ym(); - void init_sprites(); - // temporary helper to restore memory banking while bankswitch is handled in the driver... - uint32_t m_bank_base; - - optional_device_array<neogeo_cart_slot_device, 6> m_slots; - - int m_curr_slot; - -private: - void update_interrupts(); - void create_interrupt_timers(); - void start_interrupt_timers(); - void acknowledge_interrupt(uint16_t data); - - void adjust_display_position_interrupt_timer(); - void set_display_position_interrupt_control(uint16_t data); - void set_display_counter_msb(uint16_t data); - void set_display_counter_lsb(uint16_t data); - void set_video_control(uint16_t data); - - void create_rgb_lookups(); - void set_pens(); - - // internal state - bool m_recurse; - - emu_timer *m_display_position_interrupt_timer; - emu_timer *m_display_position_vblank_timer; - emu_timer *m_vblank_interrupt_timer; - uint32_t m_display_counter; - uint8_t m_vblank_interrupt_pending; - uint8_t m_display_position_interrupt_pending; - uint8_t m_irq3_pending; - uint8_t m_display_position_interrupt_control; - - uint16_t get_video_control(); - - required_device<input_merger_device> m_audionmi; - - // color/palette related - std::vector<uint16_t> m_paletteram; - uint8_t m_palette_lookup[32][4]; - int m_screen_shadow; - int m_palette_bank; -}; - - -class ngarcade_base_state : public neogeo_base_state -{ -public: - DECLARE_CUSTOM_INPUT_MEMBER(startsel_edge_joy_r); - -protected: - ngarcade_base_state(const machine_config &mconfig, device_type type, const char *tag) - : neogeo_base_state(mconfig, type, tag) - , m_save_ram(*this, "saveram") - , m_upd4990a(*this, "upd4990a") - , m_dsw(*this, "DSW") - { - } - - virtual void machine_start() override; - virtual void machine_reset() override; - - virtual void io_control_w(offs_t offset, uint8_t data) override; - DECLARE_WRITE_LINE_MEMBER(set_save_ram_unlock); - void save_ram_w(offs_t offset, uint16_t data, uint16_t mem_mask = ~0); - uint16_t in0_edge_r(); - uint16_t in0_edge_joy_r(); - uint16_t in1_edge_r(); - uint16_t in1_edge_joy_r(); - - void neogeo_arcade(machine_config &config); - void neogeo_mono(machine_config &config); - - void neogeo_main_map(address_map &map); - -private: - required_shared_ptr<uint16_t> m_save_ram; - required_device<upd4990a_device> m_upd4990a; - required_ioport m_dsw; - - uint8_t m_save_ram_unlocked; -}; - - -class aes_base_state : public neogeo_base_state -{ -public: - DECLARE_INPUT_CHANGED_MEMBER(aes_jp1); - -protected: - aes_base_state(const machine_config &mconfig, device_type type, const char *tag) - : neogeo_base_state(mconfig, type, tag) - , m_io_in2(*this, "IN2") - { - } - - uint16_t aes_in2_r(); - - virtual void machine_start() override; - - void aes_base_main_map(address_map &map); - -private: - required_ioport m_io_in2; -}; - - -/*----------- defined in drivers/neogeo.c -----------*/ - -INPUT_PORTS_EXTERN(neogeo); -INPUT_PORTS_EXTERN(aes); - -#endif // MAME_INCLUDES_NEOGEO_H |