trunk/src/mame/drivers/coolridr.c
| r21192 | r21193 | |
| 322 | 322 | UINT8 m_vblank; |
| 323 | 323 | int m_scsp_last_line; |
| 324 | 324 | UINT8 an_mux_data; |
| 325 | UINT8 sound_data; |
| 325 | 326 | |
| 326 | | |
| 327 | 327 | DECLARE_READ32_MEMBER(sysh1_unk_r); |
| 328 | 328 | DECLARE_WRITE32_MEMBER(sysh1_unk_w); |
| 329 | 329 | DECLARE_READ32_MEMBER(sysh1_ioga_r); |
| r21192 | r21193 | |
| 341 | 341 | DECLARE_READ8_MEMBER(analog_mux_r); |
| 342 | 342 | DECLARE_WRITE8_MEMBER(analog_mux_w); |
| 343 | 343 | DECLARE_WRITE8_MEMBER(lamps_w); |
| 344 | DECLARE_WRITE8_MEMBER(sound_to_sh1_w); |
| 344 | 345 | DECLARE_WRITE_LINE_MEMBER(scsp_to_main_irq); |
| 345 | 346 | DECLARE_DRIVER_INIT(coolridr); |
| 346 | 347 | virtual void machine_start(); |
| r21192 | r21193 | |
| 459 | 460 | /* unknown purpose */ |
| 460 | 461 | READ32_MEMBER(coolridr_state::sysh1_unk_r) |
| 461 | 462 | { |
| 463 | if(offset == 8) |
| 464 | return sound_data; |
| 465 | |
| 466 | if(offset != 2) |
| 467 | printf("%08x\n",offset); |
| 468 | |
| 462 | 469 | return m_h1_unk[offset]; |
| 463 | 470 | } |
| 464 | 471 | |
| 465 | 472 | WRITE32_MEMBER(coolridr_state::sysh1_unk_w) |
| 466 | 473 | { |
| 474 | if(offset != 8) // 8 = sound irq ack? |
| 475 | printf("%08x %08x\n",offset,data); |
| 476 | |
| 467 | 477 | COMBINE_DATA(&m_h1_unk[offset]); |
| 468 | 478 | } |
| 469 | 479 | |
| r21192 | r21193 | |
| 944 | 954 | AM_RANGE(0x03200000, 0x0327ffff) AM_READWRITE16(h1_soundram2_r, h1_soundram2_w,0xffffffff) //AM_SHARE("soundram2") |
| 945 | 955 | AM_RANGE(0x03300000, 0x03300fff) AM_DEVREADWRITE16_LEGACY("scsp2", scsp_r, scsp_w, 0xffffffff) |
| 946 | 956 | |
| 947 | | AM_RANGE(0x04000000, 0x0400001f) AM_DEVREADWRITE8("i8237", am9517a_device, read, write, 0xffffffff) |
| 948 | | AM_RANGE(0x04000020, 0x0400003f) AM_READWRITE(sysh1_unk_r,sysh1_unk_w) AM_SHARE("h1_unk") |
| 949 | | AM_RANGE(0x04200000, 0x0420003f) AM_RAM /* hi-word for DMA? */ |
| 957 | // AM_RANGE(0x04000000, 0x0400001f) AM_DEVREADWRITE8("i8237", am9517a_device, read, write, 0xffffffff) |
| 958 | AM_RANGE(0x04000000, 0x0400003f) AM_READWRITE(sysh1_unk_r,sysh1_unk_w) AM_SHARE("h1_unk") |
| 959 | // AM_RANGE(0x04200000, 0x0420003f) AM_RAM |
| 950 | 960 | |
| 951 | 961 | AM_RANGE(0x05000000, 0x05000fff) AM_RAM |
| 952 | 962 | AM_RANGE(0x05200000, 0x052001ff) AM_RAM |
| r21192 | r21193 | |
| 967 | 977 | AM_RANGE(0x60000000, 0x600003ff) AM_WRITENOP |
| 968 | 978 | ADDRESS_MAP_END |
| 969 | 979 | |
| 970 | | // SH-1 or SH-2 almost certainly copies the program down to here: the ROM containing the program is 32-bit wide and the 68000 is 16-bit |
| 971 | | // the SCSP is believed to be hardcoded to decode the first 4 MB like this for a master/slave config |
| 972 | | // (see also Model 3): |
| 980 | WRITE8_MEMBER( coolridr_state::sound_to_sh1_w) |
| 981 | { |
| 982 | sound_data = data; |
| 983 | } |
| 984 | |
| 973 | 985 | static ADDRESS_MAP_START( system_h1_sound_map, AS_PROGRAM, 16, coolridr_state ) |
| 974 | 986 | AM_RANGE(0x000000, 0x07ffff) AM_RAM AM_REGION("scsp1",0) AM_SHARE("soundram") |
| 975 | 987 | AM_RANGE(0x100000, 0x100fff) AM_DEVREADWRITE_LEGACY("scsp1", scsp_r, scsp_w) |
| 976 | 988 | AM_RANGE(0x200000, 0x27ffff) AM_RAM AM_REGION("scsp2",0) AM_SHARE("soundram2") |
| 977 | 989 | AM_RANGE(0x300000, 0x300fff) AM_DEVREADWRITE_LEGACY("scsp2", scsp_r, scsp_w) |
| 978 | 990 | AM_RANGE(0x800000, 0x80ffff) AM_RAM |
| 979 | | AM_RANGE(0x900000, 0x900001) AM_WRITENOP |
| 991 | AM_RANGE(0x900000, 0x900001) AM_WRITE8(sound_to_sh1_w,0x00ff) |
| 980 | 992 | ADDRESS_MAP_END |
| 981 | 993 | |
| 982 | 994 | |
| r21192 | r21193 | |
| 1438 | 1450 | static const scsp_interface scsp2_interface = |
| 1439 | 1451 | { |
| 1440 | 1452 | 0, |
| 1441 | | NULL |
| 1453 | NULL, |
| 1454 | DEVCB_DRIVER_LINE_MEMBER(coolridr_state, scsp_to_main_irq) |
| 1442 | 1455 | }; |
| 1443 | 1456 | |
| 1444 | 1457 | #define MAIN_CLOCK XTAL_28_63636MHz |