Developer Mode: Difference between revisions

killing narrative because it's covered in the History article, some other little fixes
m (makes me feel old, too)
(killing narrative because it's covered in the History article, some other little fixes)
Line 5: Line 5:
|http://geyser.oni2.net/Developer_Mode/TheDayIsMine0.png
|http://geyser.oni2.net/Developer_Mode/TheDayIsMine0.png
|}
|}
The developer mode is a bundle of features (a set of hotkeys, plus console input/output) that was available via the '''thedayismine''' cheatcode in beta and pre-beta versions of Oni, up to beta 4.
Developer Mode is a bundle of features (a console, camera controls, and some debugging features) that was available via the '''thedayismine''' cheat code. Until 2006, it was believed that Developer Mode had been cut from retail versions of Oni; it had only been observed to work in the Mac beta 4 that was leaked around the time of Oni's beta testing. However, the this mode is actually present in ''all'' available versions of Oni (except PS2). It just needs to be unlocked.
 
Until 2006, it was believed that the developer mode was completely cut from beta 5 and later. However, the developer mode is actually present in ''all'' available versions of Oni (except PS2...). It just needs to be unlocked (e.g. made available via a cheat).
 
The developer mode was first unlocked on the Russian & English PC versions by SFeLi in January 2006. Since all other versions (Mac and PC demo) have [[PC vs Mac|other limitations]] (e.g. no console-related scripting commands), it was believed the developer mode was only present in the retail PC versions.
 
Then, in June 2006, [[User:Geyser|I]] looked at the PC demo version, and noticed that the developer mode ''was'' there. All Mac versions (demo, OS9 retail, OSX port) followed within a few hours (with a little help from [http://edt.oni2.net EdT]).


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.
Line 31: Line 25:
*[http://edt.oni2.net/files/OniDemoDevMode.zip GET IT] (679 kB, zipped) ([http://www.feralinteractive.com/?game=oni&language=english&section=demo original from Feral])
*[http://edt.oni2.net/files/OniDemoDevMode.zip GET IT] (679 kB, zipped) ([http://www.feralinteractive.com/?game=oni&language=english&section=demo original from Feral])


====Mac retail (OS9)====
====Mac retail (OS 9)====
Just use the above Mac Demo to play in OS9 or Classic Environment
Just use the above Mac Demo to play in OS 9 or Classic Environment


====Mac OSX port====
====Mac OS X port====
Lazy hack : '''killmequick''' turns Dev Mode on and off, with "Ultra Mode" confirmation messages.
Lazy hack : '''killmequick''' turns Dev Mode on and off, with "Ultra Mode" confirmation messages.


Line 41: Line 35:
You will also need the modified [http://edt.oni2.net/files/key_config.txt key_config.txt] file
You will also need the modified [http://edt.oni2.net/files/key_config.txt key_config.txt] file


Please go to http://edt.oni2.net/devmode.html for more Mac OSX specific instructions.
Please go to http://edt.oni2.net/devmode.html for more Mac OS X specific instructions.


([http://www.omnigroup.com/ftp/pub/software/Archive/MacOSX/10.1/Oni-1.0v1.33.dmg Original from OmniGroup])
([http://www.omnigroup.com/ftp/pub/software/MacOSX/10.1/Oni-1.0v1.36.dmg Original from OmniGroup])


===...or do it yourself===
===...or do it yourself===
Line 140: Line 134:
There is an element for every cheat, and they appear by order of increasing ID. The developer mode (ID 0x0B) is simply "skipped" : '''reservoirdogs''' (0x0C) comes right after '''superammo''' (0x0A).
There is an element for every cheat, and they appear by order of increasing ID. The developer mode (ID 0x0B) is simply "skipped" : '''reservoirdogs''' (0x0C) comes right after '''superammo''' (0x0A).
;Data size on different platforms
;Data size on different platforms
:On PC, PC demo and Mac OSX : every element 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 Mac OSX); if a cheat has no "disabled" message, the third pointer is null
:On PC, PC demo and Mac OS X : every element 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 Mac OS X); if a cheat has no "disabled" message, the third pointer is null
:On Mac OS9 retail and demo : every element of the lookup table takes up 12 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 pointer field is taken up by the ID (the remaining 2 bytes are garbage, as well as the ID field)
:On Mac OS 9 retail and demo : every element of the lookup table takes up 12 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 pointer field is taken up by the ID (the remaining 2 bytes are garbage, as well as the ID field)
:On Mac OS9 beta : the pointers and the ID are 2-byte words (Big Endian); regular elements take up 8 bytes; if a cheat has no "disabled" message, weird stuff happens to the third pointer and to the ID, and the element takes up 10 bytes (yes, 10, not 6)... the ID can be found in what would be the first byte of the ID field.
:On Mac OS 9 beta : the pointers and the ID are 2-byte words (Big Endian); regular elements take up 8 bytes; if a cheat has no "disabled" message, weird stuff happens to the third pointer and to the ID, and the element takes up 10 bytes (yes, 10, not 6)... the ID can be found in what would be the first byte of the ID field.


====killmequick====
====killmequick====
On PC, PC demo and Mac OSX, there's extra space at the end of the lookup table and where the cheatcodes/messages are stored, so one can ''add'' '''thedayismine''' as an extra cheat. On Mac OS9, the data is packed tighter (and the text strings are stored together with their size), so the only easy way is to replace an existing cheat. The following mini-tutorial will explain how to bind the developer mode to the "ultra mode" cheat AKA '''killmequick'''.
On PC, PC demo and Mac OS X, there's extra space at the end of the lookup table and where the cheatcodes/messages are stored, so one can ''add'' '''thedayismine''' as an extra cheat. On Mac OS 9, the data is packed tighter (and the text strings are stored together with their size), so the only easy way is to replace an existing cheat. The following mini-tutorial will explain how to bind the developer mode to the "ultra mode" cheat AKA '''killmequick'''.


====Finding the lookup table====
====Finding the lookup table====
Open the executable (or the data fork of the executable on Mac), after backing it up of course... We shall look for the last three elements of the table, corresponding to '''fistsoflegend''', '''killmequick''' and '''carousel'''.
Open the executable (or the data fork of the executable on Mac), after backing it up of course... We shall look for the last three elements of the table, corresponding to '''fistsoflegend''', '''killmequick''' and '''carousel'''.
;On PC and PC demo : look for '''13 00 00 00 ## ## ## ## ## ## ## ## ## ## ## ## 14 00 00 00 ## ## ## ## ## ## ## ## ## ## ## ## 15 00 00 00'''
;On PC and PC demo : look for '''13 00 00 00 ## ## ## ## ## ## ## ## ## ## ## ## 14 00 00 00 ## ## ## ## ## ## ## ## ## ## ## ## 15 00 00 00'''
;On Mac OSX : look for '''00 00 00 13 ## ## ## ## ## ## ## ## ## ## ## ## 00 00 00 14 ## ## ## ## ## ## ## ## ## ## ## ## 00 00 00 15'''
;On Mac OS X : look for '''00 00 00 13 ## ## ## ## ## ## ## ## ## ## ## ## 00 00 00 14 ## ## ## ## ## ## ## ## ## ## ## ## 00 00 00 15'''
;On Mac OS9 retail/demo : look for '''00 00 13 ## ## ## ## ## ## ## ## ## 00 00 14 ## ## ## ## ## ## ## ## ## 00 00 15'''
;On Mac OS 9 retail/demo : look for '''00 00 13 ## ## ## ## ## ## ## ## ## 00 00 14 ## ## ## ## ## ## ## ## ## 00 00 15'''
;
;
where the ## are joker chars. 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 chars. Once you've found that data (make sure it occurs only once in the file), replace the '''14''' with a '''0B'''.
Line 171: Line 165:
Below are a few quick ways to test the developer mode's functionality.
Below are a few quick ways to test the developer mode's functionality.
====Hotkeys====
====Hotkeys====
The quickest way to tell whether it works at all, right after you get the confirmation message, is : to exit the pausescreen; to press '''End'''. That should teleport you to where the camera is (usually back and up, possibly through walls and ceilings).
The quickest way to tell whether it works at all, right after you get the confirmation message, is to exit the pausescreen; to press '''End'''. That should teleport you to where the camera is (usually back and up, possibly through walls and ceilings).


'''End''' is one of the many hotkeys available in Developer Mode. You can also try '''Enter'''. A full list is provided below.
'''End''' is one of the many hotkeys available in Developer Mode. You can also try '''Enter'''. A full list is provided below.
Line 201: Line 195:
!PC
!PC
!Mac Retail/Demo
!Mac Retail/Demo
!Mac OSX
!Mac OS X
|-
|-
|Fkey2
|Fkey2