trunk/src/mess/drivers/ng_aes.c
| r19002 | r19003 | |
| 259 | 259 | } |
| 260 | 260 | |
| 261 | 261 | |
| 262 | | static void neogeoSynchroniseZ80(INT32 nExtraCycles) |
| 263 | | { |
| 264 | 262 | |
| 265 | | } |
| 266 | 263 | |
| 267 | | static void ZetSetBUSREQLine(INT32 nStatus) |
| 268 | | { |
| 269 | 264 | |
| 270 | | } |
| 271 | 265 | |
| 272 | | |
| 273 | | |
| 274 | | |
| 275 | 266 | static void MapVectorTable(bool bMapBoardROM) |
| 276 | 267 | { |
| 277 | 268 | /* |
| r19002 | r19003 | |
| 1398 | 1389 | break; |
| 1399 | 1390 | case 0x0127: |
| 1400 | 1391 | // bprintf(PRINT_NORMAL, _T(" - NGCD Z80 BUSREQ -> 1 (PC: 0x%06X)\n"), SekGetPC(-1)); |
| 1401 | | neogeoSynchroniseZ80(0); |
| 1402 | | ZetSetBUSREQLine(1); |
| 1392 | curr_space->machine().scheduler().synchronize(); |
| 1393 | curr_space->machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_RESET, ASSERT_LINE); |
| 1394 | |
| 1403 | 1395 | break; |
| 1404 | 1396 | case 0x0129: |
| 1405 | 1397 | // bprintf(PRINT_NORMAL, _T(" - NGCD FIX BUSREQ -> 1 (PC: 0x%06X)\n"), SekGetPC(-1)); |
| r19002 | r19003 | |
| 1409 | 1401 | case 0x0141: |
| 1410 | 1402 | // bprintf(PRINT_NORMAL, _T(" - NGCD OBJ BUSREQ -> 0 (PC: 0x%06X)\n"), SekGetPC(-1)); |
| 1411 | 1403 | video_reset(); |
| 1412 | | /* NO MAME |
| 1413 | | NeoSetSpriteSlot(0); |
| 1414 | | for (INT32 i = 0; i < 4; i++) { |
| 1415 | | if (NeoCDOBJBankUpdate[i]) { |
| 1416 | | NeoDecodeSpritesCD(NeoSpriteRAM + (i << 20), NeoSpriteROM[0] + (i << 20), 0x100000); |
| 1417 | | NeoUpdateSprites((i << 20), 0x100000); |
| 1418 | | } |
| 1419 | | } |
| 1420 | | */ |
| 1421 | | |
| 1422 | 1404 | break; |
| 1423 | 1405 | case 0x0143: |
| 1424 | 1406 | // bprintf(PRINT_NORMAL, _T(" - NGCD PCM BUSREQ -> 0 (PC: 0x%06X)\n"), SekGetPC(-1)); |
| 1425 | 1407 | break; |
| 1426 | 1408 | case 0x0147: |
| 1427 | 1409 | // bprintf(PRINT_NORMAL, _T(" - NGCD Z80 BUSREQ -> 0 (PC: 0x%06X)\n"), SekGetPC(-1)); |
| 1428 | | neogeoSynchroniseZ80(0); |
| 1429 | | ZetSetBUSREQLine(0); |
| 1410 | curr_space->machine().scheduler().synchronize(); |
| 1411 | curr_space->machine().device("audiocpu")->execute().set_input_line(INPUT_LINE_RESET, CLEAR_LINE); |
| 1430 | 1412 | break; |
| 1431 | 1413 | case 0x0149: |
| 1432 | 1414 | // bprintf(PRINT_NORMAL, _T(" - NGCD FIX BUSREQ -> 0 (PC: 0x%06X)\n"), SekGetPC(-1)); |
| 1433 | 1415 | video_reset(); |
| 1434 | | |
| 1435 | | /* NO MAME |
| 1436 | | |
| 1437 | | NeoSetTextSlot(0); |
| 1438 | | NeoUpdateText(0, 0x020000, NeoTextRAM, NeoTextROM[0]); |
| 1439 | | */ |
| 1440 | 1416 | break; |
| 1441 | 1417 | |
| 1442 | 1418 | // CD mechanism communication |
| r19002 | r19003 | |
| 2599 | 2575 | |
| 2600 | 2576 | static ADDRESS_MAP_START( neocd_main_map, AS_PROGRAM, 16, ng_aes_state ) |
| 2601 | 2577 | AM_RANGE(0x000000, 0x00007f) AM_RAMBANK(NEOGEO_BANK_VECTORS) |
| 2602 | | AM_RANGE(0x000080, 0x0fffff) AM_RAM |
| 2603 | | AM_RANGE(0x100000, 0x10ffff) AM_MIRROR(0x0f0000) AM_RAM AM_SHARE("neocd_work_ram") |
| 2578 | AM_RANGE(0x000080, 0x1fffff) AM_RAM AM_SHARE("neocd_work_ram") |
| 2604 | 2579 | /* some games have protection devices in the 0x200000 region, it appears to map to cart space, not surprising, the ROM is read here too */ |
| 2605 | 2580 | AM_RANGE(0x200000, 0x2fffff) AM_ROMBANK(NEOGEO_BANK_CARTRIDGE) |
| 2606 | 2581 | AM_RANGE(0x2ffff0, 0x2fffff) AM_WRITE(main_cpu_bank_select_w) |
| r19002 | r19003 | |
| 2665 | 2640 | |
| 2666 | 2641 | |
| 2667 | 2642 | |
| 2643 | // does the Z80 actually see all of this as RAM on the NeoCD, or is it only actually writable via the transfer areas? |
| 2644 | static ADDRESS_MAP_START( neocd_audio_map, AS_PROGRAM, 8, ng_aes_state ) |
| 2645 | AM_RANGE(0x0000, 0x7fff) AM_RAMBANK(NEOGEO_BANK_AUDIO_CPU_MAIN_BANK) |
| 2646 | AM_RANGE(0x8000, 0xbfff) AM_RAMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK3) |
| 2647 | AM_RANGE(0xc000, 0xdfff) AM_RAMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK2) |
| 2648 | AM_RANGE(0xe000, 0xefff) AM_RAMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK1) |
| 2649 | AM_RANGE(0xf000, 0xf7ff) AM_RAMBANK(NEOGEO_BANK_AUDIO_CPU_CART_BANK0) |
| 2650 | AM_RANGE(0xf800, 0xffff) AM_RAM |
| 2651 | ADDRESS_MAP_END |
| 2652 | |
| 2653 | |
| 2654 | static ADDRESS_MAP_START( neocd_audio_io_map, AS_IO, 8, ng_aes_state ) |
| 2655 | /*AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READWRITE(audio_command_r, audio_cpu_clear_nmi_w);*/ /* may not and NMI clear */ |
| 2656 | AM_RANGE(0x00, 0x00) AM_MIRROR(0xff00) AM_READ(audio_command_r) |
| 2657 | AM_RANGE(0x04, 0x07) AM_MIRROR(0xff00) AM_DEVREADWRITE_LEGACY("ymsnd", ym2610_r, ym2610_w) |
| 2658 | AM_RANGE(0x08, 0x08) AM_MIRROR(0xff00) /* write - NMI enable / acknowledge? (the data written doesn't matter) */ |
| 2659 | // AM_RANGE(0x08, 0x08) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ(audio_cpu_bank_select_f000_f7ff_r) |
| 2660 | // AM_RANGE(0x09, 0x09) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ(audio_cpu_bank_select_e000_efff_r) |
| 2661 | // AM_RANGE(0x0a, 0x0a) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ(audio_cpu_bank_select_c000_dfff_r) |
| 2662 | // AM_RANGE(0x0b, 0x0b) AM_MIRROR(0xfff0) AM_MASK(0xfff0) AM_READ(audio_cpu_bank_select_8000_bfff_r) |
| 2663 | AM_RANGE(0x0c, 0x0c) AM_MIRROR(0xff00) AM_WRITE(audio_result_w) |
| 2664 | AM_RANGE(0x18, 0x18) AM_MIRROR(0xff00) /* write - NMI disable? (the data written doesn't matter) */ |
| 2665 | ADDRESS_MAP_END |
| 2666 | |
| 2667 | |
| 2668 | 2668 | /************************************* |
| 2669 | 2669 | * |
| 2670 | 2670 | * Audio interface |
| r19002 | r19003 | |
| 3069 | 3069 | MCFG_CPU_MODIFY("maincpu") |
| 3070 | 3070 | MCFG_CPU_PROGRAM_MAP(neocd_main_map) |
| 3071 | 3071 | |
| 3072 | MCFG_CPU_MODIFY("audiocpu") |
| 3073 | MCFG_CPU_PROGRAM_MAP(neocd_audio_map) |
| 3074 | MCFG_CPU_IO_MAP(neocd_audio_io_map) |
| 3075 | |
| 3076 | |
| 3072 | 3077 | MCFG_MACHINE_START_OVERRIDE(ng_aes_state,neocd) |
| 3073 | 3078 | |
| 3074 | 3079 | MCFG_TIMER_DRIVER_ADD_PERIODIC("hock_timer", ng_aes_state, neocd_access_timer_callback, attotime::from_hz(75)) |