--------------------------------- NES/Famicom FOREVER NES/Famicom Emulator fwNES 0.20b Based On CYS's hacking Main Emu Core by FanWen Yang 1998/5/12 Sound Core by Shu Kondo DOS Version --------------------------------- ----------------------------- What is a NES or a Famicom? ----------------------------- In the mid to late 80s, there was a popular television video game console known as the Nintendo Entertainment System. In Japan, this revolutionary system was known as the Famicom (short for Family Computer). It is an 8-bit machine, using a 6502 CPU, much like the old Apple ][. The rest of the hardware includes a Picture Processing Unit (PPU) and a sound chip producing 5 channel sound (2 channels for square waves, 1 traingle wave, 1 noise channel and 1 PCM sound channel). It contains 1K of RAM and 4K of VRAM. In Japan, an addon knwon as the Famicom Disk System (FDS) was released. The FDS used 3" floppy disks instead of the standard cartridges and its hardware enhanced sound quality, adding two sound channels. Nintendo also released peripheral devices such as the Zapper (light gun) and the Power Pad. ---------------------- What is an Emulator? ---------------------- An emulator is a program that makes one machine act like another machine... in this case, giving the PC all the information it needs to mimic the original NES/FC console. -------------------- Why write fwNES98? -------------------- The author of this emulator has very fond memories of growing up with his Famicom, and there is no complete Famicom emulator. Therefore he decided to write his own Famicom/NES emulator. What is fwNES98's Goal? ------------------------- Full emulation of NES/Famicom hardware, memory mappers, and sound channels. If possible, the author will add FDS support. --------------------------------- What is fwNES98 current status? --------------------------------- *Famicom/NES itself 1. 6502 (Using Marat's M6502 core and Neil's N6502 core and Shu Kondo S6502) 2. PPU Registers almost fully emulated 3. Full Sound Channel (DPCM included) *mappers supported: (fwnes follows the interNES .NES .NEZ file standard plus fwNES98's own set of extended mappers) Byte Context ------------------------------------------------------------------------- 0-3 String "NES^Z" 4 Number of 16K Program Data Block 5 Number of 8K Chr Data Block 6 bit 0 1 Vertical Mirroring, 0 Horzontal Mirroring bit 1 1 Battey Backup ($6000-$7FFF) bit 2 1 Trainer on ($7000-$71FF (*)bit 3 4 Screen Buffer ($2000-$2FFF) in some mapper #70 #78 this bit is used as Toggle HV/PG bit 4-7 mapper number low 4 bit 7 bit 4-7 mapper number high 4 bit 8-15 Reserved 16-... Trainer ->Program Block ->Chr Block EOF ------------------------------------------------------------------------- Mapper Number Chipset Name Example Games using particular Mapper iNES mapper 0 32kb ROM/8k VROM Super Mario Bros, Mario Bros, Clu Clu Land iNES mapper 1 Nintendo MMC1 Kid Niki, Dragon Warrior 3-4, Mega Man 2 iNES mapper 2 UNROM (ROM switch) Castlevania, Life Force, Skate or Die iNES mapper 3 CNROM (VROM switch) Gradius, Paperboy, Q-Bert iNES mapper 4 Nintendo MMC3 SMB3, Contra Force, Crystalis iNES mapper 5 MMC5 Castlevania 3, Metal Slader Glory, many Koei games iNES mapper 7 AOROM (32kb ROM Switch) Wizards and Warriors, Solstice, Cobra Triangle iNES mapper 8 FFE F3xxx series Doraemon Kaitakuhen iNES mapper 9 Nintendo MMC2 Punch-Out iNES mapper 10 Nintendo MMC4 Punch-Out Syouhinban, Fire Emblem, Family War iNES mapper 11 Colour Dreams Pesterminator, Bible Adventures, Crystal Mines iNES mapper 15 100-in-1 chip 100-in-1 Contra Function 16, Crazy Climber, Mobile Suit Gundam Z iNES mapper 16 Bandai chip Dragon Ball Z series, SD Gundam Night Gundam Story 1-3 iNES mapper 17 FFE F8xxx Dynamite Batman 2, Parodius, Dragon Ball Z 3 FamiJump 2 ..etc iNES mapper 18 Jaleco SS8806 Jaleco Pro Baseball '90 iNES mapper 19 Namcot 106 Final Lap, Family Stadium '90, Splatterhouse iNES mapper 21 Konami VRC4 2A Ganbare Goemon Gaiden 2, Wai Wai World 2 iNES mapper 22 Konami VRC4 1B Twinbee 3 iNES mapper 23 Konami VRC2b Wai Wai World, Getsufuu Maden iNES mapper 24 Konami VRC6 Akumajo Dracula 3, Mouryou Senki Madara iNES mapper 25 Konami VRC4 Gradius 2, Ganbare Goemon Gaiden fwNES mapper 26 Konami VRC6V Madara,EsperDream iNES mapper 32 Irem G101 Image Fight (J), Parman iNES mapper 33 Taito TC0190/TC0350 Power Blazer, Pon Poko Pon iNES mapper 34 Nina 1 Impossible Mission 2, Deadly Towers, AVE games fwNES mapper 48 Tatio TC190V FlintStone fwNES mapper 64 Tengen Rambo-1 Klax, Shinobi, Skull and Crossbones fwNES mapper 65 Irem H3001 Daiku No Gensan, Parman 2 fwNES mapper 66 74161/32 Dragonball, Bio Sensi Dan,YoKaiClub fwNES mapper 67 Sunsoft Mapper 3 FantasyZone2J fwNES mapper 68 Sunsoft Mapper 4 Afterburner 2J fwNES mapper 69 Sunsoft Mapper 5 Batman: Return of the Joker, Batman (J) fwNES mapper 70 74161/32 KamenRiderClub.Saint Seiya,PocketZarus fwNES mapper 71 Camerica Mapper FireHwak fwNES mapper 72 Jaleco Early Mapper #0 Jaleco TennisJ,PinBallQuestJ,MoeProJudo fwNES mapper 74 Taiwan MMC3 -Varient Mapper#0 KidNiKi3J(hacked) fwNES mapper 75 Jaleco Mapper SS8805/KonamiVRC1 Jaleco BasketBall 2by2 J Ganbare Goemon1J fwNES mapper 76 Namco 109 MegamiTenshi1J fwNES mapper 77 Irem Early Mapper #0 NaporeonSenki,HolyDrive fwNES mapper 78 74161/32 CosmosCarrier. fwNES mapper 79 AmericanVideoEntertainment F15Citywar,Trolls fwNES mapper 80 Tatio X-005 Demon Sword (J) fwNES mapper 81 Tatio C075 ???????? fwNES mapper 82 Tatio X1-17 ???????? fwNES mapper 83 Cony Mapper Garou Densetu Special fwNES mapper 84 Pasofami mapper .500 and .MOD games fwNES mapper 85 Konami VRC 7 TinyToonAdv2J,Lagrange Point fwNES mapper 86 Jaleco Early Mapper #2 MoeProBaseball fwNES mapper 87 74161/32 HyperSportMT fwNES mapper 88 Namco 118 DevilManJ fwNES mapper 89 SunSoft Early Mapper MitoKoumon fwNES mapper 90 HK-TK2 Tekken2 fwNES mapper 91 HK-SF3 StreetFighter3 fwNES mapper 92 Jaleco Early Mapper #1 MoeProSoccer,MoeProBaseball88 fwNES mapper 100 MMC3/Nestice/Trainer/Buugy Mode Used in hacked roms !! *the emulator itself supports: 7 screen modes: 320x200 256x240 256x224 256x256 256x256 with scanlines 288x224 288x224 with scanlines 2 joystick options 2 button standard 4 button Gravis 1 sound choice All sound Device SEAL Lib Support ! (Digital Sound) ----------------------------------------------------- What are the minimum system requirements for fwNES? ----------------------------------------------------- this does not mean for 100% performance.. PC : IBM Compatible PC CPU : 586 (AMD, INTEL, CYRIX) 133+ Recommand RAM : 16 MB OS : DOS 6.22 or Win95 DOS Box ------------------------------------------ What are fwNES98's command line options? ------------------------------------------ -m6502 - Use Marat6502 Core Good But Slow (default) -s6502 - Use ShuKondo6502 Core ,Cool! -delay - Use it For Fast 586 or Pentium II -cycle - Number of CPU Cycles Per Scanline <114> -frameskip - Number of Frame Skip When Update Screen <2> -vbline - How many scanlines during VBLANKING [15] -irqad - Adjust IRQ for Various Mapper, Auto(default) Details later in this file -irqad2 - Adjust IRQ for Konami Mappers Auto(default) -vgamode 0: 320x200 1:256x240 2:256x224 (default) 3: 256x256 4:256x256-scanline 5:288x224 6: 288x224-scanline -vsyncon -Sync the VGA when drawing to screen -vsyncoff -TurnOff -noticker -TurnOff Sound Ticker&FPS Moniter! -palette 0: iNES's Palette 1: PasoFami's Palette 2: Loopy's Palette (default) -sound - Sound Mode 0: Off , 1: SB 2: SB AWE 3: PAS 4:UltraSound Max 5: UltraSound 6:Windows Sound System 7:Ensoniq SoundScape 8: Auto delete (default) -joy4 - Use 4 Buttom GamePad (Gravis GamePad) -joy2 - Use Standard JoyStick -nojoy - don't use joystick -k_a - customize key for Button A -k_b - customize key for Button B -k_start - customize key for Button Start -k_select - customize key for Button Select -k_up - customize key for Up -k_down - customize key for Down -k_right - customize key for Right -k_left - customize key for Left Key Scancode ------------------------------ KEY_ESC 1 KEY_1 2 KEY_2 3 KEY_3 4 KEY_4 5 KEY_5 6 KEY_6 7 KEY_7 8 KEY_8 9 KEY_9 10 KEY_0 11 KEY_MINUS 12 KEY_EQUALS 13 KEY_BACKSPACE 14 KEY_TAB 15 KEY_Q 16 KEY_W 17 KEY_E 18 KEY_R 19 KEY_T 20 KEY_Y 21 KEY_U 22 KEY_I 23 KEY_O 24 KEY_P 25 KEY_OPENBRACE 26 KEY_CLOSEBRACE 27 KEY_ENTER 28 KEY_CONTROL 29 KEY_LCONTROL 29 KEY_A 30 KEY_S 31 KEY_D 32 KEY_F 33 KEY_G 34 KEY_H 35 KEY_J 36 KEY_K 37 KEY_L 38 KEY_COLON 39 KEY_QUOTE 40 KEY_TILDE 41 KEY_LSHIFT 42 KEY_BACKSLASH 43 KEY_Z 44 KEY_X 45 KEY_C 46 KEY_V 47 KEY_B 48 KEY_N 49 KEY_M 50 KEY_COMMA 51 KEY_STOP 52 KEY_SLASH 53 KEY_RSHIFT 54 KEY_ASTERISK 55 KEY_ALT 56 KEY_SPACE 57 KEY_CAPSLOCK 58 KEY_F1 59 KEY_F2 60 KEY_F3 61 KEY_F4 62 KEY_F5 63 KEY_F6 64 KEY_F7 65 KEY_F8 66 KEY_F9 67 KEY_F10 68 KEY_NUMLOCK 69 KEY_SCRLOCK 70 KEY_HOME 71 KEY_UP 72 KEY_PGUP 73 KEY_MINUS_PAD 74 KEY_LEFT 75 KEY_5_PAD 76 KEY_RIGHT 77 KEY_PLUS_PAD 78 KEY_END 79 KEY_DOWN 80 KEY_PGDN 81 KEY_INSERT 82 KEY_DEL 83 KEY_PRTSCR 84 KEY_F11 87 KEY_F12 88 KEY_LWIN 91 KEY_RWIN 92 KEY_MENU 93 KEY_PAD 100 KEY_RCONTROL 120 KEY_ALTGR 121 KEY_SLASH2 122 KEY_PAUSE 123 Default Key Mapping : - Button A - Button B - Button Select - Button Start - Right - Left - Down <0>-<9> - RealTimeSave/Load Slot Selector ! - RealTimeSave *.RT? - RealTimeLoad *.RT? - SoftReset (as Reset Button on a NES/Famicom) - CoolReset (as Power On/Off on a NES/Famicom) - FrameSkip Increase - FrameSkip Decrease - Delay Increase ( For Faster Machine ) - Delay Decrease ( For Faster Machine ) - Enter Debugger - Save Screen into .PCX - Switch VGAMODE - Enter GUI - Exit to OS -------------------------------------- How to use GUI ? -------------------------------------- When you press "ESC" then a simple GUI will popup. Key Mapping for GUI : ESC -Cancel ,Exit ...etc Enter -Accept ,Select ...etc PageDown -Faster scrolling down in filebox PageUp -Faster scrolling up in filebox Up-Arror -move up Down-Arrow -move down F12 -Save into .PCX GUI Menu : GUI Description Nomal Function Key-equivment ------------------------------------------------------------------- Resume to Game : Return to Game SoftReset : emulate reset-button F3 HardRest : emulate power-on switch F4 Load New File : Load a new game Load RTS : Load RTS file F2 Save RTS : Save RTS file F1 Debugger : Enter a simple Debugger F11 About : About the fwNES Settings : Change Settings Exit : Quit and Exit to OS End -------------------------------------- How to use debugger (Expert Only ) -------------------------------------- Command: ? Show This Help @ Toggle Real CPU Mode # Toggle Real CPU + PPU Mode *(not yet) Toggle Edit Mode I Show 6502 INT Vector S Dump Sprite Ram N Show Cart Infos V Show 6502 Regs T Show Current Pallete Color U Show PPU Regs F Show Current Screen D Disassembly at M Memory Dump at : .. Modify at with ./ Serach pattern from ssss to eeee .W Write to a file from ssss to eeee R Read from a from ,put at addr .Z Fill from ssss to eeee G [M6502 Only] Continue from addr C [M6502 Only] Coutinue without break B [M6502 Only] Break at addr O [M6502 Only] Break at PC + offset Q Exit to Emulator !!!!Notice!!!!!!!!!!!!! Real CPU Mode mean mapping 64K 6502 Space into 0-FFFF Real CPU + PPU Mode mean mapping 0-3fff VRAM and 4000-FFFF 6502 Space into 0-FFFF Edit Mode mean mapping PRG+CHR into 0-XXXXX ,xxxxx depend on size of PRG+CHR -------------------------------------- What are fwNES's current known bugs? -------------------------------------- 1. PPU emulation not perfect 2. Pallette Bugs/background & sprite prorities 3. mapper 6/Namco/MMC5/ not fully supported. 4. HitFlag and Split handling Buggy 5. No Gravis Grip Supported . 6. Will crash some computers :P (i don't think so really) 7. Unknown ----------------------------- Frequently Asked Questions ----------------------------- 0.20 Version 1. Q:Can i re-define key for Button A ? A:Sure in 0.20 ,you can define your own key for A,B,Select,Start,Up,Down,Left,Right! you can use command line option ,or under GUI,it will be save into .INI automatically ! 2. Q:My roms can't work with the mapper you assigned !! A:No way ,if you have well dump,no trained ,raw roms,it should work well ! 3. Q:i hear rumor ,fwNES will support FDS in 0.20 ? but i don't know how to use it ! A:Not yet,althought fwNES did add some FDS register into it ! 4. Q:Konami Game Work well in fwNES yet ? A:Sure,fwNES 0.20's key feature is a solution for All Konami Games, Konami VRC 1 - 7,but you may need to use -vbline to adjust some each game or not !!! Some Game only work on Shu 's S6502 well .so you must try yourself !! 5. Q:i used to use fwNES 0.15 ,and my favorite game can't work with 0.20 !! A:Send your title name and bug report to me ! i will fix it ASAP . 6. Q: Does mapper #90 ,#91 really supported and those title exist ? A: yeah . those carts are made in HK or TW or China. 7. Q:some game work worse than 0.15 ,like Castle Vania 1 A:most US/NES games use -vbline 16 is okay . most JP/Famicom use -vbline 24 is okay . you can check it yourself .and vbline is a powerful option for fwNES. correct value for a game, will let you enjoy it more ! 8. Q:it seem some bug in GUI? A: yeah ..maybe ...i strong recommand you use commandline to load games , or use a front-end until fwNES's GUI free of bugs ! 0.15 Version 1. Q: How can i use RealTime Save/Load function ? A: press "F1"to save current game ,press "F2" load saved games. 2. Q: I want save more current game ,can i ? A: YES.sure,you just press 0 to 9 to switch current slot . default slot is 0 when starting fwNES . *.RT0 -> *.RT9 3. Q: Oh.I like the gameplay screen ,can i save it ? A: Yes,you can press "F12" to dump SCREEN into .PCX . Rules is that: if you play fwnes.NES ,it will auto save .PCX into fwnes01.pcx,fwnes02.pcx .....so on. 4. Q: Why you have so many 6502 Core within fwNES ? A: bcos .each 6502 has its disadvtage and advantages.! Marat 6502 Core is good but SLOW ! Neil 6502 Core is fast but buggy! ShuKondo 6502 Core is the one i perfer :) A Tip : try fwnes98 ff2j.nes -s6502 -vbline 24 -frameskip 0 -sound 1 -joy4 -delay 0 to get best gameplay with FinalFantasy 2 J .. 5. Q: Can i use RealTime Save/Load function cross 6502 Core ? A: Probaly YES,but i don't suggest you to do . if you use M6502 then keep using it . 6. Q: I want reset all emulator status ? how to do ? A: Deleted .INI . 7. Q: My favorite game seem not supported? A: Send me your game mapper infos.i will try my best to support it ! 8. Q: your emulator is too fast on my machine ? how to slow down? A: -frameskip 0 , -delay <0-30> ..or turn on Vsync ! 9. Q:I have a AWE32/64 Gold .it has no sound when using fwNES ? A:Bcos of SEAL Sound Lib ..you must set your sound device to SB mode -sound 1 . 10. Q: What is Mapper #100 for ? A: bcos Nestice 's MMC3 Buggy emulation... so there are tons of trained games. you must use this for those game (Trained for Nesticle ). 0.10 Version 1. Q: What is an Emulator? A: if you don't know what is emulator,then forget fwnes :P . you can read some articles from newsgroups or some web sites to find out. check out http://zophar.internexus.net 2. Q: What do you need to run fwnes98? A: you need a DPMI server to run fwnes98, CSWDPMI.EXE (default) or under Win95's dos box. 3. Q: Where are some games? A: I don't know.. do a web search, or check out http://emu.internexus.net/Vertigo/ 4. Q: How do i convert my carts to work with fwnes98? A: using some custom copying devices...i know there is one called "IO/56" 5. Q: How can i backup savegames when i quit the game ? A: There are 2 type game backup systems, one is EPROM Backup, the other is Battery Backup. fwNES98 will autosave into .sav if the type is Battery. As for EPROM, sorry but fwNES98 doesn't support realtime load/save yet. 6. Q: This Game doesn't work with fwNES98 ! A: If Gray screen,then check the header of the ROM..is it correct? Number of Prg Block, Number of Chr Block? Trainer? ..etc 7. Q: The gameplay scrolling is wrong? A: Change the header of file...Vertical mirroring / Horzontal mirroring 8. Q: The graphics still messed up or no status bar A: try -ppufix2, wizard&warrior 1, 2, Cobra Triangle .. -ppufix1 for DragonBall 2 ,DragonBall 3 (i hate the Rare games :P breaking my handling for PPU) 9. Q: The game loads, but locks up during gameplay, or at the title screen. A: adjust -cycle and -vbline ... try increasing the number. 10. Q: The graphics are messed up in some scanlines only . A: using -irqad to adjust it Mappers A) 4 /*MMC3 */ 5 /*MMC5 */ 64 /*Rambo */ -irqad A 0