trunk/src/mame/machine/snes.c
| r21797 | r21798 | |
| 28 | 28 | #include "audio/snes_snd.h" |
| 29 | 29 | |
| 30 | 30 | |
| 31 | | /* -- Globals -- */ |
| 32 | | UINT8 *snes_ram = NULL; /* 65816 ram */ |
| 33 | | |
| 34 | 31 | #define DMA_REG(a) m_dma_regs[a - 0x4300] // regs 0x4300-0x437f |
| 35 | 32 | |
| 36 | | |
| 37 | 33 | void snes_state::video_start() |
| 38 | 34 | { |
| 39 | 35 | m_ppu.ppu_start(machine()); |
| r21797 | r21798 | |
| 1055 | 1051 | m_ppu.m_beam.current_vert = SNES_VTOTAL_PAL; |
| 1056 | 1052 | } |
| 1057 | 1053 | |
| 1058 | | #if 0 |
| 1059 | | DIRECT_UPDATE_MEMBER(snes_state::snes_spc_direct) |
| 1060 | | { |
| 1061 | | direct.explicit_configure(0x0000, 0xffff, 0xffff, spc_get_ram(machine().device("spc700"))); |
| 1062 | | return ~0; |
| 1063 | | } |
| 1064 | | #endif |
| 1065 | | |
| 1066 | | DIRECT_UPDATE_MEMBER(snes_state::snes_direct) |
| 1067 | | { |
| 1068 | | direct.explicit_configure(0x0000, 0xffff, 0xffff, snes_ram); |
| 1069 | | return ~0; |
| 1070 | | } |
| 1071 | | |
| 1072 | 1054 | MACHINE_START( snes ) |
| 1073 | 1055 | { |
| 1074 | 1056 | snes_state *state = machine.driver_data<snes_state>(); |
| r21797 | r21798 | |
| 1078 | 1060 | state->m_spc700 = machine.device<snes_sound_device>("spc700"); |
| 1079 | 1061 | state->m_superfx = machine.device<cpu_device>("superfx"); |
| 1080 | 1062 | |
| 1081 | | state->m_maincpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(snes_state::snes_direct), state)); |
| 1082 | | // state->m_soundcpu->space(AS_PROGRAM).set_direct_update_handler(direct_update_delegate(FUNC(snes_state::snes_spc_direct), state)); |
| 1083 | | |
| 1084 | 1063 | // power-on sets these registers like this |
| 1085 | 1064 | SNES_CPU_REG_STATE(WRIO) = 0xff; |
| 1086 | 1065 | // SNES_CPU_REG_STATE(WRMPYA) = 0xff; |
| r21797 | r21798 | |
| 1201 | 1180 | /* for mame we use an init, maybe we will need more for the different games */ |
| 1202 | 1181 | DRIVER_INIT_MEMBER(snes_state,snes) |
| 1203 | 1182 | { |
| 1204 | | snes_ram = auto_alloc_array_clear(machine(), UINT8, 0x1400000); |
| 1205 | | |
| 1206 | 1183 | m_cart[0].m_rom_size = memregion("user3")->bytes(); |
| 1207 | 1184 | m_cart[0].m_rom = memregion("user3")->base(); |
| 1208 | 1185 | rom_map_setup(m_cart[0].m_rom_size); |
| r21797 | r21798 | |
| 1225 | 1202 | |
| 1226 | 1203 | DRIVER_INIT_MEMBER(snes_state,snes_hirom) |
| 1227 | 1204 | { |
| 1228 | | snes_ram = auto_alloc_array(machine(), UINT8, 0x1400000); |
| 1229 | | memset(snes_ram, 0, 0x1400000); |
| 1230 | | |
| 1231 | 1205 | m_cart[0].m_rom_size = memregion("user3")->bytes(); |
| 1232 | 1206 | m_cart[0].m_rom = memregion("user3")->base(); |
| 1233 | 1207 | rom_map_setup(m_cart[0].m_rom_size); |