trunk/src/mame/machine/pgmprot_igs027a_type3.c
| r26117 | r26118 | |
| 123 | 123 | AM_IMPORT_FROM(pgm_mem) |
| 124 | 124 | AM_RANGE(0x100000, 0x1fffff) AM_ROMBANK("bank1") /* Game ROM */ |
| 125 | 125 | |
| 126 | | AM_RANGE(0x500000, 0x51ffff) AM_READWRITE(svg_m68k_ram_r, svg_m68k_ram_w) /* ARM7 Shared RAM */ |
| 126 | AM_RANGE(0x500000, 0x50ffff) AM_READWRITE(svg_m68k_ram_r, svg_m68k_ram_w) /* ARM7 Shared RAM */ |
| 127 | 127 | AM_RANGE(0x5c0000, 0x5c0001) AM_READWRITE(svg_68k_nmi_r, svg_68k_nmi_w) /* ARM7 FIQ */ |
| 128 | 128 | AM_RANGE(0x5c0300, 0x5c0301) AM_READWRITE(svg_latch_68k_r, svg_latch_68k_w) /* ARM7 Latch */ |
| 129 | 129 | ADDRESS_MAP_END |
| r26117 | r26118 | |
| 134 | 134 | AM_RANGE(0x08000000, 0x087fffff) AM_ROM AM_REGION("user1", 0) |
| 135 | 135 | AM_RANGE(0x10000000, 0x100003ff) AM_RAM AM_SHARE("arm_ram2") |
| 136 | 136 | AM_RANGE(0x18000000, 0x1803ffff) AM_RAM AM_SHARE("arm_ram") |
| 137 | | AM_RANGE(0x38000000, 0x3801ffff) AM_READWRITE(svg_arm7_shareram_r, svg_arm7_shareram_w) |
| 137 | AM_RANGE(0x38000000, 0x3800ffff) AM_READWRITE(svg_arm7_shareram_r, svg_arm7_shareram_w) |
| 138 | 138 | AM_RANGE(0x48000000, 0x48000003) AM_READWRITE(svg_latch_arm_r, svg_latch_arm_w) /* 68k Latch */ |
| 139 | 139 | AM_RANGE(0x40000018, 0x4000001b) AM_WRITE(svg_arm7_ram_sel_w) /* RAM SEL */ |
| 140 | 140 | AM_RANGE(0x50000000, 0x500003ff) AM_RAM |
| 141 | |
| 142 | // AM_RANGE(0xc0000000, 0xffffffff) AM_RAM |
| 143 | |
| 141 | 144 | ADDRESS_MAP_END |
| 142 | 145 | |
| 143 | 146 | |
| r26117 | r26118 | |
| 223 | 226 | |
| 224 | 227 | UINT16 *temp16 = (UINT16 *)memregion("prot")->base(); |
| 225 | 228 | |
| 229 | |
| 230 | |
| 231 | |
| 232 | |
| 226 | 233 | temp16[(0xe8)/2] = 0xE004; // based on killbldp |
| 227 | 234 | temp16[(0xea)/2] = 0xE52D; |
| 228 | 235 | temp16[(0xec)/2] = 0x00D3; |
| r26117 | r26118 | |
| 248 | 255 | |
| 249 | 256 | // the interrupt code appears to be at 0x08000010 |
| 250 | 257 | // although this still crashes for now.. |
| 258 | int base = 0x1c; |
| 259 | temp16[(base) /2] = 0xf000; base += 2; |
| 260 | temp16[(base) /2] = 0xe59f; base += 2; |
| 261 | temp16[(base) /2] = 0x0010; base += 2; |
| 262 | temp16[(base) /2] = 0x0800; base += 2; |
| 263 | temp16[(base) /2] = 0x0010; base += 2; |
| 264 | temp16[(base) /2] = 0x0800; base += 2; |
| 265 | |
| 251 | 266 | |
| 252 | | temp16[(0x14) / 2] = 0x0010; |
| 253 | | temp16[(0x16) / 2] = 0x0800; |
| 267 | base = 0x30; |
| 268 | temp16[(base) /2] = 0x00D3; base += 2; |
| 269 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 270 | temp16[(base) /2] = 0xF000; base += 2; |
| 271 | temp16[(base) /2] = 0xE121; base += 2; |
| 272 | temp16[(base) /2] = 0x1A01; base += 2; |
| 273 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 274 | temp16[(base) /2] = 0x2B01; base += 2; |
| 275 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 276 | temp16[(base) /2] = 0xD801; base += 2; |
| 277 | temp16[(base) /2] = 0xE082; base += 2; |
| 278 | temp16[(base) /2] = 0x00D2; base += 2; |
| 279 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 280 | temp16[(base) /2] = 0xF000; base += 2; |
| 281 | temp16[(base) /2] = 0xE121; base += 2; |
| 254 | 282 | |
| 255 | | temp16[(0x18) / 2] = 0x0014; |
| 256 | | temp16[(0x1a) / 2] = 0x0000; |
| 283 | temp16[(base) /2] = 0x4001; base += 2; |
| 284 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 285 | temp16[(base) /2] = 0x4B06; base += 2; |
| 286 | temp16[(base) /2] = 0xE284; base += 2; |
| 287 | temp16[(base) /2] = 0x0CFA; base += 2; |
| 288 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 289 | temp16[(base) /2] = 0xD804; base += 2; |
| 290 | temp16[(base) /2] = 0xE080; base += 2; |
| 291 | temp16[(base) /2] = 0x00D1; base += 2; |
| 292 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 293 | temp16[(base) /2] = 0xF000; base += 2; |
| 294 | temp16[(base) /2] = 0xE121; base += 2; |
| 295 | temp16[(base) /2] = 0x0CF6; base += 2; |
| 296 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 297 | temp16[(base) /2] = 0xD804; base += 2; |
| 298 | temp16[(base) /2] = 0xE080; base += 2; |
| 299 | temp16[(base) /2] = 0x00D7; base += 2; |
| 300 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 301 | temp16[(base) /2] = 0xF000; base += 2; |
| 302 | temp16[(base) /2] = 0xE121; base += 2; |
| 303 | temp16[(base) /2] = 0x0CFF; base += 2; |
| 304 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 305 | temp16[(base) /2] = 0xD804; base += 2; |
| 306 | temp16[(base) /2] = 0xE080; base += 2; |
| 307 | temp16[(base) /2] = 0x00DB; base += 2; |
| 308 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 309 | temp16[(base) /2] = 0xF000; base += 2; |
| 310 | temp16[(base) /2] = 0xE121; base += 2; |
| 311 | temp16[(base) /2] = 0x4140; base += 2; |
| 312 | temp16[(base) /2] = 0xE1C4; base += 2; |
| 313 | temp16[(base) /2] = 0x0CFE; base += 2; |
| 314 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 315 | temp16[(base) /2] = 0xD804; base += 2; |
| 316 | temp16[(base) /2] = 0xE080; base += 2; |
| 317 | temp16[(base) /2] = 0x00D3; base += 2; |
| 318 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 319 | temp16[(base) /2] = 0xF000; base += 2; |
| 257 | 320 | |
| 321 | temp16[(base) /2] = 0xE121; base += 2; |
| 322 | temp16[(base) /2] = 0x4A01; base += 2; |
| 323 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 324 | temp16[(base) /2] = 0x0B01; base += 2; |
| 325 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 326 | temp16[(base) /2] = 0xD804; base += 2; |
| 327 | temp16[(base) /2] = 0xE080; base += 2; |
| 328 | temp16[(base) /2] = 0x5A0F; base += 2; |
| 329 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 330 | temp16[(base) /2] = 0x0008; base += 2; |
| 331 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 332 | temp16[(base) /2] = 0x8805; base += 2; |
| 333 | temp16[(base) / 2] = 0xE080; base += 2; |
| 334 | temp16[(base) /2] = 0x0010; base += 2; |
| 335 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 336 | temp16[(base) /2] = 0x0000; base += 2; |
| 337 | temp16[(base) /2] = 0xE5C8; base += 2; |
| 338 | temp16[(base) /2] = 0x7805; base += 2; |
| 339 | temp16[(base) /2] = 0xE1A0; base += 2; |
| 340 | temp16[(base) /2] = 0x6A01; base += 2; |
| 341 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 342 | temp16[(base) /2] = 0x0012; base += 2; |
| 343 | temp16[(base) /2] = 0xE3A0; base += 2; |
| 344 | temp16[(base) /2] = 0x0A02; base += 2; |
| 345 | temp16[(base) /2] = 0xE280; base += 2; |
| 346 | temp16[(base) /2] = 0x6806; base += 2; |
| 347 | temp16[(base) /2] = 0xE080; base += 2; |
| 348 | temp16[(base) /2] = 0x6000; base += 2; |
| 349 | temp16[(base) /2] = 0xE587; base += 2; |
| 350 | temp16[(base) /2] = 0x002c; base += 2; |
| 351 | temp16[(base) /2] = 0xEA00; base += 2; |
| 258 | 352 | |
| 353 | |
| 259 | 354 | |
| 355 | base = 0; |
| 356 | temp16[(base) /2] = 0x000a; base += 2; |
| 357 | temp16[(base) /2] = 0xEA00; base += 2; |
| 260 | 358 | |
| 359 | #if 0 |
| 360 | m_svg_ram_sel = 1; |
| 261 | 361 | |
| 262 | | temp16[(0x1c) / 2] = 0x500F; |
| 263 | | temp16[(0x1e) / 2] = 0xE92D; |
| 264 | | temp16[(0x20) / 2] = 0x0010; |
| 265 | | temp16[(0x22) / 2] = 0xE51F; |
| 266 | | temp16[(0x24) / 2] = 0x0000; |
| 267 | | temp16[(0x26) / 2] = 0xE590; |
| 268 | | temp16[(0x28) / 2] = 0xE00F; |
| 269 | | temp16[(0x2a) / 2] = 0xE1A0; |
| 270 | | temp16[(0x2c) / 2] = 0xFF10; |
| 271 | | temp16[(0x2e) / 2] = 0xE12F; |
| 272 | | |
| 273 | | |
| 274 | | |
| 275 | | |
| 362 | for (int i = 0; i < 0x100; i++) |
| 363 | { |
| 364 | UINT16 *share16; |
| 365 | share16 = (UINT16 *)(m_svg_shareram[1]); |
| 366 | share16[i / 2] = 0x0002; |
| 367 | share16 = (UINT16 *)(m_svg_shareram[0]); |
| 368 | share16[i / 2] = 0x0002; |
| 369 | } |
| 370 | #endif |
| 276 | 371 | } |
| 277 | 372 | |
| 278 | 373 | DRIVER_INIT_MEMBER(pgm_arm_type3_state,svg) |