AE:ONK/EXE: Difference between revisions

fixed mistaken address -- this was never a patch at 0xBDA0, the hex display just starts there; added more specifics on patch
m (to whom it may interest)
 
(fixed mistaken address -- this was never a patch at 0xBDA0, the hex display just starts there; added more specifics on patch)
(13 intermediate revisions by 3 users not shown)
Line 1: Line 1:
Minimal changelog of the EXE so far (English version, 1527808 bytes)
{{fmbox
  | text = This page is preserved for historical reasons; development stopped long ago. ONK was a successor to [[AE:BIP|BIP]]. Patches below have generally been added to or superseded by the [[Daodan DLL]]. A couple editor's notes have been inserted by Iritscen in brackets which are newer than the rest of geyser's narration, which was written in 2007-2008.
  }}
 
Minimal changelog of the EXE so far (English a.k.a. "standard" version, 1527808 bytes)


Those are only the versions [[User:geyser|I]] have used for some time.
Those are only the versions [[User:geyser|I]] have used for some time.
Line 9: Line 13:
:I have no idea what original EXE it was obtained from, and what modifications that involved ^^
:I have no idea what original EXE it was obtained from, and what modifications that involved ^^


{{Divhide|Clarification|show=yes}}
The canonical 1,527,808-byte EXE which comes from the U.S. English version of Oni did not perform a CD check; it was later distributed on the Internet as a "cracked" version that supposedly had had the CD check removed, when in reality the CD check had been added to some later EXEs like the one in geyser's TakeAdvantage copy of the game.
{{Divhide|end}}
==Ian's patch==
==Ian's patch==
{{Divhide|Full story on the patch|show=yes}}
This was Ian Patterson's fix for the "WinXP bug", so named because a [[Troubleshooting/Blam#Blam at startup|Blam at startup]] showed up around the time of Windows XP. XP was not the cause of the problem, but rather the issue occurred because Oni at startup asks the graphics card for a list of available OpenGL extensions.
When Oni was made, the dump of OpenGL extensions was fairly short, and Bungie West did not allow space in memory for a much larger dump. As extensions were [https://www.khronos.org/opengl/wiki/History_of_OpenGL progressively added to OpenGL], graphics cards started overflowing Oni's buffer around the time of XP, but this was a result of changes in OpenGL, and the manifestation of the bug was dependent on the graphics card and driver in use. The so-called "WinXP fix" [https://web.archive.org/web/20060417164153/http://oni.bungie.org/help/winxp.html was distributed by Bungie.org] in the form of a patched version of Oni.exe.
Ian was rather zealous in trying to eliminate possible buffer overflows such as the one which was causing the crash: the patches after the first two below are unnecessary and additionally disable any writing to debugger.txt, startup.txt, and the dev console. I have filled in more information below about each patch to serve as documentation of Ian's work, so keep in mind that geyser's narration on other parts of the page does not take this newer information into account.
{{Divhide|end}}
===0xBDA8-0xBDBE===
Disabling the OpenGL extensions list in startup.txt.


===0xBDA0===
This 23-byte patch replaces five instructions which perform the function call <code>UUrStartupMessage("OpenGL extensions = %s", extensions);</code> with noops (0x90), preventing a long list of GL extensions returned by the graphics card from overflowing the fixed-size buffer in UUrStartupMessage().
Dunno what this is.
;OLD
;OLD
{|cellspacing=0
{|cellspacing=0
Line 45: Line 60:


===0xBDD8===
===0xBDD8===
Dunno what this is
Disabling the OpenGL extensions list in startup.txt.
 
This bit fixes up the stack pointer.
;OLD
;OLD
:0x28
:0x28
Line 52: Line 69:


===0x247F0===
===0x247F0===
OpenGL extensions or console or another buffer
Disables UUrDebuggerMessage() by replacing the first byte with a retn opcode (0xC3). Prevents all messages from being written to debugger.txt. The function uses a 2048-byte buffer which could be overwhelmed by a large message and cause a crash.
;OLD
;OLD
:0x8B
:0x8B
;NEW
;NEW
:0xC3
:0xC3
===0x24860===
===0x24860===
OpenGL extensions or console or another buffer
Disables UUrStartupMessage(). Prevents all messages from being written to startup.txt. The function uses a 8192-byte fixed-size buffer, which is only likely to be overwhelmed by the GL extension list.
;OLD
;OLD
:0x8B
:0x8B
;NEW
;NEW
:0xC3
:0xC3
===0x31C40===
===0x31C40===
OpenGL extensions or console or another buffer
Disables COrConsole_Printf(). This disables on-screen developer console output. Function uses a 2048-byte buffer.
;OLD
;OLD
:0x8B
:0x8B
;NEW
;NEW
:0xC3
:0xC3
===0x7A0D0===
===0x7A0D0===
OpenGL extensions or console or another buffer
Disables SLrScript_DisplayError(), which receives errors issued by BSL commands and which prints these messages to the on-screen dev console. Function uses a 2048-byte buffer.
;OLD
;OLD
:0x8B
:0x8B
Line 77: Line 97:


----
----
==Dev Mode==
==Dev Mode==
*First try was just to use the "killmequick" slot to call up the dev mode.
*First try was just to use the "killmequick" slot to call up the dev mode.
Line 84: Line 105:
:Not sure which is which: looks like I eventually reverted all 4 (since I don't get a Blam at startup).
:Not sure which is which: looks like I eventually reverted all 4 (since I don't get a Blam at startup).
Anyway, eventually I gave up on "minor" patching, and did the thing below...
Anyway, eventually I gave up on "minor" patching, and did the thing below...
===0x1533F0===
===0x1533F0===
Massively reordered cheatcode table
Massively reordered cheatcode table
Line 90: Line 112:
  001533F0                          18 3A 55 00 FC 39 55 00          .:U.ü9U.
  001533F0                          18 3A 55 00 FC 39 55 00          .:U.ü9U.
  00153400  E0 39 55 00 00 00 00 00 D4 39 55 00 BC 39 55 00  à9U.....Ô9U.¼9U.
  00153400  E0 39 55 00 00 00 00 00 D4 39 55 00 BC 39 55 00  à9U.....Ô9U.¼9U.
  00153410  A4 39 55 00 01 00 00 00 94 39 55 00 80 39 55 00  ¤9U.....?9U.€9U.
  00153410  A4 39 55 00 01 00 00 00 94 39 55 00 80 39 55 00  ¤9U.....?9U.€9U.
  00153420  68 39 55 00 02 00 00 00 58 39 55 00 44 39 55 00  h9U.....X9U.D9U.
  00153420  68 39 55 00 02 00 00 00 58 39 55 00 44 39 55 00  h9U.....X9U.D9U.
  00153430  2C 39 55 00 03 00 00 00 24 39 55 00 10 39 55 00  ,9U.....$9U..9U.
  00153430  2C 39 55 00 03 00 00 00 24 39 55 00 10 39 55 00  ,9U.....$9U..9U.
  00153440  00 00 00 00 04 00 00 00 04 39 55 00 EC 38 55 00  .........9U.ì8U.
  00153440  00 00 00 00 04 00 00 00 04 39 55 00 EC 38 55 00  .........9U.ì8U.
  00153450  D0 38 55 00 05 00 00 00 C4 38 55 00 B0 38 55 00  ?8U.....Ä8U.°8U.
  00153450  D0 38 55 00 05 00 00 00 C4 38 55 00 B0 38 55 00  ?8U.....Ä8U.°8U.
  00153460  00 00 00 00 06 00 00 00 A4 38 55 00 8C 38 55 00  ........¤8U.Œ8U.
  00153460  00 00 00 00 06 00 00 00 A4 38 55 00 8C 38 55 00  ........¤8U.Œ8U.
  00153470  00 00 00 00 07 00 00 00 84 38 55 00 70 38 55 00  ........„8U.p8U.
  00153470  00 00 00 00 07 00 00 00 84 38 55 00 70 38 55 00  ........„8U.p8U.
Line 100: Line 122:
  00153490  2C 38 55 00 09 00 00 00 20 38 55 00 08 38 55 00  ,8U..... 8U..8U.
  00153490  2C 38 55 00 09 00 00 00 20 38 55 00 08 38 55 00  ,8U..... 8U..8U.
  001534A0  EC 37 55 00 0A 00 00 00 DC 37 55 00 C0 37 55 00  ì7U.....Ü7U.À7U.
  001534A0  EC 37 55 00 0A 00 00 00 DC 37 55 00 C0 37 55 00  ì7U.....Ü7U.À7U.
  001534B0  A4 37 55 00 0C 00 00 00 94 37 55 00 7C 37 55 00  ¤7U.....?7U.|7U.
  001534B0  A4 37 55 00 0C 00 00 00 94 37 55 00 7C 37 55 00  ¤7U.....?7U.|7U.
  001534C0  64 37 55 00 0D 00 00 00 58 37 55 00 40 37 55 00  d7U.....X7U.@7U.
  001534C0  64 37 55 00 0D 00 00 00 58 37 55 00 40 37 55 00  d7U.....X7U.@7U.
  001534D0  28 37 55 00 0E 00 00 00 1C 37 55 00 04 37 55 00  (7U......7U..7U.
  001534D0  28 37 55 00 0E 00 00 00 1C 37 55 00 04 37 55 00  (7U......7U..7U.
Line 125: Line 147:
  00153490  5E 37 55 00 09 00 00 00 71 37 55 00 7B 37 55 00  ^7U.....q7U.{7U.
  00153490  5E 37 55 00 09 00 00 00 71 37 55 00 7B 37 55 00  ^7U.....q7U.{7U.
  001534A0  93 37 55 00 0A 00 00 00 AC 37 55 00 B9 37 55 00  “7U.....¬7U.¹7U.
  001534A0  93 37 55 00 0A 00 00 00 AC 37 55 00 B9 37 55 00  “7U.....¬7U.¹7U.
  001534B0  D0 37 55 00 0B 00 00 00 E8 37 55 00 F6 37 55 00  ?7U.....è7U.ö7U.
  001534B0  D0 37 55 00 0B 00 00 00 E8 37 55 00 F6 37 55 00  ?7U.....è7U.ö7U.
  001534C0  10 38 55 00 0C 00 00 00 2B 38 55 00 38 38 55 00  .8U.....+8U.88U.
  001534C0  10 38 55 00 0C 00 00 00 2B 38 55 00 38 38 55 00  .8U.....+8U.88U.
  001534D0  4D 38 55 00 0D 00 00 00 63 38 55 00 6C 38 55 00  M8U.....c8U.l8U.
  001534D0  4D 38 55 00 0D 00 00 00 63 38 55 00 6C 38 55 00  M8U.....c8U.l8U.
  001534E0  81 38 55 00 0E 00 00 00 97 38 55 00 A0 38 55 00  .8U.....—8U. 8U.
  001534E0  81 38 55 00 0E 00 00 00 97 38 55 00 A0 38 55 00  .8U.....—8U. 8U.
  001534F0  B6 38 55 00 0F 00 00 00 CD 38 55 00 D7 38 55 00  ¶8U.....?8U.×8U.
  001534F0  B6 38 55 00 0F 00 00 00 CD 38 55 00 D7 38 55 00  ¶8U.....?8U.×8U.
  00153500  EC 38 55 00 10 00 00 00 02 39 55 00 0D 39 55 00  ì8U......9U..9U.
  00153500  EC 38 55 00 10 00 00 00 02 39 55 00 0D 39 55 00  ì8U......9U..9U.
  00153510  21 39 55 00 11 00 00 00 36 39 55 00 45 39 55 00  !9U.....69U.E9U.
  00153510  21 39 55 00 11 00 00 00 36 39 55 00 45 39 55 00  !9U.....69U.E9U.
Line 293: Line 315:
==mousebutton3==
==mousebutton3==
This was mistakenly bound to SHIFT
This was mistakenly bound to SHIFT
===0x3236===
 
===0x3316===
;OLD
;OLD
:6A 10
:6A 10
Line 301: Line 324:


----
----
==Direct Input==
==Direct Input==
===0x2D8D===
===0x2E6D===
enabling Direct Input
enabling Direct Input
;OLD
;OLD
Line 319: Line 343:
Eventually I got fed up with typing the cheat every time I reloaded Oni (because of '''level0_Final''' hacking).
Eventually I got fed up with typing the cheat every time I reloaded Oni (because of '''level0_Final''' hacking).
:So I changed the Dev Mode cheat to "x" (the only letter that's not used by any of Oni's cheats)
:So I changed the Dev Mode cheat to "x" (the only letter that's not used by any of Oni's cheats)
===0x1537AC===
===0x1537AC===
just overwriting the "th" of thedayismine with an "x" and null char
just overwriting the "th" of thedayismine with an "x" and null char
Line 326: Line 351:
==1280x800x32bit==
==1280x800x32bit==
Any other resolution would work the same way.
Any other resolution would work the same way.
===0x8477===
===0x8477===
x resolution of 800x600x32bit mode
x resolution of 800x600x32bit mode
Line 334: Line 360:
;OLD:58 02
;OLD:58 02
;NEW:20 03
;NEW:20 03
[[Category:Obsolete AE mods]][[Category:Patches]]