trunk/src/mame/drivers/coolridr.c
| r20317 | r20318 | |
| 11 | 11 | - video emulation is pratically non-existant; |
| 12 | 12 | - SCSP; |
| 13 | 13 | - Many SH-1 ports needs investigations; |
| 14 | - i8237 purpose is unknown, might even not be at the right place ... |
| 14 | 15 | - IRQ generation |
| 15 | 16 | - Understand & remove the hacks at the bottom; |
| 16 | 17 | - IC1/IC10 are currently unused, might contain sprite data / music data for the SCSP / chars for the |
| r20317 | r20318 | |
| 90 | 91 | JP* - 3x 2-pin jumpers. JP1 shorted, other jumpers open |
| 91 | 92 | MB84256 - Fujitsu MB84256 32k x8 SRAM (NDIP28) |
| 92 | 93 | MB89374 - Fujitsu MB89374 Data Link Controller (SDIP42) |
| 93 | | MB89237A- Fujitsu MB89237A 8-Bit Proprietary Microcontroller (?) (DIP40) |
| 94 | MB89237A- Fujitsu MB89237A 8-Bit Proprietary DMAC (?) (DIP40) |
| 94 | 95 | SN75179 - Texas Instruments SN75179 Differential Driver and Receiver Pair (DIP8) |
| 95 | 96 | |
| 96 | 97 | |
| r20317 | r20318 | |
| 250 | 251 | #include "cpu/sh2/sh2.h" |
| 251 | 252 | #include "cpu/m68000/m68000.h" |
| 252 | 253 | #include "sound/scsp.h" |
| 254 | #include "machine/am9517a.h" |
| 253 | 255 | |
| 254 | 256 | |
| 255 | 257 | class coolridr_state : public driver_device |
| r20317 | r20318 | |
| 269 | 271 | m_maincpu(*this, "maincpu"), |
| 270 | 272 | m_subcpu(*this,"sub"), |
| 271 | 273 | m_soundcpu(*this,"soundcpu"), |
| 274 | m_dmac(*this, "i8237"), |
| 272 | 275 | m_h1_vram(*this, "h1_vram"), |
| 273 | 276 | m_h1_charram(*this, "h1_charram"), |
| 274 | 277 | m_framebuffer_vram(*this, "fb_vram"), |
| 275 | 278 | m_txt_vram(*this, "txt_vram"), |
| 276 | 279 | m_sysh1_txt_blit(*this, "sysh1_txt_blit"), |
| 277 | 280 | m_sysh1_workram_h(*this, "sysh1_workrah"), |
| 278 | | m_h1_unk(*this, "h1_unk"){ } |
| 281 | m_h1_unk(*this, "h1_unk") |
| 282 | { } |
| 279 | 283 | |
| 280 | 284 | // Blitter state |
| 281 | 285 | UINT16 m_textBytesToWrite; |
| r20317 | r20318 | |
| 291 | 295 | required_device<cpu_device> m_maincpu; |
| 292 | 296 | required_device<cpu_device> m_subcpu; |
| 293 | 297 | required_device<cpu_device> m_soundcpu; |
| 298 | required_device<am9517a_device> m_dmac; |
| 294 | 299 | |
| 295 | 300 | required_shared_ptr<UINT32> m_h1_vram; |
| 296 | 301 | required_shared_ptr<UINT32> m_h1_charram; |
| r20317 | r20318 | |
| 401 | 406 | /* unknown purpose */ |
| 402 | 407 | READ32_MEMBER(coolridr_state::sysh1_unk_r) |
| 403 | 408 | { |
| 404 | | switch(offset) |
| 405 | | { |
| 406 | | case 0x08/4: |
| 407 | | { |
| 408 | | m_vblank^=1; |
| 409 | | |
| 410 | | return (m_h1_unk[offset] & 0xfdffffff) | (m_vblank<<25); |
| 411 | | } |
| 412 | | case 0x14/4: |
| 413 | | return m_h1_unk[offset]; |
| 414 | | //case 0x20/4: |
| 415 | | } |
| 416 | | |
| 417 | | return 0xffffffff;//m_h1_unk[offset]; |
| 409 | return m_h1_unk[offset]; |
| 418 | 410 | } |
| 419 | 411 | |
| 420 | 412 | WRITE32_MEMBER(coolridr_state::sysh1_unk_w) |
| r20317 | r20318 | |
| 726 | 718 | AM_RANGE(0x03208900, 0x03208903) AM_RAM /*???*/ |
| 727 | 719 | AM_RANGE(0x03300400, 0x03300403) AM_RAM /*irq enable?*/ |
| 728 | 720 | |
| 729 | | AM_RANGE(0x04000000, 0x0400003f) AM_READWRITE(sysh1_unk_r,sysh1_unk_w) AM_SHARE("h1_unk") |
| 730 | | AM_RANGE(0x04200000, 0x0420003f) AM_RAM /*???*/ |
| 721 | AM_RANGE(0x04000000, 0x0400001f) AM_DEVREADWRITE8("i8237", am9517a_device, read, write, 0xffffffff) |
| 722 | AM_RANGE(0x04000020, 0x0400003f) AM_READWRITE(sysh1_unk_r,sysh1_unk_w) AM_SHARE("h1_unk") |
| 723 | AM_RANGE(0x04200000, 0x0420003f) AM_RAM /* hi-word for DMA? */ |
| 731 | 724 | |
| 732 | 725 | AM_RANGE(0x05000000, 0x05000fff) AM_RAM |
| 733 | 726 | AM_RANGE(0x05200000, 0x052001ff) AM_RAM |
| 734 | 727 | AM_RANGE(0x05300000, 0x0530ffff) AM_RAM AM_SHARE("share3") /*Communication area RAM*/ |
| 735 | 728 | AM_RANGE(0x05ff0000, 0x05ffffff) AM_RAM /*???*/ |
| 736 | | AM_RANGE(0x06000000, 0x06000fff) AM_RAM //UART TX/RX ports |
| 729 | AM_RANGE(0x06000000, 0x06000fff) AM_RAM //? |
| 737 | 730 | AM_RANGE(0x06100000, 0x06100003) AM_READ_PORT("IN0") AM_WRITENOP |
| 738 | 731 | AM_RANGE(0x06100004, 0x06100007) AM_READ_PORT("IN1") |
| 739 | 732 | AM_RANGE(0x06100008, 0x0610000b) AM_READ_PORT("IN5") |
| r20317 | r20318 | |
| 1161 | 1154 | machine().device("soundcpu")->execute().set_input_line(INPUT_LINE_HALT, ASSERT_LINE); |
| 1162 | 1155 | } |
| 1163 | 1156 | |
| 1157 | |
| 1158 | static I8237_INTERFACE( dmac_intf ) |
| 1159 | { |
| 1160 | DEVCB_NULL, //DEVCB_DRIVER_LINE_MEMBER(coolridr_state, coolridr_dma_hrq_changed), |
| 1161 | DEVCB_NULL, //DEVCB_DRIVER_LINE_MEMBER(coolridr_state, coolridr_tc_w), |
| 1162 | DEVCB_NULL, //DEVCB_DRIVER_MEMBER(coolridr_state, coolridr_dma_read_byte), |
| 1163 | DEVCB_NULL,//DEVCB_DRIVER_MEMBER(coolridr_state, coolridr_dma_write_byte), |
| 1164 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, |
| 1165 | { DEVCB_NULL, DEVCB_NULL, DEVCB_NULL, DEVCB_NULL }, |
| 1166 | { DEVCB_NULL /*DEVCB_DRIVER_LINE_MEMBER(coolridr_state, coolridr_dack0_w)*/, |
| 1167 | DEVCB_NULL/*DEVCB_DRIVER_LINE_MEMBER(coolridr_state, coolridr_dack1_w)*/, |
| 1168 | DEVCB_NULL/*DEVCB_DRIVER_LINE_MEMBER(coolridr_state, coolridr_dack2_w)*/, |
| 1169 | DEVCB_NULL/*DEVCB_DRIVER_LINE_MEMBER(coolridr_state, coolridr_dack3_w)*/ } |
| 1170 | }; |
| 1171 | |
| 1172 | #define MAIN_CLOCK XTAL_28_63636MHz |
| 1173 | |
| 1164 | 1174 | static MACHINE_CONFIG_START( coolridr, coolridr_state ) |
| 1165 | | MCFG_CPU_ADD("maincpu", SH2, 28000000) // 28 mhz |
| 1175 | MCFG_CPU_ADD("maincpu", SH2, MAIN_CLOCK) // 28 mhz |
| 1166 | 1176 | MCFG_CPU_PROGRAM_MAP(system_h1_map) |
| 1167 | 1177 | MCFG_CPU_VBLANK_INT_DRIVER("screen", coolridr_state, system_h1) |
| 1168 | 1178 | |
| r20317 | r20318 | |
| 1173 | 1183 | MCFG_CPU_PROGRAM_MAP(coolridr_submap) |
| 1174 | 1184 | MCFG_TIMER_DRIVER_ADD_SCANLINE("scantimer", coolridr_state, system_h1_sub, "screen", 0, 1) |
| 1175 | 1185 | |
| 1186 | MCFG_I8237_ADD("i8237", MAIN_CLOCK, dmac_intf) |
| 1187 | |
| 1176 | 1188 | MCFG_GFXDECODE(coolridr) |
| 1177 | 1189 | |
| 1178 | 1190 | MCFG_SCREEN_ADD("screen", RASTER) |