trunk/src/mame/drivers/hng64.c
| r26581 | r26582 | |
| 637 | 637 | /* Fatal Fury Wild Ambition / Buriki One */ |
| 638 | 638 | READ32_MEMBER(hng64_state::fight_io_r) |
| 639 | 639 | { |
| 640 | /* |
| 641 | TODO: reads to i/o but coins doesn't work? Let's put a cheap hack for now |
| 642 | */ |
| 643 | if(ioport("SYSTEM")->read() & 0x00030000 && m_mcu_type == BURIKI_MCU) |
| 644 | { |
| 645 | space.write_byte(0xf3ce4, 1); |
| 646 | } |
| 647 | |
| 640 | 648 | switch (offset*4) |
| 641 | 649 | { |
| 642 | | case 0x000: return 0x00000400; |
| 650 | case 0x000: return 0x00000400; |
| 643 | 651 | case 0x004: return ioport("SYSTEM")->read(); |
| 644 | 652 | case 0x008: return ioport("P1_P2")->read(); |
| 645 | 653 | case 0x600: return m_no_machine_error_code; |
| r26581 | r26582 | |
| 765 | 773 | |
| 766 | 774 | switch (m_mcu_type) |
| 767 | 775 | { |
| 768 | | case FIGHT_MCU: return fight_io_r(space, offset,0xffffffff); |
| 776 | case FIGHT_MCU: |
| 777 | case BURIKI_MCU: return fight_io_r(space, offset,0xffffffff); |
| 769 | 778 | case SHOOT_MCU: return shoot_io_r(space, offset,0xffffffff); |
| 770 | 779 | case RACING_MCU: return racing_io_r(space, offset,0xffffffff); |
| 771 | 780 | case SAMSHO_MCU: return samsho_io_r(space, offset,0xffffffff); |
| r26581 | r26582 | |
| 802 | 811 | return m_3d_1[offset]; |
| 803 | 812 | } |
| 804 | 813 | |
| 805 | | #ifdef UNUSED_FUNCTION |
| 806 | 814 | WRITE32_MEMBER(hng64_state::hng64_3d_1_w) |
| 807 | 815 | { |
| 808 | | fatalerror("WRITE32_HANDLER( hng64_3d_1_w )\n"); |
| 816 | COMBINE_DATA (&m_3d_1[offset]); |
| 809 | 817 | } |
| 810 | | #endif |
| 811 | 818 | |
| 812 | 819 | READ32_MEMBER(hng64_state::hng64_3d_2_r) |
| 813 | 820 | { |
| r26581 | r26582 | |
| 816 | 823 | |
| 817 | 824 | WRITE32_MEMBER(hng64_state::hng64_3d_2_w) |
| 818 | 825 | { |
| 819 | | COMBINE_DATA (&m_3d_1[offset]); |
| 820 | 826 | COMBINE_DATA (&m_3d_2[offset]); |
| 821 | 827 | } |
| 822 | 828 | |
| r26581 | r26582 | |
| 889 | 895 | WRITE32_MEMBER(hng64_state::dl_control_w) // This handles framebuffers |
| 890 | 896 | { |
| 891 | 897 | if(data & 2) // clear current buffer |
| 898 | { |
| 892 | 899 | clear3d(); |
| 900 | } |
| 893 | 901 | |
| 894 | 902 | // if(data & 1) // swap buffers |
| 895 | 903 | |
| r26581 | r26582 | |
| 944 | 952 | } |
| 945 | 953 | |
| 946 | 954 | /* Some games (namely sams64 after the title screen) tests bit 15 of this to be high, |
| 947 | | unknown purpose (vblank? related to the display list?). */ |
| 955 | unknown purpose (vblank? related to the display list?). |
| 956 | |
| 957 | bit 1 needs to be off, otherwise Fatal Fury WA locks up (FIFO full?) |
| 958 | */ |
| 948 | 959 | READ32_MEMBER(hng64_state::unk_vreg_r) |
| 949 | 960 | { |
| 950 | 961 | return ++m_unk_vreg_toggle; |
| r26581 | r26582 | |
| 1161 | 1172 | AM_RANGE(0x20200000, 0x20203fff) AM_RAM_WRITE(hng64_pal_w) AM_SHARE("paletteram") |
| 1162 | 1173 | AM_RANGE(0x20208000, 0x2020805f) AM_READWRITE(tcram_r, tcram_w) AM_SHARE("tcram") // Transition Control |
| 1163 | 1174 | AM_RANGE(0x20300000, 0x203001ff) AM_RAM_WRITE(dl_w) AM_SHARE("dl") // 3d Display List |
| 1164 | | AM_RANGE(0x20300200, 0x20300213) AM_WRITE(dl_upload_w) // 3d Display List Upload |
| 1175 | AM_RANGE(0x20300200, 0x20300203) AM_WRITE(dl_upload_w) // 3d Display List Upload |
| 1165 | 1176 | AM_RANGE(0x20300214, 0x20300217) AM_WRITE(dl_control_w) |
| 1166 | 1177 | AM_RANGE(0x20300218, 0x2030021b) AM_READ(unk_vreg_r) |
| 1167 | 1178 | |
| 1168 | 1179 | // 3d? |
| 1169 | 1180 | AM_RANGE(0x30000000, 0x3000002f) AM_RAM AM_SHARE("3dregs") |
| 1170 | | AM_RANGE(0x30100000, 0x3015ffff) AM_READWRITE(hng64_3d_1_r, hng64_3d_2_w) AM_SHARE("3d_1") // 3D Display Buffer A |
| 1181 | AM_RANGE(0x30100000, 0x3015ffff) AM_READWRITE(hng64_3d_1_r, hng64_3d_1_w) AM_SHARE("3d_1") // 3D Display Buffer A |
| 1171 | 1182 | AM_RANGE(0x30200000, 0x3025ffff) AM_READWRITE(hng64_3d_2_r, hng64_3d_2_w) AM_SHARE("3d_2") // 3D Display Buffer B |
| 1172 | 1183 | |
| 1173 | 1184 | // Sound |
| r26581 | r26582 | |
| 1631 | 1642 | m_mcu_type = FIGHT_MCU; |
| 1632 | 1643 | } |
| 1633 | 1644 | |
| 1645 | DRIVER_INIT_MEMBER(hng64_state,buriki) |
| 1646 | { |
| 1647 | DRIVER_INIT_CALL(hng64_fght); |
| 1648 | m_mcu_type = BURIKI_MCU; |
| 1649 | } |
| 1650 | |
| 1634 | 1651 | DRIVER_INIT_MEMBER(hng64_state,ss64) |
| 1635 | 1652 | { |
| 1636 | 1653 | DRIVER_INIT_CALL(hng64_fght); |
| r26581 | r26582 | |
| 2263 | 2280 | GAME( 1998, bbust2, hng64, hng64, bbust2, hng64_state, hng64_shoot, ROT0, "SNK", "Beast Busters 2nd Nightmare", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 004 */ |
| 2264 | 2281 | GAME( 1998, sams64_2, hng64, hng64, hng64, hng64_state, ss64, ROT0, "SNK", "Samurai Shodown: Warrior's Rage / Samurai Spirits 2: Asura Zanmaden", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 005 */ |
| 2265 | 2282 | GAME( 1998, fatfurwa, hng64, hng64, hng64, hng64_state, fatfurwa, ROT0, "SNK", "Fatal Fury: Wild Ambition (rev.A)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 006 */ |
| 2266 | | GAME( 1999, buriki, hng64, hng64, hng64, hng64_state, fatfurwa, ROT0, "SNK", "Buriki One (rev.B)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 007 */ |
| 2283 | GAME( 1999, buriki, hng64, hng64, hng64, hng64_state, buriki, ROT0, "SNK", "Buriki One (rev.B)", GAME_NOT_WORKING|GAME_NO_SOUND ) /* 007 */ |
trunk/src/mame/includes/hng64.h
| r26581 | r26582 | |
| 1 | 1 | #include "machine/msm6242.h" |
| 2 | 2 | |
| 3 | | #define FIGHT_MCU 1 |
| 4 | | #define SHOOT_MCU 2 |
| 5 | | #define RACING_MCU 3 |
| 6 | | #define SAMSHO_MCU 4 |
| 3 | enum |
| 4 | { |
| 5 | FIGHT_MCU = 1, |
| 6 | SHOOT_MCU, |
| 7 | RACING_MCU, |
| 8 | SAMSHO_MCU, |
| 9 | BURIKI_MCU |
| 10 | }; |
| 7 | 11 | |
| 12 | |
| 13 | |
| 8 | 14 | class hng64_state : public driver_device |
| 9 | 15 | { |
| 10 | 16 | public: |
| r26581 | r26582 | |
| 140 | 146 | DECLARE_WRITE32_MEMBER(hng64_dualport_w); |
| 141 | 147 | DECLARE_READ32_MEMBER(hng64_3d_1_r); |
| 142 | 148 | DECLARE_READ32_MEMBER(hng64_3d_2_r); |
| 149 | DECLARE_WRITE32_MEMBER(hng64_3d_1_w); |
| 143 | 150 | DECLARE_WRITE32_MEMBER(hng64_3d_2_w); |
| 144 | 151 | DECLARE_WRITE32_MEMBER(dl_w); |
| 145 | 152 | DECLARE_READ32_MEMBER(dl_r); |
| r26581 | r26582 | |
| 160 | 167 | DECLARE_WRITE32_MEMBER(hng64_sprite_clear_even_w); |
| 161 | 168 | DECLARE_WRITE32_MEMBER(hng64_sprite_clear_odd_w); |
| 162 | 169 | DECLARE_WRITE32_MEMBER(trap_write); |
| 163 | | DECLARE_WRITE32_MEMBER(hng64_3d_1_w); |
| 164 | 170 | DECLARE_WRITE32_MEMBER(activate_3d_buffer); |
| 165 | 171 | DECLARE_READ8_MEMBER(hng64_comm_shared_r); |
| 166 | 172 | DECLARE_WRITE8_MEMBER(hng64_comm_shared_w); |
| r26581 | r26582 | |
| 171 | 177 | DECLARE_WRITE8_MEMBER(hng64_comm_mmu_w); |
| 172 | 178 | DECLARE_DRIVER_INIT(hng64_race); |
| 173 | 179 | DECLARE_DRIVER_INIT(fatfurwa); |
| 180 | DECLARE_DRIVER_INIT(buriki); |
| 174 | 181 | DECLARE_DRIVER_INIT(hng64); |
| 175 | 182 | DECLARE_DRIVER_INIT(hng64_shoot); |
| 176 | 183 | DECLARE_DRIVER_INIT(ss64); |