trunk/src/mame/drivers/chihiro.c
| r23537 | r23538 | |
| 3069 | 3069 | MACHINE_CONFIG_END |
| 3070 | 3070 | |
| 3071 | 3071 | static MACHINE_CONFIG_DERIVED( chihirogd, chihiro_base ) |
| 3072 | | MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", "pic", NULL, "maincpu", NOOP) |
| 3072 | MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", "pic", NULL, NOOP) |
| 3073 | 3073 | MACHINE_CONFIG_END |
| 3074 | 3074 | |
| 3075 | 3075 | #define ROM_LOAD16_WORD_SWAP_BIOS(bios,name,offset,length,hash) \ |
trunk/src/mame/drivers/naomi.c
| r23537 | r23538 | |
| 2521 | 2521 | */ |
| 2522 | 2522 | |
| 2523 | 2523 | static MACHINE_CONFIG_DERIVED( naomi, naomi_base ) |
| 2524 | | MCFG_NAOMI_ROM_BOARD_ADD("rom_board", "naomibd_eeprom", "maincpu", WRITE8(dc_state, g1_irq)) |
| 2524 | MCFG_NAOMI_ROM_BOARD_ADD("rom_board", "naomibd_eeprom", WRITE8(dc_state, g1_irq)) |
| 2525 | 2525 | MACHINE_CONFIG_END |
| 2526 | 2526 | |
| 2527 | 2527 | /* |
| r23537 | r23538 | |
| 2529 | 2529 | */ |
| 2530 | 2530 | |
| 2531 | 2531 | static MACHINE_CONFIG_DERIVED( naomigd, naomi_base ) |
| 2532 | | MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", ":pic", "naomibd_eeprom", "maincpu", WRITE8(dc_state, g1_irq)) |
| 2532 | MCFG_NAOMI_GDROM_BOARD_ADD("rom_board", ":gdrom", ":pic", "naomibd_eeprom", WRITE8(dc_state, g1_irq)) |
| 2533 | 2533 | MACHINE_CONFIG_END |
| 2534 | 2534 | |
| 2535 | 2535 | /* |
| r23537 | r23538 | |
| 2537 | 2537 | */ |
| 2538 | 2538 | |
| 2539 | 2539 | static MACHINE_CONFIG_DERIVED( naomim1, naomi_base ) |
| 2540 | | MCFG_NAOMI_M1_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", "maincpu", WRITE8(dc_state, g1_irq)) |
| 2540 | MCFG_NAOMI_M1_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", WRITE8(dc_state, g1_irq)) |
| 2541 | 2541 | MACHINE_CONFIG_END |
| 2542 | 2542 | |
| 2543 | 2543 | /* |
| r23537 | r23538 | |
| 2545 | 2545 | */ |
| 2546 | 2546 | |
| 2547 | 2547 | static MACHINE_CONFIG_DERIVED( naomim2, naomi_base ) |
| 2548 | | MCFG_NAOMI_M2_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", "maincpu", WRITE8(dc_state, g1_irq)) |
| 2548 | MCFG_NAOMI_M2_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", WRITE8(dc_state, g1_irq)) |
| 2549 | 2549 | MACHINE_CONFIG_END |
| 2550 | 2550 | |
| 2551 | 2551 | /* |
| r23537 | r23538 | |
| 2553 | 2553 | */ |
| 2554 | 2554 | |
| 2555 | 2555 | static MACHINE_CONFIG_DERIVED( naomim4, naomi_base ) |
| 2556 | | MCFG_NAOMI_M4_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", "maincpu", WRITE8(dc_state, g1_irq)) |
| 2556 | MCFG_NAOMI_M4_BOARD_ADD("rom_board", ":rom_key", "naomibd_eeprom", WRITE8(dc_state, g1_irq)) |
| 2557 | 2557 | MACHINE_CONFIG_END |
| 2558 | 2558 | |
| 2559 | 2559 | /* |
| r23537 | r23538 | |
| 2600 | 2600 | MCFG_CPU_MODIFY("maincpu") |
| 2601 | 2601 | MCFG_CPU_PROGRAM_MAP(aw_map) |
| 2602 | 2602 | MCFG_MACRONIX_29L001MC_ADD("awflash") |
| 2603 | | MCFG_AW_ROM_BOARD_ADD("rom_board", ":rom_key", "maincpu", WRITE8(dc_state, g1_irq)) |
| 2603 | MCFG_AW_ROM_BOARD_ADD("rom_board", ":rom_key", WRITE8(dc_state, g1_irq)) |
| 2604 | 2604 | MACHINE_CONFIG_END |
| 2605 | 2605 | |
| 2606 | 2606 | static MACHINE_CONFIG_DERIVED( aw1c, aw_base ) |
trunk/src/mame/machine/naomim1.h
| r23537 | r23538 | |
| 3 | 3 | |
| 4 | 4 | #include "naomibd.h" |
| 5 | 5 | |
| 6 | | #define MCFG_NAOMI_M1_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _maincpu_tag, _irq_cb) \ |
| 7 | | MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M1_BOARD, _eeprom_tag, _maincpu_tag, _irq_cb) \ |
| 6 | #define MCFG_NAOMI_M1_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _irq_cb) \ |
| 7 | MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M1_BOARD, _eeprom_tag, _irq_cb) \ |
| 8 | 8 | naomi_m1_board::static_set_tags(*device, _key_tag); |
| 9 | 9 | |
| 10 | 10 | class naomi_m1_board : public naomi_board |
trunk/src/mame/machine/dc.c
| r23537 | r23538 | |
| 76 | 76 | |
| 77 | 77 | #endif |
| 78 | 78 | |
| 79 | void dc_state::generic_dma(UINT32 main_adr, void *dma_ptr, UINT32 length, UINT32 size, bool to_mainram) |
| 80 | { |
| 81 | sh4_ddt_dma ddt; |
| 82 | if(to_mainram) |
| 83 | ddt.destination = main_adr; |
| 84 | else |
| 85 | ddt.source = main_adr; |
| 86 | ddt.buffer = dma_ptr; |
| 87 | ddt.length = length; |
| 88 | ddt.size =size; |
| 89 | ddt.direction = to_mainram; |
| 90 | ddt.channel = -1; |
| 91 | ddt.mode = -1; |
| 92 | sh4_dma_ddt(m_maincpu, &ddt); |
| 93 | } |
| 94 | |
| 79 | 95 | TIMER_CALLBACK_MEMBER(dc_state::aica_dma_irq) |
| 80 | 96 | { |
| 81 | 97 | m_wave_dma.start = g2bus_regs[SB_ADST] = 0; |
| r23537 | r23538 | |
| 720 | 736 | { |
| 721 | 737 | rtc_initial_setup(); |
| 722 | 738 | |
| 739 | // dccons doesn't have a specific g1 device yet |
| 740 | if(m_naomig1) |
| 741 | m_naomig1->set_dma_cb(naomi_g1_device::dma_cb(FUNC(dc_state::generic_dma), this)); |
| 742 | |
| 723 | 743 | // save states |
| 724 | 744 | save_pointer(NAME(dc_rtcregister), 4); |
| 725 | 745 | save_pointer(NAME(dc_sysctrl_regs), 0x200/4); |
trunk/src/mame/machine/naomim2.h
| r23537 | r23538 | |
| 3 | 3 | |
| 4 | 4 | #include "naomibd.h" |
| 5 | 5 | |
| 6 | | #define MCFG_NAOMI_M2_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _maincpu_tag, _irq_cb) \ |
| 7 | | MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M2_BOARD, _eeprom_tag, _maincpu_tag, _irq_cb) \ |
| 6 | #define MCFG_NAOMI_M2_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _irq_cb) \ |
| 7 | MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M2_BOARD, _eeprom_tag, _irq_cb) \ |
| 8 | 8 | naomi_m2_board::static_set_tags(*device, _key_tag); |
| 9 | 9 | |
| 10 | 10 | class naomi_m2_board : public naomi_board |
trunk/src/mame/machine/awboard.h
| r23537 | r23538 | |
| 3 | 3 | |
| 4 | 4 | #include "naomig1.h" |
| 5 | 5 | |
| 6 | | #define MCFG_AW_ROM_BOARD_ADD(_tag, _keyregion, _maincpu_tag, _irq_cb) \ |
| 7 | | MCFG_NAOMI_G1_ADD(_tag, AW_ROM_BOARD, _maincpu_tag, _irq_cb) \ |
| 6 | #define MCFG_AW_ROM_BOARD_ADD(_tag, _keyregion, _irq_cb) \ |
| 7 | MCFG_NAOMI_G1_ADD(_tag, AW_ROM_BOARD, _irq_cb) \ |
| 8 | 8 | aw_rom_board::static_set_keyregion(*device, _keyregion); |
| 9 | 9 | |
| 10 | 10 | class aw_rom_board : public naomi_g1_device |
trunk/src/mame/machine/naomigd.h
| r23537 | r23538 | |
| 3 | 3 | |
| 4 | 4 | #include "machine/naomibd.h" |
| 5 | 5 | |
| 6 | | #define MCFG_NAOMI_GDROM_BOARD_ADD(_tag, _image_tag, _pic_tag, _eeprom_tag, _maincpu_tag, _irq_cb) \ |
| 7 | | MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_GDROM_BOARD, _eeprom_tag, _maincpu_tag, _irq_cb) \ |
| 6 | #define MCFG_NAOMI_GDROM_BOARD_ADD(_tag, _image_tag, _pic_tag, _eeprom_tag, _irq_cb) \ |
| 7 | MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_GDROM_BOARD, _eeprom_tag, _irq_cb) \ |
| 8 | 8 | naomi_gdrom_board::static_set_tags(*device, _image_tag, _pic_tag); |
| 9 | 9 | |
| 10 | 10 | class naomi_gdrom_board : public naomi_board |
trunk/src/mame/machine/naomim4.h
| r23537 | r23538 | |
| 3 | 3 | |
| 4 | 4 | #include "naomibd.h" |
| 5 | 5 | |
| 6 | | #define MCFG_NAOMI_M4_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _maincpu_tag, _irq_cb) \ |
| 7 | | MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M4_BOARD, _eeprom_tag, _maincpu_tag, _irq_cb) \ |
| 6 | #define MCFG_NAOMI_M4_BOARD_ADD(_tag, _key_tag, _eeprom_tag, _irq_cb) \ |
| 7 | MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_M4_BOARD, _eeprom_tag, _irq_cb) \ |
| 8 | 8 | naomi_m4_board::static_set_tags(*device, _key_tag); |
| 9 | 9 | |
| 10 | 10 | class naomi_m4_board : public naomi_board |
trunk/src/mame/machine/naomibd.h
| r23537 | r23538 | |
| 4 | 4 | #include "machine/naomig1.h" |
| 5 | 5 | #include "machine/naomicrypt.h" |
| 6 | 6 | |
| 7 | | #define MCFG_NAOMI_BOARD_ADD(_tag, type, _eeprom_tag, _maincpu_tag, _irq_cb) \ |
| 8 | | MCFG_NAOMI_G1_ADD(_tag, type, _maincpu_tag, _irq_cb) \ |
| 7 | #define MCFG_NAOMI_BOARD_ADD(_tag, type, _eeprom_tag, _irq_cb) \ |
| 8 | MCFG_NAOMI_G1_ADD(_tag, type, _irq_cb) \ |
| 9 | 9 | naomi_board::static_set_eeprom_tag(*device, _eeprom_tag); |
| 10 | 10 | |
| 11 | 11 | class naomi_board : public naomi_g1_device |
trunk/src/mame/machine/naomirom.h
| r23537 | r23538 | |
| 3 | 3 | |
| 4 | 4 | #include "naomibd.h" |
| 5 | 5 | |
| 6 | | #define MCFG_NAOMI_ROM_BOARD_ADD(_tag, _eeprom_tag, _maincpu_tag, _irq_cb) \ |
| 7 | | MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_ROM_BOARD, _eeprom_tag, _maincpu_tag, _irq_cb) |
| 6 | #define MCFG_NAOMI_ROM_BOARD_ADD(_tag, _eeprom_tag, _irq_cb) \ |
| 7 | MCFG_NAOMI_BOARD_ADD(_tag, NAOMI_ROM_BOARD, _eeprom_tag, _irq_cb) |
| 8 | 8 | |
| 9 | 9 | class naomi_rom_board : public naomi_board |
| 10 | 10 | { |
trunk/src/mame/machine/naomig1.c
| r23537 | r23538 | |
| 27 | 27 | : device_t(mconfig, type, name, tag, owner, clock), |
| 28 | 28 | irq_cb(*this) |
| 29 | 29 | { |
| 30 | | cpu = 0; |
| 31 | 30 | } |
| 32 | 31 | |
| 33 | | void naomi_g1_device::set_maincpu_tag(const char *_maincpu_tag) |
| 34 | | { |
| 35 | | maincpu_tag = _maincpu_tag; |
| 36 | | } |
| 37 | | |
| 38 | 32 | void naomi_g1_device::device_start() |
| 39 | 33 | { |
| 40 | | cpu = machine().device<sh4_device>(maincpu_tag); |
| 41 | 34 | timer = timer_alloc(G1_TIMER_ID); |
| 42 | 35 | irq_cb.resolve_safe(); |
| 43 | 36 | |
| r23537 | r23538 | |
| 234 | 227 | |
| 235 | 228 | void naomi_g1_device::dma(void *dma_ptr, UINT32 main_adr, UINT32 size, bool to_mainram) |
| 236 | 229 | { |
| 237 | | sh4_ddt_dma ddt; |
| 238 | | if(to_mainram) |
| 239 | | ddt.destination = main_adr; |
| 240 | | else |
| 241 | | ddt.source = main_adr; |
| 242 | | ddt.buffer = dma_ptr; |
| 243 | | ddt.length = size >> 5; |
| 244 | | ddt.size = 32; |
| 245 | | ddt.direction = to_mainram; |
| 246 | | ddt.channel = -1; |
| 247 | | ddt.mode = -1; |
| 248 | | sh4_dma_ddt(cpu, &ddt); |
| 230 | if(!_dma_cb.isnull()) |
| 231 | _dma_cb(main_adr, dma_ptr, size >> 5, 32, to_mainram); |
| 249 | 232 | } |
trunk/src/mame/machine/naomig1.h
| r23537 | r23538 | |
| 2 | 2 | #define _NAOMIG1_H_ |
| 3 | 3 | |
| 4 | 4 | #include "cpu/sh4/sh4.h" |
| 5 | | #include "includes/dc.h" |
| 6 | 5 | |
| 7 | | #define MCFG_NAOMI_G1_ADD(_tag, type, _maincpu_tag, _irq_cb) \ |
| 6 | #define MCFG_NAOMI_G1_ADD(_tag, type, _irq_cb) \ |
| 8 | 7 | MCFG_DEVICE_ADD(_tag, type, 0) \ |
| 9 | | downcast<naomi_g1_device *>(device)->set_maincpu_tag(_maincpu_tag); \ |
| 10 | 8 | downcast<naomi_g1_device *>(device)->set_irq_cb(DEVCB2_ ## _irq_cb); |
| 11 | 9 | |
| 12 | 10 | class naomi_g1_device : public device_t |
| r23537 | r23538 | |
| 16 | 14 | DMA_GDROM_IRQ |
| 17 | 15 | }; |
| 18 | 16 | |
| 17 | typedef delegate<void (UINT32 main_adr, void *dma_ptr, UINT32 length, UINT32 size, bool to_mainram)> dma_cb; |
| 18 | |
| 19 | 19 | naomi_g1_device(const machine_config &mconfig, device_type type, const char *name, const char *tag, device_t *owner, UINT32 clock); |
| 20 | | void set_maincpu_tag(const char *maincpu_tag); |
| 21 | 20 | template<class _cb> void set_irq_cb(_cb cb) { irq_cb.set_callback(cb); } |
| 21 | void set_dma_cb(dma_cb _cb) { _dma_cb = _cb; } |
| 22 | 22 | |
| 23 | 23 | DECLARE_ADDRESS_MAP(amap, 32); |
| 24 | 24 | |
| r23537 | r23538 | |
| 61 | 61 | private: |
| 62 | 62 | UINT32 gdstar, gdlen, gddir, gden, gdst; |
| 63 | 63 | |
| 64 | | sh4_device *cpu; |
| 65 | 64 | const char *maincpu_tag; |
| 66 | 65 | emu_timer *timer; |
| 67 | 66 | devcb2_write8 irq_cb; |
| 67 | dma_cb _dma_cb; |
| 68 | 68 | |
| 69 | 69 | void dma(void *dma_ptr, UINT32 main_adr, UINT32 size, bool to_mainram); |
| 70 | 70 | }; |
trunk/src/mame/includes/dc.h
| r23537 | r23538 | |
| 8 | 8 | #define __DC_H__ |
| 9 | 9 | |
| 10 | 10 | #include "video/powervr2.h" |
| 11 | #include "machine/naomig1.h" |
| 11 | 12 | |
| 12 | 13 | class dc_state : public driver_device |
| 13 | 14 | { |
| r23537 | r23538 | |
| 20 | 21 | dc_ram(*this, "dc_ram"), |
| 21 | 22 | m_maincpu(*this, "maincpu"), |
| 22 | 23 | m_soundcpu(*this, "soundcpu"), |
| 23 | | m_powervr2(*this, "powervr2") { } |
| 24 | m_powervr2(*this, "powervr2"), |
| 25 | m_naomig1(*this, "rom_board") { } |
| 24 | 26 | |
| 25 | 27 | required_shared_ptr<UINT64> dc_framebuffer_ram; // '32-bit access area' |
| 26 | 28 | required_shared_ptr<UINT64> dc_texture_ram; // '64-bit access area' |
| r23537 | r23538 | |
| 47 | 49 | UINT8 sel; |
| 48 | 50 | }m_wave_dma; |
| 49 | 51 | |
| 50 | | /* video related */ |
| 51 | | |
| 52 | 52 | virtual void machine_start(); |
| 53 | 53 | virtual void machine_reset(); |
| 54 | 54 | TIMER_CALLBACK_MEMBER(aica_dma_irq); |
| r23537 | r23538 | |
| 82 | 82 | required_device<cpu_device> m_maincpu; |
| 83 | 83 | required_device<cpu_device> m_soundcpu; |
| 84 | 84 | required_device<powervr2_device> m_powervr2; |
| 85 | optional_device<naomi_g1_device> m_naomig1; |
| 86 | |
| 87 | void generic_dma(UINT32 main_adr, void *dma_ptr, UINT32 length, UINT32 size, bool to_mainram); |
| 85 | 88 | }; |
| 86 | 89 | |
| 87 | 90 | /*--------- Ch2-DMA Control Registers ----------*/ |