trunk/src/mess/drivers/megadriv.c
| r22033 | r22034 | |
| 377 | 377 | |
| 378 | 378 | static MACHINE_CONFIG_START( ms_megadriv, md_cons_state ) |
| 379 | 379 | MCFG_FRAGMENT_ADD( md_ntsc ) |
| 380 | | MCFG_NVRAM_HANDLER_CLEAR() |
| 381 | 380 | |
| 382 | 381 | MCFG_MACHINE_START( ms_megadriv ) |
| 383 | 382 | MCFG_MACHINE_RESET( ms_megadriv ) |
| r22033 | r22034 | |
| 388 | 387 | |
| 389 | 388 | static MACHINE_CONFIG_START( ms_megadpal, md_cons_state ) |
| 390 | 389 | MCFG_FRAGMENT_ADD( md_pal ) |
| 391 | | MCFG_NVRAM_HANDLER_CLEAR() |
| 392 | 390 | |
| 393 | 391 | MCFG_MACHINE_START( ms_megadriv ) |
| 394 | 392 | MCFG_MACHINE_RESET( ms_megadriv ) |
| r22033 | r22034 | |
| 522 | 520 | |
| 523 | 521 | static MACHINE_CONFIG_START( genesis_32x, md_cons_state ) |
| 524 | 522 | MCFG_FRAGMENT_ADD( md_ntsc ) |
| 525 | | MCFG_NVRAM_HANDLER_CLEAR() |
| 526 | 523 | |
| 527 | 524 | MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, 0) |
| 528 | 525 | |
| r22033 | r22034 | |
| 554 | 551 | |
| 555 | 552 | static MACHINE_CONFIG_START( mdj_32x, md_cons_state ) |
| 556 | 553 | MCFG_FRAGMENT_ADD( md_ntsc ) |
| 557 | | MCFG_NVRAM_HANDLER_CLEAR() |
| 558 | 554 | |
| 559 | 555 | MCFG_DEVICE_ADD("sega32x", SEGA_32X_NTSC, 0) |
| 560 | 556 | |
| r22033 | r22034 | |
| 586 | 582 | |
| 587 | 583 | static MACHINE_CONFIG_START( md_32x, md_cons_state ) |
| 588 | 584 | MCFG_FRAGMENT_ADD( md_pal ) |
| 589 | | MCFG_NVRAM_HANDLER_CLEAR() |
| 590 | 585 | |
| 591 | 586 | MCFG_DEVICE_ADD("sega32x", SEGA_32X_PAL, 0) |
| 592 | 587 | |
| r22033 | r22034 | |
| 841 | 836 | |
| 842 | 837 | static MACHINE_CONFIG_START( megdsvp, mdsvp_state ) |
| 843 | 838 | MCFG_FRAGMENT_ADD( md_ntsc ) |
| 844 | | MCFG_NVRAM_HANDLER_CLEAR() |
| 845 | 839 | |
| 846 | 840 | MCFG_CPU_ADD("svp", SSP1601, MASTER_CLOCK_NTSC / 7 * 3) /* ~23 MHz (guessed) */ |
| 847 | 841 | MCFG_CPU_PROGRAM_MAP(svp_ssp_map) |
| r22033 | r22034 | |
| 857 | 851 | |
| 858 | 852 | static MACHINE_CONFIG_START( megdsvp_pal, mdsvp_state ) |
| 859 | 853 | MCFG_FRAGMENT_ADD( md_pal ) |
| 860 | | MCFG_NVRAM_HANDLER_CLEAR() |
| 861 | 854 | |
| 862 | 855 | MCFG_CPU_ADD("svp", SSP1601, MASTER_CLOCK_PAL / 7 * 3) /* ~23 MHz (guessed) */ |
| 863 | 856 | MCFG_CPU_PROGRAM_MAP(svp_ssp_map) |
| r22033 | r22034 | |
| 1076 | 1069 | |
| 1077 | 1070 | static MACHINE_CONFIG_START( pico, pico_state ) |
| 1078 | 1071 | MCFG_FRAGMENT_ADD( md_ntsc ) |
| 1079 | | MCFG_NVRAM_HANDLER_CLEAR() |
| 1080 | 1072 | |
| 1081 | 1073 | MCFG_CPU_MODIFY("maincpu") |
| 1082 | 1074 | MCFG_CPU_PROGRAM_MAP(pico_mem) |
| r22033 | r22034 | |
| 1092 | 1084 | |
| 1093 | 1085 | static MACHINE_CONFIG_START( picopal, pico_state ) |
| 1094 | 1086 | MCFG_FRAGMENT_ADD( md_pal ) |
| 1095 | | MCFG_NVRAM_HANDLER_CLEAR() |
| 1096 | 1087 | |
| 1097 | 1088 | MCFG_CPU_MODIFY("maincpu") |
| 1098 | 1089 | MCFG_CPU_PROGRAM_MAP(pico_mem) |
trunk/src/mame/machine/megadriv.c
| r22033 | r22034 | |
| 837 | 837 | |
| 838 | 838 | /************************************ Megadrive Bootlegs *************************************/ |
| 839 | 839 | |
| 840 | | // smaller ROM region because some bootlegs check for RAM there |
| 840 | // smaller ROM region because some bootlegs check for RAM there (used by topshoot and hshavoc) |
| 841 | 841 | static ADDRESS_MAP_START( md_bootleg_map, AS_PROGRAM, 16, md_boot_state ) |
| 842 | 842 | AM_RANGE(0x000000, 0x0fffff) AM_ROM /* Cartridge Program Rom */ |
| 843 | 843 | AM_RANGE(0x200000, 0x2023ff) AM_RAM // tested |
| r22033 | r22034 | |
| 955 | 955 | |
| 956 | 956 | |
| 957 | 957 | |
| 958 | | static UINT16* megadriv_backupram; |
| 959 | | static int megadriv_backupram_length; |
| 960 | | |
| 961 | | static NVRAM_HANDLER( megadriv ) |
| 962 | | { |
| 963 | | if (megadriv_backupram!=NULL) |
| 964 | | { |
| 965 | | if (read_or_write) |
| 966 | | file->write(megadriv_backupram, megadriv_backupram_length); |
| 967 | | else |
| 968 | | { |
| 969 | | if (file) |
| 970 | | { |
| 971 | | file->read(megadriv_backupram, megadriv_backupram_length); |
| 972 | | } |
| 973 | | else |
| 974 | | { |
| 975 | | int x; |
| 976 | | for (x=0;x<megadriv_backupram_length/2;x++) |
| 977 | | megadriv_backupram[x]=0xffff;//machine.rand(); // dino dini's needs 0xff or game rules are broken |
| 978 | | } |
| 979 | | } |
| 980 | | } |
| 981 | | } |
| 982 | | |
| 983 | | |
| 984 | 958 | // this comes from the VDP on lines 240 (on) 241 (off) and is connected to the z80 irq 0 |
| 985 | 959 | void genesis_vdp_sndirqline_callback_genesis_z80(running_machine &machine, bool state) |
| 986 | 960 | { |
| r22033 | r22034 | |
| 1098 | 1072 | |
| 1099 | 1073 | MCFG_TIMER_ADD_SCANLINE("scantimer", megadriv_scanline_timer_callback_alt_timing, "megadriv", 0, 1) |
| 1100 | 1074 | |
| 1101 | | MCFG_NVRAM_HANDLER(megadriv) |
| 1102 | | |
| 1103 | 1075 | MCFG_PALETTE_LENGTH(0x200) |
| 1104 | 1076 | |
| 1105 | 1077 | MCFG_VIDEO_START(megadriv) |
| r22033 | r22034 | |
| 1149 | 1121 | MCFG_SCREEN_UPDATE_STATIC(megadriv) /* Copies a bitmap */ |
| 1150 | 1122 | MCFG_SCREEN_VBLANK_STATIC(megadriv) /* Used to Sync the timing */ |
| 1151 | 1123 | |
| 1152 | | MCFG_NVRAM_HANDLER(megadriv) |
| 1153 | | |
| 1154 | 1124 | MCFG_PALETTE_LENGTH(0x200) |
| 1155 | 1125 | |
| 1156 | 1126 | MCFG_VIDEO_START(megadriv) |
| r22033 | r22034 | |
| 1204 | 1174 | } |
| 1205 | 1175 | |
| 1206 | 1176 | machine().device("maincpu")->execute().set_irq_acknowledge_callback(device_irq_acknowledge_delegate(FUNC(md_base_state::genesis_int_callback),this)); |
| 1207 | | megadriv_backupram = NULL; |
| 1208 | | megadriv_backupram_length = 0; |
| 1209 | 1177 | |
| 1210 | 1178 | vdp_get_word_from_68k_mem = vdp_get_word_from_68k_mem_default; |
| 1211 | 1179 | |