Nemu64 - Version 0.7a =========================== Content 0. Introduction <- please read 1. System Requirements 2. History 3. Status 4. Quick tutorial 5. Cheats 6. The team / contact us 7. Disclaimer 0. Introduction * This part was written for release 0.7 * This is the first release in a loooong time we know. Alot has changed. We have examined a new way of designing an emu and have been very successful. Many of the ideas explored in UltraHLE were used in nemu. These ideas are also being uses in alot of other emus, and I believe its great. Some people do not like it, but I believe it brings a new exciting aspect into emulation programming. This new idea of HLE "high level emulation" has really been a good tool in increasing speed. The problem with high level emulation is that it decreases compatibility. The emu uses HLE in order to increase speed. But if it uses too much then compatibility decreases. So unlike an emulator like UltraHLE we do not use high level emulation of the CPU. This requires lots of patches and things that "break" alot of roms. You know what we are refering to if you have ever looked at UltraHLE's ini. Now we are not trying to give a negative view on UltraHLE but we do think it is not the BEST way to emulate the n64. Actually, no HLE would be the best way to emulate it, but right now we do not believe it is possible with todays current PC's. That is, not to be able to run roms at full speed. The more compatible our emulator becomes the more cpu time is needed. This is why we require a much more powerful cpu. Although we plan on some more optimizations to help with this. All of our CPU core is built to handle alot of the things that make n64 emulation difficult to run full speed... things like dynamically allocated and modified code, and address translation. It does not use a patching mechanism so it is more compatible this way. A good example of the success of this method is that when a new game is released... it nearly works without a problem in nemu. Of course, this is not true for all cases... this is because our cpu core is not yet perfect and the graphics and audio are HLE'd. We are very happy to see that a game like "Ridge Racer 64" runs fairly well when released without any modification to our emu. This is what we strive for in creating a very compatible n64 emulator. We know there are people working on emulators that will completely emulation the n64 on a low level basis... which of course makes compatibility very close to 100%. And we respect their efforts and we will eventually/probably take the same route. We would love to be proved wrong, but we do not believe this is an acheivable goal to run full speed on todays pc's. This will of course change in the future. The current state of our emulator is at a point in which the cpu core is fairly stable with a few bugs that need to be worked out, especially in timing. Because of this, we will be able to update our emulator more often. So hopefully in the future we won't have long delays between releases. - LaC 1. System Requirements ----------------------- So you are wondering what sort of computer is good for running this version of Nemu huh? Or you wonder what your should upgrade to? Well this is what we test under, so it makes sense to get it. Now thats not saying that other configurations won't work just as well. -Minimum Requirements: CPU: Pentium II class cpu or compatible. Suggest 300mhz at least. Video: nVidia TNT/TNT2 or card capable of supporting Direct-3D. Sound: A card that is capable of playing any sample rate. Memory: 64 Meg RAM -Recommended Requirements: CPU: Pentium II / III 450mhz for most games should run decent. Video: Card with nVidia chipset (TNT2 ULTRA) Sound: Sound Blaster Live Memory: 128 Meg RAM -IN ORDER TO KICKASS Requirements: CPU: Pentium III 700 or Amd Athlon 700 or greater Video: TNT2 ULTRA or GeForce DDR card Sound: Sound Blaster Live Memory: 192-256 Meg RAM We haven't tested it on a PIII 700 or Athlon. So if anyone wants to send US a system to test contact "lac@nemu.com" ;) 2. History What's new in 0.7a (released 3/23/00) ----------------------- Added new improved INI! This one is huge! *** Lemmy *** - Fixed turned on Sync Speed by default. Some people forgot to turn this on in last release. Its a good idea to leave on because it helps things stay synced. - Fixed it so that you can use the video.dll from nemu 0.6, this is nice because some people's video card likes this dll better, but graphics are no where near as good as in 0.7. *** LaC *** - Fixed mempack / eeprom bugs No longer need to turn of mempack or rumblepack to run games like extreme-g or others that normaly crash when they are on. - Added option to change the cartridge eeprom size. Do this by setting EepromSize = 2048 in the ini for the specific game. A game that this helps is Evangelion JAP. Although it will be very useful for other games that use this eeprom size in the future. - Changed input.dll configuration screen so you can see all of the button text. Lots of people complained about not being able to see their button names, hopefully this helps you. - Recoded the Audio HLE resampler to produce accurate sounds in games. This gives a generally more crisp sound to some of the audio and gets rid of "buzzing" sounds in the samples. Good example of this is in starfox's intro. This does not prevent sound skips and studders however. - Added "High Quality" option to the dll configuration screen. This will allow people to hear much higher quality sound IF you have a fast enough cpu. I will optimise this to run as fast as low quality sound by next release. A good example of this being used is the sound in konami logos and the intro music in mystical ninja. Small things like Mario's footsteps also have a better effect to them. (Dont use this option unless you want emulation to slow down even more). *** hWnd *** - Fixed the problem with the New Combiner in mario64. You can now leave this option on and mario's head isn't black. - Added Software mode back in by popular demand. Remember this is SLOW! - Fixed minor graphics bugs in some games. Also added a few bugs accidentally. An example is starfox's ground is all messed up. If you have a problem with this use the old video.dll from nemu 0.7. Yoshi's Story JAP now is almost playable (backgrounds messed up). - Fixed bug that caused Komani sports games to crash. Like Perfect Striker JAP and ISS-64. These games should now work ok. What's new in 0.7 (released 2/27/00) ----------------------- I guess the features you will enjoy most are Audio HLE support, GBI=3 support and MAJOR compatibility and speed improvements. Here is a more detailed list, but as it has been almost half a year since the last release I am sure I missed lots of stuff :) *** Lemmy *** - Major speed ups (block dynrec) - Major compatibility improvements, including * Added opcodes: LDL, LDR, SDL, SDR, all cop1 compare instructions --> Ridge Racer works * Fixed an interrupt bug --> The Legend of Zelda works * Support for 8 MB RDRAM memory --> Donkey Kong 64 at least boots * Fixed BGEZAL and similar instructions * Fixed a bug that makes Banjo work (thanks Fires) - Several ways of detecting self modifying code (set in ini by compilermode=x) - Can resume emulation if video or audio code crashes - Improved DMA handling - Slowdown code - if emulation is too fast it is slowed down, so speed is at 100%. This is highly recommended for good audio. - Improved GUI - Can read headers of read only files - Turbo/Auto-Fire feature (try doing a triple jump in mario with this turned on :)) - Much, much more *** hWnd *** - Improved pipelining for Major speed ups - Added GBI=3 support (most new games after Zelda use it) - Added GBI=4 support ("specialty" GBI for WaveRace US) - Autodetection of GBI=3. Many new games do not require a GBI entry as GBI=3 should autodetect. - Corrected viewport control. This allows games with "windows" like multiplayer racing games to function properly. - Corrected the lighting. Now areas that were previously lit poorly or not at all work right. Examples are the Superman character, the Ship in Starfox, and the cars in Automobilli Lamborghini - More dynamic color combiner. (The color combiner is the N64 "paint box", it can be used to create all sorts of effects, and is one of the harder parts of n64 emulation to get correct. I have an option in my config called "New Combine" if this is checked, my new (partially complete) combiner will be used. It is better in some games, worse in others. If a game does not look right to you, you may get better results with the old combiner, try each and use which one is best for each game) - Fixed the aspect ratio for PAL games. They should fit onscreen now properly. - Added an on-screen FPS counter. To avoid confusion, let me briefly explain the different counters we use. The VI/sec counter below the screen is a hardware relative counter and *should* hover around 60. DL/sec is a hardware relative counter that indicates the number of display lists sent to the graphics chip. This usually, but not always corresponds to what we know of as frames per second. The on-screen FPS counter is an actual time-based count of the number of frames I show you and is probably the number you want to look at for comparisons. - Removed Software Mode. This is going to get me tons of gripes, but it is just too complex an emulation to run in software mode. FPS are on the order of 1-5 and supporting it is not worthwhile. A TNT card is available over the internet for less than $100 and should be ok for Nemu. I suggest saving and purchasing a TNT2 or GeForce card tho instead, as you will like it better. TNT is available for PCI, if you don't have an AGP slot. - Removed Frameskip Option. Also lots of gripes coming. I took this out because it was a hack and should not be in the video portion of the emulation. We will very likely put a frameskip option in the exe portion at some time in the future. - Added Screenshot Mode. This is for you to test if a video problem is in Nemu or in your card/drivers. Turn this mode on and wait (it is very slow). When a new frame shows, if it looks just the same as before, it's a nemu bug. If the problem clears up, it's a video card/driver bug, and you should either upgrade your card or drivers. Also useful for making screenshots, as it avoids graphics glitches base on what card you use. *** LaC *** - Fixed a Shift Right bug --> F-Zero works - Adaptoid support (including rumble pack support) http://www.wishtech.com - HLE Audio support (audio in 99% of commercial games) - Prebuffering (increased audio quality for some roms, also needed by some roms) Notes about adaptoid: The adaptoid is a great piece of hardware from www.wishtech.com. I suggest anyone who wants perfect n64 emulation of the controller to get one of these dudes. Its great and has full support or stuff like rumblepack and mempacks. Nemu has perfect support for the adaptoid. You just have to make sure its plugged in and select it in the input config. Goto control panel and then joystick to find out what button maps to what so you can config it in nemu. Currently there is a problem with having more than one adaptoid plugged in. We are using a mix of accessing the adaptoid low level and with direct input. Well this causes more than one adaptoid to recieve the wrong rumble commandsm, so rumbling is bad with more than one controller usually. This is a problem with adaptoid drivers and promises to be fixed in the next adaptoid driver released. Notes about audio: AudioHLE support for commercial games was actually ready since nemu 0.6. But it was not available in that 0.6 audio.dll because there was no "speed limiter" which slowed down the games to sync audio. Well this is much better in this release and works fairly well for most games. Some game have annoying pops and clicks though. This is usually because the game either runs too _fast_ or too _slow_. The speed limiter tries to make it run just right. I have included some new options in the audio config. I suggest you dont modify this options while running the Rom. Results are unpredictable. []HLE Audio : This allows you to turn off/on the audio in commercial games. Turning it off gives you a small speedboost. []Reverse Stereo: Some games the stereo effect are wrong. So I added this option to fix that temporarily. One game that comes to mind that needs this is starfox jap/us. []Prebuffering: This is an option to get rid of pops and clicks in the audio for commercial games. There is a problem with this though. It causes the audio to sound "delayed". Like you punch in mario64 and then hear it 0.5 seconds later. This doesnt really help if your PC is not fast enough to run the game full speed. Also this mode has been known to cause the audio to freeze. Only one game I can think of that actually requires this option is starfox. *work in progress* []HLE PCM: This will record the audio to the harddrive in a file called HLE.pcm. This is standard raw pcm audio with no header. Can be opened in programs such as "cool edit". This is for commercial games usually. []AI PCM: This will record the audio to the harddrive in a file called AI.pcm. This is standard raw pcm audio with no header. Can be opened in programs such as "cool edit". This is good for homebrew demos and games usualy. Enjoy !! What's new in 0.6 (released 9/13/99) ----------------------- There is so much new. I don't remember everything :). But this should cover most *** Lemmy *** - MUCH higher game support. This is the most compatible Nemu64 ever :) - Support for extra EEProm and Mempack folders, so roms can be directly executed from read-only devices like cds or read-only network drives - Favourite folders - Support for higher resolutions - Statefile support - Joystick and Keyboard support via DirectInput - highly configurable - Alignment support - on newer PCs (PII or better) this can be faster - Dynamic TLB - speed increase for non-tlb roms - Several CPU speed ups and bugfixes - Added DL/s - this is a more accurate FPS counter. It only works in rcp roms (like commercial games and 3d demos) *** LaC *** - Better lle sound support - hardly any gaps now - Better PifRAM support (EEProm, RumblePack, Mempack, Controllers) *** hWnd *** - Support for multiple higher resolutions - Improved graphics in many games - Automatic texture coordinate generation (reflection mapping) - Many combine modes added. - Much improved optimization of D3D calls (speed) What's new in 0.5a (released 6/29/99) ----------------------- Due to heavy demand I added support for roms that were flipped with fliprom. Nothing else is new in this release. What's new in 0.5 (released 6/29/99) ----------------------- This is the first release that plays commercial games (Mario64, WaveRace JAP, MarioKart, Mortal Kombat Trilogy, Starfox and many more). There is so much new, I don't know where to start :) *** Lemmy *** - Completed Dynamic Recompilation core - Fixed so many cpu bugs. CPU core has been completely rewritten two times since the last release - Speeded up COP1 and removed bugs - TLB support. Requires for Mario, Tetris64 and many more - New and much better GUI that makes rom loading much easier - Support for cheats. Take a look at chapter 4 to find out how it works - UCode detection by CRC. To learn more about it check chapter 5 - Support for rom-based settings. Right now only eeprom support is stored. This allows you to disable eeprom in certain games (WaveRace JAP requires that) - Much, much more... *** hWnd *** - HLE-Graphics are done by the DirectX 6.0 video plugin, its current capabilities: * Cfb graphics * Hardware acceleration if you own an accelerator card * Texture caching * Support for two ucodes * Lighting *** LaC *** - Audio is done by the audio plugin, but it is still the same as in the last release. Next version is planned to support hle-audio. - Eeprom support, that allows you to use real save games. You can even download them from www.dextrose.com and use them in Nemu. - Mempack support This version is not very optimized yet. We expect to get it alot faster with faster d3d implementation and register caching in the dynarec core. This is the reason why we are slower than UltraHLE, but that should change in the future. On the plus site, our cpu core is very accurate because every opcode is completely emulated as 64 bit opcode. What's new in 0.02 (released 4/6/99) ----------------------- This is a pretty big update. The big news is that I have started dynamic recompilation, which made Nemu64 MUCH faster. Of course, the new core seems to have some bugs, but almost every cpu-only demo works perfectly. Also new in this release is more rdp and rsp emulation. Many rdp-demos show graphics. But there seems to be a timing problem (especially in demot and vnes). I think the main cpu is simply too fast for the rsp/rdp. I will have to find a way around that. This problem also occurs in vsfintro; sometimes it shows the stars, sometimes it doesn't. I also added the possibility to play a rom without loading it completely into memory. But it only works, if your rom is not byteswapped. - Dynamic Recompilation - Bugfixes in the CPU core - More bugfixes in the CPU core - Even more bugfixes in the CPU core - Changed handling of invalid opcodes, so the emu doesn't crash that much anymore - DirectDraw plugin (I planned to release a new DIB plugin, too...but I think everyone is happy with the DirectDraw plugin) - Bugfixes in the DirectSound plugin; doesn't crash anymore if you don't have a soundcard - Added "dummy sound" plugin, so you can turn sound off if you experience any problems. You have to download this plugin seperately and replace the file Audio.dll in Nemu64's folder (close Nemu64 before ;-) ) - Speeded up COP1 (floating point unit) - Added some more RSP opcodes - Added some sprite types to the RDP Graphics engine - Added possibility to let the graphics plugin do RDP. This is generally faster, because we can use hardware acceleration, but some demos don't allow that. In commercial games it should be no problem. This option can be turned on in the settings dialog. Currently it isn't implemented very well. - Added speed hacks. With them turned on you can play pong at a very high framerate - Added pause function What's new in 0.012 (released 3/17/99) ----------------------- New release after one week. I implemented more RCP (RSP/RDP) emulation and I am getting first results! Mortal Kombat shows up the title screen, vnes64 "works" (tried with Zelda 1) and Virtual Springfield Site also displays some nice things. All these RDP roms use the sprite engine of the n64. My emu- lation for it is very buggy. The reason why I haven't fixed them yet is that I am going to rewrite my RDP graphics core. - Added many RSP opcodes, especially LWC2/SWC2 - Opcodes - Added some RDP opcodes like DrawTextureRect and SetTile - Added support for SI DMA write (copy from SPIMEM/SPDMEM to RDRAM) - changed RDRAM size from 4 to 8 MB (not really necessary, but some games have extensions for that) Please note that I released this version because Nemu will get a major internal change, because I am now really starting RDP emulation. I will try to get things working with Direct3D. Maybe I will add OpenGL or Glide later. What's new in 0.011 (released 3/10/99) ----------------------- OK...this time's big news is controller #1 support! You can play pong and see the fractal in fzoom. Also Liner works and every other demo I tested, too. I can't wait to see the updated compatibility list on cn64es :-) - fixed the rotate bug (LH was wrong) - fixed bug in LWL and LWR ==> controllers work (thanks to Dimitri and LaC!) - fixed analog up - increased analog stick support: try holding shift while moving the analog stick to a direction What's new in 0.01 (released 3/8/99) ----------------------- I implemented audio and basic controller support. It works quite fine in about 10 demos. - Controllers are partially working....right now they only work in liner. The key mapping is following: A,S,X : The 3 main buttons Cursor UP, DOWN, LEFT, RIGHT : Analog Stick (always at maximum) I,K,J,L : C-Buttons (used in liner to control the line) T,G,F,H : Joypad Return : Start Button - RSP bug fixed....RSP code executes now correctly - Almost complete Audio Emulation (missing: 8 (and maybe 4) Bit sound support, only 16 Bit implemented) - Internal changes - fixed problem with vi interrupt - changed the way the screen refreshes ==> Liner works What's new in 0.009 ----------------------- - more RSP, no results yet - did some more cpu and cop1 opcodes, now almost all important opcodes are implemented - implemented automatic crc fix - changed many internal things - speed increased again - bugfixes....(for example rpa bug is fixed) What's new in 0.008 ----------------------- - Better PI Interrupt --> many more demos work - more rsp emulation, some roms use rsp :-) but crash :-( What's new in 0.007b ----------------------- - Bugfixes What's new in 0.007a ----------------------- - fixed the 640x480 bug - fixed a bug in the PI Interrupt What's new in 0.007 ----------------------- - Implemented an opcode to see the title of vnes - Speed increase - Support for VI_CURRENT_LINE_REG --> CRAP #1 and #2 work better than in PUR now - started rsp emulation, but nothing works yet (maybe some rsp demos crash now) - some other things What's new in 0.006 ----------------------- - You don't have to restart Nemu64 in order to load another rom. - You can close a rom now - minor speed increase - Editor for rom headers - check it out - Added a few opcodes of the fpu (now about 42% complete) - Fixed a major bug in the SI Interrupt. Now SP_CRAP runs partially 3. Status (Status of 0.7) - The main cpu is 99% complete (using block dynamic recompilation). - Audio and HLE Audio works - Support for 4 Controllers, mempacks, rumblepacks (via Adaptoid http://www.wishtech.com) - RCP is simulated via HLE, so almost every demo runs and many games work. 4. Quick (very quick) tutorial Start the emu, select a rom and double click it. Everything should work :) 5. Cheats This is a short explanation how to use cheats in Nemu64. Nemu64 has a built in search function so you should be able to find many cheats very easily. To understand how it works I give an example, how I found out the cheat to the points in Pong. First you have to start pong in Nemu64. Now try to win one round in pong so you get one point. At this time somewhere in the emulated memory must be the value '1'. Now enter the cheat window. In the "search cheat" input field you enter '1' and click on search. After a very short time nemu displays how many times it found that value. I got 58 hits. One of these memory locations is the one we search for, but testing 58 would be some work. So press close and then close the cheat window. Play pong until you have '2' points. Enter cheat window again and search for '2'. You should now find exactly 1 hit (0x01C068). This is the memory location of the Left Player Points. Give this location a name and click add. Now you can enter any value you want to cheat the game :) You can also add cheats of UltraHLE to Nemu64, but they need to be converted a little bit. Let me explain the structure of an UltraHLE cheat first. This is an example of the cheat that gives Mario 99 lifes: patch=-1, 8033B21D, byte 99 'patch=-1' means the cheat is assigned on every frame '8033B21D' is the memory location of the cheat 'byte' tells UltraHLE to use only one byte '99' is the value to put in (in this example 99 lifes) A difference between UltraHLE and Nemu64 cheats is that UltraHLE assigns cheats on every frame, but in Nemu64 you decide when to change that value and you enter a value at runtime. To use this cheat we need to tell Nemu64 the memory address. To do that you need to modify Nemu64.ini manually. To add Mario-cheats you need to modify the section '[SUPER MARIO 64.Cheats]'. The converted Nemu64 cheat would be: 33B21D=B,Lifes The memory address in UltraHLE has '80' as leading digits. They need to be deleted for Nemu64. 'B' means we are using a byte cheat (b=byte, w=word, d=dword, q=qword). 'Lifes' is the descritpion. The value '99' isn't needed as you enter the new value in the cheat window. 6. The team / contact us Lemmy: If you want to contact me, please go to #nemu64 on EFNet or send me a mail at lemmy@nemu.com. Please know, that I won't give you any commercial roms, because they are copyrighted. hWnd: hWnd can be contacted either on #nemu64 or at his email hWnd@nemu.com. Please do not send rom requests, or requests for copies of the program. All mail will be read, but there is no time to reply to all of it. LaC: LaC can be contact at lac@nemu.com. Or in #n64dev on irc EFNet. The official site is www.nemu.com. It is mastered by EinsteinII. The Logo is done by renderman. Beta Testers are EmuManiac, Coolbest and Zoric. 7. Disclaimer We do not have any association with Nintendo, or any of its affiliates. This program was developed for non-commercial use and is not intended to compete with the Nintendo 64. The name Nintendo and various other names and service marks are owned by either Nintendo or their respective owners. No guarantee is given that this program will run any specific rom, or even that it will run anything at all. We do not take responsiblility for any crashes or loss of data or work that may result from using this program. Greetings Lemmy LaC and hWnd