71
71
static WRITE8_DEVICE_HANDLER( toki_adpcm_control_w )
74
UINT8 *RAM = device->machine().region("audiocpu")->base();
74
UINT8 *RAM = device->machine().root_device().memregion("audiocpu")->base();
77
77
/* the code writes either 2 or 3 in the bottom two bits */
78
78
bankaddress = 0x10000 + (data & 0x01) * 0x4000;
79
memory_set_bankptr(device->machine(), "bank1",&RAM[bankaddress]);
79
device->machine().root_device().membank("bank1")->set_base(&RAM[bankaddress]);
81
81
msm5205_reset_w(device,data & 0x08);
84
static WRITE8_HANDLER( toki_adpcm_data_w )
84
WRITE8_MEMBER(toki_state::toki_adpcm_data_w)
86
toki_state *state = space->machine().driver_data<toki_state>();
87
state->m_msm5205next = data;
91
90
/*****************************************************************************/
93
static ADDRESS_MAP_START( toki_map, AS_PROGRAM, 16 )
92
static ADDRESS_MAP_START( toki_map, AS_PROGRAM, 16, toki_state )
94
93
AM_RANGE(0x000000, 0x05ffff) AM_ROM
95
94
AM_RANGE(0x060000, 0x06d7ff) AM_RAM
96
AM_RANGE(0x06d800, 0x06dfff) AM_RAM AM_BASE_SIZE_GENERIC(spriteram)
97
AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram)
98
AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_BASE_MEMBER(toki_state, m_background1_videoram16)
99
AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_BASE_MEMBER(toki_state, m_background2_videoram16)
100
AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_BASE_MEMBER(toki_state, m_videoram)
101
AM_RANGE(0x080000, 0x08000d) AM_READWRITE(seibu_main_word_r, seibu_main_word_w)
102
AM_RANGE(0x0a0000, 0x0a005f) AM_WRITE(toki_control_w) AM_BASE_MEMBER(toki_state, m_scrollram16)
95
AM_RANGE(0x06d800, 0x06dfff) AM_RAM AM_SHARE("spriteram")
96
AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
97
AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_SHARE("bg1_vram16")
98
AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_SHARE("bg2_vram16")
99
AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_SHARE("videoram")
100
AM_RANGE(0x080000, 0x08000d) AM_READWRITE_LEGACY(seibu_main_word_r, seibu_main_word_w)
101
AM_RANGE(0x0a0000, 0x0a005f) AM_WRITE(toki_control_w) AM_SHARE("scrollram16")
103
102
AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("DSW")
104
103
AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("INPUTS")
105
104
AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("SYSTEM")
108
107
/* In the bootleg, sound and sprites are remapped to 0x70000 */
109
static ADDRESS_MAP_START( tokib_map, AS_PROGRAM, 16 )
108
static ADDRESS_MAP_START( tokib_map, AS_PROGRAM, 16, toki_state )
110
109
AM_RANGE(0x000000, 0x05ffff) AM_ROM
111
110
AM_RANGE(0x060000, 0x06dfff) AM_RAM
112
AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram16_xxxxBBBBGGGGRRRR_word_w) AM_BASE_GENERIC(paletteram)
113
AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_BASE_MEMBER(toki_state, m_background1_videoram16)
114
AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_BASE_MEMBER(toki_state, m_background2_videoram16)
115
AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_BASE_MEMBER(toki_state, m_videoram)
111
AM_RANGE(0x06e000, 0x06e7ff) AM_RAM_WRITE(paletteram_xxxxBBBBGGGGRRRR_word_w) AM_SHARE("paletteram")
112
AM_RANGE(0x06e800, 0x06efff) AM_RAM_WRITE(toki_background1_videoram16_w) AM_SHARE("bg1_vram16")
113
AM_RANGE(0x06f000, 0x06f7ff) AM_RAM_WRITE(toki_background2_videoram16_w) AM_SHARE("bg2_vram16")
114
AM_RANGE(0x06f800, 0x06ffff) AM_RAM_WRITE(toki_foreground_videoram16_w) AM_SHARE("videoram")
116
115
AM_RANGE(0x071000, 0x071001) AM_WRITENOP /* sprite related? seems another scroll register */
117
116
/* gets written the same value as 75000a (bg2 scrollx) */
118
117
AM_RANGE(0x071804, 0x071807) AM_WRITENOP /* sprite related, always 01be0100 */
119
AM_RANGE(0x07180e, 0x071e45) AM_WRITEONLY AM_BASE_SIZE_GENERIC(spriteram)
118
AM_RANGE(0x07180e, 0x071e45) AM_WRITEONLY AM_SHARE("spriteram")
120
119
AM_RANGE(0x072000, 0x072001) AM_READ(watchdog_reset16_r) /* probably */
121
120
AM_RANGE(0x075000, 0x075001) AM_WRITE(tokib_soundcommand16_w)
122
AM_RANGE(0x075004, 0x07500b) AM_WRITEONLY AM_BASE_MEMBER(toki_state, m_scrollram16)
121
AM_RANGE(0x075004, 0x07500b) AM_WRITEONLY AM_SHARE("scrollram16")
123
122
AM_RANGE(0x0c0000, 0x0c0001) AM_READ_PORT("DSW")
124
123
AM_RANGE(0x0c0002, 0x0c0003) AM_READ_PORT("INPUTS")
125
124
AM_RANGE(0x0c0004, 0x0c0005) AM_READ_PORT("SYSTEM")
131
130
/*****************************************************************************/
133
static ADDRESS_MAP_START( tokib_audio_map, AS_PROGRAM, 8 )
132
static ADDRESS_MAP_START( tokib_audio_map, AS_PROGRAM, 8, toki_state )
134
133
AM_RANGE(0x0000, 0x7fff) AM_ROM
135
134
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank1")
136
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE("msm", toki_adpcm_control_w) /* MSM5205 + ROM bank */
135
AM_RANGE(0xe000, 0xe000) AM_DEVWRITE_LEGACY("msm", toki_adpcm_control_w) /* MSM5205 + ROM bank */
137
136
AM_RANGE(0xe400, 0xe400) AM_WRITE(toki_adpcm_data_w)
138
AM_RANGE(0xec00, 0xec01) AM_MIRROR(0x0008) AM_DEVREADWRITE("ymsnd", ym3812_r, ym3812_w)
137
AM_RANGE(0xec00, 0xec01) AM_MIRROR(0x0008) AM_DEVREADWRITE_LEGACY("ymsnd", ym3812_r, ym3812_w)
139
138
AM_RANGE(0xf000, 0xf7ff) AM_RAM
140
AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_r)
139
AM_RANGE(0xf800, 0xf800) AM_READ(soundlatch_byte_r)
143
142
/*****************************************************************************/