<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.oni2.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RossyMiles</id>
	<title>OniGalore - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.oni2.net/w/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=RossyMiles"/>
	<link rel="alternate" type="text/html" href="https://wiki.oni2.net/Special:Contributions/RossyMiles"/>
	<updated>2026-04-24T15:11:34Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Daodan_DLL&amp;diff=34224</id>
		<title>Daodan DLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Daodan_DLL&amp;diff=34224"/>
		<updated>2021-10-24T11:49:31Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: Added Daodan Input bindings&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This is a Windows-only patch. For information on the patches to Mac versions of Oni and historical patching of Windows Oni, see the [[:Category:Patches|Patches category]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Subpages:&#039;&#039; [[/Change_log|Daodan DLL change log]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Daodan DLL&#039;&#039;&#039; is a patch for Oni for Windows that hooks into the game engine to fix bugs and add features. It does this by posing as &#039;&#039;&#039;binkw32.dll&#039;&#039;&#039;, the library that Oni loads so that it can play the game&#039;s opening and ending videos. The Daodan fixes issues such as the famous &amp;quot;[[Blam|Blam!]]&amp;quot; error that occurs on modern machines. It also adds new features such as support for widescreen resolutions and bonus cheat codes. The Daodan DLL was created by [[User:SFeLi|SFeLi]] and then developed further by [[User:RossyMiles|RossyMiles]], [[User:Gumby|Gumby]] and [[User:Admin|Alloc]].&lt;br /&gt;
{{TOCfloat}}&lt;br /&gt;
==C-Daodan==&lt;br /&gt;
&amp;lt;div style=&amp;quot;overflow:hidden&amp;quot;&amp;gt;This is the recommended version of the Daodan DLL. Note that you &#039;&#039;&#039;already have this installed&#039;&#039;&#039; if you installed the [[Anniversary Edition]].&lt;br /&gt;
&lt;br /&gt;
===Installation instructions (for non-[[AE]] users)===&lt;br /&gt;
1. Download the AE package that contains the Daodan DLL from [http://mods.oni2.net/node/233 here]. The files you need are in the win_only\ directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Find where your copy of Oni has been installed to. For most people, it is stored in &amp;quot;C:\Program Files\Oni&amp;quot;. This folder should contain a &amp;quot;GameDataFolder&amp;quot; and &amp;quot;Oni&amp;quot; or &amp;quot;Oni.exe&amp;quot;. Back up your Oni.exe by renaming it (e.g. &amp;quot;Oni-original.exe&amp;quot;).&amp;lt;br /&amp;gt;&lt;br /&gt;
3. Place the newly-downloaded Oni.exe, binkw32.dll, realbink.dll, and assorted files into the Oni\ folder.&amp;lt;br /&amp;gt;&lt;br /&gt;
4. To test if you have done everything correctly, run &amp;quot;Oni.exe&amp;quot;. Enter the pause (Diary) screen (F1 by default) and type &amp;quot;tellmetheversion&amp;quot;; if you get a result like &amp;quot;Daodan v.&#039;&#039;x.y&#039;&#039;&amp;quot;, the DLL is working.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
If the game does not display correctly (for instance, a black window), try the following in any order:&lt;br /&gt;
&lt;br /&gt;
1. Disable the intro movie by renaming GameDataFolder\intro.bik. This often fixes the game window.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Open the daodan.ini in Notepad and set either &amp;quot;daodangl&amp;quot; or &amp;quot;windowhack&amp;quot; to true. &amp;quot;windowhack&amp;quot; should at least center the window on the screen.&amp;lt;br /&amp;gt;&lt;br /&gt;
3. Try [http://www.google.com/search?q=windows+run+as+administrator launching Oni as Administrator].&amp;lt;br /&amp;gt;&lt;br /&gt;
4. Make the Oni folder writable by un-checking &amp;quot;Read-only&amp;quot; in the Properties window for the folder.&amp;lt;br /&amp;gt;&lt;br /&gt;
5. Try both the run_full and run_wind scripts.&lt;br /&gt;
&lt;br /&gt;
You can report problems on the forum in [http://oni.bungie.org/forum/viewtopic.php?id=1686 this thread] or in a new thread in the Modifications forum.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
===Feature summary===&lt;br /&gt;
*Windows XP patch - Fixed Oni crashing at startup on modern computers.&lt;br /&gt;
*Windowed mode - Oni can run inside a window properly.&lt;br /&gt;
*Custom screen resolutions - Includes many more default screen resolutions.&lt;br /&gt;
*BGRA32 (ARGB8888) support.&lt;br /&gt;
*Extra cheats - see &amp;quot;Added cheat codes&amp;quot; section below.&lt;br /&gt;
*Cheats always enabled; no need to beat game first.&lt;br /&gt;
*Extra command line options (for advanced users) - For a list, type &amp;quot;Oni -help&amp;quot;.&lt;br /&gt;
*A new input system based on Raw Input, which should fix mouse lag and judder, as well as disabling mouse acceleration.&lt;br /&gt;
*AIs have ability to properly dodge projectiles.&lt;br /&gt;
*Stops fly-in character portraits from being stretched when playing in widescreen.&lt;br /&gt;
&lt;br /&gt;
===Developer Mode===&lt;br /&gt;
The DLL enables [[Developer Mode]]; go to the pause screen (F1) and type &amp;quot;thedayismine&amp;quot; or simply &#039;x&#039; to activate it.&lt;br /&gt;
&lt;br /&gt;
===Languages===&lt;br /&gt;
The Daodan DLL offers support for the Chinese version of the game as well as multibyte languages in general (see &amp;quot;multibyte&amp;quot; under &amp;quot;Patches&amp;quot; section). It also has the beginnings of some basic localization support, by allowing cheat code names and other strings to be translated. To add an option, look for the options section or type&lt;br /&gt;
 [Language]&lt;br /&gt;
To enable Chinese support, type:&lt;br /&gt;
 [Language]&lt;br /&gt;
 Chinese = True&lt;br /&gt;
This will load a DLL called xfhsm_oni.dll (apparently provided with Chinese copies of Oni).&lt;br /&gt;
&lt;br /&gt;
Here are the strings that you can replace using the .ini file:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!INI name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|blam&lt;br /&gt;
|Replaces body text of the [[:File:Blam!.png|blam window]].&lt;br /&gt;
|-&lt;br /&gt;
|damn&lt;br /&gt;
|Replaces title of the [[:File:Blam!.png|blam window]].&lt;br /&gt;
|-&lt;br /&gt;
|savepoint&lt;br /&gt;
|Replaces string &amp;quot;Save Point&amp;quot; in Load Game menu (not working?).&lt;br /&gt;
|-&lt;br /&gt;
|syndicatewarehouse&lt;br /&gt;
|Replaces string &amp;quot;Syndicate Warehouse&amp;quot; in Load Game menu (not working?).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;nameofcheat&#039;&#039;_on/_off&lt;br /&gt;
|Replaces name of the built-in cheat code as it appears on the pause screen when code is entered. E.g., &amp;quot;behemoth_on=Gojira Desu!&amp;quot;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
Creating a file called Daodan.[[wikipedia:INI_file|ini]] in the same directory as the Daodan DLL will allow you to configure which patches are enabled, as well as to store configuration settings and language items.&lt;br /&gt;
&lt;br /&gt;
On modern versions of Windows (starting with Windows Vista), Oni does not properly request write access to the directory containing Oni.exe (i.e. C:\Program Files (x86)\Oni in typical installs). Windows detects this, and creates a dedicated directory for Oni.exe (and thus Daodan.DLL) to write its files to, located in C:\Users\&amp;lt;Your Username&amp;gt;\AppData\Local\VirtualStore. The directory for Oni will reflect its relative path on disk, so in a typical install, it will be at VirtualStore\Program Files (x86)\Oni. This is where all files output by the program (startup.txt, persist.dat, key_config.txt, etc.) will be located when Oni is not run as an administrator. &#039;&#039;&#039;This is the location where Daodan.ini must be placed if Oni is to be run as a non-administrator.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inside of the Daodan.ini file, each configuration setting is stored inside a section as a name and value pair. To temporarily disable a setting in the INI, add a &#039;#&#039; to the beginning of the line and the Daodan will ignore it.&lt;br /&gt;
&lt;br /&gt;
As of Daodan v3.7, configuration entries in Daodan.ini are stored in several different sections. To change an entry, add it to the relevant section. If the section does not yet exist, add it to the end of the file and add relevant entries under it. If any entry is omitted, it is set to its default value. Entries are case-insensitive, and spacing does not matter.&lt;br /&gt;
&lt;br /&gt;
Here is an example Daodan.ini file. This example sets the devmode section items to their defaults and disables the cooldown timer patch:&lt;br /&gt;
 [Devmode]&lt;br /&gt;
 highres_console = True&lt;br /&gt;
 showtriggervolumes = True&lt;br /&gt;
 &lt;br /&gt;
 [gameplay]&lt;br /&gt;
 CooldownTimer = False&lt;br /&gt;
&lt;br /&gt;
Daodan.ini may contain the following sections (names are case-insensitive):&lt;br /&gt;
* devmode &#039;&#039;(Developer Mode Configuration)&#039;&#039;&lt;br /&gt;
* gameplay &#039;&#039;(Gameplay Configuration)&#039;&#039;&lt;br /&gt;
* graphics &#039;&#039;(Graphics Configuration)&#039;&#039;&lt;br /&gt;
* language &#039;&#039;(Language Configuration)&#039;&#039;&lt;br /&gt;
* modding &#039;&#039;(Modding Configuration)&#039;&#039;&lt;br /&gt;
* oni &#039;&#039;(Original Oni Options Configuration)&#039;&#039;&lt;br /&gt;
* windows &#039;&#039;(OS Interaction Options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For names of all entries, and a brief help, see the &amp;quot;All Configuration Settings&amp;quot; section below for more information.&lt;br /&gt;
&lt;br /&gt;
===Command-line arguments===&lt;br /&gt;
[[Customizing#Command-line_arguments|Command line options]] are still present in the beta Daodan although the syntax is a little different (and a bit more powerful.) The basic syntax for a command line option is this:&lt;br /&gt;
 -&amp;lt;ini section&amp;gt;.&amp;lt;name&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
Where &amp;lt;ini section&amp;gt; is the Daodan.ini section (usually &#039;&#039;&#039;Patch&#039;&#039;&#039; or &#039;&#039;&#039;Options&#039;&#039;&#039;,) &amp;lt;name&amp;gt; is the option and &amp;lt;value&amp;gt; is the value to set it to (usually &#039;&#039;&#039;True&#039;&#039;&#039; or &#039;&#039;&#039;False&#039;&#039;&#039;.) Therefore, to disable sound, start Oni with this:&lt;br /&gt;
 oni -options.sound false&lt;br /&gt;
When &amp;lt;ini section&amp;gt; is omitted, it is assumed to be &#039;&#039;&#039;options&#039;&#039;&#039;. When &amp;lt;value&amp;gt; is omitted, it is assumed to be &#039;&#039;&#039;true&#039;&#039;&#039; unless &amp;lt;name&amp;gt; starts with &#039;&#039;&#039;no&#039;&#039;&#039; (eg. &#039;&#039;&#039;nosound&#039;&#039;&#039;) in which case it is assumed to be &#039;&#039;&#039;false&#039;&#039;&#039;. So an easier way to write the above command would be:&lt;br /&gt;
 oni -nosound&lt;br /&gt;
Options or patches specified on the command line take precedence over options specified in Daodan.ini. Currently Oni&#039;s command line parser isn&#039;t powerful enough to parse language elements (no support for quoting arguments); this will be fixed in a later release.&lt;br /&gt;
&lt;br /&gt;
===All Configuration Settings===&lt;br /&gt;
Below are the names of the configuration settings you can turn on and off in Daodan.ini (names and sections are case-insensitive). Also noted is whether the DLL has this patch turned on or off by default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!INI Section&lt;br /&gt;
!INI Name&lt;br /&gt;
!Default&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[devmode]&lt;br /&gt;
|highres_console&lt;br /&gt;
|true&lt;br /&gt;
|Fixes bug where console line becomes invisible at higher resolutions.&lt;br /&gt;
|-&lt;br /&gt;
|[devmode]&lt;br /&gt;
|showtriggervolumes&lt;br /&gt;
|true&lt;br /&gt;
|Allows BSL variable &amp;quot;show_triggervolumes&amp;quot; and Ctrl+Shift+X (in devmode) to work.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|bindablecheats&lt;br /&gt;
|true&lt;br /&gt;
|Enables cheats to be bound to keys using key_config.txt. Requires &amp;quot;customactions&amp;quot; and &amp;quot;cheattable&amp;quot; to be on.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|characterawareness&lt;br /&gt;
|true&lt;br /&gt;
|Prevents AIs from forgetting about you when they are pursuing you and lose sight of you.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|cheatsenabled&lt;br /&gt;
|true&lt;br /&gt;
|Enables cheats without having to beat the game first. Required for using &#039;tellmetheversion&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|cheattable&lt;br /&gt;
|true&lt;br /&gt;
|Replaces Oni&#039;s cheat table with table that includes new cheats (see section below). Required for using &#039;tellmetheversion&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|cooldowntimer&lt;br /&gt;
|true&lt;br /&gt;
|Disables weapon cooldown exploit, e.g. dropping the Mercury Bow and picking it back up right away to reset weapon cooldown.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|customactions&lt;br /&gt;
|true&lt;br /&gt;
|Allows new bindable actions to be registered with the DLL, such as bindable cheats (if &amp;quot;bindablecheats&amp;quot; is on).&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|kickguns&lt;br /&gt;
|false&lt;br /&gt;
|EXPERIMENTAL! Unfinished, do not use.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|pathfinding&lt;br /&gt;
|true&lt;br /&gt;
|Multiplies size of pathfinding grid cache by eight in order to prevent crashes in large levels.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|projaware&lt;br /&gt;
|true&lt;br /&gt;
|Allows AI to dodge incoming gunfire properly.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|throwtest	&lt;br /&gt;
|false&lt;br /&gt;
|EXPERIMENTAL! Enables experimentation with allowing enemies to be thrown over railings.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|wpfadetime&lt;br /&gt;
|true&lt;br /&gt;
|Adds working function for existing BSL command wp_fadetime, sets fade time to 4800.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|binkplay&lt;br /&gt;
|true&lt;br /&gt;
|Fixes binkplay calls to use GDI and outro same mode as intro.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|daodangl&lt;br /&gt;
|true&lt;br /&gt;
|Provides an improved windowed mode (-noswitch); this patch is known to break the hiding of the Windows taskbar in fullscreen mode.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|displayenum&lt;br /&gt;
|true&lt;br /&gt;
|Offers a more accurate list of available display modes in the Options menu.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|gamma&lt;br /&gt;
|true&lt;br /&gt;
|Enables gamma slider in fullscreen, disables it in windowed mode.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|newweap&lt;br /&gt;
|true&lt;br /&gt;
|Enables weapon info, so that standing above a weapon displays a message containing the weapon name and amount of ammo.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|optionsvisible&lt;br /&gt;
|true&lt;br /&gt;
|Enables always showing the options button in main menu, even when pausing from a game.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|showalllasersights&lt;br /&gt;
|false&lt;br /&gt;
|Enables visibility of all (also enemies&#039;) weapon lasersights&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|widescreenportraits&lt;br /&gt;
|true&lt;br /&gt;
|Prevents fly-in portraits from being stretched when playing in widescreen resolutions.&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|chinese&lt;br /&gt;
|true&lt;br /&gt;
|Allows Chinese fonts to be shown if the required DLL is available.&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|fonttexturecache&lt;br /&gt;
|true&lt;br /&gt;
|Doubles size of font texture cache.&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|language&lt;br /&gt;
|en&lt;br /&gt;
|Sets localization for hardcoded strings (e.g. &amp;quot;Savepoints&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|nomultibyte&lt;br /&gt;
|true&lt;br /&gt;
|Enables languages which use multibyte coding (such as Chinese).&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|argb8888&lt;br /&gt;
|true&lt;br /&gt;
|Enables the use of textures using ARGB8888.&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|d_regen&lt;br /&gt;
|true&lt;br /&gt;
|Enables script command d_regen (query/set regeneration for any character).&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|daodanbsl&lt;br /&gt;
|true&lt;br /&gt;
|Adds new BSL commands (see below).&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|hdscreens_lowres&lt;br /&gt;
|true&lt;br /&gt;
|Allows HD intro/ending screens on game resolutions smaller than 1024x768.&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|largetextures&lt;br /&gt;
|true&lt;br /&gt;
|Enables the use of textures up to 512x512.&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|levelplugins&lt;br /&gt;
|true&lt;br /&gt;
|Allows level files that do not end in &amp;quot;_Final&amp;quot; to be loaded from the GDF.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|debug&lt;br /&gt;
|false&lt;br /&gt;
|Not useful; probably does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|debugfiles&lt;br /&gt;
|false&lt;br /&gt;
|Enables function logging; when active, BSL function calls are logged to script_debug.txt.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|findsounds&lt;br /&gt;
|false&lt;br /&gt;
|Not useful, extends output of sound_list_broken_links.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|ignore_private_data&lt;br /&gt;
|false&lt;br /&gt;
|Disables the loading of &#039;private data&#039; in level0. Probably has no effect.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|sound&lt;br /&gt;
|true&lt;br /&gt;
|Enables sound.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|switch&lt;br /&gt;
|true&lt;br /&gt;
|Enables always switching screen to resolution on Oni&#039;s Options screen, making the game fullscreen; opposite of Oni&#039;s built-in argument &amp;quot;noswitch&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|alttab&lt;br /&gt;
|true&lt;br /&gt;
|Allows user to switch applications while in Oni (Alt-Tab) and use the Windows key; however, it may enable the screensaver as well.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|border&lt;br /&gt;
|true&lt;br /&gt;
|Adds a border in windowed mode if &#039;[graphics] daodangl&#039; is active.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|clipcursor&lt;br /&gt;
|true&lt;br /&gt;
|Limits cursor to Oni&#039;s window. This is always enabled if Daodan Input is enabled.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|daodaninput&lt;br /&gt;
|true&lt;br /&gt;
|A new input system which reports input on every frame, which should fix issues with mouse lag/judder and high-FPS displays.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|directinput&lt;br /&gt;
|true&lt;br /&gt;
|Forces on DirectInput when Daodan Input is disabled.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|mousesensitivity&lt;br /&gt;
|1.0&lt;br /&gt;
|Multiplier for mouse movement values when Daodan Input is enabled. 1.0 is Oni&#039;s default.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|disablecmdline&lt;br /&gt;
|true&lt;br /&gt;
|Disables Oni&#039;s existing command line parser as Daodan has its own.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|killvtune&lt;br /&gt;
|false&lt;br /&gt;
|Prevents loading of vtuneapi.dll.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|safeprintf&lt;br /&gt;
|true&lt;br /&gt;
|Replaces Oni&#039;s function that prints to startup.txt with a safer one.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|topmost&lt;br /&gt;
|false&lt;br /&gt;
|Keeps game window on top in windowed mode, even when switching applications.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|usegettickcount&lt;br /&gt;
|true&lt;br /&gt;
|Replaces Oni&#039;s timing functions with more accurate ones.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Added cheat codes===&lt;br /&gt;
*&#039;&#039;&#039;bigbadboss&#039;&#039;&#039;&lt;br /&gt;
:Player takes less weapon damage.&lt;br /&gt;
*&#039;&#039;&#039;buddha&#039;&#039;&#039;&lt;br /&gt;
:Player is unkillable (will not go below 1HP).&lt;br /&gt;
*&#039;&#039;&#039;bulletproof&#039;&#039;&#039;&lt;br /&gt;
:Player takes no weapon damage.&lt;br /&gt;
*&#039;&#039;&#039;kangaroo&#039;&#039;&#039;&lt;br /&gt;
:Player can make super-high jumps.&lt;br /&gt;
*&#039;&#039;&#039;marypoppins&#039;&#039;&#039;&lt;br /&gt;
:Player can fly by holding down jump key.&lt;br /&gt;
*&#039;&#039;&#039;shinobi&#039;&#039;&#039;&lt;br /&gt;
:Extra difficulty mode; player always has 1HP, but also is immune to weapons, and the enemy AI cannot hear the player.&lt;br /&gt;
&lt;br /&gt;
===Added BSL functions===&lt;br /&gt;
Any time a function can both get and set a value, and you set the value, the old value should be returned, barring any programming oversight by Gumby.&lt;br /&gt;
&lt;br /&gt;
====Math====&lt;br /&gt;
* int &#039;&#039;&#039;int32mul&#039;&#039;&#039; n1:int n2:int&lt;br /&gt;
:Multiplies two integers&lt;br /&gt;
* float &#039;&#039;&#039;mul&#039;&#039;&#039; [int1:int|float1:float] [int2:int|float2:float]&lt;br /&gt;
:Multiplies two numbers&lt;br /&gt;
* int &#039;&#039;&#039;int32div&#039;&#039;&#039; n1:int n2:int&lt;br /&gt;
:Divides two integers&lt;br /&gt;
* float &#039;&#039;&#039;div&#039;&#039;&#039; [int1:int|float1:float] [int2:int|float2:float]&lt;br /&gt;
:Divides two two numbers&lt;br /&gt;
* int &#039;&#039;&#039;int32rand&#039;&#039;&#039; start:int end:int&lt;br /&gt;
:Returns a pseudo-random number between two numbers (inclusive).&lt;br /&gt;
&lt;br /&gt;
====Characters====&lt;br /&gt;
* int &#039;&#039;&#039;d_getkills&#039;&#039;&#039; [ai_name:str | script_id:int]&lt;br /&gt;
:Gets the number of kills a character has&lt;br /&gt;
* int &#039;&#039;&#039;d_getdamage&#039;&#039;&#039; [ai_name:str | script_id:int]&lt;br /&gt;
:Gets the amount of damage a character has caused&lt;br /&gt;
* string &#039;&#039;&#039;d_name&#039;&#039;&#039; [ai_name:str | script_id:int] [newname:string]&lt;br /&gt;
:Gets or sets a character&#039;s name&lt;br /&gt;
* string &#039;&#039;&#039;d_regen&#039;&#039;&#039; [ai_name:str | script_id:int] on_off:bool&lt;br /&gt;
:Gets or sets a character&#039;s regeneration (like elderrune for the player)&lt;br /&gt;
* int &#039;&#039;&#039;d_getindex&#039;&#039;&#039; [ai_name:str]&lt;br /&gt;
:Gets a character&#039;s script_id from their name&lt;br /&gt;
* int &#039;&#039;&#039;d_powerup&#039;&#039;&#039; ai_name:str|script_id:int powerup:str [newcount:int]&lt;br /&gt;
:Gets or sets the amount of powerups a character has&lt;br /&gt;
:Powerup list the same as with &#039;&#039;&#039;chr_givepowerup&#039;&#039;&#039; with the addition of &amp;quot;bossshield&amp;quot;&lt;br /&gt;
* int &#039;&#039;&#039;d_health&#039;&#039;&#039; [ai_name:str | script_id:int] [newhealth:int]&lt;br /&gt;
:Gets or sets a character&#039;s health&lt;br /&gt;
* int &#039;&#039;&#039;d_maxhealth&#039;&#039;&#039; [ai_name:str | script_id:int] [newmaxhealth:int]&lt;br /&gt;
:Gets or sets a character&#039;s maxhealth&lt;br /&gt;
* int &#039;&#039;&#039;d_holdkey&#039;&#039;&#039; [ai_name:string | script_id:int] keys frames:int&lt;br /&gt;
:Makes a character hold a key&lt;br /&gt;
:Possibly broken&lt;br /&gt;
* int &#039;&#039;&#039;d_isheld&#039;&#039;&#039; keys&lt;br /&gt;
:Checks if player is holding a key&lt;br /&gt;
:Possibly broken&lt;br /&gt;
* int &#039;&#039;&#039;d_waitforkey&#039;&#039;&#039; keys&lt;br /&gt;
:Waits for a keypress from the player&lt;br /&gt;
* int &#039;&#039;&#039;d_powerup&#039;&#039;&#039; [ai_name:string | script_id:int] powerup:string&lt;br /&gt;
:Gets or sets a character&#039;s powerups&lt;br /&gt;
* float &#039;&#039;&#039;d_location&#039;&#039;&#039; [ai_name:string | script_id:int] xyz:string&lt;br /&gt;
:Gets the XYZ coordinate of a character&lt;br /&gt;
* float &#039;&#039;&#039;d_location&#039;&#039;&#039; [ai_name:string | script_id:int] x:float y:float z:float&lt;br /&gt;
:Sets the XYZ coordinates of a character&lt;br /&gt;
* float &#039;&#039;&#039;d_distance&#039;&#039;&#039; [ai_name:string | script_id:int] [ai_name:string | script_id:int]&lt;br /&gt;
:Gets the distance between two characters&lt;br /&gt;
* int &#039;&#039;&#039;d_regen&#039;&#039;&#039; [ai_name:string | script_id:int] yesno:int&lt;br /&gt;
:Gets or sets a character&#039;s regeneration abilities&lt;br /&gt;
&lt;br /&gt;
====Text====&lt;br /&gt;
* void &#039;&#039;&#039;d_dprint&#039;&#039;&#039; text:string [textcolor: r b g] [shadowcolor: r b g]&lt;br /&gt;
:Prints to console in color&lt;br /&gt;
:Colors are ints between 0 and 255. Other numbers will be reduced to 255.&lt;br /&gt;
:Any colors you do not supply will be replaced with the default values: 255, 255, 255 and 63, 63. 63&lt;br /&gt;
&lt;br /&gt;
* string &#039;&#039;&#039;sprintf&#039;&#039;&#039; str1:format ...&lt;br /&gt;
:Does a C-style sprintf operation on a string&lt;br /&gt;
&lt;br /&gt;
===Added input bindings===&lt;br /&gt;
When Daodan Input is enabled, the following inputs can be bound in key_config.txt in addition to the [[Customizing/Binding#Bindable_keys|usual ones.]]&lt;br /&gt;
&lt;br /&gt;
*&#039;&#039;&#039;mousebutton5&#039;&#039;&#039;&lt;br /&gt;
:The &amp;quot;forward&amp;quot; button on most 5-button mice.&lt;br /&gt;
*&#039;&#039;&#039;scrollup&#039;&#039;&#039;&lt;br /&gt;
:Scrolling up one notch on a mouse scroll wheel or touchpad.&lt;br /&gt;
*&#039;&#039;&#039;scrolldown&#039;&#039;&#039;&lt;br /&gt;
:Scrolling down one notch on a mouse scroll wheel or touchpad.&lt;br /&gt;
*&#039;&#039;&#039;scrollleft&#039;&#039;&#039;&lt;br /&gt;
:Scrolling left on a mouse with an omnidirectional scroll wheel or a touchpad.&lt;br /&gt;
*&#039;&#039;&#039;scrollright&#039;&#039;&#039;&lt;br /&gt;
:Scrolling right on a mouse with an omnidirectional scroll wheel or a touchpad.&lt;br /&gt;
*&#039;&#039;&#039;pagedown&#039;&#039;&#039;&lt;br /&gt;
:This was broken in DirectInput mode in vanilla Oni.&lt;br /&gt;
&lt;br /&gt;
==FASM-Daodan (old)==&lt;br /&gt;
&#039;&#039;&#039;Note: Unsupported by community.&#039;&#039;&#039; There is also a much older release of Daodan, referred to as FASM-Daodan. This is the original version by SFeLi. Unlike the C-Daodan, FASM-Daodan requires a different DLL to be downloaded depending on which Oni.exe is used. It does not support the newer Daodan features such as windowed mode, however it still contains the basic patches such as the Windows XP fix and the custom cheats.&lt;br /&gt;
&lt;br /&gt;
[http://sfeli.oni2.net/daodan/basic-0.6.6.zip Download a ZIP containing the DLLs for each version.]&lt;br /&gt;
&lt;br /&gt;
[http://sfeli.oni2.net/daodan/daodan-nightly.zip Download a ZIP containing the DLLs for an experimental (unstable) FASM-Daodan] This includes the projectile awareness patch and support for any language (except Chinese and Japanese).&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Daodan_DLL&amp;diff=34223</id>
		<title>Daodan DLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Daodan_DLL&amp;diff=34223"/>
		<updated>2021-10-24T04:02:13Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This is a Windows-only patch. For information on the patches to Mac versions of Oni and historical patching of Windows Oni, see the [[:Category:Patches|Patches category]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Subpages:&#039;&#039; [[/Change_log|Daodan DLL change log]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Daodan DLL&#039;&#039;&#039; is a patch for Oni for Windows that hooks into the game engine to fix bugs and add features. It does this by posing as &#039;&#039;&#039;binkw32.dll&#039;&#039;&#039;, the library that Oni loads so that it can play the game&#039;s opening and ending videos. The Daodan fixes issues such as the famous &amp;quot;[[Blam|Blam!]]&amp;quot; error that occurs on modern machines. It also adds new features such as support for widescreen resolutions and bonus cheat codes. The Daodan DLL was created by [[User:SFeLi|SFeLi]] and then developed further by [[User:RossyMiles|RossyMiles]], [[User:Gumby|Gumby]] and [[User:Admin|Alloc]].&lt;br /&gt;
{{TOCfloat}}&lt;br /&gt;
==C-Daodan==&lt;br /&gt;
&amp;lt;div style=&amp;quot;overflow:hidden&amp;quot;&amp;gt;This is the recommended version of the Daodan DLL. Note that you &#039;&#039;&#039;already have this installed&#039;&#039;&#039; if you installed the [[Anniversary Edition]].&lt;br /&gt;
&lt;br /&gt;
===Installation instructions (for non-[[AE]] users)===&lt;br /&gt;
1. Download the AE package that contains the Daodan DLL from [http://mods.oni2.net/node/233 here]. The files you need are in the win_only\ directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Find where your copy of Oni has been installed to. For most people, it is stored in &amp;quot;C:\Program Files\Oni&amp;quot;. This folder should contain a &amp;quot;GameDataFolder&amp;quot; and &amp;quot;Oni&amp;quot; or &amp;quot;Oni.exe&amp;quot;. Back up your Oni.exe by renaming it (e.g. &amp;quot;Oni-original.exe&amp;quot;).&amp;lt;br /&amp;gt;&lt;br /&gt;
3. Place the newly-downloaded Oni.exe, binkw32.dll, realbink.dll, and assorted files into the Oni\ folder.&amp;lt;br /&amp;gt;&lt;br /&gt;
4. To test if you have done everything correctly, run &amp;quot;Oni.exe&amp;quot;. Enter the pause (Diary) screen (F1 by default) and type &amp;quot;tellmetheversion&amp;quot;; if you get a result like &amp;quot;Daodan v.&#039;&#039;x.y&#039;&#039;&amp;quot;, the DLL is working.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
If the game does not display correctly (for instance, a black window), try the following in any order:&lt;br /&gt;
&lt;br /&gt;
1. Disable the intro movie by renaming GameDataFolder\intro.bik. This often fixes the game window.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Open the daodan.ini in Notepad and set either &amp;quot;daodangl&amp;quot; or &amp;quot;windowhack&amp;quot; to true. &amp;quot;windowhack&amp;quot; should at least center the window on the screen.&amp;lt;br /&amp;gt;&lt;br /&gt;
3. Try [http://www.google.com/search?q=windows+run+as+administrator launching Oni as Administrator].&amp;lt;br /&amp;gt;&lt;br /&gt;
4. Make the Oni folder writable by un-checking &amp;quot;Read-only&amp;quot; in the Properties window for the folder.&amp;lt;br /&amp;gt;&lt;br /&gt;
5. Try both the run_full and run_wind scripts.&lt;br /&gt;
&lt;br /&gt;
You can report problems on the forum in [http://oni.bungie.org/forum/viewtopic.php?id=1686 this thread] or in a new thread in the Modifications forum.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
===Feature summary===&lt;br /&gt;
*Windows XP patch - Fixed Oni crashing at startup on modern computers.&lt;br /&gt;
*Windowed mode - Oni can run inside a window properly.&lt;br /&gt;
*Custom screen resolutions - Includes many more default screen resolutions.&lt;br /&gt;
*BGRA32 (ARGB8888) support.&lt;br /&gt;
*Extra cheats - see &amp;quot;Added cheat codes&amp;quot; section below.&lt;br /&gt;
*Cheats always enabled; no need to beat game first.&lt;br /&gt;
*Extra command line options (for advanced users) - For a list, type &amp;quot;Oni -help&amp;quot;.&lt;br /&gt;
*A new input system based on Raw Input, which should fix mouse lag and judder, as well as disabling mouse acceleration.&lt;br /&gt;
*AIs have ability to properly dodge projectiles.&lt;br /&gt;
*Stops fly-in character portraits from being stretched when playing in widescreen.&lt;br /&gt;
&lt;br /&gt;
===Developer Mode===&lt;br /&gt;
The DLL enables [[Developer Mode]]; go to the pause screen (F1) and type &amp;quot;thedayismine&amp;quot; or simply &#039;x&#039; to activate it.&lt;br /&gt;
&lt;br /&gt;
===Languages===&lt;br /&gt;
The Daodan DLL offers support for the Chinese version of the game as well as multibyte languages in general (see &amp;quot;multibyte&amp;quot; under &amp;quot;Patches&amp;quot; section). It also has the beginnings of some basic localization support, by allowing cheat code names and other strings to be translated. To add an option, look for the options section or type&lt;br /&gt;
 [Language]&lt;br /&gt;
To enable Chinese support, type:&lt;br /&gt;
 [Language]&lt;br /&gt;
 Chinese = True&lt;br /&gt;
This will load a DLL called xfhsm_oni.dll (apparently provided with Chinese copies of Oni).&lt;br /&gt;
&lt;br /&gt;
Here are the strings that you can replace using the .ini file:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!INI name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|blam&lt;br /&gt;
|Replaces body text of the [[:File:Blam!.png|blam window]].&lt;br /&gt;
|-&lt;br /&gt;
|damn&lt;br /&gt;
|Replaces title of the [[:File:Blam!.png|blam window]].&lt;br /&gt;
|-&lt;br /&gt;
|savepoint&lt;br /&gt;
|Replaces string &amp;quot;Save Point&amp;quot; in Load Game menu (not working?).&lt;br /&gt;
|-&lt;br /&gt;
|syndicatewarehouse&lt;br /&gt;
|Replaces string &amp;quot;Syndicate Warehouse&amp;quot; in Load Game menu (not working?).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;nameofcheat&#039;&#039;_on/_off&lt;br /&gt;
|Replaces name of the built-in cheat code as it appears on the pause screen when code is entered. E.g., &amp;quot;behemoth_on=Gojira Desu!&amp;quot;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
Creating a file called Daodan.[[wikipedia:INI_file|ini]] in the same directory as the Daodan DLL will allow you to configure which patches are enabled, as well as to store configuration settings and language items.&lt;br /&gt;
&lt;br /&gt;
On modern versions of Windows (starting with Windows Vista), Oni does not properly request write access to the directory containing Oni.exe (i.e. C:\Program Files (x86)\Oni in typical installs). Windows detects this, and creates a dedicated directory for Oni.exe (and thus Daodan.DLL) to write its files to, located in C:\Users\&amp;lt;Your Username&amp;gt;\AppData\Local\VirtualStore. The directory for Oni will reflect its relative path on disk, so in a typical install, it will be at VirtualStore\Program Files (x86)\Oni. This is where all files output by the program (startup.txt, persist.dat, key_config.txt, etc.) will be located when Oni is not run as an administrator. &#039;&#039;&#039;This is the location where Daodan.ini must be placed if Oni is to be run as a non-administrator.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inside of the Daodan.ini file, each configuration setting is stored inside a section as a name and value pair. To temporarily disable a setting in the INI, add a &#039;#&#039; to the beginning of the line and the Daodan will ignore it.&lt;br /&gt;
&lt;br /&gt;
As of Daodan v3.7, configuration entries in Daodan.ini are stored in several different sections. To change an entry, add it to the relevant section. If the section does not yet exist, add it to the end of the file and add relevant entries under it. If any entry is omitted, it is set to its default value. Entries are case-insensitive, and spacing does not matter.&lt;br /&gt;
&lt;br /&gt;
Here is an example Daodan.ini file. This example sets the devmode section items to their defaults and disables the cooldown timer patch:&lt;br /&gt;
 [Devmode]&lt;br /&gt;
 highres_console = True&lt;br /&gt;
 showtriggervolumes = True&lt;br /&gt;
 &lt;br /&gt;
 [gameplay]&lt;br /&gt;
 CooldownTimer = False&lt;br /&gt;
&lt;br /&gt;
Daodan.ini may contain the following sections (names are case-insensitive):&lt;br /&gt;
* devmode &#039;&#039;(Developer Mode Configuration)&#039;&#039;&lt;br /&gt;
* gameplay &#039;&#039;(Gameplay Configuration)&#039;&#039;&lt;br /&gt;
* graphics &#039;&#039;(Graphics Configuration)&#039;&#039;&lt;br /&gt;
* language &#039;&#039;(Language Configuration)&#039;&#039;&lt;br /&gt;
* modding &#039;&#039;(Modding Configuration)&#039;&#039;&lt;br /&gt;
* oni &#039;&#039;(Original Oni Options Configuration)&#039;&#039;&lt;br /&gt;
* windows &#039;&#039;(OS Interaction Options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For names of all entries, and a brief help, see the &amp;quot;All Configuration Settings&amp;quot; section below for more information.&lt;br /&gt;
&lt;br /&gt;
===Command-line arguments===&lt;br /&gt;
[[Customizing#Command-line_arguments|Command line options]] are still present in the beta Daodan although the syntax is a little different (and a bit more powerful.) The basic syntax for a command line option is this:&lt;br /&gt;
 -&amp;lt;ini section&amp;gt;.&amp;lt;name&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
Where &amp;lt;ini section&amp;gt; is the Daodan.ini section (usually &#039;&#039;&#039;Patch&#039;&#039;&#039; or &#039;&#039;&#039;Options&#039;&#039;&#039;,) &amp;lt;name&amp;gt; is the option and &amp;lt;value&amp;gt; is the value to set it to (usually &#039;&#039;&#039;True&#039;&#039;&#039; or &#039;&#039;&#039;False&#039;&#039;&#039;.) Therefore, to disable sound, start Oni with this:&lt;br /&gt;
 oni -options.sound false&lt;br /&gt;
When &amp;lt;ini section&amp;gt; is omitted, it is assumed to be &#039;&#039;&#039;options&#039;&#039;&#039;. When &amp;lt;value&amp;gt; is omitted, it is assumed to be &#039;&#039;&#039;true&#039;&#039;&#039; unless &amp;lt;name&amp;gt; starts with &#039;&#039;&#039;no&#039;&#039;&#039; (eg. &#039;&#039;&#039;nosound&#039;&#039;&#039;) in which case it is assumed to be &#039;&#039;&#039;false&#039;&#039;&#039;. So an easier way to write the above command would be:&lt;br /&gt;
 oni -nosound&lt;br /&gt;
Options or patches specified on the command line take precedence over options specified in Daodan.ini. Currently Oni&#039;s command line parser isn&#039;t powerful enough to parse language elements (no support for quoting arguments); this will be fixed in a later release.&lt;br /&gt;
&lt;br /&gt;
===All Configuration Settings===&lt;br /&gt;
Below are the names of the configuration settings you can turn on and off in Daodan.ini (names and sections are case-insensitive). Also noted is whether the DLL has this patch turned on or off by default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!INI Section&lt;br /&gt;
!INI Name&lt;br /&gt;
!Default&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[devmode]&lt;br /&gt;
|highres_console&lt;br /&gt;
|true&lt;br /&gt;
|Fixes bug where console line becomes invisible at higher resolutions.&lt;br /&gt;
|-&lt;br /&gt;
|[devmode]&lt;br /&gt;
|showtriggervolumes&lt;br /&gt;
|true&lt;br /&gt;
|Allows BSL variable &amp;quot;show_triggervolumes&amp;quot; and Ctrl+Shift+X (in devmode) to work.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|bindablecheats&lt;br /&gt;
|true&lt;br /&gt;
|Enables cheats to be bound to keys using key_config.txt. Requires &amp;quot;customactions&amp;quot; and &amp;quot;cheattable&amp;quot; to be on.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|characterawareness&lt;br /&gt;
|true&lt;br /&gt;
|Prevents AIs from forgetting about you when they are pursuing you and lose sight of you.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|cheatsenabled&lt;br /&gt;
|true&lt;br /&gt;
|Enables cheats without having to beat the game first. Required for using &#039;tellmetheversion&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|cheattable&lt;br /&gt;
|true&lt;br /&gt;
|Replaces Oni&#039;s cheat table with table that includes new cheats (see section below). Required for using &#039;tellmetheversion&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|cooldowntimer&lt;br /&gt;
|true&lt;br /&gt;
|Disables weapon cooldown exploit, e.g. dropping the Mercury Bow and picking it back up right away to reset weapon cooldown.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|customactions&lt;br /&gt;
|true&lt;br /&gt;
|Allows new bindable actions to be registered with the DLL, such as bindable cheats (if &amp;quot;bindablecheats&amp;quot; is on).&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|kickguns&lt;br /&gt;
|false&lt;br /&gt;
|EXPERIMENTAL! Unfinished, do not use.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|pathfinding&lt;br /&gt;
|true&lt;br /&gt;
|Multiplies size of pathfinding grid cache by eight in order to prevent crashes in large levels.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|projaware&lt;br /&gt;
|true&lt;br /&gt;
|Allows AI to dodge incoming gunfire properly.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|throwtest	&lt;br /&gt;
|false&lt;br /&gt;
|EXPERIMENTAL! Enables experimentation with allowing enemies to be thrown over railings.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|wpfadetime&lt;br /&gt;
|true&lt;br /&gt;
|Adds working function for existing BSL command wp_fadetime, sets fade time to 4800.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|binkplay&lt;br /&gt;
|true&lt;br /&gt;
|Fixes binkplay calls to use GDI and outro same mode as intro.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|daodangl&lt;br /&gt;
|true&lt;br /&gt;
|Provides an improved windowed mode (-noswitch); this patch is known to break the hiding of the Windows taskbar in fullscreen mode.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|displayenum&lt;br /&gt;
|true&lt;br /&gt;
|Offers a more accurate list of available display modes in the Options menu.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|gamma&lt;br /&gt;
|true&lt;br /&gt;
|Enables gamma slider in fullscreen, disables it in windowed mode.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|newweap&lt;br /&gt;
|true&lt;br /&gt;
|Enables weapon info, so that standing above a weapon displays a message containing the weapon name and amount of ammo.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|optionsvisible&lt;br /&gt;
|true&lt;br /&gt;
|Enables always showing the options button in main menu, even when pausing from a game.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|showalllasersights&lt;br /&gt;
|false&lt;br /&gt;
|Enables visibility of all (also enemies&#039;) weapon lasersights&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|widescreenportraits&lt;br /&gt;
|true&lt;br /&gt;
|Prevents fly-in portraits from being stretched when playing in widescreen resolutions.&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|chinese&lt;br /&gt;
|true&lt;br /&gt;
|Allows Chinese fonts to be shown if the required DLL is available.&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|fonttexturecache&lt;br /&gt;
|true&lt;br /&gt;
|Doubles size of font texture cache.&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|language&lt;br /&gt;
|en&lt;br /&gt;
|Sets localization for hardcoded strings (e.g. &amp;quot;Savepoints&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|nomultibyte&lt;br /&gt;
|true&lt;br /&gt;
|Enables languages which use multibyte coding (such as Chinese).&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|argb8888&lt;br /&gt;
|true&lt;br /&gt;
|Enables the use of textures using ARGB8888.&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|d_regen&lt;br /&gt;
|true&lt;br /&gt;
|Enables script command d_regen (query/set regeneration for any character).&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|daodanbsl&lt;br /&gt;
|true&lt;br /&gt;
|Adds new BSL commands (see below).&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|hdscreens_lowres&lt;br /&gt;
|true&lt;br /&gt;
|Allows HD intro/ending screens on game resolutions smaller than 1024x768.&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|largetextures&lt;br /&gt;
|true&lt;br /&gt;
|Enables the use of textures up to 512x512.&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|levelplugins&lt;br /&gt;
|true&lt;br /&gt;
|Allows level files that do not end in &amp;quot;_Final&amp;quot; to be loaded from the GDF.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|debug&lt;br /&gt;
|false&lt;br /&gt;
|Not useful; probably does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|debugfiles&lt;br /&gt;
|false&lt;br /&gt;
|Enables function logging; when active, BSL function calls are logged to script_debug.txt.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|findsounds&lt;br /&gt;
|false&lt;br /&gt;
|Not useful, extends output of sound_list_broken_links.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|ignore_private_data&lt;br /&gt;
|false&lt;br /&gt;
|Disables the loading of &#039;private data&#039; in level0. Probably has no effect.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|sound&lt;br /&gt;
|true&lt;br /&gt;
|Enables sound.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|switch&lt;br /&gt;
|true&lt;br /&gt;
|Enables always switching screen to resolution on Oni&#039;s Options screen, making the game fullscreen; opposite of Oni&#039;s built-in argument &amp;quot;noswitch&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|alttab&lt;br /&gt;
|true&lt;br /&gt;
|Allows user to switch applications while in Oni (Alt-Tab) and use the Windows key; however, it may enable the screensaver as well.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|border&lt;br /&gt;
|true&lt;br /&gt;
|Adds a border in windowed mode if &#039;[graphics] daodangl&#039; is active.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|clipcursor&lt;br /&gt;
|true&lt;br /&gt;
|Limits cursor to Oni&#039;s window. This is always enabled if Daodan Input is enabled.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|daodaninput&lt;br /&gt;
|true&lt;br /&gt;
|A new input system which reports input on every frame, which should fix issues with mouse lag/judder and high-FPS displays.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|directinput&lt;br /&gt;
|true&lt;br /&gt;
|Forces on DirectInput when Daodan Input is disabled.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|mousesensitivity&lt;br /&gt;
|1.0&lt;br /&gt;
|Multiplier for mouse movement values when Daodan Input is enabled. 1.0 is Oni&#039;s default.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|disablecmdline&lt;br /&gt;
|true&lt;br /&gt;
|Disables Oni&#039;s existing command line parser as Daodan has its own.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|killvtune&lt;br /&gt;
|false&lt;br /&gt;
|Prevents loading of vtuneapi.dll.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|safeprintf&lt;br /&gt;
|true&lt;br /&gt;
|Replaces Oni&#039;s function that prints to startup.txt with a safer one.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|topmost&lt;br /&gt;
|false&lt;br /&gt;
|Keeps game window on top in windowed mode, even when switching applications.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|usegettickcount&lt;br /&gt;
|true&lt;br /&gt;
|Replaces Oni&#039;s timing functions with more accurate ones.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Added cheat codes===&lt;br /&gt;
*&#039;&#039;&#039;bigbadboss&#039;&#039;&#039;&lt;br /&gt;
:Player takes less weapon damage.&lt;br /&gt;
*&#039;&#039;&#039;buddha&#039;&#039;&#039;&lt;br /&gt;
:Player is unkillable (will not go below 1HP).&lt;br /&gt;
*&#039;&#039;&#039;bulletproof&#039;&#039;&#039;&lt;br /&gt;
:Player takes no weapon damage.&lt;br /&gt;
*&#039;&#039;&#039;kangaroo&#039;&#039;&#039;&lt;br /&gt;
:Player can make super-high jumps.&lt;br /&gt;
*&#039;&#039;&#039;marypoppins&#039;&#039;&#039;&lt;br /&gt;
:Player can fly by holding down jump key.&lt;br /&gt;
*&#039;&#039;&#039;shinobi&#039;&#039;&#039;&lt;br /&gt;
:Extra difficulty mode; player always has 1HP, but also is immune to weapons, and the enemy AI cannot hear the player.&lt;br /&gt;
&lt;br /&gt;
===Added BSL functions===&lt;br /&gt;
Any time a function can both get and set a value, and you set the value, the old value should be returned, barring any programming oversight by Gumby.&lt;br /&gt;
&lt;br /&gt;
====Math====&lt;br /&gt;
* int &#039;&#039;&#039;int32mul&#039;&#039;&#039; n1:int n2:int&lt;br /&gt;
:Multiplies two integers&lt;br /&gt;
* float &#039;&#039;&#039;mul&#039;&#039;&#039; [int1:int|float1:float] [int2:int|float2:float]&lt;br /&gt;
:Multiplies two numbers&lt;br /&gt;
* int &#039;&#039;&#039;int32div&#039;&#039;&#039; n1:int n2:int&lt;br /&gt;
:Divides two integers&lt;br /&gt;
* float &#039;&#039;&#039;div&#039;&#039;&#039; [int1:int|float1:float] [int2:int|float2:float]&lt;br /&gt;
:Divides two two numbers&lt;br /&gt;
* int &#039;&#039;&#039;int32rand&#039;&#039;&#039; start:int end:int&lt;br /&gt;
:Returns a pseudo-random number between two numbers (inclusive).&lt;br /&gt;
&lt;br /&gt;
====Characters====&lt;br /&gt;
* int &#039;&#039;&#039;d_getkills&#039;&#039;&#039; [ai_name:str | script_id:int]&lt;br /&gt;
:Gets the number of kills a character has&lt;br /&gt;
* int &#039;&#039;&#039;d_getdamage&#039;&#039;&#039; [ai_name:str | script_id:int]&lt;br /&gt;
:Gets the amount of damage a character has caused&lt;br /&gt;
* string &#039;&#039;&#039;d_name&#039;&#039;&#039; [ai_name:str | script_id:int] [newname:string]&lt;br /&gt;
:Gets or sets a character&#039;s name&lt;br /&gt;
* string &#039;&#039;&#039;d_regen&#039;&#039;&#039; [ai_name:str | script_id:int] on_off:bool&lt;br /&gt;
:Gets or sets a character&#039;s regeneration (like elderrune for the player)&lt;br /&gt;
* int &#039;&#039;&#039;d_getindex&#039;&#039;&#039; [ai_name:str]&lt;br /&gt;
:Gets a character&#039;s script_id from their name&lt;br /&gt;
* int &#039;&#039;&#039;d_powerup&#039;&#039;&#039; ai_name:str|script_id:int powerup:str [newcount:int]&lt;br /&gt;
:Gets or sets the amount of powerups a character has&lt;br /&gt;
:Powerup list the same as with &#039;&#039;&#039;chr_givepowerup&#039;&#039;&#039; with the addition of &amp;quot;bossshield&amp;quot;&lt;br /&gt;
* int &#039;&#039;&#039;d_health&#039;&#039;&#039; [ai_name:str | script_id:int] [newhealth:int]&lt;br /&gt;
:Gets or sets a character&#039;s health&lt;br /&gt;
* int &#039;&#039;&#039;d_maxhealth&#039;&#039;&#039; [ai_name:str | script_id:int] [newmaxhealth:int]&lt;br /&gt;
:Gets or sets a character&#039;s maxhealth&lt;br /&gt;
* int &#039;&#039;&#039;d_holdkey&#039;&#039;&#039; [ai_name:string | script_id:int] keys frames:int&lt;br /&gt;
:Makes a character hold a key&lt;br /&gt;
:Possibly broken&lt;br /&gt;
* int &#039;&#039;&#039;d_isheld&#039;&#039;&#039; keys&lt;br /&gt;
:Checks if player is holding a key&lt;br /&gt;
:Possibly broken&lt;br /&gt;
* int &#039;&#039;&#039;d_waitforkey&#039;&#039;&#039; keys&lt;br /&gt;
:Waits for a keypress from the player&lt;br /&gt;
* int &#039;&#039;&#039;d_powerup&#039;&#039;&#039; [ai_name:string | script_id:int] powerup:string&lt;br /&gt;
:Gets or sets a character&#039;s powerups&lt;br /&gt;
* float &#039;&#039;&#039;d_location&#039;&#039;&#039; [ai_name:string | script_id:int] xyz:string&lt;br /&gt;
:Gets the XYZ coordinate of a character&lt;br /&gt;
* float &#039;&#039;&#039;d_location&#039;&#039;&#039; [ai_name:string | script_id:int] x:float y:float z:float&lt;br /&gt;
:Sets the XYZ coordinates of a character&lt;br /&gt;
* float &#039;&#039;&#039;d_distance&#039;&#039;&#039; [ai_name:string | script_id:int] [ai_name:string | script_id:int]&lt;br /&gt;
:Gets the distance between two characters&lt;br /&gt;
* int &#039;&#039;&#039;d_regen&#039;&#039;&#039; [ai_name:string | script_id:int] yesno:int&lt;br /&gt;
:Gets or sets a character&#039;s regeneration abilities&lt;br /&gt;
&lt;br /&gt;
====Text====&lt;br /&gt;
* void &#039;&#039;&#039;d_dprint&#039;&#039;&#039; text:string [textcolor: r b g] [shadowcolor: r b g]&lt;br /&gt;
:Prints to console in color&lt;br /&gt;
:Colors are ints between 0 and 255. Other numbers will be reduced to 255.&lt;br /&gt;
:Any colors you do not supply will be replaced with the default values: 255, 255, 255 and 63, 63. 63&lt;br /&gt;
&lt;br /&gt;
* string &#039;&#039;&#039;sprintf&#039;&#039;&#039; str1:format ...&lt;br /&gt;
:Does a C-style sprintf operation on a string&lt;br /&gt;
&lt;br /&gt;
==FASM-Daodan (old)==&lt;br /&gt;
&#039;&#039;&#039;Note: Unsupported by community.&#039;&#039;&#039; There is also a much older release of Daodan, referred to as FASM-Daodan. This is the original version by SFeLi. Unlike the C-Daodan, FASM-Daodan requires a different DLL to be downloaded depending on which Oni.exe is used. It does not support the newer Daodan features such as windowed mode, however it still contains the basic patches such as the Windows XP fix and the custom cheats.&lt;br /&gt;
&lt;br /&gt;
[http://sfeli.oni2.net/daodan/basic-0.6.6.zip Download a ZIP containing the DLLs for each version.]&lt;br /&gt;
&lt;br /&gt;
[http://sfeli.oni2.net/daodan/daodan-nightly.zip Download a ZIP containing the DLLs for an experimental (unstable) FASM-Daodan] This includes the projectile awareness patch and support for any language (except Chinese and Japanese).&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Daodan_DLL&amp;diff=34222</id>
		<title>Daodan DLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Daodan_DLL&amp;diff=34222"/>
		<updated>2021-10-24T04:00:58Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:&#039;&#039;This is a Windows-only patch. For information on the patches to Mac versions of Oni and historical patching of Windows Oni, see the [[:Category:Patches|Patches category]].&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Subpages:&#039;&#039; [[/Change_log|Daodan DLL change log]]&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;Daodan DLL&#039;&#039;&#039; is a patch for Oni for Windows that hooks into the game engine to fix bugs and add features. It does this by posing as &#039;&#039;&#039;binkw32.dll&#039;&#039;&#039;, the library that Oni loads so that it can play the game&#039;s opening and ending videos. The Daodan fixes issues such as the famous &amp;quot;[[Blam|Blam!]]&amp;quot; error that occurs on modern machines. It also adds new features such as support for widescreen resolutions and bonus cheat codes. The Daodan DLL was created by [[User:SFeLi|SFeLi]] and then developed further by [[User:RossyMiles|RossyMiles]], [[User:Gumby|Gumby]] and [[User:Admin|Alloc]].&lt;br /&gt;
{{TOCfloat}}&lt;br /&gt;
==C-Daodan==&lt;br /&gt;
&amp;lt;div style=&amp;quot;overflow:hidden&amp;quot;&amp;gt;This is the recommended version of the Daodan DLL. Note that you &#039;&#039;&#039;already have this installed&#039;&#039;&#039; if you installed the [[Anniversary Edition]].&lt;br /&gt;
&lt;br /&gt;
===Installation instructions (for non-[[AE]] users)===&lt;br /&gt;
1. Download the AE package that contains the Daodan DLL from [http://mods.oni2.net/node/233 here]. The files you need are in the win_only\ directory.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Find where your copy of Oni has been installed to. For most people, it is stored in &amp;quot;C:\Program Files\Oni&amp;quot;. This folder should contain a &amp;quot;GameDataFolder&amp;quot; and &amp;quot;Oni&amp;quot; or &amp;quot;Oni.exe&amp;quot;. Back up your Oni.exe by renaming it (e.g. &amp;quot;Oni-original.exe&amp;quot;).&amp;lt;br /&amp;gt;&lt;br /&gt;
3. Place the newly-downloaded Oni.exe, binkw32.dll, realbink.dll, and assorted files into the Oni\ folder.&amp;lt;br /&amp;gt;&lt;br /&gt;
4. To test if you have done everything correctly, run &amp;quot;Oni.exe&amp;quot;. Enter the pause (Diary) screen (F1 by default) and type &amp;quot;tellmetheversion&amp;quot;; if you get a result like &amp;quot;Daodan v.&#039;&#039;x.y&#039;&#039;&amp;quot;, the DLL is working.&lt;br /&gt;
&lt;br /&gt;
===Troubleshooting===&lt;br /&gt;
If the game does not display correctly (for instance, a black window), try the following in any order:&lt;br /&gt;
&lt;br /&gt;
1. Disable the intro movie by renaming GameDataFolder\intro.bik. This often fixes the game window.&amp;lt;br /&amp;gt;&lt;br /&gt;
2. Open the daodan.ini in Notepad and set either &amp;quot;daodangl&amp;quot; or &amp;quot;windowhack&amp;quot; to true. &amp;quot;windowhack&amp;quot; should at least center the window on the screen.&amp;lt;br /&amp;gt;&lt;br /&gt;
3. Try [http://www.google.com/search?q=windows+run+as+administrator launching Oni as Administrator].&amp;lt;br /&amp;gt;&lt;br /&gt;
4. Make the Oni folder writable by un-checking &amp;quot;Read-only&amp;quot; in the Properties window for the folder.&amp;lt;br /&amp;gt;&lt;br /&gt;
5. Try both the run_full and run_wind scripts.&lt;br /&gt;
&lt;br /&gt;
You can report problems on the forum in [http://oni.bungie.org/forum/viewtopic.php?id=1686 this thread] or in a new thread in the Modifications forum.&lt;br /&gt;
&amp;lt;/div&amp;gt;&lt;br /&gt;
===Feature summary===&lt;br /&gt;
*Windows XP patch - Fixed Oni crashing at startup on modern computers.&lt;br /&gt;
*Windowed mode - Oni can run inside a window properly.&lt;br /&gt;
*Custom screen resolutions - Includes many more default screen resolutions.&lt;br /&gt;
*BGRA32 (ARGB8888) support.&lt;br /&gt;
*Extra cheats - see &amp;quot;Added cheat codes&amp;quot; section below.&lt;br /&gt;
*Cheats always enabled; no need to beat game first.&lt;br /&gt;
*Extra command line options (for advanced users) - For a list, type &amp;quot;Oni -help&amp;quot;.&lt;br /&gt;
*A new input system based on Raw Input, which should fix mouse lag and judder, as well as disabling mouse acceleration.&lt;br /&gt;
*AIs have ability to properly dodge projectiles.&lt;br /&gt;
*Stops fly-in character portraits from being stretched when playing in widescreen.&lt;br /&gt;
&lt;br /&gt;
===Developer Mode===&lt;br /&gt;
The DLL enables [[Developer Mode]]; go to the pause screen (F1) and type &amp;quot;thedayismine&amp;quot; or simply &#039;x&#039; to activate it.&lt;br /&gt;
&lt;br /&gt;
===Languages===&lt;br /&gt;
The Daodan DLL offers support for the Chinese version of the game as well as multibyte languages in general (see &amp;quot;multibyte&amp;quot; under &amp;quot;Patches&amp;quot; section). It also has the beginnings of some basic localization support, by allowing cheat code names and other strings to be translated. To add an option, look for the options section or type&lt;br /&gt;
 [Language]&lt;br /&gt;
To enable Chinese support, type:&lt;br /&gt;
 [Language]&lt;br /&gt;
 Chinese = True&lt;br /&gt;
This will load a DLL called xfhsm_oni.dll (apparently provided with Chinese copies of Oni).&lt;br /&gt;
&lt;br /&gt;
Here are the strings that you can replace using the .ini file:&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!INI name&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|blam&lt;br /&gt;
|Replaces body text of the [[:File:Blam!.png|blam window]].&lt;br /&gt;
|-&lt;br /&gt;
|damn&lt;br /&gt;
|Replaces title of the [[:File:Blam!.png|blam window]].&lt;br /&gt;
|-&lt;br /&gt;
|savepoint&lt;br /&gt;
|Replaces string &amp;quot;Save Point&amp;quot; in Load Game menu (not working?).&lt;br /&gt;
|-&lt;br /&gt;
|syndicatewarehouse&lt;br /&gt;
|Replaces string &amp;quot;Syndicate Warehouse&amp;quot; in Load Game menu (not working?).&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;nameofcheat&#039;&#039;_on/_off&lt;br /&gt;
|Replaces name of the built-in cheat code as it appears on the pause screen when code is entered. E.g., &amp;quot;behemoth_on=Gojira Desu!&amp;quot;.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Configuration===&lt;br /&gt;
Creating a file called Daodan.[[wikipedia:INI_file|ini]] in the same directory as the Daodan DLL will allow you to configure which patches are enabled, as well as to store configuration settings and language items.&lt;br /&gt;
&lt;br /&gt;
On modern versions of Windows (starting with Windows Vista), Oni does not properly request write access to the directory containing Oni.exe (i.e. C:\Program Files (x86)\Oni in typical installs). Windows detects this, and creates a dedicated directory for Oni.exe (and thus Daodan.DLL) to write its files to, located in C:\Users\&amp;lt;Your Username&amp;gt;\AppData\Local\VirtualStore. The directory for Oni will reflect its relative path on disk, so in a typical install, it will be at VirtualStore\Program Files (x86)\Oni. This is where all files output by the program (startup.txt, persist.dat, key_config.txt, etc.) will be located when Oni is not run as an administrator. &#039;&#039;&#039;This is the location where Daodan.ini must be placed if Oni is to be run as a non-administrator.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Inside of the Daodan.ini file, each configuration setting is stored inside a section as a name and value pair. To temporarily disable a setting in the INI, add a &#039;#&#039; to the beginning of the line and the Daodan will ignore it.&lt;br /&gt;
&lt;br /&gt;
As of Daodan v3.7, configuration entries in Daodan.ini are stored in several different sections. To change an entry, add it to the relevant section. If the section does not yet exist, add it to the end of the file and add relevant entries under it. If any entry is omitted, it is set to its default value. Entries are case-insensitive, and spacing does not matter.&lt;br /&gt;
&lt;br /&gt;
Here is an example Daodan.ini file. This example sets the devmode section items to their defaults and disables the cooldown timer patch:&lt;br /&gt;
 [Devmode]&lt;br /&gt;
 highres_console = True&lt;br /&gt;
 showtriggervolumes = True&lt;br /&gt;
 &lt;br /&gt;
 [gameplay]&lt;br /&gt;
 CooldownTimer = False&lt;br /&gt;
&lt;br /&gt;
Daodan.ini may contain the following sections (names are case-insensitive):&lt;br /&gt;
* devmode &#039;&#039;(Developer Mode Configuration)&#039;&#039;&lt;br /&gt;
* gameplay &#039;&#039;(Gameplay Configuration)&#039;&#039;&lt;br /&gt;
* graphics &#039;&#039;(Graphics Configuration)&#039;&#039;&lt;br /&gt;
* language &#039;&#039;(Language Configuration)&#039;&#039;&lt;br /&gt;
* modding &#039;&#039;(Modding Configuration)&#039;&#039;&lt;br /&gt;
* oni &#039;&#039;(Original Oni Options Configuration)&#039;&#039;&lt;br /&gt;
* windows &#039;&#039;(OS Interaction Options)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For names of all entries, and a brief help, see the &amp;quot;All Configuration Settings&amp;quot; section below for more information.&lt;br /&gt;
&lt;br /&gt;
===Command-line arguments===&lt;br /&gt;
[[Customizing#Command-line_arguments|Command line options]] are still present in the beta Daodan although the syntax is a little different (and a bit more powerful.) The basic syntax for a command line option is this:&lt;br /&gt;
 -&amp;lt;ini section&amp;gt;.&amp;lt;name&amp;gt; &amp;lt;value&amp;gt;&lt;br /&gt;
Where &amp;lt;ini section&amp;gt; is the Daodan.ini section (usually &#039;&#039;&#039;Patch&#039;&#039;&#039; or &#039;&#039;&#039;Options&#039;&#039;&#039;,) &amp;lt;name&amp;gt; is the option and &amp;lt;value&amp;gt; is the value to set it to (usually &#039;&#039;&#039;True&#039;&#039;&#039; or &#039;&#039;&#039;False&#039;&#039;&#039;.) Therefore, to disable sound, start Oni with this:&lt;br /&gt;
 oni -options.sound false&lt;br /&gt;
When &amp;lt;ini section&amp;gt; is omitted, it is assumed to be &#039;&#039;&#039;options&#039;&#039;&#039;. When &amp;lt;value&amp;gt; is omitted, it is assumed to be &#039;&#039;&#039;true&#039;&#039;&#039; unless &amp;lt;name&amp;gt; starts with &#039;&#039;&#039;no&#039;&#039;&#039; (eg. &#039;&#039;&#039;nosound&#039;&#039;&#039;) in which case it is assumed to be &#039;&#039;&#039;false&#039;&#039;&#039;. So an easier way to write the above command would be:&lt;br /&gt;
 oni -nosound&lt;br /&gt;
Options or patches specified on the command line take precedence over options specified in Daodan.ini. Currently Oni&#039;s command line parser isn&#039;t powerful enough to parse language elements (no support for quoting arguments); this will be fixed in a later release.&lt;br /&gt;
&lt;br /&gt;
===All Configuration Settings===&lt;br /&gt;
Below are the names of the configuration settings you can turn on and off in Daodan.ini (names and sections are case-insensitive). Also noted is whether the DLL has this patch turned on or off by default.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!INI Section&lt;br /&gt;
!INI Name&lt;br /&gt;
!Default&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|[devmode]&lt;br /&gt;
|highres_console&lt;br /&gt;
|true&lt;br /&gt;
|Fixes bug where console line becomes invisible at higher resolutions.&lt;br /&gt;
|-&lt;br /&gt;
|[devmode]&lt;br /&gt;
|showtriggervolumes&lt;br /&gt;
|true&lt;br /&gt;
|Allows BSL variable &amp;quot;show_triggervolumes&amp;quot; and Ctrl+Shift+X (in devmode) to work.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|bindablecheats&lt;br /&gt;
|true&lt;br /&gt;
|Enables cheats to be bound to keys using key_config.txt. Requires &amp;quot;customactions&amp;quot; and &amp;quot;cheattable&amp;quot; to be on.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|characterawareness&lt;br /&gt;
|true&lt;br /&gt;
|Prevents AIs from forgetting about you when they are pursuing you and lose sight of you.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|cheatsenabled&lt;br /&gt;
|true&lt;br /&gt;
|Enables cheats without having to beat the game first. Required for using &#039;tellmetheversion&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|cheattable&lt;br /&gt;
|true&lt;br /&gt;
|Replaces Oni&#039;s cheat table with table that includes new cheats (see section below). Required for using &#039;tellmetheversion&#039;.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|cooldowntimer&lt;br /&gt;
|true&lt;br /&gt;
|Disables weapon cooldown exploit, e.g. dropping the Mercury Bow and picking it back up right away to reset weapon cooldown.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|customactions&lt;br /&gt;
|true&lt;br /&gt;
|Allows new bindable actions to be registered with the DLL, such as bindable cheats (if &amp;quot;bindablecheats&amp;quot; is on).&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|kickguns&lt;br /&gt;
|false&lt;br /&gt;
|EXPERIMENTAL! Unfinished, do not use.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|pathfinding&lt;br /&gt;
|true&lt;br /&gt;
|Multiplies size of pathfinding grid cache by eight in order to prevent crashes in large levels.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|projaware&lt;br /&gt;
|true&lt;br /&gt;
|Allows AI to dodge incoming gunfire properly.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|throwtest	&lt;br /&gt;
|false&lt;br /&gt;
|EXPERIMENTAL! Enables experimentation with allowing enemies to be thrown over railings.&lt;br /&gt;
|-&lt;br /&gt;
|[gameplay]&lt;br /&gt;
|wpfadetime&lt;br /&gt;
|true&lt;br /&gt;
|Adds working function for existing BSL command wp_fadetime, sets fade time to 4800.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|binkplay&lt;br /&gt;
|true&lt;br /&gt;
|Fixes binkplay calls to use GDI and outro same mode as intro.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|daodangl&lt;br /&gt;
|true&lt;br /&gt;
|Provides an improved windowed mode (-noswitch); this patch is known to break the hiding of the Windows taskbar in fullscreen mode.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|displayenum&lt;br /&gt;
|true&lt;br /&gt;
|Offers a more accurate list of available display modes in the Options menu.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|gamma&lt;br /&gt;
|true&lt;br /&gt;
|Enables gamma slider in fullscreen, disables it in windowed mode.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|newweap&lt;br /&gt;
|true&lt;br /&gt;
|Enables weapon info, so that standing above a weapon displays a message containing the weapon name and amount of ammo.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|optionsvisible&lt;br /&gt;
|true&lt;br /&gt;
|Enables always showing the options button in main menu, even when pausing from a game.&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|showalllasersights&lt;br /&gt;
|false&lt;br /&gt;
|Enables visibility of all (also enemies&#039;) weapon lasersights&lt;br /&gt;
|-&lt;br /&gt;
|[graphics]&lt;br /&gt;
|widescreenportraits&lt;br /&gt;
|true&lt;br /&gt;
|Prevents fly-in portraits from being stretched when playing in widescreen resolutions.&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|chinese&lt;br /&gt;
|true&lt;br /&gt;
|Allows Chinese fonts to be shown if the required DLL is available.&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|fonttexturecache&lt;br /&gt;
|true&lt;br /&gt;
|Doubles size of font texture cache.&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|language&lt;br /&gt;
|en&lt;br /&gt;
|Sets localization for hardcoded strings (e.g. &amp;quot;Savepoints&amp;quot;).&lt;br /&gt;
|-&lt;br /&gt;
|[language]&lt;br /&gt;
|nomultibyte&lt;br /&gt;
|true&lt;br /&gt;
|Enables languages which use multibyte coding (such as Chinese).&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|argb8888&lt;br /&gt;
|true&lt;br /&gt;
|Enables the use of textures using ARGB8888.&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|d_regen&lt;br /&gt;
|true&lt;br /&gt;
|Enables script command d_regen (query/set regeneration for any character).&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|daodanbsl&lt;br /&gt;
|true&lt;br /&gt;
|Adds new BSL commands (see below).&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|hdscreens_lowres&lt;br /&gt;
|true&lt;br /&gt;
|Allows HD intro/ending screens on game resolutions smaller than 1024x768.&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|largetextures&lt;br /&gt;
|true&lt;br /&gt;
|Enables the use of textures up to 512x512.&lt;br /&gt;
|-&lt;br /&gt;
|[modding]&lt;br /&gt;
|levelplugins&lt;br /&gt;
|true&lt;br /&gt;
|Allows level files that do not end in &amp;quot;_Final&amp;quot; to be loaded from the GDF.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|debug&lt;br /&gt;
|false&lt;br /&gt;
|Not useful; probably does nothing.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|debugfiles&lt;br /&gt;
|false&lt;br /&gt;
|Enables function logging; when active, BSL function calls are logged to script_debug.txt.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|findsounds&lt;br /&gt;
|false&lt;br /&gt;
|Not useful, extends output of sound_list_broken_links.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|ignore_private_data&lt;br /&gt;
|false&lt;br /&gt;
|Disables the loading of &#039;private data&#039; in level0. Probably has no effect.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|sound&lt;br /&gt;
|true&lt;br /&gt;
|Enables sound.&lt;br /&gt;
|-&lt;br /&gt;
|[oni]&lt;br /&gt;
|switch&lt;br /&gt;
|true&lt;br /&gt;
|Enables always switching screen to resolution on Oni&#039;s Options screen, making the game fullscreen; opposite of Oni&#039;s built-in argument &amp;quot;noswitch&amp;quot;.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|alttab&lt;br /&gt;
|true&lt;br /&gt;
|Allows user to switch applications while in Oni (Alt-Tab) and use the Windows key; however, it may enable the screensaver as well.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|border&lt;br /&gt;
|true&lt;br /&gt;
|Adds a border in windowed mode if &#039;[graphics] daodangl&#039; is active.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|clipcursor&lt;br /&gt;
|true&lt;br /&gt;
|Limits cursor to Oni&#039;s window.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|daodaninput&lt;br /&gt;
|true&lt;br /&gt;
|A new input system which reports input on every frame, which should fix issues with mouse lag/judder and high-FPS displays.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|directinput&lt;br /&gt;
|true&lt;br /&gt;
|Forces on DirectInput when Daodan Input is disabled.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|mousesensitivity&lt;br /&gt;
|1.0&lt;br /&gt;
|Multiplier for mouse movement values when Daodan Input is enabled. 1.0 is Oni&#039;s default.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|disablecmdline&lt;br /&gt;
|true&lt;br /&gt;
|Disables Oni&#039;s existing command line parser as Daodan has its own.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|killvtune&lt;br /&gt;
|false&lt;br /&gt;
|Prevents loading of vtuneapi.dll.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|safeprintf&lt;br /&gt;
|true&lt;br /&gt;
|Replaces Oni&#039;s function that prints to startup.txt with a safer one.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|topmost&lt;br /&gt;
|false&lt;br /&gt;
|Keeps game window on top in windowed mode, even when switching applications.&lt;br /&gt;
|-&lt;br /&gt;
|[windows]&lt;br /&gt;
|usegettickcount&lt;br /&gt;
|true&lt;br /&gt;
|Replaces Oni&#039;s timing functions with more accurate ones.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Added cheat codes===&lt;br /&gt;
*&#039;&#039;&#039;bigbadboss&#039;&#039;&#039;&lt;br /&gt;
:Player takes less weapon damage.&lt;br /&gt;
*&#039;&#039;&#039;buddha&#039;&#039;&#039;&lt;br /&gt;
:Player is unkillable (will not go below 1HP).&lt;br /&gt;
*&#039;&#039;&#039;bulletproof&#039;&#039;&#039;&lt;br /&gt;
:Player takes no weapon damage.&lt;br /&gt;
*&#039;&#039;&#039;kangaroo&#039;&#039;&#039;&lt;br /&gt;
:Player can make super-high jumps.&lt;br /&gt;
*&#039;&#039;&#039;marypoppins&#039;&#039;&#039;&lt;br /&gt;
:Player can fly by holding down jump key.&lt;br /&gt;
*&#039;&#039;&#039;shinobi&#039;&#039;&#039;&lt;br /&gt;
:Extra difficulty mode; player always has 1HP, but also is immune to weapons, and the enemy AI cannot hear the player.&lt;br /&gt;
&lt;br /&gt;
===Added BSL functions===&lt;br /&gt;
Any time a function can both get and set a value, and you set the value, the old value should be returned, barring any programming oversight by Gumby.&lt;br /&gt;
&lt;br /&gt;
====Math====&lt;br /&gt;
* int &#039;&#039;&#039;int32mul&#039;&#039;&#039; n1:int n2:int&lt;br /&gt;
:Multiplies two integers&lt;br /&gt;
* float &#039;&#039;&#039;mul&#039;&#039;&#039; [int1:int|float1:float] [int2:int|float2:float]&lt;br /&gt;
:Multiplies two numbers&lt;br /&gt;
* int &#039;&#039;&#039;int32div&#039;&#039;&#039; n1:int n2:int&lt;br /&gt;
:Divides two integers&lt;br /&gt;
* float &#039;&#039;&#039;div&#039;&#039;&#039; [int1:int|float1:float] [int2:int|float2:float]&lt;br /&gt;
:Divides two two numbers&lt;br /&gt;
* int &#039;&#039;&#039;int32rand&#039;&#039;&#039; start:int end:int&lt;br /&gt;
:Returns a pseudo-random number between two numbers (inclusive).&lt;br /&gt;
&lt;br /&gt;
====Characters====&lt;br /&gt;
* int &#039;&#039;&#039;d_getkills&#039;&#039;&#039; [ai_name:str | script_id:int]&lt;br /&gt;
:Gets the number of kills a character has&lt;br /&gt;
* int &#039;&#039;&#039;d_getdamage&#039;&#039;&#039; [ai_name:str | script_id:int]&lt;br /&gt;
:Gets the amount of damage a character has caused&lt;br /&gt;
* string &#039;&#039;&#039;d_name&#039;&#039;&#039; [ai_name:str | script_id:int] [newname:string]&lt;br /&gt;
:Gets or sets a character&#039;s name&lt;br /&gt;
* string &#039;&#039;&#039;d_regen&#039;&#039;&#039; [ai_name:str | script_id:int] on_off:bool&lt;br /&gt;
:Gets or sets a character&#039;s regeneration (like elderrune for the player)&lt;br /&gt;
* int &#039;&#039;&#039;d_getindex&#039;&#039;&#039; [ai_name:str]&lt;br /&gt;
:Gets a character&#039;s script_id from their name&lt;br /&gt;
* int &#039;&#039;&#039;d_powerup&#039;&#039;&#039; ai_name:str|script_id:int powerup:str [newcount:int]&lt;br /&gt;
:Gets or sets the amount of powerups a character has&lt;br /&gt;
:Powerup list the same as with &#039;&#039;&#039;chr_givepowerup&#039;&#039;&#039; with the addition of &amp;quot;bossshield&amp;quot;&lt;br /&gt;
* int &#039;&#039;&#039;d_health&#039;&#039;&#039; [ai_name:str | script_id:int] [newhealth:int]&lt;br /&gt;
:Gets or sets a character&#039;s health&lt;br /&gt;
* int &#039;&#039;&#039;d_maxhealth&#039;&#039;&#039; [ai_name:str | script_id:int] [newmaxhealth:int]&lt;br /&gt;
:Gets or sets a character&#039;s maxhealth&lt;br /&gt;
* int &#039;&#039;&#039;d_holdkey&#039;&#039;&#039; [ai_name:string | script_id:int] keys frames:int&lt;br /&gt;
:Makes a character hold a key&lt;br /&gt;
:Possibly broken&lt;br /&gt;
* int &#039;&#039;&#039;d_isheld&#039;&#039;&#039; keys&lt;br /&gt;
:Checks if player is holding a key&lt;br /&gt;
:Possibly broken&lt;br /&gt;
* int &#039;&#039;&#039;d_waitforkey&#039;&#039;&#039; keys&lt;br /&gt;
:Waits for a keypress from the player&lt;br /&gt;
* int &#039;&#039;&#039;d_powerup&#039;&#039;&#039; [ai_name:string | script_id:int] powerup:string&lt;br /&gt;
:Gets or sets a character&#039;s powerups&lt;br /&gt;
* float &#039;&#039;&#039;d_location&#039;&#039;&#039; [ai_name:string | script_id:int] xyz:string&lt;br /&gt;
:Gets the XYZ coordinate of a character&lt;br /&gt;
* float &#039;&#039;&#039;d_location&#039;&#039;&#039; [ai_name:string | script_id:int] x:float y:float z:float&lt;br /&gt;
:Sets the XYZ coordinates of a character&lt;br /&gt;
* float &#039;&#039;&#039;d_distance&#039;&#039;&#039; [ai_name:string | script_id:int] [ai_name:string | script_id:int]&lt;br /&gt;
:Gets the distance between two characters&lt;br /&gt;
* int &#039;&#039;&#039;d_regen&#039;&#039;&#039; [ai_name:string | script_id:int] yesno:int&lt;br /&gt;
:Gets or sets a character&#039;s regeneration abilities&lt;br /&gt;
&lt;br /&gt;
====Text====&lt;br /&gt;
* void &#039;&#039;&#039;d_dprint&#039;&#039;&#039; text:string [textcolor: r b g] [shadowcolor: r b g]&lt;br /&gt;
:Prints to console in color&lt;br /&gt;
:Colors are ints between 0 and 255. Other numbers will be reduced to 255.&lt;br /&gt;
:Any colors you do not supply will be replaced with the default values: 255, 255, 255 and 63, 63. 63&lt;br /&gt;
&lt;br /&gt;
* string &#039;&#039;&#039;sprintf&#039;&#039;&#039; str1:format ...&lt;br /&gt;
:Does a C-style sprintf operation on a string&lt;br /&gt;
&lt;br /&gt;
==FASM-Daodan (old)==&lt;br /&gt;
&#039;&#039;&#039;Note: Unsupported by community.&#039;&#039;&#039; There is also a much older release of Daodan, referred to as FASM-Daodan. This is the original version by SFeLi. Unlike the C-Daodan, FASM-Daodan requires a different DLL to be downloaded depending on which Oni.exe is used. It does not support the newer Daodan features such as windowed mode, however it still contains the basic patches such as the Windows XP fix and the custom cheats.&lt;br /&gt;
&lt;br /&gt;
[http://sfeli.oni2.net/daodan/basic-0.6.6.zip Download a ZIP containing the DLLs for each version.]&lt;br /&gt;
&lt;br /&gt;
[http://sfeli.oni2.net/daodan/daodan-nightly.zip Download a ZIP containing the DLLs for an experimental (unstable) FASM-Daodan] This includes the projectile awareness patch and support for any language (except Chinese and Japanese).&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Daodan_DLL/Change_log&amp;diff=34221</id>
		<title>Daodan DLL/Change log</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Daodan_DLL/Change_log&amp;diff=34221"/>
		<updated>2021-10-24T03:53:04Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==3.4==&lt;br /&gt;
&#039;&#039;&#039;released 2013.07.26&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
*Prevented invalid resolution choices from showing on Options screen.&lt;br /&gt;
*Fixed showing laser sights outside of Flatline sessions.&lt;br /&gt;
*Version number and current time/date now printed to startup.txt.&lt;br /&gt;
&lt;br /&gt;
==3.5==&lt;br /&gt;
&#039;&#039;&#039;released 2013.08.11&#039;&#039;&#039;&lt;br /&gt;
*TXMBs larger than Oni&#039;s current resolution no longer appear all-black.&lt;br /&gt;
&lt;br /&gt;
==3.6==&lt;br /&gt;
&#039;&#039;&#039;released 2014.03.16&#039;&#039;&#039;&lt;br /&gt;
*Restored BSL command &amp;quot;show_triggervolumes&amp;quot;, also toggled by Ctrl-Shift-X.&lt;br /&gt;
*Console output no longer hidden at high resolutions.&lt;br /&gt;
&lt;br /&gt;
==3.7==&lt;br /&gt;
&#039;&#039;&#039;released 2014.05.04&#039;&#039;&#039;&lt;br /&gt;
*Daodan now permits Oni to launch without &#039;&#039;realbink.dll&#039;&#039; present.&lt;br /&gt;
*Fixed crash caused by altering non-executable memory with security tools installed.&lt;br /&gt;
*Daodan will write available options to &#039;&#039;daodan_help.txt&#039;&#039; if Oni is launched with the -help argument.&lt;br /&gt;
*Language selection (localization for English Oni.exe so it can replace a foreign language Oni.exe) is now handled by setting the &amp;quot;language&amp;quot; option in daodan.ini (e.g. &amp;quot;language=it&amp;quot;) and providing a corresponding file with the strings for that language (e.g. &#039;&#039;daodan_locales/it.ini&#039;&#039;).&lt;br /&gt;
*Better parsing of &#039;&#039;daodan.ini&#039;&#039;; options have been re-categorized.&lt;br /&gt;
&lt;br /&gt;
==3.8==&lt;br /&gt;
&#039;&#039;&#039;released 2014.07.04&#039;&#039;&#039;&lt;br /&gt;
*Fix for Windows XP compatibility.&lt;br /&gt;
&lt;br /&gt;
==3.9==&lt;br /&gt;
&#039;&#039;&#039;released 2014.08.26&#039;&#039;&#039;&lt;br /&gt;
*Fix for Oni&#039;s AI; all AIs in a group will now remember to keep pursuing you while you are out of sight.&lt;br /&gt;
&lt;br /&gt;
==4.0==&lt;br /&gt;
&#039;&#039;&#039;released 2015.03.23&#039;&#039;&#039;&lt;br /&gt;
*Cheats can now be bound to keys, e.g. &amp;quot;bind m to munitionfrenzy&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==4.1==&lt;br /&gt;
&#039;&#039;&#039;released 2021.10.24&#039;&#039;&#039;&lt;br /&gt;
*New local input system based on Raw Input, which should fix mouse lag and judder.&lt;br /&gt;
*Minimum supported Windows version is now Windows XP SP2.&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Daodan_DLL/Change_log&amp;diff=34220</id>
		<title>Daodan DLL/Change log</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Daodan_DLL/Change_log&amp;diff=34220"/>
		<updated>2021-10-24T03:52:51Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
==3.4==&lt;br /&gt;
&#039;&#039;&#039;released 2013.07.26&#039;&#039;&#039;&amp;lt;br /&amp;gt;&lt;br /&gt;
*Prevented invalid resolution choices from showing on Options screen.&lt;br /&gt;
*Fixed showing laser sights outside of Flatline sessions.&lt;br /&gt;
*Version number and current time/date now printed to startup.txt.&lt;br /&gt;
&lt;br /&gt;
==3.5==&lt;br /&gt;
&#039;&#039;&#039;released 2013.08.11&#039;&#039;&#039;&lt;br /&gt;
*TXMBs larger than Oni&#039;s current resolution no longer appear all-black.&lt;br /&gt;
&lt;br /&gt;
==3.6==&lt;br /&gt;
&#039;&#039;&#039;released 2014.03.16&#039;&#039;&#039;&lt;br /&gt;
*Restored BSL command &amp;quot;show_triggervolumes&amp;quot;, also toggled by Ctrl-Shift-X.&lt;br /&gt;
*Console output no longer hidden at high resolutions.&lt;br /&gt;
&lt;br /&gt;
==3.7==&lt;br /&gt;
&#039;&#039;&#039;released 2014.05.04&#039;&#039;&#039;&lt;br /&gt;
*Daodan now permits Oni to launch without &#039;&#039;realbink.dll&#039;&#039; present.&lt;br /&gt;
*Fixed crash caused by altering non-executable memory with security tools installed.&lt;br /&gt;
*Daodan will write available options to &#039;&#039;daodan_help.txt&#039;&#039; if Oni is launched with the -help argument.&lt;br /&gt;
*Language selection (localization for English Oni.exe so it can replace a foreign language Oni.exe) is now handled by setting the &amp;quot;language&amp;quot; option in daodan.ini (e.g. &amp;quot;language=it&amp;quot;) and providing a corresponding file with the strings for that language (e.g. &#039;&#039;daodan_locales/it.ini&#039;&#039;).&lt;br /&gt;
*Better parsing of &#039;&#039;daodan.ini&#039;&#039;; options have been re-categorized.&lt;br /&gt;
&lt;br /&gt;
==3.8==&lt;br /&gt;
&#039;&#039;&#039;released 2014.07.04&#039;&#039;&#039;&lt;br /&gt;
*Fix for Windows XP compatibility.&lt;br /&gt;
&lt;br /&gt;
==3.9==&lt;br /&gt;
&#039;&#039;&#039;released 2014.08.26&#039;&#039;&#039;&lt;br /&gt;
*Fix for Oni&#039;s AI; all AIs in a group will now remember to keep pursuing you while you are out of sight.&lt;br /&gt;
&lt;br /&gt;
==4.0==&lt;br /&gt;
&#039;&#039;&#039;released 2015.03.23&#039;&#039;&#039;&lt;br /&gt;
*Cheats can now be bound to keys, e.g. &amp;quot;bind m to munitionfrenzy&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
==4.1==&lt;br /&gt;
&#039;&#039;&#039;released 2021.10.24&#039;&#039;&#039;&lt;br /&gt;
*New local input system based on Raw Input, which should fix mouse lag and judder&lt;br /&gt;
*Minimum supported Windows version is now Windows XP SP2&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Customizing&amp;diff=15865</id>
		<title>Customizing</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Customizing&amp;diff=15865"/>
		<updated>2009-10-17T12:03:46Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: /* Command-line arguments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Options menu==&lt;br /&gt;
&lt;br /&gt;
===Where is it?===&lt;br /&gt;
*It&#039;s accessible &#039;&#039;via&#039;&#039; the third button of the Main Menu&lt;br /&gt;
*After you load a game, this button is replaced with &#039;&#039;&#039;Resume&#039;&#039;&#039;. So, &#039;&#039;&#039;Options&#039;&#039;&#039; is only accessible at startup&amp;lt;br&amp;gt;(which is really silly : &#039;&#039;&#039;Resume&#039;&#039;&#039; is then redundant of the &#039;&#039;&#039;Escape&#039;&#039;&#039; key, and the ability to change settings at runtime is lost.)&lt;br /&gt;
&lt;br /&gt;
===What settings are there?===&lt;br /&gt;
*Amount of graphical detail (env-mapping, texture rendering, etc)&lt;br /&gt;
*Resolution and color depth : from &amp;quot;640 x 480 x 16 bit&amp;quot; to &amp;quot;1600 x 1200 x 32 bit&amp;quot;&lt;br /&gt;
*Gamma correction&lt;br /&gt;
*Overall volume (sound FX and music can&#039;t be adjusted separately)&lt;br /&gt;
*Subtitles&lt;br /&gt;
*[[Difficulty|Difficulty setting]]&lt;br /&gt;
*Inversion of the vertical mouse axis (seems to be messed up : if the box is checked, moving the mouse up makes you look up, so you get &#039;&#039;non&#039;&#039;-inverted aiming)&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
Here&#039;s how controls can be changed&lt;br /&gt;
*Edit the &#039;&#039;&#039;key_config.txt&#039;&#039;&#039; file manually&lt;br /&gt;
*Use the built-in GUI (press and hold Shift while Oni starts -- currently broken for both Mac OS X and Windows)&lt;br /&gt;
*Use the [[KeyConfig]] GUI tool&lt;br /&gt;
*Set custom keybindings at runtime using [[BSL:Scripts|scripts]]&lt;br /&gt;
[[Customizing/Binding | Binding syntax and instructions]].&lt;br /&gt;
&lt;br /&gt;
==Further customization==&lt;br /&gt;
&lt;br /&gt;
===CD check===&lt;br /&gt;
One of the first things you may want to do after installation is apply a No-CD patch...&lt;br /&gt;
&lt;br /&gt;
My personal source was [http://m0002.gamecopyworld.com/games/pc_oni.shtml GameCopyWorld] : you&#039;ll find a patched US version of Oni.exe and instructions for creating backup CDs. [[User:Geyser|geyser]]&lt;br /&gt;
&lt;br /&gt;
Feel free to add links to other patched executables or standalone patches here.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
*[[OniTrainer]] - lets you set a few runtime variables (with bindable hotkeys)&lt;br /&gt;
*[[OSGE|OniSavegameEditor]] - lets you alter saved game data (inventory, cheats)&lt;br /&gt;
*[[KeyConfig]] - lets you configure the controls through a neat GUI&lt;br /&gt;
*[[OniCheatEnabler]] - lets you use cheats in the off time that the No-CD patch disables cheats&lt;br /&gt;
&lt;br /&gt;
===Hacking===&lt;br /&gt;
You can e.g. unlock all of Konoko&#039;s combat moves from the very first level. &lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
Well, just look at the [[BSL:Scripts|Scripts]] page to find out more about those.&lt;br /&gt;
&lt;br /&gt;
===Command-line arguments===&lt;br /&gt;
You can run Oni from your system&#039;s command prompt rather than clicking on the automatically generated shortcut.&lt;br /&gt;
This enables you to use a number of options that are otherwise unavailable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(In Oni for Mac OS 9, users could access these options &#039;&#039;via&#039;&#039; a special dialog that popped up if you pressed SHIFT during Oni&#039;s startup, but the OS X build does not seem to have this feature.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Only the ones in bold seem to have an effect so far&lt;br /&gt;
*-combos : unused&lt;br /&gt;
*-debug&lt;br /&gt;
*&#039;&#039;&#039;-debugfiles&#039;&#039;&#039; : Additional debug files are dumped, e.g. low-level script debugging.&lt;br /&gt;
*-ehalt : unused&lt;br /&gt;
*-findsoundbinaries : unused&lt;br /&gt;
*-findsounds&lt;br /&gt;
*-glide : unused&lt;br /&gt;
*-ignore_config : unused&lt;br /&gt;
*-ignore_private_data : Disables the loading of &amp;quot;private data&amp;quot; in level0.&lt;br /&gt;
*-nodialog&lt;br /&gt;
*&#039;&#039;&#039;-nosound&#039;&#039;&#039; : Sounds and music are disabled. The &amp;quot;Overall volume&amp;quot; control in [[Customizing#Options menu|Options]] has no effect.&lt;br /&gt;
*&#039;&#039;&#039;-noswitch&#039;&#039;&#039; : Oni doesn&#039;t fill up the screen. Instead, it stays in a &amp;quot;window&amp;quot; in the top left corner. The resolution is that specified ingame.&lt;br /&gt;
*-opengl : unused&lt;br /&gt;
You can combine those options on a single command line so that they apply simultaneously.&lt;br /&gt;
&lt;br /&gt;
For example, here&#039;s a batch file I&#039;ve been using lately (Win32/DOS script called, say, &#039;&#039;&#039;oni.bat&#039;&#039;&#039;, and located in Oni&#039;s [[Installation#Installation folder|installation folder]]):&lt;br /&gt;
 rm saved_film*.dat&lt;br /&gt;
 start OniTrainer\oni_trainer.exe&lt;br /&gt;
 start oni -noswitch -debugfiles&lt;br /&gt;
What does it do? It cleans up the saved movie files (if any).&lt;br /&gt;
Then it starts Alloc&#039;s OniTrainer and Oni. Oni runs in a window.&lt;br /&gt;
&lt;br /&gt;
The output generated by &#039;&#039;&#039;-debugfiles&#039;&#039;&#039; sometimes helps when debugging scripts (though not very often, not to say never).&lt;br /&gt;
====noswitch====&lt;br /&gt;
&#039;&#039;&#039;-noswitch&#039;&#039;&#039; is probably the most useful of the command-line arguments. If run in a low resolution like 640x480, Oni will take only a little portion of your screen, leaving the taskbar accessible, as well as other applications you may be running alongside Oni (useful for scripting, hex hacking, etc).&lt;br /&gt;
&lt;br /&gt;
The parameter is easy to pass to the Windows executable from the command line (see script above); with the OS X port (a Cocoa application), you have to pass the parameters to the actual binary, which is confusing for some users. Use the Terminal to navigate to the Oni folder, so you are at the same level as the game application, then type &amp;quot;Oni.app/Contents/MacOS/Oni -noswitch&amp;quot;.&lt;br /&gt;
[[Category:Oni Support]]&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Customizing&amp;diff=15864</id>
		<title>Customizing</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Customizing&amp;diff=15864"/>
		<updated>2009-10-17T12:00:09Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: /* Command-line arguments */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Options menu==&lt;br /&gt;
&lt;br /&gt;
===Where is it?===&lt;br /&gt;
*It&#039;s accessible &#039;&#039;via&#039;&#039; the third button of the Main Menu&lt;br /&gt;
*After you load a game, this button is replaced with &#039;&#039;&#039;Resume&#039;&#039;&#039;. So, &#039;&#039;&#039;Options&#039;&#039;&#039; is only accessible at startup&amp;lt;br&amp;gt;(which is really silly : &#039;&#039;&#039;Resume&#039;&#039;&#039; is then redundant of the &#039;&#039;&#039;Escape&#039;&#039;&#039; key, and the ability to change settings at runtime is lost.)&lt;br /&gt;
&lt;br /&gt;
===What settings are there?===&lt;br /&gt;
*Amount of graphical detail (env-mapping, texture rendering, etc)&lt;br /&gt;
*Resolution and color depth : from &amp;quot;640 x 480 x 16 bit&amp;quot; to &amp;quot;1600 x 1200 x 32 bit&amp;quot;&lt;br /&gt;
*Gamma correction&lt;br /&gt;
*Overall volume (sound FX and music can&#039;t be adjusted separately)&lt;br /&gt;
*Subtitles&lt;br /&gt;
*[[Difficulty|Difficulty setting]]&lt;br /&gt;
*Inversion of the vertical mouse axis (seems to be messed up : if the box is checked, moving the mouse up makes you look up, so you get &#039;&#039;non&#039;&#039;-inverted aiming)&lt;br /&gt;
&lt;br /&gt;
==Controls==&lt;br /&gt;
Here&#039;s how controls can be changed&lt;br /&gt;
*Edit the &#039;&#039;&#039;key_config.txt&#039;&#039;&#039; file manually&lt;br /&gt;
*Use the built-in GUI (press and hold Shift while Oni starts -- currently broken for both Mac OS X and Windows)&lt;br /&gt;
*Use the [[KeyConfig]] GUI tool&lt;br /&gt;
*Set custom keybindings at runtime using [[BSL:Scripts|scripts]]&lt;br /&gt;
[[Customizing/Binding | Binding syntax and instructions]].&lt;br /&gt;
&lt;br /&gt;
==Further customization==&lt;br /&gt;
&lt;br /&gt;
===CD check===&lt;br /&gt;
One of the first things you may want to do after installation is apply a No-CD patch...&lt;br /&gt;
&lt;br /&gt;
My personal source was [http://m0002.gamecopyworld.com/games/pc_oni.shtml GameCopyWorld] : you&#039;ll find a patched US version of Oni.exe and instructions for creating backup CDs. [[User:Geyser|geyser]]&lt;br /&gt;
&lt;br /&gt;
Feel free to add links to other patched executables or standalone patches here.&lt;br /&gt;
&lt;br /&gt;
===Tools===&lt;br /&gt;
*[[OniTrainer]] - lets you set a few runtime variables (with bindable hotkeys)&lt;br /&gt;
*[[OSGE|OniSavegameEditor]] - lets you alter saved game data (inventory, cheats)&lt;br /&gt;
*[[KeyConfig]] - lets you configure the controls through a neat GUI&lt;br /&gt;
*[[OniCheatEnabler]] - lets you use cheats in the off time that the No-CD patch disables cheats&lt;br /&gt;
&lt;br /&gt;
===Hacking===&lt;br /&gt;
You can e.g. unlock all of Konoko&#039;s combat moves from the very first level. &lt;br /&gt;
&lt;br /&gt;
===Scripting===&lt;br /&gt;
Well, just look at the [[BSL:Scripts|Scripts]] page to find out more about those.&lt;br /&gt;
&lt;br /&gt;
===Command-line arguments===&lt;br /&gt;
You can run Oni from your system&#039;s command prompt rather than clicking on the automatically generated shortcut.&lt;br /&gt;
This enables you to use a number of options that are otherwise unavailable.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;(In Oni for Mac OS 9, users could access these options &#039;&#039;via&#039;&#039; a special dialog that popped up if you pressed SHIFT during Oni&#039;s startup, but the OS X build does not seem to have this feature.)&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Only the ones in bold seem to have an effect so far&lt;br /&gt;
*-combos : unused&lt;br /&gt;
*-debug&lt;br /&gt;
*&#039;&#039;&#039;-debugfiles&#039;&#039;&#039; : Additional debug files are dumped, e.g. low-level script debugging.&lt;br /&gt;
*-ehalt : unused&lt;br /&gt;
*-findsoundbinaries : unused&lt;br /&gt;
*-findsounds&lt;br /&gt;
*-glide : unused&lt;br /&gt;
*-ignore_config : unused&lt;br /&gt;
*-ignore_private_data : Disables the loading of &amp;quot;private data&amp;quot; in level0.&lt;br /&gt;
*-nodialog&lt;br /&gt;
*&#039;&#039;&#039;-nosound&#039;&#039;&#039; : Sounds and music are disabled. The &amp;quot;Overall volume&amp;quot; control in [[Customizing#Options menu|Options]] has no effect.&lt;br /&gt;
*&#039;&#039;&#039;-noswitch&#039;&#039;&#039; : Oni doesn&#039;t fill up the screen. Instead, it stays in a &amp;quot;window&amp;quot; in the top left corner. The resolution is that specified ingame.&lt;br /&gt;
*-opengl&lt;br /&gt;
You can combine those options on a single command line so that they apply simultaneously.&lt;br /&gt;
&lt;br /&gt;
For example, here&#039;s a batch file I&#039;ve been using lately (Win32/DOS script called, say, &#039;&#039;&#039;oni.bat&#039;&#039;&#039;, and located in Oni&#039;s [[Installation#Installation folder|installation folder]]):&lt;br /&gt;
 rm saved_film*.dat&lt;br /&gt;
 start OniTrainer\oni_trainer.exe&lt;br /&gt;
 start oni -noswitch -debugfiles&lt;br /&gt;
What does it do? It cleans up the saved movie files (if any).&lt;br /&gt;
Then it starts Alloc&#039;s OniTrainer and Oni. Oni runs in a window.&lt;br /&gt;
&lt;br /&gt;
The output generated by &#039;&#039;&#039;-debugfiles&#039;&#039;&#039; sometimes helps when debugging scripts (though not very often, not to say never).&lt;br /&gt;
====noswitch====&lt;br /&gt;
&#039;&#039;&#039;-noswitch&#039;&#039;&#039; is probably the most useful of the command-line arguments. If run in a low resolution like 640x480, Oni will take only a little portion of your screen, leaving the taskbar accessible, as well as other applications you may be running alongside Oni (useful for scripting, hex hacking, etc).&lt;br /&gt;
&lt;br /&gt;
The parameter is easy to pass to the Windows executable from the command line (see script above); with the OS X port (a Cocoa application), you have to pass the parameters to the actual binary, which is confusing for some users. Use the Terminal to navigate to the Oni folder, so you are at the same level as the game application, then type &amp;quot;Oni.app/Contents/MacOS/Oni -noswitch&amp;quot;.&lt;br /&gt;
[[Category:Oni Support]]&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15824</id>
		<title>User:RossyMiles/Flatline</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15824"/>
		<updated>2009-10-06T09:13:03Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatline is the most recent proposed multiplayer mod for Oni. This document is a work in progress.&lt;br /&gt;
&lt;br /&gt;
== Protocol Information ==&lt;br /&gt;
UDP port 2[[Seven|7777]] and it&#039;s surrounding ports are unallocated and are unlikely to be used by any other application.&lt;br /&gt;
&lt;br /&gt;
== Flatline API ==&lt;br /&gt;
Both the Flatline clients and dedicated servers will run inside Daodan inside an official build of Oni. This is because a copy of Oni is needed to fully simulate the scripting and physics in a game.&lt;br /&gt;
&lt;br /&gt;
Two sets of functions will be provided. The Net* functions will provide a basic, non-blocking UDP sockets library and a basic, single-threaded, blocking UDP server. The FLr* functions will be the rest of the code required.&lt;br /&gt;
&lt;br /&gt;
=== NetPlatform_* ===&lt;br /&gt;
These functions provide all the platform specific functionality required by Net*.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Initalize()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called when the network functionality is required. On Windows, it makes a call to WSAStartup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
void &#039;&#039;&#039;NetPlatform_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
For every call to NetPlatform_Initalize, there has to be a corresponsing call to NetPlatform_Shutdown. On Windows, this function calls WSACleanup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
=== NetUPnP_* ===&lt;br /&gt;
These functions provide basic automatic port forwarding for computers behind a router.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Initalize(&#039;&#039;&#039;char** &#039;&#039;&#039;localip&#039;&#039;&#039;, char** &#039;&#039;&#039;routerip)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initializes the UPnP library. Places the local ip address in localip and places the router&#039;s ip address in routerip.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Closes the UPnP library. Frees the strings pointed to by localip and routerip.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPSocket_* ===&lt;br /&gt;
These functions provide a basic UDP sockets library.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPSocket_Create(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Creates a new, non-blocking, UDP socket and binds it to the port specified. If the specified port is 0, the socket is automatically bound to an unused port.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Close(&#039;&#039;&#039;int &#039;&#039;&#039;socket)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Destroys a UDP socket created with NetUDPSocket_Create.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Send(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr* &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the specified socket. To broadcast a message across a LAN (such as when checking for available games), send it to 255.255.255.255 (IPv4 only).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Recieve(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr_storage* &#039;&#039;&#039;address&#039;&#039;&#039;, char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t* &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Recieves a single packet from the specified socket. Places the received data in &#039;&#039;&#039;data&#039;&#039;&#039;, the length of the data returned in &#039;&#039;&#039;datalen&#039;&#039;&#039;, and the address the packet was received from in &#039;&#039;&#039;address&#039;&#039;&#039;. If there are no packets in the buffer, the function returns false.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPServer_* ===&lt;br /&gt;
These functions provide a basic, single-threaded, blocking UDP server.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPServer_Listen(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port&#039;&#039;&#039;, bool (*&#039;&#039;&#039;packet_callback&#039;&#039;&#039;)&#039;&#039;&#039;(&#039;&#039;&#039;char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen&#039;&#039;&#039;, int &#039;&#039;&#039;from))&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Starts a new UDP server on the specified port which calls &#039;&#039;&#039;packet_callback&#039;&#039;&#039; when a packet is recieved. Does not return until the server has finished running (&#039;&#039;&#039;packet_callback&#039;&#039;&#039; returns false).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPServer_Send(&#039;&#039;&#039;sockaddr* &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the server running on the current thread. This function should only be called from &#039;&#039;&#039;packet_callback&#039;&#039;&#039; or functions called by &#039;&#039;&#039;packet_callback&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=== FLrServer_* ===&lt;br /&gt;
These functions control the Flatline server.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15823</id>
		<title>User:RossyMiles/Flatline</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15823"/>
		<updated>2009-10-06T08:49:12Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: /* NetUDPServer_* */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatline is the most recent proposed multiplayer mod for Oni. This document is a work in progress.&lt;br /&gt;
&lt;br /&gt;
== Flatline API ==&lt;br /&gt;
Both the Flatline clients and dedicated servers will run inside Daodan inside an official build of Oni. This is because a copy of Oni is needed to fully simulate the scripting and physics in a game.&lt;br /&gt;
&lt;br /&gt;
Two sets of functions will be provided. The Net* functions will provide a basic, non-blocking UDP sockets library and a basic, single-threaded, blocking UDP server. The FLr* functions will be the rest of the code required.&lt;br /&gt;
&lt;br /&gt;
=== NetPlatform_* ===&lt;br /&gt;
These functions provide all the platform specific functionality required by Net*.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Initalize()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called when the network functionality is required. On Windows, it makes a call to WSAStartup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
void &#039;&#039;&#039;NetPlatform_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
For every call to NetPlatform_Initalize, there has to be a corresponsing call to NetPlatform_Shutdown. On Windows, this function calls WSACleanup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
=== NetUPnP_* ===&lt;br /&gt;
These functions provide basic automatic port forwarding for computers behind a router.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Initalize(&#039;&#039;&#039;char** &#039;&#039;&#039;localip&#039;&#039;&#039;, char** &#039;&#039;&#039;routerip)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initializes the UPnP library. Places the local ip address in localip and places the router&#039;s ip address in routerip.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Closes the UPnP library. Frees the strings pointed to by localip and routerip.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPSocket_* ===&lt;br /&gt;
These functions provide a basic UDP sockets library.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPSocket_Create(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Creates a new, non-blocking, UDP socket and binds it to the port specified. If the specified port is 0, the socket is automatically bound to an unused port.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Close(&#039;&#039;&#039;int &#039;&#039;&#039;socket)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Destroys a UDP socket created with NetUDPSocket_Create.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Send(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr* &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the specified socket. To broadcast a message across a LAN (such as when checking for available games), send it to 255.255.255.255 (IPv4 only).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Recieve(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr_storage* &#039;&#039;&#039;address&#039;&#039;&#039;, char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t* &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Recieves a single packet from the specified socket. Places the received data in &#039;&#039;&#039;data&#039;&#039;&#039;, the length of the data returned in &#039;&#039;&#039;datalen&#039;&#039;&#039;, and the address the packet was received from in &#039;&#039;&#039;address&#039;&#039;&#039;. If there are no packets in the buffer, the function returns false.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPServer_* ===&lt;br /&gt;
These functions provide a basic, single-threaded, blocking UDP server.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPServer_Listen(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port&#039;&#039;&#039;, bool (*&#039;&#039;&#039;packet_callback&#039;&#039;&#039;)&#039;&#039;&#039;(&#039;&#039;&#039;char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen&#039;&#039;&#039;, int &#039;&#039;&#039;from))&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Starts a new UDP server on the specified port which calls &#039;&#039;&#039;packet_callback&#039;&#039;&#039; when a packet is recieved. Does not return until the server has finished running (&#039;&#039;&#039;packet_callback&#039;&#039;&#039; returns false).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPServer_Send(&#039;&#039;&#039;sockaddr* &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the server running on the current thread. This function should only be called from &#039;&#039;&#039;packet_callback&#039;&#039;&#039; or functions called by &#039;&#039;&#039;packet_callback&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15442</id>
		<title>User:RossyMiles/Flatline</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15442"/>
		<updated>2009-09-27T06:20:46Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatline is the most recent proposed multiplayer mod for Oni. This document is a work in progress.&lt;br /&gt;
&lt;br /&gt;
== Flatline API ==&lt;br /&gt;
Both the Flatline clients and dedicated servers will run inside Daodan inside an official build of Oni. This is because a copy of Oni is needed to fully simulate the scripting and physics in a game.&lt;br /&gt;
&lt;br /&gt;
Two sets of functions will be provided. The Net* functions will provide a basic, non-blocking UDP sockets library and a basic, single-threaded, blocking UDP server. The FLr* functions will be the rest of the code required.&lt;br /&gt;
&lt;br /&gt;
=== NetPlatform_* ===&lt;br /&gt;
These functions provide all the platform specific functionality required by Net*.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Initalize()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called when the network functionality is required. On Windows, it makes a call to WSAStartup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
void &#039;&#039;&#039;NetPlatform_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
For every call to NetPlatform_Initalize, there has to be a corresponsing call to NetPlatform_Shutdown. On Windows, this function calls WSACleanup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
=== NetUPnP_* ===&lt;br /&gt;
These functions provide basic automatic port forwarding for computers behind a router.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Initalize(&#039;&#039;&#039;char** &#039;&#039;&#039;localip&#039;&#039;&#039;, char** &#039;&#039;&#039;routerip)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initializes the UPnP library. Places the local ip address in localip and places the router&#039;s ip address in routerip.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Closes the UPnP library. Frees the strings pointed to by localip and routerip.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPSocket_* ===&lt;br /&gt;
These functions provide a basic UDP sockets library.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPSocket_Create(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Creates a new, non-blocking, UDP socket and binds it to the port specified. If the specified port is 0, the socket is automatically bound to an unused port.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Close(&#039;&#039;&#039;int &#039;&#039;&#039;socket)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Destroys a UDP socket created with NetUDPSocket_Create.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Send(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr* &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the specified socket. To broadcast a message across a LAN (such as when checking for available games), send it to 255.255.255.255 (IPv4 only).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Recieve(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr_storage* &#039;&#039;&#039;address&#039;&#039;&#039;, char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t* &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Recieves a single packet from the specified socket. Places the received data in &#039;&#039;&#039;data&#039;&#039;&#039;, the length of the data returned in &#039;&#039;&#039;datalen&#039;&#039;&#039;, and the address the packet was received from in &#039;&#039;&#039;address&#039;&#039;&#039;. If there are no packets in the buffer, the function returns false.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPServer_* ===&lt;br /&gt;
These functions provide a basic, single-threaded, blocking UDP server.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPServer_Run(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port&#039;&#039;&#039;, bool (*&#039;&#039;&#039;packet_callback&#039;&#039;&#039;)&#039;&#039;&#039;(&#039;&#039;&#039;char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen&#039;&#039;&#039;, int &#039;&#039;&#039;from))&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Starts a new UDP server on the specified port which calls &#039;&#039;&#039;packet_callback&#039;&#039;&#039; when a packet is recieved. Does not return until the server has finished running (&#039;&#039;&#039;packet_callback&#039;&#039;&#039; returns false).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPServer_Send(&#039;&#039;&#039;sockaddr* &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the server running on the current thread. This function should only be called from &#039;&#039;&#039;packet_callback&#039;&#039;&#039; or functions called by &#039;&#039;&#039;packet_callback&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15441</id>
		<title>User:RossyMiles/Flatline</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15441"/>
		<updated>2009-09-27T05:55:57Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: /* Flatline API */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatline is the most recent proposed multiplayer mod for Oni. This document is a work in progress.&lt;br /&gt;
&lt;br /&gt;
== Flatline API ==&lt;br /&gt;
Both the Flatline clients and dedicated servers will run inside Daodan inside an official build of Oni. This is because a copy of Oni is needed to fully simulate the scripting and physics in a game.&lt;br /&gt;
&lt;br /&gt;
Two sets of functions will be provided. The Net* functions will provide a basic, non-blocking UDP sockets library and a basic, single-threaded, blocking UDP server. The FLr* functions will be the rest of the code required.&lt;br /&gt;
&lt;br /&gt;
=== NetPlatform_* ===&lt;br /&gt;
These functions provide all the platform specific functionality required by Net*.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Initalize()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called when the network functionality is required. On Windows, it makes a call to WSAStartup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
void &#039;&#039;&#039;NetPlatform_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
For every call to NetPlatform_Initalize, there has to be a corresponsing call to NetPlatform_Shutdown. On Windows, this function calls WSACleanup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
=== NetUPnP_* ===&lt;br /&gt;
These functions provide basic automatic port forwarding for computers behind a router.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Initalize(&#039;&#039;&#039;char** &#039;&#039;&#039;localip&#039;&#039;&#039;, char** &#039;&#039;&#039;routerip)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initializes the UPnP library. Places the local ip address in localip and places the router&#039;s ip address in routerip.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Closes the UPnP library. Frees the strings pointed to by localip and routerip.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPSocket_* ===&lt;br /&gt;
These functions provide a basic UDP sockets library.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPSocket_Create(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Creates a new, non-blocking, UDP socket and binds it to the port specified. If the specified port is 0, the socket is automatically bound to an unused port.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Close(&#039;&#039;&#039;int &#039;&#039;&#039;socket)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Destroys a UDP socket created with NetUDPSocket_Create.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Send(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr* &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the specified socket. To broadcast a message across a LAN (such as when checking for available games), send it to 255.255.255.255 (IPv4 only).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Recieve(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t* &#039;&#039;&#039;datalen&#039;&#039;&#039;, sockaddr_in*/sockaddr_in6* &#039;&#039;&#039;address)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Recieves a single packet from the specified socket. Places the received data in &#039;&#039;&#039;data&#039;&#039;&#039;, the length of the data returned in &#039;&#039;&#039;datalen&#039;&#039;&#039;, and the address the packet was received from in &#039;&#039;&#039;address&#039;&#039;&#039;. If there are no packets in the buffer, the function returns immediately.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPServer_* ===&lt;br /&gt;
These functions provide a basic, single-threaded, blocking UDP server.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPServer_Run(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port&#039;&#039;&#039;, bool (*&#039;&#039;&#039;packet_callback&#039;&#039;&#039;)&#039;&#039;&#039;(&#039;&#039;&#039;char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen&#039;&#039;&#039;, int &#039;&#039;&#039;from))&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Starts a new UDP server on the specified port which calls &#039;&#039;&#039;packet_callback&#039;&#039;&#039; when a packet is recieved. Does not return until the server has finished running (&#039;&#039;&#039;packet_callback&#039;&#039;&#039; returns false).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPServer_Send(&#039;&#039;&#039;sockaddr* &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the server running on the current thread. This function should only be called from &#039;&#039;&#039;packet_callback&#039;&#039;&#039; or functions called by &#039;&#039;&#039;packet_callback&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15440</id>
		<title>User:RossyMiles/Flatline</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15440"/>
		<updated>2009-09-27T05:53:23Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatline is the most recent proposed multiplayer mod for Oni. This document is a work in progress.&lt;br /&gt;
&lt;br /&gt;
== Flatline API ==&lt;br /&gt;
Both the Flatline clients and dedicated servers will run inside Daodan inside an official build of Oni. This is because a copy of Oni is needed to fully simulate the scripting and physics in a game.&lt;br /&gt;
&lt;br /&gt;
Two sets of functions will be provided. The Net* functions will provide a basic, non-blocking UDP sockets library. The FLr* functions will be the rest of the code required.&lt;br /&gt;
&lt;br /&gt;
=== NetPlatform_* ===&lt;br /&gt;
These functions provide all the platform specific functionality required by Net*.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Initalize()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called when the network functionality is required. On Windows, it makes a call to WSAStartup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
void &#039;&#039;&#039;NetPlatform_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
For every call to NetPlatform_Initalize, there has to be a corresponsing call to NetPlatform_Shutdown. On Windows, this function calls WSACleanup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
=== NetUPnP_* ===&lt;br /&gt;
These functions provide basic automatic port forwarding for computers behind a router.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Initalize(&#039;&#039;&#039;char** &#039;&#039;&#039;localip&#039;&#039;&#039;, char** &#039;&#039;&#039;routerip)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initializes the UPnP library. Places the local ip address in localip and places the router&#039;s ip address in routerip.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Closes the UPnP library. Frees the strings pointed to by localip and routerip.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPSocket_* ===&lt;br /&gt;
These functions provide a basic UDP sockets library.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPSocket_Create(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Creates a new, non-blocking, UDP socket and binds it to the port specified. If the specified port is 0, the socket is automatically bound to an unused port.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Close(&#039;&#039;&#039;int &#039;&#039;&#039;socket)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Destroys a UDP socket created with NetUDPSocket_Create.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Send(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr* &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the specified socket. To broadcast a message across a LAN (such as when checking for available games), send it to 255.255.255.255 (IPv4 only).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Recieve(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t* &#039;&#039;&#039;datalen&#039;&#039;&#039;, sockaddr_in*/sockaddr_in6* &#039;&#039;&#039;address)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Recieves a single packet from the specified socket. Places the received data in &#039;&#039;&#039;data&#039;&#039;&#039;, the length of the data returned in &#039;&#039;&#039;datalen&#039;&#039;&#039;, and the address the packet was received from in &#039;&#039;&#039;address&#039;&#039;&#039;. If there are no packets in the buffer, the function returns immediately.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPServer_* ===&lt;br /&gt;
These functions provide a basic, single-threaded, blocking UDP server.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPServer_Run(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port&#039;&#039;&#039;, bool (*&#039;&#039;&#039;packet_callback&#039;&#039;&#039;)&#039;&#039;&#039;(&#039;&#039;&#039;char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen&#039;&#039;&#039;, int &#039;&#039;&#039;from))&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Starts a new UDP server on the specified port which calls &#039;&#039;&#039;packet_callback&#039;&#039;&#039; when a packet is recieved. Does not return until the server has finished running (&#039;&#039;&#039;packet_callback&#039;&#039;&#039; returns false).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPServer_Send(&#039;&#039;&#039;sockaddr* &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the server running on the current thread. This function should only be called from &#039;&#039;&#039;packet_callback&#039;&#039;&#039; or functions called by &#039;&#039;&#039;packet_callback&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15206</id>
		<title>User:RossyMiles/Flatline</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15206"/>
		<updated>2009-08-14T11:02:06Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatline is the most recent proposed multiplayer mod for Oni. This document is a work in progress.&lt;br /&gt;
&lt;br /&gt;
== Flatline API ==&lt;br /&gt;
Both the Flatline clients and dedicated servers will run inside Daodan inside an official build of Oni. This is because a copy of Oni is needed to fully simulate the scripting and physics in a game.&lt;br /&gt;
&lt;br /&gt;
Two sets of functions will be provided. The Net* functions will provide a basic, non-blocking UDP sockets library. The FLr* functions will be the rest of the code required.&lt;br /&gt;
&lt;br /&gt;
=== NetPlatform_* ===&lt;br /&gt;
These functions provide all the platform specific functionality required by Net*.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Initalize()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called when the network functionality is required. On Windows, it makes a call to WSAStartup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
void &#039;&#039;&#039;NetPlatform_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
For every call to NetPlatform_Initalize, there has to be a corresponsing call to NetPlatform_Shutdown. On Windows, this function calls WSACleanup. On other platforms it is not needed as sockets are initialized by default for every process.&lt;br /&gt;
&lt;br /&gt;
=== NetUPnP_* ===&lt;br /&gt;
These functions provide basic automatic port forwarding for computers behind a router.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Initalize(&#039;&#039;&#039;char** &#039;&#039;&#039;localip&#039;&#039;&#039;, char** &#039;&#039;&#039;routerip)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Initializes the UPnP library. Places the local ip address in localip and places the router&#039;s ip address in routerip.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Shutdown()&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Closes the UPnP library. Frees the strings pointed to by localip and routerip.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPSocket_* ===&lt;br /&gt;
These functions provide a basic UDP sockets library.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPSocket_Create(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Creates a new, non-blocking, UDP socket and binds it to the port specified. If the specified port is 0, the socket is automatically bound to an unused port.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Close(&#039;&#039;&#039;int &#039;&#039;&#039;socket)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Destroys a UDP socket created with NetUDPSocket_Create.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Send(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr_in/sockaddr_in6 &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the specified socket. To broadcast a message across a LAN (such as when checking for available games), send it to 255.255.255.255 (IPv4 only).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Recieve(&#039;&#039;&#039;int &#039;&#039;&#039;socket&#039;&#039;&#039;, char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t* &#039;&#039;&#039;datalen&#039;&#039;&#039;, sockaddr_in*/sockaddr_in6* &#039;&#039;&#039;address)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Recieves a single packet from the specified socket. Places the received data in &#039;&#039;&#039;data&#039;&#039;&#039;, the length of the data returned in &#039;&#039;&#039;datalen&#039;&#039;&#039;, and the address the packet was received from in &#039;&#039;&#039;address&#039;&#039;&#039;. If there are no packets in the buffer, the function returns immediately.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPServer_* ===&lt;br /&gt;
These functions provide a basic, single-threaded, blocking UDP server.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPServer_Run(&#039;&#039;&#039;uint16_t &#039;&#039;&#039;port&#039;&#039;&#039;, bool (*&#039;&#039;&#039;packet_callback&#039;&#039;&#039;)&#039;&#039;&#039;(&#039;&#039;&#039;char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen&#039;&#039;&#039;, int &#039;&#039;&#039;from))&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Starts a new UDP server on the specified port which calls &#039;&#039;&#039;packet_callback&#039;&#039;&#039; when a packet is recieved. Does not return until the server has finished running (&#039;&#039;&#039;packet_callback&#039;&#039;&#039; returns false).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPServer_Send(&#039;&#039;&#039;sockaddr_in/sockaddr_in6 &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen)&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the server running on the current thread. This function should only be called from &#039;&#039;&#039;packet_callback&#039;&#039;&#039; or functions called by &#039;&#039;&#039;packet_callback&#039;&#039;&#039;.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15014</id>
		<title>User:RossyMiles/Flatline</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15014"/>
		<updated>2009-07-16T03:17:12Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatline is the most recent proposed multiplayer mod for Oni. This document is a work in progress.&lt;br /&gt;
&lt;br /&gt;
== Flatline API ==&lt;br /&gt;
Both the Flatline clients and dedicated servers will run inside Daodan inside an official build of Oni. This is because a copy of Oni is needed to fully simulate the scripting and physics in a game.&lt;br /&gt;
&lt;br /&gt;
Two sets of functions will be provided. The Net* functions will provide a basic, non-blocking UDP sockets library. The FLr* functions will be the rest of the code required.&lt;br /&gt;
&lt;br /&gt;
=== NetPlatform_* ===&lt;br /&gt;
These functions provide all the platform specific functionality required by Net*.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Initalize&#039;&#039;&#039;()&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called when the network functionality is required. On Windows, it makes a call to WSAStartup.&lt;br /&gt;
&lt;br /&gt;
void &#039;&#039;&#039;NetPlatform_Shutdown&#039;&#039;&#039;()&amp;lt;br&amp;gt;&lt;br /&gt;
For every call to NetPlatform_Initalize, there has to be a corresponsing call to NetPlatform_Shutdown. On Windows, this function calls WSACleanup.&lt;br /&gt;
&lt;br /&gt;
=== NetUPnP_* ===&lt;br /&gt;
These functions provide basic automatic port forwarding for computers behind a router.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Initalize&#039;&#039;&#039;(char** &#039;&#039;&#039;localip&#039;&#039;&#039;, char** &#039;&#039;&#039;routerip&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Initializes the UPnP library. Places the local ip address in localip and places the router&#039;s ip address in routerip.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Shutdown&#039;&#039;&#039;()&amp;lt;br&amp;gt;&lt;br /&gt;
Closes the UPnP library. Frees the strings pointed to by localip and routerip.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPSocket_* ===&lt;br /&gt;
These functions provide a basic UDP sockets library.&lt;br /&gt;
&lt;br /&gt;
int &#039;&#039;&#039;NetUDPSocket_Create&#039;&#039;&#039;(uint16_t &#039;&#039;&#039;port&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Creates a new, non-blocking, UDP socket and binds it to the port specified. If the specified port is 0, the socket is automatically bound to an unused port.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Close&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Destroys a UDP socket created with NetUDPSocket_Create.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Send&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr_in/sockaddr_in6 &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the specified socket. To broadcast a message across a LAN (such as when checking for available games), send it to 255.255.255.255 (IPv4 only).&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Recieve&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;, char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t* &#039;&#039;&#039;datalen&#039;&#039;&#039;, sockaddr_in*/sockaddr_in6* &#039;&#039;&#039;address&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Recieves a single packet from the specified socket. Places the received data in &amp;quot;data&amp;quot;, the length of the data returned in datalen, and the address the packet was received from in address. If there are no packets in the buffer, the function returns immediately.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15013</id>
		<title>User:RossyMiles/Flatline</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15013"/>
		<updated>2009-07-16T02:26:00Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatline is the most recent proposed multiplayer mod for Oni. This document is a work in progress.&lt;br /&gt;
&lt;br /&gt;
== Flatline API ==&lt;br /&gt;
Both the Flatline clients and dedicated servers will run inside Daodan inside an official build of Oni. This is because a copy of Oni is needed to fully simulate the scripting and physics in a game.&lt;br /&gt;
&lt;br /&gt;
Two sets of functions will be provided. The Net* functions will provide a basic, non-blocking UDP sockets library. The FLr* functions will be the rest of the code required.&lt;br /&gt;
&lt;br /&gt;
=== NetPlatform_* ===&lt;br /&gt;
These functions provide all the platform specific functionality required by Net*.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Initalize&#039;&#039;&#039;()&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called when the network functionality is required. On Windows, it makes a call to WSAStartup.&lt;br /&gt;
&lt;br /&gt;
void &#039;&#039;&#039;NetPlatform_Shutdown&#039;&#039;&#039;()&amp;lt;br&amp;gt;&lt;br /&gt;
For every call to NetPlatform_Initalize, there has to be a corresponsing call to NetPlatform_Shutdown. On Windows, this function calls WSACleanup.&lt;br /&gt;
&lt;br /&gt;
=== NetUPnP_* ===&lt;br /&gt;
These functions provide basic automatic port forwarding for computers behind a router.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Initalize&#039;&#039;&#039;(char** &#039;&#039;&#039;localip&#039;&#039;&#039;, char** &#039;&#039;&#039;routerip&#039;&#039;&#039;)&lt;br /&gt;
Initializes the UPnP library. Places the local ip address in localip and places the router&#039;s ip address in routerip.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Shutdown&#039;&#039;&#039;()&lt;br /&gt;
Closes the NetUPnP library. Frees the strings pointed to by localip and routerip.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPSocket_* ===&lt;br /&gt;
int &#039;&#039;&#039;NetUDPSocket_Create&#039;&#039;&#039;(uint16_t &#039;&#039;&#039;port&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Creates a new, non-blocking, UDP socket and binds it to the port specified. If the specified port is 0, the socket is automatically bound to an unused port.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Close&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Destroys a UDP socket created with NetUDPSocket_Create.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Send&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr_in/sockaddr_in6 &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the specified socket.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Recieve&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;, char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t* &#039;&#039;&#039;datalen&#039;&#039;&#039;, sockaddr_in*/sockaddr_in6* &#039;&#039;&#039;address&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Recieves a single packet from the specified socket. Places the received data in &amp;quot;data&amp;quot;, the length of the data returned in datalen, and the address the packet was received from in address. If there are no packets in the buffer, the function returns immediately.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15012</id>
		<title>User:RossyMiles/Flatline</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15012"/>
		<updated>2009-07-16T02:18:47Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatline is the most recent proposed multiplayer mod for Oni. This document is a work in progress.&lt;br /&gt;
&lt;br /&gt;
== Flatline API ==&lt;br /&gt;
Both the Flatline clients and dedicated servers will run inside Daodan inside an official build of Oni. This is because a copy of Oni is needed to fully simulate the scripting and physics in a game.&lt;br /&gt;
&lt;br /&gt;
Two sets of functions will be provided. The Net* functions will provide a basic, non-blocking UDP sockets library. The FLr* functions will be the rest of the code required.&lt;br /&gt;
&lt;br /&gt;
=== NetPlatform_* ===&lt;br /&gt;
These functions provide all the platform specific functionality required by Net*.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Initalize&#039;&#039;&#039;()&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called when the network functionality is required. On Windows, it makes a call to WSAStartup.&lt;br /&gt;
&lt;br /&gt;
void &#039;&#039;&#039;NetPlatform_Shutdown&#039;&#039;&#039;()&amp;lt;br&amp;gt;&lt;br /&gt;
For every call to NetPlatform_Initalize, there has to be a corresponsing call to NetPlatform_Shutdown. On Windows, this function calls WSACleanup.&lt;br /&gt;
&lt;br /&gt;
=== NetUPnP ===&lt;br /&gt;
These functions provide basic automatic port forwarding for computers behind a router.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Initalize&#039;&#039;&#039;(char** localip, char** routerip)&lt;br /&gt;
Initializes the UPnP library. Places the local ip address in localip and places the router&#039;s ip address in routerip.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUPnP_Shutdown&#039;&#039;&#039;()&lt;br /&gt;
Closes the NetUPnP library. Frees the strings pointed to by localip and routerip.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPSocket_* ===&lt;br /&gt;
int &#039;&#039;&#039;NetUDPSocket_Create&#039;&#039;&#039;(uint16_t &#039;&#039;&#039;port&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Creates a new, non-blocking, UDP socket and binds it to the port specified. If the specified port is 0, the socket is automatically bound to an unused port.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Close&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Destroys a UDP socket created with NetUDPSocket_Create.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Send&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr_in/sockaddr_in6 &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the specified socket.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Recieve&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;, char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t* &#039;&#039;&#039;datalen&#039;&#039;&#039;, sockaddr_in*/sockaddr_in6* &#039;&#039;&#039;address&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Recieves a single packet from the specified socket. Places the received data in &amp;quot;data&amp;quot;, the length of the data returned in datalen, and the address the packet was received from in address. If there are no packets in the buffer, the function returns immediately.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15011</id>
		<title>User:RossyMiles/Flatline</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15011"/>
		<updated>2009-07-16T02:10:29Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatline is the most recent proposed multiplayer mod for Oni. This document is a work in progress.&lt;br /&gt;
&lt;br /&gt;
== Flatline API ==&lt;br /&gt;
Both the Flatline clients and dedicated servers will run inside Daodan inside an official build of Oni. This is because a copy of Oni is needed to fully simulate the scripting and physics in a game.&lt;br /&gt;
&lt;br /&gt;
Two sets of functions will be provided. The Net* functions will provide a basic, non-blocking UDP sockets library. The FLr* functions will be the rest of the code required.&lt;br /&gt;
&lt;br /&gt;
=== NetPlatform_* ===&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Initalize&#039;&#039;&#039;()&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called when the network functionality is required. On Windows, it makes a call to WSAStartup.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Shutdown&#039;&#039;&#039;()&amp;lt;br&amp;gt;&lt;br /&gt;
For every call to NetPlatform_Initalize, there has to be a corresponsing call to NetPlatform_Shutdown. On Windows, this function calls WSACleanup.&lt;br /&gt;
&lt;br /&gt;
=== NetUDPSocket_* ===&lt;br /&gt;
int &#039;&#039;&#039;NetUDPSocket_Create&#039;&#039;&#039;(uint16_t &#039;&#039;&#039;port&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Creates a new, non-blocking, UDP socket and binds it to the port specified. If the specified port is 0, the socket is automatically bound to an unused port.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Close&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Destroys a UDP socket created with NetUDPSocket_Create.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Send&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr_in/sockaddr_in6 &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the specified socket.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Recieve&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;, char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t* &#039;&#039;&#039;datalen&#039;&#039;&#039;, sockaddr_in*/sockaddr_in6* &#039;&#039;&#039;address&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Recieves a single packet from the specified socket. Places the received data in &amp;quot;data&amp;quot;, the length of the data returned in datalen, and the address the packet was received from in address.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15010</id>
		<title>User:RossyMiles/Flatline</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Flatline&amp;diff=15010"/>
		<updated>2009-07-16T02:09:55Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: a work in progress ^_^&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Flatline is the most recent proposed multiplayer mod for Oni. This document is a work in progress.&lt;br /&gt;
&lt;br /&gt;
=== Flatline API ===&lt;br /&gt;
Both the Flatline clients and dedicated servers will run inside Daodan inside an official build of Oni. This is because a copy of Oni is needed to fully simulate the scripting and physics in a game.&lt;br /&gt;
&lt;br /&gt;
Two sets of functions will be provided. The Net* functions will provide a basic, non-blocking UDP sockets library. The FLr* functions will be the rest of the code required.&lt;br /&gt;
&lt;br /&gt;
== NetPlatform_* ==&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Initalize&#039;&#039;&#039;()&amp;lt;br&amp;gt;&lt;br /&gt;
This function is called when the network functionality is required. On Windows, it makes a call to WSAStartup.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetPlatform_Shutdown&#039;&#039;&#039;()&amp;lt;br&amp;gt;&lt;br /&gt;
For every call to NetPlatform_Initalize, there has to be a corresponsing call to NetPlatform_Shutdown. On Windows, this function calls WSACleanup.&lt;br /&gt;
&lt;br /&gt;
== NetUDPSocket_* ==&lt;br /&gt;
int &#039;&#039;&#039;NetUDPSocket_Create&#039;&#039;&#039;(uint16_t &#039;&#039;&#039;port&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Creates a new, non-blocking, UDP socket and binds it to the port specified. If the specified port is 0, the socket is automatically bound to an unused port.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Close&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Destroys a UDP socket created with NetUDPSocket_Create.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Send&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;, sockaddr_in/sockaddr_in6 &#039;&#039;&#039;address&#039;&#039;&#039;, const char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t &#039;&#039;&#039;datalen&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Sends a packet of data to the specified address using the specified socket.&lt;br /&gt;
&lt;br /&gt;
bool &#039;&#039;&#039;NetUDPSocket_Recieve&#039;&#039;&#039;(int &#039;&#039;&#039;socket&#039;&#039;&#039;, char* &#039;&#039;&#039;data&#039;&#039;&#039;, uint16_t* &#039;&#039;&#039;datalen&#039;&#039;&#039;, sockaddr_in*/sockaddr_in6* &#039;&#039;&#039;address&#039;&#039;&#039;)&amp;lt;br&amp;gt;&lt;br /&gt;
Recieves a single packet from the specified socket. Places the received data in &amp;quot;data&amp;quot;, the length of the data returned in datalen, and the address the packet was received from in address.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User_talk:Neo&amp;diff=14929</id>
		<title>User talk:Neo</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User_talk:Neo&amp;diff=14929"/>
		<updated>2009-07-02T10:05:31Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;New OniSplit version: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit/OniSplit|_v0.9.37.zip OniSplit v0.9.37]&lt;br /&gt;
&lt;br /&gt;
What&#039;s new:&lt;br /&gt;
&lt;br /&gt;
:* support for transparency in the environment importer&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New OniSplit version: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit/OniSplit|_v0.9.35.zip OniSplit v0.9.35]&lt;br /&gt;
&lt;br /&gt;
What&#039;s new:&lt;br /&gt;
&lt;br /&gt;
:* conversion of recorded films (.dat binary files) to xml files that can be used to create FILM .oni files&lt;br /&gt;
&lt;br /&gt;
    OniSplit film2xml out_dir film.dat&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
New OniSplit version: [http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/OniSplit/OniSplit|_v0.9.34.zip OniSplit v0.9.34]&lt;br /&gt;
&lt;br /&gt;
What&#039;s new:&lt;br /&gt;
&lt;br /&gt;
:* SNDD importer&lt;br /&gt;
::-WAV files (.wav, mono/stereo, 22.05KHz/44.1KHz, uncompressed(PCM)/compressed(MS-ADPCM)) produce SNDD files that are compatible with Oni PC retail.&lt;br /&gt;
::-AIFC files (.aif/.aifc/.afc, mono/stereo 22.05KHz, compressed(ima4)) produce SNDD files that are compatible with Oni Mac.&lt;br /&gt;
::Example&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
  &lt;br /&gt;
  OniSplit -create out_dir test.aif&lt;br /&gt;
  OniSplit -create out_dir test.wav&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:*LOD support for creating TRBS files. This can be done by creating an xml file containing the following:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;Oni Version=&amp;quot;0.9.29.0&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Instance id=&amp;quot;0&amp;quot; type=&amp;quot;TRBS&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;Elements&amp;gt;&lt;br /&gt;
              &amp;lt;Link&amp;gt;barabus_body_1.dae&amp;lt;/Link&amp;gt;&lt;br /&gt;
              &amp;lt;Link&amp;gt;barabus_body_2.dae&amp;lt;/Link&amp;gt;&lt;br /&gt;
              &amp;lt;Link&amp;gt;barabus_body_3.dae&amp;lt;/Link&amp;gt;&lt;br /&gt;
              &amp;lt;Link&amp;gt;barabus_body_4.dae&amp;lt;/Link&amp;gt;&lt;br /&gt;
              &amp;lt;Link&amp;gt;barabus_body_5.dae&amp;lt;/Link&amp;gt;&lt;br /&gt;
          &amp;lt;/Elements&amp;gt;&lt;br /&gt;
      &amp;lt;/Instance&amp;gt;&lt;br /&gt;
  &amp;lt;/Oni&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::and running the command (assuming the created xml file&#039;s name is barabus_body.xml):&lt;br /&gt;
&lt;br /&gt;
  OniSplit -create out_dir barabus_body.xml&lt;br /&gt;
&lt;br /&gt;
::It&#039;s not strictly necessary to create 5 different geometries for each LOD. The following works just as well:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;?xml version=&amp;quot;1.0&amp;quot; encoding=&amp;quot;utf-8&amp;quot;?&amp;gt;&lt;br /&gt;
  &amp;lt;Oni Version=&amp;quot;0.9.29.0&amp;quot;&amp;gt;&lt;br /&gt;
      &amp;lt;Instance id=&amp;quot;0&amp;quot; type=&amp;quot;TRBS&amp;quot;&amp;gt;&lt;br /&gt;
          &amp;lt;Elements&amp;gt;&lt;br /&gt;
              &amp;lt;Link&amp;gt;barabus_body_1.dae&amp;lt;/Link&amp;gt;&lt;br /&gt;
              &amp;lt;Link&amp;gt;barabus_body_2.dae&amp;lt;/Link&amp;gt;&lt;br /&gt;
              &amp;lt;Link&amp;gt;barabus_body_2.dae&amp;lt;/Link&amp;gt;&lt;br /&gt;
              &amp;lt;Link&amp;gt;barabus_body_2.dae&amp;lt;/Link&amp;gt;&lt;br /&gt;
              &amp;lt;Link&amp;gt;barabus_body_3.dae&amp;lt;/Link&amp;gt;&lt;br /&gt;
          &amp;lt;/Elements&amp;gt;&lt;br /&gt;
      &amp;lt;/Instance&amp;gt;&lt;br /&gt;
  &amp;lt;/Oni&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:*An xml file can contain &amp;quot;links&amp;quot; to other xml/obj/dae files. For example you can have the following line in an ONWC xml file:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Geometry&amp;gt;pistol.obj&amp;lt;/Geometry&amp;gt;&lt;br /&gt;
&lt;br /&gt;
::Assuming the file pistol.obj exists in the same directory an M3GM .oni file will be automatically created from it.&lt;br /&gt;
&lt;br /&gt;
::Relative paths work just as well:&lt;br /&gt;
&lt;br /&gt;
  &amp;lt;Geometry&amp;gt;geometry/pistol.obj&amp;lt;/Geometry&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:*The -create:subt, -create:txmp and -create:m3gm are sort of obsolete. They still work but now you can simply use &#039;-create&#039; (or just &#039;create&#039;):&lt;br /&gt;
&lt;br /&gt;
  OniSplit -create out_dir crate.dae&lt;br /&gt;
  OniSplit create out_dir -format:bgr555 -genmipmaps pic.tga&lt;br /&gt;
  OniSplit create out_dir subtitles.txt&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:*Work in progress: the AKEV importer now reads Collada materials so the resulting AKEV is textured.&lt;br /&gt;
&lt;br /&gt;
:Sample levels:&lt;br /&gt;
:[http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/noglass.zip TestLevel1] -- This level should look like this in-game: &amp;lt;u&amp;gt;[[:Image:NoGlass Import Test 1.jpg|Image 1]]&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;[[:Image:NoGlass Import Test 2.jpg|Image 2]]&amp;lt;/u&amp;gt; &amp;lt;u&amp;gt;[[:Image:NoGlass Import Test 3.jpg|Image 3]]&amp;lt;/u&amp;gt;&lt;br /&gt;
:[http://cid-639aa31296681bfe.skydrive.live.com/self.aspx/Oni/hexagon.zip TestLevel2] -- This level should look like this in-game: &amp;lt;u&amp;gt;[http://edt.oni2.net/images/hexagon1.jpg Image 1]&amp;lt;/u&amp;gt;&lt;br /&gt;
:A zip file contains the minimum needed to get a new level running in Oni. To &amp;quot;compile&amp;quot; a level extract it to a folder and run the following commands:&lt;br /&gt;
 &lt;br /&gt;
  OniSplit -create out -genmipmaps -format:dxt1 *.xml&lt;br /&gt;
  OniSplit -import:nosep . Oni\GameDataFolder\level1_Final.dat&lt;br /&gt;
&lt;br /&gt;
:(Of course, you need to change the output .dat file path to match your Oni installation path)&lt;br /&gt;
&lt;br /&gt;
:Note1: The hexagon level needs to be scaled up to work properly. Use the envscale option for this:&lt;br /&gt;
  OniSplit -create out -genmipmaps -format:dxt1 -envscale:40 *.xml&lt;br /&gt;
&lt;br /&gt;
:Note2: I&#039;ve updated the level files to contain 20 empty corpses to prevent crashes.&lt;br /&gt;
&lt;br /&gt;
[[User:Neo|Neo]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
I tried to extract the .dae from AKEVhexagon2.oni and got the following error message from OniSplit:&lt;br /&gt;
&lt;br /&gt;
mono onisplit.exe -extract:dae hex3d level7_Final/AKEVhexagon2.oni&lt;br /&gt;
  /level7_Final/AKEVhexagon2.oni&lt;br /&gt;
  /level7_Final/AGDBhexagon2.oni&lt;br /&gt;
  System.NullReferenceException: Object reference not set to an instance of an object&lt;br /&gt;
  at Oni.Imaging.Texture.Read (Oni.InstanceDescriptor txmp) [0x00000] &lt;br /&gt;
  at Oni.Geometry.GeometryDaeExporter.WriteImageLibrary (Oni.InstanceDescriptor[] textures) [0x00000] &lt;br /&gt;
  at Oni.Geometry.GeometryDaeExporter.WriteEnvironment (Oni.InstanceDescriptor descriptor, System.String filePath) [0x00000] &lt;br /&gt;
  at Oni.Geometry.GeometryDaeExporter.ExportInstance (Oni.InstanceDescriptor descriptor) [0x00000] &lt;br /&gt;
  at Oni.Exporter.ExportInstanceList (System.Collections.Generic.List`1 descriptors) [0x00000] &lt;br /&gt;
  at Oni.Exporter.Export (Oni.FileManager fileManager, System.String sourceFilePath, System.String filter) [0x00000] &lt;br /&gt;
  at Oni.Program.ExtractGeometry (System.String[] args) [0x00000] &lt;br /&gt;
  at Oni.Program.Main (System.String[] args) [0x00000]&lt;br /&gt;
&lt;br /&gt;
[[User:EdT|EdT]] 03:42, 12 November 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
This happens when you don&#039;t have all the textures that are used by AKEV in the same folder. In this case the missing texture is TXMP&amp;lt;none&amp;gt; aka TXMP%3Cnone%3E.oni. You can copy it to that folder but there is another problem caused by it&#039;s funky name.&lt;br /&gt;
&lt;br /&gt;
If you really want to do that you need to &amp;quot;create&amp;quot; hexagon using a different default texture:&lt;br /&gt;
&lt;br /&gt;
  onisplit create out *.xml -format:dxt1 -envscale:40 -texdefault:notfoundtex&lt;br /&gt;
&lt;br /&gt;
Now you can copy TXMPnotfoundtex.oni to the folder that contains the AKEV file and export should work.&lt;br /&gt;
&lt;br /&gt;
PS: maybe I should make notfoundtex the default texture. That way I avoid using that troublesome &amp;lt;none&amp;gt; and it&#039;s more obvious which quads have missing textures.&lt;br /&gt;
&lt;br /&gt;
[[User:Neo|Neo]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
DELETED, don&#039;t bother with that interpolation stuff (I apologize if you did). I found this bug useful in the end. It can be used for making more final resting poses than standard two, bringing more varienty into a game. But request about blue shield remains.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2)&#039;&#039;&#039;&lt;br /&gt;
;Subject - Blue shield&lt;br /&gt;
:Blue shield absorbs both damage and knockback. Is there a way how to make it absorb only damage, so character would be affected by knockback even tough he has blue shield?&lt;br /&gt;
:I ask because then I could simulate throwing over obstacles with throws via PAR3. Now I cannot due to blue shield&#039;s knockback absorbtion.&lt;br /&gt;
:Or is there any &amp;quot;cleaner&amp;quot; solution of throwing over obstacles (such as dynamic root height)?&lt;br /&gt;
&lt;br /&gt;
Thank you for patience, --[[User:Loser|Loser]] 07:45, 30 November 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
:I&#039;ll say what I can on the matter, if you don&#039;t mind. :)&lt;br /&gt;
&lt;br /&gt;
:@Blue Shield: Regardless of the ability to remove damage by knockback, you run into several problems:&lt;br /&gt;
*Explosions would still knock you back&lt;br /&gt;
*Explosions _might_ still do damage to you (I&#039;d have to look at the asm, but from what I recall about PAR3, knockback is a type of damage. I never quite got how it worked specifically though, does it do actual damage?)&lt;br /&gt;
:A better solution would be to somehow apply velocity to TRAMs. With velocity and the right flag (can&#039;t recall which...), the sphere tree would unstick.&lt;br /&gt;
::Another thing: When a character goes over an edge, unsticking depends on either a time spent in the air or size of sphere (distance from ground), I can&#039;t tell which. I would hazard a guess that it has to do with time, but I&#039;m not sure. :) If we can decrease whatever value it is, we could get what you are looking for.  There is a chance it is a value in the ONCC or a constant in the engine. I&#039;m not sure which. [[User:Gumby|Gumby]] 10:04, 30 November 2008 (CET)&lt;br /&gt;
:@TRAMs when characters die, they lose all ability to be animated at all. I know there exists a fix for characters losing MELE information on death (I lost it, gotta ask geyser next time he is on...), but there might also be a way to disable the disabling of animation on death. I know if you set a characters health to 0, attempt to animate it (fail), then set its health to something positive, the first thing he\she does is that animation you asked it to. So all hope is not lost. :) Then again, it might be a good thing you can&#039;t be animated after death. That could lead to some crazy bugs. :D [[User:Gumby|Gumby]] 09:38, 30 November 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
OK, the new music files imports and exports without error.  Now how to get it in the game?  I duplicated OSBDmus_amasian.grp renamed it OSBDmus_burn.grp used a hex editor and changed the links to the new music file names (I kept the file name the same size)  Placed all the files in level0_Final and rebuilt the level and used the command: sound_music_start mus_burn but no music... here are the files http://edt.oni2.net/OniSplit/mus_burn.zip What am I doing wrong? [[User:EdT|EdT]] 20:57, 10 December 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
The OSBD files appear to be correct but to be on the safe side you should simply replace exiting sounds (SNDD) to see if the sound really imported correctly. &lt;br /&gt;
&lt;br /&gt;
[[User:Neo|Neo]]&lt;br /&gt;
&lt;br /&gt;
Replacing an existing SNDD with a new one works. I next tried duplicating an existing OSBD file such as OSBDmus_xtr1.grp.oni and renamed it OSBDmus_xtr3.grp.oni, rebuilt level0_Final, but when I use the command sound_music_start mus_xtr3 there is no music. Very odd...  [[User:EdT|EdT]] 01:15, 11 December 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
I think that the sound_music_start command plays an ambient sound, not a group. In general nothing plays groups, only ambients and impulses so you need to create one of those too.&lt;br /&gt;
&lt;br /&gt;
[[User:Neo|Neo]]&lt;br /&gt;
&lt;br /&gt;
Looks like group files are used by ambient files. Example on [[Music/Ingame#mus_fitec|&amp;quot;fight&amp;quot;]] track.&lt;br /&gt;
&lt;br /&gt;
 SNDDmus_fitec1.aif.oni&lt;br /&gt;
 SNDDmus_fitec2.aif.oni&lt;br /&gt;
 SNDDmus_fitec3.aif.oni&lt;br /&gt;
 SNDDmus_fitec4.aif.oni&lt;br /&gt;
 SNDDmus_fitec5.aif.oni&lt;br /&gt;
 SNDDmus_fitec_out.aif.oni&lt;br /&gt;
 - (no links)&lt;br /&gt;
 &lt;br /&gt;
 OSBDmus_fitec.amb.oni (for level 4 ?)&lt;br /&gt;
 - mus_fitec&lt;br /&gt;
 - mus_fitec_in&lt;br /&gt;
 - mus_fitec_out&lt;br /&gt;
 &lt;br /&gt;
 OSBDmus_fitec_hd.amb.oni (for level 12 ? looks redundant)&lt;br /&gt;
 - mus_fitec&lt;br /&gt;
 - mus_fitec_in&lt;br /&gt;
 - mus_fitec_out&lt;br /&gt;
 &lt;br /&gt;
 OSBDmus_fitec_in.grp.oni&lt;br /&gt;
 - mus_fitec1.aif&lt;br /&gt;
 &lt;br /&gt;
 OSBDmus_fitec.grp.oni (should be the loop)&lt;br /&gt;
 - mus_fitec1.aif&lt;br /&gt;
 - mus_fitec2.aif&lt;br /&gt;
 - mus_fitec3.aif&lt;br /&gt;
 - mus_fitec4.aif&lt;br /&gt;
 - mus_fitec5.aif&lt;br /&gt;
 &lt;br /&gt;
 OSBDmus_fitec_out.grp.oni&lt;br /&gt;
 - mus_fitec_out.aif&lt;br /&gt;
&lt;br /&gt;
Here is the updated [http://www.paradox.oni2.net/mods/Ed&#039;s_music_test.zip mus_burn pack.]&lt;br /&gt;
I guess that track wasn&#039;t supposed to become looped so it sounds choppy when starting over. Btw, where did the track come from? [[User:Paradox-01|Paradox-01]] 19:04, 8 March 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
How hard is it to add a new screen to Oni?  &amp;quot;Screen&amp;quot; as in Main Menu, Load Game, Options, etc. I know that the game wouldn&#039;t know what to do with the screen because it wouldn&#039;t have any code written for it, but let&#039;s say that part&#039;s not important. --[[User:Iritscen|iritscen]] 21:49, 12 December 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
Creating WMDDs using xml is easy enough, export an existing one and modify it as you like. But you&#039;re right about the fact that they need new code added to the game.&lt;br /&gt;
&lt;br /&gt;
[[User:Neo|Neo]]&lt;br /&gt;
&lt;br /&gt;
I should have mentioned, I wanted an existing screen to lead to a new screen when clicking a newly-added button on the first screen. But, looking at the WMDDs, I don&#039;t see where the link is from a button to a screen... is that because they&#039;re hard-coded into Oni? :-\ --[[User:Iritscen|Iritscen]] 21:33, 13 December 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
Yes, a button triggers an action that must be written in code.&lt;br /&gt;
&lt;br /&gt;
[[User:Neo|Neo]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Neo, is it possible to make OniSplit say something to the user if they double-click the app, that is, run it without sending it any commands?  In other words, right now, the console window just flashes onscreen for a moment if they do that. Could you insert a pause, and display a message about how they need to run it by sending it a command? Maybe it doesn&#039;t close the window until they press a key. Just a suggestion. I know that we should probably also be clearer about it in places like [[OniSplit]], but it seems like, if this is doable, it probably would only take a minute to code, and it will save users from having to ask this question every couple weeks on the forum :-) --[[User:Iritscen|Iritscen]] 16:10, 21 December 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
:For some reason, that idea inspired me so I wrote some test code. http://rossy.oni2.net/files/ConsoleTest.zip :D When it recieves no arguments, the test program checks if it has been run from a console window, if not it creates its own cmd.exe and runs itself. I don&#039;t know what would happen on MacOSX, but i think the Process.Start call will fail and cause the program to display a message box instead.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Neo, I used xml to extract and create TXMP files.  However, for a file that has an alpha channel, I get a bug:&lt;br /&gt;
http://edt.oni2.net/OniSplit/alphabug.jpg&lt;br /&gt;
&lt;br /&gt;
For this example, I extracted the TXMP for Konoko&#039;s head using xml and without any changes imported it back using xml.&lt;br /&gt;
&lt;br /&gt;
Any suggestions? [[User:EdT|EdT]]&lt;br /&gt;
:Somehow the reflection got changed into transparency...I have been wondering how this particular trick is done. :) I guess we will find out soon enough. [[User:Gumby|Gumby]] 05:06, 26 June 2009 (UTC)&lt;br /&gt;
:EdT, maybe you could post the generated xml file? :) [[User:Gumby|Gumby]] 07:11, 26 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::Someone had a very similar problem a while ago. He had Oni Demo which meant that Mukade&#039;s reflection texture was missing. It was needed by the Spartan plugin so some pieces became transparent.&lt;br /&gt;
::EdT, did you import Konoko&#039;s texture into a plugin? Some files are loaded before files in the original level, other are loaded after them, it depends on the [[AE:Plugins|plugin name]]. Maybe you can test that out: 1) put the reflective map also into the plugin 2) or change the plugin name. [[User:Paradox-01|Paradox-01]] 09:43, 26 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
::: Paradox, it was an xml issue:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;Oni Version=&amp;quot;0.9.37.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;Texture&amp;gt;&lt;br /&gt;
        &amp;lt;Flags&amp;gt;HasMipMaps&amp;lt;/Flags&amp;gt;&lt;br /&gt;
        &amp;lt;Format&amp;gt;ARGB4444&amp;lt;/Format&amp;gt;&lt;br /&gt;
        &amp;lt;Image&amp;gt;TXMPIteration001%2Fk4_head.tga&amp;lt;/Image&amp;gt;&lt;br /&gt;
    &amp;lt;/Texture&amp;gt;&lt;br /&gt;
&amp;lt;/Oni&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:::It was missing the &amp;lt;EnvMap&amp;gt;TXMPenvksface&amp;lt;/EnvMap&amp;gt; tag, very strange. [[User:EdT|EdT]]&lt;br /&gt;
&lt;br /&gt;
::::Ok. But the question is still there: was this just once or does this kind of bug occur now always when exporting a transparent image? [[User:Paradox-01|Paradox-01]] 16:07, 26 June 2009 (UTC)&lt;br /&gt;
&lt;br /&gt;
:::::Paradox, It seems to be just that file: TXMPIteration001%2Fk4_head.oni others with transparency includes the &amp;lt;EnvMap&amp;gt; tag. [[User:EdT|EdT]]&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Neo, &lt;br /&gt;
&lt;br /&gt;
Is there a way to manually add comments in the xml that OniSplit creates?  Sometimes I would like to add notes to help me remember what I was doing. [[User:EdT|EdT]]&lt;br /&gt;
 &amp;amp;lt;!-- Comments go here --&amp;amp;gt;&lt;br /&gt;
:Of course, they will be deleted when you convert to .oni. :) [[User:Gumby|Gumby]] 20:31, 1 July 2009 (UTC)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Mouse_control_issues&amp;diff=14906</id>
		<title>Mouse control issues</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Mouse_control_issues&amp;diff=14906"/>
		<updated>2009-06-24T09:03:35Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There have been many issues reported on [http://oni.bungie.org/community/forum/ Oni Central Forum] about mouse lag or unresponsive controls. This issue is most common to (or only occurs to?) Vista users. It also occured to me (rossy) but appears to have gone away with the latest drivers/updates to my system.&lt;br /&gt;
&lt;br /&gt;
===Complete (?) list of Help and Troubleshooting Topics in chronological order===&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=149 (old...)&lt;br /&gt;
*I didn&#039;t check any posts before 746 except for post 149, there could be others between those times and before post 149.&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=746 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=767&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=801 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=824 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=907&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=937 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=970&lt;br /&gt;
&lt;br /&gt;
===Known facts (symptoms) of the issue===&lt;br /&gt;
*(Probably/usually) exclusive to Windows Vista.&lt;br /&gt;
*(Probably/usually) exclusive to multi-core CPUs.&lt;br /&gt;
*Fraps reports the game&#039;s framerate to be much higher than 60fps. (I&#039;m unsure whether the same data is returned by Oni&#039;s internal framerate counter, Ctrl+Shift+Y)&lt;br /&gt;
*Higher graphics settings can cause the problem to become less noticable as the framerate gets closer to or below 60. (Try 8x antialiasing in the nVidia Control Panel)&lt;br /&gt;
*This suggests that the problem is somehow related to framerate and internal timing issues in Oni.&lt;br /&gt;
*Quote from Gumby &amp;quot;If the game runs much faster than 60 clicks, the mouse input data isn&#039;t updated fast enough.&amp;quot;&lt;br /&gt;
*The mouse moves in steps, as if it&#039;s on a &amp;quot;grid&amp;quot;.&lt;br /&gt;
*Combos are hard to pull off as keys are only responsive some of the time, it is also almost impossible to dash.&lt;br /&gt;
*This thing is interesting http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/980e5018-3ade-4823-a6dc-5ddbcc3091d5 .&lt;br /&gt;
&lt;br /&gt;
===Possible fixes===&lt;br /&gt;
There are no known fixes, these fixes have been reported to work by some people but have been ineffective for others. In some cases, a combination of some of these fixes might be necessary.&lt;br /&gt;
*Update your graphics drivers, do not use Windows Update, instead go to your card&#039;s website and download drivers direct from there. (http://www.nvidia.com/Download/index.aspx?lang=en-us)&lt;br /&gt;
*Run Windows Update. Ensure you are on the latest Service Pack for your operating system. Windows Vista&#039;s latest version is Vista Service Pack 2, XP&#039;s latest service pack is SP3. Note: Windows XP SP3 is not &amp;quot;evil&amp;quot; because it contains parts of Vista, please don&#039;t continue using XP SP2 because of rumors you have heard on the internet, SP3 contains many important fixes and could solve issues that you have with Oni.&lt;br /&gt;
*If you have a multi-core system (Pentium Dual Core, Core 2 Duo, Quad, etc.) there are patched EXE&#039;s that force Oni to only run on a single core. Here: http://oni.bungie.org/community/forum/viewtopic.php?id=766 and here: http://rossy.oni2.net/files/single-core/Oni.exe .&lt;br /&gt;
*Install either this: http://rossy.oni2.net/files/binkw32.dll or this: http://svn.oni2.net/Daodan/release/binkw32.dll [[Daodan DLL]], both have a &amp;quot;performance patch&amp;quot; that could fix timing errors caused by faulty chipsets. This fix has been reported to work by some people.&lt;br /&gt;
*Run in windowed mode or &amp;quot;-noswitch&amp;quot; mode, if you already use windowed mode run in fullscreen.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Mouse_control_issues&amp;diff=14905</id>
		<title>Mouse control issues</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Mouse_control_issues&amp;diff=14905"/>
		<updated>2009-06-24T09:01:42Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There have been many issues reported on [http://oni.bungie.org/community/forum/ Oni Central Forum] about mouse lag or unresponsive controls. This issue is most common to (or only occurs to?) Vista users. It also occured to me (rossy) but appears to have gone away with the latest drivers/updates to my system.&lt;br /&gt;
&lt;br /&gt;
===Complete (?) list of Help and Troubleshooting Topics in chronological order===&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=149 (old..., probs not Vista. Was vista out in 2007?)&lt;br /&gt;
*I didn&#039;t check any posts before 746 except for post 149, there could be others between those times and before post 149.&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=746 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=767&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=801 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=824 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=907&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=937 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=970&lt;br /&gt;
&lt;br /&gt;
===Known facts (symptoms) of the issue===&lt;br /&gt;
*(Probably) exclusive to Windows Vista.&lt;br /&gt;
*(Probably) exclusive to multi-core CPUs.&lt;br /&gt;
*Fraps reports the game&#039;s framerate to be much higher than 60fps. (I&#039;m unsure whether the same data is returned by Oni&#039;s internal framerate counter, Ctrl+Shift+Y)&lt;br /&gt;
*Higher graphics settings can cause the problem to become less noticable as the framerate gets closer to or below 60. (Try 8x antialiasing in the nVidia Control Panel)&lt;br /&gt;
*This suggests that the problem is somehow related to framerate and internal timing issues in Oni.&lt;br /&gt;
*Quote from Gumby &amp;quot;If the game runs much faster than 60 clicks, the mouse input data isn&#039;t updated fast enough.&amp;quot;&lt;br /&gt;
*The mouse moves in steps, as if it&#039;s on a &amp;quot;grid&amp;quot;.&lt;br /&gt;
*Combos are hard to pull off as keys are only responsive some of the time, it is also almost impossible to dash.&lt;br /&gt;
*This thing is interesting http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/980e5018-3ade-4823-a6dc-5ddbcc3091d5 .&lt;br /&gt;
&lt;br /&gt;
===Possible fixes===&lt;br /&gt;
There are no known fixes, these fixes have been reported to work by some people but have been ineffective for others. In some cases, a combination of some of these fixes might be necessary.&lt;br /&gt;
*Update your graphics drivers, do not use Windows Update, instead go to your card&#039;s website and download drivers direct from there. (http://www.nvidia.com/Download/index.aspx?lang=en-us)&lt;br /&gt;
*Run Windows Update. Ensure you are on the latest Service Pack for your operating system. Windows Vista&#039;s latest version is Vista Service Pack 2, XP&#039;s latest service pack is SP3. Note: Windows XP SP3 is not &amp;quot;evil&amp;quot; because it contains parts of Vista, please don&#039;t continue using XP SP2 because of rumors you have heard on the internet, SP3 contains many important fixes and could solve issues that you have with Oni.&lt;br /&gt;
*If you have a multi-core system (Pentium Dual Core, Core 2 Duo, Quad, etc.) there are patched EXE&#039;s that force Oni to only run on a single core. Here: http://oni.bungie.org/community/forum/viewtopic.php?id=766 and here: http://rossy.oni2.net/files/single-core/Oni.exe .&lt;br /&gt;
*Install either this: http://rossy.oni2.net/files/binkw32.dll or this: http://svn.oni2.net/Daodan/release/binkw32.dll [[Daodan DLL]], both have a &amp;quot;performance patch&amp;quot; that could fix timing errors caused by faulty chipsets. This fix has been reported to work by some people.&lt;br /&gt;
*Run in windowed mode or &amp;quot;-noswitch&amp;quot; mode, if you already use windowed mode run in fullscreen.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Mouse_control_issues&amp;diff=14904</id>
		<title>Mouse control issues</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Mouse_control_issues&amp;diff=14904"/>
		<updated>2009-06-24T08:59:41Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There have been many issues reported on [http://oni.bungie.org/community/forum/ Oni Central Forum] about mouse lag or unresponsive controls. This issue is most common to (or only occurs to?) Vista users. It also occured to me (rossy) but appears to have gone away with the latest drivers/updates to my system.&lt;br /&gt;
&lt;br /&gt;
===Complete (?) list of Help and Troubleshooting Topics in chronological order===&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=149 (old..., probs not Vista. Was vista out in 2007?)&lt;br /&gt;
*I didn&#039;t check any posts before 746 except for post 149, there could be others between those times and before post 149.&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=746 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=767&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=801 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=824 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=907&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=937 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=970&lt;br /&gt;
&lt;br /&gt;
===Known facts (symptoms) of the issue===&lt;br /&gt;
*(Probably) exclusive to Windows Vista.&lt;br /&gt;
*(Probably) exclusive to multi-core CPUs.&lt;br /&gt;
*Fraps reports the game&#039;s framerate to be much higher than 60fps. (I&#039;m unsure whether the same data is returned by Oni&#039;s internal framerate counter, Ctrl+Shift+Y)&lt;br /&gt;
*Higher graphics settings can cause the problem to become less noticable as the framerate gets closer to or below 60. (Try 8x antialiasing in the nVidia Control Panel)&lt;br /&gt;
*This suggests that the problem is somehow related to framerate and internal timing issues in Oni.&lt;br /&gt;
*Quote from Gumby &amp;quot;If the game runs much faster than 60 clicks, the mouse input data isn&#039;t updated fast enough.&amp;quot;&lt;br /&gt;
*The mouse moves in steps, as if it&#039;s on a &amp;quot;grid&amp;quot;.&lt;br /&gt;
*Combos are hard to pull off as keys are only responsive some of the time, it is also almost impossible to dash.&lt;br /&gt;
*This thing is interesting http://social.msdn.microsoft.com/Forums/en-US/windowssdk/thread/980e5018-3ade-4823-a6dc-5ddbcc3091d5 .&lt;br /&gt;
&lt;br /&gt;
===Possible fixes===&lt;br /&gt;
There are no known fixes, these fixes have been reported to work by some people but have been ineffective for others. In some cases, a combination of some of these fixes might be necessary.&lt;br /&gt;
*Update your graphics drivers, do not use Windows Update, instead go to your card&#039;s website and download drivers direct from there. (http://www.nvidia.com/Download/index.aspx?lang=en-us)&lt;br /&gt;
*Run Windows Update. Ensure you are on the latest Service Pack for your operating system. Windows Vista&#039;s latest version is Vista Service Pack 2, XP&#039;s latest service pack is SP3. Note: Windows XP SP3 is not &amp;quot;evil&amp;quot; because it contains parts of Vista, please don&#039;t continue using XP SP2 because of rumors you have heard on the internet, SP3 contains many important fixes and could solve issues that you have with Oni.&lt;br /&gt;
*If you have a multi-core system (Pentium Dual Core, Core 2 Duo, Quad, etc.) there are patched EXE&#039;s that force Oni to only run on a single core. Here: http://oni.bungie.org/community/forum/viewtopic.php?id=766 and here: http://rossy.oni2.net/files/single-core/Oni.exe .&lt;br /&gt;
*Install either this: http://rossy.oni2.net/files/binkw32.dll or this: http://svn.oni2.net/Daodan/release/binkw32.dll [[Daodan DLL]], both have a &amp;quot;performance patch&amp;quot; that could fix timing errors caused by faulty chipsets. This fix has been reported to work by some people.&lt;br /&gt;
*Run in windowed mode or &amp;quot;-noswitch&amp;quot; mode.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Mouse_control_issues&amp;diff=14903</id>
		<title>Mouse control issues</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Mouse_control_issues&amp;diff=14903"/>
		<updated>2009-06-24T08:54:37Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There have been many issues reported on [http://oni.bungie.org/community/forum/ Oni Central Forum] about mouse lag or unresponsive controls. This issue is most common to (or only occurs to?) Vista users. It also occured to me (rossy) but appears to have gone away with the latest drivers/updates to my system.&lt;br /&gt;
&lt;br /&gt;
===Complete (?) list of Help and Troubleshooting Topics in chronological order===&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=149 (old..., probs not Vista. Was vista out in 2007?)&lt;br /&gt;
*I didn&#039;t check any posts before 746 except for post 149, there could be others between those times and before post 149.&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=746 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=767&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=801 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=824 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=907&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=937 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=970&lt;br /&gt;
&lt;br /&gt;
===Known facts (symptoms) of the issue===&lt;br /&gt;
*(Probably) exclusive to Windows Vista.&lt;br /&gt;
*(Probably) exclusive to multi-core CPUs.&lt;br /&gt;
*Fraps reports the game&#039;s framerate to be much higher than 60fps. (I&#039;m unsure whether the same data is returned by Oni&#039;s internal framerate counter, Ctrl+Shift+Y)&lt;br /&gt;
*Higher graphics settings can cause the problem to become less noticable as the framerate gets closer to or below 60. (Try 8x antialiasing in the nVidia Control Panel)&lt;br /&gt;
*This suggests that the problem is somehow related to framerate and internal timing issues in Oni.&lt;br /&gt;
*Quote from Gumby &amp;quot;If the game runs much faster than 60 clicks, the mouse input data isn&#039;t updated fast enough.&amp;quot;&lt;br /&gt;
*The mouse moves in steps, as if it&#039;s on a &amp;quot;grid&amp;quot;.&lt;br /&gt;
*Combos are hard to pull off as keys are only responsive some of the time, it is also almost impossible to dash,&lt;br /&gt;
&lt;br /&gt;
===Possible fixes===&lt;br /&gt;
There are no known fixes, these fixes have been reported to work by some people but have been ineffective for others. In some cases, a combination of some of these fixes might be necessary.&lt;br /&gt;
*Update your graphics drivers, do not use Windows Update, instead go to your card&#039;s website and download drivers direct from there. (http://www.nvidia.com/Download/index.aspx?lang=en-us)&lt;br /&gt;
*Run Windows Update. Ensure you are on the latest Service Pack for your operating system. Windows Vista&#039;s latest version is Vista Service Pack 2, XP&#039;s latest service pack is SP3. Note: Windows XP SP3 is not &amp;quot;evil&amp;quot; because it contains parts of Vista, please don&#039;t continue using XP SP2 because of rumors you have heard on the internet, SP3 contains many important fixes and could solve issues that you have with Oni.&lt;br /&gt;
*If you have a multi-core system (Pentium Dual Core, Core 2 Duo, Quad, etc.) there are patched EXE&#039;s that force Oni to only run on a single core. Here: http://oni.bungie.org/community/forum/viewtopic.php?id=766 and here: http://rossy.oni2.net/files/single-core/Oni.exe .&lt;br /&gt;
*Install either this: http://rossy.oni2.net/files/binkw32.dll or this: http://svn.oni2.net/Daodan/release/binkw32.dll [[Daodan DLL]], both have a &amp;quot;performance patch&amp;quot; that could fix timing errors caused by faulty chipsets. This fix has been reported to work by some people.&lt;br /&gt;
*Run in windowed mode or &amp;quot;-noswitch&amp;quot; mode.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Mouse_control_issues&amp;diff=14902</id>
		<title>Mouse control issues</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Mouse_control_issues&amp;diff=14902"/>
		<updated>2009-06-24T07:52:01Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: a wiki page for gathering information&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;There have been many issues reported on [http://oni.bungie.org/community/forum/ Oni Central Forum] about mouse lag or unresponsive controls. This issue is most common to (or only occurs to?) Vista users.&lt;br /&gt;
&lt;br /&gt;
===Complete (?) list of Help and Troubleshooting Topics in chronological order===&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=149 (old..., probs not Vista. Was vista out in 2007?)&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=746&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=767&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=801 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=824 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=907&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=937 ???&lt;br /&gt;
*http://oni.bungie.org/community/forum/viewtopic.php?id=970&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Daodan_DLL&amp;diff=14502</id>
		<title>Daodan DLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Daodan_DLL&amp;diff=14502"/>
		<updated>2009-05-30T10:46:01Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Daodan DLL site==&lt;br /&gt;
Contains the latest downloads and detailed installation instructions: http://daodan.rossy.oni2.net/&lt;br /&gt;
&lt;br /&gt;
==What it is==&lt;br /&gt;
The Daodan DLL is a file called vtuneapi.dll, which is loaded at startup by all PC versions of Oni.&lt;br /&gt;
&lt;br /&gt;
It allows one to hook Oni&#039;s runtime environment and patch the executable dynamically, at runtime.&lt;br /&gt;
&lt;br /&gt;
The key features at the moment are a few bug fixes and a bunch of more or less revolutionary cheats.&lt;br /&gt;
&lt;br /&gt;
The DLL fixes the common [[Troubleshooting/Blam|&amp;quot;Blam&amp;quot;]] at startup (caused by the overflow of the GL extensions buffer).&lt;br /&gt;
:(it does not yet fix all critical overflows (e.g., Oni can not handle over 32 chars with an Nvidia GFX card)&lt;br /&gt;
&lt;br /&gt;
The DLL &#039;&#039;does&#039;&#039; fix the pathfinding grid cache size, which used to cause crashes for some extreme scripts.&lt;br /&gt;
&lt;br /&gt;
The DLL fixes a bug in the AI projectile awareness, however the actual projectile dodging is still flawed.&lt;br /&gt;
&lt;br /&gt;
The DLL enables plugins (level#_Whatever.dat) which are a convenient complement to the [[AE|Edition]].&lt;br /&gt;
&lt;br /&gt;
The DLL enables the support of extended ASCII (Latin languages and Cyrillic; &#039;&#039;not&#039;&#039; Chinese (yet?) )&lt;br /&gt;
&lt;br /&gt;
The DLL enables DirectInput, making the key configuration layout-independent. Also fixes mouse wheel etc.&lt;br /&gt;
&lt;br /&gt;
The DLL unlocks the [[thedayismine]] cheat and makes it available through &amp;quot;x&amp;quot; to save on typing.&lt;br /&gt;
&lt;br /&gt;
The DLL makes cheats available even if the game has not been completed (which can&#039;t happen with the demo).&lt;br /&gt;
&lt;br /&gt;
The DLL adds cheats like &#039;&#039;&#039;kangaroo&#039;&#039;&#039;, &#039;&#039;&#039;marypoppins&#039;&#039;&#039;, &#039;&#039;&#039;bulletproof&#039;&#039;&#039;, &#039;&#039;&#039;bigbadboss&#039;&#039;&#039; and &#039;&#039;&#039;tellmetheversion&#039;&#039;&#039; ^^&lt;br /&gt;
&lt;br /&gt;
;For more information, please refer to the README file&lt;br /&gt;
:http://geyser.oni2.net/EXE/pc.east/daodan.txt&lt;br /&gt;
&lt;br /&gt;
;Quick notes about the C-Daodan (to make this documentation less out of date for now)&lt;br /&gt;
*it&#039;s written in C (MinGW for now, maybe Pelles-C later)&lt;br /&gt;
*it implements all of the above, plus more recent fixes&lt;br /&gt;
*it finally runs Oni in a true window (with a menu bar)&lt;br /&gt;
*it poses as binkw32.dll instead of vtuneapi.dll ATM&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Get the C-Daodan==&lt;br /&gt;
Developed by [[User:RossyMiles|Rossy]]. Currently replaces &#039;&#039;&#039;binkw32.dll&#039;&#039;&#039; instead of providing &#039;&#039;&#039;vtuneapi.dll&#039;&#039;&#039;, so if you were using &#039;&#039;&#039;vtuneapi.dll&#039;&#039;&#039; until now, just remove it to avoid conflicts.&lt;br /&gt;
;Here is the directory where Rossy&#039;s current stuff is:http://rossy.oni2.net/files/daodan&lt;br /&gt;
;Here is the DLL:http://rossy.oni2.net/files/daodan/binkw32.dll&lt;br /&gt;
;Here is an extra EXE that allows binkw32.dll to play BINK movies when Oni wants it to:http://rossy.oni2.net/files/daodan/binkplay.exe&lt;br /&gt;
;Here is the source:http://rossy.oni2.net/files/daodan/src.zip&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Get the older FASM Daodan==&lt;br /&gt;
;Discontinued. Also called &amp;quot;basic&amp;quot; as opposed to the newer C-Daodan (see above).&lt;br /&gt;
:&amp;quot;current&amp;quot; is the experimental build which has more features &amp;amp; may have bugs.&lt;br /&gt;
:Versions covered: demo (&amp;quot;demo&amp;quot;), Russian (&amp;quot;buka&amp;quot;), and Eastern English (&amp;quot;standard&amp;quot;)&lt;br /&gt;
===Get it from SFeLi===&lt;br /&gt;
;A single ZIP for all 3 versions:Extract the DLL you need and place it alongside your Oni.exe&lt;br /&gt;
;Here it is:http://sfeli.oni2.net/daodan/basic-0.6.6.zip&lt;br /&gt;
;Experimental:http://sfeli.oni2.net/daodan/current.zip&lt;br /&gt;
;New features&lt;br /&gt;
:new &#039;&#039;&#039;marypoppins&#039;&#039;&#039; cheat&lt;br /&gt;
:pathfinding grid cache fix&lt;br /&gt;
;Current version only&lt;br /&gt;
:AI projectile awareness&lt;br /&gt;
:support for any language (except Chinese and Japanese)&lt;br /&gt;
&lt;br /&gt;
===Get it from geyser===&lt;br /&gt;
;Non-zipped DLLs for every version&lt;br /&gt;
:Download the one you need and place it alongside your Oni.exe&lt;br /&gt;
:If it complains, try replacing your Oni.exe with the one provided.&lt;br /&gt;
;Here they are&lt;br /&gt;
:http://geyser.oni2.net/EXE/pc.east/&lt;br /&gt;
:http://geyser.oni2.net/EXE/pc.buka/&lt;br /&gt;
:http://geyser.oni2.net/EXE/pc.demo/&lt;br /&gt;
;README file&lt;br /&gt;
:http://geyser.oni2.net/EXE/pc.east/daodan.txt&lt;br /&gt;
;Last updated&lt;br /&gt;
:16:17, 28 May 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==See also==&lt;br /&gt;
*[[Developer Mode]] AKA &amp;quot;thedayismine&amp;quot;&lt;br /&gt;
*[[AE|Anniversary Edition]]&lt;br /&gt;
*{{OCF}}&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User_talk:Geyser&amp;diff=13651</id>
		<title>User talk:Geyser</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User_talk:Geyser&amp;diff=13651"/>
		<updated>2008-11-27T08:20:14Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;:Clean slate again. If you need to look something up, just use the history.&lt;br /&gt;
:An exception has been made for the latest discussion. I&#039;ve put it [[User:Geyser/STFUn00b|HERE]].&lt;br /&gt;
:Because I can, and because it really holds a special place in my heart.&lt;br /&gt;
----&lt;br /&gt;
{|border=1&lt;br /&gt;
|Until further notice, this is no longer a &amp;quot;talk&amp;quot; page. But you can still leave messages.&lt;br /&gt;
&lt;br /&gt;
As in &amp;quot;Dr. Crane isn&#039;t here right now, but if you would like to make an appointment...&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
[[Image:GTO_-_Wake_Up_Call_-_Page_1.jpg]][[Image:GTO_-_Wake_Up_Call_-_Page_2.jpg]]&lt;br /&gt;
&lt;br /&gt;
===Reply to &amp;quot;Recent changes&amp;quot; comments===&lt;br /&gt;
Thanks for deleting the spam. Could I suggest http://recaptcha.net/ for human verification, it looks quite good and I think it has a mediawiki module. As for multiplayer, my computer was out of action in the past week and I had exams and schoolwork in the weeks before, so not much progress has been made. I do have the framework for a multithreaded server though and I heard Sfeli was doing something C-Daodan related but he hasn&#039;t been online for a while.&lt;br /&gt;
:[[User:RossyMiles|rossy]] 09:20, 27 November 2008 (CET)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Music/CD&amp;diff=13248</id>
		<title>Talk:Music/CD</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Music/CD&amp;diff=13248"/>
		<updated>2008-11-10T09:12:11Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Dark Future ===&lt;br /&gt;
:the mp3 Dark Future is missing. It is available at: http://oni.bungie.org/archives/mp3.html&lt;br /&gt;
::[[User:82.135.93.34|82.135.93.34]] 04:30, 25 February 2008 (CET) Crass Spektakel&lt;br /&gt;
:It is not really available anymore, unfortunately, seeing as Oni Central is down.&lt;br /&gt;
:And even the archivated version of the site did not preserve any FTP content.&lt;br /&gt;
:However, I remember listening to both &amp;quot;Dark Future&amp;quot; and &amp;quot;Uncertain Past&amp;quot;...&lt;br /&gt;
:If I recall correctly, these are just alternative names, like &amp;quot;Strikers!&amp;quot;.&lt;br /&gt;
:The only one on Oni Central that was not on the CD is No One Left To Trust.&lt;br /&gt;
:Correct me if I&#039;m wrong, of course, and maybe upload those &amp;quot;missing&amp;quot; two.&lt;br /&gt;
::[[User:Geyser|geyser]] 19:01, 25 February 2008 (CET)&lt;br /&gt;
:On a second thought, no, I probably never heard those 2. Too bad.&lt;br /&gt;
:If you happen to have the MP3 and care to share, just go ahead...&lt;br /&gt;
:Like I said, they&#039;re no longer available for download anywhere.&lt;br /&gt;
::[[User:Geyser|geyser]] 04:41, 26 February 2008 (CET)&lt;br /&gt;
:About &amp;quot;Dark Future&amp;quot; again, it seems that it&#039;s just Trailer in disguise.&lt;br /&gt;
:I don&#039;t know about Uncertain Past, but it was probably redundant too.&lt;br /&gt;
:There must be a reason why Harry only left &amp;quot;No One Left To Trust&amp;quot;...&lt;br /&gt;
:I&#039;ll ask on {{OCF}}.&lt;br /&gt;
::[[User:Geyser|geyser]] 18:00, 27 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Music Preview ===&lt;br /&gt;
Would it be a good idea to have a preview of each song? I made an example page to test an online player I found. The player on the left side is a test video player (that didn&#039;t work) the right side is an MP3 player with some good looking visualizations.&lt;br /&gt;
&lt;br /&gt;
http://rossy.oni2.net/files/videos/test.htm&lt;br /&gt;
&lt;br /&gt;
[[User:RossyMiles|rossy]] 10:11, 10 November 2008 (CET)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Music/CD&amp;diff=13247</id>
		<title>Talk:Music/CD</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Music/CD&amp;diff=13247"/>
		<updated>2008-11-10T09:11:01Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=== Dark Future ===&lt;br /&gt;
:the mp3 Dark Future is missing. It is available at: http://oni.bungie.org/archives/mp3.html&lt;br /&gt;
::[[User:82.135.93.34|82.135.93.34]] 04:30, 25 February 2008 (CET) Crass Spektakel&lt;br /&gt;
:It is not really available anymore, unfortunately, seeing as Oni Central is down.&lt;br /&gt;
:And even the archivated version of the site did not preserve any FTP content.&lt;br /&gt;
:However, I remember listening to both &amp;quot;Dark Future&amp;quot; and &amp;quot;Uncertain Past&amp;quot;...&lt;br /&gt;
:If I recall correctly, these are just alternative names, like &amp;quot;Strikers!&amp;quot;.&lt;br /&gt;
:The only one on Oni Central that was not on the CD is No One Left To Trust.&lt;br /&gt;
:Correct me if I&#039;m wrong, of course, and maybe upload those &amp;quot;missing&amp;quot; two.&lt;br /&gt;
::[[User:Geyser|geyser]] 19:01, 25 February 2008 (CET)&lt;br /&gt;
:On a second thought, no, I probably never heard those 2. Too bad.&lt;br /&gt;
:If you happen to have the MP3 and care to share, just go ahead...&lt;br /&gt;
:Like I said, they&#039;re no longer available for download anywhere.&lt;br /&gt;
::[[User:Geyser|geyser]] 04:41, 26 February 2008 (CET)&lt;br /&gt;
:About &amp;quot;Dark Future&amp;quot; again, it seems that it&#039;s just Trailer in disguise.&lt;br /&gt;
:I don&#039;t know about Uncertain Past, but it was probably redundant too.&lt;br /&gt;
:There must be a reason why Harry only left &amp;quot;No One Left To Trust&amp;quot;...&lt;br /&gt;
:I&#039;ll ask on {{OCF}}.&lt;br /&gt;
::[[User:Geyser|geyser]] 18:00, 27 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
=== Music Preview ===&lt;br /&gt;
Would it be a good idea to have a preview of each song? I made an example page to test an online player I found. The player on the right side is a test video player (that didn&#039;t work) the left side is an MP3 player with some good looking visualizations.&lt;br /&gt;
&lt;br /&gt;
http://rossy.oni2.net/files/videos/test.htm&lt;br /&gt;
&lt;br /&gt;
[[User:RossyMiles|rossy]] 10:11, 10 November 2008 (CET)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Daodan_DLL&amp;diff=13245</id>
		<title>Talk:Daodan DLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Daodan_DLL&amp;diff=13245"/>
		<updated>2008-11-10T06:27:01Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Its cool that my version of Daodan got added to this page (I was going to add it myself, but I never got around to it) but I was wondering, why &amp;quot;Pelles C&amp;quot;? MinGW GCC is a very good compiler. As for assembly, both GCC and Pelles C support inline and external assembly (I don&#039;t know about MASM syntax, although MinGW&#039;s linker can take input from other compilers.) It doesn&#039;t really matter though as both compilers compile C99 and should be relatively compatible.&lt;br /&gt;
:-[[User:RossyMiles|rossy]] 11:22, 9 November 2008 (CET)&lt;br /&gt;
According to SFeLi, GCC doesn&#039;t support fastcalls and Pelles-C does. He said, however, that we could stick to MinGW and emulate fastcalls with libraries written in ASM. I honestly am not familiar with the problem or the workaround, so I can&#039;t give a clear answer. Let&#039;s hope SFeLi is not dead, so he can comment on that when he&#039;s back. In the meantime, of course, just stick with MinGW, and keep those updates coming ;)&lt;br /&gt;
:[[User:Geyser|geyser]] 14:54, 9 November 2008 (CET)&lt;br /&gt;
GCC supports fastcall, if it didn&#039;t then none of my code would work, however if there&#039;s a good reason to use Pelles-C then I&#039;m ok with it. As for updates, when the school certificate&#039;s over, maybe.&lt;br /&gt;
:[[User:RossyMiles|rossy]] 07:06, 10 November 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
The reason I changed C Daodan to replace binkw32.dll instead of adding vtuneapi.dll is that I had to patch a function that was called before vtuneapi was loaded. Turns out that the reason Alt-Tab and the Windows key didn&#039;t work is because the Oni developers specifically disabled them. (this is the part that prints &amp;quot;system sleep disabled, keystroke traps installed&amp;quot; in startup.txt.) The function that prints these is called before vtuneapi is loaded so I had to switch to replacing binkw32.dll. C Daodan still works as vtuneapi.dll however Alt-Tab and the Windows key don&#039;t work when it&#039;s used like this.&lt;br /&gt;
:-[[User:RossyMiles|rossy]] 11:22, 9 November 2008 (CET)&lt;br /&gt;
Point taken about early DLL loading. One thing though: to avoid conflicts with previous versions of the Daodan, maybe prevent Oni from loading vtuneapi.dll, unless you&#039;re doing that already. And another thing, not like it really matters, but Iritscen has been nagging us about it, and just won&#039;t stop: our &amp;quot;press Shift at startup&amp;quot; feature is screwed up, and the reason SFeLi hasn&#039;t fixed it is because the fix has to come before vtuneapi.dll is loaded; would switching to binkw32.dll make it possible to fix that feature? Or maybe it&#039;s completely pointless, because the Daodan already has command-line parameters of its own (uncompatible with the in-engine dialog), and KeyConfig is more than enough to customize controls?&lt;br /&gt;
:[[User:Geyser|geyser]] 14:54, 9 November 2008 (CET)&lt;br /&gt;
:Currently, enabling the command line editor makes it so that the C-Daodan doesn&#039;t work properly. The window\game is never drawn. I know the C-Daodan has command line parameters, I don&#039;t know how they work in relation to Oni.exe&#039;s command line code. Bink32.dll loads after the command line editor. And I can&#039;t find any mention of a control editor in the database. I don&#039;t think any dlls are loaded soon enough, but the engine could (maybe) be patched if it is _really_ neccessary. [[User:Gumby|Gumby]] 23:26, 9 November 2008 (CET)&lt;br /&gt;
::binkw32.dll is loaded before the game is loaded by the windows loader. I kind of sort of hacked the new command line arguments in so even if the box is displayed the new arguments won&#039;t work anyway. [[User:RossyMiles|rossy]] 07:26, 10 November 2008 (CET)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Daodan_DLL&amp;diff=13244</id>
		<title>Talk:Daodan DLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Daodan_DLL&amp;diff=13244"/>
		<updated>2008-11-10T06:26:22Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Its cool that my version of Daodan got added to this page (I was going to add it myself, but I never got around to it) but I was wondering, why &amp;quot;Pelles C&amp;quot;? MinGW GCC is a very good compiler. As for assembly, both GCC and Pelles C support inline and external assembly (I don&#039;t know about MASM syntax, although MinGW&#039;s linker can take input from other compilers.) It doesn&#039;t really matter though as both compilers compile C99 and should be relatively compatible.&lt;br /&gt;
:-[[User:RossyMiles|rossy]] 11:22, 9 November 2008 (CET)&lt;br /&gt;
According to SFeLi, GCC doesn&#039;t support fastcalls and Pelles-C does. He said, however, that we could stick to MinGW and emulate fastcalls with libraries written in ASM. I honestly am not familiar with the problem or the workaround, so I can&#039;t give a clear answer. Let&#039;s hope SFeLi is not dead, so he can comment on that when he&#039;s back. In the meantime, of course, just stick with MinGW, and keep those updates coming ;)&lt;br /&gt;
:[[User:Geyser|geyser]] 14:54, 9 November 2008 (CET)&lt;br /&gt;
GCC supports fastcall, if it didn&#039;t then none of my code would work, however if there&#039;s a good reason to Pelles-C then I&#039;m ok with it. As for updates, when the school certificate&#039;s over, maybe.&lt;br /&gt;
:[[User:RossyMiles|rossy]] 07:06, 10 November 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
The reason I changed C Daodan to replace binkw32.dll instead of adding vtuneapi.dll is that I had to patch a function that was called before vtuneapi was loaded. Turns out that the reason Alt-Tab and the Windows key didn&#039;t work is because the Oni developers specifically disabled them. (this is the part that prints &amp;quot;system sleep disabled, keystroke traps installed&amp;quot; in startup.txt.) The function that prints these is called before vtuneapi is loaded so I had to switch to replacing binkw32.dll. C Daodan still works as vtuneapi.dll however Alt-Tab and the Windows key don&#039;t work when it&#039;s used like this.&lt;br /&gt;
:-[[User:RossyMiles|rossy]] 11:22, 9 November 2008 (CET)&lt;br /&gt;
Point taken about early DLL loading. One thing though: to avoid conflicts with previous versions of the Daodan, maybe prevent Oni from loading vtuneapi.dll, unless you&#039;re doing that already. And another thing, not like it really matters, but Iritscen has been nagging us about it, and just won&#039;t stop: our &amp;quot;press Shift at startup&amp;quot; feature is screwed up, and the reason SFeLi hasn&#039;t fixed it is because the fix has to come before vtuneapi.dll is loaded; would switching to binkw32.dll make it possible to fix that feature? Or maybe it&#039;s completely pointless, because the Daodan already has command-line parameters of its own (uncompatible with the in-engine dialog), and KeyConfig is more than enough to customize controls?&lt;br /&gt;
:[[User:Geyser|geyser]] 14:54, 9 November 2008 (CET)&lt;br /&gt;
:Currently, enabling the command line editor makes it so that the C-Daodan doesn&#039;t work properly. The window\game is never drawn. I know the C-Daodan has command line parameters, I don&#039;t know how they work in relation to Oni.exe&#039;s command line code. Bink32.dll loads after the command line editor. And I can&#039;t find any mention of a control editor in the database. I don&#039;t think any dlls are loaded soon enough, but the engine could (maybe) be patched if it is _really_ neccessary. [[User:Gumby|Gumby]] 23:26, 9 November 2008 (CET)&lt;br /&gt;
::binkw32.dll is loaded before the game is loaded by the windows loader. I kind of sort of hacked the new command line arguments in so even if the box is displayed the new arguments won&#039;t work anyway. [[User:RossyMiles|rossy]] 07:26, 10 November 2008 (CET)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Daodan_DLL&amp;diff=13241</id>
		<title>Talk:Daodan DLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Daodan_DLL&amp;diff=13241"/>
		<updated>2008-11-10T06:19:34Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Its cool that my version of Daodan got added to this page (I was going to add it myself, but I never got around to it) but I was wondering, why &amp;quot;Pelles C&amp;quot;? MinGW GCC is a very good compiler. As for assembly, both GCC and Pelles C support inline and external assembly (I don&#039;t know about MASM syntax, although MinGW&#039;s linker can take input from other compilers.) It doesn&#039;t really matter though as both compilers compile C99 and should be relatively compatible.&lt;br /&gt;
:-[[User:RossyMiles|rossy]] 11:22, 9 November 2008 (CET)&lt;br /&gt;
According to SFeLi, GCC doesn&#039;t support fastcalls and Pelles-C does. He said, however, that we could stick to MinGW and emulate fastcalls with libraries written in ASM. I honestly am not familiar with the problem or the workaround, so I can&#039;t give a clear answer. Let&#039;s hope SFeLi is not dead, so he can comment on that when he&#039;s back. In the meantime, of course, just stick with MinGW, and keep those updates coming ;)&lt;br /&gt;
:[[User:Geyser|geyser]] 14:54, 9 November 2008 (CET)&lt;br /&gt;
GCC supports fastcall, if it didn&#039;t then none of my code would work, if there&#039;s a good reason to Pelles-C then I&#039;m ok with it. As for updates, when the school certificate&#039;s over, maybe.&lt;br /&gt;
:[[User:RossyMiles|rossy]] 07:06, 10 November 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
The reason I changed C Daodan to replace binkw32.dll instead of adding vtuneapi.dll is that I had to patch a function that was called before vtuneapi was loaded. Turns out that the reason Alt-Tab and the Windows key didn&#039;t work is because the Oni developers specifically disabled them. (this is the part that prints &amp;quot;system sleep disabled, keystroke traps installed&amp;quot; in startup.txt.) The function that prints these is called before vtuneapi is loaded so I had to switch to replacing binkw32.dll. C Daodan still works as vtuneapi.dll however Alt-Tab and the Windows key don&#039;t work when it&#039;s used like this.&lt;br /&gt;
:-[[User:RossyMiles|rossy]] 11:22, 9 November 2008 (CET)&lt;br /&gt;
Point taken about early DLL loading. One thing though: to avoid conflicts with previous versions of the Daodan, maybe prevent Oni from loading vtuneapi.dll, unless you&#039;re doing that already. And another thing, not like it really matters, but Iritscen has been nagging us about it, and just won&#039;t stop: our &amp;quot;press Shift at startup&amp;quot; feature is screwed up, and the reason SFeLi hasn&#039;t fixed it is because the fix has to come before vtuneapi.dll is loaded; would switching to binkw32.dll make it possible to fix that feature? Or maybe it&#039;s completely pointless, because the Daodan already has command-line parameters of its own (uncompatible with the in-engine dialog), and KeyConfig is more than enough to customize controls?&lt;br /&gt;
:[[User:Geyser|geyser]] 14:54, 9 November 2008 (CET)&lt;br /&gt;
:Currently, enabling the command line editor makes it so that the C-Daodan doesn&#039;t work properly. The window\game is never drawn. I know the C-Daodan has command line parameters, I don&#039;t know how they work in relation to Oni.exe&#039;s command line code. Bink32.dll loads after the command line editor. And I can&#039;t find any mention of a control editor in the database. I don&#039;t think any dlls are loaded soon enough, but the engine could (maybe) be patched if it is _really_ neccessary. [[User:Gumby|Gumby]] 23:26, 9 November 2008 (CET)&lt;br /&gt;
::binkw32.dll is loaded before the game is loaded by the windows loader.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Daodan_DLL&amp;diff=13240</id>
		<title>Talk:Daodan DLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Daodan_DLL&amp;diff=13240"/>
		<updated>2008-11-10T06:06:18Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Its cool that my version of Daodan got added to this page (I was going to add it myself, but I never got around to it) but I was wondering, why &amp;quot;Pelles C&amp;quot;? MinGW GCC is a very good compiler. As for assembly, both GCC and Pelles C support inline and external assembly (I don&#039;t know about MASM syntax, although MinGW&#039;s linker can take input from other compilers.) It doesn&#039;t really matter though as both compilers compile C99 and should be relatively compatible.&lt;br /&gt;
:-[[User:RossyMiles|rossy]] 11:22, 9 November 2008 (CET)&lt;br /&gt;
According to SFeLi, GCC doesn&#039;t support fastcalls and Pelles-C does. He said, however, that we could stick to MinGW and emulate fastcalls with libraries written in ASM. I honestly am not familiar with the problem or the workaround, so I can&#039;t give a clear answer. Let&#039;s hope SFeLi is not dead, so he can comment on that when he&#039;s back. In the meantime, of course, just stick with MinGW, and keep those updates coming ;)&lt;br /&gt;
:[[User:Geyser|geyser]] 14:54, 9 November 2008 (CET)&lt;br /&gt;
GCC supports fastcall, if it didn&#039;t then none of my code would work. As for updates, when the school certificate&#039;s over, maybe.&lt;br /&gt;
:[[User:RossyMiles|rossy]] 07:06, 10 November 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
The reason I changed C Daodan to replace binkw32.dll instead of adding vtuneapi.dll is that I had to patch a function that was called before vtuneapi was loaded. Turns out that the reason Alt-Tab and the Windows key didn&#039;t work is because the Oni developers specifically disabled them. (this is the part that prints &amp;quot;system sleep disabled, keystroke traps installed&amp;quot; in startup.txt.) The function that prints these is called before vtuneapi is loaded so I had to switch to replacing binkw32.dll. C Daodan still works as vtuneapi.dll however Alt-Tab and the Windows key don&#039;t work when it&#039;s used like this.&lt;br /&gt;
:-[[User:RossyMiles|rossy]] 11:22, 9 November 2008 (CET)&lt;br /&gt;
Point taken about early DLL loading. One thing though: to avoid conflicts with previous versions of the Daodan, maybe prevent Oni from loading vtuneapi.dll, unless you&#039;re doing that already. And another thing, not like it really matters, but Iritscen has been nagging us about it, and just won&#039;t stop: our &amp;quot;press Shift at startup&amp;quot; feature is screwed up, and the reason SFeLi hasn&#039;t fixed it is because the fix has to come before vtuneapi.dll is loaded; would switching to binkw32.dll make it possible to fix that feature? Or maybe it&#039;s completely pointless, because the Daodan already has command-line parameters of its own (uncompatible with the in-engine dialog), and KeyConfig is more than enough to customize controls?&lt;br /&gt;
:[[User:Geyser|geyser]] 14:54, 9 November 2008 (CET)&lt;br /&gt;
:Currently, enabling the command line editor makes it so that the C-Daodan doesn&#039;t work properly. The window\game is never drawn. I know the C-Daodan has command line parameters, I don&#039;t know how they work in relation to Oni.exe&#039;s command line code. Bink32.dll loads after the command line editor. And I can&#039;t find any mention of a control editor in the database. I don&#039;t think any dlls are loaded soon enough, but the engine could (maybe) be patched if it is _really_ neccessary. [[User:Gumby|Gumby]] 23:26, 9 November 2008 (CET)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Daodan_DLL&amp;diff=13193</id>
		<title>Talk:Daodan DLL</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Daodan_DLL&amp;diff=13193"/>
		<updated>2008-11-09T10:22:49Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: New page: Its cool that my version of Daodan got added to this page (I was going to add it myself, but I never got around to it) but I was wondering, why &amp;quot;Pelles C&amp;quot;? MinGW GCC is a very good compile...&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Its cool that my version of Daodan got added to this page (I was going to add it myself, but I never got around to it) but I was wondering, why &amp;quot;Pelles C&amp;quot;? MinGW GCC is a very good compiler. As for assembly, both GCC and Pelles C support inline and external assembly (I don&#039;t know about MASM syntax, although MinGW&#039;s linker can take input from other compilers.) It doesn&#039;t really matter though as both compilers compile C99 and should be relatively compatible.&lt;br /&gt;
&lt;br /&gt;
The reason I changed C Daodan to replace binkw32.dll instead of adding vtuneapi.dll is that I had to patch a function that was called before vtuneapi was loaded. Turns out that the reason Alt-Tab and the Windows key didn&#039;t work is because the Oni developers specifically disabled them. (this is the part that prints &amp;quot;system sleep disabled, keystroke traps installed&amp;quot; in startup.txt.) The function that prints these is called before vtuneapi is loaded so I had to switch to replacing binkw32.dll. C Daodan still works as vtuneapi.dll however Alt-Tab and the Windows key don&#039;t work when it&#039;s used like this.&lt;br /&gt;
&lt;br /&gt;
:-[[User:RossyMiles|rossy]] 11:22, 9 November 2008 (CET)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Win)&amp;diff=13140</id>
		<title>Talk:Oni engine patches (Win)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Win)&amp;diff=13140"/>
		<updated>2008-11-08T00:51:14Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Propose moving this to Oni Engine Patches (Win). --[[User:Gumby|Gumby]] 08:36, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Propose decapitalizing it to &amp;quot;Oni engine patches&amp;quot;. --[[User:Geyser|geyser]] 15:35, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Merging &amp;quot;(Win)&amp;quot; and &amp;quot;(Mac)&amp;quot; in this case would probably be a bad idea. However, before it&#039;s too late, I&#039;d like to point out the PC demo as a 3rd engine for which we ought to maintain a set of patches. Adapt naming convention as necessary. --[[User:Geyser|geyser]] 15:35, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Done-diddly-one&amp;quot;, as Flanders would say. Demo patches for PC or Mac could hypothetically go in a second section with its own table on the (Win) and (Mac) pages, or if we wanted a separate page, something like &amp;lt;nowiki&amp;gt;[[Oni engine patches (Win demo)]]&amp;lt;/nowiki&amp;gt;. --[[User:Iritscen|Iritscen]] 19:04, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
I was wondering, is it possible at all to get the PC east engine to run with PC demo data. I tried with OniSplit and got a blam but I probably did something wrong. If we could get that to work then the demo engine would be redundant. [[User:RossyMiles|rossy]] 07:24, 9 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
::The demo engine uses Macesque file structures: I.E.: sep files. The legality of rereleasing the demo is...well pretty legal. You can convert Mac files to PC files already, so I don&#039;t see that big of a deal of releasing a dat\raw version of the demo, but why bother? [[User:Gumby|Gumby]] 09:32, 9 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::I just want to only have to support one engine. It would be a lot easier if the modding community only had to focus on a single PC engine. Modifications to that engine would be accessible by legal owners of the full game as well as users of the demo. At the moment, patches like the projectile awareness patch are only avaiable for the standard and buka engines. [[User:RossyMiles|rossy]] 11:12, 9 October 2008 (CEST)&lt;br /&gt;
::::OK, I&#039;ll be providing an Edition bundle for the PC demo, that will repack the stuff with -nosep. I never thought of it that way, but it sure saves a lot of trouble. Now if we could only get rid of Omni&#039;s engine the same way... ;)  P.S. Rossy, I tried to send you the link to Neo&#039;s IDA database, twice, but apparently you didn&#039;t get those mails (spam filter or something). It doesn&#039;t matter now since you got the database anyway, but I still wonder if your mail server could cause those problems in the future... I&#039;m asking SFeLi to share his databases, and I&#039;m looking forward to multiplayer dev talk. Woot. --[[User:Geyser|geyser]] 17:39, 9 October 2008 (CEST)&lt;br /&gt;
:::::It turns out the last email went through, the other one is in Outlooks &amp;quot;Junk E-mail&amp;quot; folder, I just forgot to check my email yesterday. I added you to my &amp;quot;Safe Senders List&amp;quot; so hopefully that wont happen again.&lt;br /&gt;
:::::On the subject of the edition, I installed it without step_0004.bat because at the time, I hadn&#039;t finished the original game on hard mode and I kinda thought I should before trying the modifications provided by the edition. I don&#039;t know whether this problem still exists now, but all the character classes were mixed up, for example, the game kept on spawning blue strikers in Syndicate Warehouse and mini strikers in TCTF HQ.&lt;br /&gt;
:::::As for the OMNI engine, wouldn&#039;t the PC version of Oni run faster in Wine on an x86 Mac. AFAIK the only thing that dosen&#039;t work in wine is the sound. That might be fixable or it might already work in Wine 1.0.&lt;br /&gt;
:::::[[User:RossyMiles|rossy]] 01:55, 10 October 2008 (CEST)&lt;br /&gt;
::::::Blue Strikers are normal in the Warehouse. :) The ministrikers are fixed, depending on the version you use, and what steps you took out. [[User:Gumby|Gumby]] 02:04, 10 October 2008 (CEST)&lt;br /&gt;
:::::&amp;quot;Safe Sender&amp;quot; is good. The next thing for you would be to get a YIM account (you can register online and use Pidgin as a client). Then you can have dev conferences with neo and gumby and sfeli and alloc and who not.&lt;br /&gt;
:::::Iritscen has been dissing Wine and Wine-based environments like CrossOver for some reason. If it works, I suppose he&#039;d tell us, but we&#039;ll have to talk him into trying again and again ^_^&lt;br /&gt;
:::::The mixed-up characters you saw are just a consequence of ONCC becoming available globally, and looked up by ONCV as alternatives or upgrades. Thus, the blue Strikers in the warehouse are actually normal: they&#039;re upgrades, spawned only on hard, and they merely fail to spawn in the original Oni because the required ONCC is missing. Other stuff like that is the &amp;quot;Hunt&amp;quot; theme playing in {{C|12}} SP2: it was supposed to play there, but the SNDD were only in {{C|13}} and now they&#039;re global. The mini-strikers are part of the same random pool as full-size easy Strikers, hence the mess (fixed with step0004.bat). Other &amp;quot;Easter eggs&amp;quot; that you missed include a Karen instead of a TCTF grunt in {{C|3}} and a Striker instead of Karen in {{C|13}} - these are more tricky (they actually reveal screwed-up ONCC links that went unnoticed with the original Oni). All those side effects of globalization have been fixed in step 4, I think. But thanks for pointing them out anyway ^_^&lt;br /&gt;
::::::[[User:Geyser|geyser]] 06:08, 10 October 2008 (CEST)&lt;br /&gt;
:::::::Done, my YIM account is rossy2401 at rocketmail.com.&lt;br /&gt;
:::::::[[User:RossyMiles|rossy]] 11:23, 10 October 2008 (CEST)&lt;br /&gt;
Hey, added &amp;quot;chr_lms&amp;quot; just for fun. Is there anything useful that I can add?[[User:Gumby|Gumby]] 10:22, 7 November 2008 (CET)&lt;br /&gt;
:Hmm, with the Daodan DLL you don&#039;t need to replace existing script commands to add new ones. If I remember correctly, you can just register new BSL variables from daodan_init. However, we have the School Certificate exams on Monday so I wont be able to help until Tuesday afternoon. [[User:RossyMiles|rossy]] 01:51, 8 November 2008 (CET)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Mac_PPC)/changelog&amp;diff=12951</id>
		<title>Talk:Oni engine patches (Mac PPC)/changelog</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Mac_PPC)/changelog&amp;diff=12951"/>
		<updated>2008-10-21T10:40:41Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;quot;at 0x16E834 Replaced chr_focus with chr_health&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Why would you do that? Chr_focus is very useful. [[User:Gumby|Gumby]] 10:24, 20 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
When it comes to replacing functions, you have to consider the length of the name and signature string.  chr_health had a longer signature string &amp;quot;chr_index:int [hit_points:int | ]&amp;quot; than chr_focus &amp;quot;chr_index:int&amp;quot;  So it will easier to find another function to replace chr_focus  with the shorter signature string. [[User:EdT|EdT]]&lt;br /&gt;
&lt;br /&gt;
Hey, why would you want env_ray_number anyway? You cannot set it higher than 20 and you don&#039;t want to set it lower than 20 either (unless you&#039;re CPU isn&#039;t fast enough :) ). [[User:Neo|Neo]]&lt;br /&gt;
&lt;br /&gt;
Are the signature strings actually used by the engine? I assume there would be no problem if they were left blank. [[User:RossyMiles|rossy]] 12:40, 21 October 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Flatline/Dev_Diary&amp;diff=12928</id>
		<title>Flatline/Dev Diary</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Flatline/Dev_Diary&amp;diff=12928"/>
		<updated>2008-10-19T11:17:23Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: i done a thing too&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is just gonna be where I put all the stuff that is done. I like having a place to write down stuff.&lt;br /&gt;
&lt;br /&gt;
Happy {{LOCALDAYNAME}}.&lt;br /&gt;
&lt;br /&gt;
==Autoit stage==&lt;br /&gt;
&lt;br /&gt;
===October 16, 2008===&lt;br /&gt;
&lt;br /&gt;
====Done====&lt;br /&gt;
*GameState Offset&lt;br /&gt;
*Character Offsetts&lt;br /&gt;
*Key+mouse input offsets&lt;br /&gt;
*Turning offset (mostly...)&lt;br /&gt;
*Local game linking&lt;br /&gt;
*Location coordinates&lt;br /&gt;
&lt;br /&gt;
====To-Do====&lt;br /&gt;
*Finish Changing over to moving other characters instead of just the corresponding Konoko&lt;br /&gt;
*Fix glitch involving keyboard attack inputs being broken&lt;br /&gt;
*Apply rotation pointers to other characters&lt;br /&gt;
&lt;br /&gt;
===October 17, 2008===&lt;br /&gt;
&lt;br /&gt;
====Done (Today)====&lt;br /&gt;
*Linked Active+Normal Character structs&lt;br /&gt;
*Finished transferring over to pointers and other chracters (including rotation)&lt;br /&gt;
*Fixed input glitch&lt;br /&gt;
&lt;br /&gt;
====To-Do====&lt;br /&gt;
*Waiting on Rossy to start on network code.&lt;br /&gt;
*Transfer over to C and MP logic stuff.&lt;br /&gt;
&lt;br /&gt;
===October 18, 2008===&lt;br /&gt;
&lt;br /&gt;
====Done (Today)====&lt;br /&gt;
&lt;br /&gt;
*Tested, found geyser couldn&#039;t run it&lt;br /&gt;
*Tested more, found Neo also couldn&#039;t run it&lt;br /&gt;
*Fixed an issue with not linking to ActiveKonoko&#039;s struct&lt;br /&gt;
*Fixed a pointer I forgot to make &amp;gt;_&amp;lt;&lt;br /&gt;
*Is now working on Neo&#039;s computer&lt;br /&gt;
&lt;br /&gt;
====Testing====&lt;br /&gt;
*Gumby - works&lt;br /&gt;
*Paradox - works, although attacks aren&#039;t working. Probably due to slow processor speed.&lt;br /&gt;
*Geyser - &#039;&#039;&#039;FIXED&#039;&#039;&#039; Laggy, but normal.&lt;br /&gt;
*Neo - &#039;&#039;&#039;FIXED&#039;&#039;&#039; is working now, albiet a bit laggy&lt;br /&gt;
&lt;br /&gt;
===October 19, 2008===&lt;br /&gt;
&lt;br /&gt;
====Done (Today)====&lt;br /&gt;
&lt;br /&gt;
*Started network code in C.&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Win)&amp;diff=12507</id>
		<title>Talk:Oni engine patches (Win)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Win)&amp;diff=12507"/>
		<updated>2008-10-10T09:23:00Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Propose moving this to Oni Engine Patches (Win). --[[User:Gumby|Gumby]] 08:36, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Propose decapitalizing it to &amp;quot;Oni engine patches&amp;quot;. --[[User:Geyser|geyser]] 15:35, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Merging &amp;quot;(Win)&amp;quot; and &amp;quot;(Mac)&amp;quot; in this case would probably be a bad idea. However, before it&#039;s too late, I&#039;d like to point out the PC demo as a 3rd engine for which we ought to maintain a set of patches. Adapt naming convention as necessary. --[[User:Geyser|geyser]] 15:35, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Done-diddly-one&amp;quot;, as Flanders would say. Demo patches for PC or Mac could hypothetically go in a second section with its own table on the (Win) and (Mac) pages, or if we wanted a separate page, something like &amp;lt;nowiki&amp;gt;[[Oni engine patches (Win demo)]]&amp;lt;/nowiki&amp;gt;. --[[User:Iritscen|Iritscen]] 19:04, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
I was wondering, is it possible at all to get the PC east engine to run with PC demo data. I tried with OniSplit and got a blam but I probably did something wrong. If we could get that to work then the demo engine would be redundant. [[User:RossyMiles|rossy]] 07:24, 9 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
::The demo engine uses Macesque file structures: I.E.: sep files. The legality of rereleasing the demo is...well pretty legal. You can convert Mac files to PC files already, so I don&#039;t see that big of a deal of releasing a dat\raw version of the demo, but why bother? [[User:Gumby|Gumby]] 09:32, 9 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::I just want to only have to support one engine. It would be a lot easier if the modding community only had to focus on a single PC engine. Modifications to that engine would be accessible by legal owners of the full game as well as users of the demo. At the moment, patches like the projectile awareness patch are only avaiable for the standard and buka engines. [[User:RossyMiles|rossy]] 11:12, 9 October 2008 (CEST)&lt;br /&gt;
::::OK, I&#039;ll be providing an Edition bundle for the PC demo, that will repack the stuff with -nosep. I never thought of it that way, but it sure saves a lot of trouble. Now if we could only get rid of Omni&#039;s engine the same way... ;)  P.S. Rossy, I tried to send you the link to Neo&#039;s IDA database, twice, but apparently you didn&#039;t get those mails (spam filter or something). It doesn&#039;t matter now since you got the database anyway, but I still wonder if your mail server could cause those problems in the future... I&#039;m asking SFeLi to share his databases, and I&#039;m looking forward to multiplayer dev talk. Woot. --[[User:Geyser|geyser]] 17:39, 9 October 2008 (CEST)&lt;br /&gt;
:::::It turns out the last email went through, the other one is in Outlooks &amp;quot;Junk E-mail&amp;quot; folder, I just forgot to check my email yesterday. I added you to my &amp;quot;Safe Senders List&amp;quot; so hopefully that wont happen again.&lt;br /&gt;
:::::On the subject of the edition, I installed it without step_0004.bat because at the time, I hadn&#039;t finished the original game on hard mode and I kinda thought I should before trying the modifications provided by the edition. I don&#039;t know whether this problem still exists now, but all the character classes were mixed up, for example, the game kept on spawning blue strikers in Syndicate Warehouse and mini strikers in TCTF HQ.&lt;br /&gt;
:::::As for the OMNI engine, wouldn&#039;t the PC version of Oni run faster in Wine on an x86 Mac. AFAIK the only thing that dosen&#039;t work in wine is the sound. That might be fixable or it might already work in Wine 1.0.&lt;br /&gt;
:::::[[User:RossyMiles|rossy]] 01:55, 10 October 2008 (CEST)&lt;br /&gt;
::::::Blue Strikers are normal in the Warehouse. :) The ministrikers are fixed, depending on the version you use, and what steps you took out. [[User:Gumby|Gumby]] 02:04, 10 October 2008 (CEST)&lt;br /&gt;
:::::&amp;quot;Safe Sender&amp;quot; is good. The next thing for you would be to get a YIM account (you can register online and use Pidgin as a client). Then you can have dev conferences with neo and gumby and sfeli and alloc and who not.&lt;br /&gt;
:::::Iritscen has been dissing Wine and Wine-based environments like CrossOver for some reason. If it works, I suppose he&#039;d tell us, but we&#039;ll have to talk him into trying again and again ^_^&lt;br /&gt;
:::::The mixed-up characters you saw are just a consequence of ONCC becoming available globally, and looked up by ONCV as alternatives or upgrades. Thus, the blue Strikers in the warehouse are actually normal: they&#039;re upgrades, spawned only on hard, and they merely fail to spawn in the original Oni because the required ONCC is missing. Other stuff like that is the &amp;quot;Hunt&amp;quot; theme playing in {{C|12}} SP2: it was supposed to play there, but the SNDD were only in {{C|13}} and now they&#039;re global. The mini-strikers are part of the same random pool as full-size easy Strikers, hence the mess (fixed with step0004.bat). Other &amp;quot;Easter eggs&amp;quot; that you missed include a Karen instead of a TCTF grunt in {{C|3}} and a Striker instead of Karen in {{C|13}} - these are more tricky (they actually reveal screwed-up ONCC links that went unnoticed with the original Oni). All those side effects of globalization have been fixed in step 4, I think. But thanks for pointing them out anyway ^_^&lt;br /&gt;
::::::[[User:Geyser|geyser]] 06:08, 10 October 2008 (CEST)&lt;br /&gt;
:::::::Done, my YIM account is rossy2401 at rocketmail.com.&lt;br /&gt;
:::::::[[User:RossyMiles|rossy]] 11:23, 10 October 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Mac_PPC)&amp;diff=12506</id>
		<title>Talk:Oni engine patches (Mac PPC)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Mac_PPC)&amp;diff=12506"/>
		<updated>2008-10-10T09:18:58Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: /* Variables */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Error messages==&lt;br /&gt;
Just tested the upgrade for 1024x1024 and Oni crashed. First of all OniSplit works fine with a 1024x1024 targa image, I can import and export.&lt;br /&gt;
&lt;br /&gt;
When I imported a 1024x1024 image (delorean.tga) I got the level 4 splash screen, but then I got a black screen, I had to force quit Oni.  So no crash report.  Next I did the same image at 512x512, same result, except this time I got Oni&#039;s crash report.  Here it is:&lt;br /&gt;
&lt;br /&gt;
 Process: Oni (1.0 (Mac OS X) (v1.36) (01/28/03))&lt;br /&gt;
 exception = 0x00000001, code = 0x00063328;0x00000001;0x88428882;&lt;br /&gt;
 &lt;br /&gt;
 5 threads:&lt;br /&gt;
 Thread 0:&lt;br /&gt;
 srr0: 0x9000b348  srr1: 0x0000d030   cr: 0x24022024  xer: 0x00000000  lr: 0x9000b29c ctr: 0x9000b340&lt;br /&gt;
 r0: 0xffffffe1  r8: 0x00000000  r16: 0x00000000  r24: 0xf0182840&lt;br /&gt;
 r1: 0xf0182770  r9: 0x00000000  r17: 0x00000000  r25: 0x00000450&lt;br /&gt;
 r2: 0xa1b1c1d3  r10: 0x91444fa8  r18: 0x00006803  r26: 0x00006603&lt;br /&gt;
 r3: 0xf0182840  r11: 0xa0006a28  r19: 0x00000000  r27: 0x00000000&lt;br /&gt;
 r4: 0x03000006  r12: 0x9000b340  r20: 0x05c8046a  r28: 0x00000000&lt;br /&gt;
 r5: 0x00000000  r13: 0x00000000  r21: 0x177348d1  r29: 0x03000006&lt;br /&gt;
 r6: 0x00000450  r14: 0x00000000  r22: 0x0063e7b8  r30: 0x03000006&lt;br /&gt;
 r7: 0x00006603  r15: 0x00000001  r23: 0x00000000  r31: 0x907de670&lt;br /&gt;
    0 -- 0x9000b348 -- _mach_msg_trap&lt;br /&gt;
    1 -- 0x9000b29c -- _mach_msg&lt;br /&gt;
    2 -- 0x907de998 -- ___CFRunLoopRun&lt;br /&gt;
    3 -- 0x907de29c -- _CFRunLoopRunSpecific&lt;br /&gt;
    4 -- 0x91458524 -- __ZN10HALRunLoop9OwnThreadEPv&lt;br /&gt;
    5 -- 0x914582c4 -- __ZN9CAPThread5EntryEPS_&lt;br /&gt;
    6 -- 0x9002bd08 -- __pthread_body&lt;br /&gt;
 &lt;br /&gt;
 Thread 1:&lt;br /&gt;
 srr0: 0x00063328  srr1: 0x0000f030   cr: 0x84000248  xer: 0x00000004  lr: 0x0012aec8 ctr: 0x0b127490&lt;br /&gt;
 r0: 0x0012aec8  r8: 0x00186418  r16: 0x00000000  r24: 0x00000000&lt;br /&gt;
 r1: 0xbffff9e0  r9: 0x88428842  r17: 0x00000000  r25: 0x00195f6d&lt;br /&gt;
 r2: 0x0b207498  r10: 0x0b127498  r18: 0x00000000  r26: 0x00000000&lt;br /&gt;
 r3: 0x00000000  r11: 0x0187de20  r19: 0x00000000  r27: 0x00000000&lt;br /&gt;
 r4: 0x000003fc  r12: 0x00063300  r20: 0x00000000  r28: 0xbffffb28&lt;br /&gt;
 r5: 0x000003fc  r13: 0x00000000  r21: 0x00000000  r29: 0x001910bc&lt;br /&gt;
 r6: 0x0019624c  r14: 0x00000000  r22: 0x00000000  r30: 0x00218c3c&lt;br /&gt;
 r7: 0x43300000  r15: 0x00000000  r23: 0x00000000  r31: 0x0012afb4&lt;br /&gt;
    0 -- 0x00063328 -- _ONrGameState_GetEnvironment&lt;br /&gt;
    1 -- 0x0012aec8 -- _P3iDisplayDecals&lt;br /&gt;
    2 -- 0x0012afc4 -- _P3rDisplayStaticDecals&lt;br /&gt;
    3 -- 0x00062b38 -- _ONiGameState_Display_Reflectable&lt;br /&gt;
    4 -- 0x00062d20 -- _ONrGameState_Display&lt;br /&gt;
    5 -- 0x00003d48 -- _ONiRunGame&lt;br /&gt;
    6 -- 0x00004610 -- _ONiMain&lt;br /&gt;
    7 -- 0x0000470c -- _main&lt;br /&gt;
    8 -- 0x00002b40 -- __start&lt;br /&gt;
    9 -- 0x00002970 -- start&lt;br /&gt;
 &lt;br /&gt;
 Thread 2:&lt;br /&gt;
 srr0: 0x90054388  srr1: 0x0200f030   cr: 0x24008244  xer: 0x00000000  lr: 0x90070be8 ctr: 0x90054380&lt;br /&gt;
 r0: 0xffffffd9  r8: 0x91468918  r16: 0x00000000  r24: 0x00000000&lt;br /&gt;
 r1: 0xf0284b00  r9: 0xa0001fac  r17: 0x00000000  r25: 0xa00009dc&lt;br /&gt;
 r2: 0x00000001  r10: 0x00acc0d9  r18: 0x00000000  r26: 0x0063ff94&lt;br /&gt;
 r3: 0x00000031  r11: 0xa0006be0  r19: 0x00000000  r27: 0x0063ffc0&lt;br /&gt;
 r4: 0x00002f03  r12: 0x90054380  r20: 0x00000000  r28: 0xf0284bb0&lt;br /&gt;
 r5: 0x00000000  r13: 0x00000000  r21: 0x00000000  r29: 0xa0001fac&lt;br /&gt;
 r6: 0x00acc0d9  r14: 0x00000000  r22: 0x00000000  r30: 0xa0001fac&lt;br /&gt;
 r7: 0xf0284d58  r15: 0x00000000  r23: 0x00000000  r31: 0x900709dc&lt;br /&gt;
    0 -- 0x90054388 -- _semaphore_timedwait_signal_trap&lt;br /&gt;
    1 -- 0x90070be8 -- _pthread_cond_timedwait_relative_np&lt;br /&gt;
    2 -- 0x914696ac -- __ZN7CAGuard7WaitForEy&lt;br /&gt;
    3 -- 0x914695bc -- __ZN7CAGuard9WaitUntilEy&lt;br /&gt;
    4 -- 0x91467800 -- __ZN11HP_IOThread8WorkLoopEv&lt;br /&gt;
    5 -- 0x91467498 -- __ZN11HP_IOThread11ThreadEntryEPS_&lt;br /&gt;
    6 -- 0x914582c4 -- __ZN9CAPThread5EntryEPS_&lt;br /&gt;
    7 -- 0x9002bd08 -- __pthread_body&lt;br /&gt;
 &lt;br /&gt;
 Thread 3:&lt;br /&gt;
 srr0: 0x9003288c  srr1: 0x0000d030   cr: 0x82000002  xer: 0x00000000  lr: 0x33332814 ctr: 0x90032880&lt;br /&gt;
 r0: 0x00000007  r8: 0x00000000  r16: 0x00000000  r24: 0x00000000&lt;br /&gt;
 r1: 0xf00807d0  r9: 0xa0010204  r17: 0x00000000  r25: 0x00000000&lt;br /&gt;
 r2: 0x000000d9  r10: 0x90032824  r18: 0x00000000  r26: 0xf0080bec&lt;br /&gt;
 r3: 0x00005997  r11: 0x42000008  r19: 0x00000000  r27: 0x00063328&lt;br /&gt;
 r4: 0x00000000  r12: 0x90032880  r20: 0x00000000  r28: 0x00000001&lt;br /&gt;
 r5: 0x00000000  r13: 0x00000000  r21: 0x00000000  r29: 0x00005997&lt;br /&gt;
 r6: 0x00000000  r14: 0x00000000  r22: 0x00000000  r30: 0x00000002&lt;br /&gt;
 r7: 0x00000000  r15: 0x00000000  r23: 0x00000000  r31: 0x333325c8&lt;br /&gt;
    0 -- 0x9003288c -- _wait4&lt;br /&gt;
    1 -- 0x33332814 -- _OCCHandleException&lt;br /&gt;
    2 -- 0x33331e34 -- _OCCExc_catch_exception_raise_state_identity&lt;br /&gt;
    3 -- 0x333329cc -- __Xexception_raise_state_identity&lt;br /&gt;
    4 -- 0x33332adc -- _OCCExc_server&lt;br /&gt;
    5 -- 0x33331ee0 -- +[OCCCrashCatcher(MachPrivate) _handleExceptions]&lt;br /&gt;
    6 -- 0x92bf6118 -- _forkThreadForFunction&lt;br /&gt;
    7 -- 0x9002bd08 -- __pthread_body&lt;br /&gt;
 &lt;br /&gt;
 Thread 4:&lt;br /&gt;
 srr0: 0x9002c3c8  srr1: 0x0000f030   cr: 0x24000084  xer: 0x00000000  lr: 0x90030eac ctr: 0x9002c3c0&lt;br /&gt;
 r0: 0xffffffdb  r8: 0xf0101a00  r16: 0x00000000  r24: 0x00000000&lt;br /&gt;
 r1: 0xf0101c80  r9: 0xa0001fac  r17: 0x00000000  r25: 0x00000000&lt;br /&gt;
 r2: 0x00000001  r10: 0x90a3f628  r18: 0x00000000  r26: 0xa0000cdc&lt;br /&gt;
 r3: 0x00003003  r11: 0xa0006bf4  r19: 0x00000000  r27: 0x00627168&lt;br /&gt;
 r4: 0x00002d03  r12: 0x9002c3c0  r20: 0x00000000  r28: 0xa0001fac&lt;br /&gt;
 r5: 0x000003e8  r13: 0x00000000  r21: 0x00000000  r29: 0x00627194&lt;br /&gt;
 r6: 0xffffffff  r14: 0x00000000  r22: 0x00000000  r30: 0xa0001fac&lt;br /&gt;
 r7: 0x000000ff  r15: 0x00000000  r23: 0x00000000  r31: 0x90030cdc&lt;br /&gt;
    0 -- 0x9002c3c8 -- _semaphore_wait_signal_trap&lt;br /&gt;
    1 -- 0x90030eac -- _pthread_cond_wait&lt;br /&gt;
    2 -- 0x92bfd284 -- -[NSConditionLock lockWhenCondition:]&lt;br /&gt;
    3 -- 0x001548a4 -- -[SoundChannelProcessor(Private) _processQueue]&lt;br /&gt;
    4 -- 0x0015483c -- -[SoundChannelProcessor processQueueForever:]&lt;br /&gt;
    5 -- 0x92bf6118 -- _forkThreadForFunction&lt;br /&gt;
    6 -- 0x9002bd08 -- __pthread_body&lt;br /&gt;
::;Ed&lt;br /&gt;
:Hm, I didn&#039;t notice you had tried 512x512 before and still got a crash. Oh well... &amp;quot;the truth is somewhere completely different&amp;quot;. Sorry.&lt;br /&gt;
::[[User:Geyser|geyser]] 11:40, 13 August 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
::Maybe this will be a clue, when using the new hex of 10, I was able to start level 4.  Oni only crashed when the delorean (Using the new 512x512 texture) came into view.  Previously, with the hex at 40, Oni crashed right after the splash screen. [[User:EdT|EdT]] 15:49, 13 August 2008 (CEST)&lt;br /&gt;
::I have tested some more on my side and it turned out that the mysterious crash for 1024x1024 textures was some kind of user error (like forgetting to save or something equally stupid). So 1024x1024 works just fine on PC now, and there is thus no similarity between our cases anymore. Also, the crash right after the splashscreen (which one, BTW? intro splashscreen of a level?) seems very suspicious. So, could you please: 1) double-check that you&#039;re changing stuff at the right address; 2) let us have a look at the engine after you patched it. --[[User:Geyser|geyser]] 21:48, 13 August 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::I tried the 512 patch on a fresh unpatched version of Oni.  Same result.  I can start level 4, move around, but when I turn to look at the Delorean, Oni crashes.  I&#039;m using the files you provided with the new M3GM and OBAN files. However, if I change TXMPdelorean to 256x256, no crash.  When I used the previous patch of 40, then Oni would crash after the splash screen for level 4.  Note: in both cases, I had imported the TXMPdelorean file into level4 not level0.  Here is the patched engine: http://edt.oni2.net/files/Oni512.zip [[User:EdT|EdT]] 01:14, 14 August 2008 (CEST)&lt;br /&gt;
::::Sorry for the late reply. Let&#039;s run a clean experiment on your side while we double-check OMNI&#039;s engine:&lt;br /&gt;
:::#Try and import another large texture than the DeLorean&#039;s (a skybox, a poster, Master Chief, anything) and test this other large texture without involving the DeLorean at all. Make sure that you rule out everything else that may make Oni crash (e.g., an old M3GM).&lt;br /&gt;
:::#As for the DeLorean, make sure its M3GM was imported with a recent version of OniSplit: it could be that it suffers from the same issue as the one that used to plague early TRBS import (i.e., it may be missing extra storage space at the end of the TXCA).&lt;br /&gt;
::::Let us know if it still crashes for the &amp;quot;clean experiment&amp;quot; (just a texture replaced with a large one). And oh, if it crashes, send us the TXMP, just in case.&lt;br /&gt;
:::::[[User:Geyser|geyser]] 15:33, 21 August 2008 (CEST)&lt;br /&gt;
::::::hmmm, time for a stupid question, what is the option in OniSplit to create a 512x512 TXMP?  I just tried to import a 512x512 texture, but when I exported that file it was 256x256. I imported these files: http://edt.oni2.net/AE_Files/TXMPAIR_FLOOR002.tga and http://edt.oni2.net/AE_Files/TXMPPOSTER1.tga for the Airport lobby floor and poster[[User:EdT|EdT]] 23:52, 21 August 2008 (CEST)&lt;br /&gt;
::::::So you mean that all this time you were in fact letting OniSplit downsample your textures to 256x256? Then I really don&#039;t understand what about the texture may have caused the crashes you reported. The option for disabling the auto-downsampling (and thus retaining the native size of your picture) is &#039;&#039;&#039;&#039;&#039;-large&#039;&#039;&#039;&#039;&#039;, e.g.: &#039;&#039;&#039;&#039;&#039;OniSplit.exe -create:txmp TXMPcreated -format:bgr32 -large TXMPPOSTER1.tga&#039;&#039;&#039;&#039;&#039; --[[User:Geyser|geyser]] 00:24, 22 August 2008 (CEST)&lt;br /&gt;
:::::::No, that&#039;s not the case. The first account with the 1024x1024, I used the &amp;quot;-large&amp;quot; option (But today I forgot about that command)  With the Delorean crash I used your TXMP .oni file which was 512x512.  Anyways, now I used the -large option and imported the file TXMPAIR_FLOOR002.tga as brg555.  As Oni was in the process of loading level 4, it crashed.  I replaced that with a 256x256 version, no crash.  Next I imported TXMPPOSTER1.tga as brg32, Oni crashed as it was loading level 4, replaced with 256x256, back to normal. [[User:EdT|EdT]] 01:01, 22 August 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Hmm, about the Shift key not being &#039;accessible&#039;... I actually never noticed before that one cannot type capital letters on the command line, and if I did notice it I would have assumed the PC version was the same. So, one point and one question:&lt;br /&gt;
*It&#039;s not exactly true that the Shift key is not accessible or not recognized, because I can type important characters like the underscore and parentheses. It&#039;s merely that uppercase letters cannot be typed.&lt;br /&gt;
*Is the lack of access to uppercase letters an issue? This is total news to me, so naturally I am curious as to whether this has been a problem on the Mac side of things that I never knew about. --[[User:Iritscen|Iritscen]] 03:04, 7 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:The PC command line has no major issues: uppercase letters can be entered both on PC and PC demo. There are occasional glitches with autocompletion and some inconsistencies with multithreading (i.e., &amp;quot;fork&amp;quot;ing may not work as expected when launched from the console). Also, the command line is not displayed properly or at all at large resolutions.&lt;br /&gt;
:Thanks for the disambiguation about the Shift key. Ed didn&#039;t make it clear how exactly it didn&#039;t work. Do you confirm that the &#039;&#039;only&#039;&#039; characters that can&#039;t be entered are uppercase letters? Also, Ed, how long have your 3 &amp;quot;known issues&amp;quot; been around? Right from the moment when the Dev Mode was unlocked?&lt;br /&gt;
:The original variables and functions (preset of scripted) are all lowercase, but team names are capitalized, and many AI names contain uppercase letters as well. So lowercase-only input can be frustrating. The obvious workaround is to use scripts more, so that all command line statements can be lowercase.&lt;br /&gt;
::[[User:Geyser|geyser]] 03:36, 7 October 2008 (CEST)&lt;br /&gt;
:::Just confirmed it to make sure; only a-z cannot be modified by the Shift key, i.e., become uppercase. All other characters that require Shift can be typed. And thanks for the answer on what uses uppercase, the team names and AI names slipped my mind. I tested that as well, hoping that the Mac would ignore case, but alas; the console indeed does not recognize any team names without the uppercase letters. --[[User:Iritscen|Iritscen]] 04:02, 7 October 2008 (CEST)&lt;br /&gt;
:::::::Iritscen, you beat me to it. The SHIFT key does not work in Dev Mode to enter uppercase letters (I should have been more specific, sorry).  How long have I&#039;ve known these issues?  The SHIFT key problem was discovered when you, (geyser) asked me to enter some code in the console, I forgot when that happened.  The Window mode issue was known as soon as it was figured out how to run Omni group&#039;s version in a window. I&#039;m sure this was mentioned at some point, either here or at OCF. The problems with the Numpad key was known back in Jan 2007 and you suggested using the [http://wiki.oni2.net/User_talk:EdT key_config.txt file ] [[User:EdT|EdT]] 04:11, 7 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Patches==&lt;br /&gt;
;Update on large textures&lt;br /&gt;
:Sorry, but we still haven&#039;t got a clear idea of what&#039;s going on. Ed&#039;s patch is correct, yet the crash log indicates that texture data was written on top of other stuff (i.e. outside of its supposed buffer). This probably means there&#039;s another texture buffer somewhere, specific to the Mac build. And we haven&#039;t tried looking for it yet. --[[User:Geyser|geyser]] 04:53, 9 October 2008 (CEST)&lt;br /&gt;
;Update on projectile awareness&lt;br /&gt;
:Sorry, but browsing and patching PowerPC ASM code is not pleasant. There are tricky pointers all over the place, which is why Neo is not too hot for fixing the messy awareness on the Mac (even though the nature of the mess is essentially known). --[[User:Geyser|geyser]] 04:53, 9 October 2008 (CEST)&lt;br /&gt;
;&amp;quot;Finally, some good news&amp;quot;&lt;br /&gt;
:Here&#039;s a tentative set of in-place patches to enable chr_focus, chr_set_class and chr_location for the Omni engine. A bunch of pointers and strings to edit. I wrote the strings with a fixed-width font, &amp;lt;tt&amp;gt;°&amp;lt;/tt&amp;gt; standing for the null character, with the old and new strings above one another so you can see what goes where. Make sure you don&#039;t mess up with the 2 strings being shifted backwards. --[[User:Geyser|geyser]] 04:53, 9 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}} style=&amp;quot;white-space:nowrap&amp;quot;&lt;br /&gt;
|+making &#039;&#039;&#039;cm_barabus&#039;&#039;&#039; into &#039;&#039;&#039;chr_focus&#039;&#039;&#039;: fixing pointers&lt;br /&gt;
{{th}}&lt;br /&gt;
!Offset&lt;br /&gt;
!Old hex&lt;br /&gt;
!New hex&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x1B906C&lt;br /&gt;
|00 16 F8 34&lt;br /&gt;
|00 16 F8 34&lt;br /&gt;
|pointer to BSL name; unchanged&lt;br /&gt;
|-&lt;br /&gt;
|0x1B9078&lt;br /&gt;
|00 16 F8 40&lt;br /&gt;
|00 16 F8 40&lt;br /&gt;
|pointer to help string; unchanged&lt;br /&gt;
|-&lt;br /&gt;
|0x1B907C&lt;br /&gt;
|00 16 F8 5C&lt;br /&gt;
|00 16 F8 5C&lt;br /&gt;
|pointer to signature string; unchanged&lt;br /&gt;
|-&lt;br /&gt;
|0x1B9080&lt;br /&gt;
|00 03 58 BC&lt;br /&gt;
|00 &#039;&#039;&#039;04 19 6C&#039;&#039;&#039;&lt;br /&gt;
|pointer to function; now pointing to _SetMainCharacter&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}} style=&amp;quot;white-space:nowrap&amp;quot;&lt;br /&gt;
|+making &#039;&#039;&#039;chr_hold_key&#039;&#039;&#039; into &#039;&#039;&#039;chr_location&#039;&#039;&#039;: fixing pointers&lt;br /&gt;
{{th}}&lt;br /&gt;
!Offset&lt;br /&gt;
!Old hex&lt;br /&gt;
!New hex&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x1B918C&lt;br /&gt;
|00 16 EE 24&lt;br /&gt;
|00 16 EE &#039;&#039;&#039;23&#039;&#039;&#039;&lt;br /&gt;
|pointer to BSL name; shifting 1 char backwards&lt;br /&gt;
|-&lt;br /&gt;
|0x1B9198&lt;br /&gt;
|00 16 FB E8&lt;br /&gt;
|00 16 FB E8&lt;br /&gt;
|pointer to help string; unchanged&lt;br /&gt;
|-&lt;br /&gt;
|0x1B919C&lt;br /&gt;
|00 16 FC 20&lt;br /&gt;
|00 16 FC 20&lt;br /&gt;
|pointer to signature string; unchanged&lt;br /&gt;
|-&lt;br /&gt;
|0x1B91A0&lt;br /&gt;
|00 03 45 A8&lt;br /&gt;
|00 &#039;&#039;&#039;04 17 20&#039;&#039;&#039;&lt;br /&gt;
|pointer to function; now pointing to _iSetAnyCharacterLocation&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}} style=&amp;quot;white-space:nowrap&amp;quot;&lt;br /&gt;
|+making &#039;&#039;&#039;ai2_panic&#039;&#039;&#039; into &#039;&#039;&#039;chr_set_class&#039;&#039;&#039;: fixing pointers&lt;br /&gt;
{{th}}&lt;br /&gt;
!Offset&lt;br /&gt;
!Old hex&lt;br /&gt;
!New hex&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x1B95DC&lt;br /&gt;
|00 16 F2 EC&lt;br /&gt;
|00 16 F2 &#039;&#039;&#039;EA&#039;&#039;&#039;&lt;br /&gt;
|pointer to BSL name; shifting 2 chars backwards&lt;br /&gt;
|-&lt;br /&gt;
|0x1B95E8&lt;br /&gt;
|00 17 09 48&lt;br /&gt;
|00 17 09 48&lt;br /&gt;
|pointer to help string; unchanged&lt;br /&gt;
|-&lt;br /&gt;
|0x1B95EC&lt;br /&gt;
|00 17 09 68&lt;br /&gt;
|00 17 09 68&lt;br /&gt;
|pointer to signature string; unchanged&lt;br /&gt;
|-&lt;br /&gt;
|0x1B95F0&lt;br /&gt;
|00 03 55 F8&lt;br /&gt;
|00 &#039;&#039;&#039;04 06 14&#039;&#039;&#039;&lt;br /&gt;
|pointer to function; now pointing to _iSetCharacterClass&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}} style=&amp;quot;white-space:nowrap&amp;quot;&lt;br /&gt;
|+making &#039;&#039;&#039;cm_barabus&#039;&#039;&#039; into &#039;&#039;&#039;chr_focus&#039;&#039;&#039;: fixing strings&lt;br /&gt;
{{th}}&lt;br /&gt;
!Offset&lt;br /&gt;
!0x16E834&lt;br /&gt;
!0x16E840&lt;br /&gt;
!0x16E85C&lt;br /&gt;
|-&lt;br /&gt;
!Old chars&lt;br /&gt;
|&amp;lt;tt&amp;gt;cm_barabus°°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;special camera for barabus°°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;[ai_name:string | script_id:int] away:float up:float time:int°°°&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!New chars&lt;br /&gt;
|&amp;lt;tt&amp;gt;chr_focus°°°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;sets a new player character°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;chr_index:int°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°°&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Description&lt;br /&gt;
|replacing name in-place&lt;br /&gt;
|replacing help string in-place&lt;br /&gt;
|replacing signature string in-place&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}} style=&amp;quot;white-space:nowrap&amp;quot;&lt;br /&gt;
|+making &#039;&#039;&#039;chr_hold_key&#039;&#039;&#039; into &#039;&#039;&#039;chr_location&#039;&#039;&#039;: fixing strings&lt;br /&gt;
{{th}}&lt;br /&gt;
!Offset&lt;br /&gt;
!0x16DE23&lt;br /&gt;
!0x16EBE8&lt;br /&gt;
!0x16EC20&lt;br /&gt;
|-&lt;br /&gt;
!Old chars&lt;br /&gt;
|&amp;lt;tt&amp;gt;°chr_holdkey°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;forces a character to hold a key down for some frames°°°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;[ai_name:string | script_id:int] key_name:string num_frames:int°&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!New chars&lt;br /&gt;
|&amp;lt;tt&amp;gt;chr_location°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;sets location of a character or prints current location°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;chr_index:int [[loc_x:float loc_y:float loc_z:float] | ]°°°°°°°°&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Description&lt;br /&gt;
|replacing/shifting name&lt;br /&gt;
|replacing help string in-place&lt;br /&gt;
|replacing signature string in-place&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}} style=&amp;quot;white-space:nowrap&amp;quot;&lt;br /&gt;
|+making &#039;&#039;&#039;ai2_panic&#039;&#039;&#039; into &#039;&#039;&#039;chr_set_class&#039;&#039;&#039;: fixing strings&lt;br /&gt;
{{th}}&lt;br /&gt;
!Offset&lt;br /&gt;
!0x16E2EA&lt;br /&gt;
!0x16F948&lt;br /&gt;
!0x16F968&lt;br /&gt;
|-&lt;br /&gt;
!Old chars&lt;br /&gt;
|&amp;lt;tt&amp;gt;°°ai2_panic°°°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;makes an AI panic or not panic°°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;[ai_name:string | script_id:int] timer:int°°&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!New chars&lt;br /&gt;
|&amp;lt;tt&amp;gt;chr_set_class°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;sets class of a given character°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;&amp;lt;nowiki&amp;gt;chr_id:int [oncc_name:string | oncc_id:int]°&amp;lt;/nowiki&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Description&lt;br /&gt;
|replacing/shifting name&lt;br /&gt;
|replacing help string in-place&lt;br /&gt;
|replacing signature string in-place&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Thank you for the patches! chr_set_class works!!!  chr_focus works!!!  chr_location crashes, I included the report [[Talk:Oni engine patches (Mac)/chr_location|on a separate page]].  Here is the modified engine: http://edt.oni2.net/files/OniTest.zip for your examination. [[User:EdT|EdT]] 07:26, 9 October 2008 (CEST)&lt;br /&gt;
:Updated the pointer-to-function for chr_location, should work now. Will add weapon_reset later today. Thanks for the crash report (but you should have linked to it ;) ). And I have no idea how you managed to mess up chr_focus the way you did ^_^ --[[User:Geyser|geyser]] 17:26, 9 October 2008 (CEST)&lt;br /&gt;
::How did I mess up chr_focus?  When I first tried it, I was able to focus on the new character, but couldn&#039;t move him, then I read ssg&#039;s script command page and realized I needed the command ai2_takecontrol 1, so once I tried the script on that page, I realized chr_focus worked. [[User:EdT|EdT]] 23:35, 9 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
OK, Ed, here&#039;s a last one that should make your Oni 100% PC-OTA-compatible (I don&#039;t remember any other important command that you&#039;re missing, will check). Looking forward to massive OTA porting and mission scripting now ;) --[[User:Geyser|geyser]] 22:14, 9 October 2008 (CEST)&lt;br /&gt;
:I settled on &#039;&#039;&#039;ai2_skill_save&#039;&#039;&#039; even though it works OK, because we&#039;re running short of commands, so I&#039;d rather use something that I know is a mere commodity than something potentially useful that we haven&#039;t figured out yet. --[[User:Geyser|geyser]] 22:14, 9 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}} style=&amp;quot;white-space:nowrap&amp;quot;&lt;br /&gt;
|+making &#039;&#039;&#039;ai2_skill_save&#039;&#039;&#039; into &#039;&#039;&#039;weapon_reset&#039;&#039;&#039;: fixing pointers&lt;br /&gt;
{{th}}&lt;br /&gt;
!Offset&lt;br /&gt;
!Old hex&lt;br /&gt;
!New hex&lt;br /&gt;
!Description&lt;br /&gt;
|-&lt;br /&gt;
|0x1B97A4&lt;br /&gt;
|00 17 0F 10&lt;br /&gt;
|00 17 0F 10 &lt;br /&gt;
|pointer to BSL name; unchanged&lt;br /&gt;
|-&lt;br /&gt;
|0x1B97B0&lt;br /&gt;
|00 17 0F 20&lt;br /&gt;
|00 17 0F 20&lt;br /&gt;
|pointer to help string; unchanged&lt;br /&gt;
|-&lt;br /&gt;
|0x1B97B4&lt;br /&gt;
|00 16 A1 48&lt;br /&gt;
|00 16 A1 48&lt;br /&gt;
|pointer to signature string; unchanged&lt;br /&gt;
|-&lt;br /&gt;
|0x1B97B8&lt;br /&gt;
|00 03 0D 90&lt;br /&gt;
|00 &#039;&#039;&#039;0A 56 38&#039;&#039;&#039;&lt;br /&gt;
|pointer to function; now pointing to _WPiWeapons_Reset&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}} style=&amp;quot;white-space:nowrap&amp;quot;&lt;br /&gt;
|+making &#039;&#039;&#039;ai2_skill_save&#039;&#039;&#039; into &#039;&#039;&#039;weapon_reset&#039;&#039;&#039;: fixing strings&lt;br /&gt;
{{th}}&lt;br /&gt;
!Offset&lt;br /&gt;
!0x16FF10&lt;br /&gt;
!0x16FF20&lt;br /&gt;
!0x169148&lt;br /&gt;
|-&lt;br /&gt;
!Old chars&lt;br /&gt;
|&amp;lt;tt&amp;gt;ai2_skill_save°°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;saves the shooting skill being edited out as a text file°°°°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;°°°°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!New chars&lt;br /&gt;
|&amp;lt;tt&amp;gt;weapon_reset°°°°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;deletes unheld weapons and spawns initially present weapons°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|&amp;lt;tt&amp;gt;°°°°&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Description&lt;br /&gt;
|replacing name in-place&lt;br /&gt;
|replacing help string in-place&lt;br /&gt;
|empty signature string; unchanged&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:geyser, weapon_reset works. I did a quick test of OTA and it runs fine, but its not 100% compatible, since I cannot access the menus, using the function keys. Going to Dev Mode and pressing F9 starts the recording, but the OTA menus do not appear, pressing F3 does not cycle arena.  [[User:EdT|EdT]] 23:35, 9 October 2008 (CEST)&lt;br /&gt;
::The Mac version doesn&#039;t have F2/F3 binding. Another patch, maybe? :) [[User:Gumby|Gumby]] 00:15, 10 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Variables==&lt;br /&gt;
&lt;br /&gt;
Variables, darn it. Not sure what to do about them. 61 of them on the Mac. Sure, a few of them are disposable, and maybe a lot more if we get rid of everything we can&#039;t live without, but obviously we can never accomodate the 164 extra variables of the PC version: we&#039;ll have to make choices as for what we need the most on either side (what we have to keep VS what we need to add). So, &#039;&#039;&#039;sc_bind_f2&#039;&#039;&#039;, &#039;&#039;&#039;sc_bind_f3&#039;&#039;&#039;, &#039;&#039;&#039;co_display&#039;&#039;&#039; (so that OTA can be run in dev mode without messages cluttering up the screen), &#039;&#039;&#039;show_performance&#039;&#039;&#039; (devmode hotkey Ctrl+Shift/Alt+Y)... and then what? &#039;&#039;&#039;fast_mode&#039;&#039;&#039;? &#039;&#039;&#039;draw_every_frame&#039;&#039;&#039;? &#039;&#039;&#039;wp_kickable&#039;&#039;&#039;? &#039;&#039;&#039;chr_big_head_amount&#039;&#039;&#039;? a bunch of camera parameters? &#039;&#039;&#039;li_center_cursor&#039;&#039;&#039;? (oh, and speaking of camera stuff, we probably need to do the &#039;&#039;&#039;gs_fov_set&#039;&#039;&#039; function, too...). I mean, I can&#039;t just start disabling perfectly good variables without a good idea of how many I have in store and how many more I&#039;ll have to add. So let&#039;s brainstorm for a while (although I probably will add the foremost 4 I mentioned above right away...). Below are two little tables and two big ones. The first table is variables that don&#039;t seem to work but probably do, with the special case of &#039;&#039;&#039;ai2_boss_battle&#039;&#039;&#039; beilng used in [compound]. Then there&#039;s a small table of &amp;quot;huh&amp;quot; variables that are almost certainly disposable. Then there are tables (mutually exclusive, but overlapping with the small ones): debug/display things (32 items) and not-likely-to-be-tweaked things (17 items). Those would disempower modders and hackers but wouldn&#039;t change much or anything for level logic. 49 variables is a lot, but we have to choose wisely, and may end up having to maintain two versions of the Mac engine, one with debug stuff, the other with stuff that is meant to be used in scripts. --[[User:Geyser|geyser]] 05:14, 10 October 2008 (CEST)&lt;br /&gt;
:I&#039;ll start testing the variables and those I find that do not have a visible effect, I&#039;ll add to the possibly broken and disposable section. [[User:EdT|EdT]] 07:08, 10 October 2008 (CEST)&lt;br /&gt;
:Why can&#039;t I add a contents box and sections to this page? Just trying to make it easier to edit [[User:EdT|EdT]] 07:08, 10 October 2008 (CEST)&lt;br /&gt;
::What&#039;s the possibility of making something [[wikipedia:DLL_injection#Approaches_on_Unix-like_systems|Daodan-like]] for the Mac, or placing function calls in code caves?&lt;br /&gt;
::[[User:RossyMiles|rossy]] 11:18, 10 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
|+BSL variables available on the Mac that have no visible effect but are not likely to be broken, either&lt;br /&gt;
|bool ai2_boss_battle=0||&amp;quot;enables AI boss-battle target selection&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_melee_weightcorrection=1||&amp;quot;weights down non-attack techniques so they are never more than attacks&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|int32 ai2_stopignoring_count=6||&amp;quot;set the number of events before the AI will stop ignoring&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|int32 ai2_stopignoring_time=240||&amp;quot;set the delay timer before the AI forgets about ignored events&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
|+BSL variables available on the Mac that have no visible effect and are possibly broken and disposable&lt;br /&gt;
|bool ai2_debug_showsettingIDs=0||&amp;quot;shows ID numbers for combat, melee and neutral settings&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showastar=0||&amp;quot;shows grid squares that are evaluated by the A* pathfinding&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showintersections=0||&amp;quot;debug AI&#039;s melee intersections&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showlasers=0||&amp;quot;turns on laser sights for AI2 characters&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ph_debug_keyforces=0||&amp;quot;toggle keyboard applied forces&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|int32 ai2_debug_localmove_lines=20||&amp;quot;number of lines to cast to debug local-movement code&amp;quot;&amp;lt;br&amp;gt;(needs ai2_debug_localmovement, which is missing)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
|+BSL variables available on the Mac that enable debug display&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_debug_localmovement=0||&amp;quot;debug local-movement code from player&#039;s position&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_debug_localpathfinding=0||&amp;quot;debug local-path code from player&#039;s position and facing&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_debug_showsettingIDs=0||&amp;quot;shows ID numbers for combat, melee and neutral settings&amp;quot; (no visible effect)&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_printspawn=0||&amp;quot;prints information about each AI spawn&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showactivationpaths=0||&amp;quot;turns on inactive ==&amp;gt; active pathfinding rendering&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showastar=0||&amp;quot;shows grid squares that are evaluated by the A* pathfinding&amp;quot; (no visible effect)&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showcombatranges=0||&amp;quot;shows circles that represent the combat ranges of each AI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showconnections=0||&amp;quot;turns on pathfinding connection rendering&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showdynamicgrids=0||&amp;quot;turns on pathfinding dynamic grid display&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showfights=0||&amp;quot;shows fights in progress&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showfiringspreads=0||&amp;quot;shows AI firing spread knowledge&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showgrids=0||&amp;quot;turns on pathfinding grid rendering&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showhealth=0||&amp;quot;draws a health bar for every AI above their head&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showintersections=0||&amp;quot;debug AI&#039;s melee intersections&amp;quot; (no visible effect)&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showjoblocations=0||&amp;quot;draws a green cross at each AI&#039;s job location&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showlasers=0||&amp;quot;turns on laser sights for AI2 characters&amp;quot; (no visible effect)&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showlinetochar=0||&amp;quot;draws a line from the player to every AI&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showlocalmelee=0||&amp;quot;shows local-environment melee awareness&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showlos=0||&amp;quot;shows AI line-of-sight checking&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_shownames=0||&amp;quot;draws the name of every AI above their head&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showpathfindingerrors=0||&amp;quot;enables visual display of pathfinding errors&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showpaths=0||&amp;quot;shows the path each AI is following&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showprediction=0||&amp;quot;shows prediction info for AI2 characters&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showprojectiles=0||&amp;quot;shows AI projectile knowledge&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showsounds=0||&amp;quot;shows AI sounds as they are generated&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showtargeting=0||&amp;quot;shows targeting info for AI2 characters&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_showvision=0||&amp;quot;shows each AI&#039;s vision cones (central and peripheral)&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|int32 p3_debug_collision=256||&amp;quot;enables collision debugging display&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ph_debug_keyforces=0||&amp;quot;toggle keyboard applied forces&amp;quot; (no visible effect)&lt;br /&gt;
|-&lt;br /&gt;
|bool p3_show_env_collision=0||&amp;quot;draws particle / environment collisions&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ph_show_collisions=0||&amp;quot;toggle display of colliding quads&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool sound_show_debug=0||&amp;quot;displays sound debugging info&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
|+BSL variables available on the Mac that we&#039;re not too likely to modify in level logic&lt;br /&gt;
|bool ai2_barabbas_run=1||&amp;quot;lets Barabbas run while carrying his gun&amp;quot; (disposable if we never need 0)&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_blind=0||&amp;quot;turns off the AI&#039;s visual sensing system&amp;quot; (disposable if we never need blind AI)&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_chump_stop=0||&amp;quot;stops the chump&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_deaf=0||&amp;quot;turns off the AI&#039;s sound sensing system&amp;quot; (disposable if we never need deaf AI)&lt;br /&gt;
|-&lt;br /&gt;
|int32 ai2_debug_localmove_lines=20||&amp;quot;number of lines to cast to debug local-movement code&amp;quot;&amp;lt;br&amp;gt;(disposable; needs ai2_debug_localmovement, which is missing)&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_melee_weightcorrection=1||&amp;quot;weights down non-attack techniques so they are never more than attacks&amp;quot; (no visible effect)&lt;br /&gt;
|-&lt;br /&gt;
|int32 ai2_spacing_cookies=2||&amp;quot;number of cookies per fight&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_spacing_enable=1||&amp;quot;master enable switch for spacing behavior&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ai2_spacing_weights=1||&amp;quot;enables position-sensitive weighting of spacing behaviors&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|int32 ai2_stopignoring_count=6||&amp;quot;set the number of events before the AI will stop ignoring&amp;quot; (no visible effect)&lt;br /&gt;
|-&lt;br /&gt;
|int32 ai2_stopignoring_time=240||&amp;quot;set the delay timer before the AI forgets about ignored events&amp;quot; (no visible effect)&lt;br /&gt;
|-&lt;br /&gt;
|bool marketing_line_off=0||&amp;quot;turns the laser line off&amp;quot; (player&#039;s laser sight, crosshair, etc)&lt;br /&gt;
|-&lt;br /&gt;
|bool p3_everything_breakable=0||&amp;quot;makes every quad breakable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool p3_furniture_breakable=0||&amp;quot;makes all furniture breakable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool p3_glass_breakable=1||&amp;quot;enables breakable glass&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ph_active=1||&amp;quot;enable physics&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|bool ph_debug_keyforces=0||&amp;quot;toggle keyboard applied forces&amp;quot; (no visible effect)&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Win)&amp;diff=12496</id>
		<title>Talk:Oni engine patches (Win)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Win)&amp;diff=12496"/>
		<updated>2008-10-09T23:55:16Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Propose moving this to Oni Engine Patches (Win). --[[User:Gumby|Gumby]] 08:36, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Propose decapitalizing it to &amp;quot;Oni engine patches&amp;quot;. --[[User:Geyser|geyser]] 15:35, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Merging &amp;quot;(Win)&amp;quot; and &amp;quot;(Mac)&amp;quot; in this case would probably be a bad idea. However, before it&#039;s too late, I&#039;d like to point out the PC demo as a 3rd engine for which we ought to maintain a set of patches. Adapt naming convention as necessary. --[[User:Geyser|geyser]] 15:35, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Done-diddly-one&amp;quot;, as Flanders would say. Demo patches for PC or Mac could hypothetically go in a second section with its own table on the (Win) and (Mac) pages, or if we wanted a separate page, something like &amp;lt;nowiki&amp;gt;[[Oni engine patches (Win demo)]]&amp;lt;/nowiki&amp;gt;. --[[User:Iritscen|Iritscen]] 19:04, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
I was wondering, is it possible at all to get the PC east engine to run with PC demo data. I tried with OniSplit and got a blam but I probably did something wrong. If we could get that to work then the demo engine would be redundant. [[User:RossyMiles|rossy]] 07:24, 9 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
::The demo engine uses Macesque file structures: I.E.: sep files. The legality of rereleasing the demo is...well pretty legal. You can convert Mac files to PC files already, so I don&#039;t see that big of a deal of releasing a dat\raw version of the demo, but why bother? [[User:Gumby|Gumby]] 09:32, 9 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::I just want to only have to support one engine. It would be a lot easier if the modding community only had to focus on a single PC engine. Modifications to that engine would be accessible by legal owners of the full game as well as users of the demo. At the moment, patches like the projectile awareness patch are only avaiable for the standard and buka engines. [[User:RossyMiles|rossy]] 11:12, 9 October 2008 (CEST)&lt;br /&gt;
::::OK, I&#039;ll be providing an Edition bundle for the PC demo, that will repack the stuff with -nosep. I never thought of it that way, but it sure saves a lot of trouble. Now if we could only get rid of Omni&#039;s engine the same way... ;)  P.S. Rossy, I tried to send you the link to Neo&#039;s IDA database, twice, but apparently you didn&#039;t get those mails (spam filter or something). It doesn&#039;t matter now since you got the database anyway, but I still wonder if your mail server could cause those problems in the future... I&#039;m asking SFeLi to share his databases, and I&#039;m looking forward to multiplayer dev talk. Woot. --[[User:Geyser|geyser]] 17:39, 9 October 2008 (CEST)&lt;br /&gt;
:::::It turns out the last email went through, the other one is in Outlooks &amp;quot;Junk E-mail&amp;quot; folder, I just forgot to check my email yesterday. I added you to my &amp;quot;Safe Senders List&amp;quot; so hopefully that wont happen again.&lt;br /&gt;
:::::On the subject of the edition, I installed it without step_0004.bat because at the time, I hadn&#039;t finished the original game on hard mode and I kinda thought I should before trying the modifications provided by the edition. I don&#039;t know whether this problem still exists now, but all the character classes were mixed up, for example, the game kept on spawning blue strikers in Syndicate Warehouse and mini strikers in TCTF HQ.&lt;br /&gt;
:::::As for the OMNI engine, wouldn&#039;t the PC version of Oni run faster in Wine on an x86 Mac. AFAIK the only thing that dosen&#039;t work in wine is the sound. That might be fixable or it might already work in Wine 1.0.&lt;br /&gt;
:::::[[User:RossyMiles|rossy]] 01:55, 10 October 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Win)&amp;diff=12481</id>
		<title>Talk:Oni engine patches (Win)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Win)&amp;diff=12481"/>
		<updated>2008-10-09T09:12:29Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Propose moving this to Oni Engine Patches (Win). --[[User:Gumby|Gumby]] 08:36, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Propose decapitalizing it to &amp;quot;Oni engine patches&amp;quot;. --[[User:Geyser|geyser]] 15:35, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Merging &amp;quot;(Win)&amp;quot; and &amp;quot;(Mac)&amp;quot; in this case would probably be a bad idea. However, before it&#039;s too late, I&#039;d like to point out the PC demo as a 3rd engine for which we ought to maintain a set of patches. Adapt naming convention as necessary. --[[User:Geyser|geyser]] 15:35, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Done-diddly-one&amp;quot;, as Flanders would say. Demo patches for PC or Mac could hypothetically go in a second section with its own table on the (Win) and (Mac) pages, or if we wanted a separate page, something like &amp;lt;nowiki&amp;gt;[[Oni engine patches (Win demo)]]&amp;lt;/nowiki&amp;gt;. --[[User:Iritscen|Iritscen]] 19:04, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
I was wondering, is it possible at all to get the PC east engine to run with PC demo data. I tried with OniSplit and got a blam but I probably did something wrong. If we could get that to work then the demo engine would be redundant. [[User:RossyMiles|rossy]] 07:24, 9 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
::The demo engine uses Macesque file structures: I.E.: sep files. The legality of rereleasing the demo is...well pretty legal. You can convert Mac files to PC files already, so I don&#039;t see that big of a deal of releasing a dat\raw version of the demo, but why bother? [[User:Gumby|Gumby]] 09:32, 9 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:::I just want to only have to support one engine. It would be a lot easier if the modding community only had to focus on a single PC engine. Modifications to that engine would be accessible by legal owners of the full game as well as users of the demo. At the moment, patches like the projectile awareness patch are only avaiable for the standard and buka engines. [[User:RossyMiles|rossy]] 11:12, 9 October 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Win)&amp;diff=12477</id>
		<title>Talk:Oni engine patches (Win)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Oni_engine_patches_(Win)&amp;diff=12477"/>
		<updated>2008-10-09T05:24:53Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Propose moving this to Oni Engine Patches (Win). --[[User:Gumby|Gumby]] 08:36, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Propose decapitalizing it to &amp;quot;Oni engine patches&amp;quot;. --[[User:Geyser|geyser]] 15:35, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
Merging &amp;quot;(Win)&amp;quot; and &amp;quot;(Mac)&amp;quot; in this case would probably be a bad idea. However, before it&#039;s too late, I&#039;d like to point out the PC demo as a 3rd engine for which we ought to maintain a set of patches. Adapt naming convention as necessary. --[[User:Geyser|geyser]] 15:35, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Done-diddly-one&amp;quot;, as Flanders would say. Demo patches for PC or Mac could hypothetically go in a second section with its own table on the (Win) and (Mac) pages, or if we wanted a separate page, something like &amp;lt;nowiki&amp;gt;[[Oni engine patches (Win demo)]]&amp;lt;/nowiki&amp;gt;. --[[User:Iritscen|Iritscen]] 19:04, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
I was wondering, is it possible at all to get the PC east engine to run with PC demo data. I tried with OniSplit and got a blam but I probably did something wrong. If we could get that to work then the demo engine would be redundant. [[User:RossyMiles|rossy]] 07:24, 9 October 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Sandbox&amp;diff=12433</id>
		<title>User:RossyMiles/Sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Sandbox&amp;diff=12433"/>
		<updated>2008-10-08T11:01:42Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background-color: black&amp;quot;&amp;gt;hi&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td style=&amp;quot;background-color: white&amp;quot;&amp;gt;hi&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Sandbox&amp;diff=12432</id>
		<title>User:RossyMiles/Sandbox</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=User:RossyMiles/Sandbox&amp;diff=12432"/>
		<updated>2008-10-08T11:01:06Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: New page: &amp;lt;table cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;hi &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;tr&amp;gt; &amp;lt;td&amp;gt;hi &amp;lt;/td&amp;gt; &amp;lt;/tr&amp;gt; &amp;lt;/table&amp;gt;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;table cellpadding=&amp;quot;0&amp;quot; cellspacing=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;hi&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;tr&amp;gt;&lt;br /&gt;
&amp;lt;td&amp;gt;hi&lt;br /&gt;
&amp;lt;/td&amp;gt;&lt;br /&gt;
&amp;lt;/tr&amp;gt;&lt;br /&gt;
&amp;lt;/table&amp;gt;&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Oni_(folder)&amp;diff=12416</id>
		<title>Oni (folder)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Oni_(folder)&amp;diff=12416"/>
		<updated>2008-10-08T03:24:45Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: Updated PNG icons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a representation of Oni&#039;s file hierarchy under Windows, any time after the first run of the game. To learn more about a file or folder, click its icon.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;b&amp;gt;Select Platform: Windows&amp;lt;/b&amp;gt; (currently viewing)&amp;lt;b&amp;gt; | [[Oni (folder-Mac)|Mac OS]]&amp;lt;br&amp;gt;&lt;br /&gt;
Select Installation:  Original&amp;lt;/b&amp;gt; (currently viewing)&amp;lt;b&amp;gt;  |  [[Oni (folder-Win-AE)|Anniversary Edition]]&amp;lt;/b&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;text-align:left&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!&lt;br /&gt;
!&amp;lt;u&amp;gt;Name&amp;lt;/u&amp;gt;&lt;br /&gt;
!&amp;lt;u&amp;gt;Type&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|{{navimg|xsize=16|ysize=16|image=Folder_icon.png|link=Oni (folder-Win)/GameDataFolder}}&lt;br /&gt;
|GameDataFolder&lt;br /&gt;
|File Folder&lt;br /&gt;
|-&lt;br /&gt;
|{{navimg|xsize=16|ysize=16|image=DLL_icon.png|link=Oni (folder-Win)/binkw32.dll}}&lt;br /&gt;
|binkw32.dll&lt;br /&gt;
|Application Extension&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|{{navimg|xsize=16|ysize=16|image=txt_icon.png|link=Oni (folder-Win)/debugger.txt}}&lt;br /&gt;
|debugger.txt&lt;br /&gt;
|Text Document&lt;br /&gt;
|-&lt;br /&gt;
|{{navimg|xsize=16|ysize=16|image=exe_icon.png|link=Oni Application Patches (Win)}}&lt;br /&gt;
|Oni.exe&lt;br /&gt;
|Application&lt;br /&gt;
|-&lt;br /&gt;
|{{navimg|xsize=16|ysize=16|image=txt_icon.png|link=Oni (folder-Win)/readme.txt}}&lt;br /&gt;
|readme.txt&lt;br /&gt;
|Text Document&lt;br /&gt;
|-&lt;br /&gt;
|{{navimg|xsize=16|ysize=16|image=txt_icon.png|link=Oni (folder-Win)/startup.txt}}&lt;br /&gt;
|startup.txt&lt;br /&gt;
|Text Document&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=File:DLL_icon-WinVista.png&amp;diff=12411</id>
		<title>File:DLL icon-WinVista.png</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=File:DLL_icon-WinVista.png&amp;diff=12411"/>
		<updated>2008-10-08T03:20:33Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: For a new approach to the Oni documentation.
Category:Logos &amp;amp; icons&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;For a new approach to the Oni documentation.&lt;br /&gt;
[[Category:Logos &amp;amp; icons]]&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Multiplayer&amp;diff=12400</id>
		<title>Talk:Multiplayer</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Multiplayer&amp;diff=12400"/>
		<updated>2008-10-08T00:27:20Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;quote: &amp;quot;There is no development planned in the short term, however, except for minimal patches to the engine (implementing stuff like chr_focus and chr_location for PC demo and the Mac&amp;quot;&lt;br /&gt;
:Those patches will be a great addition. I would like to also request chr_set_class, if possible. Thanks. [[User:EdT|EdT]] 01:06, 7 October 2008 (CEST)&lt;br /&gt;
::Erm, that came out wrong. Should have been &amp;quot;except &#039;&#039;perhaps&#039;&#039; for minimal patches...&amp;quot;. The only serious talk about those mini-patches was with SFeLi, and that was ages ago. So, hold your breath not. Point taken about chr_set_class, I had forgotten about it. --[[User:Geyser|geyser]] 01:18, 7 October 2008 (CEST)&lt;br /&gt;
::Actually, there are a few Multiplayer related things in the C-Daodan. Don&#039;t know if they were in the original Daodan, or if it was something Rossy is planning. :) [[User:Gumby|Gumby]] 07:05, 7 October 2008 (CEST)&lt;br /&gt;
:::That code is there because I got bored and tried to get two Oni.exes to talk to each other. It worked but I have no idea what to do now. Also I decided to call the source code file [[wikipedia:Rei Ayanami|ayanami]].c, following the tradition that all of Oni&#039;s important subsystems were named after anime characters (Totoro - animation, Akira - environment/lighting, etc.). If anyone can help or tell me what I need to do to implement multiplayer, I would be glad to try. [[User:RossyMiles|rossy]] 02:27, 8 October 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=BSL:Frustum_and_fog&amp;diff=11766</id>
		<title>BSL:Frustum and fog</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=BSL:Frustum_and_fog&amp;diff=11766"/>
		<updated>2008-09-22T09:40:34Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;See also [[wikipedia:Viewing_frustum]] and [[wikipedia:Distance_fog]]&lt;br /&gt;
==Frustum==&lt;br /&gt;
:&#039;&#039;In 3D computer graphics, the viewing frustum or view frustum is the region of space in the modeled world that may appear on the screen; it is the field of view of the notional camera. The exact shape of this region varies depending on what kind of camera lens is being simulated, but typically it is a frustum of a rectangular pyramid (hence the name). The planes that cut the frustum perpendicular to the viewing direction are called the near plane and the far plane. Objects closer to the camera than the near plane or beyond the far plane are not drawn. [[wikipedia:Image:ViewFrustum_01.png]]&lt;br /&gt;
;void gs_farclipplane_set(float plane)&lt;br /&gt;
:This sets the distance of the far clipping plane in world units. If you call &#039;&#039;&#039;gs_farclipplane_set(1000)&#039;&#039;&#039;, then all objects more than 100 meters away from the camera will be culled. The default distance of the far clipping distance is 10000 (1 kilometer).&lt;br /&gt;
;void gs_fov_set(float fov_degrees)&lt;br /&gt;
:(not available on PC demo or Mac) This sets the angle between the top and bottom planes of the frustum. If you call &#039;&#039;&#039;gs_fov_set(90)&#039;&#039;&#039;, then the angle at the camera between the top and bottom of the frustum will be 90°. The default value of that angle is 45°.&lt;br /&gt;
:The aspect ratio of the frustum stays constant (defined by the current screen resolution), so the view will get wider as you increase the vertical FOV. For the defaut FOV and on a 4:3 screen, the horizontal viewing angle is 2*arctan(4/3*tan(45°/2))=57.8224°&lt;br /&gt;
;Widescreen FOV&lt;br /&gt;
:On a 16:9 or 16:10 screen, the horizontal viewing angle is larger: 2*arctan(16/9*tan(45°/2))=72.73435° and 2*arctan(16/10*tan(45°/2))=67.0682°, respectively. This causes insufficient frustum culling in some of Oni&#039;s cutscenes (intro sequences of {{C|2}}, {{C|11}}, and {{C|14}} for example). A quick way to fix this is to bring the horizontal viewing angle down to the supposed 57.8224° during the cutscene: the 4:3 viewport will then effectively be trimmed vertically rather than extended sideways. On 16:9 and 16:10 screens, the corrected vertical FOV will be 2*arctan(3/4*tan(45°/2))=34.515877° and 2*arctan(5/6*tan(45°/2))=38.0871°, respectively. Remember to set it back to 45° after the cutscene to fully enjoy the extended viewport.&lt;br /&gt;
;NOTE&lt;br /&gt;
:The far clip plane and FOV are only reset when Oni starts, not when you load a level, so mind their default values and the side effect of other scripts.&lt;br /&gt;
;ALSO NOTE&lt;br /&gt;
:There is no control over Oni&#039;s &#039;&#039;near&#039;&#039; clipping plane: its distance is always 4 (40 cm).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Distance fog==&lt;br /&gt;
===BSL interface===&lt;br /&gt;
There are 5 fog-related variables: 3 color components (RGB) and 2 distances in frustum space (see below) between which the fog gradient builds up. All five values are reset to their default values at level load.&lt;br /&gt;
&lt;br /&gt;
The color components and their default values are:&lt;br /&gt;
:;float gl_fog_red= 0.25&lt;br /&gt;
:;float gl_fog_green= 0.25&lt;br /&gt;
:;float gl_fog_blue= 0.25&lt;br /&gt;
This corresponds to dark gray (25% gray). For nighttime and outdoors environments, the three components are typically set to 0 (black fog), but in daytime or indoors environments the fog/haze color may be brighter (and possibly colorized to roughly match the dominant color of the skybox, which is not affected by fog). In {{C|1}}, {{C|2}}, {{C|10}} and {{C|12}}, the fog color is 15% gray. In {{C|3}}, the color has a red dominant: (0.3,0.17,0.15).&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;start&amp;quot; and &amp;quot;end&amp;quot; distances and their default values are:&lt;br /&gt;
:;float gl_fog_start= 0.925&lt;br /&gt;
:;float gl_fog_end= 1.0&lt;br /&gt;
Keep in mind that those &amp;quot;distances&amp;quot; are in frustum space: 1.0 corresponds to the far clipping plane, and 0.925 corresponds to a plane about 15.75 meters from the camera if the far clip plane is at 1 kilometer (see below for conversion rules).&lt;br /&gt;
&lt;br /&gt;
That the &amp;quot;end&amp;quot; fog plane is at 1.0 means that the fog will completely hide objects only at the far end of the viewing frustum. Objects closer than the &amp;quot;start&amp;quot; fog plane won&#039;t be affected by fog at all. In between, there will be a fog gradient.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Typically, tweaking the &amp;quot;start&amp;quot; plane is enough to achieve a good-looking distance fog: once set, the fog/haze can be kept the same for the whole level. However, in some situations (e.g., in the dream level), the fog starts closer to the player.&lt;br /&gt;
&lt;br /&gt;
In that case the correct values of gl_fog_start (and gl_fog_end) may be hard to guess, and you may want to have a look at the conversion rules below. You may also want to use smooth transitions rather than set the variables to new values instantly.&lt;br /&gt;
&lt;br /&gt;
The smooth transition functions are:&lt;br /&gt;
:;void gl_fog_start_changeto(float start_val=0, int frames=0)&lt;br /&gt;
::If the far clip plane is at 10000, calling &#039;&#039;&#039;gl_fog_start_changeto(0.88, 60)&#039;&#039;&#039; moves the &amp;quot;start&amp;quot; of the fog gradient to about 3.3 meters in front of the camera, over one second.&lt;br /&gt;
::Calling &#039;&#039;&#039;gl_fog_start_changeto(0.88)&#039;&#039;&#039; does the same instantly, since the default value of the &#039;&#039;&#039;frames&#039;&#039;&#039; argument is 0.&lt;br /&gt;
:;void gl_fog_end_changeto(float end_val=0, int frames=0)&lt;br /&gt;
::If the far clip plane is at 10000, calling &#039;&#039;&#039;gl_fog_end_changeto(0.88001, 60)&#039;&#039;&#039; moves the &amp;quot;end&amp;quot; of the fog gradient to about 3.3 meters in front of the camera, over one second.&lt;br /&gt;
::Calling &#039;&#039;&#039;gl_fog_end_changeto(0.88)&#039;&#039;&#039; does the same instantly, since the default value of the &#039;&#039;&#039;frames&#039;&#039;&#039; argument is 0.&lt;br /&gt;
&lt;br /&gt;
Note that you can invert the effect, to obtain short-distance fog rather than the usual long-distance fog. All you have to do is to make gl_fog_end smaller than gl_fog_start (and gl_fog_start small enough so that the player character is visible).&lt;br /&gt;
&lt;br /&gt;
===Technical background===&lt;br /&gt;
:&#039;&#039;For more technical information on fog and on frustum-based space (or whatever it&#039;s called), see [http://msdn2.microsoft.com/en-us/library/ms537113.aspx here] and [http://msdn2.microsoft.com/en-us/library/bb147268(VS.85).aspx here] and [http://cs.fit.edu/~wds/classes/graphics/PTOC/ptoc/ elsewhere].&lt;br /&gt;
&lt;br /&gt;
The frustum (see above), defines a set of coordinates in which the near plane is at Z=0 and the far plane at Z=1 (X=-1 and X=1 correspond to the left and right side of the frustum; the top and bottom of the frustum are planes with Y=-a and Y=a, with &#039;&#039;&#039;a&#039;&#039;&#039; the aspect ratio of the screen).&lt;br /&gt;
&lt;br /&gt;
The important thing for fog is Z (the depth coordinate in frustum-based space). Every pixel of every object within the frustum is blended with a color (the fog color), depending on the amount f of fog in front of that pixel. The default fog color is 25% gray.&lt;br /&gt;
&lt;br /&gt;
For f&amp;lt;0, there is no fog in front of the object and the pixel retains its original color. For f&amp;gt;1 the object is completely fogged and the pixel has the color of the fog. For 0&amp;lt;f&amp;lt;1, the color is interpolated linearly between the original pixel color and that of the fog.&lt;br /&gt;
&lt;br /&gt;
The value of f is taken to be 0 on the fog&#039;s &amp;quot;start&amp;quot; plane and 1 on the fog&#039;s &amp;quot;end&amp;quot; plane and is interpolated/extrapolated linearly elsewhere, in the frustum-based coordinates. The natural order is: near clip plane, fog &amp;quot;start&amp;quot; plane, fog &amp;quot;end&amp;quot; plane, far clip plane.&lt;br /&gt;
&lt;br /&gt;
The conversion rule between z (actual distance from the camera) and Z (frustum-based depth) is:&lt;br /&gt;
:Z = z_f * ( z - z_n ) / [ z * ( z_f - z_n ) ]&lt;br /&gt;
:z = z_n * z_f / [ z_f - Z*( z_f - z_n )]&lt;br /&gt;
By default, z_f is 10000 and z_n is 4, so Z=0.925 corresponds roughly to z=157.5&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=AE:Bug-fix_and_feature_requests&amp;diff=11765</id>
		<title>AE:Bug-fix and feature requests</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=AE:Bug-fix_and_feature_requests&amp;diff=11765"/>
		<updated>2008-09-22T09:40:10Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: /* Widescreen */ whoops, fixing&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This is a place for suggesting fixes for the AE or improvements that the AE can make to original Oni.&lt;br /&gt;
:;Iritscen&lt;br /&gt;
&lt;br /&gt;
This &#039;&#039;might&#039;&#039; be a timely initiative, but if we are going to make this work &#039;&#039;at all&#039;&#039;...&lt;br /&gt;
*please &#039;&#039;sign&#039;&#039; every line, and make sure all the stuff &#039;&#039;stays&#039;&#039; signed after edits&lt;br /&gt;
**at least when you &amp;quot;vote&amp;quot; or say something subjective, you &#039;&#039;have&#039;&#039; to sign&lt;br /&gt;
*try to be very specific about what you want fixed or added; lazy users suck&lt;br /&gt;
*if you have the resources to systematically investigate on the matter, do so&lt;br /&gt;
*avoid long, non-factual discussions; if you can&#039;t, put them on the talk page&lt;br /&gt;
*make sure the list doesn&#039;t become overwhelming by lack of tangible follow-up&lt;br /&gt;
*[[wikipedia:KISS_principle|KISS]] and remember that not all of us have the time or desire to argue back&lt;br /&gt;
AE has ugly-ass [[wikipedia:Scope creep|scope creep]] ATM (probably my fault); let&#039;s not make it worse.&amp;lt;br&amp;gt;&lt;br /&gt;
Surely we can point out a ton of details that somehow &amp;quot;need our attention&amp;quot;...&amp;lt;br&amp;gt;&lt;br /&gt;
But that would be part of the problem rather than part of the solution, I think.&lt;br /&gt;
:[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=Improvements on original Oni that AE can make=&lt;br /&gt;
==Cutscene cleanup==&lt;br /&gt;
===Unlocking doors===&lt;br /&gt;
The very first door-unlocking console in the first room in {{C|1}}: why does it not show the door unlocking? This was confusing for me as a newbie (&amp;quot;What did I just do? Let me wander around and try to notice that a tiny light changed color.&amp;quot;) and still doesn&#039;t make any sense. I mean, they don&#039;t even tell you in training that doors can be unlocked by consoles! All the other doors are scrupulously shown unlocking when you use the appropriate consoles, even when they&#039;re like five feet away from you, but yet the very first one isn&#039;t shown unlocking. --&#039;&#039;&#039;Iritscen&lt;br /&gt;
&lt;br /&gt;
:(How typically verbose...) This scene indeed deserves a custom [[OBAN]] and/or a specific door-unlocking sound. However, you shouldn&#039;t exaggerate the confusion of the first-timers; clear message if they overlook the console and go straight to the door, only one way out anyway, perfectly explicit door-unlocking soon afterwards... --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
===Passive enemies===&lt;br /&gt;
When Konoko runs out the door at the end of {{C|2}} (and on to {{C|3}} ), there is (at least sometimes) a Striker standing right there as the camera pans by!  The scripting should be deleting all baddies before this cutscene. --&#039;&#039;&#039;Iritscen&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;What&#039;&#039; Striker? right &#039;&#039;where&#039;&#039;? sometimes &#039;&#039;when&#039;&#039;? Could it be &amp;quot;febtober_striker_1&amp;quot; (sorta Easter egg), or &amp;quot;flyway_striker_1&amp;quot;? I know &#039;&#039;&#039;ai2_shownames&#039;&#039;&#039; is broken in the Mac version, but &#039;&#039;&#039;who&#039;&#039;&#039; and &#039;&#039;&#039;ai2_report&#039;&#039;&#039; should work... And at the very least, you can identify the weapon he&#039;s holding, if any. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
:Moving enemies out of Konoko&#039;s path is sensible (more generally, the AI often look awkward when &amp;quot;passive&amp;quot; during a cutscene), but it would also make sense for &amp;quot;baddies&amp;quot; (either surviving Strikers or Ninja or BGI) to observe Konoko during that cutscene, from where Konoko can&#039;t see them, G-man style. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Smart alarm behaviour==&lt;br /&gt;
Loser wanted to make the AI attack you even when trying to get to an alert console.  I don&#039;t think he made any changes in that regard yet, but I was chasing down a ninja Comguy who wanted to push the alert button, and when I got in his way, he *did* attack me. I think that further increasing the likeliness of the AI to attack you while in run-for-alert-console mode is not necessary, and maybe even a bad idea, since they can now dash as fast as Konoko, and so it&#039;s much more exciting/frightening when they run for the console. Staying and fighting would make them less of a threat, really, since after pressing the button they will fight you anyway and then you will also have other problems to deal with too. So I vote for &amp;quot;no change&amp;quot; in this regard. --&#039;&#039;&#039;Iritscen&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;This is a mistake&amp;quot;. The point of Loser&#039;s aproach is that AI will interrupt their console-running job only when the player is about to take advantage of them (e.g., tackle them - Konoko still dashes faster than anyone except for Ninjas - or backbreak them at the console). They will then resume running as soon as they&#039;ve put some distance between them and the player (e.g., by knocking the player down and/or retreating). This should much more consistent than the way it happens with the original AI: if you force a console-running AI to fight back, they typically won&#039;t resume the alarm-running job when they have the chance. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
::I dislike the current console behavior. You can just backbreak them as they use the console. Not sure what the best fix is though. [[User:Gumby|Gumby]] 06:12, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Cinematics==&lt;br /&gt;
Why on earth does Oni use fly-ins when the characters are &amp;lt;u&amp;gt;onscreen&amp;lt;/u&amp;gt;? Times when it&#039;s not okay include the Muro-Barabus cutscene in Ch. 2: they&#039;re &amp;lt;u&amp;gt;right&amp;lt;/u&amp;gt; there in front of us, but also have their portraits in the corners. Blah. If you say, &amp;quot;Well, this lets us see them better&amp;quot;, (a) we don&#039;t need to be reminded that Muro doesn&#039;t look like his portrait, at least until he&#039;s fixed, and (b) the smart way to show us what they look like is to use close camera angles, not just hanging back and showing them from a distance; portraits are superfluous. On the other hand, a time when it&#039;s definitely okay: opening cutscene for Ch. 2, when Konoko&#039;s teeth-gritting portrait is shown as the ambush begins. See, that&#039;s a good use of portraits. --&#039;&#039;&#039;Iritscen&lt;br /&gt;
&lt;br /&gt;
:See, that&#039;s a bad bug-fix and feature request. Subjective/ironic (does (a) even look like an argument?), and awfully unspecific for its game-wide scope. Blah. The current approach may be flawed, but it is systematic: lips don&#039;t move, body language is limited, so every line of dialogue is considered a voiceover. The only consistent substitute would mean a full-scale change of design (for example, the fly-ins could be elaborate comic/manga panels contributing to the composition of the scene, rather than sketchy miniatures in a corner). Also, using &amp;quot;close camera angles&amp;quot; on Muro or anyone is a bad idea &amp;quot;until he&#039;s fixed&amp;quot;: as long as the textures are posterized and there&#039;s nothing in terms of facial animation, the best bet IMO is to keep the camera far away from the characters or in their backs, and to complement those shots with fly-ins. Anyway, your request struck me as half-baked.  --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Widescreen==&lt;br /&gt;
Various widescreen fixes are needed. For example when playing in a 16:9 resolution at the start of level 2, the camera is positioned behind a wall, in the Dream Lab level the photos in the opening cutscene can be seen before the animation starts and when playing in a 16:10 or 16:9 resolution in the Compound level, Konoko can be seen on the ground before she lands O_o. --&#039;&#039;&#039;Rossy&lt;br /&gt;
&lt;br /&gt;
:I noticed while perusing Daodan-C&#039;s source code there was a &amp;quot;/* widescreen patch for talking heads */&amp;quot;. Would that fix it? --&#039;&#039;&#039;Gumby&lt;br /&gt;
&lt;br /&gt;
::I believe that the &amp;quot;widescreen patch&amp;quot; is a specific workaround that fixes only the &amp;quot;cinematics&amp;quot;. See [[BSL:Frustum and fog|HERE]] for a more general fix. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Evil TCTF, or Explain This Odd Behaviour==&lt;br /&gt;
I don&#039;t know if this has already been fixed, but in my copy of Oni, there is a civilian in TCTF HQ that is set to the wrong team so good AIs attack her. --&#039;&#039;&#039;Rossy&lt;br /&gt;
&lt;br /&gt;
:Is it the woman on the first floor in the side room with those wide long pieces of machinery in the middle of it? --[[User:Iritscen|Iritscen]] 14:11, 20 September 2008 (CEST)&lt;br /&gt;
::I think so, yeah. --[[User:RossyMiles|rossy]] 03:32, 21 September 2008 (CEST)&lt;br /&gt;
:::I&#039;m not too sure what to think about Iritscen&#039;s commitment to specificity... If it&#039;s &#039;&#039;&#039;a_v1&#039;&#039;&#039; you&#039;re talking about, there&#039;s nothing long or wide about the computer in her room. And if you mean &#039;&#039;&#039;lobby_victim06&#039;&#039;&#039;, the floor she&#039;s on is not &amp;quot;first&amp;quot; in any way. Oh well... the point is, all those civilians, female or not, are in their typical Neutral team, and the TCTF AI won&#039;t attack them unless there is a glitch. The glitch is apparently due to some confusion in the awareness/knowledge/whatever system: apparently, if the TCTF see an enemy and a civilian &amp;quot;at the same time&amp;quot;, they tend to label them both as hostilethreat. TCTF HQ is the only mission where TCTF can be seen around civilians after seeing them with hostiles and defeating the latter. The same glitch happens with TCTF VS SecurityGuard, and probably with Syndicate VS SyndicateAccessory. Custom scripts based on OTA could help investigate this bug more systematically. From a more practical point of view, the glitch can be fixed with timely calls to &#039;&#039;&#039;ai2_forget&#039;&#039;&#039;. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Glitches in the animation system==&lt;br /&gt;
===Furies===&lt;br /&gt;
The Furies have [http://dl.getdropbox.com/u/139715/Fury_idle_glitch_in_original_game.avi a transition glitch] from combat idle to sidestep left and right. (Vid shows non-combat idle at first.) --&#039;&#039;&#039;Dox&lt;br /&gt;
:Looks like the other way round to me: the visible glitch is when she goes from sidestep to combat idle. Note that the sidesteps are KONCOMss_lt_1stepa/KONCOMss_lt_1stepb and KONCOMss_rt_1stepa/KONCOMss_rt_1stepb. They&#039;re supposed to be overridden by REDCOMss_lt_start/REDCOMss_lt_stop and REDCOMss_rt_start/REDCOMss_rt_stop, but somehow are not. The flaw can be either in TRACred_animations, or in the REDCOM TRAM. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
===Ninja===&lt;br /&gt;
After creeping forward with a pistol, the Ninjas somehow interpolate to STRCOMcrouch_idle instead of NINPIScrouch_idle, then switch to NINPIScrouch_idle after STRCOMcrouch_idle has played once. The flaw can be either in TRACninja_animations, or in the NINPIS TRAM. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
===Aiming screens===&lt;br /&gt;
The shoulder joints of males look awkward for rifle aiming, and more generally extreme aiming angles look funky. This could be fixed by editing or adding keyframes in the aiming screen TRAM; however, there is still no reasonable pipeline for that. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:Another issue is that KONRIF side rolls use an aiming screen. On one hand, it allows her to keep shooting while in the middle of a roll, which is cool. On the other, the weapon stays upright when aiming and rotates 360° through Konoko&#039;s fist, which is uncool (of course, it only shows up in slowmo and/or side view). There is no  solution apart from disabling the aiming screen on KONRIF side rolls. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Miscellaneous==&lt;br /&gt;
The security guard&#039;s lines in the State building are kind of silly. &amp;quot;Stop, or I&#039;ll shoot&amp;quot;. He shoots no matter what you do...&amp;gt;_&amp;gt; --[[User:Gumby|Gumby]]&lt;br /&gt;
:Konoko is a &amp;quot;class B threat&amp;quot; wanted dead or alive, who stays defiant in response to the warning, so his &amp;quot;screw this&amp;quot; attitude is understandable... However, it is rather straightforward for a scripter to freeze the action until the player actually &amp;quot;moves a muscle&amp;quot;. Another detail is the backup the guard called for; maybe he didn&#039;t alert the whole building, but some kind of backup ought to be on its way. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
=Suggestions for next version of AE=&lt;br /&gt;
==Dashing AI==&lt;br /&gt;
AI dashing hack applies to Konoko; she should be allowed to run again. --&#039;&#039;&#039;Iritscen&lt;br /&gt;
&lt;br /&gt;
:I&#039;ve implemented this as a plugin for you to test, for the time being. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:The remaining dashing problem is with FILM sequences played back by AI in cutscenes: if they used to run, they now dash and end up off course. There is no simple fix to this. Ultimately, someone has to either rescript the cutscenes so that they use &#039;&#039;&#039;ai2_movetoflag&#039;&#039;&#039; instead of &#039;&#039;&#039;playback&#039;&#039;&#039; or &#039;&#039;&#039;chr_playback&#039;&#039;&#039; (new flags may need to be set up, but pathfinding will probably be OK as is) or reauthor the FILM sequences. Both are feasible ATM, neither is much fun. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
::Couldn&#039;t it also be fixed with special cutscene characters that have the old non-dashing TRACs? [[User:Gumby|Gumby]] 06:09, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Domino knockdowns and fistsoflegend==&lt;br /&gt;
fistsoflegend is still broken. geyser indicated that knockdowns might be optional in the final release, but the question is, &amp;quot;Will using knockdowns always break fistsoflegend?&amp;quot;. --&#039;&#039;&#039;Iritscen&lt;br /&gt;
&lt;br /&gt;
:0) Didn&#039;t fistsoflegend suck anyway? 1) I can see there being no such thing as a &amp;quot;final release&amp;quot;. 2) Knockdowns &#039;&#039;will&#039;&#039; be optional, that&#039;s not an option ^_^  The question is whether they will be fixed. If we can prevent spurious domino knockdowns (I believe we can, but maybe Loser knows better), then there is a chance that fistsoflegend will be redeemed. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Other feature requests==&lt;br /&gt;
===Modular installation===&lt;br /&gt;
In the final Edition installation process, we need to separate the harder combat mods from the overall improvement mods and make the harder combat mods optional. You probably already plan on doing this, but I felt I should just verbalize it so it&#039;s on record as something that&#039;s A Really Good Idea. --&#039;&#039;&#039;Iritscen&lt;br /&gt;
&lt;br /&gt;
:The problem is the lack of clarity on just what difference (and/or interplay) there is between &amp;quot;overall improvement mods&amp;quot; and &amp;quot;harder combat mods&amp;quot;. It&#039;s not always easy to decompose the modded content into modules, all the less so as some resources are affected by unrelated mods. This interference is virtually impossible to resolve in the case of free-for-all modding, but with a centralized packaging it should be feasible (barely). --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
===[[AE:Glass]]===&lt;br /&gt;
Are the breakable glass (i.e., kicks break glass), damaging glass, and the glass collision (body hitting glass breaks it) mods in the Edition yet? I have glass mods installed separately so I can&#039;t tell. I didn&#039;t think they were part of the Edition, but I see a PAR3 glass particle is in the Edition files, so I&#039;m not clear on what&#039;s been changed. --&#039;&#039;&#039;Iritscen&lt;br /&gt;
&lt;br /&gt;
:I would love to see the RIF melee animations given glass-breaking status too. It only makes sense that if Konoko can kick glass out, hitting it with a big weapon in hand would also do the trick. Maybe a pistol would as well. --&#039;&#039;&#039;Iritscen&lt;br /&gt;
&lt;br /&gt;
::Damaging glass is in the Edition (hence the modded BINA3RAPglass_shard), but with a minor damage amount. There is no difference between what you call &amp;quot;glass collision&amp;quot; (or &amp;quot;improved physics&amp;quot;) and &amp;quot;breakable glass&amp;quot;. Glass particles are absolutely not involved here; it&#039;s all about explosive events (known as &amp;quot;glass charges&amp;quot;) attached to body parts, either as standalone particles or as part of glows/contrails/whatever. Ultimately, such particles should be assigned to every body part that has enough momentum to break glass. This implies specifically modding particle tracks of every other TRAM in Oni, which is a lot of work. If custom particles are involved, this also implies setting up these particles and adding them to the [[ONCP]] of all the characters. I never attempted such an extensive mod: the glass-breaking combos I released to the public early on either used explosive dust (a dirty hack if there ever was one) or enabled glass-breaking for contrails, with no TRAM-specific or ONCP modding in either case. Loser apparently has tried to produce something more systematic, but &amp;quot;I&amp;quot; have yet to assess it and adapt it for a release of the Edition. --[[User:Geyser|geyser]] 05:22, 22 September 2008 (CEST)&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=AE:ONK/EXE&amp;diff=11622</id>
		<title>AE:ONK/EXE</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=AE:ONK/EXE&amp;diff=11622"/>
		<updated>2008-09-13T11:47:54Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: /* 0xBDA0 */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Minimal changelog of the EXE so far (English a.k.a. &amp;quot;standard&amp;quot; version, 1527808 bytes)&lt;br /&gt;
&lt;br /&gt;
Those are only the versions [[User:geyser|I]] have used for some time.&lt;br /&gt;
&lt;br /&gt;
==Original EXE==&lt;br /&gt;
It&#039;s not actually the original EXE I bought (which is 1897472 bytes and checks for the CD)&lt;br /&gt;
:I got this one from GameCopyWorld. It doesn&#039;t check for the CD.&lt;br /&gt;
Possibly it is what Ian refers to as a &amp;quot;prepatched&amp;quot; version&lt;br /&gt;
:I have no idea what original EXE it was obtained from, and what modifications that involved ^^&lt;br /&gt;
&lt;br /&gt;
==Ian&#039;s patch==&lt;br /&gt;
&lt;br /&gt;
===0xBDA0===&lt;br /&gt;
Disabling the OpenGL extensions list in startup.txt.&lt;br /&gt;
This part replaces the function call UUrStartupMessage(&amp;quot;OpenGL extensions = %s&amp;quot;, extensions); with noops (0x90).&lt;br /&gt;
;OLD&lt;br /&gt;
{|cellspacing=0&lt;br /&gt;
{{HexRow|0xBDA0|&lt;br /&gt;
|10|53|00|E8|B8|8A|01|00|8B|15|00|06|56|00|8B|82|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|00|00|00|00|00|00|00|00|&lt;br /&gt;
|.S.è¸Š..‹...V.‹‚}}&lt;br /&gt;
{{HexRow|0xBDB0|&lt;br /&gt;
|80|05|00|00|50|68|8C|10|53|00|E8|A1|8A|01|00|8B|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|FF|&lt;br /&gt;
|€...PhŒ.S.è¡Š..‹}}&lt;br /&gt;
|}&lt;br /&gt;
;NEW&lt;br /&gt;
{|cellspacing=0&lt;br /&gt;
{{HexRow|0xBDA0|&lt;br /&gt;
|10|53|00|E8|B8|8A|01|00|90|90|90|90|90|90|90|90|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|00|00|00|00|00|00|00|00|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|00|00|00|00|00|00|00|00|&lt;br /&gt;
|.S.è¸Š..........}}&lt;br /&gt;
{{HexRow|0xBDB0|&lt;br /&gt;
|90|90|90|90|90|90|90|90|90|90|90|90|90|90|90|8B|&lt;br /&gt;
|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|FF|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|FF|&lt;br /&gt;
|...............‹}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===0xBDD8===&lt;br /&gt;
Disabling the OpenGL extensions list in startup.txt.&lt;br /&gt;
This bit fixes up the stack pointer.&lt;br /&gt;
;OLD&lt;br /&gt;
:0x28&lt;br /&gt;
;NEW&lt;br /&gt;
:0x20&lt;br /&gt;
&lt;br /&gt;
===0x247F0===&lt;br /&gt;
Disables a function by replacing the first byte with a retn opcode (0xC3).&lt;br /&gt;
;OLD&lt;br /&gt;
:0x8B&lt;br /&gt;
;NEW&lt;br /&gt;
:0xC3&lt;br /&gt;
===0x24860===&lt;br /&gt;
Disables UUrStartupMessage by replacing the first byte with a retn opcode (0xC3). This effectively creates a blank function so startup.txt never gets created.&lt;br /&gt;
;OLD&lt;br /&gt;
:0x8B&lt;br /&gt;
;NEW&lt;br /&gt;
:0xC3&lt;br /&gt;
===0x31C40===&lt;br /&gt;
Disables another function. (console output?)&lt;br /&gt;
;OLD&lt;br /&gt;
:0x8B&lt;br /&gt;
;NEW&lt;br /&gt;
:0xC3&lt;br /&gt;
===0x7A0D0===&lt;br /&gt;
Disables another function.&lt;br /&gt;
;OLD&lt;br /&gt;
:0x8B&lt;br /&gt;
;NEW&lt;br /&gt;
:0xC3&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Dev Mode==&lt;br /&gt;
*First try was just to use the &amp;quot;killmequick&amp;quot; slot to call up the dev mode.&lt;br /&gt;
*Then I tried putting the &amp;quot;thedayismine&amp;quot; at the end of the EXE (ugly).&lt;br /&gt;
*The messages were those from killmequick, slightly modified.&lt;br /&gt;
It turned out that Ian&#039;s patch disables the console output buffer (one of the 8B &amp;gt;&amp;gt; C3 patches up there).&lt;br /&gt;
:Not sure which is which: looks like I eventually reverted all 4 (since I don&#039;t get a Blam at startup).&lt;br /&gt;
Anyway, eventually I gave up on &amp;quot;minor&amp;quot; patching, and did the thing below...&lt;br /&gt;
===0x1533F0===&lt;br /&gt;
Massively reordered cheatcode table&lt;br /&gt;
;OLD&lt;br /&gt;
  Offset    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F&lt;br /&gt;
 001533F0                          18 3A 55 00 FC 39 55 00          .:U.ü9U.&lt;br /&gt;
 00153400  E0 39 55 00 00 00 00 00 D4 39 55 00 BC 39 55 00  à9U.....Ô9U.¼9U.&lt;br /&gt;
 00153410  A4 39 55 00 01 00 00 00 94 39 55 00 80 39 55 00  ¤9U.....�?9U.€9U.&lt;br /&gt;
 00153420  68 39 55 00 02 00 00 00 58 39 55 00 44 39 55 00  h9U.....X9U.D9U.&lt;br /&gt;
 00153430  2C 39 55 00 03 00 00 00 24 39 55 00 10 39 55 00  ,9U.....$9U..9U.&lt;br /&gt;
 00153440  00 00 00 00 04 00 00 00 04 39 55 00 EC 38 55 00  .........9U.ì8U.&lt;br /&gt;
 00153450  D0 38 55 00 05 00 00 00 C4 38 55 00 B0 38 55 00  �?8U.....Ä8U.°8U.&lt;br /&gt;
 00153460  00 00 00 00 06 00 00 00 A4 38 55 00 8C 38 55 00  ........¤8U.Œ8U.&lt;br /&gt;
 00153470  00 00 00 00 07 00 00 00 84 38 55 00 70 38 55 00  ........„8U.p8U.&lt;br /&gt;
 00153480  5C 38 55 00 08 00 00 00 54 38 55 00 40 38 55 00  \8U.....T8U.@8U.&lt;br /&gt;
 00153490  2C 38 55 00 09 00 00 00 20 38 55 00 08 38 55 00  ,8U..... 8U..8U.&lt;br /&gt;
 001534A0  EC 37 55 00 0A 00 00 00 DC 37 55 00 C0 37 55 00  ì7U.....Ü7U.À7U.&lt;br /&gt;
 001534B0  A4 37 55 00 0C 00 00 00 94 37 55 00 7C 37 55 00  ¤7U.....�?7U.|7U.&lt;br /&gt;
 001534C0  64 37 55 00 0D 00 00 00 58 37 55 00 40 37 55 00  d7U.....X7U.@7U.&lt;br /&gt;
 001534D0  28 37 55 00 0E 00 00 00 1C 37 55 00 04 37 55 00  (7U......7U..7U.&lt;br /&gt;
 001534E0  EC 36 55 00 0F 00 00 00 E0 36 55 00 C8 36 55 00  ì6U.....à6U.È6U.&lt;br /&gt;
 001534F0  B0 36 55 00 10 00 00 00 A4 36 55 00 90 36 55 00  °6U.....¤6U..6U.&lt;br /&gt;
 00153500  78 36 55 00 11 00 00 00 68 36 55 00 50 36 55 00  x6U.....h6U.P6U.&lt;br /&gt;
 00153510  00 00 00 00 12 00 00 00 40 36 55 00 28 36 55 00  ........@6U.(6U.&lt;br /&gt;
 00153520  0C 36 55 00 13 00 00 00 00 36 55 00 EC 35 55 00  .6U......6U.ì5U.&lt;br /&gt;
 00153530  D8 35 55 00 14 00 00 00 CC 35 55 00 B8 35 55 00  Ø5U.....Ì5U.¸5U.&lt;br /&gt;
 00153540  A0 35 55 00 15 00 00 00 00 00 00 00 00 00 00 00   5U.............&lt;br /&gt;
 00153550  00 00 00 00 00 00 00 00                          ........&lt;br /&gt;
;NEW&lt;br /&gt;
  Offset    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F&lt;br /&gt;
 001533F0                          A0 35 55 00 AD 35 55 00           5U.­5U.&lt;br /&gt;
 00153400  C7 35 55 00 00 00 00 00 E2 35 55 00 EE 35 55 00  Ç5U.....â5U.î5U.&lt;br /&gt;
 00153410  04 36 55 00 01 00 00 00 1B 36 55 00 28 36 55 00  .6U......6U.(6U.&lt;br /&gt;
 00153420  3C 36 55 00 02 00 00 00 51 36 55 00 5F 36 55 00  &amp;lt;6U.....Q6U._6U.&lt;br /&gt;
 00153430  73 36 55 00 03 00 00 00 88 36 55 00 90 36 55 00  s6U.....ˆ6U..6U.&lt;br /&gt;
 00153440  00 00 00 00 04 00 00 00 A2 36 55 00 AD 36 55 00  ........¢6U.­6U.&lt;br /&gt;
 00153450  C5 36 55 00 05 00 00 00 DE 36 55 00 E7 36 55 00  Å6U.....Þ6U.ç6U.&lt;br /&gt;
 00153460  00 00 00 00 06 00 00 00 FB 36 55 00 05 37 55 00  ........û6U..7U.&lt;br /&gt;
 00153470  00 00 00 00 07 00 00 00 1A 37 55 00 22 37 55 00  .........7U.&amp;quot;7U.&lt;br /&gt;
 00153480  33 37 55 00 08 00 00 00 45 37 55 00 4C 37 55 00  37U.....E7U.L7U.&lt;br /&gt;
 00153490  5E 37 55 00 09 00 00 00 71 37 55 00 7B 37 55 00  ^7U.....q7U.{7U.&lt;br /&gt;
 001534A0  93 37 55 00 0A 00 00 00 AC 37 55 00 B9 37 55 00  “7U.....¬7U.¹7U.&lt;br /&gt;
 001534B0  D0 37 55 00 0B 00 00 00 E8 37 55 00 F6 37 55 00  �?7U.....è7U.ö7U.&lt;br /&gt;
 001534C0  10 38 55 00 0C 00 00 00 2B 38 55 00 38 38 55 00  .8U.....+8U.88U.&lt;br /&gt;
 001534D0  4D 38 55 00 0D 00 00 00 63 38 55 00 6C 38 55 00  M8U.....c8U.l8U.&lt;br /&gt;
 001534E0  81 38 55 00 0E 00 00 00 97 38 55 00 A0 38 55 00  .8U.....—8U. 8U.&lt;br /&gt;
 001534F0  B6 38 55 00 0F 00 00 00 CD 38 55 00 D7 38 55 00  ¶8U.....�?8U.×8U.&lt;br /&gt;
 00153500  EC 38 55 00 10 00 00 00 02 39 55 00 0D 39 55 00  ì8U......9U..9U.&lt;br /&gt;
 00153510  21 39 55 00 11 00 00 00 36 39 55 00 45 39 55 00  !9U.....69U.E9U.&lt;br /&gt;
 00153520  00 00 00 00 12 00 00 00 5C 39 55 00 6A 39 55 00  ........\9U.j9U.&lt;br /&gt;
 00153530  82 39 55 00 13 00 00 00 9B 39 55 00 A7 39 55 00  ‚9U.....›9U.§9U.&lt;br /&gt;
 00153540  BA 39 55 00 14 00 00 00 CE 39 55 00 D7 39 55 00  º9U.....Î9U.×9U.&lt;br /&gt;
 00153550  EB 39 55 00 15 00 00 00                          ë9U.....&lt;br /&gt;
===0x1535A0===&lt;br /&gt;
Massively reordered cheatcode strings (packed them as tight as possible to make room for the Dev Mode)&lt;br /&gt;
;OLD&lt;br /&gt;
  Offset    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F&lt;br /&gt;
 001535A0  53 6C 6F 77 20 4D 6F 74 69 6F 6E 20 44 69 73 61  Slow Motion Disa&lt;br /&gt;
 001535B0  62 6C 65 64 00 00 00 00 53 6C 6F 77 20 4D 6F 74  bled....Slow Mot&lt;br /&gt;
 001535C0  69 6F 6E 20 45 6E 61 62 6C 65 64 00 63 61 72 6F  ion Enabled.caro&lt;br /&gt;
 001535D0  75 73 65 6C 00 00 00 00 55 6C 74 72 61 20 4D 6F  usel....Ultra Mo&lt;br /&gt;
 001535E0  64 65 20 44 69 73 61 62 6C 65 64 00 55 6C 74 72  de Disabled.Ultr&lt;br /&gt;
 001535F0  61 20 4D 6F 64 65 20 45 6E 61 62 6C 65 64 00 00  a Mode Enabled..&lt;br /&gt;
 00153600  6B 69 6C 6C 6D 65 71 75 69 63 6B 00 46 69 73 74  killmequick.Fist&lt;br /&gt;
 00153610  73 20 4F 66 20 4C 65 67 65 6E 64 20 44 69 73 61  s Of Legend Disa&lt;br /&gt;
 00153620  62 6C 65 64 00 00 00 00 46 69 73 74 73 20 4F 66  bled....Fists Of&lt;br /&gt;
 00153630  20 4C 65 67 65 6E 64 20 45 6E 61 62 6C 65 64 00   Legend Enabled.&lt;br /&gt;
 00153640  66 69 73 74 73 6F 66 6C 65 67 65 6E 64 00 00 00  fistsoflegend...&lt;br /&gt;
 00153650  57 65 61 70 6F 6E 73 20 4C 6F 63 6B 65 72 20 43  Weapons Locker C&lt;br /&gt;
 00153660  72 65 61 74 65 64 00 00 6D 75 6E 69 74 69 6F 6E  reated..munition&lt;br /&gt;
 00153670  66 72 65 6E 7A 79 00 00 50 68 61 73 65 20 43 6C  frenzy..Phase Cl&lt;br /&gt;
 00153680  6F 61 6B 20 44 69 73 61 62 6C 65 64 00 00 00 00  oak Disabled....&lt;br /&gt;
 00153690  50 68 61 73 65 20 43 6C 6F 61 6B 20 45 6E 61 62  Phase Cloak Enab&lt;br /&gt;
 001536A0  6C 65 64 00 6D 6F 6F 6E 73 68 61 64 6F 77 00 00  led.moonshadow..&lt;br /&gt;
 001536B0  52 65 67 65 6E 65 72 61 74 69 6F 6E 20 44 69 73  Regeneration Dis&lt;br /&gt;
 001536C0  61 62 6C 65 64 00 00 00 52 65 67 65 6E 65 72 61  abled...Regenera&lt;br /&gt;
 001536D0  74 69 6F 6E 20 45 6E 61 62 6C 65 64 00 00 00 00  tion Enabled....&lt;br /&gt;
 001536E0  65 6C 64 65 72 72 75 6E 65 00 00 00 47 6F 64 7A  elderrune...Godz&lt;br /&gt;
 001536F0  69 6C 6C 61 20 4D 6F 64 65 20 44 69 73 61 62 6C  illa Mode Disabl&lt;br /&gt;
 00153700  65 64 00 00 47 6F 64 7A 69 6C 6C 61 20 4D 6F 64  ed..Godzilla Mod&lt;br /&gt;
 00153710  65 20 45 6E 61 62 6C 65 64 00 00 00 62 65 68 65  e Enabled...behe&lt;br /&gt;
 00153720  6D 6F 74 68 00 00 00 00 44 61 6F 64 61 6E 20 50  moth....Daodan P&lt;br /&gt;
 00153730  6F 77 65 72 20 44 69 73 61 62 6C 65 64 00 00 00  ower Disabled...&lt;br /&gt;
 00153740  44 61 6F 64 61 6E 20 50 6F 77 65 72 20 45 6E 61  Daodan Power Ena&lt;br /&gt;
 00153750  62 6C 65 64 00 00 00 00 63 68 65 6E 69 6C 6C 65  bled....chenille&lt;br /&gt;
 00153760  00 00 00 00 47 61 74 6C 69 6E 67 20 47 75 6E 73  ....Gatling Guns&lt;br /&gt;
 00153770  20 44 69 73 61 62 6C 65 64 00 00 00 47 61 74 6C   Disabled...Gatl&lt;br /&gt;
 00153780  69 6E 67 20 47 75 6E 73 20 45 6E 61 62 6C 65 64  ing Guns Enabled&lt;br /&gt;
 00153790  00 00 00 00 72 6F 75 67 68 6A 75 73 74 69 63 65  ....roughjustice&lt;br /&gt;
 001537A0  00 00 00 00 4C 61 73 74 20 4D 61 6E 20 53 74 61  ....Last Man Sta&lt;br /&gt;
 001537B0  6E 64 69 6E 67 20 44 69 73 61 62 6C 65 64 00 00  nding Disabled..&lt;br /&gt;
 001537C0  4C 61 73 74 20 4D 61 6E 20 53 74 61 6E 64 69 6E  Last Man Standin&lt;br /&gt;
 001537D0  67 20 45 6E 61 62 6C 65 64 00 00 00 72 65 73 65  g Enabled...rese&lt;br /&gt;
 001537E0  72 76 6F 69 72 64 6F 67 73 00 00 00 53 75 70 65  rvoirdogs...Supe&lt;br /&gt;
 001537F0  72 20 41 6D 6D 6F 20 4D 6F 64 65 20 44 69 73 61  r Ammo Mode Disa&lt;br /&gt;
 00153800  62 6C 65 64 00 00 00 00 53 75 70 65 72 20 41 6D  bled....Super Am&lt;br /&gt;
 00153810  6D 6F 20 4D 6F 64 65 20 45 6E 61 62 6C 65 64 00  mo Mode Enabled.&lt;br /&gt;
 00153820  73 75 70 65 72 61 6D 6D 6F 00 00 00 4D 69 6E 69  superammo...Mini&lt;br /&gt;
 00153830  20 4D 6F 64 65 20 44 69 73 61 62 6C 65 64 00 00   Mode Disabled..&lt;br /&gt;
 00153840  4D 69 6E 69 20 4D 6F 64 65 20 45 6E 61 62 6C 65  Mini Mode Enable&lt;br /&gt;
 00153850  64 00 00 00 6D 69 6E 69 6D 65 00 00 42 69 67 20  d...minime..Big &lt;br /&gt;
 00153860  48 65 61 64 20 44 69 73 61 62 6C 65 64 00 00 00  Head Disabled...&lt;br /&gt;
 00153870  42 69 67 20 48 65 61 64 20 45 6E 61 62 6C 65 64  Big Head Enabled&lt;br /&gt;
 00153880  00 00 00 00 62 69 67 68 65 61 64 00 49 6E 73 74  ....bighead.Inst&lt;br /&gt;
 00153890  61 6E 74 6C 79 20 4C 6F 73 65 20 4C 65 76 65 6C  antly Lose Level&lt;br /&gt;
 001538A0  00 00 00 00 6C 6F 73 65 6C 65 76 65 6C 00 00 00  ....loselevel...&lt;br /&gt;
 001538B0  49 6E 73 74 61 6E 74 6C 79 20 57 69 6E 20 4C 65  Instantly Win Le&lt;br /&gt;
 001538C0  76 65 6C 00 77 69 6E 6C 65 76 65 6C 00 00 00 00  vel.winlevel....&lt;br /&gt;
 001538D0  47 6C 61 73 73 20 46 75 72 6E 69 74 75 72 65 20  Glass Furniture &lt;br /&gt;
 001538E0  44 69 73 61 62 6C 65 64 00 00 00 00 47 6C 61 73  Disabled....Glas&lt;br /&gt;
 001538F0  73 20 46 75 72 6E 69 74 75 72 65 20 45 6E 61 62  s Furniture Enab&lt;br /&gt;
 00153900  6C 65 64 00 67 6C 61 73 73 77 6F 72 6C 64 00 00  led.glassworld..&lt;br /&gt;
 00153910  46 61 74 20 4C 6F 6F 74 20 52 65 63 65 69 76 65  Fat Loot Receive&lt;br /&gt;
 00153920  64 00 00 00 66 61 74 6C 6F 6F 74 00 55 6E 73 74  d...fatloot.Unst&lt;br /&gt;
 00153930  6F 70 70 61 62 6C 65 20 44 69 73 61 62 6C 65 64  oppable Disabled&lt;br /&gt;
 00153940  00 00 00 00 55 6E 73 74 6F 70 70 61 62 6C 65 20  ....Unstoppable &lt;br /&gt;
 00153950  45 6E 61 62 6C 65 64 00 63 61 6E 74 74 6F 75 63  Enabled.canttouc&lt;br /&gt;
 00153960  68 74 68 69 73 00 00 00 4F 6D 6E 69 70 6F 74 65  hthis...Omnipote&lt;br /&gt;
 00153970  6E 63 65 20 44 69 73 61 62 6C 65 64 00 00 00 00  nce Disabled....&lt;br /&gt;
 00153980  4F 6D 6E 69 70 6F 74 65 6E 63 65 20 45 6E 61 62  Omnipotence Enab&lt;br /&gt;
 00153990  6C 65 64 00 74 6F 75 63 68 6F 66 64 65 61 74 68  led.touchofdeath&lt;br /&gt;
 001539A0  00 00 00 00 49 6E 76 69 6E 63 69 62 69 6C 69 74  ....Invincibilit&lt;br /&gt;
 001539B0  79 20 44 69 73 61 62 6C 65 64 00 00 49 6E 76 69  y Disabled..Invi&lt;br /&gt;
 001539C0  6E 63 69 62 69 6C 69 74 79 20 45 6E 61 62 6C 65  ncibility Enable&lt;br /&gt;
 001539D0  64 00 00 00 6C 69 76 65 66 6F 72 65 76 65 72 00  d...liveforever.&lt;br /&gt;
 001539E0  43 68 61 6E 67 65 20 43 68 61 72 61 63 74 65 72  Change Character&lt;br /&gt;
 001539F0  73 20 44 69 73 61 62 6C 65 64 00 00 43 68 61 6E  s Disabled..Chan&lt;br /&gt;
 00153A00  67 65 20 43 68 61 72 61 63 74 65 72 73 20 45 6E  ge Characters En&lt;br /&gt;
 00153A10  61 62 6C 65 64 00 00 00 73 68 61 70 65 73 68 69  abled...shapeshi&lt;br /&gt;
 00153A20  66 74 65 72 00 00 00 00 63 6F 75 6C 64 20 6E 6F  fter....could no&lt;br /&gt;
;NEW&lt;br /&gt;
  Offset    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F&lt;br /&gt;
 001535A0  73 68 61 70 65 73 68 69 66 74 65 72 00 43 68 61  shapeshifter.Cha&lt;br /&gt;
 001535B0  6E 67 65 20 43 68 61 72 61 63 74 65 72 73 20 45  nge Characters E&lt;br /&gt;
 001535C0  6E 61 62 6C 65 64 00 43 68 61 6E 67 65 20 43 68  nabled.Change Ch&lt;br /&gt;
 001535D0  61 72 61 63 74 65 72 73 20 44 69 73 61 62 6C 65  aracters Disable&lt;br /&gt;
 001535E0  64 00 6C 69 76 65 66 6F 72 65 76 65 72 00 49 6E  d.liveforever.In&lt;br /&gt;
 001535F0  76 69 6E 63 69 62 69 6C 69 74 79 20 45 6E 61 62  vincibility Enab&lt;br /&gt;
 00153600  6C 65 64 00 49 6E 76 69 6E 63 69 62 69 6C 69 74  led.Invincibilit&lt;br /&gt;
 00153610  79 20 44 69 73 61 62 6C 65 64 00 74 6F 75 63 68  y Disabled.touch&lt;br /&gt;
 00153620  6F 66 64 65 61 74 68 00 4F 6D 6E 69 70 6F 74 65  ofdeath.Omnipote&lt;br /&gt;
 00153630  6E 63 65 20 45 6E 61 62 6C 65 64 00 4F 6D 6E 69  nce Enabled.Omni&lt;br /&gt;
 00153640  70 6F 74 65 6E 63 65 20 44 69 73 61 62 6C 65 64  potence Disabled&lt;br /&gt;
 00153650  00 63 61 6E 74 74 6F 75 63 68 74 68 69 73 00 55  .canttouchthis.U&lt;br /&gt;
 00153660  6E 73 74 6F 70 70 61 62 6C 65 20 45 6E 61 62 6C  nstoppable Enabl&lt;br /&gt;
 00153670  65 64 00 55 6E 73 74 6F 70 70 61 62 6C 65 20 44  ed.Unstoppable D&lt;br /&gt;
 00153680  69 73 61 62 6C 65 64 00 66 61 74 6C 6F 6F 74 00  isabled.fatloot.&lt;br /&gt;
 00153690  46 61 74 20 4C 6F 6F 74 20 52 65 63 65 69 76 65  Fat Loot Receive&lt;br /&gt;
 001536A0  64 00 67 6C 61 73 73 77 6F 72 6C 64 00 47 6C 61  d.glassworld.Gla&lt;br /&gt;
 001536B0  73 73 20 46 75 72 6E 69 74 75 72 65 20 45 6E 61  ss Furniture Ena&lt;br /&gt;
 001536C0  62 6C 65 64 00 47 6C 61 73 73 20 46 75 72 6E 69  bled.Glass Furni&lt;br /&gt;
 001536D0  74 75 72 65 20 44 69 73 61 62 6C 65 64 00 77 69  ture Disabled.wi&lt;br /&gt;
 001536E0  6E 6C 65 76 65 6C 00 49 6E 73 74 61 6E 74 6C 79  nlevel.Instantly&lt;br /&gt;
 001536F0  20 57 69 6E 20 4C 65 76 65 6C 00 6C 6F 73 65 6C   Win Level.losel&lt;br /&gt;
 00153700  65 76 65 6C 00 49 6E 73 74 61 6E 74 6C 79 20 4C  evel.Instantly L&lt;br /&gt;
 00153710  6F 73 65 20 4C 65 76 65 6C 00 62 69 67 68 65 61  ose Level.bighea&lt;br /&gt;
 00153720  64 00 42 69 67 20 48 65 61 64 20 45 6E 61 62 6C  d.Big Head Enabl&lt;br /&gt;
 00153730  65 64 00 42 69 67 20 48 65 61 64 20 44 69 73 61  ed.Big Head Disa&lt;br /&gt;
 00153740  62 6C 65 64 00 6D 69 6E 69 6D 65 00 4D 69 6E 69  bled.minime.Mini&lt;br /&gt;
 00153750  20 4D 6F 64 65 20 45 6E 61 62 6C 65 64 00 4D 69   Mode Enabled.Mi&lt;br /&gt;
 00153760  6E 69 20 4D 6F 64 65 20 44 69 73 61 62 6C 65 64  ni Mode Disabled&lt;br /&gt;
 00153770  00 73 75 70 65 72 61 6D 6D 6F 00 53 75 70 65 72  .superammo.Super&lt;br /&gt;
 00153780  20 41 6D 6D 6F 20 4D 6F 64 65 20 45 6E 61 62 6C   Ammo Mode Enabl&lt;br /&gt;
 00153790  65 64 00 53 75 70 65 72 20 41 6D 6D 6F 20 4D 6F  ed.Super Ammo Mo&lt;br /&gt;
 001537A0  64 65 20 44 69 73 61 62 6C 65 64 00 78 00 65 64  de Disabled.x.ed&lt;br /&gt;
 001537B0  61 79 69 73 6D 69 6E 65 00 44 65 76 65 6C 6F 70  ayismine.Develop&lt;br /&gt;
 001537C0  65 72 20 4D 6F 64 65 20 45 6E 61 62 6C 65 64 00  er Mode Enabled.&lt;br /&gt;
 001537D0  44 65 76 65 6C 6F 70 65 72 20 4D 6F 64 65 20 44  Developer Mode D&lt;br /&gt;
 001537E0  69 73 61 62 6C 65 64 00 72 65 73 65 72 76 6F 69  isabled.reservoi&lt;br /&gt;
 001537F0  72 64 6F 67 73 00 4C 61 73 74 20 4D 61 6E 20 53  rdogs.Last Man S&lt;br /&gt;
 00153800  74 61 6E 64 69 6E 67 20 45 6E 61 62 6C 65 64 00  tanding Enabled.&lt;br /&gt;
 00153810  4C 61 73 74 20 4D 61 6E 20 53 74 61 6E 64 69 6E  Last Man Standin&lt;br /&gt;
 00153820  67 20 44 69 73 61 62 6C 65 64 00 72 6F 75 67 68  g Disabled.rough&lt;br /&gt;
 00153830  6A 75 73 74 69 63 65 00 47 61 74 6C 69 6E 67 20  justice.Gatling &lt;br /&gt;
 00153840  47 75 6E 73 20 45 6E 61 62 6C 65 64 00 47 61 74  Guns Enabled.Gat&lt;br /&gt;
 00153850  6C 69 6E 67 20 47 75 6E 73 20 44 69 73 61 62 6C  ling Guns Disabl&lt;br /&gt;
 00153860  65 64 00 63 68 65 6E 69 6C 6C 65 00 44 61 6F 64  ed.chenille.Daod&lt;br /&gt;
 00153870  61 6E 20 50 6F 77 65 72 20 45 6E 61 62 6C 65 64  an Power Enabled&lt;br /&gt;
 00153880  00 44 61 6F 64 61 6E 20 50 6F 77 65 72 20 44 69  .Daodan Power Di&lt;br /&gt;
 00153890  73 61 62 6C 65 64 00 62 65 68 65 6D 6F 74 68 00  sabled.behemoth.&lt;br /&gt;
 001538A0  47 6F 64 7A 69 6C 6C 61 20 4D 6F 64 65 20 45 6E  Godzilla Mode En&lt;br /&gt;
 001538B0  61 62 6C 65 64 00 47 6F 64 7A 69 6C 6C 61 20 4D  abled.Godzilla M&lt;br /&gt;
 001538C0  6F 64 65 20 44 69 73 61 62 6C 65 64 00 65 6C 64  ode Disabled.eld&lt;br /&gt;
 001538D0  65 72 72 75 6E 65 00 52 65 67 65 6E 65 72 61 74  errune.Regenerat&lt;br /&gt;
 001538E0  69 6F 6E 20 45 6E 61 62 6C 65 64 00 52 65 67 65  ion Enabled.Rege&lt;br /&gt;
 001538F0  6E 65 72 61 74 69 6F 6E 20 44 69 73 61 62 6C 65  neration Disable&lt;br /&gt;
 00153900  64 00 6D 6F 6F 6E 73 68 61 64 6F 77 00 50 68 61  d.moonshadow.Pha&lt;br /&gt;
 00153910  73 65 20 43 6C 6F 61 6B 20 45 6E 61 62 6C 65 64  se Cloak Enabled&lt;br /&gt;
 00153920  00 50 68 61 73 65 20 43 6C 6F 61 6B 20 44 69 73  .Phase Cloak Dis&lt;br /&gt;
 00153930  61 62 6C 65 64 00 6D 75 6E 69 74 69 6F 6E 66 72  abled.munitionfr&lt;br /&gt;
 00153940  65 6E 7A 79 00 57 65 61 70 6F 6E 73 20 4C 6F 63  enzy.Weapons Loc&lt;br /&gt;
 00153950  6B 65 72 20 43 72 65 61 74 65 64 00 66 69 73 74  ker Created.fist&lt;br /&gt;
 00153960  73 6F 66 6C 65 67 65 6E 64 00 46 69 73 74 73 20  soflegend.Fists &lt;br /&gt;
 00153970  4F 66 20 4C 65 67 65 6E 64 20 45 6E 61 62 6C 65  Of Legend Enable&lt;br /&gt;
 00153980  64 00 46 69 73 74 73 20 4F 66 20 4C 65 67 65 6E  d.Fists Of Legen&lt;br /&gt;
 00153990  64 20 44 69 73 61 62 6C 65 64 00 6B 69 6C 6C 6D  d Disabled.killm&lt;br /&gt;
 001539A0  65 71 75 69 63 6B 00 55 6C 74 72 61 20 4D 6F 64  equick.Ultra Mod&lt;br /&gt;
 001539B0  65 20 45 6E 61 62 6C 65 64 00 55 6C 74 72 61 20  e Enabled.Ultra &lt;br /&gt;
 001539C0  4D 6F 64 65 20 44 69 73 61 62 6C 65 64 00 63 61  Mode Disabled.ca&lt;br /&gt;
 001539D0  72 6F 75 73 65 6C 00 53 6C 6F 77 20 4D 6F 74 69  rousel.Slow Moti&lt;br /&gt;
 001539E0  6F 6E 20 45 6E 61 62 6C 65 64 00 53 6C 6F 77 20  on Enabled.Slow &lt;br /&gt;
 001539F0  4D 6F 74 69 6F 6E 20 44 69 73 61 62 6C 65 64 00  Motion Disabled.&lt;br /&gt;
 00153A00  00 00 00 00 00 00 6F 72 69 67 69 6E 61 6C 20 63  ......original c&lt;br /&gt;
 00153A10  68 65 61 74 20 73 74 72 69 6E 67 73 20 65 6E 64  heat strings end&lt;br /&gt;
 00153A20  48 45 52 45 00 00 00 00 63 6F 75 6C 64 20 6E 6F  HERE....could no&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==mousebutton3==&lt;br /&gt;
This was mistakenly bound to SHIFT&lt;br /&gt;
===0x3316===&lt;br /&gt;
;OLD&lt;br /&gt;
:6A 10&lt;br /&gt;
;NEW&lt;br /&gt;
:6A 04&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Direct Input==&lt;br /&gt;
===0x2E6D===&lt;br /&gt;
enabling Direct Input&lt;br /&gt;
;OLD&lt;br /&gt;
:75 62&lt;br /&gt;
;NEW&lt;br /&gt;
:EB 62&lt;br /&gt;
&lt;br /&gt;
===0x129389===&lt;br /&gt;
binding the &#039;&#039;&#039;pagedown&#039;&#039;&#039; event&lt;br /&gt;
;OLD:00&lt;br /&gt;
;NEW:AF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==thedayismine to x==&lt;br /&gt;
Eventually I got fed up with typing the cheat every time I reloaded Oni (because of &#039;&#039;&#039;level0_Final&#039;&#039;&#039; hacking).&lt;br /&gt;
:So I changed the Dev Mode cheat to &amp;quot;x&amp;quot; (the only letter that&#039;s not used by any of Oni&#039;s cheats)&lt;br /&gt;
===0x1537AC===&lt;br /&gt;
just overwriting the &amp;quot;th&amp;quot; of thedayismine with an &amp;quot;x&amp;quot; and null char&lt;br /&gt;
;OLD:74 68&lt;br /&gt;
;NEW:78 00&lt;br /&gt;
&lt;br /&gt;
==1280x800x32bit==&lt;br /&gt;
Any other resolution would work the same way.&lt;br /&gt;
===0x8477===&lt;br /&gt;
x resolution of 800x600x32bit mode&lt;br /&gt;
;OLD:20 03&lt;br /&gt;
;NEW:00 05&lt;br /&gt;
===0x847E===&lt;br /&gt;
y resolution of 800x600x32bit mode&lt;br /&gt;
;OLD:58 02&lt;br /&gt;
;NEW:20 03&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=AE:ONK/EXE&amp;diff=11621</id>
		<title>AE:ONK/EXE</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=AE:ONK/EXE&amp;diff=11621"/>
		<updated>2008-09-13T11:47:21Z</updated>

		<summary type="html">&lt;p&gt;RossyMiles: Ian&amp;#039;s patch&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Minimal changelog of the EXE so far (English a.k.a. &amp;quot;standard&amp;quot; version, 1527808 bytes)&lt;br /&gt;
&lt;br /&gt;
Those are only the versions [[User:geyser|I]] have used for some time.&lt;br /&gt;
&lt;br /&gt;
==Original EXE==&lt;br /&gt;
It&#039;s not actually the original EXE I bought (which is 1897472 bytes and checks for the CD)&lt;br /&gt;
:I got this one from GameCopyWorld. It doesn&#039;t check for the CD.&lt;br /&gt;
Possibly it is what Ian refers to as a &amp;quot;prepatched&amp;quot; version&lt;br /&gt;
:I have no idea what original EXE it was obtained from, and what modifications that involved ^^&lt;br /&gt;
&lt;br /&gt;
==Ian&#039;s patch==&lt;br /&gt;
&lt;br /&gt;
===0xBDA0===&lt;br /&gt;
Disabling the OpenGL extensions list in startup.txt.&lt;br /&gt;
This part essentially replaces the function call UUrStartupMessage(&amp;quot;OpenGL extensions = %s&amp;quot;, extensions); with noops (0x90).&lt;br /&gt;
;OLD&lt;br /&gt;
{|cellspacing=0&lt;br /&gt;
{{HexRow|0xBDA0|&lt;br /&gt;
|10|53|00|E8|B8|8A|01|00|8B|15|00|06|56|00|8B|82|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|00|00|00|00|00|00|00|00|&lt;br /&gt;
|.S.è¸Š..‹...V.‹‚}}&lt;br /&gt;
{{HexRow|0xBDB0|&lt;br /&gt;
|80|05|00|00|50|68|8C|10|53|00|E8|A1|8A|01|00|8B|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|FF|&lt;br /&gt;
|€...PhŒ.S.è¡Š..‹}}&lt;br /&gt;
|}&lt;br /&gt;
;NEW&lt;br /&gt;
{|cellspacing=0&lt;br /&gt;
{{HexRow|0xBDA0|&lt;br /&gt;
|10|53|00|E8|B8|8A|01|00|90|90|90|90|90|90|90|90|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|00|00|00|00|00|00|00|00|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|00|00|00|00|00|00|00|00|&lt;br /&gt;
|.S.è¸Š..........}}&lt;br /&gt;
{{HexRow|0xBDB0|&lt;br /&gt;
|90|90|90|90|90|90|90|90|90|90|90|90|90|90|90|8B|&lt;br /&gt;
|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|FF|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|00|00|00|00|00|00|00|00|00|00|00|00|00|00|00|FF|&lt;br /&gt;
|...............‹}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===0xBDD8===&lt;br /&gt;
Disabling the OpenGL extensions list in startup.txt.&lt;br /&gt;
This bit fixes up the stack pointer.&lt;br /&gt;
;OLD&lt;br /&gt;
:0x28&lt;br /&gt;
;NEW&lt;br /&gt;
:0x20&lt;br /&gt;
&lt;br /&gt;
===0x247F0===&lt;br /&gt;
Disables a function by replacing the first byte with a retn opcode (0xC3).&lt;br /&gt;
;OLD&lt;br /&gt;
:0x8B&lt;br /&gt;
;NEW&lt;br /&gt;
:0xC3&lt;br /&gt;
===0x24860===&lt;br /&gt;
Disables UUrStartupMessage by replacing the first byte with a retn opcode (0xC3). This effectively creates a blank function so startup.txt never gets created.&lt;br /&gt;
;OLD&lt;br /&gt;
:0x8B&lt;br /&gt;
;NEW&lt;br /&gt;
:0xC3&lt;br /&gt;
===0x31C40===&lt;br /&gt;
Disables another function. (console output?)&lt;br /&gt;
;OLD&lt;br /&gt;
:0x8B&lt;br /&gt;
;NEW&lt;br /&gt;
:0xC3&lt;br /&gt;
===0x7A0D0===&lt;br /&gt;
Disables another function.&lt;br /&gt;
;OLD&lt;br /&gt;
:0x8B&lt;br /&gt;
;NEW&lt;br /&gt;
:0xC3&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==Dev Mode==&lt;br /&gt;
*First try was just to use the &amp;quot;killmequick&amp;quot; slot to call up the dev mode.&lt;br /&gt;
*Then I tried putting the &amp;quot;thedayismine&amp;quot; at the end of the EXE (ugly).&lt;br /&gt;
*The messages were those from killmequick, slightly modified.&lt;br /&gt;
It turned out that Ian&#039;s patch disables the console output buffer (one of the 8B &amp;gt;&amp;gt; C3 patches up there).&lt;br /&gt;
:Not sure which is which: looks like I eventually reverted all 4 (since I don&#039;t get a Blam at startup).&lt;br /&gt;
Anyway, eventually I gave up on &amp;quot;minor&amp;quot; patching, and did the thing below...&lt;br /&gt;
===0x1533F0===&lt;br /&gt;
Massively reordered cheatcode table&lt;br /&gt;
;OLD&lt;br /&gt;
  Offset    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F&lt;br /&gt;
 001533F0                          18 3A 55 00 FC 39 55 00          .:U.ü9U.&lt;br /&gt;
 00153400  E0 39 55 00 00 00 00 00 D4 39 55 00 BC 39 55 00  à9U.....Ô9U.¼9U.&lt;br /&gt;
 00153410  A4 39 55 00 01 00 00 00 94 39 55 00 80 39 55 00  ¤9U.....�?9U.€9U.&lt;br /&gt;
 00153420  68 39 55 00 02 00 00 00 58 39 55 00 44 39 55 00  h9U.....X9U.D9U.&lt;br /&gt;
 00153430  2C 39 55 00 03 00 00 00 24 39 55 00 10 39 55 00  ,9U.....$9U..9U.&lt;br /&gt;
 00153440  00 00 00 00 04 00 00 00 04 39 55 00 EC 38 55 00  .........9U.ì8U.&lt;br /&gt;
 00153450  D0 38 55 00 05 00 00 00 C4 38 55 00 B0 38 55 00  �?8U.....Ä8U.°8U.&lt;br /&gt;
 00153460  00 00 00 00 06 00 00 00 A4 38 55 00 8C 38 55 00  ........¤8U.Œ8U.&lt;br /&gt;
 00153470  00 00 00 00 07 00 00 00 84 38 55 00 70 38 55 00  ........„8U.p8U.&lt;br /&gt;
 00153480  5C 38 55 00 08 00 00 00 54 38 55 00 40 38 55 00  \8U.....T8U.@8U.&lt;br /&gt;
 00153490  2C 38 55 00 09 00 00 00 20 38 55 00 08 38 55 00  ,8U..... 8U..8U.&lt;br /&gt;
 001534A0  EC 37 55 00 0A 00 00 00 DC 37 55 00 C0 37 55 00  ì7U.....Ü7U.À7U.&lt;br /&gt;
 001534B0  A4 37 55 00 0C 00 00 00 94 37 55 00 7C 37 55 00  ¤7U.....�?7U.|7U.&lt;br /&gt;
 001534C0  64 37 55 00 0D 00 00 00 58 37 55 00 40 37 55 00  d7U.....X7U.@7U.&lt;br /&gt;
 001534D0  28 37 55 00 0E 00 00 00 1C 37 55 00 04 37 55 00  (7U......7U..7U.&lt;br /&gt;
 001534E0  EC 36 55 00 0F 00 00 00 E0 36 55 00 C8 36 55 00  ì6U.....à6U.È6U.&lt;br /&gt;
 001534F0  B0 36 55 00 10 00 00 00 A4 36 55 00 90 36 55 00  °6U.....¤6U..6U.&lt;br /&gt;
 00153500  78 36 55 00 11 00 00 00 68 36 55 00 50 36 55 00  x6U.....h6U.P6U.&lt;br /&gt;
 00153510  00 00 00 00 12 00 00 00 40 36 55 00 28 36 55 00  ........@6U.(6U.&lt;br /&gt;
 00153520  0C 36 55 00 13 00 00 00 00 36 55 00 EC 35 55 00  .6U......6U.ì5U.&lt;br /&gt;
 00153530  D8 35 55 00 14 00 00 00 CC 35 55 00 B8 35 55 00  Ø5U.....Ì5U.¸5U.&lt;br /&gt;
 00153540  A0 35 55 00 15 00 00 00 00 00 00 00 00 00 00 00   5U.............&lt;br /&gt;
 00153550  00 00 00 00 00 00 00 00                          ........&lt;br /&gt;
;NEW&lt;br /&gt;
  Offset    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F&lt;br /&gt;
 001533F0                          A0 35 55 00 AD 35 55 00           5U.­5U.&lt;br /&gt;
 00153400  C7 35 55 00 00 00 00 00 E2 35 55 00 EE 35 55 00  Ç5U.....â5U.î5U.&lt;br /&gt;
 00153410  04 36 55 00 01 00 00 00 1B 36 55 00 28 36 55 00  .6U......6U.(6U.&lt;br /&gt;
 00153420  3C 36 55 00 02 00 00 00 51 36 55 00 5F 36 55 00  &amp;lt;6U.....Q6U._6U.&lt;br /&gt;
 00153430  73 36 55 00 03 00 00 00 88 36 55 00 90 36 55 00  s6U.....ˆ6U..6U.&lt;br /&gt;
 00153440  00 00 00 00 04 00 00 00 A2 36 55 00 AD 36 55 00  ........¢6U.­6U.&lt;br /&gt;
 00153450  C5 36 55 00 05 00 00 00 DE 36 55 00 E7 36 55 00  Å6U.....Þ6U.ç6U.&lt;br /&gt;
 00153460  00 00 00 00 06 00 00 00 FB 36 55 00 05 37 55 00  ........û6U..7U.&lt;br /&gt;
 00153470  00 00 00 00 07 00 00 00 1A 37 55 00 22 37 55 00  .........7U.&amp;quot;7U.&lt;br /&gt;
 00153480  33 37 55 00 08 00 00 00 45 37 55 00 4C 37 55 00  37U.....E7U.L7U.&lt;br /&gt;
 00153490  5E 37 55 00 09 00 00 00 71 37 55 00 7B 37 55 00  ^7U.....q7U.{7U.&lt;br /&gt;
 001534A0  93 37 55 00 0A 00 00 00 AC 37 55 00 B9 37 55 00  “7U.....¬7U.¹7U.&lt;br /&gt;
 001534B0  D0 37 55 00 0B 00 00 00 E8 37 55 00 F6 37 55 00  �?7U.....è7U.ö7U.&lt;br /&gt;
 001534C0  10 38 55 00 0C 00 00 00 2B 38 55 00 38 38 55 00  .8U.....+8U.88U.&lt;br /&gt;
 001534D0  4D 38 55 00 0D 00 00 00 63 38 55 00 6C 38 55 00  M8U.....c8U.l8U.&lt;br /&gt;
 001534E0  81 38 55 00 0E 00 00 00 97 38 55 00 A0 38 55 00  .8U.....—8U. 8U.&lt;br /&gt;
 001534F0  B6 38 55 00 0F 00 00 00 CD 38 55 00 D7 38 55 00  ¶8U.....�?8U.×8U.&lt;br /&gt;
 00153500  EC 38 55 00 10 00 00 00 02 39 55 00 0D 39 55 00  ì8U......9U..9U.&lt;br /&gt;
 00153510  21 39 55 00 11 00 00 00 36 39 55 00 45 39 55 00  !9U.....69U.E9U.&lt;br /&gt;
 00153520  00 00 00 00 12 00 00 00 5C 39 55 00 6A 39 55 00  ........\9U.j9U.&lt;br /&gt;
 00153530  82 39 55 00 13 00 00 00 9B 39 55 00 A7 39 55 00  ‚9U.....›9U.§9U.&lt;br /&gt;
 00153540  BA 39 55 00 14 00 00 00 CE 39 55 00 D7 39 55 00  º9U.....Î9U.×9U.&lt;br /&gt;
 00153550  EB 39 55 00 15 00 00 00                          ë9U.....&lt;br /&gt;
===0x1535A0===&lt;br /&gt;
Massively reordered cheatcode strings (packed them as tight as possible to make room for the Dev Mode)&lt;br /&gt;
;OLD&lt;br /&gt;
  Offset    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F&lt;br /&gt;
 001535A0  53 6C 6F 77 20 4D 6F 74 69 6F 6E 20 44 69 73 61  Slow Motion Disa&lt;br /&gt;
 001535B0  62 6C 65 64 00 00 00 00 53 6C 6F 77 20 4D 6F 74  bled....Slow Mot&lt;br /&gt;
 001535C0  69 6F 6E 20 45 6E 61 62 6C 65 64 00 63 61 72 6F  ion Enabled.caro&lt;br /&gt;
 001535D0  75 73 65 6C 00 00 00 00 55 6C 74 72 61 20 4D 6F  usel....Ultra Mo&lt;br /&gt;
 001535E0  64 65 20 44 69 73 61 62 6C 65 64 00 55 6C 74 72  de Disabled.Ultr&lt;br /&gt;
 001535F0  61 20 4D 6F 64 65 20 45 6E 61 62 6C 65 64 00 00  a Mode Enabled..&lt;br /&gt;
 00153600  6B 69 6C 6C 6D 65 71 75 69 63 6B 00 46 69 73 74  killmequick.Fist&lt;br /&gt;
 00153610  73 20 4F 66 20 4C 65 67 65 6E 64 20 44 69 73 61  s Of Legend Disa&lt;br /&gt;
 00153620  62 6C 65 64 00 00 00 00 46 69 73 74 73 20 4F 66  bled....Fists Of&lt;br /&gt;
 00153630  20 4C 65 67 65 6E 64 20 45 6E 61 62 6C 65 64 00   Legend Enabled.&lt;br /&gt;
 00153640  66 69 73 74 73 6F 66 6C 65 67 65 6E 64 00 00 00  fistsoflegend...&lt;br /&gt;
 00153650  57 65 61 70 6F 6E 73 20 4C 6F 63 6B 65 72 20 43  Weapons Locker C&lt;br /&gt;
 00153660  72 65 61 74 65 64 00 00 6D 75 6E 69 74 69 6F 6E  reated..munition&lt;br /&gt;
 00153670  66 72 65 6E 7A 79 00 00 50 68 61 73 65 20 43 6C  frenzy..Phase Cl&lt;br /&gt;
 00153680  6F 61 6B 20 44 69 73 61 62 6C 65 64 00 00 00 00  oak Disabled....&lt;br /&gt;
 00153690  50 68 61 73 65 20 43 6C 6F 61 6B 20 45 6E 61 62  Phase Cloak Enab&lt;br /&gt;
 001536A0  6C 65 64 00 6D 6F 6F 6E 73 68 61 64 6F 77 00 00  led.moonshadow..&lt;br /&gt;
 001536B0  52 65 67 65 6E 65 72 61 74 69 6F 6E 20 44 69 73  Regeneration Dis&lt;br /&gt;
 001536C0  61 62 6C 65 64 00 00 00 52 65 67 65 6E 65 72 61  abled...Regenera&lt;br /&gt;
 001536D0  74 69 6F 6E 20 45 6E 61 62 6C 65 64 00 00 00 00  tion Enabled....&lt;br /&gt;
 001536E0  65 6C 64 65 72 72 75 6E 65 00 00 00 47 6F 64 7A  elderrune...Godz&lt;br /&gt;
 001536F0  69 6C 6C 61 20 4D 6F 64 65 20 44 69 73 61 62 6C  illa Mode Disabl&lt;br /&gt;
 00153700  65 64 00 00 47 6F 64 7A 69 6C 6C 61 20 4D 6F 64  ed..Godzilla Mod&lt;br /&gt;
 00153710  65 20 45 6E 61 62 6C 65 64 00 00 00 62 65 68 65  e Enabled...behe&lt;br /&gt;
 00153720  6D 6F 74 68 00 00 00 00 44 61 6F 64 61 6E 20 50  moth....Daodan P&lt;br /&gt;
 00153730  6F 77 65 72 20 44 69 73 61 62 6C 65 64 00 00 00  ower Disabled...&lt;br /&gt;
 00153740  44 61 6F 64 61 6E 20 50 6F 77 65 72 20 45 6E 61  Daodan Power Ena&lt;br /&gt;
 00153750  62 6C 65 64 00 00 00 00 63 68 65 6E 69 6C 6C 65  bled....chenille&lt;br /&gt;
 00153760  00 00 00 00 47 61 74 6C 69 6E 67 20 47 75 6E 73  ....Gatling Guns&lt;br /&gt;
 00153770  20 44 69 73 61 62 6C 65 64 00 00 00 47 61 74 6C   Disabled...Gatl&lt;br /&gt;
 00153780  69 6E 67 20 47 75 6E 73 20 45 6E 61 62 6C 65 64  ing Guns Enabled&lt;br /&gt;
 00153790  00 00 00 00 72 6F 75 67 68 6A 75 73 74 69 63 65  ....roughjustice&lt;br /&gt;
 001537A0  00 00 00 00 4C 61 73 74 20 4D 61 6E 20 53 74 61  ....Last Man Sta&lt;br /&gt;
 001537B0  6E 64 69 6E 67 20 44 69 73 61 62 6C 65 64 00 00  nding Disabled..&lt;br /&gt;
 001537C0  4C 61 73 74 20 4D 61 6E 20 53 74 61 6E 64 69 6E  Last Man Standin&lt;br /&gt;
 001537D0  67 20 45 6E 61 62 6C 65 64 00 00 00 72 65 73 65  g Enabled...rese&lt;br /&gt;
 001537E0  72 76 6F 69 72 64 6F 67 73 00 00 00 53 75 70 65  rvoirdogs...Supe&lt;br /&gt;
 001537F0  72 20 41 6D 6D 6F 20 4D 6F 64 65 20 44 69 73 61  r Ammo Mode Disa&lt;br /&gt;
 00153800  62 6C 65 64 00 00 00 00 53 75 70 65 72 20 41 6D  bled....Super Am&lt;br /&gt;
 00153810  6D 6F 20 4D 6F 64 65 20 45 6E 61 62 6C 65 64 00  mo Mode Enabled.&lt;br /&gt;
 00153820  73 75 70 65 72 61 6D 6D 6F 00 00 00 4D 69 6E 69  superammo...Mini&lt;br /&gt;
 00153830  20 4D 6F 64 65 20 44 69 73 61 62 6C 65 64 00 00   Mode Disabled..&lt;br /&gt;
 00153840  4D 69 6E 69 20 4D 6F 64 65 20 45 6E 61 62 6C 65  Mini Mode Enable&lt;br /&gt;
 00153850  64 00 00 00 6D 69 6E 69 6D 65 00 00 42 69 67 20  d...minime..Big &lt;br /&gt;
 00153860  48 65 61 64 20 44 69 73 61 62 6C 65 64 00 00 00  Head Disabled...&lt;br /&gt;
 00153870  42 69 67 20 48 65 61 64 20 45 6E 61 62 6C 65 64  Big Head Enabled&lt;br /&gt;
 00153880  00 00 00 00 62 69 67 68 65 61 64 00 49 6E 73 74  ....bighead.Inst&lt;br /&gt;
 00153890  61 6E 74 6C 79 20 4C 6F 73 65 20 4C 65 76 65 6C  antly Lose Level&lt;br /&gt;
 001538A0  00 00 00 00 6C 6F 73 65 6C 65 76 65 6C 00 00 00  ....loselevel...&lt;br /&gt;
 001538B0  49 6E 73 74 61 6E 74 6C 79 20 57 69 6E 20 4C 65  Instantly Win Le&lt;br /&gt;
 001538C0  76 65 6C 00 77 69 6E 6C 65 76 65 6C 00 00 00 00  vel.winlevel....&lt;br /&gt;
 001538D0  47 6C 61 73 73 20 46 75 72 6E 69 74 75 72 65 20  Glass Furniture &lt;br /&gt;
 001538E0  44 69 73 61 62 6C 65 64 00 00 00 00 47 6C 61 73  Disabled....Glas&lt;br /&gt;
 001538F0  73 20 46 75 72 6E 69 74 75 72 65 20 45 6E 61 62  s Furniture Enab&lt;br /&gt;
 00153900  6C 65 64 00 67 6C 61 73 73 77 6F 72 6C 64 00 00  led.glassworld..&lt;br /&gt;
 00153910  46 61 74 20 4C 6F 6F 74 20 52 65 63 65 69 76 65  Fat Loot Receive&lt;br /&gt;
 00153920  64 00 00 00 66 61 74 6C 6F 6F 74 00 55 6E 73 74  d...fatloot.Unst&lt;br /&gt;
 00153930  6F 70 70 61 62 6C 65 20 44 69 73 61 62 6C 65 64  oppable Disabled&lt;br /&gt;
 00153940  00 00 00 00 55 6E 73 74 6F 70 70 61 62 6C 65 20  ....Unstoppable &lt;br /&gt;
 00153950  45 6E 61 62 6C 65 64 00 63 61 6E 74 74 6F 75 63  Enabled.canttouc&lt;br /&gt;
 00153960  68 74 68 69 73 00 00 00 4F 6D 6E 69 70 6F 74 65  hthis...Omnipote&lt;br /&gt;
 00153970  6E 63 65 20 44 69 73 61 62 6C 65 64 00 00 00 00  nce Disabled....&lt;br /&gt;
 00153980  4F 6D 6E 69 70 6F 74 65 6E 63 65 20 45 6E 61 62  Omnipotence Enab&lt;br /&gt;
 00153990  6C 65 64 00 74 6F 75 63 68 6F 66 64 65 61 74 68  led.touchofdeath&lt;br /&gt;
 001539A0  00 00 00 00 49 6E 76 69 6E 63 69 62 69 6C 69 74  ....Invincibilit&lt;br /&gt;
 001539B0  79 20 44 69 73 61 62 6C 65 64 00 00 49 6E 76 69  y Disabled..Invi&lt;br /&gt;
 001539C0  6E 63 69 62 69 6C 69 74 79 20 45 6E 61 62 6C 65  ncibility Enable&lt;br /&gt;
 001539D0  64 00 00 00 6C 69 76 65 66 6F 72 65 76 65 72 00  d...liveforever.&lt;br /&gt;
 001539E0  43 68 61 6E 67 65 20 43 68 61 72 61 63 74 65 72  Change Character&lt;br /&gt;
 001539F0  73 20 44 69 73 61 62 6C 65 64 00 00 43 68 61 6E  s Disabled..Chan&lt;br /&gt;
 00153A00  67 65 20 43 68 61 72 61 63 74 65 72 73 20 45 6E  ge Characters En&lt;br /&gt;
 00153A10  61 62 6C 65 64 00 00 00 73 68 61 70 65 73 68 69  abled...shapeshi&lt;br /&gt;
 00153A20  66 74 65 72 00 00 00 00 63 6F 75 6C 64 20 6E 6F  fter....could no&lt;br /&gt;
;NEW&lt;br /&gt;
  Offset    0  1  2  3  4  5  6  7  8  9  A  B  C  D  E  F&lt;br /&gt;
 001535A0  73 68 61 70 65 73 68 69 66 74 65 72 00 43 68 61  shapeshifter.Cha&lt;br /&gt;
 001535B0  6E 67 65 20 43 68 61 72 61 63 74 65 72 73 20 45  nge Characters E&lt;br /&gt;
 001535C0  6E 61 62 6C 65 64 00 43 68 61 6E 67 65 20 43 68  nabled.Change Ch&lt;br /&gt;
 001535D0  61 72 61 63 74 65 72 73 20 44 69 73 61 62 6C 65  aracters Disable&lt;br /&gt;
 001535E0  64 00 6C 69 76 65 66 6F 72 65 76 65 72 00 49 6E  d.liveforever.In&lt;br /&gt;
 001535F0  76 69 6E 63 69 62 69 6C 69 74 79 20 45 6E 61 62  vincibility Enab&lt;br /&gt;
 00153600  6C 65 64 00 49 6E 76 69 6E 63 69 62 69 6C 69 74  led.Invincibilit&lt;br /&gt;
 00153610  79 20 44 69 73 61 62 6C 65 64 00 74 6F 75 63 68  y Disabled.touch&lt;br /&gt;
 00153620  6F 66 64 65 61 74 68 00 4F 6D 6E 69 70 6F 74 65  ofdeath.Omnipote&lt;br /&gt;
 00153630  6E 63 65 20 45 6E 61 62 6C 65 64 00 4F 6D 6E 69  nce Enabled.Omni&lt;br /&gt;
 00153640  70 6F 74 65 6E 63 65 20 44 69 73 61 62 6C 65 64  potence Disabled&lt;br /&gt;
 00153650  00 63 61 6E 74 74 6F 75 63 68 74 68 69 73 00 55  .canttouchthis.U&lt;br /&gt;
 00153660  6E 73 74 6F 70 70 61 62 6C 65 20 45 6E 61 62 6C  nstoppable Enabl&lt;br /&gt;
 00153670  65 64 00 55 6E 73 74 6F 70 70 61 62 6C 65 20 44  ed.Unstoppable D&lt;br /&gt;
 00153680  69 73 61 62 6C 65 64 00 66 61 74 6C 6F 6F 74 00  isabled.fatloot.&lt;br /&gt;
 00153690  46 61 74 20 4C 6F 6F 74 20 52 65 63 65 69 76 65  Fat Loot Receive&lt;br /&gt;
 001536A0  64 00 67 6C 61 73 73 77 6F 72 6C 64 00 47 6C 61  d.glassworld.Gla&lt;br /&gt;
 001536B0  73 73 20 46 75 72 6E 69 74 75 72 65 20 45 6E 61  ss Furniture Ena&lt;br /&gt;
 001536C0  62 6C 65 64 00 47 6C 61 73 73 20 46 75 72 6E 69  bled.Glass Furni&lt;br /&gt;
 001536D0  74 75 72 65 20 44 69 73 61 62 6C 65 64 00 77 69  ture Disabled.wi&lt;br /&gt;
 001536E0  6E 6C 65 76 65 6C 00 49 6E 73 74 61 6E 74 6C 79  nlevel.Instantly&lt;br /&gt;
 001536F0  20 57 69 6E 20 4C 65 76 65 6C 00 6C 6F 73 65 6C   Win Level.losel&lt;br /&gt;
 00153700  65 76 65 6C 00 49 6E 73 74 61 6E 74 6C 79 20 4C  evel.Instantly L&lt;br /&gt;
 00153710  6F 73 65 20 4C 65 76 65 6C 00 62 69 67 68 65 61  ose Level.bighea&lt;br /&gt;
 00153720  64 00 42 69 67 20 48 65 61 64 20 45 6E 61 62 6C  d.Big Head Enabl&lt;br /&gt;
 00153730  65 64 00 42 69 67 20 48 65 61 64 20 44 69 73 61  ed.Big Head Disa&lt;br /&gt;
 00153740  62 6C 65 64 00 6D 69 6E 69 6D 65 00 4D 69 6E 69  bled.minime.Mini&lt;br /&gt;
 00153750  20 4D 6F 64 65 20 45 6E 61 62 6C 65 64 00 4D 69   Mode Enabled.Mi&lt;br /&gt;
 00153760  6E 69 20 4D 6F 64 65 20 44 69 73 61 62 6C 65 64  ni Mode Disabled&lt;br /&gt;
 00153770  00 73 75 70 65 72 61 6D 6D 6F 00 53 75 70 65 72  .superammo.Super&lt;br /&gt;
 00153780  20 41 6D 6D 6F 20 4D 6F 64 65 20 45 6E 61 62 6C   Ammo Mode Enabl&lt;br /&gt;
 00153790  65 64 00 53 75 70 65 72 20 41 6D 6D 6F 20 4D 6F  ed.Super Ammo Mo&lt;br /&gt;
 001537A0  64 65 20 44 69 73 61 62 6C 65 64 00 78 00 65 64  de Disabled.x.ed&lt;br /&gt;
 001537B0  61 79 69 73 6D 69 6E 65 00 44 65 76 65 6C 6F 70  ayismine.Develop&lt;br /&gt;
 001537C0  65 72 20 4D 6F 64 65 20 45 6E 61 62 6C 65 64 00  er Mode Enabled.&lt;br /&gt;
 001537D0  44 65 76 65 6C 6F 70 65 72 20 4D 6F 64 65 20 44  Developer Mode D&lt;br /&gt;
 001537E0  69 73 61 62 6C 65 64 00 72 65 73 65 72 76 6F 69  isabled.reservoi&lt;br /&gt;
 001537F0  72 64 6F 67 73 00 4C 61 73 74 20 4D 61 6E 20 53  rdogs.Last Man S&lt;br /&gt;
 00153800  74 61 6E 64 69 6E 67 20 45 6E 61 62 6C 65 64 00  tanding Enabled.&lt;br /&gt;
 00153810  4C 61 73 74 20 4D 61 6E 20 53 74 61 6E 64 69 6E  Last Man Standin&lt;br /&gt;
 00153820  67 20 44 69 73 61 62 6C 65 64 00 72 6F 75 67 68  g Disabled.rough&lt;br /&gt;
 00153830  6A 75 73 74 69 63 65 00 47 61 74 6C 69 6E 67 20  justice.Gatling &lt;br /&gt;
 00153840  47 75 6E 73 20 45 6E 61 62 6C 65 64 00 47 61 74  Guns Enabled.Gat&lt;br /&gt;
 00153850  6C 69 6E 67 20 47 75 6E 73 20 44 69 73 61 62 6C  ling Guns Disabl&lt;br /&gt;
 00153860  65 64 00 63 68 65 6E 69 6C 6C 65 00 44 61 6F 64  ed.chenille.Daod&lt;br /&gt;
 00153870  61 6E 20 50 6F 77 65 72 20 45 6E 61 62 6C 65 64  an Power Enabled&lt;br /&gt;
 00153880  00 44 61 6F 64 61 6E 20 50 6F 77 65 72 20 44 69  .Daodan Power Di&lt;br /&gt;
 00153890  73 61 62 6C 65 64 00 62 65 68 65 6D 6F 74 68 00  sabled.behemoth.&lt;br /&gt;
 001538A0  47 6F 64 7A 69 6C 6C 61 20 4D 6F 64 65 20 45 6E  Godzilla Mode En&lt;br /&gt;
 001538B0  61 62 6C 65 64 00 47 6F 64 7A 69 6C 6C 61 20 4D  abled.Godzilla M&lt;br /&gt;
 001538C0  6F 64 65 20 44 69 73 61 62 6C 65 64 00 65 6C 64  ode Disabled.eld&lt;br /&gt;
 001538D0  65 72 72 75 6E 65 00 52 65 67 65 6E 65 72 61 74  errune.Regenerat&lt;br /&gt;
 001538E0  69 6F 6E 20 45 6E 61 62 6C 65 64 00 52 65 67 65  ion Enabled.Rege&lt;br /&gt;
 001538F0  6E 65 72 61 74 69 6F 6E 20 44 69 73 61 62 6C 65  neration Disable&lt;br /&gt;
 00153900  64 00 6D 6F 6F 6E 73 68 61 64 6F 77 00 50 68 61  d.moonshadow.Pha&lt;br /&gt;
 00153910  73 65 20 43 6C 6F 61 6B 20 45 6E 61 62 6C 65 64  se Cloak Enabled&lt;br /&gt;
 00153920  00 50 68 61 73 65 20 43 6C 6F 61 6B 20 44 69 73  .Phase Cloak Dis&lt;br /&gt;
 00153930  61 62 6C 65 64 00 6D 75 6E 69 74 69 6F 6E 66 72  abled.munitionfr&lt;br /&gt;
 00153940  65 6E 7A 79 00 57 65 61 70 6F 6E 73 20 4C 6F 63  enzy.Weapons Loc&lt;br /&gt;
 00153950  6B 65 72 20 43 72 65 61 74 65 64 00 66 69 73 74  ker Created.fist&lt;br /&gt;
 00153960  73 6F 66 6C 65 67 65 6E 64 00 46 69 73 74 73 20  soflegend.Fists &lt;br /&gt;
 00153970  4F 66 20 4C 65 67 65 6E 64 20 45 6E 61 62 6C 65  Of Legend Enable&lt;br /&gt;
 00153980  64 00 46 69 73 74 73 20 4F 66 20 4C 65 67 65 6E  d.Fists Of Legen&lt;br /&gt;
 00153990  64 20 44 69 73 61 62 6C 65 64 00 6B 69 6C 6C 6D  d Disabled.killm&lt;br /&gt;
 001539A0  65 71 75 69 63 6B 00 55 6C 74 72 61 20 4D 6F 64  equick.Ultra Mod&lt;br /&gt;
 001539B0  65 20 45 6E 61 62 6C 65 64 00 55 6C 74 72 61 20  e Enabled.Ultra &lt;br /&gt;
 001539C0  4D 6F 64 65 20 44 69 73 61 62 6C 65 64 00 63 61  Mode Disabled.ca&lt;br /&gt;
 001539D0  72 6F 75 73 65 6C 00 53 6C 6F 77 20 4D 6F 74 69  rousel.Slow Moti&lt;br /&gt;
 001539E0  6F 6E 20 45 6E 61 62 6C 65 64 00 53 6C 6F 77 20  on Enabled.Slow &lt;br /&gt;
 001539F0  4D 6F 74 69 6F 6E 20 44 69 73 61 62 6C 65 64 00  Motion Disabled.&lt;br /&gt;
 00153A00  00 00 00 00 00 00 6F 72 69 67 69 6E 61 6C 20 63  ......original c&lt;br /&gt;
 00153A10  68 65 61 74 20 73 74 72 69 6E 67 73 20 65 6E 64  heat strings end&lt;br /&gt;
 00153A20  48 45 52 45 00 00 00 00 63 6F 75 6C 64 20 6E 6F  HERE....could no&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==mousebutton3==&lt;br /&gt;
This was mistakenly bound to SHIFT&lt;br /&gt;
===0x3316===&lt;br /&gt;
;OLD&lt;br /&gt;
:6A 10&lt;br /&gt;
;NEW&lt;br /&gt;
:6A 04&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Direct Input==&lt;br /&gt;
===0x2E6D===&lt;br /&gt;
enabling Direct Input&lt;br /&gt;
;OLD&lt;br /&gt;
:75 62&lt;br /&gt;
;NEW&lt;br /&gt;
:EB 62&lt;br /&gt;
&lt;br /&gt;
===0x129389===&lt;br /&gt;
binding the &#039;&#039;&#039;pagedown&#039;&#039;&#039; event&lt;br /&gt;
;OLD:00&lt;br /&gt;
;NEW:AF&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
==thedayismine to x==&lt;br /&gt;
Eventually I got fed up with typing the cheat every time I reloaded Oni (because of &#039;&#039;&#039;level0_Final&#039;&#039;&#039; hacking).&lt;br /&gt;
:So I changed the Dev Mode cheat to &amp;quot;x&amp;quot; (the only letter that&#039;s not used by any of Oni&#039;s cheats)&lt;br /&gt;
===0x1537AC===&lt;br /&gt;
just overwriting the &amp;quot;th&amp;quot; of thedayismine with an &amp;quot;x&amp;quot; and null char&lt;br /&gt;
;OLD:74 68&lt;br /&gt;
;NEW:78 00&lt;br /&gt;
&lt;br /&gt;
==1280x800x32bit==&lt;br /&gt;
Any other resolution would work the same way.&lt;br /&gt;
===0x8477===&lt;br /&gt;
x resolution of 800x600x32bit mode&lt;br /&gt;
;OLD:20 03&lt;br /&gt;
;NEW:00 05&lt;br /&gt;
===0x847E===&lt;br /&gt;
y resolution of 800x600x32bit mode&lt;br /&gt;
;OLD:58 02&lt;br /&gt;
;NEW:20 03&lt;/div&gt;</summary>
		<author><name>RossyMiles</name></author>
	</entry>
</feed>