91
91
/*** SOUND *******************************************************************/
93
static WRITE16_HANDLER( sound_command_w )
93
WRITE16_MEMBER(suprslam_state::sound_command_w)
95
suprslam_state *state = space->machine().driver_data<suprslam_state>();
96
95
if (ACCESSING_BITS_0_7)
98
state->m_pending_command = 1;
99
soundlatch_w(space, offset, data & 0xff);
100
device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, PULSE_LINE);
97
m_pending_command = 1;
98
soundlatch_byte_w(space, offset, data & 0xff);
99
device_set_input_line(m_audiocpu, INPUT_LINE_NMI, PULSE_LINE);
105
static READ16_HANDLER( pending_command_r )
104
READ16_MEMBER(suprslam_state::pending_command_r)
107
suprslam_state *state = space->machine().driver_data<suprslam_state>();
108
106
return pending_command;
112
static WRITE8_HANDLER( pending_command_clear_w )
110
WRITE8_MEMBER(suprslam_state::pending_command_clear_w)
114
suprslam_state *state = space->machine().driver_data<suprslam_state>();
115
state->m_pending_command = 0;
112
m_pending_command = 0;
118
static WRITE8_HANDLER( suprslam_sh_bankswitch_w )
115
WRITE8_MEMBER(suprslam_state::suprslam_sh_bankswitch_w)
120
UINT8 *RAM = space->machine().region("audiocpu")->base();
117
UINT8 *RAM = memregion("audiocpu")->base();
123
120
bankaddress = 0x10000 + (data & 0x03) * 0x8000;
124
memory_set_bankptr(space->machine(), "bank1",&RAM[bankaddress]);
121
membank("bank1")->set_base(&RAM[bankaddress]);
127
124
/*** MEMORY MAPS *************************************************************/
129
static ADDRESS_MAP_START( suprslam_map, AS_PROGRAM, 16 )
126
static ADDRESS_MAP_START( suprslam_map, AS_PROGRAM, 16, suprslam_state )
130
127
AM_RANGE(0x000000, 0x0fffff) AM_ROM
131
AM_RANGE(0xfb0000, 0xfb1fff) AM_RAM AM_BASE_MEMBER(suprslam_state, m_spriteram)
132
AM_RANGE(0xfc0000, 0xfcffff) AM_RAM AM_BASE_MEMBER(suprslam_state, m_sp_videoram)
128
AM_RANGE(0xfb0000, 0xfb1fff) AM_RAM AM_SHARE("spriteram")
129
AM_RANGE(0xfc0000, 0xfcffff) AM_RAM AM_SHARE("sp_videoram")
133
130
AM_RANGE(0xfd0000, 0xfdffff) AM_RAM
134
AM_RANGE(0xfe0000, 0xfe0fff) AM_RAM_WRITE(suprslam_screen_videoram_w) AM_BASE_MEMBER(suprslam_state, m_screen_videoram)
135
AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE(suprslam_bg_videoram_w) AM_BASE_MEMBER(suprslam_state, m_bg_videoram)
136
AM_RANGE(0xff2000, 0xff203f) AM_RAM AM_BASE_MEMBER(suprslam_state,m_screen_vregs)
131
AM_RANGE(0xfe0000, 0xfe0fff) AM_RAM_WRITE(suprslam_screen_videoram_w) AM_SHARE("screen_videoram")
132
AM_RANGE(0xff0000, 0xff1fff) AM_RAM_WRITE(suprslam_bg_videoram_w) AM_SHARE("bg_videoram")
133
AM_RANGE(0xff2000, 0xff203f) AM_RAM AM_SHARE("screen_vregs")
137
134
// AM_RANGE(0xff3000, 0xff3001) AM_WRITENOP // sprite buffer trigger?
138
AM_RANGE(0xff8000, 0xff8fff) AM_DEVREADWRITE("k053936", k053936_linectrl_r, k053936_linectrl_w)
135
AM_RANGE(0xff8000, 0xff8fff) AM_DEVREADWRITE_LEGACY("k053936", k053936_linectrl_r, k053936_linectrl_w)
139
136
AM_RANGE(0xff9000, 0xff9001) AM_WRITE(sound_command_w)
140
AM_RANGE(0xffa000, 0xffafff) AM_RAM_WRITE(paletteram16_xGGGGGBBBBBRRRRR_word_w) AM_BASE_GENERIC(paletteram)
141
AM_RANGE(0xffd000, 0xffd01f) AM_DEVWRITE("k053936", k053936_ctrl_w)
137
AM_RANGE(0xffa000, 0xffafff) AM_RAM_WRITE(paletteram_xGGGGGBBBBBRRRRR_word_w) AM_SHARE("paletteram")
138
AM_RANGE(0xffd000, 0xffd01f) AM_DEVWRITE_LEGACY("k053936", k053936_ctrl_w)
142
139
AM_RANGE(0xffe000, 0xffe001) AM_WRITE(suprslam_bank_w)
143
140
AM_RANGE(0xfff000, 0xfff001) AM_READ_PORT("P1")
144
141
AM_RANGE(0xfff002, 0xfff003) AM_READ_PORT("P2")
145
142
AM_RANGE(0xfff004, 0xfff005) AM_READ_PORT("SYSTEM")
146
143
AM_RANGE(0xfff006, 0xfff007) AM_READ_PORT("DSW1")
147
144
AM_RANGE(0xfff008, 0xfff009) AM_READ_PORT("DSW2")
148
AM_RANGE(0xfff00c, 0xfff00d) AM_WRITEONLY AM_BASE_MEMBER(suprslam_state, m_spr_ctrl)
145
AM_RANGE(0xfff00c, 0xfff00d) AM_WRITEONLY AM_SHARE("spr_ctrl")
151
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8 )
148
static ADDRESS_MAP_START( sound_map, AS_PROGRAM, 8, suprslam_state )
152
149
AM_RANGE(0x0000, 0x77ff) AM_ROM
153
150
AM_RANGE(0x7800, 0x7fff) AM_RAM
154
151
AM_RANGE(0x8000, 0xffff) AM_ROMBANK("bank1")
157
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8 )
154
static ADDRESS_MAP_START( sound_io_map, AS_IO, 8, suprslam_state )
158
155
ADDRESS_MAP_GLOBAL_MASK(0xff)
159
156
AM_RANGE(0x00, 0x00) AM_WRITE(suprslam_sh_bankswitch_w)
160
AM_RANGE(0x04, 0x04) AM_READWRITE(soundlatch_r, pending_command_clear_w)
161
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE("ymsnd", ym2610_r, ym2610_w)
157
AM_RANGE(0x04, 0x04) AM_READ(soundlatch_byte_r) AM_WRITE(pending_command_clear_w)
158
AM_RANGE(0x08, 0x0b) AM_DEVREADWRITE_LEGACY("ymsnd", ym2610_r, ym2610_w)
164
161
/*** INPUT PORTS *************************************************************/