diff options
author | Phil Bennett <philipjbennett@users.noreply.github.com> | 2013-11-17 20:01:42 +0000 |
---|---|---|
committer | Phil Bennett <philipjbennett@users.noreply.github.com> | 2013-11-17 20:01:42 +0000 |
commit | ed620217a2df1b2c11e6863ebb75f535f7cd1c21 (patch) | |
tree | 92b32c9da3d0d551e571b46d0328c51546a67188 /src/emu/sound/k056800.h | |
parent | 4a64c9b058d9620c1ac1ee1c3474f7483711026f (diff) |
Rewrote Konami 056800 (MIRAC): [Phil Bennett]
- Implemented as an 8-bit device
- Fixed address mapping
- Removed bogus timer interrupt
- Fixed interrupt handling
054539.c: Fixed input clock rate and implemented programmable timer based on hardware measurements [Phil Bennett, Stefan Lindberg]
lethal.c, mystwarr,c, tmnt.c: Hooked up 054539 timer interrupt. Fixes music tempo in some games [Phil Bennett]
qdrmfgp.c: Hooked up 054539 timer interrupt for qdrmfgp, fixed IRQ acknowledge handling [Phil Bennett]
plygonet.c: Hooked up 054539 timer interrupt, removed non-existent second 054539 and fixed EEPROM regression [Phil Bennett]
hornet.c, gticlub.c: Implemented sound interrupt timer [Phil Bennett]
konamigx.c improvements: [Phil Bennett]
- Hooked up 056800 device
- Hooked up 054539 timer interrupt
- Removed sound hacks
- All DSP RAM tests now pass, winspike sound now works
konamigq.c improvements: [Phil Bennett]
- Hooked up 056800 device
- Hooked up 054539 timer interrupt
- Added TMS57002 DASP
ultrsprt.c improvements: [Phil Bennett]
- Hooked up 054539 timer interrupt
- Implemented VRAM double buffering
- Improved trackball inputs
- Fixed sound
zr107.c improvements: [Phil Bennett]
- Hooked up 054539 timer interrupt
- Fixed sound in all games
rungun.c improvements: [Phil Bennett]
- Hooked up 054539 timer interrupt. Fixes music tempo
- Implemented sound CPU NMI control
- Fixed 054539 #2 regression
New games added or promoted from NOT_WORKING status:
====================================================
Wave shark/Jet Wave [Phil Bennett]
Diffstat (limited to 'src/emu/sound/k056800.h')
-rw-r--r-- | src/emu/sound/k056800.h | 62 |
1 files changed, 23 insertions, 39 deletions
diff --git a/src/emu/sound/k056800.h b/src/emu/sound/k056800.h index 25d24170e12..2942f3616f4 100644 --- a/src/emu/sound/k056800.h +++ b/src/emu/sound/k056800.h @@ -9,68 +9,52 @@ /*************************************************************************** - TYPE DEFINITIONS + DEVICE CONFIGURATION MACROS ***************************************************************************/ -typedef void (*k056800_irq_cb)(running_machine &, int); +#define MCFG_K056800_ADD(_tag, _clock) \ + MCFG_DEVICE_ADD(_tag, K056800, _clock) \ +#define MCFG_K056800_INT_HANDLER(_devcb) \ + devcb = &k056800_device::set_int_handler(*device, DEVCB2_##_devcb); -struct k056800_interface -{ - k056800_irq_cb m_irq_cb; -}; -class k056800_device : public device_t, - public k056800_interface + +/*************************************************************************** + TYPE DEFINITIONS +***************************************************************************/ + +class k056800_device : public device_t { public: + // construction/destruction k056800_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); - ~k056800_device() {} - enum - { - TIMER_TICK_SOUND_CPU - }; + // static configuration helpers + template<class _Object> static devcb2_base &set_int_handler(device_t &device, _Object object) { return downcast<k056800_device &>(device).m_int_handler.set_callback(object); } - DECLARE_READ32_MEMBER( host_r ); - DECLARE_WRITE32_MEMBER( host_w ); - DECLARE_READ16_MEMBER( sound_r ); - DECLARE_WRITE16_MEMBER( sound_w ); + DECLARE_READ8_MEMBER( host_r ); + DECLARE_WRITE8_MEMBER( host_w ); + DECLARE_READ8_MEMBER( sound_r ); + DECLARE_WRITE8_MEMBER( sound_w ); protected: // device-level overrides - virtual void device_config_complete(); virtual void device_start(); virtual void device_reset(); - virtual void device_timer(emu_timer &timer, device_timer_id id, int param, void *ptr); - private: // internal state - UINT8 m_host_reg[8]; - UINT8 m_sound_reg[8]; - emu_timer *m_sound_cpu_timer; - UINT8 m_sound_cpu_irq1_enable; - k056800_irq_cb m_irq_cb_func; - - UINT8 host_reg_r( int reg ); - void host_reg_w( int reg, UINT8 data ); - UINT8 sound_reg_r( int reg ); - void sound_reg_w( int reg, UINT8 data ); + bool m_int_pending; + bool m_int_enabled; + UINT8 m_host_to_snd_regs[4]; + UINT8 m_snd_to_host_regs[2]; + devcb2_write_line m_int_handler; }; extern const device_type K056800; -/*************************************************************************** - DEVICE CONFIGURATION MACROS -***************************************************************************/ - -#define MCFG_K056800_ADD(_tag, _interface, _clock) \ - MCFG_DEVICE_ADD(_tag, K056800, _clock) \ - MCFG_DEVICE_CONFIG(_interface) - - #endif /* __K056800_H__ */ |