* Main CPU memory handlers * *************************************/ static ADDRESS_MAP_START( main_map, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x1fff) AM_ROM AM_RANGE(0x2000, 0x23ff) AM_RAM AM_RANGE(0x4000, 0x47ff) AM_ROM AM_RANGE(0x8000, 0x97ff) AM_WRITE(clayshoo_videoram_w) /* 6k of video ram according to readme */ AM_RANGE(0x9800, 0xa800) AM_WRITE(MWA8_NOP) /* not really mapped, but cleared */ AM_RANGE(0xc800, 0xc800) AM_READWRITE(clayshoo_analog_r, clayshoo_analog_reset_w) ADDRESS_MAP_END static ADDRESS_MAP_START( main_io_map, ADDRESS_SPACE_IO, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(8) ) AM_RANGE(0x00, 0x00) AM_WRITE(watchdog_reset_w) AM_RANGE(0x20, 0x23) AM_READWRITE(ppi8255_0_r, ppi8255_0_w) AM_RANGE(0x30, 0x33) AM_READWRITE(ppi8255_1_r, ppi8255_1_w) ADDRESS_MAP_END /************************************* * * Port definitions * *************************************/ INPUT_PORTS_START( clayshoo ) PORT_START_TAG("IN0")
AM_RANGE(0x8000, 0xa7ff) AM_READ(shared_r) AM_RANGE(0xa800, 0xbfff) AM_READ(MRA8_RAM) AM_RANGE(0xc000, 0xc000) AM_READ(kiki_2203_r) //AT AM_RANGE(0xc001, 0xc001) AM_READ(YM2203_read_port_0_r) ADDRESS_MAP_END static ADDRESS_MAP_START( sound_writemem, ADDRESS_SPACE_PROGRAM, 8 ) AM_RANGE(0x0000, 0x7fff) AM_WRITE(MWA8_ROM) AM_RANGE(0x8000, 0xa7ff) AM_WRITE(shared_w) AM_RANGE(0xa800, 0xbfff) AM_WRITE(MWA8_RAM) AM_RANGE(0xc000, 0xc000) AM_WRITE(YM2203_control_port_0_w) AM_RANGE(0xc001, 0xc001) AM_WRITE(YM2203_write_port_0_w) ADDRESS_MAP_END static ADDRESS_MAP_START( m68705_readmem, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(11) ) AM_RANGE(0x0000, 0x0000) AM_READ(mexico86_68705_portA_r) AM_RANGE(0x0001, 0x0001) AM_READ(mexico86_68705_portB_r) AM_RANGE(0x0002, 0x0002) AM_READ(input_port_0_r) /* COIN */ AM_RANGE(0x0010, 0x007f) AM_READ(MRA8_RAM) AM_RANGE(0x0080, 0x07ff) AM_READ(MRA8_ROM) ADDRESS_MAP_END static ADDRESS_MAP_START( m68705_writemem, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(11) ) AM_RANGE(0x0000, 0x0000) AM_WRITE(mexico86_68705_portA_w) AM_RANGE(0x0001, 0x0001) AM_WRITE(mexico86_68705_portB_w) AM_RANGE(0x0004, 0x0004) AM_WRITE(mexico86_68705_ddrA_w) AM_RANGE(0x0005, 0x0005) AM_WRITE(mexico86_68705_ddrB_w) AM_RANGE(0x000a, 0x000a) AM_WRITE(MWA8_NOP) /* looks like a bug in the code, writes to */ /* 0x0a (=10dec) instead of 0x10 */
static WRITE8_HANDLER( firetrk_out_w ) { if (GAME_IS_FIRETRUCK || GAME_IS_MONTECARLO) { write_output(data); } if (GAME_IS_SUPERBUG) { write_output(offset); } } static ADDRESS_MAP_START( firetrk_map, ADDRESS_SPACE_PROGRAM, 8 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(14) ) AM_RANGE(0x0000, 0x00ff) AM_MIRROR(0x700) AM_RAM AM_BASE(&firetrk_alpha_num_ram) AM_RANGE(0x0800, 0x08ff) AM_MIRROR(0x700) AM_READWRITE(MRA8_RAM, firetrk_playfield_w) AM_BASE(&firetrk_playfield_ram) AM_RANGE(0x1000, 0x1000) AM_MIRROR(0x1f) AM_WRITE(firetrk_vert_w) AM_RANGE(0x1020, 0x1020) AM_MIRROR(0x1f) AM_WRITE(firetrk_horz_w) AM_RANGE(0x1040, 0x1040) AM_MIRROR(0x1f) AM_WRITE(firetrk_crash_reset_w) AM_RANGE(0x1060, 0x1060) AM_MIRROR(0x1f) AM_WRITE(firetrk_skid_reset_w) AM_RANGE(0x1080, 0x1080) AM_MIRROR(0x1f) AM_WRITE(firetrk_car_rot_w) AM_RANGE(0x10a0, 0x10a0) AM_MIRROR(0x1f) AM_WRITE(firetrk_steer_reset_w) AM_RANGE(0x10c0, 0x10c0) AM_MIRROR(0x1f) AM_WRITE(watchdog_reset_w) AM_RANGE(0x10e0, 0x10e0) AM_MIRROR(0x1f) AM_WRITE(firetrk_arrow_off_w) AM_RANGE(0x1400, 0x1400) AM_MIRROR(0x1f) AM_WRITE(firetrk_motor_snd_w) AM_RANGE(0x1420, 0x1420) AM_MIRROR(0x1f) AM_WRITE(firetrk_crash_snd_w) AM_RANGE(0x1440, 0x1440) AM_MIRROR(0x1f) AM_WRITE(firetrk_skid_snd_w) AM_RANGE(0x1460, 0x1460) AM_MIRROR(0x1f) AM_WRITE(firetrk_drone_hpos_w) AM_RANGE(0x1480, 0x1480) AM_MIRROR(0x1f) AM_WRITE(firetrk_drone_vpos_w)
{ if (ACCESSING_LSB && Machine->sample_rate) { soundlatch_w(0,data&0xff); cpunum_set_input_line(1, 0, PULSE_LINE); } } /* Lines starting with an empty comment in the following MemoryReadAddress arrays are there for debug (e.g. the game does not read from those ranges AFAIK) */ static ADDRESS_MAP_START( afega, ADDRESS_SPACE_PROGRAM, 16 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(20) ) AM_RANGE(0x000000, 0x07ffff) AM_ROM AM_RANGE(0x080000, 0x080001) AM_READ(input_port_0_word_r) // Buttons AM_RANGE(0x080002, 0x080003) AM_READ(input_port_1_word_r) // P1 + P2 AM_RANGE(0x080004, 0x080005) AM_READ(input_port_2_word_r) // 2 x DSW AM_RANGE(0x080012, 0x080013) AM_READ(afega_unknown_r) AM_RANGE(0x080000, 0x08001d) AM_WRITE(MWA16_RAM) // AM_RANGE(0x08001e, 0x08001f) AM_WRITE(afega_soundlatch_w) // To Sound CPU AM_RANGE(0x080020, 0x087fff) AM_WRITE(MWA16_RAM) // /**/AM_RANGE(0x088000, 0x0885ff) AM_READWRITE(MRA16_RAM, afega_palette_w) AM_BASE(&paletteram16) // Palette AM_RANGE(0x088600, 0x08bfff) AM_WRITE(MWA16_RAM) // /**/AM_RANGE(0x08c000, 0x08c003) AM_RAM AM_BASE(&afega_scroll_0) // Scroll /**/AM_RANGE(0x08c004, 0x08c007) AM_RAM AM_BASE(&afega_scroll_1) // AM_RANGE(0x08c008, 0x08ffff) AM_WRITE(MWA16_RAM) // /**/AM_RANGE(0x090000, 0x091fff) AM_READWRITE(MRA16_RAM, afega_vram_0_w) AM_BASE(&afega_vram_0) // Layer 0 /**/AM_RANGE(0x092000, 0x093fff) AM_RAM // ?
// 0x2000 -> vblank interrupt enable // 0x4000 -> set on every second frame - not used out = data; if (!(out & 0x2000) && interrupt_line_active) { cpunum_set_input_line(0, 1, CLEAR_LINE); interrupt_line_active = 0; } coin_counter_w(0, data & 0x80); } static ADDRESS_MAP_START( pkscramble_map, ADDRESS_SPACE_PROGRAM, 16 ) ADDRESS_MAP_FLAGS( AMEF_ABITS(19) ) AM_RANGE(0x000000, 0x01ffff) AM_ROM AM_RANGE(0x040000, 0x0400ff) AM_RAM AM_BASE(&generic_nvram16) AM_SIZE(&generic_nvram_size) AM_RANGE(0x041000, 0x043fff) AM_RAM // main ram AM_RANGE(0x044000, 0x044fff) AM_RAM AM_WRITE(pkscramble_fgtilemap_w) AM_BASE(&pkscramble_fgtilemap_ram) // fg tilemap AM_RANGE(0x045000, 0x045fff) AM_RAM AM_WRITE(pkscramble_mdtilemap_w) AM_BASE(&pkscramble_mdtilemap_ram) // md tilemap (just a copy of fg?) AM_RANGE(0x046000, 0x046fff) AM_RAM AM_WRITE(pkscramble_bgtilemap_w) AM_BASE(&pkscramble_bgtilemap_ram) // bg tilemap AM_RANGE(0x047000, 0x047fff) AM_RAM // unused AM_RANGE(0x048000, 0x048fff) AM_RAM AM_WRITE(paletteram16_xRRRRRGGGGGBBBBB_word_w) AM_BASE(&paletteram16) AM_RANGE(0x049000, 0x049001) AM_READ(input_port_0_word_r) AM_RANGE(0x049004, 0x049005) AM_READ(input_port_1_word_r) AM_RANGE(0x049008, 0x049009) AM_WRITE(pkscramble_output_w) AM_RANGE(0x049010, 0x049011) AM_WRITENOP AM_RANGE(0x049014, 0x049015) AM_WRITENOP AM_RANGE(0x049018, 0x049019) AM_WRITENOP AM_RANGE(0x04901c, 0x04901d) AM_WRITENOP