trunk/src/mame/drivers/3do.c
| r20201 | r20202 | |
| 129 | 129 | PORT_BIT( 0x80, IP_ACTIVE_LOW, IPT_START1 ) |
| 130 | 130 | INPUT_PORTS_END |
| 131 | 131 | |
| 132 | | |
| 133 | | void _3do_state::machine_reset() |
| 132 | void _3do_state::machine_start() |
| 134 | 133 | { |
| 135 | 134 | membank("bank2")->set_base(memregion("user1")->base()); |
| 136 | 135 | |
| r20201 | r20202 | |
| 138 | 137 | membank("bank1")->configure_entry(0, m_dram); |
| 139 | 138 | membank("bank1")->configure_entry(1, memregion("user1")->base()); |
| 140 | 139 | |
| 140 | m_3do_slow2_init(); |
| 141 | m_3do_madam_init(); |
| 142 | m_3do_clio_init( downcast<screen_device *>(machine().device("screen"))); |
| 143 | } |
| 144 | |
| 145 | void _3do_state::machine_reset() |
| 146 | { |
| 141 | 147 | /* start with overlay enabled */ |
| 142 | 148 | membank("bank1")->set_entry(1); |
| 143 | 149 | |
| 144 | | _3do_slow2_init(machine()); |
| 145 | | _3do_madam_init(machine()); |
| 146 | | _3do_clio_init(machine(), downcast<screen_device *>(machine().device("screen"))); |
| 150 | m_clio.cstatbits = 0x01; /* bit 0 = reset of clio caused by power on */ |
| 147 | 151 | } |
| 148 | 152 | |
| 149 | 153 | struct cdrom_interface _3do_cdrom = |
trunk/src/mame/machine/3do.c
| r20201 | r20202 | |
| 225 | 225 | } |
| 226 | 226 | |
| 227 | 227 | |
| 228 | | void _3do_slow2_init( running_machine &machine ) |
| 229 | | { |
| 230 | | _3do_state *state = machine.driver_data<_3do_state>(); |
| 231 | | state->m_slow2.cg_input = 0; |
| 232 | | state->m_slow2.cg_output = 0x00000005 - 1; |
| 233 | | } |
| 234 | 228 | |
| 235 | | |
| 236 | 229 | READ32_MEMBER(_3do_state::_3do_svf_r) |
| 237 | 230 | { |
| 238 | 231 | UINT32 addr = ( offset & ( 0x07fc / 4 ) ) << 9; |
| r20201 | r20202 | |
| 649 | 642 | } |
| 650 | 643 | |
| 651 | 644 | |
| 652 | | void _3do_madam_init( running_machine &machine ) |
| 653 | | { |
| 654 | | _3do_state *state = machine.driver_data<_3do_state>(); |
| 655 | | memset( &state->m_madam, 0, sizeof(MADAM) ); |
| 656 | | state->m_madam.revision = 0x01020000; |
| 657 | | state->m_madam.msysbits = 0x51; |
| 658 | | } |
| 659 | 645 | |
| 660 | 646 | |
| 661 | 647 | READ32_MEMBER(_3do_state::_3do_clio_r) |
| r20201 | r20202 | |
| 1023 | 1009 | } |
| 1024 | 1010 | |
| 1025 | 1011 | |
| 1026 | | void _3do_clio_init( running_machine &machine, screen_device *screen ) |
| 1027 | | { |
| 1028 | | _3do_state *state = machine.driver_data<_3do_state>(); |
| 1029 | | memset( &state->m_clio, 0, sizeof(CLIO) ); |
| 1030 | | state->m_clio.screen = screen; |
| 1031 | | state->m_clio.revision = 0x02022000 /* 0x04000000 */; |
| 1032 | | state->m_clio.cstatbits = 0x01; /* bit 0 = reset of clio caused by power on */ |
| 1033 | | state->m_clio.unclerev = 0x03800000; |
| 1034 | | state->m_clio.expctl = 0x80; /* ARM has the expansion bus */ |
| 1035 | | state->m_dspp.N = auto_alloc_array(machine, UINT16, 0x800 ); |
| 1036 | | state->m_dspp.EI = auto_alloc_array(machine, UINT16, 0x200 ); |
| 1037 | | state->m_dspp.EO = auto_alloc_array(machine, UINT16, 0x200 ); |
| 1038 | | |
| 1039 | | state_save_register_global_pointer(machine, state->m_dspp.N, 0x800); |
| 1040 | | state_save_register_global_pointer(machine, state->m_dspp.EI, 0x200); |
| 1041 | | state_save_register_global_pointer(machine, state->m_dspp.EO, 0x200); |
| 1042 | | } |
| 1043 | | |
| 1044 | | |
| 1045 | 1012 | /* 9 -> 5 bits translation */ |
| 1046 | 1013 | |
| 1047 | 1014 | VIDEO_START_MEMBER(_3do_state,_3do) |
| r20201 | r20202 | |
| 1103 | 1070 | |
| 1104 | 1071 | return 0; |
| 1105 | 1072 | } |
| 1073 | |
| 1074 | /* |
| 1075 | * |
| 1076 | * Machine Inits |
| 1077 | * |
| 1078 | */ |
| 1079 | |
| 1080 | void _3do_state::m_3do_madam_init( void ) |
| 1081 | { |
| 1082 | memset( &m_madam, 0, sizeof(MADAM) ); |
| 1083 | m_madam.revision = 0x01020000; |
| 1084 | m_madam.msysbits = 0x51; |
| 1085 | } |
| 1086 | |
| 1087 | void _3do_state::m_3do_slow2_init( void ) |
| 1088 | { |
| 1089 | m_slow2.cg_input = 0; |
| 1090 | m_slow2.cg_output = 0x00000005 - 1; |
| 1091 | } |
| 1092 | |
| 1093 | void _3do_state::m_3do_clio_init( screen_device *screen ) |
| 1094 | { |
| 1095 | memset( &m_clio, 0, sizeof(CLIO) ); |
| 1096 | m_clio.screen = screen; |
| 1097 | m_clio.revision = 0x02022000 /* 0x04000000 */; |
| 1098 | m_clio.unclerev = 0x03800000; |
| 1099 | m_clio.expctl = 0x80; /* ARM has the expansion bus */ |
| 1100 | m_dspp.N = auto_alloc_array(machine(), UINT16, 0x800 ); |
| 1101 | m_dspp.EI = auto_alloc_array(machine(), UINT16, 0x200 ); |
| 1102 | m_dspp.EO = auto_alloc_array(machine(), UINT16, 0x200 ); |
| 1103 | |
| 1104 | state_save_register_global_pointer(machine(), m_dspp.N, 0x800); |
| 1105 | state_save_register_global_pointer(machine(), m_dspp.EI, 0x200); |
| 1106 | state_save_register_global_pointer(machine(), m_dspp.EO, 0x200); |
| 1107 | } |
trunk/src/mame/includes/3do.h
| r20201 | r20202 | |
| 161 | 161 | DECLARE_WRITE32_MEMBER(_3do_madam_w); |
| 162 | 162 | DECLARE_READ32_MEMBER(_3do_clio_r); |
| 163 | 163 | DECLARE_WRITE32_MEMBER(_3do_clio_w); |
| 164 | virtual void machine_start(); |
| 164 | 165 | virtual void machine_reset(); |
| 165 | 166 | DECLARE_VIDEO_START(_3do); |
| 166 | 167 | UINT32 screen_update__3do(screen_device &screen, bitmap_rgb32 &bitmap, const rectangle &cliprect); |
| r20201 | r20202 | |
| 168 | 169 | TIMER_DEVICE_CALLBACK_MEMBER( timer_x16_cb ); |
| 169 | 170 | |
| 170 | 171 | private: |
| 172 | void m_3do_slow2_init( void ); |
| 173 | void m_3do_madam_init( void ); |
| 174 | void m_3do_clio_init( screen_device *screen ); |
| 175 | |
| 171 | 176 | void m_3do_request_fiq(UINT32 irq_req, UINT8 type); |
| 172 | 177 | }; |
| 173 | 178 | |
| 174 | 179 | /*----------- defined in machine/3do.c -----------*/ |
| 175 | 180 | |
| 176 | 181 | |
| 177 | | void _3do_slow2_init( running_machine &machine ); |
| 178 | | |
| 179 | | |
| 180 | | void _3do_madam_init( running_machine &machine ); |
| 181 | | |
| 182 | | void _3do_clio_init( running_machine &machine, screen_device *screen ); |
| 183 | | |
| 184 | | |
| 185 | 182 | #endif /* _3DO_H_ */ |