trunk/src/mame/drivers/namcos23.c
| r18664 | r18665 | |
| 1320 | 1320 | { |
| 1321 | 1321 | public: |
| 1322 | 1322 | namcos23_state(const machine_config &mconfig, device_type type, const char *tag) |
| 1323 | | : driver_device(mconfig, type, tag) , |
| 1323 | : driver_device(mconfig, type, tag), |
| 1324 | 1324 | m_rtc(*this, "rtc"), |
| 1325 | 1325 | m_shared_ram(*this, "shared_ram"), |
| 1326 | 1326 | m_charram(*this, "charram"), |
| 1327 | 1327 | m_textram(*this, "textram"), |
| 1328 | | m_gmen_sh2_shared(*this, "gmen_sh2_shared"){ } |
| 1328 | m_czattr(*this, "czattr"), |
| 1329 | m_gmen_sh2_shared(*this, "gmen_sh2_shared") |
| 1330 | { } |
| 1329 | 1331 | |
| 1332 | required_device<rtc4543_device> m_rtc; |
| 1333 | required_shared_ptr<UINT32> m_shared_ram; |
| 1334 | required_shared_ptr<UINT32> m_charram; |
| 1335 | required_shared_ptr<UINT32> m_textram; |
| 1336 | optional_shared_ptr<UINT32> m_czattr; |
| 1337 | optional_shared_ptr<UINT32> m_gmen_sh2_shared; |
| 1338 | |
| 1330 | 1339 | c361_t m_c361; |
| 1331 | 1340 | c417_t m_c417; |
| 1332 | 1341 | c412_t m_c412; |
| r18664 | r18665 | |
| 1335 | 1344 | render_t m_render; |
| 1336 | 1345 | |
| 1337 | 1346 | tilemap_t *m_bgtilemap; |
| 1338 | | required_device<rtc4543_device> m_rtc; |
| 1339 | | required_shared_ptr<UINT32> m_shared_ram; |
| 1340 | | required_shared_ptr<UINT32> m_charram; |
| 1341 | | required_shared_ptr<UINT32> m_textram; |
| 1342 | | optional_shared_ptr<UINT32> m_gmen_sh2_shared; |
| 1343 | 1347 | UINT8 m_jvssense; |
| 1344 | 1348 | INT32 m_has_jvsio; |
| 1345 | 1349 | bool m_ctl_vbl_active; |
| r18664 | r18665 | |
| 2408 | 2412 | machine().gfx[0]->set_source(reinterpret_cast<UINT8 *>(m_charram.target())); |
| 2409 | 2413 | m_bgtilemap = &machine().tilemap().create(tilemap_get_info_delegate(FUNC(namcos23_state::TextTilemapGetInfo),this), TILEMAP_SCAN_ROWS, 16, 16, 64, 64); |
| 2410 | 2414 | m_bgtilemap->set_transparent_pen(0xf); |
| 2411 | | |
| 2412 | | // Gorgon's tilemap offset is 0, S23/SS23's is 860 |
| 2413 | | if ((!strcmp(machine().system().name, "rapidrvr")) || |
| 2414 | | (!strcmp(machine().system().name, "rapidrvr2")) || |
| 2415 | | (!strcmp(machine().system().name, "rapidrvrp")) || |
| 2416 | | (!strcmp(machine().system().name, "finlflng"))) |
| 2417 | | { |
| 2418 | | m_bgtilemap->set_scrolldx(0, 0); |
| 2419 | | } |
| 2420 | | else |
| 2421 | | { |
| 2422 | | m_bgtilemap->set_scrolldx(860, 860); |
| 2423 | | } |
| 2415 | m_bgtilemap->set_scrolldx(860, 860); |
| 2424 | 2416 | m_render.polymgr = poly_alloc(machine(), 10000, sizeof(namcos23_render_data), 0); |
| 2425 | 2417 | } |
| 2426 | 2418 | |
| r18664 | r18665 | |
| 2462 | 2454 | AM_RANGE(0x00000000, 0x003fffff) AM_RAM |
| 2463 | 2455 | AM_RANGE(0x01000000, 0x010000ff) AM_READWRITE(p3d_r, p3d_w ) |
| 2464 | 2456 | AM_RANGE(0x02000000, 0x0200000f) AM_READWRITE16(s23_c417_r, s23_c417_w, 0xffffffff ) |
| 2465 | | AM_RANGE(0x04400000, 0x0440ffff) AM_READWRITE(gorgon_sharedram_r, gorgon_sharedram_w ) AM_SHARE("shared_ram") |
| 2457 | AM_RANGE(0x04400000, 0x0440ffff) AM_READWRITE(gorgon_sharedram_r, gorgon_sharedram_w ) AM_SHARE("shared_ram") // Communication RAM (C416) |
| 2466 | 2458 | |
| 2467 | 2459 | AM_RANGE(0x04c3ff08, 0x04c3ff0b) AM_WRITE(s23_mcuen_w ) |
| 2468 | 2460 | AM_RANGE(0x04c3ff0c, 0x04c3ff0f) AM_RAM |
| 2469 | 2461 | |
| 2470 | | AM_RANGE(0x06080000, 0x06081fff) AM_RAM |
| 2462 | AM_RANGE(0x06080000, 0x0608000f) AM_RAM AM_SHARE("czattr") |
| 2463 | AM_RANGE(0x06080200, 0x060803ff) AM_RAM // PCZ Convert RAM (C406) (should be banked) |
| 2471 | 2464 | |
| 2472 | | AM_RANGE(0x06108000, 0x061087ff) AM_RAM // GAMMA (C404-3S) |
| 2473 | | AM_RANGE(0x06110000, 0x0613ffff) AM_RAM_WRITE(namcos23_paletteram_w ) AM_SHARE("paletteram") |
| 2474 | | AM_RANGE(0x06400000, 0x06403fff) AM_RAM_WRITE(s23_txtchar_w ) AM_SHARE("charram") // text layer characters |
| 2475 | | AM_RANGE(0x06404000, 0x0641dfff) AM_RAM |
| 2476 | | AM_RANGE(0x0641e000, 0x0641ffff) AM_RAM_WRITE(namcos23_textram_w ) AM_SHARE("textram") |
| 2465 | AM_RANGE(0x06108000, 0x061087ff) AM_RAM // Gamma RAM (C404) |
| 2466 | AM_RANGE(0x06110000, 0x0613ffff) AM_RAM_WRITE(namcos23_paletteram_w ) AM_SHARE("paletteram") // Palette RAM (C404) |
| 2467 | AM_RANGE(0x06400000, 0x0641dfff) AM_RAM_WRITE(s23_txtchar_w ) AM_SHARE("charram") // Text CGRAM (C361) |
| 2468 | AM_RANGE(0x0641e000, 0x0641ffff) AM_RAM_WRITE(namcos23_textram_w ) AM_SHARE("textram") // Text VRAM (C361) |
| 2469 | AM_RANGE(0x06420000, 0x0642000f) AM_READWRITE16(s23_c361_r, s23_c361_w, 0xffffffff ) // C361 |
| 2477 | 2470 | |
| 2478 | 2471 | AM_RANGE(0x08000000, 0x087fffff) AM_ROM AM_REGION("data", 0) // data ROMs |
| 2479 | 2472 | |
| 2480 | | AM_RANGE(0x0c000000, 0x0c00ffff) AM_RAM AM_SHARE("nvram") // BACKUP |
| 2473 | AM_RANGE(0x0c000000, 0x0c00ffff) AM_RAM AM_SHARE("nvram") // Backup RAM |
| 2481 | 2474 | |
| 2482 | 2475 | AM_RANGE(0x0d000000, 0x0d00000f) AM_READWRITE16(s23_ctl_r, s23_ctl_w, 0xffffffff ) // write for LEDs at d000000, watchdog at d000004 |
| 2483 | 2476 | |
| 2477 | AM_RANGE(0x0e000000, 0x0e007fff) AM_RAM // C405 RAM |
| 2478 | |
| 2484 | 2479 | AM_RANGE(0x0f000000, 0x0f000003) AM_READ(s23_unk_status_r ) |
| 2485 | 2480 | |
| 2486 | | AM_RANGE(0x0f200000, 0x0f201fff) AM_RAM |
| 2481 | AM_RANGE(0x0f200000, 0x0f203fff) AM_RAM // C422 RAM |
| 2487 | 2482 | |
| 2488 | 2483 | AM_RANGE(0x0fc00000, 0x0fffffff) AM_WRITENOP AM_ROM AM_REGION("user1", 0) |
| 2489 | 2484 | ADDRESS_MAP_END |
| r18664 | r18665 | |
| 2496 | 2491 | AM_RANGE(0x04400000, 0x0440ffff) AM_RAM AM_SHARE("shared_ram") |
| 2497 | 2492 | AM_RANGE(0x04c3ff08, 0x04c3ff0b) AM_WRITE(s23_mcuen_w ) |
| 2498 | 2493 | AM_RANGE(0x04c3ff0c, 0x04c3ff0f) AM_RAM |
| 2499 | | AM_RANGE(0x06000000, 0x0600ffff) AM_RAM AM_SHARE("nvram") // Backup |
| 2500 | | AM_RANGE(0x06200000, 0x06203fff) AM_RAM // C422 |
| 2494 | AM_RANGE(0x06000000, 0x0600ffff) AM_RAM AM_SHARE("nvram") // Backup RAM |
| 2495 | AM_RANGE(0x06200000, 0x06203fff) AM_RAM // C422 RAM |
| 2501 | 2496 | AM_RANGE(0x06400000, 0x0640000f) AM_READWRITE16(s23_c422_r, s23_c422_w, 0xffffffff ) // C422 registers |
| 2502 | | AM_RANGE(0x06800000, 0x06807fff) AM_RAM_WRITE(s23_txtchar_w ) AM_SHARE("charram") // text layer characters (shown as CGRAM in POST) |
| 2503 | | AM_RANGE(0x06804000, 0x0681dfff) AM_RAM |
| 2504 | | AM_RANGE(0x0681e000, 0x0681ffff) AM_RAM_WRITE(namcos23_textram_w ) AM_SHARE("textram") |
| 2497 | AM_RANGE(0x06800000, 0x0681dfff) AM_RAM_WRITE(s23_txtchar_w ) AM_SHARE("charram") // Text CGRAM (C361) |
| 2498 | AM_RANGE(0x0681e000, 0x0681ffff) AM_RAM_WRITE(namcos23_textram_w ) AM_SHARE("textram") // Text VRAM (C361) |
| 2505 | 2499 | AM_RANGE(0x06820000, 0x0682000f) AM_READWRITE16(s23_c361_r, s23_c361_w, 0xffffffff ) // C361 |
| 2506 | 2500 | AM_RANGE(0x06a08000, 0x06a087ff) AM_RAM // Blending control & GAMMA (C404) |
| 2507 | 2501 | AM_RANGE(0x06a10000, 0x06a3ffff) AM_RAM_WRITE(namcos23_paletteram_w ) AM_SHARE("paletteram") |