Jump to content

Developer Mode: Difference between revisions

m
touch-up
mNo edit summary
m (touch-up)
Line 1: Line 1:
{|style="float:right"
[[Image:TheDayIsMine_crate.png|frame|Found on a crate in<br>Syndicate Warehouse]]
|+Label on a crate in<br>Syndicate Warehouse<br>(an [[Easter eggs|Easter egg]])
{{TOCfloat|limit=3}}
|http://geyser.oni2.net/Developer_Mode/TheDayIsMine.png
Developer Mode is a bundle of features created by [[Bungie West]] to help them develop [[Oni]] -- a console, camera controls, and various debugging features -- that was associated with the [[Cheats|cheat code]] '''thedayismine''' (see picture above for related [[Easter eggs|Easter egg]]). This cheat code did not work upon Oni's release, and it was long believed that Developer Mode had been cut from retail versions of Oni; it had only been observed to work in the [[Mac beta]] that was leaked during Oni's beta testing. However, this mode is actually present in ''all'' available versions of Oni (except PS2). It just needs to be unlocked, as the community learned [[History_of_Oni_modding/The_tale_of_Dev_Mode|back in 2006]].
|http://geyser.oni2.net/Developer_Mode/TheDayIsMine0.png
|}
<div class="toclimit-3">__TOC__</div>
Developer Mode is a bundle of features created by [[Bungie West]] to help them develop Oni -- a console, camera controls, and various debugging features -- that was associated with the cheat code '''thedayismine''' (see picture, right). This cheat code did not work upon Oni's release, and it was long believed that Developer Mode had been cut from retail versions of Oni; it had only been observed to work in the [[Mac beta]] that was leaked around the time of Oni's beta testing. However, this mode is actually present in ''all'' available versions of Oni (except PS2). It just needs to be unlocked, as the community learned [[History_of_Oni_modding/The_tale_of_Dev_Mode|back in 2006]].


Below you will find download links, unlocking instructions, and finally an overview of the Developer Mode's features.
Below you will find download links, unlocking instructions, and finally an overview of the Developer Mode's features.
 
<br clear="all" />
==Getting it to work==
==Getting it to work==
===Download it...===
===Download it...===
In Windows, you can install the [[Daodan DLL]] to unlock Developer Mode. On the Mac, the Intel build has Dev Mode unlocked; it can be found [[AE:FERAL|HERE]].
In Windows, you can install the [[Daodan DLL]] to unlock Developer Mode. On the Mac, the Intel build already has Dev Mode unlocked; it can be found [[AE:FERAL|HERE]].


{{Divhide|...or do it yourself}}
{{Divhide|...or do it yourself}}
===...or do it yourself===
===...or do it yourself===
You may want to read this if your Windows version of Oni is not covered by the above DLL (e.g. if you have an odd language version) or if your Mac is not running the Intel build.
You may want to read this if your Windows version of Oni is not covered by the above DLL (e.g. if you have an odd language version) or if your Mac is not running the Intel build (though a Dev Mode-enabled version of the last PPC build is [[AE:OMNI|HERE]]).


First, get a good hex editor. Ideally, it should allow you to search for sequences containing joker characters (that is, wildcards or bit masks). One such editor for PC is [http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm XVI32]. On Macs, [http://www.ufsexplorer.com/cihex.php CI Hex Viewer] is free, powerful, and can perform the search you need, but [http://ridiculousfish.com/hexfiend/ Hex Fiend] has a better comparison function so you can check your work afterward (open original and edited binaries and choose File>Compare "Oni" and "Oni").
First, get a good hex editor. Ideally, it should allow you to search for sequences containing joker characters (that is, wildcards or bit masks). One such editor for PC is [http://www.chmaas.handshake.de/delphi/freeware/xvi32/xvi32.htm XVI32]. On Macs, [http://www.ufsexplorer.com/cihex.php CI Hex Viewer] is free, powerful, and can perform the search you need, but [http://ridiculousfish.com/hexfiend/ Hex Fiend] has a better comparison function so you can check your work afterward (open original and edited binaries and choose File>Compare "Oni" and "Oni").
Line 97: Line 93:


;Cheat overview
;Cheat overview
:There are 22 cheat events in every version of Oni, indexed from 0 to 21 (or 0x00 to 0x15 in hexadecimal). See table on right.
:There are 22 cheat events in every version of Oni, indexed from 0 to 21 (or 0x00 to 0x15 in hexadecimal). See table on right; the cheat code omitted by Bungie, thedayismine, is in bold. The four italicized cheat codes are "one-way" cheats that do not have on/off states, which affects the table described below.
:The order is the same in every version, so we can refer to the cheats by that ID, or by the cheat code used to activate the cheat event.
:The order is the same in every version, so we can refer to the cheats by their ID, or by the cheat code used to activate them.


;Cheat lookup table
;Cheat lookup table
:When you type characters in the "pause screen", the text you enter is progressively compared with all the strings in the cheat table.
:When you type characters in the "pause screen", the text you enter is progressively compared with all the strings in the cheat table.
:When and if there is a match, the appropriate confirmation message is displayed for enablement or disablement (except for one-way cheats '''fatloot''', '''winlevel''', '''loselevel''' and '''munitionfrenzy''', which just have a recognition message), and the corresponding cheat event is launched when the Pause screen is closed.
:When and if there is a match, the corresponding confirmation message is displayed for enablement/confirmation or for disablement if the cheat was already on, and the corresponding cheat event takes effect when the Pause screen is closed.
;In full, each row of the cheat table consists of:
:In full, each row of the cheat table consists of:
:a pointer to the cheat code string
:*a pointer to the cheat code string
:a pointer to the "enabled"/recognition message
:*a pointer to the "enabled"/recognition message
:a pointer to the "disabled" message (if any)
:*a pointer to the "disabled" message (if any)
:the internal ID of the cheat event to launch
:*the internal ID of the cheat event to launch
There is an row for every cheat, and they appear by order of increasing ID. In most Oni builds, the developer mode cheat (ID 0x0B) is simply skipped over; '''reservoirdogs''' (0x0C) comes right after '''superammo''' (0x0A).
There is a row for every cheat, and they appear by order of increasing ID. In most Oni builds, the developer mode cheat (ID 0x0B) is simply skipped over; '''reservoirdogs''' (0x0C) comes right after '''superammo''' (0x0A).
 
;Data size on different platforms
;Data size on different platforms
:In the PC, PC demo and Mac OS X (PPC) builds, every row of the lookup table takes up 16 bytes; the 3 pointers and the ID are 4-byte data words (Little Endian on PC, Big Endian on PPC Macs); if a cheat has no "disabled" message, the row's third pointer is null.
:In the PC, PC demo and Mac OS X (PPC) builds, every row of the lookup table takes up 16 bytes; the 3 pointers and the ID are 4-byte data words (Little Endian on PC, Big Endian on PPC Macs); if a cheat has no "disabled" message, the row's third pointer is null.
<!--This does not appear to be true, not sure what version geyser was looking at. The item below this claimed to be for the Mac beta, but it's actually true of the Mac retail app. --Iritscen
<!--This does not appear to be true, not sure what version geyser was looking at. The item below this claimed to be for the Mac beta, but it's actually true of the Mac retail app. --Iritscen
:In the Mac OS 9 retail and demo, every row of the lookup table takes up 8 bytes; the 3 pointers and the ID are 3-byte data words (Big Endian); if a cheat has no "disabled" message, the last byte of the third element is taken up by the ID (the remaining 2 bytes are garbage, as well as the ID field).-->
:In the Mac OS 9 retail and demo, every row of the lookup table takes up 8 bytes; the 3 pointers and the ID are 3-byte data words (Big Endian); if a cheat has no "disabled" message, the last byte of the third element is taken up by the ID (the remaining 2 bytes are garbage, as well as the ID field).-->
:In the Mac OS 9 builds, the pointers and the ID are 2-byte words (Big Endian); regular rows take up 8 bytes; if a cheat has no "disabled" message, weird stuff happens to the third pointer and to the ID, and the row takes up 10 bytes... the ID can be found in what would be the first byte of the ID field instead of the second, and the remaining 3 bytes are garbage. An additional garbage byte is added between consecutive one-way cheats (0x06 and 0x07).
:In the Mac OS 9 builds, the pointers and the ID are 2-byte words (Big Endian); regular rows take up 8 bytes; for one-way cheats with no "disabled" message, weird stuff happens to the third pointer and to the ID, and the row takes up 10 bytes... the ID can be found in what would be the first byte of the ID field instead of the second, and the remaining 3 bytes are garbage. An additional garbage byte is added between consecutive one-way cheats (0x06 and 0x07).


====Let's kill killmequick====
====Let's kill killmequick====
Line 124: Line 121:
;In the Mac OS 9 builds, look for '''00 13 ## ## ## ## ## ## 00 14 ## ## ## ## ## ## 00 15''' ([[:File:Finding killmequick - Mac OS 9 build.jpg|sample pic]])
;In the Mac OS 9 builds, look for '''00 13 ## ## ## ## ## ## 00 14 ## ## ## ## ## ## 00 15''' ([[:File:Finding killmequick - Mac OS 9 build.jpg|sample pic]])
;
;
where the ## are joker characters (hex wildcards). Once you've found that data (make sure it occurs only once in the file), replace the '''14''' with a '''0B'''.
where the ## are joker characters (wildcard bytes). Once you've found that data (make sure it occurs only once in the file), replace the '''14''' with a '''0B'''.


Developer mode will now be enabled/disabled every time you type '''killmequick''' at the pause screen : you'll get "Ultra Mode Enabled" and "Ultra Mode Disabled" as confirmation messages.
Developer Mode will now be enabled/disabled every time you type '''killmequick''' at the Pause screen; you'll get "Ultra Mode Enabled" and "Ultra Mode Disabled" as confirmation messages.
{{Divhide|end}}
{{Divhide|end}}


Line 133: Line 130:
Cheats are normally unlocked when you finish the full version of the game. For unlocking cheats "manually" (especially necessary with the demos), see [[Cheats|HERE]]
Cheats are normally unlocked when you finish the full version of the game. For unlocking cheats "manually" (especially necessary with the demos), see [[Cheats|HERE]]


Let's say cheats are enabled and Developer Mode has been made available ''via'' the '''thedayismine''' cheatcode (or simply '''x''' with Daodan DLL installed).
Let's say cheats are enabled and Developer Mode has been made available ''via'' the '''thedayismine''' cheatcode (or simply '''x''' with Daodan DLL or Mac Intel build).


Just type the Developer Mode cheat and watch for the confirmation message. However, you may not notice anything special when you get back to the game (although there should be occasional console messages appearing at the bottom-left).  
Just type the Developer Mode cheat and watch for the confirmation message. However, you may not notice anything special when you get back to the game (although there should be occasional console messages appearing at the bottom-left).