mirror of
https://github.com/holub/mame
synced 2025-04-24 17:30:55 +03:00
First pass, hooked it up to Winning Run GPU because it's a good test case
This commit is contained in:
parent
6955916068
commit
52549ddd50
@ -67,7 +67,7 @@ STATUS:
|
||||
- posirq handling broken
|
||||
|
||||
Driver's Eyes
|
||||
crashes
|
||||
Left and Right screen
|
||||
|
||||
TODO: (*) Extract DSP BIOS
|
||||
|
||||
@ -1501,7 +1501,7 @@ static ADDRESS_MAP_START( winrun_gpu_map, AS_PROGRAM, 16, namcos21_state )
|
||||
AM_RANGE(0x000000, 0x07ffff) AM_ROM
|
||||
AM_RANGE(0x100000, 0x100001) AM_READWRITE(winrun_gpu_color_r,winrun_gpu_color_w) /* ? */
|
||||
AM_RANGE(0x180000, 0x19ffff) AM_RAM /* work RAM */
|
||||
AM_RANGE(0x1c0000, 0x1fffff) AM_READWRITE(namcos21_68k_gpu_C148_r,namcos21_68k_gpu_C148_w)
|
||||
AM_RANGE(0x1c0000, 0x1fffff) AM_DEVICE("gpu_intc", namco_c148_device, map)
|
||||
AM_RANGE(0x200000, 0x20ffff) AM_RAM AM_SHARE("gpu_comram")
|
||||
AM_RANGE(0x400000, 0x40ffff) AM_RAM_DEVWRITE("palette", palette_device, write) AM_SHARE("palette")
|
||||
AM_RANGE(0x410000, 0x41ffff) AM_RAM_DEVWRITE("palette", palette_device, write_ext) AM_SHARE("palette_ext")
|
||||
@ -2007,6 +2007,8 @@ static MACHINE_CONFIG_START( winrun, namcos21_state )
|
||||
MCFG_CPU_PROGRAM_MAP(winrun_gpu_map)
|
||||
MCFG_CPU_VBLANK_INT_DRIVER("screen", namcos21_state, namcos2_68k_gpu_vblank)
|
||||
|
||||
MCFG_NAMCO_C148_ADD("gpu_intc")
|
||||
|
||||
MCFG_QUANTUM_TIME(attotime::from_hz(6000)) /* 100 CPU slices per frame */
|
||||
|
||||
MCFG_MACHINE_START_OVERRIDE(namcos21_state,namcos21)
|
||||
|
@ -6,6 +6,7 @@
|
||||
|
||||
#include "namcos2.h"
|
||||
#include "machine/namcoio_gearbox.h"
|
||||
#include "machine/namco_c148.h"
|
||||
|
||||
#define NAMCOS21_POLY_FRAME_WIDTH 496
|
||||
#define NAMCOS21_POLY_FRAME_HEIGHT 480
|
||||
@ -54,7 +55,8 @@ public:
|
||||
m_ptrom24(*this,"point24"),
|
||||
m_ptrom16(*this,"point16"),
|
||||
m_dsp(*this, "dsp"),
|
||||
m_io_gearbox(*this, "gearbox")
|
||||
m_io_gearbox(*this, "gearbox"),
|
||||
m_gpu_intc(*this, "gpu_intc")
|
||||
{ }
|
||||
|
||||
optional_shared_ptr<uint16_t> m_winrun_dspbios;
|
||||
@ -68,6 +70,7 @@ public:
|
||||
|
||||
optional_device<cpu_device> m_dsp;
|
||||
optional_device<namcoio_gearbox_device> m_io_gearbox;
|
||||
optional_device<namco_c148_device> m_gpu_intc;
|
||||
|
||||
std::unique_ptr<uint8_t[]> m_videoram;
|
||||
std::unique_ptr<uint16_t[]> m_winrun_dspcomram;
|
||||
|
100
src/mame/machine/namco_c148.cpp
Normal file
100
src/mame/machine/namco_c148.cpp
Normal file
@ -0,0 +1,100 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:<author_name>
|
||||
/***************************************************************************
|
||||
|
||||
Namco C148 Interrupt Controller
|
||||
|
||||
***************************************************************************/
|
||||
/*
|
||||
Interrupt Controller C148 1C0000-1FFFFF R/W D00-D02
|
||||
???????? 1C0XXX
|
||||
???????? 1C2XXX
|
||||
???????? 1C4XXX
|
||||
Master/Slave IRQ level 1C6XXX D00-D02
|
||||
EXIRQ level 1C8XXX D00-D02
|
||||
POSIRQ level 1CAXXX D00-D02
|
||||
SCIRQ level 1CCXXX D00-D02
|
||||
VBLANK IRQ level 1CEXXX D00-D02
|
||||
???????? 1D0XXX
|
||||
???????? 1D4000 trigger master/slave INT?
|
||||
|
||||
Acknowlegde Master/Slave IRQ 1D6XXX ack master/slave INT
|
||||
Acknowledge EXIRQ 1D8XXX
|
||||
Acknowledge POSIRQ 1DAXXX
|
||||
Acknowledge SCIRQ 1DCXXX
|
||||
Acknowledge VBLANK IRQ 1DEXXX
|
||||
|
||||
EEPROM Ready status 1E0XXX R D01
|
||||
Sound CPU Reset control 1E2XXX W D01
|
||||
Slave 68000 & IO CPU Reset 1E4XXX W D01
|
||||
Watchdog reset kicker 1E6XXX W
|
||||
*/
|
||||
|
||||
#include "emu.h"
|
||||
#include "namco_c148.h"
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// GLOBAL VARIABLES
|
||||
//**************************************************************************
|
||||
|
||||
// device type definition
|
||||
const device_type NAMCO_C148 = &device_creator<namco_c148_device>;
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// LIVE DEVICE
|
||||
//**************************************************************************
|
||||
|
||||
//-------------------------------------------------
|
||||
// namco_c148_device - constructor
|
||||
//-------------------------------------------------
|
||||
|
||||
namco_c148_device::namco_c148_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock)
|
||||
: device_t(mconfig, NAMCO_C148, "Namco C148 Interrupt Controller", tag, owner, clock, "namco_c148", __FILE__)
|
||||
{
|
||||
}
|
||||
|
||||
// (*) denotes master CPU only
|
||||
DEVICE_ADDRESS_MAP_START( map, 16, namco_c148_device )
|
||||
// AM_RANGE(0x06000, 0x07fff) // CPUIRQ lv
|
||||
// AM_RANGE(0x08000, 0x09fff) // EXIRQ lv
|
||||
// AM_RANGE(0x0a000, 0x0bfff) // POSIRQ lv
|
||||
// AM_RANGE(0x0c000, 0x0dfff) // SCIRQ lv
|
||||
// AM_RANGE(0x0e000, 0x0ffff) // VBlank IRQ lv
|
||||
|
||||
// AM_RANGE(0x16000, 0x17fff) // CPUIRQ ack
|
||||
// AM_RANGE(0x18000, 0x19fff) // EXIRQ ack
|
||||
// AM_RANGE(0x1a000, 0x1bfff) // POSIRQ ack
|
||||
// AM_RANGE(0x1c000, 0x1dfff) // SCIRQ ack
|
||||
// AM_RANGE(0x1e000, 0x1ffff) // VBlank IRQ ack
|
||||
// AM_RANGE(0x20000, 0x21fff) // EEPROM ready status
|
||||
// AM_RANGE(0x22000, 0x23fff) // sound CPU reset (*)
|
||||
// AM_RANGE(0x24000, 0x25fff) // slave & i/o reset (*)
|
||||
AM_RANGE(0x26000, 0x27fff) AM_NOP // watchdog
|
||||
ADDRESS_MAP_END
|
||||
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_start - device-specific startup
|
||||
//-------------------------------------------------
|
||||
|
||||
void namco_c148_device::device_start()
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
//-------------------------------------------------
|
||||
// device_reset - device-specific reset
|
||||
//-------------------------------------------------
|
||||
|
||||
void namco_c148_device::device_reset()
|
||||
{
|
||||
}
|
||||
|
||||
//**************************************************************************
|
||||
// READ/WRITE HANDLERS
|
||||
//**************************************************************************
|
||||
|
58
src/mame/machine/namco_c148.h
Normal file
58
src/mame/machine/namco_c148.h
Normal file
@ -0,0 +1,58 @@
|
||||
// license:BSD-3-Clause
|
||||
// copyright-holders:<author_name>
|
||||
/***************************************************************************
|
||||
|
||||
Template for skeleton device
|
||||
|
||||
***************************************************************************/
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifndef __NAMCO_C148DEV_H__
|
||||
#define __NAMCO_C148DEV_H__
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// INTERFACE CONFIGURATION MACROS
|
||||
//**************************************************************************
|
||||
|
||||
#define MCFG_NAMCO_C148_ADD(_tag) \
|
||||
MCFG_DEVICE_ADD(_tag, NAMCO_C148, 0)
|
||||
|
||||
//**************************************************************************
|
||||
// TYPE DEFINITIONS
|
||||
//**************************************************************************
|
||||
|
||||
// ======================> namco_c148_device
|
||||
|
||||
class namco_c148_device : public device_t
|
||||
{
|
||||
public:
|
||||
// construction/destruction
|
||||
namco_c148_device(const machine_config &mconfig, const char *tag, device_t *owner, uint32_t clock);
|
||||
|
||||
DECLARE_ADDRESS_MAP(map, 16);
|
||||
|
||||
protected:
|
||||
// device-level overrides
|
||||
// virtual void device_validity_check(validity_checker &valid) const;
|
||||
virtual void device_start() override;
|
||||
virtual void device_reset() override;
|
||||
private:
|
||||
// ...
|
||||
};
|
||||
|
||||
|
||||
// device type definition
|
||||
extern const device_type NAMCO_C148;
|
||||
|
||||
|
||||
|
||||
//**************************************************************************
|
||||
// GLOBAL VARIABLES
|
||||
//**************************************************************************
|
||||
|
||||
|
||||
|
||||
#endif
|
Loading…
Reference in New Issue
Block a user