// license:BSD-3-Clause
// copyright-holders:R. Belmont
/*****************************************************************************
*
* includes/macpci.h
*
* PCI-based Power Macintosh driver declarations
*
****************************************************************************/
#ifndef MAME_INCLUDES_MACPCI_H
#define MAME_INCLUDES_MACPCI_H
#include "machine/8530scc.h"
#include "machine/6522via.h"
#include "machine/ram.h"
#include "machine/cuda.h"
#include "machine/ncr539x.h"
#include "sound/awacs.h"
#define C7M (7833600)
#define C15M (C7M*2)
#define MAC_SCREEN_NAME "screen"
#define MAC_539X_1_TAG "539x_1"
#define MAC_539X_2_TAG "539x_2"
/* Mac driver data */
class macpci_state : public driver_device
{
public:
macpci_state(const machine_config &mconfig, device_type type, const char *tag)
: driver_device(mconfig, type, tag),
m_maincpu(*this, "maincpu"),
m_via1(*this, "via6522_0"),
m_awacs(*this, "awacs"),
m_cuda(*this, CUDA_TAG),
m_ram(*this, RAM_TAG),
m_539x_1(*this, MAC_539X_1_TAG),
m_539x_2(*this, MAC_539X_2_TAG)
{ }
required_device<cpu_device> m_maincpu;
required_device<via6522_device> m_via1;
optional_device<awacs_device> m_awacs;
required_device<cuda_device> m_cuda;
required_device<ram_device> m_ram;
optional_device<ncr539x_device> m_539x_1;
optional_device<ncr539x_device> m_539x_2;
virtual void machine_start() override;
virtual void machine_reset() override;
/* tells which model is being emulated (set by macxxx_init) */
enum model_t
{
PCIMODEL_MAC_PM5200,
PCIMODEL_MAC_PM6200,
PCIMODEL_MAC_PM5300,
PCIMODEL_MAC_PM7200,
PCIMODEL_MAC_PM7500,
PCIMODEL_MAC_PM8500,
PCIMODEL_MAC_PM9500,
PCIMODEL_MAC_PM7215,
PCIMODEL_MAC_PM5260,
PCIMODEL_MAC_PM5400,
PCIMODEL_MAC_PM7600,
PCIMODEL_MAC_PM8200,
PCIMODEL_MAC_PM6300,
PCIMODEL_MAC_PM6400,
PCIMODEL_MAC_PM4400,
PCIMODEL_MAC_PM5500,
PCIMODEL_MAC_PM7220,
PCIMODEL_MAC_PM7300,
PCIMODEL_MAC_PM6500,
PCIMODEL_MAC_PM8600,
PCIMODEL_MAC_PM9600,
PCIMODEL_MAC_20TH,
PCIMODEL_MAC_G3_GOSSAMER,
PCIMODEL_MAC_G3_ALLINONE,
PCIMODEL_MAC_PB5x0PPC,
PCIMODEL_MAC_PB1400,
PCIMODEL_MAC_PB2300,
PCIMODEL_MAC_PB2400,
PCIMODEL_MAC_PB3400,
PCIMODEL_MAC_PB5300,
PCIMODEL_MAC_PBG3KANGA,
PCIMODEL_MAC_PBG3WALLST1,
PCIMODEL_MAC_PBG3WALLST2,
PCIMODEL_MAC_PIPPIN // Apple/Bandai Pippin
};
model_t m_model;
// 60.15 Hz timer for RBV/V8/Sonora/Eagle/VASP/etc.
emu_timer *m_6015_timer;
// RBV and friends (V8, etc)
uint8_t m_rbv_regs[256], m_rbv_ier, m_rbv_ifr, m_rbv_type, m_rbv_montype, m_rbv_vbltime;
uint32_t m_rbv_colors[3], m_rbv_count, m_rbv_clutoffs, m_rbv_immed10wr;
uint32_t m_rbv_palette[256];
uint8_t m_sonora_vctl[8];
emu_timer *m_vbl_timer, *m_cursor_timer;
uint16_t m_cursor_line;
uint16_t m_dafb_int_status;
int m_dafb_scsi1_drq, m_dafb_scsi2_drq;
uint8_t m_dafb_mode;
uint32_t m_dafb_base, m_dafb_stride;
// this is shared among all video setups with vram
uint32_t *m_vram;
DECLARE_READ16_MEMBER ( mac_via_r );
DECLARE_WRITE16_MEMBER ( mac_via_w );
DECLARE_READ16_MEMBER ( mac_scc_r );
DECLARE_WRITE16_MEMBER ( mac_scc_w );
DECLARE_WRITE16_MEMBER ( mac_scc_2_w );
DECLARE_READ32_MEMBER(mac_read_id);
DECLARE_READ8_MEMBER(mac_5396_r);
DECLARE_WRITE8_MEMBER(mac_5396_w);
DECLARE_WRITE_LINE_MEMBER(irq_539x_1_w);
DECLARE_WRITE_LINE_MEMBER(drq_539x_1_w);
DECLARE_WRITE_LINE_MEMBER(cuda_reset_w);
DECLARE_WRITE_LINE_MEMBER(cuda_adb_linechange_w);
// hack functions
DECLARE_READ64_MEMBER ( unk1_r );
DECLARE_READ64_MEMBER ( unk2_r );
void init_pippin();
void pippin(machine_config &config);
void pippin_mem(address_map &map);
private:
// wait states for accessing the VIA
int m_via_cycles;
// hack
uint16_t m_unk1_test;
public:
emu_timer *m_scanline_timer;
uint32_t screen_update_pippin(screen_device &screen, bitmap_ind16 &bitmap, const rectangle &cliprect);
TIMER_CALLBACK_MEMBER(mac_6015_tick);
DECLARE_READ8_MEMBER(mac_via_in_a);
DECLARE_READ8_MEMBER(mac_via_in_b);
DECLARE_WRITE8_MEMBER(mac_via_out_a);
DECLARE_WRITE8_MEMBER(mac_via_out_b);
DECLARE_READ_LINE_MEMBER(mac_adb_via_in_cb2);
DECLARE_WRITE_LINE_MEMBER(mac_adb_via_out_cb2);
DECLARE_WRITE_LINE_MEMBER(mac_via_irq);
void mac_driver_init(model_t model);
};
#endif // MAME_INCLUDES_MACPCI_H