summaryrefslogtreecommitdiffstatshomepage
path: root/src/emu/sound/k056800.h
diff options
context:
space:
mode:
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
commited620217a2df1b2c11e6863ebb75f535f7cd1c21 (patch)
tree92b32c9da3d0d551e571b46d0328c51546a67188 /src/emu/sound/k056800.h
parent4a64c9b058d9620c1ac1ee1c3474f7483711026f (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.h62
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__ */