trunk/src/emu/sound/k053260.c
| r29528 | r29529 | |
| 34 | 34 | m_rom(NULL), |
| 35 | 35 | m_rom_size(0), |
| 36 | 36 | m_delta_table(NULL), |
| 37 | | m_intf(NULL) |
| 37 | m_rgnoverride(NULL) |
| 38 | 38 | { |
| 39 | 39 | memset(m_regs, 0, sizeof(int)*0x30); |
| 40 | 40 | } |
| r29528 | r29529 | |
| 46 | 46 | |
| 47 | 47 | void k053260_device::device_start() |
| 48 | 48 | { |
| 49 | | static const k053260_interface defintrf = { 0 }; |
| 50 | 49 | int rate = clock() / 32; |
| 51 | | int i; |
| 52 | 50 | |
| 53 | | /* Initialize our chip structure */ |
| 54 | | m_intf = (static_config() != NULL) ? (const k053260_interface *)static_config() : &defintrf; |
| 55 | | |
| 56 | 51 | m_mode = 0; |
| 57 | 52 | |
| 58 | | memory_region *region = (m_intf->rgnoverride != NULL) ? memregion(m_intf->rgnoverride) : this->region(); |
| 59 | | |
| 53 | memory_region *region = (m_rgnoverride) ? memregion(m_rgnoverride) : this->region(); |
| 60 | 54 | m_rom = *region; |
| 61 | 55 | m_rom_size = region->bytes(); |
| 62 | 56 | |
| 63 | 57 | device_reset(); |
| 64 | 58 | |
| 65 | | for ( i = 0; i < 0x30; i++ ) |
| 59 | for (int i = 0; i < 0x30; i++) |
| 66 | 60 | m_regs[i] = 0; |
| 67 | 61 | |
| 68 | 62 | m_delta_table = auto_alloc_array( machine(), UINT32, 0x1000 ); |
| r29528 | r29529 | |
| 75 | 69 | save_item(NAME(m_mode)); |
| 76 | 70 | save_item(NAME(m_regs)); |
| 77 | 71 | |
| 78 | | for ( i = 0; i < 4; i++ ) |
| 72 | for (int i = 0; i < 4; i++) |
| 79 | 73 | { |
| 80 | 74 | save_item(NAME(m_channels[i].rate), i); |
| 81 | 75 | save_item(NAME(m_channels[i].size), i); |
| r29528 | r29529 | |
| 98 | 92 | |
| 99 | 93 | void k053260_device::device_reset() |
| 100 | 94 | { |
| 101 | | int i; |
| 102 | 95 | |
| 103 | | for( i = 0; i < 4; i++ ) { |
| 96 | for (int i = 0; i < 4; i++) |
| 97 | { |
| 104 | 98 | m_channels[i].rate = 0; |
| 105 | 99 | m_channels[i].size = 0; |
| 106 | 100 | m_channels[i].start = 0; |
trunk/src/emu/sound/k053260.h
| r29528 | r29529 | |
| 19 | 19 | #define MCFG_K053260_REPLACE(_tag, _clock) \ |
| 20 | 20 | MCFG_DEVICE_REPLACE(_tag, K053260, _clock) |
| 21 | 21 | |
| 22 | #define MCFG_K053260_REGION(_tag) \ |
| 23 | k053260_device::set_region_tag(*device, _tag); |
| 22 | 24 | |
| 25 | |
| 23 | 26 | //************************************************************************** |
| 24 | 27 | // TYPE DEFINITIONS |
| 25 | 28 | //************************************************************************** |
| 26 | 29 | |
| 27 | | struct k053260_interface |
| 28 | | { |
| 29 | | const char *rgnoverride; |
| 30 | | }; |
| 31 | | |
| 32 | | |
| 33 | 30 | struct k053260_channel |
| 34 | 31 | { |
| 35 | 32 | k053260_channel() : |
| r29528 | r29529 | |
| 68 | 65 | k053260_device(const machine_config &mconfig, const char *tag, device_t *owner, UINT32 clock); |
| 69 | 66 | ~k053260_device() { } |
| 70 | 67 | |
| 68 | static void set_region_tag(device_t &device, const char *tag) { downcast<k053260_device &>(device).m_rgnoverride = tag; } |
| 69 | |
| 71 | 70 | protected: |
| 72 | 71 | // device-level overrides |
| 73 | 72 | virtual void device_start(); |
| r29528 | r29529 | |
| 84 | 83 | void InitDeltaTable( int rate, int clock ); |
| 85 | 84 | void check_bounds( int channel ); |
| 86 | 85 | |
| 87 | | private: |
| 88 | 86 | sound_stream * m_channel; |
| 89 | 87 | int m_mode; |
| 90 | 88 | int m_regs[0x30]; |
| r29528 | r29529 | |
| 92 | 90 | int m_rom_size; |
| 93 | 91 | UINT32 *m_delta_table; |
| 94 | 92 | k053260_channel m_channels[4]; |
| 95 | | const k053260_interface *m_intf; |
| 93 | const char *m_rgnoverride; |
| 96 | 94 | }; |
| 97 | 95 | |
| 98 | 96 | extern const device_type K053260; |
| 99 | 97 | |
| 100 | | |
| 101 | 98 | #endif /* __K053260_H__ */ |
trunk/src/mame/drivers/overdriv.c
| r29528 | r29529 | |
| 260 | 260 | INPUT_PORTS_END |
| 261 | 261 | |
| 262 | 262 | |
| 263 | | static const k053260_interface k053260_config = |
| 264 | | { |
| 265 | | "shared" |
| 266 | | }; |
| 267 | | |
| 268 | 263 | static const k053247_interface overdriv_k053246_intf = |
| 269 | 264 | { |
| 270 | 265 | "gfx1", 0, |
| r29528 | r29529 | |
| 375 | 370 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.5) |
| 376 | 371 | |
| 377 | 372 | MCFG_K053260_ADD("k053260_1", 3579545) |
| 378 | | MCFG_SOUND_CONFIG(k053260_config) |
| 373 | MCFG_K053260_REGION("shared") |
| 379 | 374 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) |
| 380 | 375 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) |
| 381 | 376 | |
| 382 | 377 | MCFG_K053260_ADD("k053260_2", 3579545) |
| 383 | | MCFG_SOUND_CONFIG(k053260_config) |
| 378 | MCFG_K053260_REGION("shared") |
| 384 | 379 | MCFG_SOUND_ROUTE(0, "lspeaker", 0.35) |
| 385 | 380 | MCFG_SOUND_ROUTE(1, "rspeaker", 0.35) |
| 386 | 381 | MACHINE_CONFIG_END |