| Main Download Debug commands
|
How does UltraHLP work?? The main part of UltraHLP is a "Patch engine", which is inserted into
UltraHLE. This engine reads all patch information out of the "ultra.kwl"
file. So we get the possibility to patch parts of the loaded "ultra.exe",
e.g. some variables. This is much better, then just directly patch "ultra.exe",
because the full data segment (which extends from 0044800h to 00F8DD18h)
is virtual memory and not physically existing in the exe file. A good
example is the text output in the debug console. It is controlled by a
byte in the data segment (somewhere far beyond F40000h) and have to be
set to 01h. This can only be done at runtime. The additional joystick support is added by inserting new code which handles the information for all buttons after the fourth. This new code is (in version 2.0) inserted in the gap between code and data segment. There is enough space, because of the page alignment forced by the PE (windows executable) format. It is possible to support up to 16 buttons (because the button structure is a 16 bit type). But who needs that many buttons...? The "mario can“t jump high bug" is caused by an clumsy handling of the joystick input. We correct this by removing an invalid command, which deletes the ButtonStatusWord. The debug is implemented in the original "ultra.exe", but the start procedure is not called. We changed the handling procedure of the "options/graphic emulation" menu item, to initialize and show the debug console. If the menu item is selected again, the console is disabled. Why did you know all this things?? We just disassembled "ultra.exe" by using IDA 3.8 pro, the best (we know
what we write) disassembler of the world, much better than this W32Dasm
crap. Then we spend hours and hours to understand parts of the asm source.
After a lot of hard work, we knew enough about UltraHLE, to make some
patches. For extensively testing we used the best debugger of the world,
Softice 3.24. All patches are written in pure asm code, compiled with
Tasm 5.0. How can I participate in this great adventure? You wanna help to improve UltraHLE and implement new features? Fine,
then go to the developer section and apply via EMail. Please do not apply,
if you are a fucking lamer, who wants to get some "inside" information.
|