Last update: 14.3.99
thanx to nutella
General Information:
Numeric parameters of the commands are decimal. If you want hexadecimal,
add the prefix 0x.
If you know any interesting facts about a command, then
write an EMail.
Console keys (while the rom is not running):
Console keys (while the console screen is active and the rom is running):
F1 Window "Stats" F2 Window "Data" (move with arrows) F3 Window "Code" (move with arrows) F4 Window "Console" F5 Run current rom F6 Switch view of registers F8 Single step (like "s") F9 Step skipping calls (like "n") F12 Flip 3dfx screen Arrow UP command history PGUP Scroll console ESC Stop scrolling
Dump commands:
Q Shows the textures and a wire frame model W turns wire frame mode on or off E Switch between the layers F5 Saves state into "ultra.sav" F9 Loads state from "ultra.sav" F12 Flip 3dfx screen ESC Stops execution
File commands:
info Dumps some info about every frame in 'ultra.log' e.g.:
Frame 70: 0 modes, 0 newtext, 2 text, 1793 vtx, 684 prim
[sound: added 17024, used 88124, sync +8028, status 1]--os Dumps the os calls in 'ultra.log' e.g.:
{{ 00000066 <- queue 4 (num= 0, thr= 3, ra=80002540) }}
{{ 803B70D8 <- queue 3 (num= 0, thr= 3, ra=80001FEC) }}
osVirtualToPhysical(800DB830)=000DB830hw Dumps something about the DMA accesses by the sound in 'ultra.log' e.g.:
Soundlist 530 commands.
hw-sp: command 00002B00 status=00000001
hw-sp: dma 001964C0->04000FC0,3F Taskload (type=2, flags=0)
hw-sp: dma 000D8F70->04001000,CF
hw-sp: command 00000125 go! status=00000001
hw-sp: task 001964C0 (type=0002,flag=0000,ucode=000DB830/1000,data=003BFA30/1088,boot=800D8F70/00D0,yield=00000000/0000)gfx Dumps many things about the graphic, I think nearly everything in 'x.log' (e.g.: every rendered triangle), in 'rsp.log' the RSP micro code, number of graphic commands for each frame in 'ultra.log' and something in 'dlist.log'. (The use of this command slows down the speed of UltraHLE extremly, and after using this command, the synchronization is broken) snd Dumps many things about the sound: all sound commands in 'slist.log', rsp micro code in 'rspaudio.log', the same rsp micro code with other rsp data in 'rspboot.log' wav Dumps the sound in audio.wav and audio2.wav (one for each channel) trace Dumps all function return adresses in 'ultra.log' e.g.:
T07-ret to 800CFDE4ops Dumps full operation trace info asm Dumps something like that:
compiler: group 800BE75C size 5 (op=21)
compiler: group 800BE75C succeeded
in 'ultra.log'.all Dumps: info, os, gfx, snd and trace (For hard-core debugging) stop %i Stops dumping:
i=0 on exception
i=1 on exception and error
i=2 on exception, error and warning
Step and breakpoint commands
help display little info (more help output coming soon) Exit, X Exit UltraHLE Reset Reset game Save %s Save state, if "%s" is not indicated, the state is saved in ultra.sav Load %s Load state, if "%s" is not indicated, it load ultra.sav Rom %s Open rom image "%s" Go runs current rom ogo old go (using older compiler) sgo slow go (using c emulator)
skip %i skips i instractions goto %i goto address s as F8, step into (step into call) n as F9, step over (step over call) Mw, Mr, Ma, Mc execute until data address of cursor is "w"ritten, "r"ead, "a"ccessed or "c"hanged Nt, Nr, Nm, Nc, Nf Execute until next thread, next ret, next message, next call or next frame t execute until the code reaches the current cursor line f, of ?
Display and change memory
OS commands
. (dot) Go to the current instruction (code pane) u %i unassembles instructions at position "%i" d %i display memory at position "%i" e, eb %i1 %i2 write at position "%i1", "%i2" into memory (e: dword, eb: byte) ss %s search for "%s" ssr search for "%s" (relative) ssmario Search for something in "mario 64" snap make snapshot into memory snaphw ? fill ? filltst ? regs change registry display
Other commands
SaveOSCalls Saves OS calls to 'oscall.h' and 'oscall.lst' FindOS Finds OS calls in memory ListOS List all OS Calls and where they have been found in rom Sym List symbols
Short instruction how to use the debug console:
mouse only avaible with UltraHLP v 2.1, enables or disables mouse support pad ? keys enables or disables keyboard and joystick input hide3dfx If you press "Esc" while you are in glide mode, and the window do not switch, type" hide3dfx", then the window will switch. show3dfx If you are in the debug window and press F5, there is no switch to glide mode, if you had not typed "show3dfx" before. swap ? (After use computer crashed) sound turns sound on and off pimem ? soundsync no effect (soundsync always enabled) gfxThread turns the gfxthread on and off graphics turns the graphic output on and off zeldajap turns zelda language japanese zeldaeng turns zelda language english setreg %i1 %i2 Sets the register "%i1" to the value "%i2" camera %1 %2 %3 moves camera resolution %i Sets resolution to (320<="%i"<=2048)
x-Resolution: "%i"
y-Resolution: 0,75*"%i"wireframe %i "wireframe 0" turns off,
"wireframe 1" turns on wireframeboot ? memory Shows the memory RDRAM group, compile Unassemble current group disasm %1 %2 %3 disassemble the code at "%2" with the length "%3" to file "%1" disasmrsp %1 %2 disassemble the rsp code at "%2" to file "%1" savemem %1 %2 %3 Saves a memory block at position "%2" with the length "%3" to file "%1". stat very interesting stat about the use of the emulated processor stat2 statistik about compiled opcodes stat3 "not supported profiling option" OSInfo ? ClearOSInfo ? Emptyq clears all queues Event %i generates event "%i" send %i1 %i2 sends "%i2" to queue "%i1" example ? example2 ? screen if glide mode is active, screen makes a screenshot in 1.tga, 2.tga, ...
If you effectively want to use the debug console, you need two monitors, which is possible under Windows98. You move the console into your second monitor, which is not connected with your 3dfx card. If the debug screen is to tall for your second monitor, doubleclick the titlebar and the window will fit.
Now you load a rom either using the menu (File/Open), or the command "Rom". If you simply want to start the rom, type "show3dfx" and then "go" (alternative you can try "ogo" or "sgo" (just for fun)). You will now see the game on the "3dfx screen" and the console window with the current statistic on the other monitor. Besides, the console screen is active, and you are able to use the console commands like "w", "q", and so on (s.a.). By pressing escape you stop the execution, but your "3dfx screen" will not switch (the screen will switch if you either input "hide3dfx", or press F12).
It is time to debug. One example how to use some of the debug commands will come soon.
Back to main page