Debug commands for the UltraHLE debugger





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

 
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
Console keys (while the console screen is active and the rom is running):
 
 
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
Dump 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)=000DB830
hw 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 800CFDE4
ops 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
File 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)
Step and breakpoint commands
 
 
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

 
. (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
OS 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
Other commands
 
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 wireframe
boot ?
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, ...
Short instruction how to use the debug console:
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