trunk/src/mame/drivers/nss.c
| r17488 | r17489 | |
| 1 | 1 | /*************************************************************************** |
| 2 | 2 | |
| 3 | | nss.c |
| 3 | Nintendo Super System |
| 4 | 4 | |
| 5 | | Driver file to handle emulation of the Nintendo Super System. |
| 5 | driver by Angelo Salese, based off info from Nocash |
| 6 | 6 | |
| 7 | | R. Belmont |
| 8 | | Anthony Kruize |
| 9 | | Based on the original MESS driver by Lee Hammerton (aka Savoury Snax) |
| 7 | TODO: |
| 8 | - EEPROM |
| 9 | - Various M50458 bits |
| 10 | - Still dies at a cart check, why? |
| 11 | - OSD should actually super-impose with the SNES video somehow; |
| 10 | 12 | |
| 11 | | Driver is preliminary right now. |
| 12 | | |
| 13 | | The memory map included below is setup in a way to make it easier to handle |
| 14 | | Mode 20 and Mode 21 ROMs. |
| 15 | | |
| 16 | | Todo (in no particular order): |
| 17 | | - Fix additional sound bugs |
| 18 | | - Emulate extra chips - superfx, dsp2, sa-1 etc. |
| 19 | | - Add horizontal mosaic, hi-res. interlaced etc to video emulation. |
| 20 | | - Fix support for Mode 7. (In Progress) |
| 21 | | - Handle interleaved roms (maybe even multi-part roms, but how?) |
| 22 | | - Add support for running at 3.58Mhz at the appropriate time. |
| 23 | | - I'm sure there's lots more ... |
| 24 | | |
| 25 | | Nintendo Super System |
| 26 | | |
| 27 | | There is a second processor and Menu system for selecting the games |
| 28 | | controlling timer etc.? which still needs emulating there are dipswitches too |
| 29 | | |
| 30 | 13 | *************************************************************************** |
| 31 | 14 | |
| 32 | 15 | Nintendo Super System Hardware Overview |
| r17488 | r17489 | |
| 403 | 386 | |
| 404 | 387 | */ |
| 405 | 388 | /* |
| 389 | noca$h info @ nocash.emubase.de/fullsnes.htm |
| 406 | 390 | map |
| 407 | 391 | 0x0000 - 0x7fff BIOS |
| 408 | 392 | 0x8000 - 0x8fff RAM |
| r17488 | r17489 | |
| 784 | 768 | static MACHINE_CONFIG_START( snes, nss_state ) |
| 785 | 769 | |
| 786 | 770 | /* basic machine hardware */ |
| 787 | | MCFG_CPU_ADD("maincpu", _5A22, 3580000*6) /* 2.68Mhz, also 3.58Mhz */ |
| 771 | MCFG_CPU_ADD("maincpu", _5A22, MCLK_NTSC) /* 2.68Mhz, also 3.58Mhz */ |
| 788 | 772 | MCFG_CPU_PROGRAM_MAP(snes_map) |
| 789 | 773 | |
| 790 | 774 | MCFG_CPU_ADD("soundcpu", SPC700, 2048000/2) /* 2.048 Mhz, but internal divider */ |
| r17488 | r17489 | |
| 1041 | 1025 | { |
| 1042 | 1026 | UINT8 *PROM = memregion("rp5h01")->base(); |
| 1043 | 1027 | int i; |
| 1044 | | UINT8 tmp; |
| 1045 | 1028 | |
| 1046 | 1029 | DRIVER_INIT_CALL(snes); |
| 1047 | 1030 | |
| 1048 | 1031 | for(i=0;i<0x10;i++) |
| 1049 | | { |
| 1050 | | tmp = BITSWAP8(PROM[i],0,1,2,3,4,5,6,7); |
| 1051 | | PROM[i] = tmp ^ 0xff; |
| 1052 | | } |
| 1032 | PROM[i] = BITSWAP8(PROM[i],0,1,2,3,4,5,6,7) ^ 0xff; |
| 1033 | |
| 1053 | 1034 | } |
| 1054 | 1035 | |
| 1055 | 1036 | GAME( 199?, nss, 0, nss, snes, snes_state, snes, ROT0, "Nintendo", "Nintendo Super System BIOS", GAME_IS_BIOS_ROOT ) |
| 1056 | | GAME( 1992, nss_actr, nss, nss, snes, nss_state, nss, ROT0, "Enix", "Act Raiser (Nintendo Super System)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) // sound sometimes dies, timing issues |
| 1037 | GAME( 1992, nss_actr, nss, nss, snes, nss_state, nss, ROT0, "Enix", "Act Raiser (Nintendo Super System)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) |
| 1057 | 1038 | GAME( 1992, nss_adam, nss, nss, snes, nss_state, nss, ROT0, "Ocean", "The Addams Family (Nintendo Super System)", GAME_NOT_WORKING | GAME_IMPERFECT_SOUND ) |
| 1058 | 1039 | GAME( 1992, nss_aten, nss, nss, snes, nss_state, nss, ROT0, "Absolute Entertainment Inc.", "David Crane's Amazing Tennis (Nintendo Super System)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
| 1059 | 1040 | GAME( 1992, nss_con3, nss, nss, snes, nss_state, nss, ROT0, "Konami", "Contra 3: The Alien Wars (Nintendo Super System)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
| 1060 | 1041 | GAME( 1992, nss_lwep, nss, nss, snes, nss_state, nss, ROT0, "Ocean", "Lethal Weapon (Nintendo Super System)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
| 1061 | 1042 | GAME( 1992, nss_ncaa, nss, nss, snes, nss_state, nss, ROT0, "Sculptured Software Inc.", "NCAA Basketball (Nintendo Super System)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
| 1062 | | GAME( 1992, nss_rob3, nss, nss, snes, nss_state, nss, ROT0, "Ocean", "Robocop 3 (Nintendo Super System)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // any sprite minus Robocop is missing |
| 1063 | | GAME( 1992, nss_skin, nss, nss, snes, nss_state, nss, ROT0, "Irem", "Skins Game (Nintendo Super System)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // gfx issue caused by timing at start-up |
| 1043 | GAME( 1992, nss_rob3, nss, nss, snes, nss_state, nss, ROT0, "Ocean", "Robocop 3 (Nintendo Super System)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
| 1044 | GAME( 1992, nss_skin, nss, nss, snes, nss_state, nss, ROT0, "Irem", "Skins Game (Nintendo Super System)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) // can't start |
| 1064 | 1045 | GAME( 1992, nss_ssoc, nss, nss, snes, nss_state, nss, ROT0, "Human Inc.", "Super Soccer (Nintendo Super System)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
| 1065 | 1046 | GAME( 1991, nss_smw, nss, nss, snes, nss_state, nss, ROT0, "Nintendo", "Super Mario World (Nintendo Super System)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |
| 1066 | 1047 | GAME( 1991, nss_fzer, nss, nss, snes, nss_state, nss, ROT0, "Nintendo", "F-Zero (Nintendo Super System)", GAME_IMPERFECT_SOUND | GAME_NOT_WORKING ) |