-------------------------------------------------------------------------------- Project DLViewer December 2010 by xdaniel -------------------------------------------------------------------------------- - Usage: -------- Just start the program's executable, everything else is done using the following commands/controls. - Controls: ----------- - Mouse: Control camera direction (not in RDRAM mode) - W/A/S/D: Control camera position (not in RDRAM mode) - F11: Toggle wireframe grid - F12: Toggle HUD - Numpad +/-: Render next/previous recorded Display List (not in RDRAM mode) - Commands: ----------- Like OZMAV2 and ZSaten, the program uses a libMISAKA-based console interface. Mostly everything is done using it. Here's an overview of the program's commands, a shorter version of which is available using the 'help' command. - loadscript: Load command script () This command loads a 'command script' from an external text file. It's basically a list consisting of the commands below, executed in order of appearance in the file. It's tedious to manually load one file into a segment, load another one into another segment, set the scaling, etc., etc., so this makes it somewhat easier to deal with. - setucode: Set Ucode to emulate () This commands tells the program what microcode to emulate. Valid are 'Fast3D', 'F3DEX' and 'F3DEX2', although F3DEX2 is the only one that's really been tested. The other two work to an extend, but might exhibit glitches that the latter doesn't. - loadram: Load file to RDRAM This loads the given file - usually a 4 or 8 MB RAM dump - into the emulated RDRAM. This way, one can basically replicate a video frame from an emulator. Keep in mind, tho, that libbadRDP's emulation/simulation of the N64's hardware is inaccurate (see the Ucode comment above), so it's probably not going to look -exactly- like in an emulator. - loadseg: Load file to segment (<[0x]segment> ) This loads the given file into the given RAM segment. This is how you load ex. maps, scenes and objects from the Zelda games - you need to know what segment the data is supposed to go into, though (maps are 0x03, scenes 0x02, objects 0x06, gameplay files are 0x04/0x05, etc.). - finddlists: Find possible Display Lists (<[0x]segment>) This function scans the given segment for possible Display List addresses. First, it tries to find addresses by searching for DL commands (as used ex. in Zelda's maps), if it doesn't find any (like ex. in Zelda's objects), it goes scanning for PIPESYNCs and certain other commands, in turn trying to avoid false positives by also looking for ENDDL commands in between the current at last possible hit. Well, the source code will probably explain it better. (not in RDRAM mode) - clearseg: Clear specified segment (<[0x]segment>) Pretty self-explanatory; this clears the given RAM segment. (not in RDRAM mode) - adddlist: Add Display List address (<[0x]address>) This adds the specified address to the list of Display List addresses to be rendered. If you know a Display List's address, this function should be preferred to the scanning function above. In addition, this function allows you to specify the rendering order - each call to the function adds the Display List address to the end of the queue. - cleardlists: Clear known Display Lists addresses Again self-explanatory; this clears the Display List address queue. - setscale: Set scaling factor () This function sets the scaling factor used when rendering the Display Lists. For example, maps in the Zelda games are ridiculously big when rendered with a factor of 1.0 or even 0.1. 0.005 is a good value for those. (not in RDRAM mode) - about: About the program Also self-explanatory, I presume. - Scripts: ---------- As mentioned above, the program is capable of loading a 'command script' from a given text file. This is a simple list of the above commands and their parameters, which are then executed in order. An example file is included in the form of 'script.txt'. --------------------------------------------------------------------------------