trunk/src/mame/drivers/seibuspi.c
| r23472 | r23473 | |
| 843 | 843 | return 0xffffffff; |
| 844 | 844 | } |
| 845 | 845 | |
| 846 | | READ32_MEMBER(seibuspi_state::spi_unknown_r) |
| 846 | READ32_MEMBER(seibuspi_state::spi_nop_r) |
| 847 | 847 | { |
| 848 | // use this if return val must be high |
| 848 | 849 | return 0xffffffff; |
| 849 | 850 | } |
| 850 | 851 | |
| r23472 | r23473 | |
| 917 | 918 | |
| 918 | 919 | WRITE8_MEMBER(seibuspi_state::z80_bank_w) |
| 919 | 920 | { |
| 921 | // d0-d2: bank @ 8000 |
| 920 | 922 | int bank = data & 7; |
| 921 | 923 | |
| 922 | 924 | if (bank != m_z80_lastbank) |
| r23472 | r23473 | |
| 924 | 926 | m_z80_lastbank = bank; |
| 925 | 927 | membank("bank1")->set_entry(bank); |
| 926 | 928 | } |
| 929 | |
| 930 | // d3: watchdog? |
| 927 | 931 | } |
| 928 | 932 | |
| 929 | 933 | WRITE8_MEMBER(seibuspi_state::sb_coin_w) |
| r23472 | r23473 | |
| 949 | 953 | AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w) |
| 950 | 954 | AM_RANGE(0x0000050c, 0x0000050f) AM_WRITE(sprite_dma_start_w) |
| 951 | 955 | AM_RANGE(0x00000560, 0x00000563) AM_WRITE(sprite_dma_start_w) |
| 952 | | AM_RANGE(0x00000600, 0x00000603) AM_READ(spi_int_r) /* Clear Interrupt */ |
| 953 | | AM_RANGE(0x00000600, 0x00000603) AM_WRITENOP /* Unknown */ |
| 954 | | AM_RANGE(0x00000604, 0x00000607) AM_READ_PORT("INPUTS") /* Player controls */ |
| 955 | | AM_RANGE(0x00000608, 0x0000060b) AM_READ(spi_unknown_r) /* Unknown */ |
| 956 | | AM_RANGE(0x0000060c, 0x0000060f) AM_READ_PORT("SYSTEM") /* Player controls (start) */ |
| 956 | AM_RANGE(0x00000600, 0x00000603) AM_READ(spi_int_r) // Clear Interrupt |
| 957 | AM_RANGE(0x00000600, 0x00000603) AM_WRITENOP // Unknown |
| 958 | AM_RANGE(0x00000604, 0x00000607) AM_READ_PORT("INPUTS") // Player controls |
| 959 | AM_RANGE(0x00000608, 0x0000060b) AM_READ(spi_nop_r) // Unknown |
| 960 | AM_RANGE(0x0000060c, 0x0000060f) AM_READ_PORT("SYSTEM") // Player controls (start) |
| 957 | 961 | AM_RANGE(0x00000680, 0x00000683) AM_DEVREAD8("soundfifo2", fifo7200_device, data_byte_r, 0x000000ff) |
| 958 | 962 | AM_RANGE(0x00000680, 0x00000683) AM_DEVWRITE8("soundfifo1", fifo7200_device, data_byte_w, 0x000000ff) |
| 959 | 963 | AM_RANGE(0x00000684, 0x00000687) AM_READ8(sound_fifo_status_r, 0x000000ff) |
| 960 | | AM_RANGE(0x00000684, 0x00000687) AM_WRITENOP /* Unknown */ |
| 964 | AM_RANGE(0x00000684, 0x00000687) AM_WRITENOP // Unknown |
| 961 | 965 | AM_RANGE(0x00000688, 0x0000068b) AM_WRITE8(z80_prg_transfer_w, 0x000000ff) |
| 962 | 966 | AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(z80_enable_w, 0x000000ff) |
| 963 | 967 | AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(spi_set_layer_banks_w, 0x00ff0000) |
| r23472 | r23473 | |
| 968 | 972 | AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_SHARE("mainram") |
| 969 | 973 | AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share1") |
| 970 | 974 | AM_RANGE(0x00a00000, 0x013fffff) AM_ROM AM_REGION("sound01", 0) |
| 971 | | AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1") /* ROM location in real-mode */ |
| 975 | AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1") // ROM location in real-mode |
| 972 | 976 | ADDRESS_MAP_END |
| 973 | 977 | |
| 974 | 978 | static ADDRESS_MAP_START( spisound_map, AS_PROGRAM, 8, seibuspi_state ) |
| 975 | 979 | AM_RANGE(0x0000, 0x1fff) AM_ROM |
| 976 | 980 | AM_RANGE(0x2000, 0x3fff) AM_RAM |
| 977 | | AM_RANGE(0x4002, 0x4002) AM_WRITENOP /* Unknown */ |
| 978 | | AM_RANGE(0x4003, 0x4003) AM_WRITENOP /* Unknown */ |
| 979 | | AM_RANGE(0x4004, 0x4004) AM_WRITE(sb_coin_w) /* single board systems */ |
| 981 | AM_RANGE(0x4002, 0x4002) AM_WRITENOP // Unknown |
| 982 | AM_RANGE(0x4003, 0x4003) AM_WRITENOP // Unknown |
| 980 | 983 | AM_RANGE(0x4008, 0x4008) AM_DEVREAD("soundfifo1", fifo7200_device, data_byte_r) |
| 981 | 984 | AM_RANGE(0x4008, 0x4008) AM_DEVWRITE("soundfifo2", fifo7200_device, data_byte_w) |
| 982 | 985 | AM_RANGE(0x4009, 0x4009) AM_READ(z80_soundfifo_status_r) |
| 983 | 986 | AM_RANGE(0x400a, 0x400a) AM_READ_PORT("JP1") |
| 984 | | AM_RANGE(0x400b, 0x400b) AM_WRITENOP /* Unknown */ |
| 987 | AM_RANGE(0x400b, 0x400b) AM_WRITENOP // Unknown |
| 985 | 988 | AM_RANGE(0x4013, 0x4013) AM_READ_PORT("COIN") |
| 986 | | AM_RANGE(0x401b, 0x401b) AM_WRITE(z80_bank_w) /* control register: bits 0-2 = bank @ 8000, bit 3 = watchdog? */ |
| 989 | AM_RANGE(0x401b, 0x401b) AM_WRITE(z80_bank_w) |
| 987 | 990 | AM_RANGE(0x6000, 0x600f) AM_DEVREADWRITE("ymf", ymf271_device, read, write) |
| 988 | 991 | AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1") |
| 989 | 992 | ADDRESS_MAP_END |
| r23472 | r23473 | |
| 993 | 996 | |
| 994 | 997 | static ADDRESS_MAP_START( sxx2e_map, AS_PROGRAM, 32, seibuspi_state ) |
| 995 | 998 | AM_RANGE(0x00000680, 0x00000683) AM_READ8(sb_coin_r, 0x000000ff) |
| 996 | | AM_RANGE(0x00000688, 0x0000068b) AM_WRITENOP |
| 997 | | AM_RANGE(0x0000068c, 0x0000068f) AM_WRITENOP |
| 999 | AM_RANGE(0x00000684, 0x00000687) AM_READ(spi_nop_r) // No soundfifo2 |
| 1000 | AM_RANGE(0x00000688, 0x0000068b) AM_WRITENOP // No z80_prg_transfer |
| 1001 | AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(spi_set_layer_banks_w, 0x00ff0000) |
| 1002 | AM_RANGE(0x0000068c, 0x0000068f) AM_WRITENOP // No z80_enable |
| 998 | 1003 | AM_IMPORT_FROM( spi_map ) |
| 999 | 1004 | ADDRESS_MAP_END |
| 1000 | 1005 | |
| r23472 | r23473 | |
| 1003 | 1008 | AM_IMPORT_FROM( sxx2e_map ) |
| 1004 | 1009 | ADDRESS_MAP_END |
| 1005 | 1010 | |
| 1011 | static ADDRESS_MAP_START( sbsound_map, AS_PROGRAM, 8, seibuspi_state ) |
| 1012 | AM_RANGE(0x4004, 0x4004) AM_WRITE(sb_coin_w) |
| 1013 | AM_RANGE(0x4008, 0x4008) AM_WRITENOP // No soundfifo2 |
| 1014 | AM_IMPORT_FROM( spisound_map ) |
| 1015 | ADDRESS_MAP_END |
| 1006 | 1016 | |
| 1017 | |
| 1007 | 1018 | /********************************************************************/ |
| 1008 | 1019 | |
| 1009 | 1020 | static ADDRESS_MAP_START( seibu386_map, AS_PROGRAM, 32, seibuspi_state ) |
| r23472 | r23473 | |
| 1018 | 1029 | AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w) |
| 1019 | 1030 | AM_RANGE(0x0000050c, 0x0000050f) AM_WRITE(sprite_dma_start_w) |
| 1020 | 1031 | AM_RANGE(0x00000560, 0x00000563) AM_WRITE(sprite_dma_start_w) |
| 1021 | | AM_RANGE(0x00000600, 0x00000603) AM_READ(spi_int_r) /* Unknown */ |
| 1022 | | AM_RANGE(0x00000604, 0x00000607) AM_READ_PORT("INPUTS") /* Player controls */ |
| 1023 | | AM_RANGE(0x00000608, 0x0000060b) AM_READ(spi_unknown_r) |
| 1024 | | AM_RANGE(0x0000060c, 0x0000060f) AM_READ_PORT("SYSTEM") /* Player controls (start) */ |
| 1032 | AM_RANGE(0x00000600, 0x00000603) AM_READ(spi_int_r) // Unknown |
| 1033 | AM_RANGE(0x00000604, 0x00000607) AM_READ_PORT("INPUTS") // Player controls |
| 1034 | AM_RANGE(0x00000608, 0x0000060b) AM_READ(spi_nop_r) |
| 1035 | AM_RANGE(0x0000060c, 0x0000060f) AM_READ_PORT("SYSTEM") // Player controls (start) |
| 1025 | 1036 | AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(spi_layerbanks_eeprom_w, 0x00ff0000) |
| 1026 | 1037 | AM_RANGE(0x0000068c, 0x0000068f) AM_WRITE8(oki_bank_w, 0xff000000) |
| 1027 | 1038 | AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_SHARE("mainram") |
| 1028 | 1039 | AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share1") |
| 1029 | 1040 | AM_RANGE(0x01200000, 0x01200003) AM_DEVREADWRITE8("oki1", okim6295_device, read, write, 0x000000ff) |
| 1030 | 1041 | AM_RANGE(0x01200004, 0x01200007) AM_DEVREADWRITE8("oki2", okim6295_device, read, write, 0x000000ff) |
| 1031 | | AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1") /* ROM location in real-mode */ |
| 1042 | AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1") // ROM location in real-mode |
| 1032 | 1043 | ADDRESS_MAP_END |
| 1033 | 1044 | |
| 1034 | 1045 | |
| r23472 | r23473 | |
| 1036 | 1047 | |
| 1037 | 1048 | static ADDRESS_MAP_START( sys386f2_map, AS_PROGRAM, 32, seibuspi_state ) |
| 1038 | 1049 | AM_RANGE(0x00000000, 0x0000000f) AM_RAM |
| 1039 | | AM_RANGE(0x00000010, 0x00000013) AM_READ(spi_int_r) /* Unknown */ |
| 1040 | | AM_RANGE(0x00000090, 0x00000097) AM_RAM /* Unknown */ |
| 1050 | AM_RANGE(0x00000010, 0x00000013) AM_READ(spi_int_r) // Unknown |
| 1051 | AM_RANGE(0x00000090, 0x00000097) AM_RAM // Unknown |
| 1041 | 1052 | AM_RANGE(0x00000400, 0x00000403) AM_READNOP AM_WRITE(ejsakura_input_select_w) |
| 1042 | 1053 | AM_RANGE(0x00000404, 0x00000407) AM_WRITE8(eeprom_w, 0x000000ff) |
| 1043 | 1054 | AM_RANGE(0x00000408, 0x0000040f) AM_DEVWRITE8("ymz", ymz280b_device, write, 0x000000ff) |
| 1044 | 1055 | AM_RANGE(0x00000484, 0x00000487) AM_WRITE(palette_dma_start_w) |
| 1045 | 1056 | AM_RANGE(0x00000490, 0x00000493) AM_WRITE(video_dma_length_w) |
| 1046 | 1057 | AM_RANGE(0x00000494, 0x00000497) AM_WRITE(video_dma_address_w) |
| 1058 | AM_RANGE(0x00000500, 0x0000050b) AM_RAM // Unknown |
| 1047 | 1059 | AM_RANGE(0x0000050c, 0x0000050f) AM_WRITE(sprite_dma_start_w) |
| 1060 | AM_RANGE(0x00000510, 0x0000054f) AM_RAM // Unknown |
| 1048 | 1061 | AM_RANGE(0x00000560, 0x00000563) AM_WRITE(sprite_dma_start_w) |
| 1049 | 1062 | AM_RANGE(0x00000600, 0x00000607) AM_DEVREAD8("ymz", ymz280b_device, read, 0x000000ff) |
| 1050 | | AM_RANGE(0x00000608, 0x0000060b) AM_READ(spi_unknown_r) |
| 1051 | | AM_RANGE(0x0000060c, 0x0000060f) AM_READ_PORT("INPUTS") /* Player controls */ |
| 1063 | AM_RANGE(0x00000608, 0x0000060b) AM_READ(spi_nop_r) |
| 1064 | AM_RANGE(0x0000060c, 0x0000060f) AM_READ_PORT("INPUTS") // Player controls |
| 1052 | 1065 | AM_RANGE(0x00000800, 0x0003ffff) AM_RAM AM_SHARE("mainram") |
| 1053 | 1066 | AM_RANGE(0x00200000, 0x003fffff) AM_ROM AM_SHARE("share1") |
| 1054 | | AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1") /* ROM location in real-mode */ |
| 1067 | AM_RANGE(0xffe00000, 0xffffffff) AM_ROM AM_REGION("maincpu", 0) AM_SHARE("share1") // ROM location in real-mode |
| 1055 | 1068 | ADDRESS_MAP_END |
| 1056 | 1069 | |
| 1057 | 1070 | |
| r23472 | r23473 | |
| 1078 | 1091 | WRITE_LINE_MEMBER(seibuspi_state::ymf_irqhandler) |
| 1079 | 1092 | { |
| 1080 | 1093 | if (state) |
| 1081 | | m_audiocpu->set_input_line_and_vector(0, ASSERT_LINE, 0xd7); // IRQ is RST10 |
| 1094 | m_audiocpu->set_input_line_and_vector(0, ASSERT_LINE, 0xd7); // IRQ is RST10 |
| 1082 | 1095 | else |
| 1083 | 1096 | m_audiocpu->set_input_line(0, CLEAR_LINE); |
| 1084 | 1097 | } |
| r23472 | r23473 | |
| 1865 | 1878 | MCFG_CPU_MODIFY("maincpu") |
| 1866 | 1879 | MCFG_CPU_PROGRAM_MAP(sxx2e_map) |
| 1867 | 1880 | |
| 1881 | MCFG_CPU_MODIFY("audiocpu") |
| 1882 | MCFG_CPU_PROGRAM_MAP(sbsound_map) |
| 1883 | |
| 1868 | 1884 | MCFG_MACHINE_START_OVERRIDE(seibuspi_state, sxx2e) |
| 1869 | 1885 | MCFG_MACHINE_RESET_OVERRIDE(seibuspi_state, sxx2e) |
| 1870 | 1886 | |
| 1871 | 1887 | MCFG_DEVICE_REMOVE("soundflash1") |
| 1872 | 1888 | MCFG_DEVICE_REMOVE("soundflash2") |
| 1873 | 1889 | |
| 1890 | //MCFG_DEVICE_REMOVE("soundfifo2") |
| 1891 | |
| 1874 | 1892 | /* sound hardware */ |
| 1875 | 1893 | MCFG_SOUND_REPLACE("ymf", YMF271, XTAL_16_9344MHz) |
| 1876 | 1894 | MCFG_YMF271_IRQ_HANDLER(WRITELINE(seibuspi_state, ymf_irqhandler)) |