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 ) |