84
84
***************************************************************************/
86
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8 )
86
static ADDRESS_MAP_START( main_map, AS_PROGRAM, 8, simpsons_state )
87
87
AM_RANGE(0x0000, 0x0fff) AM_RAM
88
88
AM_RANGE(0x1f80, 0x1f80) AM_READ_PORT("COIN")
89
89
AM_RANGE(0x1f81, 0x1f81) AM_READ_PORT("TEST")
91
91
AM_RANGE(0x1f91, 0x1f91) AM_READ_PORT("P2")
92
92
AM_RANGE(0x1f92, 0x1f92) AM_READ_PORT("P3")
93
93
AM_RANGE(0x1f93, 0x1f93) AM_READ_PORT("P4")
94
AM_RANGE(0x1fa0, 0x1fa7) AM_DEVWRITE("k053246", k053246_w)
95
AM_RANGE(0x1fb0, 0x1fbf) AM_DEVWRITE("k053251", k053251_w)
94
AM_RANGE(0x1fa0, 0x1fa7) AM_DEVWRITE_LEGACY("k053246", k053246_w)
95
AM_RANGE(0x1fb0, 0x1fbf) AM_DEVWRITE_LEGACY("k053251", k053251_w)
96
96
AM_RANGE(0x1fc0, 0x1fc0) AM_WRITE(simpsons_coin_counter_w)
97
97
AM_RANGE(0x1fc2, 0x1fc2) AM_WRITE(simpsons_eeprom_w)
98
98
AM_RANGE(0x1fc4, 0x1fc4) AM_READ(simpsons_sound_interrupt_r)
99
AM_RANGE(0x1fc6, 0x1fc7) AM_DEVREADWRITE("k053260", simpsons_sound_r, k053260_w)
100
AM_RANGE(0x1fc8, 0x1fc9) AM_DEVREAD("k053246", k053246_r)
99
AM_RANGE(0x1fc6, 0x1fc7) AM_DEVREADWRITE_LEGACY("k053260", simpsons_sound_r, k053260_w)
100
AM_RANGE(0x1fc8, 0x1fc9) AM_DEVREAD_LEGACY("k053246", k053246_r)
101
101
AM_RANGE(0x1fca, 0x1fca) AM_READ(watchdog_reset_r)
102
102
AM_RANGE(0x2000, 0x3fff) AM_RAMBANK("bank4")
103
AM_RANGE(0x0000, 0x3fff) AM_DEVREADWRITE("k052109", k052109_r, k052109_w)
103
AM_RANGE(0x0000, 0x3fff) AM_DEVREADWRITE_LEGACY("k052109", k052109_r, k052109_w)
104
104
AM_RANGE(0x4000, 0x5fff) AM_RAM
105
105
AM_RANGE(0x6000, 0x7fff) AM_ROMBANK("bank1")
106
106
AM_RANGE(0x8000, 0xffff) AM_ROM
109
static WRITE8_HANDLER( z80_bankswitch_w )
109
WRITE8_MEMBER(simpsons_state::z80_bankswitch_w)
111
memory_set_bank(space->machine(), "bank2", data & 7);
111
membank("bank2")->set_entry(data & 7);
126
126
device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, ASSERT_LINE);
129
static WRITE8_HANDLER( z80_arm_nmi_w )
129
WRITE8_MEMBER(simpsons_state::z80_arm_nmi_w)
131
simpsons_state *state = space->machine().driver_data<simpsons_state>();
132
device_set_input_line(state->m_audiocpu, INPUT_LINE_NMI, CLEAR_LINE);
133
space->machine().scheduler().timer_set(attotime::from_usec(25), FUNC(nmi_callback)); /* kludge until the K053260 is emulated correctly */
131
device_set_input_line(m_audiocpu, INPUT_LINE_NMI, CLEAR_LINE);
132
machine().scheduler().timer_set(attotime::from_usec(25), FUNC(nmi_callback)); /* kludge until the K053260 is emulated correctly */
136
static ADDRESS_MAP_START( z80_map, AS_PROGRAM, 8 )
135
static ADDRESS_MAP_START( z80_map, AS_PROGRAM, 8, simpsons_state )
137
136
AM_RANGE(0x0000, 0x7fff) AM_ROM
138
137
AM_RANGE(0x8000, 0xbfff) AM_ROMBANK("bank2")
139
138
AM_RANGE(0xf000, 0xf7ff) AM_RAM
140
AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE("ymsnd", ym2151_r, ym2151_w)
139
AM_RANGE(0xf800, 0xf801) AM_DEVREADWRITE_LEGACY("ymsnd", ym2151_r, ym2151_w)
141
140
AM_RANGE(0xfa00, 0xfa00) AM_WRITE(z80_arm_nmi_w)
142
AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE("k053260", k053260_r, k053260_w)
141
AM_RANGE(0xfc00, 0xfc2f) AM_DEVREADWRITE_LEGACY("k053260", k053260_r, k053260_w)
143
142
AM_RANGE(0xfe00, 0xfe00) AM_WRITE(z80_bankswitch_w)
308
307
static MACHINE_CONFIG_START( simpsons, simpsons_state )
310
309
/* basic machine hardware */
311
MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/2/4) /* pin 18 of konami cpu is 12Mhz, while pin 17 is 3mhz. Clock probably divided internally by 4 */
310
MCFG_CPU_ADD("maincpu", KONAMI, XTAL_24MHz/8) /* 052001 (verified on pcb) */
312
311
MCFG_CPU_PROGRAM_MAP(main_map)
313
312
MCFG_CPU_VBLANK_INT("screen", simpsons_irq) /* IRQ triggered by the 052109, FIRQ by the sprite hardware */