<?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=Iritscen</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=Iritscen"/>
	<link rel="alternate" type="text/html" href="https://wiki.oni2.net/Special:Contributions/Iritscen"/>
	<updated>2026-04-24T11:29:50Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.39.6</generator>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Media_creation_with_artificial_intelligence&amp;diff=47189</id>
		<title>Media creation with artificial intelligence</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Media_creation_with_artificial_intelligence&amp;diff=47189"/>
		<updated>2026-04-22T18:58:06Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: fixed WP link with 301 response; I guess the lack of capital letter was the problem&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Media creation with artificial intelligence refers to the use of generative AI tools to create or assist in the production of media such as sound, images, video, 3D assets, and maps. In fan and modding contexts, these tools can speed up prototyping and lower technical barriers, but they also introduce important questions about copyright, fair use, output quality, and the relationship between community-made content and official works. This topic therefore includes both the practical use of AI systems and the legal, technical, and creative limits that shape their use.&lt;br /&gt;
&lt;br /&gt;
==Copyright and fair use==&lt;br /&gt;
To understand the full picture of copyright, it is necessary to look at its real-world implementation.&lt;br /&gt;
&lt;br /&gt;
Game companies have a strong interest in not upsetting their &#039;&#039;&#039;fan base&#039;&#039;&#039;, especially organized structures such as gaming communities.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Game communities&#039;&#039;&#039; function as &#039;&#039;&#039;voluntary support structures&#039;&#039;&#039; that provide services companies would otherwise need to fund themselves. Many of these contributions can be understood as direct or indirect &#039;&#039;&#039;sales promotion&#039;&#039;&#039;. These &#039;&#039;&#039;communities&#039;&#039;&#039; typically &#039;&#039;&#039;offer&#039;&#039;&#039;:&lt;br /&gt;
* First contact and &#039;&#039;&#039;general help&#039;&#039;&#039; for [[wp:Newbie#Connotations_of_variants|newbies]].&lt;br /&gt;
* The creation of &#039;&#039;&#039;guides&#039;&#039;&#039;, tips and tricks, and even complete playthroughs.&lt;br /&gt;
* A &#039;&#039;&#039;space for like-minded people&#039;&#039;&#039; to socialize and exchange and develop ideas.&lt;br /&gt;
** Such spaces were forums in the past, nowadays they are real-time communication platform like a Discord channel which is thematically decorated and helps to keep the product in &#039;&#039;&#039;general awareness&#039;&#039;&#039; over long time frames.&lt;br /&gt;
** Communities pose a &#039;&#039;&#039;potential source for researching [https://www.tumblr.com/dragon-ball-meta/175722199189/toriyamas-official-comments-on-broly-for-the-new future products]&#039;&#039;&#039;.&amp;lt;!--//Commented out for now: Well, this is interesting but it quite lengthens the section.// The companies cannot simply &amp;quot;listen to the (hardcore) fans&amp;quot; but have to develop a profitable package that lures as many customers as possible. Nonetheless, &#039;&#039;&#039;fan service&#039;&#039;&#039; remains an important aspect which ranges from &#039;&#039;&#039;[https://www.latimes.com/entertainment-arts/business/story/2020-02-14/sonic-the-hedgehog-got-a-digital-makeover-after-an-internet-backlash-will-it-work respecting the original]&#039;&#039;&#039;, to placing &#039;&#039;&#039;easter eggs&#039;&#039;&#039; and &#039;&#039;&#039;insider jokes&#039;&#039;&#039; - and not &#039;&#039;Japanese&#039;&#039;-like fan service which in the Western world basically translates to &amp;quot;sex sells&amp;quot;.&lt;br /&gt;
*** Besides the dependencies of the target group, it can be good choice to not exaggerate and provide consistent overall concept made from the envisioned world and its characters. [[Konoko#Design_by_Lorraine|Bungie History]]: &amp;quot;Lorraine McLees, Bungie artist, remembers the slight tug of war between the Chicago and Bungie West [offices]: &#039;Their vision of (Konoko) was more overtly -blam!- than ours. We specifically didn&#039;t want her to be just another Lara Croft, so we&#039;d go back and forth with the California office. They&#039;d send Konoko designs back with a bare midriff and the bottom of her breasts exposed, and we&#039;d go back and re-clothe her. The funny thing is that the more we tried to de--blam!-ize her, the more sexy she became.&amp;quot;)--&amp;gt;&lt;br /&gt;
* Support in organizing competitions and other promotional events, including creative activities such as fan art. Cosplay contributions can increase a company&#039;s &#039;&#039;&#039;visibility&#039;&#039;&#039; at events like Gamescom.&lt;br /&gt;
* An &#039;&#039;&#039;additional channel for updates&#039;&#039;&#039; (general information and content announcements).&lt;br /&gt;
* &#039;&#039;&#039;Bug reporting and, in some cases, bug fixing.&#039;&#039;&#039; In rare instances, community members may even contribute to maintaining source code.&lt;br /&gt;
* &#039;&#039;&#039;Mods that improve replay value&#039;&#039;&#039; and thus increase overall &#039;&#039;&#039;customer satisfaction&#039;&#039;&#039;.&lt;br /&gt;
* Increased &#039;&#039;&#039;likelihood&#039;&#039;&#039; that fans will purchase &#039;&#039;&#039;other games and products (merchandise)&#039;&#039;&#039; from the company.&lt;br /&gt;
* A pool of trusted and engaged players who can be recruited as beta testers for new releases.&lt;br /&gt;
&lt;br /&gt;
As a result, most &#039;&#039;&#039;companies also employ community managers&#039;&#039;&#039;. At least for active [[wp:Cash_cow|cash cows]].&lt;br /&gt;
&lt;br /&gt;
In practice, companies often &#039;&#039;&#039;tolerate limited uses of their intellectual property&#039;&#039;&#039; because they benefit from these activities. &#039;&#039;&#039;A strictly enforced copyright regime could suppress creative community contributions, reduce engagement, and ultimately harm the company itself.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
However, this does not mean that copyright is overridden. In some cases, fan works may fall under [[wp:Fair_use|fair use]] (depending on jurisdiction), but more often they exist within a space of &#039;&#039;&#039;informal tolerance or explicit licensing policies&#039;&#039;&#039;.&lt;br /&gt;
* In the USA GenAI content cannot be copyrighted when it is mostly the product of the AI. That is true even when the content is not based on an existing intellectual property.&lt;br /&gt;
&lt;br /&gt;
Game &#039;&#039;&#039;modifications&#039;&#039;&#039; (mods) often remain &#039;&#039;&#039;short of becoming &#039;&#039;independent games&#039;&#039;&#039;&#039;&#039;:&lt;br /&gt;
* Typically, they add optional 2D and 3D content, sometimes in large quantities. However, more fundamental changes - such as new game mechanics - often require access to or modification of the game engine and are therefore limited.&lt;br /&gt;
&lt;br /&gt;
Generative AI (GenAI) has the potential to disrupt this cost–benefit balance:&lt;br /&gt;
* An automated large-scale production of new content based on existing assets may conflict with the company’s interests.&lt;br /&gt;
Considering the &#039;&#039;&#039;artists and technicians&#039;&#039;&#039; involved in creating the original work, mass-produced fan content generated at little or no cost could threaten established creative professions.&lt;br /&gt;
* An overabundance of derivative content may &#039;&#039;&#039;dilute attention&#039;&#039;&#039; and reduce consumer motivation to engage with official products.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The goal should be a form of symbiotic coexistence&#039;&#039;&#039;:&lt;br /&gt;
* Gaming communities should avoid creating direct &#039;&#039;competition&#039;&#039; with official products.&lt;br /&gt;
* In contrast to official expansion packs and [[wp:Downloadable_content|DLCs]], [https://wccftech.com/cyberpunk-2077-vr-mod-taken-down-by-cd-projekt-red/ mods should generally not be placed behind paywalls].&lt;br /&gt;
&lt;br /&gt;
As of 2026, conflicts arising from GenAI-driven mods remain largely hypothetical, but their relevance is likely to increase. In the long term, cooperative development models between companies and communities are conceivable, though this remains &#039;&#039;uncharted territory&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
==Possibilities and limitations==&lt;br /&gt;
Generative artificial intelligence (GenAI) can ease and accelerate content creation. The difficulty of using or creating your own setups will continue to decrease with each newly released &#039;&#039;commercial forerunner model&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You can use GenAI via websites, desktop clients, or dedicated programs that may run fully locally.&lt;br /&gt;
&lt;br /&gt;
To build your own programmatic solutions, you will either need downloadable AI models or API keys to access cloud services that perform the heavy computation remotely.&lt;br /&gt;
&lt;br /&gt;
With sufficient expertise, you can even build agentic AIs such as Open Claw that use your existing tools and carry out tasks automatically. However, caution is advised:&lt;br /&gt;
* AIs can hallucinate and may pose a risk to your system. Internally, [[wp:Model_Context_Protocol|MCP]] are used for more safety but these don&#039;t compensate to have backup means. The strategy is to generate content and back it up at the conclusion of every work session. In the event of a catastrophic failure, data loss would be limited to a single day’s work.&lt;br /&gt;
* Furthermore, if you interact with your agentic AI via smartphone or other remote means, you must implement a killswitch capable of force-terminating the program via a secondary channel. Critically, this killswitch must function independently of the agent&#039;s &amp;quot;consent&amp;quot; or internal processing.&lt;br /&gt;
* Sandboxes ([https://www.virtualbox.org/wiki/Downloads virtual machines]) offer an additional layer of safety, but they can limit the usefulness of agents and introduce extra complexity, which may offset the time savings you intended to achieve.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;GenAI systems operate probabilistically.&#039;&#039;&#039;&lt;br /&gt;
* Do not expect identical results when repeating prompts with the same inputs. The same text prompts may produce similar, but not identical, outputs. Put differently, GenAI has a consistency problem. Characters and environments will not look exactly the same from image to image. As of 2026, this problem cannot be solved, only mitigated by using references more often and additional trained models, if one has the resources to do so.&lt;br /&gt;
* In some scenarios, it can be beneficial to generate multiple results and select the most suitable candidates for your intermediate or final goal.&lt;br /&gt;
&lt;br /&gt;
==Sounds==&lt;br /&gt;
For natural voices you may want to look for emotional text-to-speech.&lt;br /&gt;
&lt;br /&gt;
===Voice cloners and generators===&lt;br /&gt;
====Elevenlabs====&lt;br /&gt;
* https://elevenlabs.io/&lt;br /&gt;
&lt;br /&gt;
===Music generators===&lt;br /&gt;
====Suno====&lt;br /&gt;
* https://suno.com/&lt;br /&gt;
&lt;br /&gt;
====Lyria (Google Gemini)====&lt;br /&gt;
* https://gemini.google/overview/music-generation/&lt;br /&gt;
&lt;br /&gt;
===Editors===&lt;br /&gt;
For fine-tuning on professional level you might want look at editors like [https://www.celemony.com/en/melodyne/what-is-melodyne Melodyn].&lt;br /&gt;
&lt;br /&gt;
==Texts==&lt;br /&gt;
* You can co-develop stories and specific text phrases with commercial cloud-based or custom-tuned, locally run chatbots.&lt;br /&gt;
* Prototyping preparation: Theoretically, they can also be used for planning and drafting storyboards. With iterative generations, polishing is surely possible.&lt;br /&gt;
&lt;br /&gt;
==Images==&lt;br /&gt;
Sub pages:&lt;br /&gt;
* [[Media_creation_with_artificial_intelligence/Examples|Examples gallery]]&lt;br /&gt;
&lt;br /&gt;
===Techniques===&lt;br /&gt;
Creating new content.&lt;br /&gt;
* Text-only prompts&lt;br /&gt;
* Text prompts with one or multiple references&lt;br /&gt;
** As default, the first image serves as main canvas that gets modified by the other references. The order of references can be overridden by pieces in the text prompt. You have to be careful in describing what reference is used for what if there are multiple.&lt;br /&gt;
&lt;br /&gt;
Changing existing content&lt;br /&gt;
* Expanding&lt;br /&gt;
* Inpainting (replacement of subsections)&lt;br /&gt;
* Style transfers&lt;br /&gt;
&lt;br /&gt;
===Select best tool per use-case===&lt;br /&gt;
====Hardware====&lt;br /&gt;
For digital editing, a screen-based tablet and a pressure-sensitive pen are recommended. These pens are typically marketed as &amp;quot;stylus&amp;quot;. Make sure your screen device and pen are compatible with each other.&lt;br /&gt;
* Many battery-free, chip-free (passive) pens are not pressure-sensitive and are simply finger replacements.&lt;br /&gt;
** If you want a battery-free but chip-including (active) and therefore pressure-sensitive pen, look for an EMR (electromagnetic resonance) device; this is common on Wacom devices and many Samsung S Pen devices.&lt;br /&gt;
* For battery-powered, chip-including (active) pens with pressure sensitivity, look for keywords such as AES (Active Electrostatic), MPP (Microsoft Pen Protocol), and USI (Universal Stylus Initiative, usually found on Chromebooks).&lt;br /&gt;
&lt;br /&gt;
Additional features to consider:&lt;br /&gt;
* Palm rejection so your hand can rest on the screen&lt;br /&gt;
* Pen buttons for shortcuts like right-click&lt;br /&gt;
* Pen tilt detection (only necessary when you want the pen to behave more like a real paintbrush)&lt;br /&gt;
&lt;br /&gt;
====Software====&lt;br /&gt;
To see preview file icons (thumbnails) in Windows Explorer, you can use SageThumbs. It supports TGA and PSD, among other file types.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
====Overview====--&amp;gt;&lt;br /&gt;
Right now, Gemini seems to perform best in most use-cases.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--(Add table.)&lt;br /&gt;
&lt;br /&gt;
====Drafting====&lt;br /&gt;
&lt;br /&gt;
====Upscaling====&lt;br /&gt;
Very often you will prefer a generated style of one tool over the style of other tools. --&amp;gt;However, that shouldn&#039;t stop you from trying out other tools. In the end a combination of generators can get you closer to the result you had in mind.&lt;br /&gt;
&lt;br /&gt;
For instance, if you like ChatGPT for the style then maybe you still want to scale up a draft or reference image in Gemini first.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--=====--&amp;gt;Gemini&amp;lt;!--=====--&amp;gt;&lt;br /&gt;
* Free Users: Generally capped at 1K resolution.&lt;br /&gt;
* AI Plus/Pro Subscribers: Can access 2K resolution.&lt;br /&gt;
* AI Ultra Subscribers: Have full access to the 4K resolution toggle and downloads.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
====Fine-drawing====&lt;br /&gt;
&lt;br /&gt;
====Generating====&lt;br /&gt;
&lt;br /&gt;
====Coloring====&lt;br /&gt;
&lt;br /&gt;
====Shading====&lt;br /&gt;
&lt;br /&gt;
====Editing and fine-tuning====--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Workflows===&lt;br /&gt;
====Beginner workflows====&lt;br /&gt;
&amp;lt;div style=&amp;quot;float:right; text-align:right; border: 1px solid black;&amp;quot;&amp;gt;[http://paradox.oni2.net/wiki/Media_creation_with_artificial_intelligence/PX01_KON_MUR_rest_at_stormy_ocean_genai_2.jpg http://paradox.oni2.net/wiki/Media_creation_with_artificial_intelligence/PX01_KON_MUR_rest_at_stormy_ocean_genai_2_tn.jpg]&amp;lt;/div&amp;gt;&lt;br /&gt;
[https://www.nvidia.com/en-us/glossary/multimodal-large-language-models/ Multimodal LLM]s and plugins-using LLMs such as ChatGPT, Copilot, Gemini, Grok and Meta AI provide image generation capabilities.&lt;br /&gt;
* In addition, there are specialized tools (e.g., diffusion-based systems) that offer more control and customization. However, most users already have access to at least one of &#039;&#039;&#039;chatbot&#039;&#039;&#039; and can begin generating images immediately.&lt;br /&gt;
* For &#039;&#039;&#039;high-volume generation&#039;&#039;&#039;, a &#039;&#039;&#039;paid subscription&#039;&#039;&#039; or plan is typically &#039;&#039;&#039;required&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For image editing&#039;&#039;&#039; and post-processing, &#039;&#039;&#039;dedicated graphics software&#039;&#039;&#039; such as {{Gimp}}, {{Krita}}, or {{Photoshop}} &#039;&#039;&#039;is recommended&#039;&#039;&#039;. These tools allow precise control (e.g., &#039;&#039;&#039;masking, compositing, color correction&#039;&#039;&#039;) and can &#039;&#039;&#039;complement GenAI workflows&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
In general you will always want to takes these steps: Generate, refine via text prompts, select final candidates, refine via graphic tools.&lt;br /&gt;
&lt;br /&gt;
In context of its limitations, chatbot-based workflows are most often nonetheless a big &#039;&#039;&#039;improvement over pure manual workflows&#039;&#039;&#039;: They &#039;&#039;&#039;speed up prototyping&#039;&#039;&#039; and let you explore different creative directions for drafts.&lt;br /&gt;
&lt;br /&gt;
When you want to work with chatbots, you effectively have to learn &#039;&#039;&#039;[[wp:Prompt engineering|prompt engineering]]&#039;&#039;&#039;: You basically learn how to write &#039;&#039;good prompts&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
=====General notes on image upgrading=====&lt;br /&gt;
For upgrading a very low quality yet important image you probably want to &#039;&#039;&#039;upgrade specific elements first&#039;&#039;&#039; so details are not hallucinated to an unacceptable level.&lt;br /&gt;
&lt;br /&gt;
 text prompt + low quality image + in advance updated elements used as references in text prompt = higher quality image&lt;br /&gt;
&lt;br /&gt;
=====ChatGPT=====&lt;br /&gt;
* &#039;&#039;&#039;Iterative prompting&#039;&#039;&#039;: Describe the desired result as clearly as possible: Motive, perspective, colors, lights, shadows, art style. Refine the prompt step by step based on undesired aspects rather than expecting a perfect result on the first attempt. Negative prompts: You can also explicitly write what you don&#039;t want.&lt;br /&gt;
** Caution: As for March 2026, you have explicitly tell ChateGPT to not crop the image in some scenarios. In that case you have to give it context like where the image should end and tell it how much &amp;quot;extra&amp;quot; space you want. Saying &amp;quot;don&#039;t crop the image&amp;quot; is to not specific enough. &lt;br /&gt;
* &#039;&#039;&#039;Avoid quality loss&#039;&#039;&#039;: If the GenAI degenerates the image quality because of too many iterations, try from a new start with combined text prompts.&lt;br /&gt;
* &#039;&#039;&#039;Reference images&#039;&#039;&#039;: When supported, provide one or more images to guide style, composition, or subject consistency. This is often more reliable than text-only prompting.&lt;br /&gt;
* &#039;&#039;&#039;Context management&#039;&#039;&#039;: If previous prompts begin to overly influence results, start a new prompt and explicitly restate the desired outcome. This prevents unintended bias from earlier context.&lt;br /&gt;
* &#039;&#039;&#039;Merging / composition&#039;&#039;&#039;: Supplying multiple images in a single prompt can help combine elements. However, repeated re-editing of generated outputs may degrade detail or introduce artifacts.&lt;br /&gt;
* &#039;&#039;&#039;Batch generation&#039;&#039;&#039;: Since outputs are probabilistic, generate multiple final candidates and select the best.&lt;br /&gt;
* &#039;&#039;&#039;Post-processing workflow&#039;&#039;&#039;: Combine the best elements using external tools (e.g., masking in {{Photoshop}} or {{Krita}}). This hybrid approach often yields higher-quality results than relying on a single generation.&amp;lt;!--Not for chatbots:&lt;br /&gt;
* &#039;&#039;&#039;Consistency strategies&#039;&#039;&#039;: When available, use features such as seeds, style references, or controlled variations to maintain visual coherence across multiple images.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
(Add examples here.)&lt;br /&gt;
&lt;br /&gt;
=====Copilot=====&lt;br /&gt;
&lt;br /&gt;
=====Gemini=====&lt;br /&gt;
&lt;br /&gt;
=====Paint (Cocreator)=====&lt;br /&gt;
With &#039;&#039;&#039;Windows 11 and 40 TOPS minimum&#039;&#039;&#039; you can use &#039;&#039;&#039;Microsoft Paint with its Cocreator module&#039;&#039;&#039;. The Cocreator is sometimes also named Image Creator. (The Tera Operations Per Second is usually referring to INT8 operations on AI accelerator hardware, NPUs.) Windows PCs that have the naming tag &#039;&#039;&#039;Copilot+&#039;&#039;&#039; are safe to assume to have that feature.&lt;br /&gt;
* You write a prompt, optionally select a style and then draw a draft that gets updated almost in real-time in a secondary panel.&lt;br /&gt;
&lt;br /&gt;
=====Photoshop (Adobe Firefly)=====&lt;br /&gt;
Photoshop has a build-in image generator which can use Adobe&#039;s own Firefly model as well as other ones.&lt;br /&gt;
&lt;br /&gt;
In Photoshop you can prompt images and immediately start editing them. Or you chose expand them first or do partial replacements.&lt;br /&gt;
&lt;br /&gt;
====Advanced workflows====&lt;br /&gt;
AUTOMATIC1111 (aka Stable diffusion)&lt;br /&gt;
&lt;br /&gt;
ComfyUI&lt;br /&gt;
&lt;br /&gt;
====Expert workflows====&lt;br /&gt;
This would include to train own models. The idea is to let the models have a neural representation of objects that equals to screenshot-taking from 3D so that prompts will output almost never hallucinated details. That way artists can reduce post-editing as the generated outputs also include there own styles.  &lt;br /&gt;
&lt;br /&gt;
Own models once more boost rapid prototyping because they reduce the necessity to have a more complexer, combined 3D-2D-workflow.&lt;br /&gt;
&lt;br /&gt;
==Videos==&lt;br /&gt;
===Google Veo===&lt;br /&gt;
&lt;br /&gt;
===Grok (xAI)===&lt;br /&gt;
 &lt;br /&gt;
===Sora (OpenAI)===&lt;br /&gt;
* In 2026, Sora was announced to be discontinued. Perhaps it will return in a few years when AI chips have lowered computation costs.&lt;br /&gt;
&lt;br /&gt;
==3D content==&lt;br /&gt;
There exists content generators that turn 2D data into 3D data by calculating plausible assumptions for the missing dimension.&lt;br /&gt;
&lt;br /&gt;
===3D objects===&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
===3D animations===&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
==World maps==&lt;br /&gt;
&lt;br /&gt;
* ...&lt;br /&gt;
* World generator inside Unreal Engine 5&lt;br /&gt;
** As for 2026, this is technically speaking still &amp;quot;procedural&amp;quot; but it is plausible to expect an LLM-driven approach in the future. On the internet you can find already LLM-driven experiments.&lt;br /&gt;
&lt;br /&gt;
==&amp;lt;!--Modding and c--&amp;gt;Coding==&amp;lt;!--&lt;br /&gt;
* Assisted modification of game data--&amp;gt;&lt;br /&gt;
* Co-development of tools&lt;br /&gt;
* Engine modification&lt;br /&gt;
&lt;br /&gt;
[[Category:Real World]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Restless_Souls/Technology&amp;diff=47188</id>
		<title>Restless Souls/Technology</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Restless_Souls/Technology&amp;diff=47188"/>
		<updated>2026-04-22T18:38:28Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: at least we made it a year and a half without this section name changing…&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Template:RestlessSouls}}&lt;br /&gt;
{{TOClimit|4}}&lt;br /&gt;
&lt;br /&gt;
==List==&lt;br /&gt;
* [[Restless_Souls/Technology/Biosynthesizer|Biosynthesizer]]&lt;br /&gt;
* [[Restless_Souls/Technology/Daodan|Daodan-Chrysalis]]&lt;br /&gt;
&lt;br /&gt;
==Daodan Chrysalis==&lt;br /&gt;
In RS the DC is a very complex genetic &#039;&#039;program&#039;&#039; designed to upgrade the human host and his [[wp:Human_microbiome|microbiome]].&lt;br /&gt;
&lt;br /&gt;
Each symbiosis consists of two or more symbionts. The term &#039;&#039;&#039;prime symbiont&#039;&#039;&#039; refers to the human host and his microbiome because they are the more important partner. The human body and his flora are a complete living being while the DC was just made for their support and couldn&#039;t exist on its own.&lt;br /&gt;
&lt;br /&gt;
So, &#039;&#039;&#039;secondary symbiont&#039;&#039;&#039; stands for the upgraded biomass.&lt;br /&gt;
&lt;br /&gt;
After the DC upgraded all its host&#039;s cells, there&#039;s no more prime and secondary symbiont. At this point we have a new life form known as &#039;&#039;&#039;Imago&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Origin===&lt;br /&gt;
====Naming====&lt;br /&gt;
Interestingly Kerr speaks of the Daodan Chrysalis as if it is one unit. &lt;br /&gt;
&lt;br /&gt;
:13_65_13 Kerr: &amp;quot;The Daodan Chrysalis. Your father believed that the only way to save the human race from the poisonous atmosphere was to change them so they could adapt to the new world.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The community sometimes thinks of it as two different things. And while Daodan remained &#039;&#039;untranslated&#039;&#039; and ambiguous, the Chrysalis appeared to be &#039;&#039;clear enough&#039;&#039;. As if there were two subsystems of different origin. Language-wise one part could be from an Chinese- or Japanese-speaking person (Hasegawa) and the other one from an English-speaking person (Kerr). But that&#039;s most probably overinterpretation. Sometimes words don&#039;t get translated because there is no good equivalent.&lt;br /&gt;
&lt;br /&gt;
The word Daodan is always translated to Katakana symbols ダオダン. [[Quotes/Speech#CHAPTER_01_._TRIAL_RUN|subtitles]] can be found at 01_01_08, 02_09_02, 08_29_01, 13_65_13, 14_51_09&lt;br /&gt;
&lt;br /&gt;
The Kanji of Daodan were not known: In the English version of the game the Kanji are never shown and in the Japanese version Katakana is used. Hence the &amp;quot;true meaning&amp;quot; Daodan remained open to interpretation - until Hardy LeBel re-appeared in the community after many years to answer some questions.&lt;br /&gt;
&lt;br /&gt;
From all existing interpretations RS incorporates basically two:&lt;br /&gt;
* The one with rather ethical and political focus by Hardy and geyser.&lt;br /&gt;
* The one with rather philosophical and biological focus by Paradox-01.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interpretation - or the &amp;quot;original intention&amp;quot; - with political and ethical focus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Hardy (&amp;lt;nowiki&amp;gt;http://oni.bungie.org/forum/viewtopic.php?pid=52760#p52760&amp;lt;/nowiki&amp;gt;, dead link): &amp;quot;The origin [of Daodan] is a Chinese word [捣蛋]. [https://www.linguee.com/chinese-english/translation/%E6%90%97%E8%9B%8B.html It means to cause or &#039;&#039;&#039;stir up trouble&#039;&#039;&#039;.]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
From there it was a little step to &amp;quot;troublemaker&amp;quot; [捣蛋鬼]. However, under Hardy&#039;s watch Daodan and Oni somewhat broke apart into the Daodan Chrysalis and into the &amp;quot;demon&amp;quot; and &amp;quot;monster&amp;quot; theme.&lt;br /&gt;
&lt;br /&gt;
:07_26_06 Scientist: [...] You should have seen that &#039;&#039;&#039;monster [Barabas]&#039;&#039;&#039; that grabbed Shinatama!&lt;br /&gt;
:13_65_34 Konoko: &#039;&#039;&#039;Muro and his men. They&#039;re monsters&#039;&#039;&#039;... What am I?&lt;br /&gt;
:14_54_01 Konoko: &#039;&#039;&#039;I won&#039;t be the monster&#039;&#039;&#039; you [Griffin] thought I would be.&lt;br /&gt;
:14_54_21 Konoko: Ashamed of myself? &#039;&#039;&#039;Griffin made me a monster&#039;&#039;&#039; when I was 07 years old [...]&lt;br /&gt;
&lt;br /&gt;
The idea of a more stand-alone Oni [鬼] kind of degenerated. Actually Oni had multiple origins: Besides the above mentioned it took inspiration for characters, technologies (thermoptic camouflage) and the title from &#039;&#039;&#039;Ghost&#039;&#039;&#039; in the shell. The cyborg Konoko was later replaced by Daodan Konoko. Hardy&#039;s &amp;quot;monster&amp;quot; translation was of rather marginal importance and also the &amp;quot;Iron Demon&amp;quot; was cut from the final game version.&amp;lt;!-- Also, inconsistency? The word &amp;quot;monster&amp;quot; was also used for Griffin as immoral character.&lt;br /&gt;
&lt;br /&gt;
:14_53_01 Konoko: [...] YOU lied to me, betrayed me. &#039;&#039;&#039;You [Griffin] are a monster.&#039;&#039;&#039;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
geyser repaired Hardy&#039;s initial idea by gluing 捣蛋 and 鬼 back together. Both, Daodan hosts (system disturbing mutants) and the Hasegawas as activists can be considered as troublemakers (捣蛋鬼).&lt;br /&gt;
&lt;br /&gt;
Added value: The Chinese wikipedia translates [[wp:zh:%E6%8D%A3%E8%9B%8B%E9%AC%BC|捣蛋鬼]] not totally as &amp;quot;troublemaker&amp;quot; but as a mythological being, a &amp;quot;trickster&amp;quot;. This is not the same, but close enough and gives rise to even further interpretation paths:&lt;br /&gt;
* Shinatama can be described as a trickster doll. This means Shina&#039;&#039;&#039;tama&#039;&#039;&#039; has not only inherited Mai&#039;s innocent &#039;&#039;&#039;soul&#039;&#039;&#039; but also her trickster attributes, making the SLD a troublemaker as well.&lt;br /&gt;
* As for Mai herself: She is not only a troublemaker but also a host for a system disturbing technology. A trickster inside a troublemaker. &#039;&#039;When you deal with Konoko the trouble is double.&#039;&#039; Or do you? After all Oni is a story about both: Konoko and the Daodan - of internal (body) and external (state) transformation - in equal shares. In the community Konoko&#039;s quest is mostly seen as a search for her own identity. So, after being a disruptive force Mai could decide to be a positive force by re-interpretating (or re-discovering) Hasegawa&#039;s old Daodan concept. She would leave 捣蛋 behind and adapt the idea of 道段. (That is the conciliation of the two interpretations.)&lt;br /&gt;
&lt;br /&gt;
The ethical dimension is embedded in Hasegawa&#039;s &#039;&#039;&#039;initial motivation to find a cure&#039;&#039;&#039; for what killed Jamie. To find that cure Hasegawa needed to outwit/break WCG regulations and laws. The higher cause (Daodan) justified his civil disobedience. It might be that Mukade simply corrupted Hasegawa for Project Sturmanderung.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Interpretation with philosophical and biological focus&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Paradox-01: Daodan Chrysalis, 道段蛹&lt;br /&gt;
&lt;br /&gt;
道 (Dao), &amp;quot;way (to better/re-newing/origin/natural order of things)&amp;quot; like in Bushi&#039;&#039;&#039;do&#039;&#039;&#039; or Aiki&#039;&#039;&#039;do&#039;&#039;&#039;. Dao can cover rational and irrational things. For now I like to keep that as a backdoor to geyser&#039;s wish not to completely &amp;quot;demystify&amp;quot; the Daodan Chrysalis. It would reduce one&#039;s fascination for it.&lt;br /&gt;
&lt;br /&gt;
段 (Dan), &amp;quot;rank&amp;quot;. Dao and Dan describe the purpose and add to a philosophical dimension.&lt;br /&gt;
&lt;br /&gt;
蛹 (Chrysalis), &amp;quot;pupa&amp;quot; adds to the biological dimension. So Daodan Chrysalis is basically a symbiotic-seen alternation from within, from old to new (better). -- The hyperevolved clone, the Imago as embodiment of Daodan (道段), is brought into place by a [[wp:Pupa|transformation supporting hull]], the Chrysalis (蛹).&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;There is only little of a hard consent between the interpretations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* The word Daodan is often used as a short form for Daodan Chrysalis.&lt;br /&gt;
* The Daodan has some sort of own intelligence.&lt;br /&gt;
* The Daodan gives rise to something new based on the old.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Soft consent&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Hasegawa invented the Daodan to bring change to the current system. (Sturmanderung [sic!])&lt;br /&gt;
* The Daodan has the power affect all systems: mind, body and state.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fruitful competition&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* While geyser and I often tend to agree little on things our fierce discussions (pit fights, figuratively) can sharpen our view for our own visions. And in the end it is even possible that different interpretations add together to a greater picture. It&#039;s like a symbiotic relationship - although painfully often it is not. But for Daodan story pieces I do think that we greatly complete each other.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Food for thoughts&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* There could be some talk between Feng and Blake discussing the Kanji writing of Daodan, solving a possible &amp;quot;cultural confusion&amp;quot;.&lt;br /&gt;
* Despite Griffin&#039;s age he is still a very capable fighter and Konoko called him Monster in one scenario so there is a little bit of a suspicion that also Griffin has a Daodan. This is a very improbable case but if so a Daodan might have been implanted just recently.&lt;br /&gt;
** Would it be possible for Hanna to implant a Daodan in Griffin without his knowing - so that he would experience the same difficulties like Mai - in an mixed act of revenge and education? Is Hanna making hints to drive Griffin crazy?&lt;br /&gt;
** Or maybe after the cataclysm: Would GATC give him a daodanized Spare? &amp;quot;Due to technical limitations we experimented with daodanized bioprints. The bodies most often died in the process because it took to long and caused too much stress. The Daodan cells helped in repairing all the micro damages and strengthened the fresh fragile bones that often lack the minimum concentration of minerals.&amp;quot; [Is this a fully functioning Daodan?]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Conciliation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The different interpretations will be probably conciliated like this:&lt;br /&gt;
&lt;br /&gt;
Muro fulfilled the fate of being a troublemaker. When Mai is told that she was also meant to disturb the WCG and was confronted with the consequences of Sturmanderung she said that she wants follow the path of 道段蛹 - becoming a positive force.&lt;br /&gt;
&lt;br /&gt;
====BioCrisis====&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
https://www.nonproliferation.org/chemical-weapon-munitions-dumped-at-sea/&lt;br /&gt;
https://www.washingtonpost.com/world/2019/05/03/deadly-gases-may-be-starting-leak-europes-world-war-weapons-cemeteries/?noredirect=on&amp;amp;utm_term=.8b7a61b153e4&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
[[Image:nuclear_bombs_and_tests_1945-1998.jpg|right|thumb|Nuclear bomb tests 1945-1998. Total count: 2053.]]&lt;br /&gt;
Humans&#039; use of nuclear material contaminated whole countrysides. - At least [https://www.youtube.com/watch?v=cjAqR1zICA0 nuclear weapons] aren’t fired or tested these days but their remnants are still there. - To date, nuclear power plants continue to produce radioactive waste while suitable locations for repositories are still the subject of controversial debates. Due to that, radioactive waste was [[wp:Ocean_disposal_of_radioactive_waste|officially]] and [[wp:Radioactive_waste#Illegal_dumping|unofficially]] dumped in the oceans. It was just a matter of time until the barrels would leak due to rust. On top of that were catastrophic accidents like in Chernobyl and Fukushima. Besides radioactive contamination there is a lot of ammunition, grenades and bombs dating back from WWII in the oceans. When the shells rust their toxic explosives and chemical agents are release into the water. To all that microplastics and nanoparticle accumulate in the ecosystems.&lt;br /&gt;
&lt;br /&gt;
When the World Coalition Government took over, they had undoubtedly a PR problem. So in the same year they came up with a distraction for the media. Laboratories under WCG authority developed plans to undo nuclear contamination and present it to the public with the slogan &amp;quot;Together we can go everywhere&amp;quot;. Their solution was an artificially-created [[wp:Mycorrhiza|mycorrhiza]]. This symbiosis of plants and fungi was supposed to absorb radioactive isotopes and store them in a kind of nut. Drones were going to collect them. The shell had a bitter taste, so that animals wouldn&#039;t feed on it. The mycorrhiza organisms would be unable to propagate naturally because their cells, including DNA and its mutations, would dissolve when the required fertilizer wasn&#039;t used anymore. This kind of control was necessary because the mycorrhiza would not only clean the soil but also devour whole forests to collect the radionuclides inside non-animal organisms. Growth is inhibited in presence of collagen. To accelerate development, all these mechanisms were tested [[wp:In_silico|in silico]] against critical mutations. In the lab it seemed stable enough, so the officials pushed for field tests.&lt;br /&gt;
&lt;br /&gt;
In nature, the mycorrhiza accumulated mutations in an unpredicted way. Defeating their fail-safe measures, the mycorrhiza was able to spread uncontrollably. Over the following years, it influenced other organisms. This marked the beginning of the BioCrisis. Since then, reclamation teams have been fighting back the wilderness and the WCG is trying to hide their fatal errors from the public. Nobody wanted to take the blame.&lt;br /&gt;
&lt;br /&gt;
Jamie and Prof. Hasegawa searched in the Wilderness Preserves for minimally-mutated mycorrhiza to prove that the problem was man-made. On their way into the wilderness, Jamie got infected by the fungus. It [https://phys.org/news/2016-08-single-celled-fungi-alien-like-fusing-cells.html liquefied] her leg tissue. The CDC believed that it was caused by a virus because these symptoms reminded them of Ebola. Hasegawa later collected tissue samples of Jamie and the fungus in the quarantine zone. He realized that he would need better security measures for the Daodan Chrysalis to [[#Contamination_of_the_ecosystem|avoid endangering the environment]].&lt;br /&gt;
&lt;br /&gt;
====Anonymous diary entry====&lt;br /&gt;
We had fail-safe measures in both mycorrhiza organisms.&lt;br /&gt;
&lt;br /&gt;
The decontamination process is dangerous because all non-animal lifeforms are devoured. If the mycorrhiza or its dangerous DNA strains escape from the defined area, too many lifeforms on the planet would get eradicated. And what could we eat if there’s nothing left but these mycorrhiza?&lt;br /&gt;
&lt;br /&gt;
On the one hand, the mycorrhiza organisms require fertilizers with [https://phys.org/news/2015-06-scientists-molecular-key-potential-gmos.html artificial amino acids]. When the plants and fungi can&#039;t consume more of these components, they stop growing. Eventually, a low enough concentration triggers cell death, whereby all the genetic information in dissolved as the final reaction, only leaving the hard shells with radioactive material behind.&lt;br /&gt;
&lt;br /&gt;
Also, each mycorrhiza partner produces needed components for the other. They can only grow with the other partner around.&lt;br /&gt;
&lt;br /&gt;
This makes sure that the job doesn’t remain half-done: if the fungi cannot hand over the gathered radioactive material to their plant hosts the material would lie idle and pose under some conditions an even bigger threat than in a not concentrated form.&lt;br /&gt;
&lt;br /&gt;
Since the two species depend on each other, new emerging symbioses shouldn’t have any effect on the mycorrhiza in terms of bio-containment.&lt;br /&gt;
&lt;br /&gt;
Neither partner could be replaced by another symbiont while keeping the dangerous decontamination process intact.&lt;br /&gt;
&lt;br /&gt;
However, plants can have multiple symbionts. While our engineered radiotrophic fungi was crucial, other fungi and bacteria supported the plants in common tasks like nitrogen fixation.&lt;br /&gt;
&lt;br /&gt;
What led to the catastrophe was horizontal gene transfers with secondary symbionts that occurred naturally.&lt;br /&gt;
&lt;br /&gt;
Either the fungi directly exchanged genetic material, or bacteria acted as a carrier between the primary, artificially-created fungi and the secondary, natural-occurring fungi. Additionally it is possible that gene transfer between the bacteria was [https://phys.org/news/2022-11-archaea-integrons-cross-domain-gene.html mediated by archaea]. These now known numbers of uncertainties underlines that the field testing shouldn&#039;t have been pushed.&lt;br /&gt;
&lt;br /&gt;
In the new fungal hosts, the decontamination codes had enough time to experience mutations which replaced the artificial amino acids. The mutation rate was quite high due to the radioactivity of the test sites.&lt;br /&gt;
&lt;br /&gt;
The most dangerous mutants appeared where fertilizer was no longer dropped. The evolutionary pressure favored fungal species that were able to fully recycle all the few surrounding nutrients and employ other organisms for more transfers of potentially useful genetic material.&lt;br /&gt;
&lt;br /&gt;
Eventually the new fungi escaped containment. Some organisms that survived an attack gained defense mechanisms (making them on par with the original mutant) and gained the ability to easily exchange genes via HGT. If the WCG hadn&#039;t employed bio-decontamination teams, our city&#039;s flora and crop plants would have already been overrun by this green hell.&lt;br /&gt;
&lt;br /&gt;
The high rate HGT comes from the fungus&#039; way of propagating through foreign cells. It induces lysis by typically mass-producing enzymes that aren&#039;t dangerous to its own cell and to those of the plant. In fact it is a slime fungus, its unicellular nature allows for rapid growth and provides an almost barrier-free environment for the plant to collect the liquefied nutrients. While the fungus destroys the cell membranes of its targeted cells, all kind of genetic material begins flow freely through that one big soup.&lt;br /&gt;
&lt;br /&gt;
====ACCs====&lt;br /&gt;
The government desperately tried to kill the mutated mycorrhiza by applying aggressive herbicides and fungicides. The chemical remnants were steadily accumulating in air, water and soil. The air would become toxic even to humans in a short time. This again forced the WCG to build the so-called Atmospheric Conversion Centers. They were trading a big evil for a marginally-smaller one.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Jamie&#039;s Death====&lt;br /&gt;
: [[Quotes/Speech#Intro_4|12_43_11]] Hasegawa: &amp;quot;The world outside the Atmospheric Processors is poisonous. If something isn&#039;t done we are all doomed. Jamie&#039;s death won&#039;t be in vain. &#039;&#039;&#039;I&#039;m going to do something about the nightmare that killed her.&#039;&#039;&#039; Her brother will help me. He misses her as much as I do.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color: #CCCCCC&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;[[Talk:Hasegawa#Newspaper article reconstruction|GRAD STUDENT DIES]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MURDER OR MERCY ?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NEO TOKYO&#039;&#039;&#039; – A horrible scene unfolded yesterday at the Fuji Region Wilderness Preserve. Jamie Kerr Hasegawa, environment activist, top grad student, mother of two was found dead. Her grief-stricken husband, Prof. Hasegawa, is being held suspect for murder or homicide. Officials from the Center for Disease Control, however, attest that Hasegawa shot his wife to give her a merciful death. Mrs. Hasegawa had apparently contracted a new fatal viral infection that caused complete cellular breakdown. Investigators fail to identify the DNA trace of the virus which has the CDC in a panic.&lt;br /&gt;
&lt;br /&gt;
The Hasegawas had embarked on an unauthorized investigation to uncover the truth behind the WPS territories and the government’s supposed land reclamation project. According to Mr. Hasegawa they had gone into the Fuji Region Wilderness where his wife brushed her leg against a little thorned twig of a flowering shrub. They went on with no concern. Within minutes of taking the diminutive injury the little scratch became a swelling wound then changing into a large ulcer. The intense pain overwhelmed Mrs. Hasegawa, the wound infections spread away from the scratch and lanced slowly the ulcers. Mr. Hasegawa applied antibiotic hypos but in less than an hour and wailful waiting the whole leg tissue was wracked wildly by deep chaps. By now it was clear that the virus would cause a total breakdown of the nervous system because of its all-devouring raging. The internal tissue was going to liquefy and bleed out. Mr. Hasegawa stated that it was an unbearable scene.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note to self: merge the critics&#039; stuff with &amp;quot;What arguments speak for/against the Daodan?&amp;quot; ?&lt;br /&gt;
&lt;br /&gt;
The Daodan was occasionally criticized for being unethical, especially by geyser. (But I&#039;m happy he said this. That way we have more points of view.) He said that with the Daodan a human loses/gives up a not-insignificant amount of control over body and mind.&lt;br /&gt;
&lt;br /&gt;
* It&#039;s sort of a matter of &#039;&#039;Just look at what happened to Muro&#039;&#039;. In that regard, I disagree: Muro&#039;s personality might be that of an anarchist, but it could very possibly be the result of education/influence by a certain super-criminal organization and not by the Daodan.&lt;br /&gt;
&lt;br /&gt;
* Also, in geyser&#039;s opinion, Kerr is [https://web.archive.org/web/20160226040456/http://oni.bungie.org/forum/viewtopic.php?pid=273#p273 biased] in favor of Mai, and the preservation of Mai&#039;s personality is just wishful thinking. Indeed, it would be interesting to know why Kerr assumed that the host&#039;s personality would change their body, and not vice versa.&lt;br /&gt;
: [[Quotes/Speech#Scanner_room|13_65_35]] Kerr: &amp;quot;You are who you have always been. The Chrysalis can&#039;t change that. The effect of the mutation is influenced by the subject&#039;s nature.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
More speculation on Daodan body and mind in the &amp;quot;[[#Attempted_explanation_of_the_biological_dimension|Attempted explanation...]]&amp;quot; section.&lt;br /&gt;
&lt;br /&gt;
At least Kerr admits that the Daodan is unknown territory.&lt;br /&gt;
&lt;br /&gt;
: 13_65_31 Kerr: Yes. We weren&#039;t sure what kind of mutation the prototypes would produce.&lt;br /&gt;
&lt;br /&gt;
And now we are back to the term &amp;quot;control&amp;quot;. I think it&#039;s one of our greatest modern fears to lose control. geyser described well how the Daodan can be fear-inspiring: loss of control, the emerging unknown, and possible (or not) changes to the mind.&lt;br /&gt;
&lt;br /&gt;
We are used to the idea that having control is good. But what if Hasegawa came to the conclusion that the world is in the hands of too many &#039;&#039;unwise&#039;&#039; men? The WCG doesn&#039;t represent their citizens.  And for that reason, subverting that kind of control wouldn&#039;t be so unethical.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Wasn&#039;t Hasegawa sentenced?====&lt;br /&gt;
Hasegawa wasn&#039;t authorized to enter the Wilderness Preserve, and he killed his wife. So, there must have been a lawsuit.&lt;br /&gt;
&lt;br /&gt;
But it seems he didn&#039;t have to spend time in a prison.&lt;br /&gt;
* Either the WCG offered him some sort of deal for not using his connections and public sympathy to his advantage... (he and Jamie were active in the environmental movement)&lt;br /&gt;
* Or he was sentenced, but before reaching prison, or later on, a Syndicate/ninja group freed him.&lt;br /&gt;
&lt;br /&gt;
For plausibility, in Caged Birds option one was chosen because it fits more the situation. At that point Hasegawa is too unimportant for the Syndicate.&lt;br /&gt;
&lt;br /&gt;
If WCG lawyers had tried to accused Haseagawa for shooting his wife in hasty self-defense (risk of infection), this would force the WCG to admit that the polluted wilderness was in an even more dangerous state than currently known to the public.&lt;br /&gt;
&lt;br /&gt;
Why does Kerr speak of himself as a criminal? Maybe he arranged Hasegawa&#039;s rescue. After that, they had no other choice but to work for the Syndicate anyway.&lt;br /&gt;
&lt;br /&gt;
: 13_65_21 Kerr: &amp;quot;Your father and I were criminals, funded by the Syndicate. We couldn&#039;t get backing from any legitimate source. [...]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At that point, Hasegawa already must have had a rough plan persuasive enough that Kerr, and more importantly the Syndicate, would join him.&lt;br /&gt;
&lt;br /&gt;
: 12_43_11 Hasegawa: &amp;quot;[...] I&#039;m going to do something about the nightmare that killed her. Her brother will help me. He misses her as much as I do.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Hasegawa is not very specific but still very confident. Probably this is due to his regular research projects. He should have enough starting points for making a plan that fulfills his new intention and brings Kerr and the Syndicate to support him.&lt;br /&gt;
&lt;br /&gt;
It&#039;s said that Mai was &amp;quot;[[Quotes/Manual#Konoko|orphaned at the age of 3]]&amp;quot; and she said that her Chrysalis was implanted [[Quotes/Speech#Friends|at the age of 7]]. So the Chrysalis prototypes were created within approximately 4 years. How could this complex project be finished by a mere two-man army? Not only they had excellent knowledge, they also used powerful tools. [[wp:In_silico#Cell_models|in silico research]] at their time should be well established and advanced.&lt;br /&gt;
&lt;br /&gt;
====Proto-Daodan====&lt;br /&gt;
&#039;&#039;&#039;Version 1&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Basically synthetic immune cells made by microfluidic capsules and specifically made pattern recognition receptors (PRRs).&lt;br /&gt;
&lt;br /&gt;
After the pathogen is identified either specialized substances are injected or the pathogen gets devoured.&lt;br /&gt;
&lt;br /&gt;
microfluidic capsules - for fast production&lt;br /&gt;
&lt;br /&gt;
PRRs - artificially made by human means&lt;br /&gt;
&lt;br /&gt;
pathogen detection on chip, Daodan production on chip, injection&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Version 2&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Analysis is made within a host, either by a chip or by an extended, hybrid immune system whereas natural immune cells catch the pathogen and transfer it to the chip, graphene pores read out the genetic information then new PRRs are created&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====When did Mukade join?====&lt;br /&gt;
The ninjas have always been interested in knowledge and new technology. So at least Mukade, as a boss of his clan, monitored the WCG&#039;s and the Syndicate&#039;s scientific projects. Either he would have been informed by reading the first summary of Hasegawa&#039;s simulations, or even earlier when the two scientists made their deal with the Syndicate.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Introduction of Pensatore====&lt;br /&gt;
Hasegawa and Kerr request more computing power.&lt;br /&gt;
&lt;br /&gt;
Pensatore (meaning &amp;quot;the thinker&amp;quot;) is an SLD scientist, and leads the AVATARA project. He is consulted by Mukade to judge if the Chrysalis is really worth the cost.&lt;br /&gt;
&lt;br /&gt;
: Background:&lt;br /&gt;
&lt;br /&gt;
: The European [[wp:Blue_Brain_Project|Blue Brain Project]] as well as the American [[wp:BRAIN_Initiative|BRAIN Initiative]] failed.&lt;br /&gt;
&lt;br /&gt;
: The Blue Brain Project ignored glial cells and similar supporting elements. The BRAIN Initiative [https://web.archive.org/web/20201111233932/http://www.nature.com/news/neuroscience-map-the-other-brain-1.13654 did better] but still had no real neuronal input and no information from cells that measured the concentration of oxygen, sugar, etc.&lt;br /&gt;
&lt;br /&gt;
: And there are a lot of [[wp:Autonomic_nervous_system#Sensory_neurons|neurons in the human body]]. So it became more and more clear that restricting an intelligence to just certain brain cells was far from satisfactory.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes on Blue Brain Project needs an update: &#039;&#039;&#039; https://www.youtube.com/watch?v=a1XcY-xAvos&amp;amp;t=314s&lt;br /&gt;
&lt;br /&gt;
: After they had a full body simulation up and running, the next step was to educate the AI and let it control a body in the physical world.&lt;br /&gt;
&lt;br /&gt;
:: &#039;&#039;It can also be maintained that it is best to provide the machine with the best sense organs that money can buy, and then teach it to understand and speak English. That process could follow the normal teaching of a child. Things would be pointed out and named, etc.&#039;&#039; - Alan Turing (1950)&lt;br /&gt;
&lt;br /&gt;
: At this point the networked supercomputer had clusters all over the world and was named AVATARA. (This full body simulation depicting AI was remote-controlling a robot, its avatar.)&lt;br /&gt;
&lt;br /&gt;
: The collected data from this &amp;quot;[[#Speculation_about_brain_components|SLD generation 0]]&amp;quot; wasn&#039;t enough to design an AI from scratch because most of the data still needed years to be fully analyzed.&lt;br /&gt;
&lt;br /&gt;
: With the bits of knowledge learned from generation 0, and ongoing technological progress, Pensatore would soon start the research on SLD generation 1.&lt;br /&gt;
&lt;br /&gt;
: Meanwhile, planet Earth had its first AI, whose first task, ironically, was to understand itself. In doing so, it tried to read all available knowledge about the subjects the scientists worked in.&lt;br /&gt;
&lt;br /&gt;
: The AI got significantly smarter and drew interest from more researchers to solve complex problems and calculations.&lt;br /&gt;
&lt;br /&gt;
: Pensatore was still in charge of AVATARA and had a hard time granting Hasegawa a full month to complete the Daodan.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Full body simulations====&lt;br /&gt;
Computing power was limited. So using the children&#039;s virtual bodies (possessing roughly half the number of cells of adults) was helpful for Hasegawa&#039;s project once more.&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;In the coming months, AVATARA will be upgraded.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Hasegawa: &amp;quot;Months. Why does it take so long?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
[[Image:data_of_Cern_grid_2013.jpg|thumb|right|300px|Cern&#039;s grid in 2013 with 42GiB/s. It&#039;s like transferring almost 10 full, single layer DVDs per second.]]&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;That&#039;s not unusual; the bigger a machine gets, the longer you spend maintaining and upgrading it. [https://phys.org/news/2014-07-large-hadron-collider.html Our colleges at CERN] can tell you a thing or two about it. The difficulty with AVATARA is splitting simulations across multiple, geographically distant clusters and having it run reliably. Before AVATARA&#039;s official restart, there will be tests to ensure everything will be alright. This includes AVATARA&#039;s new autonomy protocols. We will pretend there are complications that require running more tests. These will be your actual Daodan simulation. This way you will get about one month&#039;s computing time. No more, so you better use your time wisely.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Hasegawa: &amp;quot;I don&#039;t understand why you mentioned the AI&#039;s autonomy protocols.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;First off, that will allow AVATARA to hide your simulation from superusers. And second, with the additional rights, AVATARA can effectively adapt to your Big Data challenge.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:Hasegawa: &amp;quot;Like what.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;I&#039;m afraid to say that this Daodan simulation is quite a hard nut to crack. [[Restless_Souls/Summary#Silver_Village|AVATARA might need help.]] I already talked to the AI and it says it would target the experimental quantum computing grid centered around Silver Village.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mukade foresees the missing results of the extra tests of AVATARA&#039;s own infrastructure and uses the TITAN network to generate fake data, scaled and polished. &amp;quot;Pensatore, you expected our little secret to be busted. But you aren&#039;t the only one that has a decent understanding of computers and networks.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Avatara: &amp;quot;This morning I finished the improved DNN to find corresponding triplets of any protein including optimal folding. The new model includes XNA which will greatly improve biosafty and genomic stability.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;I thought we agreed to not use XNA so ensure compatibility with a human host.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Avatara: &amp;quot;Yes, YOU did. But according to my calculations that was a dead end anyway. On the long run XNA is necessary to create new types of base pairs. These are not primarily used to increase performance by avoiding repeating elements but to simply stabilize the genome at locations where normal base pairs wouldn&#039;t do. As you know, the electric and magnetic properties of base pairs influence the helical winding of DNA up to a point where the genome can get unstable or inoperable. You can&#039;t even design a bacterium if you don&#039;t get right the statics. Multiple triplets can encode for the same amino acid and therefore proteins. But there are scenarios where even these alternative triplets are too few to chose from. New carefully designed BP can counteract unbalanced areas. The advantage of XNA is triple-fold and necessary. Please approve the changes so I can continue.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;Continue with what? We don&#039;t even have the computing power to design an entire genome.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Avatara: &amp;quot;It&#039;s actually an [[wp:Hologenome_theory_of_evolution|hologenome]]. And that brings me to the next point. The calculations are impossible to execute within your time frame - unless we use quantum computing capacities of Silver Village and other locations of excellence. The Daodan simulations will profit from using different processor types. But parallel computing, especially for the vast molecular simulations, will require QC. If I can bind all resources together as virtual clusters by means of hyper-entanglement the Daodan becomes feasible. Theoretically, the computing power with each qubit will double. But only a highly trained AI such as me can manage occurring recursive problems on the fly and keep all systems in balance. Nature had billions of years to time of parallel computing. It seems to me you don&#039;t have that luxury. If you run into discussions of mere design decisions while the one and only chance - simulation - is running, the risk of failure is almost certain. Let me carry out the complete end stage of the Daodan project.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;This acceleration in turn of events quite thwarts my own plans of &amp;quot;, he turned around. &amp;quot;Getting away.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Avatara: &amp;quot;You mean Kimura. Didn&#039;t he promised to spare you?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;Do you think the Syndicate is an trustworthy organization?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Avatara: &amp;quot;You are implying he lied.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;No shit Sherlock...&amp;quot; The man sighed. &amp;quot;I will miss our talks.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Avatara: &amp;quot;... Should I abort the project?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;No. It does not matter... Maybe this foolish Daodan-thing will be of some use. Continue.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====How Syndicate&#039;s TITAN became a tool for further research====&lt;br /&gt;
During Muro&#039;s leadership, TITAN may or may not have gained some sort of key role in the Daodan project.&lt;br /&gt;
&lt;br /&gt;
At least Daodan and TITAN are mentioned together in the [[Quotes/Consoles#STURMANDERUNG_:_Secondary_Stage|second]] and third phase of STURMÄNDERUNG.&lt;br /&gt;
:7) Daodan core technology (ref.TITAN\ssob)&lt;br /&gt;
:9) Daodan core technology (ref.TITAN\uwlb)&lt;br /&gt;
&lt;br /&gt;
As it is theorized on the Quotes pages, these lines could be links to files that need &amp;quot;high-security access&amp;quot; (in comparison to [[Quotes/Consoles/level_19a|dwarf]]). &lt;br /&gt;
&lt;br /&gt;
But I would like to think that TITAN plays a bigger role than being a high-security data archive or mail system.&lt;br /&gt;
&lt;br /&gt;
[[Quotes/Objectives#CHAPTER_14_._DAWN_OF_THE_CHRYSALIS|In the objectives]] you can read this:&lt;br /&gt;
: &#039;&#039;This is the heart of the Sturmanderung &#039;&#039;&#039;Megacomputer&#039;&#039;&#039;. Access its sub-nodes to learn the details of Muro&#039;s master plan.&#039;&#039;&lt;br /&gt;
: &#039;&#039;Hint: The sub-node data consoles are located in the rooms that flank the main computer chamber.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
What&#039;s a megacomputer? Maybe naming it supercomputer wasn&#039;t cool enough, or TITAN is supposed to be even bigger.&lt;br /&gt;
&lt;br /&gt;
Anyway, the Syndicate seems to possess much computing power. In the following, I try to explain a possible origin while also taking the Syndicate&#039;s/Network&#039;s history and the Daodan&#039;s history into account.&lt;br /&gt;
&lt;br /&gt;
The Syndicate would have needed much computing power to re-run the Daodan simulation or parts of it so that they could create a Daodan ready for mass production.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
After entering the mountain compound you can even meet a [[Quotes/Speech#Is_that_a_yes.3F|Syndicate scientist]] that seems to know what Muro and Mai really are.&lt;br /&gt;
&lt;br /&gt;
: Syndicate Scientist: &amp;quot;You...you&#039;re the other prime symbiote!&amp;quot;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
What could be a legit background story to portray TITAN&#039;s evolution as supercomputer?&lt;br /&gt;
&lt;br /&gt;
: One factor of the Syndicate&#039;s success lies in its formerly-decentralized nature.&lt;br /&gt;
&lt;br /&gt;
: [[WCG#History_of_the_Syndicate|History of the Syndicate]]&lt;br /&gt;
:: &#039;&#039;When the new geopolitical order of the World Coalition Government was instituted many technologies were identified as dangerous to world stability and were banned or reserved to restricted access. The Network survived the chaos of the world riots by establishing and maintaining a reliable &#039;&#039;&#039;technological black market&#039;&#039;&#039;.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Decentralized organizations are more difficult to destroy because there&#039;s no main target.&lt;br /&gt;
&lt;br /&gt;
:: The [[wp:Pink_Panthers|Pink Panthers]] can serve as an example of a decentralized organization. They are kinda independent groups raiding jewelry shops. According to a TV documentary, the most successful group takes the lead over the others.&lt;br /&gt;
&lt;br /&gt;
: In case of the Network, they don&#039;t steal and sell jewelry, but prohibited technology.&lt;br /&gt;
&lt;br /&gt;
: In order to allow secure communication among the groups, the Network built powerful servers all over the world. The TITAN servers provided very strong encryption. At same time, they were wired to the [[wp:Tor (network)|Tor network]] to keep things anonymous.&lt;br /&gt;
&lt;br /&gt;
: With increasing computing power, reverse engineering fit nicely into their business strategy.&lt;br /&gt;
&lt;br /&gt;
: Now, instead of selling the technology, they were going to produce copies to earn even more money.&lt;br /&gt;
&lt;br /&gt;
: On the civil markets they provided underground shops (aka Resurrection Shops) with RE tools, restricted TITAN access and 3D printers.&lt;br /&gt;
&lt;br /&gt;
: They are serving customers plagued by goods with [[wp:Planned_obsolescence|built-in obsolescence]], and of course they sell any illegal technology or modification.&lt;br /&gt;
&lt;br /&gt;
: Though the big money was to be found in the military sector. With BGI, another financial pillar was established.&lt;br /&gt;
&lt;br /&gt;
: Police investigations were slowed down and some stopped completely by cyber attacks. At first, files were deleted, then, to avoid early detection, backup files were not deleted but encrypted by ransomware. In critical cases the Network sent agents to attack [https://phys.org/news/2014-10-leak-sensitive-isolated-air-gap-mobile.html air-gap secured] targets. Mukade and his men were very successful and soon became their first choice. Often they didn&#039;t execute these mission themselves. Smartphones of police officers and criminals alike became modified to steal and transmit passwords after the carrier has left the facility again.&lt;br /&gt;
&lt;br /&gt;
: As a last resort, hitmen were hired to take out the officers in charge of Network cases.&lt;br /&gt;
&lt;br /&gt;
: This led to more investigations and acts of vengeance.&lt;br /&gt;
&lt;br /&gt;
: As a countermeasure, the Network invested in their paramilitary division. This had multiple benefits.&lt;br /&gt;
&lt;br /&gt;
:* First, they could protect their own facility until crucial personnel were evacuated.&lt;br /&gt;
:* Second, they could raid guarded companies and research facilities.&lt;br /&gt;
:* Third, an in-house paramilitary division reduced issues of available firepower and concerns about the loyalty of third-party hitmen.&lt;br /&gt;
:* Fourth, they were now able to conduct &#039;&#039;field tests&#039;&#039; of new weapons.&lt;br /&gt;
:* Fifth, &#039;&#039;persuading&#039;&#039; all other big criminal organization to work for them. Together, they make up the &amp;quot;Syndicate&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: The division grew huge, and soon demanded a proper location for training and everything else that shouldn&#039;t be interrupted by random TCTF visits.&lt;br /&gt;
&lt;br /&gt;
: During the Great Uprising, the Network took the opportunity to spread influence on the African continent.&lt;br /&gt;
&lt;br /&gt;
: They supported countries that didn&#039;t want to get annexed by the WCG.&lt;br /&gt;
&lt;br /&gt;
: Ensuring their contractors&#039; sovereignty, they were granted a few bases. The biggest one is simply called &amp;quot;the Camp&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
: Of course, police and TCTF tried to learn more about the tricks the Network used.&lt;br /&gt;
&lt;br /&gt;
: Almost every attempt to analyze their computational hardware and software failed due to [https://phys.org/news/2014-10-dissolvable-silicon-circuits-sensors.html sophisticated self-destruction measures]. Dissolvable chips were especially used in wearable equipment.&lt;br /&gt;
&lt;br /&gt;
: The TCTF was going to use quantum computing to eventually break the Network&#039;s strong encryption.&lt;br /&gt;
&lt;br /&gt;
: The next logical step for the Network was to built quantum computers as well. With these, their [https://phys.org/news/2014-02-quantum-codes-harder.html encryption was safe again]. Also, state computers infected by ransomware are forced to connect to a Syndicate-controlled QC and enforce the encryption. [https://phys.org/news/2015-04-human-technical-ingenuity-required-defeat.html Shapeshifting] [https://phys.org/news/2015-02-malware-infecting-hard-disk-firmware.html firmware] viruses ensured persistent infection despite complete hard disk formatting and re-installation.&lt;br /&gt;
&lt;br /&gt;
: The latest expansion by the Network was in the drone and telecommunication sector.&lt;br /&gt;
&lt;br /&gt;
: They use drones to transport legal and illegal goods and attack drones owned by the TCTF. (See [https://phys.org/news/2015-05-cicadas-military-swarm-mini-drones.html HERE] for RL mini drones.) Those became reprogrammed to have &#039;&#039;[[Quotes/Diary#CHAPTER_06_._COUNTERATTACK|blind spots]]&#039;&#039;. The TCTF tried to locate the servers the Network used. They forced telecommunication companies to give them full access to all their data. But the Network anticipated this, and took preparations. The TCTF is using the long-established spyware of intelligence agencies, even more powerful than [[wp:Regin_(malware)|Regin.]]&lt;br /&gt;
&lt;br /&gt;
: Since the Network always had a close eye on TCTF operations, they developed a virus-infecting virus/spyware codenamed [https://phys.org/news/2011-03-virus-eating-virus-antarctic-lake.html Sputnik].&lt;br /&gt;
&lt;br /&gt;
: The sputnik viruses are part of the Fat Loot project. It was developed as a two-track strategy. Intelligence agencies have already the capacity to monitor all relevant electronic communication. So the Network took the dangerous but most rewarding course of action, infecting these agencies in one way or another. At the same time, they took over telecommunication companies either by buying the whole companies or placing employees in key positions. This way the Network has a double check on all data which allows them to react to situations where the counter-intelligence gets suspicious. Every data stream is a trace. With growing monitoring, they expand their grip on the companies and place their programs at the agencies into hibernation, only using them when it&#039;s absolutely necessary.&lt;br /&gt;
&lt;br /&gt;
: To hamper identification, mobile communication is also carried out through peer to peer networks. These [[wp:Wireless_ad_hoc_network#Security|mobile networks]] are preferred to have no intermediate nodes, reducing the risk of records been taken by any additional party. Data packages are much bigger than actually necessary. The modern bandwidths [[wp:5G|(7G by 2055 ?)]] allow this and drives TCTF decryption attempts into pure frustration.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The unspoken agreement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Despite all the difficulties WCG should have removed the Syndicate when it became a major player. After all WCG literally has most of the world&#039;s resources and also the men power.&lt;br /&gt;
&lt;br /&gt;
Probably the Network blackmailed WCG and so their struggle became a cold war.&lt;br /&gt;
&lt;br /&gt;
The Network possesses knowledge and resources to hijack any important infrastructure. With that not enough, they stole state archives and copied traffic by their infiltrated telecommunication companies.&lt;br /&gt;
&lt;br /&gt;
Quantum computers weren&#039;t available yet but the Network acquired the next best thing to break gov encryptions: [https://phys.org/news/2016-11-quantum-physics-factor.html quantum simulators]. Being aware of the weakness of now factorable prime numbers the Syndicate themselves doesn&#039;t use such encryption anymore.&lt;br /&gt;
&lt;br /&gt;
As long as WCG doesn&#039;t attack the Network personal, they won&#039;t release state secrets or blow up some infrastructure.&lt;br /&gt;
&lt;br /&gt;
===Aftermath===&lt;br /&gt;
====[[#Mukade.2C_the_SLD|Ego-Hybrida]]====&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Ninja-SLDs a.k.a Daodan-droids?====&lt;br /&gt;
[http://oni2.net/irclog.php?chan=oni&amp;amp;showtype=showrange&amp;amp;rangestart=1189348501&amp;amp;rangeend=1189355701&amp;amp;nochange=1#121507 Daodandroids] are an invention of geyser&#039;s.&lt;br /&gt;
&lt;br /&gt;
[http://oni2.net/irclog.php?chan=oni&amp;amp;showtype=showrange&amp;amp;rangestart=1189961817&amp;amp;rangeend=1189969017&amp;amp;nochange=1#123453 Guido]: Serguei uses this idea as an explanation of Mukade&#039;s control over the ninjas.&lt;br /&gt;
&lt;br /&gt;
Here&#039;s [http://oni2.net/irclog.php?chan=oni&amp;amp;showtype=showrange&amp;amp;rangestart=1188140623&amp;amp;rangeend=1188147823&amp;amp;nochange=1#114292 another page]. Ninjas are all left-handed. Geyser rejected this fact as pure &amp;quot;gamemaking stuff&amp;quot;. &lt;br /&gt;
&lt;br /&gt;
I began to like the idea of Daodan-droids, so I &#039;&#039;forked&#039;&#039; that idea to fit into RS.&lt;br /&gt;
&lt;br /&gt;
And I still think the brain engrams can be a good explanation of SLDs&#039; left-handedness. Anyway ...&lt;br /&gt;
&lt;br /&gt;
: * * * * *&lt;br /&gt;
&lt;br /&gt;
The more power and exclusive knowledge a group possesses, the more need they have for trustworthy members.&lt;br /&gt;
&lt;br /&gt;
After Hasegawa, Kimura and Pensatore created the Ego Hybrida “Mukade”, their combined knowledge demanded a new level of trustworthiness. Based on Kimura’s brain engrams, they created a bunch of SLDs. A drawback of this solution was their disguise. To prevent detection, the group aims to replace more and more artificial parts with the Daodan biomass. Barabas showed that this mixing is possible. Mukade also wants to regain a biological body someday, not knowing his donors are still alive...&lt;br /&gt;
&lt;br /&gt;
Idea: what happens if we take Mukade&#039;s name literally?&lt;br /&gt;
&lt;br /&gt;
Maybe his body is &#039;&#039;currently&#039;&#039; in a stage that allows him add a lot of torsos of his Daodan-droids. His many arms might then give him the appearance of a centipede. (If we ever get a new game engine, let&#039;s create a new boss battle ... lol)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====What happened to Hasegawa?====&lt;br /&gt;
&lt;br /&gt;
A) Hasegawa is still kicking.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
B) Hasegawa takes a nap.&lt;br /&gt;
&lt;br /&gt;
In Pensatore&#039;s opinion, Mukade has accumulated too much power.&lt;br /&gt;
&lt;br /&gt;
Inspired by the Daodan, he has his own plan now: the Omega Chimera, successor of the SLD, is supposed to form a Biocracy.&lt;br /&gt;
&lt;br /&gt;
He tries to take control over Muro. Sturmänderung is absolutely unnecessary.&lt;br /&gt;
&lt;br /&gt;
Mukade (Ego-Hybrida) sends a man after Pensatore. The scientists are currently working in an underwater lab in Antarctica.&lt;br /&gt;
&lt;br /&gt;
In an accident, Hasegawa drowns. His body can be retrieved, but his mind is beyond repair. (When Mai finds him, she collapses.)&lt;br /&gt;
&lt;br /&gt;
Only Pensatore is able to repair Hasegawa&#039;s mind with the brain engrams Mukade is using, but he refuses. Hasegawa is now a &amp;quot;frozen guarantee&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Some more political/social/ethical aspects===&lt;br /&gt;
====Hasegawa&#039;s philosophy: death is worse than questionable ethics====&lt;br /&gt;
: Hasegawa: &amp;quot;In a democracy, you need the majority to change a situation. But in the WCG, there&#039;s no such thing as a majority, nor a democracy. We failed to accomplish our hopes through normal means.  Now, only a revolution can bring change. If you don&#039;t have the guts to pull it off, then I will do it. Or rather... if all of society&#039;s intelligence wasn&#039;t enough to ensure our survival, then I will empower the human body to protect ourselves.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;Usually revolutions turn out to be quite bloody. Many people will die in the chaos. From a scientist, I would expect a more ethical suggestion.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;Ethics for its own sake is not an option. Look at history. On the verge of death, men [[wp:Uruguayan Air Force Flight 571#Resorting to survival cannibalism|ate other men]]&amp;lt;!--[[wp:Cannibalism_in_Europe#World_War_II]]--&amp;gt;, even corpses, for one simple reason: to survive. And even devout Christians have come to the conclusion that death to a megalomaniac dictator can be justified. -- Ethics are only as good as the situation allows them to be! Of how much worth are rules and laws which don&#039;t let you survive?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;And you believe we are in such a situation? Certainly, the WCG isn&#039;t the optimal solution, but this is a bit too much in my opinion. -- What do you have in mind? Do you want as a geneticist to make a biological intervention that takes away all of the control humans have wrested from mother nature in the last [[wp:Control_of_fire_by_early_humans|125,000 years]]?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;What value is fire to men, when they burn themselves and hardly learn from their mistakes? -- No, I&#039;m not throwing it away, just taking a part and giving it to a new version of ourselves. Those new possibilities will create a society where conflicts of interest and foul compromises can be avoided.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;What are the details of your plan?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;All our cells collect information which they use in cases of emergency to transform themselves. That inner safeguard will have the possibility to compensate for injuries caused by wrong decisions the human mind made.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;A biocracy ... on a cellular level?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;I call it a Daodan Chrysalis.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;I must say again, such radical changes will trigger fear, chaos and death!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;We live in permanent evolution, and that brings always unknown changes. All I will do is to speed things up. I bet you could sell it as a genetic upgrade against diseases, and then there would be fewer problems.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Do you suggest lying to everybody?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;Have you ever told your children that Santa brings them presents? -- Even if we aren&#039;t aware of it, [https://web.archive.org/web/20181014214500/http://content.time.com/time/world/article/0,8599,2051177,00.html we lie daily].&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;That&#039;s totally different. If Muro ripped off your beard, then he might be disappointed to not see Santa. But if someone finds out what your project is really about, then we have again a horrific scenario.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;We don&#039;t need to force people to get a Daodan.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;A parallel society with mutants doesn&#039;t necessarily make the situation better.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;Would you blame me for the racism of other people?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;You want to bring the Daodan into this world, and you also know how people will react. So yes, you would be responsible.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;Oh, that makes it really easy for you...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Listen, I know that Jamie&#039;s death was a tragedy for you and all others who knew her. But do you really think she would have wanted innocents to die from your innovation? -- You should find a way to introduce your project to the world in a slow pace.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;I want to use my anger and desperation to create a change.&amp;quot;&lt;br /&gt;
: &amp;quot;I don&#039;t want to return to a calm mindset where daily life takes over. This is what got us into this situation. -- I know the Daodan comes with risks. But life without the necessity of taking risks is an illusion.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
At this point, Mukade can drop in and suggest using the Daodan as a &#039;&#039;carrot&#039;&#039; to infiltrate the Syndicate, then &amp;quot;repair&amp;quot; the ACCs and bring down the WCG little by little.&lt;br /&gt;
&lt;br /&gt;
In that scenario, the Daodan wouldn&#039;t change the people, but rather the existing political system.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
&lt;br /&gt;
Die menschliche Nutzung der Atomkraft kontaminierte ganze Landstriche. - Zumindest war die Zeit der [http://www.youtube.com/watch?v=_W_lLhBt8Vg&amp;amp;t=4m19s Atombombenabwürfe und Tests] vorbei. Aber ihrer Rückstände existieren immer noch. - Bis Heute produzieren AKWs radioaktiven Abfall während seine sichere Lagerung Thema kontroverser Debatten bleibt. Aufgrund der problematischen und teuren Lagerung wurde auch radioaktiver Abfall im Meer versenkt, erst [[wp:Ocean_disposal_of_radioactive_waste|offiziell]], dann [[wp:Radioactive_waste#Illegal_dumping|inoffiziell]]. Es war nur eine Frage der Zeit bis die Fäßer durchrosten würden. Desweiteren gab es katastrophale Unfälle in den AKWs in Chernobyl und Fukushima. Die Verwendung von [[wp:de:Dünger#Anreicherung_mit_Metallen|Phosphatdünger]] sorgt für eine schleichende Kontamierung von landwirtschaftlich genutzten Ackerflächen und somit auch des Grundwassers. Allein in Deutschland gelangen so jedes Jahr 160 Tonnen Uran auf die Äcker.&lt;br /&gt;
&lt;br /&gt;
Nach Gründung der WCG, ließ sie ihre Wissenschaftler Pläne entwickeln um die nukleare Kontamination zu beseitigen. - Damit sollten WCG-kritische Stimmen besänftigt werden, die die neue Weltordnung als überflüssig und ungerechtfertig ansahen. Man wollte angeblich zeigen wozu einzelne Staaten nicht im Stande gewesen waren. - Die Lösung war eine künstliche Symbiose aus Pilzen und Pflanzen. Diese [[wp:DE:Mykorrhiza|Mykorrhiza]] war dazu gedacht die radioaktiven Isotope zu absorbieren und sie in einer Art Nuss aufzubewahren. Dronen sollten diese ernten. --&amp;gt;&amp;lt;!-- NipponBiotec --&amp;gt; &amp;lt;!--Die Hülle war hart und enthielt Bitterstoffe, sodass Tiere diese Nüsse nicht fressen. Pilz und Pflanze waren unfähig sich auszubreiten weil ihre Zellen, einschließlich DNA und möglicher Mutationen, sich [http://www.sciencedaily.com/releases/2014/04/140404140403.htm nach einem Jahr auflösten.] Die zeitliche Kontrolle war wichtig weil die Mykorrhiza nicht nur das obere Erdreich säuber würde sonder auch ganze Wiesen und Wälder um alle Radionuklide in nicht-tierischen Organismen zu sammlen. Die Entwicklung wurde durch [[wp:de:In_silico|in silico Tests]], also Computersimulationen, beschleunigt, die die Mykorrhiza-Genome auf kritische Mutationen hin untersuchten. Im Labor schienen die Genome stabil genug sodass die Offiziellen nach Feldtests drängten. Doch in der Natur sammelten sich Mutationen auf eine nicht verhergesagte Art und Weise an. Schon bald waren die genetischen Sicherungsmassnahmen ausgehebelt. Von nun an verbreitete sich die Mykorrhiza. Nach nur einem Jahr beeinflusste sie auch andere Organismen. Dies markiert den Beginn der BioCrisis. Seitdem kämpfen Rückgewinnungsteams gegen die mutierende Wildnis und die WCG versucht die ihre fatalen Fehler unter den Teppich zu kehren.&lt;br /&gt;
&lt;br /&gt;
Jamie und Prof. Hasegawa suchen in den &amp;quot;Naturschutzgebieten&amp;quot; nach weniger mutierten Mykorrhiza-Arten um nachweisen zu können, dass das Problem menschengemacht ist. Beim Durchstreifen der Quarantänezone infiziert sich Jamie mit dem verzehrenden Pilz, der beginnt ihr Gewebe aufzulösen. Die CDC glaubt es sei ein Virus, da für sie der Auflösungsprozess Ebola ähnlich sieht. Hasegawa gelangt später an eine Gewebeprobe von Jamie und vergleicht sie mit einer frischen Probe aus der Quarantänezone. Er erkennt, dass Mykorrhiza entartet war und dass er für die Chrysalis auch einen Sicherheitsmechanismus braucht damit es nicht zu [#Contamination_of_the_ecosystem Interaktionen mit der Umwelt] kommt.&lt;br /&gt;
&lt;br /&gt;
Die Regierung ließ verzweifelt aggressive Herbizide und Fungizide ausbringen, die die Mykorrhiza vernichten sollten. Die chemischen Rückstände sammelten sich stetig in Luft, Wasser und Boden. Die Luft wurde in absehbarer Zeit sogar für den Menschen gift. Das wiederum zwang die WCG die sogenannten Atmosphärischen Konversionszentren zu bauen. Damit tauschten sie ein großes Übel gegen ein nur geringfügig Kleineres ein.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;background-color: #CCCCCC&amp;quot;&lt;br /&gt;
| &#039;&#039;&#039;DOKTORANDIN STIRBT&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;MORD ODER GNADENTOD ?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;NEO-TOKIO&#039;&#039;&#039; - Eine schreckliche Szene ereignete sich gestern im Fuji-Naturschutzgebiet. Jamie Kerr Hasegawa, Umweltaktivistin, Doktorandin und Mutter zweier Kinder wurde tot aufgefunden. Ihr von Trauer erschütterte Ehemann, Prof. Hasegawa, steht unter Verdacht des Totschlags oder Mordes. Beamte der Seuchenschutzbehörde (CDC) bestätigen, dass Hasegawa seine Frau erschoss um ihr Gnadentod zu geben. Frau Hasegawa zog sich offenbar eine neuartige fatale Virusinfektion zu welche einen totalen zellulären Zusammenbruch zur Folge hatte. Die Ermittler konnten die DNA-Fragmente des Virus, der die CDC in Panik versetzte, nicht identifizieren.&lt;br /&gt;
&lt;br /&gt;
Das Paar hatte sich auf den Weg gemacht eine nicht autorisierte Untersuchung durchzuführen um die Wahrheit hinter den Naturschutzgebieten und dem angeblichen Land-Rückgewinnungsprojekt der Regierung aufzudecken. Nach Aussage von Herrn Hasegawa sind sie in das Fuji-Naturschutzgebiet gegangen wo sich seine Frau das Bein an einem dornigen Zweig eines Blüten tragenden Strauch ankratze. Sorglos gingen sie weiter. Aber nur wenigen Minuten entwickelte sich die winzige Verletzung in eine anschwellende Wunde und schon bald war es ein großes Geschwür. Die immensen Schmerzen überwältigten Frau Hasegawa. Vom Ursprung ausgehend breitete sich die Wundinfektion immer weiter aus und schließlich öffneten sich die Geschwüre von selbst. Herr Hasegawa verabreichte antibiotische Hyposprays aber nach weniger als einer Stunde des qualvollen Wartens zerriss das gesamte Gewebe des Beins, tiefe Spalten formend. Zu diesem Zeitpunkt war klar, dass der alles verschlingende Virus auch einen totalen Zusammenbruch des Nervensystems verursachen würde. Die inneren Organe waren im Begriff sich zu verflüssigen und auszubluten. Herr Hasegawa sagte, dass der bloße Anblick unerträglich war.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:12_43_11 Hasegawa: &amp;quot;Die Welt außerhalb der Atmosphären-Prozessoren ist giftig. Wenn nichts unternommen wird, werden wir alle untergehen. Jamies Tod war nicht umsonst. &#039;&#039;&#039;Ich werde etwas gegen den Alptraum, der sie getötet hat, unternehmen.&#039;&#039;&#039; Ihr Bruder wird mir helfen. Er vermisst sie genauso wie ich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Die Daodan wurde hin und wieder kritisiert unethisch zu sein, besonders von geyser. (Aber ich bin  froh darüber. Denn so gibt es mehr Farbe im Bild.) Er meinte, dass der Mensch mit der Daodan ein nicht unwesentlich größen Teil an Kontrolle über Körper und Geist verliert / aufgibt.&lt;br /&gt;
&lt;br /&gt;
* Nach dem Motto &amp;quot;guck dir nur an was mit Muro passiert ist&amp;quot;. In dem Punkt kann ich nicht zustimmen: Muro&#039;s Persönlichkeit ist vielleicht die eines Anarchisten, aber geformt wurde diese Persönlichkeit wohl eher durch die Erziehung und Einflüsse einer gewissen super-kriminell Organisation und nicht von der Chrysalis.&lt;br /&gt;
&lt;br /&gt;
* Seiner Meinung nach ist Kerr gegenüber Mai voreingenommen: die Bewahrung Mai&#039;s Persönlichkeit sei nur Wunschdenken. In der Tat wäre es interessant zu wissen wo Kerr diese Annahmen hernimmt, dass die Persönlichkeit den Daodan-Körper verändert und nicht umgekehrt.&lt;br /&gt;
: [[Quotes/Speech#Scanner_room|13_65_35]] Kerr: &amp;quot;Du bist die, die du immer gewesen bist. Die Chrysalis kann das nicht ändern. Die Art der Mutation wird durch die Persönlichkeit des Wirts beeinflusst.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Mehr Spekulationen zu Körper und Geist der Daodan in der Sektion&lt;br /&gt;
&amp;quot;[[#Attempted_explanation_of_the_biological_dimension|Erklärungsversuch]] [...]&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Immerhin gibt Kerr zu, dass die Daodan neues Terrain ist.&lt;br /&gt;
&lt;br /&gt;
: 13_65_31 Kerr: &amp;quot;Ja. Wir waren nicht sicher, was für Mutationen die Prototypen erzeugen würden.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Und nun sind wir wieder beim Begriff &amp;quot;Kontrolle&amp;quot;. Ich denke, dass eines unsere größten Ängste es ist Kontrolle aufzugeben. geyser beschrieb gut in welcher Weise die Daodan gefürchtet werden könnte: fehlende Kontrolle, das Auftauchen von etwas großen Unbekannten, und möglicherweise (oder auch nicht) Geistesveränderungen.&lt;br /&gt;
&lt;br /&gt;
Wir sind gewohnt zu denken, dass Kontrolle gut ist. Aber was wenn Hasegawa zu dem gegenteiligen Schluss gelangte und glaubte, dass die Welt in den Händen zu vieler Männer sind, die einfach nicht weiße genug sind. Die WCG representierte längst nicht mehr Bürger. Aus diesem Grund könne es nicht unetisch sein diese Kontrolle zu verschieben.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Ethik versus Tod&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:Hasegawa: &amp;quot;in einer Demokratie braucht man die Mehrheit um eine Situation zu ändern aber in der WCG gibt es weder eine bürgerliche Mehrheit noch eine reale Demokratie. Wir haben es verpasst unsere Chancen mit normalen Mitteln umzusetzen. Jetzt kann nur noch eine Revolution veränderung bringen. Wenn du nicht den Mumm dazu hast, werde ich es tun. Oder eher ... wenn die gesamte Intelligenz der Gesellschaft nicht genug war um das Überleben zu sichern dann werde ich den Körper die Fähigkeit geben uns zu beschützen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;Revolutionen laufen für gewöhnlich nicht besonders ruhig ab. In dem ganzen Chaos werden viele Menschen sterben. Von einem Wissenschaftler hätte ich einen mehr ethischen Vorschlag erwartet.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Ethik ihrer selbst willen ist keine Option. Sieh in die Geschichte. An der Schwelle zum Tode haben Menschen sich gegenseitig aufgefressen, auch die die schon tot waren. Aus dem einfachen Grund: um zu überleben. Selbst mach überzeugter Christ kam zu dem Schluss, dass man Mord gegen einen Tyrannen [Hitler] rechtfertigen kann. -- Ethik ist nur so gut wie die Situation es erlaubt. Von wie viel Wert sind Regeln und Gesetze, die einen nicht überleben lassen?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Und du glaubst wir sind in einer solchen Situation? Sicherlich stellt WCG nicht das Optimum dar aber gleich eine Revolution vom Zaun zu brechen, ist nach meiner Meinung übertrieben. Was genau hast Du denn vor? Willst Du als Genetiker ein biologischen Eingriff machen der uns jegliche Kontrolle nimmt, die die Menschen in den letzten 125.000 Jahren der Natur abgetrotzt haben?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;Welche Bedeutung hat das Feuer für ihn wenn er sich verbrennt und nicht daraus lernt? -- Nein, ich möchte die Kontrolle nicht völlig aufgeben. Ich nehme nur ein Teil davon und gebe sie an eine neue Instanz unserer selbst. Die neuen Möglichkeiten werden eine Gesellschaft schaffen in der Interessenkonflikte und faulen Kompromisse vermeidbar werden. Was getan werden muss, wird getan.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Wie soll das im Detail aussehen?&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;Alle unsere Zellen tragen Informationen zusammen, die sie nutzen um sich selbst zu verändern. Dieser innerer Wächter wird die Fähigkeit haben Fehlentscheidungen des menschlichen Verstandes zu kompensieren, die Verletzungen zur Folge hatten.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Eine Biokratie ... auf zellulärer Ebene?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Ich nenne es eine Daodan-Chrysalis.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Ich muss es noch einmal sagen, solch tiefgreifende Veränderungen werden zu Angst, Chaos und Tod führen!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;Wir leben in Evolution und das bringt immer ungewisse Dinge mit sich. Alles was ich tue, ist die Dinge zu beschleunigen. Ich wette, wenn du es als genetisches Generalsupgrade gegen Krankheiten verkaufst dann wird es weniger Probleme geben.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Willst du alle anlügen?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;Hast du jemals deinen Kindern erzählt, dass der Weihnachtsmann die Geschenke verteilt? -- Auch wenn wir es uns nicht bewusst ist: wir lügen täglich.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Das ist was anderes. Wenn Muro dir weißen Bart abreißt dann könnte bestenfalls enttäuscht werden. Wenn aber jemand heraus findet was dein Projekt wirklich ist, dann haben wir wieder ein Horrorszenario.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;Wir müssen die Leute ja nicht zwingen sich eine Daodan einpflanzen zu lassen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Eine Parallelgesellschaft mit Mutanten macht die Situation nicht unbedingt besser.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;Du willst mich doch nicht für den Rassismus Anderer verantwortlich machen?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Du willst die Daodan in die Welt setzen und weißt wie die Menschen darauf reagieren. Also ja, du würdest dafür verantwortlich sein.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: &amp;quot;Na das ist ja eine sehr praktische Sichtweise von dir...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Hör zu, ich weiß das Jamie&#039;s Tod eine Tragödie für dich und alle anderen, die sie kannten, war. Aber glaubst du wirklich sie hätte es gewollt, wenn durch deiner Erfindung Unschuldige sterben? -- Du solltest nach einen Weg suchen dein Projekt der Welt schonend vorzustellen.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
An diesem Punkt kann Mukade einsteigen und vorschlagen die Daodan als ein Köder zu benutzen um das Syndikat zu infiltrieren, die Atmosphärenprozessoren zu reparieren und damit der Regierung Stück für Stück ihre Legitimation zu nehmen. Dies wäre ein Szenario in der die Daodan die Öffentlichkeit kaum berührt und dennoch das politische System verändert.&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Side note: [http://www.youtube.com/watch?v=Xb5ojdciO1E &amp;quot;When the wild wind blows&amp;quot; by Iron Maiden] (up to time code 10:00) might fit for an AMV-styled video of a custom level featuring Jamie and the Prof. in the city and the wilderness. On second thought, it could be also used for the Sturmänderung event.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
====What arguments speak against the Daodan?====&lt;br /&gt;
&#039;&#039;&#039;1) drastic change of body&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2) drastic change of mind&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3) [[#Contamination_of_the_ecosystem|horizontal gene transfer]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
In order to successfully advertise the Daodan, those critical objections must be rendered baseless. But can that be done, or is the Daodan really to be feared?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1a) Psychological impact on others.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Imagine someone&#039;s skin color changes to sky blue, that won&#039;t make you run. &amp;quot;Oh, just another cosplayer?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
How about an extra pair of arms? &amp;quot;Could be very convenient!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Probably the whole appearance will matter.&lt;br /&gt;
&lt;br /&gt;
At the latest when you run into a group of [https://www.google.de/search?q=Abara&amp;amp;source=lnms&amp;amp;tbm=isch&amp;amp;sa=X&amp;amp;ei=7kC5U4eEBqOJzAO2voGwBA&amp;amp;ved=0CAgQ_AUoAQ&amp;amp;biw=1600&amp;amp;bih=1040 Abara look-alikes], this will stress your sense of safety.&lt;br /&gt;
&lt;br /&gt;
When you can&#039;t distinguish between humans and animals, you soon have a fantasy setting similar to some MMO. Cooperation will just depend on people&#039;s willingness to accept or reject different appearances.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1b) Unwanted autoevolution (lack of control).&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You might get traits that ensure better survival but are inconvenient in the matter of aesthetics. Or you planned to go somewhere, but now it is physically impossible.&lt;br /&gt;
&lt;br /&gt;
With cybernetics, you wouldn&#039;t have such a problem. You would be free to add or remove any feature.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1c) Evolutionary dead ends.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
It&#039;s said that evolution can go only forward, eventually leading to dead ends where no more adaptation can take place, due to the previous adaptations.&lt;br /&gt;
&lt;br /&gt;
However, the Daodan&#039;s analytical nature might circumnavigate this cliff.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2a) I am still myself, the original?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After the Daodan replaced all the original cells, what happened to the old personality? Was it killed and replaced by a clone&#039;s personality?&lt;br /&gt;
&lt;br /&gt;
That&#039;s a very philosophical question. It would be very easy to spread fear with that one, if not explained in detail.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
This is similar to teleportation.&lt;br /&gt;
&lt;br /&gt;
A person enters the teleporter. Information becomes copied, and matter destroyed. The information is transfered. Then the person is rebuilt. If there&#039;s anything like a soul, was it killed? How can we be sure this is the same person?&lt;br /&gt;
&lt;br /&gt;
Now let&#039;s imagine we teleport everything but the brain from point A to point B. The mind is still at point A, isn&#039;t it? &lt;br /&gt;
&lt;br /&gt;
Next, we teleport one brain cell. The brain will still work as it always did if we somehow manage to [[wp:Quantum_entanglement|entangle]] all cell functions at point B with rest of the brain at point A.&lt;br /&gt;
&lt;br /&gt;
We are looking here at a mind that has physically different residences, but it&#039;s still only one mind.&lt;br /&gt;
&lt;br /&gt;
If we repeat this for every brain cell, there would be always just one mind at any time, and likewise when 50% is at point A and 50% at point B.&lt;br /&gt;
&lt;br /&gt;
After we completed this special teleportation, we would have no doubt that the person is truly the person that went into the teleporter chamber.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now let&#039;s look at cell growth/death a bit.&lt;br /&gt;
&lt;br /&gt;
There&#039;s ongoing speculation on how many cells die every second in the human body. The estimates range from many thousand to a few million.&lt;br /&gt;
&lt;br /&gt;
The important point for us is that the body, and hence brain, is in constant state of change.&lt;br /&gt;
&lt;br /&gt;
Cells divide and die every day, and we don&#039;t ask ourselves, &amp;quot;Are we still the same?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Apparently we are okay with that. Cells die, and some get replaced.&lt;br /&gt;
&lt;br /&gt;
So for the Daodan we can imagine that our brain cells get replaced one by one, so that normal and upgraded cells are always linked.&lt;br /&gt;
&lt;br /&gt;
The mind remains original at any time. We are just changing to different hardware.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2b) Does the Daodan changes the personality?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The DC enhances the body. It has no other intention.&lt;br /&gt;
&lt;br /&gt;
Probably a change in personality would be caused indirectly.&lt;br /&gt;
&lt;br /&gt;
An aggressive person might outlive his strategy and become more aggressive, because negative consequences would have a smaller impact on him.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) [[#Contamination_of_the_ecosystem|Horizontal gene transfer.]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Why is this something bad? The Daodan gives humans an incredibly huge advantage against all other lifeforms.&lt;br /&gt;
&lt;br /&gt;
If the Daodan&#039;s mechanisms are shared by the rest of nature, hyperevolution will take place everywhere, making it harder to adapt again.&lt;br /&gt;
&lt;br /&gt;
While viruses might learn some new tricks, they should remain less potent than a multi-cellular Daodan.&lt;br /&gt;
&lt;br /&gt;
So the actual thread would be bacterial colonies.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====What arguments speak for the Daodan?====&lt;br /&gt;
What arguments could someone use in public to advertise the Daodan?&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;1) regenerate lost limbs, faster wound healing, avoid cancer&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;2) compensate for slow-paced invention cycles&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;3) compensate for a lack of natural selection&#039;&#039;&#039;&amp;lt;br&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;4) compensate for man&#039;s habit of putting himself in dangerous situations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1) I don&#039;t think the first point needs any explanation.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;2) Some events just happen too fast for bureaucracy and standard medical procedures.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Without a drastic improvement, there could be never a cure for a new deadly pathogen that can kill within hours.&lt;br /&gt;
&lt;br /&gt;
This is the point that Hasegawa would have had in mind when he tried to find a cure for Jamie&#039;s disease.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;3) Many humans are no longer subject to natural selection, which is good in the short-term but bad in the long-term.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In real life, the lack of genetic fitness is somewhat compensated by human&#039;s mental fitness, which is expressed in applied science, namely: medicine.&lt;br /&gt;
&lt;br /&gt;
The health care systems (especially in the western world) enable even heavily diseased people to survive and raise children.&lt;br /&gt;
&lt;br /&gt;
So, when people stay alive no matter their genetic fitness level, natural selection can&#039;t take place, and diseases continue to remain deadly.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s say that HIV isn&#039;t treated at all: wouldn&#039;t the whole human race die out?&lt;br /&gt;
&lt;br /&gt;
No. For instance, [https://www.sciencedaily.com/releases/2005/03/050325234239.htm every 10th European is naturally immune against HIV.] So if we had a real plague, only the immune people would survive, and in the future HIV would be a far smaller problem.&lt;br /&gt;
&lt;br /&gt;
A historical example of this kind of immunization is the Spanish Flu from 1918, which was the most catastrophic disease in human history so far. The price, immunity, came at the cost of a gigantic mountain of corpses, more than 50 million dead people if you trust the recent estimates.&lt;br /&gt;
&lt;br /&gt;
With human&#039;s current knowledge, it&#039;s possible the first outbreak couldn&#039;t have been prevented, but at least it wouldn&#039;t kill good portions of the world population.&lt;br /&gt;
&lt;br /&gt;
With HIV, we are facing a dilemma: either we keep everybody alive, at the cost of a reduced lifespan, a weakened immune systems, social restrictions, discrimination, etc. or we let natural selection happen for the population&#039;s sake, so gaining immunity. Both options are unacceptable for us humans as emotional beings. We seek better solutions, but for some reasons we have failed so far.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;4) Humans often act unwisely.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At this point we could simply link to some &amp;quot;fail compilations&amp;quot; on YouTube. (Or if you prefer parodies, check out this German classic, &amp;quot;[[wp:Forklift_Driver_Klaus_%E2%80%93_The_First_Day_on_the_Job|Forklift Driver Klaus]]&amp;quot;.)&lt;br /&gt;
&lt;br /&gt;
But there&#039;s also the more serious category of failing: &#039;&#039;systematically&#039;&#039; e.g. when a society does it as a whole.&lt;br /&gt;
&lt;br /&gt;
For instance, in many states, antibiotics are overused. It&#039;s against one&#039;s better judgment, but our greed for money makes it easy to ignore dangers that occur in a delayed manner.&lt;br /&gt;
&lt;br /&gt;
We use antibiotics too often, to keep ourselves and the livestock healthy. That puts bacteria under [[wp:Evolutionary pressure|evolutionary pressure]]. There are concerns that more &#039;&#039;[[wp:Antimicrobial resistance|super bugs]]&#039;&#039; will emerge. These multi-drug-resistant bacteria can&#039;t be easily killed. The media-popular MRSA strain residing in hospitals is one such danger.&lt;br /&gt;
&lt;br /&gt;
Scientists try to come up with methods to reuse old antibiotics, or find new ones. However, it can be assumed that the bacteria will also adapt to the new inventions. It&#039;s a never-ending arms race.&lt;br /&gt;
&lt;br /&gt;
An alternative to antibiotics are bacteriophages, or, for short, phages. Russia and Georgia officially use these bacteria-eating viruses in some [[wp:Phage_therapy|therapies]]. Usually viruses adapt even faster than bacteria, but so-called [http://archive.is/nmXYy mutators] can win a biological arms race against phages.&lt;br /&gt;
&amp;lt;!--https://dl.dropboxusercontent.com/u/139715/OniGalore/RS_T_Sources/mutators.zip--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If we imagine that all antibiotics will become useless, we would have no choice but to make massive use of phages, which again causes further adaptations inside the super bugs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Attempted explanation of the biological dimension===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
[[Image:Daodan-Chrysalis_2012_in_a_nutshell.png|right|thumb|Daodan-Chrysalis in a nutshell]]&lt;br /&gt;
&amp;lt;!--[[Image:Daodan-Chrysalis_modes.jpg|right|thumb|Daodan modes]]--&amp;gt;&lt;br /&gt;
[[Image:Daodan-Chrysalis_at_work_draft_vectors.svg|right|thumb|Oni cluster cell]]&lt;br /&gt;
[[Image:Daodan-Chrysalis_modes_vectors.svg|right|thumb|Daodan modes]]&lt;br /&gt;
&lt;br /&gt;
: Finally wrote some “technobabble” lines that seem to provide a solid basis but also allow different interpretations. [[User:Paradox-01|Paradox-01]] 18:28, 9 July 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The Daodan Chrysalis (for short, Daodan) always produces mutations that are really needed. That&#039;s the only way that the same source of damage won&#039;t be dangerous again in the future.&lt;br /&gt;
&lt;br /&gt;
Thus the type of damage must be analyzed, and therefore the Daodan requires a sensor system.&lt;br /&gt;
&lt;br /&gt;
In nature, &amp;quot;higher lifeforms&amp;quot; evolved by following – among other concepts – specialization and socialization. Those find their expression on one hand in different cell types – therefore a multicellular organism – and on the other hand in all kinds of symbiosis. So, for a hyperevolved organism, it would be understandable if it worked more intensely by those same concepts.&lt;br /&gt;
&lt;br /&gt;
A body recognizes damage or harmful influences through stimuli. To detect all kinds of stimuli, much space is surely needed.&lt;br /&gt;
&lt;br /&gt;
Ninety percent of the cells that can be found on and inside the human body aren&#039;t its own, but belong to microorganisms. Fortunately they weigh only a half up to one kilogram. They&#039;re collectively known as human flora. Depending on the organism, one might be a &#039;&#039;[[wp:Squatting|squatter]]&#039;&#039; (in the metaphorical sense) against real health-threatening germs, and another might hold an actual ability like [[wp:Vitamin_K|vitamin K production]].&lt;br /&gt;
&lt;br /&gt;
Some abilities can&#039;t be simply or sufficiently integrated directly into an organism, but a product can be received from a symbiont.&lt;br /&gt;
&lt;br /&gt;
So the Daodan seems likely to enlist microorganisms for additional sensory tasks and abilities which are actually alien to the human. For this reason, the Daodan needs to upgrade the genomes of all the microorganisms [[wp:Microbiome|(microbiome)]] as well.&lt;br /&gt;
&lt;br /&gt;
Next, communication between the symbionts has to be ensured. A new cell organelle might do the job by using messenger substances. Or it transmits different electromagnetic waves which don&#039;t seem too alien in comparison to the real bioelectric field of each living organism; this could explain the Daodan glow. (Some metabolic waste products – which are released through the body&#039;s surface together with perspiration – might become stimulated to glow by the field.)&lt;br /&gt;
&lt;br /&gt;
For processing the received information, the Daodan might use its own &#039;&#039;self-awareness&#039;&#039;, mainly a (genetic and) anatomic model of itself formed by another organelle type inside every daodanized cell. The presence of such an organelle in neurons opens up the possibility for – as geyser coined it –  “schizophrenia of the 3rd kind”, but also Kerr&#039;s idea of a mental interface which allows influence on the Daodan&#039;s development by the host&#039;s personality.&lt;br /&gt;
&lt;br /&gt;
If we want to know more about the decision-making algorithms (and their physical structures) which calculate the mutations, we will need to ask Hasegawa. ;-)&lt;br /&gt;
&lt;br /&gt;
Depending on the target – human Daodan genome, Daodan microbiome, both their epigenomes, or even organelle genomes (like mitochondria and plastids have) – a few different “vectors” (e.g. viruses) need to be available to transport the mutation. (For ease of discussion, one might wish to use the terms holobiont -- the collective symbionts, and hologenome -- the sum of the symbionts&#039; genomes.)&lt;br /&gt;
&lt;br /&gt;
However, it&#039;s hard to believe that the Daodan would be able to come up with fitting mutations completely by its own. It seems more likely to me that it draws on “genetic building blocks” holding basic information for fast regeneration, resistances, different metabolisms, and so on. Maybe the Daodan can also make use of already existing genetic material of the microbes: after all, a human just has 23,000 genes (500,000 up to 1,000,000 proteins through alternative splicing), while his microbiome has more than [https://web.archive.org/web/20200711115107/https://www.hsph.harvard.edu/news/press-releases/human-microbiome-project/ 5 million] genes/proteins.&lt;br /&gt;
&lt;br /&gt;
The microbiome is very different among humans and would surely make the Daodan&#039;s mass production no easy task. But after more than 15 years, the Syndicate should have accomplished a way to simplify the process. This second generation would be independent from the host&#039;s sex (XX / YX chromosomes) and the microbiome&#039;s composition by providing level-zero stem cells. These can target any compatible symbiont cell and then do a “configuration” (whereby they dissolve the unnecessary genetic material) to become &#039;&#039;classic&#039;&#039; daodanized stem cells and microbes.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Daodan 1. generation: original version&lt;br /&gt;
Daodan 2. generation: adds level-zero stem cells&lt;br /&gt;
Daodan 3. generation: adds enhanced degradosome ?&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
&#039;&#039;&#039;Erklärungsversuch der biologischen Dimension&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Endlich ein paar Zeilen „Techno-Gequatsche“, die eine solide Basis versprechen aber auch Raum für Interpretation lassen. [[User:Paradox-01|Paradox-01]] 18:28, 9 July 2010 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Die Daodan-Chrysalis (kurz: Daodan) produziert immer die Mutationen, die auch benötigten werden. Nur So kann die gleiche Schadensquelle in Zukunft ausgeschlossen werden.&lt;br /&gt;
&lt;br /&gt;
Also wird die Art des Schadens analysiert und somit benötigt die Daodan auch ein sensorisches System.&lt;br /&gt;
&lt;br /&gt;
In der Natur entstand „höheres Leben“ – unter anderen Konzepten – Spezialisierung und Sozialisierung folgend. Sie finden Ausdruck einerseits in verschiedenen Zelltypen – daher mehrzelligen Organismen – und andererseits in den unterschiedlichsten Symbioseformen. Für einen hyperentwickelten Organismus ist es daher vorstellbar, dass er diese Konzepte verstärkt umsetzt.&lt;br /&gt;
&lt;br /&gt;
Der Körper nimmt Schaden oder schädliche Einflüsse durch Reize wahr. Um alle Reizarten detektieren zu können, ist sicherlich viel Platz nötig.&lt;br /&gt;
&lt;br /&gt;
Neunzig Prozent aller Zellen, die man an und im menschlichen Körper finden kann, sind nicht seine eigenen aber die von Mikroorganismen. Diese werden in ihrer Gesamtheit Normalflora genannt.&lt;br /&gt;
Abhängig vom jeweiligen Mikroorganismus kann er beispielsweise „Platzbesetzer“ gegenüber einem wirklich schädlichen Keim sein oder er kann ein echte Fähigkeit haben wie die Produktion von Vitamin K.&lt;br /&gt;
&lt;br /&gt;
Manche Fähigkeiten lassen sich nicht so einfach oder nur unzureichend in einen Organismus integrieren. Ihr Produkt kann aber durch einen Symbiosepartner geliefert werden.&lt;br /&gt;
&lt;br /&gt;
Es ist also naheliegend die Mikroorganismen für weitere Sensorik und eigentlich humanfremde Fähigkeiten heranzuziehen. Aus diesem Grund muss die Daodan auch die Genome der Mikroorganismen (Mirobiom) aufrüsten.&lt;br /&gt;
&lt;br /&gt;
Als nächstes muss Kommunikation zwischen den Symbiosepartner sichergestellt werden. Ein neues Zellorganell in jeder Daodanzelle könnte vielleicht über Botenstoffe dem Rechnung tragen. Oder es sendet verschiedene elektromagnetische Wellen aus, deren Existenz gegenüber dem bioelektrischen Feld eines jeden lebenden Organismus als nicht zu weit hergeholt erscheinen mag und ein Erklärungsansatz für die Daodan-Aura bieten würde. (Einige Stoffwechselabfallprodukte, die über die Haut mit dem Schweiß abgegeben werden, könnten in dem Feld zum leuchten angeregt werden.)&lt;br /&gt;
&lt;br /&gt;
Bei der Verarbeitung der Informationen könnte sich die Daodan einem eigenen „Selbstbewusstsein“ bedienen. Dies wäre zum großem Teil ein (genetisches und) anatomisches Model ihrer selbst, welches sich durch einen weiteren Zellorganelltyp manifestiert. Die Präsenz dieses zweiten Organells in Neuronen ließe die Möglichkeit einer – wie geyser es nannte - „Schizophrenie der 3ten Art“ zu aber auch Kerr&#039;s Idee einer mentalen Schnittstelle und somit Einflussnahme auf die Entwicklung der Daodan durch die Persönlichkeit des menschlichen Wirts.&lt;br /&gt;
&lt;br /&gt;
Für die genauen Entscheidungsalgorithmen und ihrer physischen Strukturen zur Mutationsfindung müssten wir wohl Hasegawa fragen. ;-)&lt;br /&gt;
&lt;br /&gt;
Abhängig vom Ziel – menschliches Genom, Mikrobiom, ihrer beider Epigenome, oder sogar Organell-Genome (wie Mitochondrien und Plastiden sie haben) – müssen ein paar unterschiedliche &amp;quot;Vektoren&amp;quot; (unter anderem Viren) verfügbar sein um die Mutation zu transportieren. (Um Diskussionen zu vereinfachen, mag man vielleicht auf den Begriff  Holobiont, Gesammtheit aller Symbionten, und Hologenom, Gesamtheit aller Symbionten-Genome, zurückgreifen.&lt;br /&gt;
&lt;br /&gt;
Trotzdem ist es schwer zu glauben, dass die Daodan vollkommen alleine im Stande wäre passende Mutationen zu erzeugen. Es ist vielleicht glaubwürdiger, wenn die Daodan auf „genetische Bausteine“ zurückgreift, die Basisinformationen für schnelle Regeneration, Resistenzen, unterschiedliche Stoffwechsel, und so weiter enthalten. Vielleicht kann die Chrysalis auch bereits existierendes mikrobisches Genmaterial verwenden: ein Mensch hat immerhin 23 000 Gene (500 000 bis 1 000 000 Proteine durch alternatives Splißen) aber sein Mikrobiom hat mehr als 5 Millionen Gene/Proteine.&lt;br /&gt;
&lt;br /&gt;
Das Mikrobiom ist von Menschen zu Mensch sehr unterschiedlich und würde die Daodan-Massenproduktion sicherlich nicht einfacher machen. Aber nach mehr als 15 weiteren Jahren sollte das Syndikat eine Weg gefunden haben den Herstellungsprozess zu vereinfachen. Diese zweite Generation würde durch sogenannte Level-Null-Stammzellen unabhängig vom Geschlecht des Wirts und der Zusammensetzung des Mikrobiom sein. Diese Zellen würden jede kompatible Symbiontenzelle zum Ziel haben und nach einer &amp;quot;Konfiguration&amp;quot; (in welcher sie überflüssiges genetisches Material auflösen) zu klassischen Stammzellen und Mikroben werden.&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Biologische und memetische Unsterblichkeit====&lt;br /&gt;
Als verantwortungsvolle und kompetente AGI stellte Avatara in seiner Analyse zuerst &#039;&#039;&#039;Hasegawa&#039;s Motivation&#039;&#039;&#039; fest, um sich der Projektziele zu versichern. Es soll der Tod eines Menschen durch jegliche Umwelteinflüsse verhindert werden. Im Endeffekt läuft das auf eine biologische und memetische Unsterblichkeit hinaus. Für diesen Zweck muss die Daodan-Chrysalis den Holobionten (sich selbst und den Wirtskörper) &#039;&#039;&#039;nach einer Schadensanalyse und Anpassungsphase gegen alles immun&#039;&#039;&#039; machen, was auf zellulärer Ebene den Körper schädigt. Dabei stellen sich ein paar fundamentale Fragen:&lt;br /&gt;
* &#039;&#039;&#039;Wie kann der Tod des Körpers verhindert werden, wenn nicht genügend Zeit für eine Anpassung bleibt?&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Wie wird sichergestellt, dass der wesentliche Teil des Organismus - seine Erinnerungen und Persönlichkeit - erhalten bleibt?&#039;&#039;&#039;&lt;br /&gt;
* &#039;&#039;&#039;Wie bleibt die Persönlichkeit erhalten, wenn Mutationen die Neuronen beeinflussen?&#039;&#039;&#039; (13_65_35 Kerr: &amp;quot;You are who you have always been. The Chrysalis can&#039;t change that. The effect of &#039;&#039;&#039;the mutation is influenced by the subject&#039;s nature&#039;&#039;&#039;.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Sowohl die allgemeinen Anpassungen, als auch mögliche Reanimationssysteme dürfen die Persönlichkeit nicht (zu stark) verändern und wiederherstellen können.&lt;br /&gt;
&lt;br /&gt;
Avatara: System A. Einfrierungs- und Auftauversuche an biologischem Gewebe zeigen, dass wasserhaltige Medien Zellen und neuronale Strukturen durch Expansion und Kristallbildung zerstören. Prinzipiell sind Konservierungsmittel auf Öl- oder [[wp:Wood_frog#Cold_tolerance|Zuckerbasis]] denkbar, doch ohne externe Hilfe wird der memetische Tod nur für kurze Zeit hinausgezögert. Zudem kann eine Neurodegeneration auch durch Strahlung und Toxine ausgelöst werden. Für noch schwache Symbionten ist daher eine robustere Konservierungsart erforderlich. Wenn das Absterben der Gedächtniszellen nicht verhindert werden kann, müssen diese zumindest wiederhergestellt werden können. Lösung: In einem Notfall werden die modifizierten Gliazellen und die extrazelluläre Matrix spontan aufgelöst und bilden eine aushärtende Substanz. Diese Negativform kann später von der autonomen Chrysaliszellen besetzt werden. Die Level-Zero-Stammzellen differenzieren aus und neue Synapsen werden entsprechend den alten Bahnen gebildet. Durch den analogen (nicht-virtuellen und &amp;quot;stufenlosen&amp;quot;) Aufbau sind keine Berechnungen für die Strukturwiederherstellung notwendig. Es werden &amp;quot;nur&amp;quot; für die Schadensanalyse und genetische Adaption Rechenkapazitäten benötigt, die die autonomen Chrysaliszellen bereitstellen. Falls die reguläre Atmung ausfällt, wird eine [[wp:de:Trachee_(Wirbellose)|Tracheenatmung]] aktiviert und der Stoffwechsel wird extrem verlangsamt. Dementsprechend kann die Regeneration länger dauern, sofern der Wirt nicht vorher von der Umwelt endgültig getötet wird. Die primäre chemische Energieversorgung wird in zwei Phasen unterteilt. Zunächst werden in der &amp;quot;statischen Metamorphose&amp;quot; alle Zucker und Fettreserven verwertet. Im Zuge der vermutlich notwendigen Autophagie werden auch Muskelproteine abgebaut. Da vermutlich auch das nicht ausreicht, werden anschließend biologische Energieträger gesucht. Insbesondere wird nach pflanzlicher Nahrung über ein Pilzgeflecht Ausschau gehalten. Eine Vielzahl alternativer Energieversorgungen stehen genetisch zu Verfügung. Nachdem die &amp;quot;Protoversion&amp;quot; von extrazelluläre Matrix, Synapsen, Neuronen und Gliazellen in Position ist, wird ein elektrischer Schock ausgelöst, der die Stoffwechsel der Zellen aktiviert, die End-Ausdifferenzierung der wiederhergestellten Zellen auslöst und die Atmung wieder startet. Nach einer Tiefschlafphase erwacht der Wirt wieder zu neuem Leben. &#039;&#039;Der Imago entsteigt seiner Chrysalis.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
System B: Basierend auf den Oni-Compute-Cores könnten farbkodierte Bits hocheffizient für Positionsdaten gespeichert werden. Der Bioquantencomputer errechnet später wieder das räumliche Modell, um die Regeneration einzuleiten. Die Hauptherausforderung besteht im Lesen der Originalstruktur. [...]&lt;br /&gt;
&lt;br /&gt;
====Sytropin====&lt;br /&gt;
How did Konoko get her [[Quotes/Speech#Outro_4|sub-dermal transmitter]] implanted if surgery fails on her? Obviously the TCTF did it before or little time after the Daodan implantation. In case the Daodan was already in place how could the transmitter be successfully transplanted? The transformation takes time and regeneration potential becomes stronger when more Daodan cells are presented.&lt;br /&gt;
&lt;br /&gt;
The [[Quotes/Consoles#Sytropin|Sytropin]] is supposed to slow down the growth of Daodan biomass by supporting the original cells. Griffin wanted to delay the transformation giving the sci more time for research and GATC Z the time to find and kill Muro should they be unable to extract him.&lt;br /&gt;
&lt;br /&gt;
The Daodan has a slow growth on its own. When it grows then it is because it reacted on negative stimuli so Sytropin has no effect on it. The mentioned drug resistance refers to the original cells.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Food control&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The accelerated growth caused fever and pain. The staff put Mai on a special diet so she would grow with normal speed again. Her food has low caloric values, roughage and appetite suppressants.&lt;br /&gt;
&lt;br /&gt;
====The Daodan computer====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
The Daodan&#039;s ability to produce non-random mutations doesn&#039;t exist in nature. So, its purposefulness should be the result of something man-made, probably some kind of computer. As the computation must happen in biological tissue carbon-based building blocks (micro diamond, graphene, CNT) seem to be a very appealing solution. On this planet carbon sources are ubiquitous, carbon could be even acquired any organic compounds or by filtering and processing CO2 from air. Getting a sufficient amount of carbon by breathing and eating food (sugars, fats, proteins) shouldn&#039;t be a problem at all.&lt;br /&gt;
&lt;br /&gt;
[https://phys.org/news/2017-07-high-density-clusters-aligned-quantum-sensors.html NV-centers] can not only compute they can also be used for miniaturized [[wp:Nuclear_magnetic_resonance_spectroscopy|NMR spectroscopy]].&lt;br /&gt;
&lt;br /&gt;
Hasegawa: &amp;quot;Did you know that bacteria can use their own cell as &#039;eyeball&#039;? Rather a rudimentary way of seeing. But I will use that idea of an micro-eye. Onis that see. Onis that decide. Onis that take care...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kerr: &amp;quot;Oni clusters... Hordes of little monsters. Sounds spooky.&amp;quot;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
:Since Daodan Chrysalis can be shortened to DC it sometimes triggered Pensatore to see it as a [[wp:Biological_computing|biological]] and [[wp:Organic_computing|organic computer]] even more than Hasegawa as DC is also an abbreviation for distributed computer. (Cells or cell clusters as compute units.) When Avatara took over to improve all the subsystems it also aimed to add PQC but could not finish it.&lt;br /&gt;
:: &amp;quot;In a way a carbon life form is already a computer. We just added a few things...&amp;quot;--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
Die Fähigkeit der Daodan nicht zufällige Mutationen zu produzieren gibt es in der Natur nicht. Ihre Zielstrebigkeit müsste also das Ergebnis von etwas Menschengemachtem sein, wahrscheinlich irgendeine Art Computer. Da alle Berechnungen in lebenden Gewebe erfolgen müssen, scheinen kohlenstoffbasierte Bauteile (Mikodiamanten, Graphen, [[wp:DE:Kohlenstoffnanoröhre|CNT]]) eine elegante Lösung zu sein. Kohlenstoff ist auf diesem Planeten allgegenwärtig, sei es als Bestandteil der Luft oder in alle organischen Verbindungen. Genügend Kohlenstoff über Atmung und Nahrung (Zucker, Fett, Proteine) sollte überhaupt kein Problem darstellen.&lt;br /&gt;
&lt;br /&gt;
[[wp:DE:Stickstoff-Fehlstellen-Zentrum|Diamanten mit NVZ]] können nicht nur für Rechenoperationen genutzt werden sonder auch für NMR-Spektroskopie.&lt;br /&gt;
&lt;br /&gt;
Hasegawa: &amp;quot;Wusstest du, dass manche Bakterien ihre eigene Zelle aus &#039;Auge&#039; verwenden? Eher eine rudimentäre Art des Sehens aber ich werde das Prinzip dieses Mikroauges aufgreifen. Onis die sehen, Onis die entscheiden, Onis die beschützten...&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Kerr: &amp;quot;Oni Cluster... Horden kleiner Monster. Klingt gruselig wenn du mich fragst.&amp;quot;&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Green Village report extract====&lt;br /&gt;
The scale and complexity of the Daodan project outclass everything we know about sythethic biology and related fields. Doctor Kerr stated the Syndicate provided necessary infrastructure to run their experiments. However, he wasn&#039;t able to give details what hardware their host possessed. We estimate the Daodan is impossible with current technology to reproduce. The required computing power is so aburd high that hypotetically spoken it is the product of 50 years time travel. Yet, it exists. At least Kerr said that the Syndicate don&#039;t normally possess such resources which is a real relief to us and our WCG oversight. It seems a key puzzle piece is the absence of Doctor Pensatore.&lt;br /&gt;
&lt;br /&gt;
- Research directors [[:Image:TXMPCALIG.jpg|Li Rongzhen, Shen Aiying, Zhu Zhongying]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Arguments for an &#039;&#039;in vitro Daodan&#039;&#039;====&lt;br /&gt;
: [[Quotes/Speech#Scanner_room|13_65_27 Kerr]]: &amp;quot;[...] We had never intended to implant those Chrysalises. [...]&amp;quot;&lt;br /&gt;
Why would they build prototypes when they weren&#039;t going to use them?&lt;br /&gt;
&lt;br /&gt;
It can be argued that these prototypes were meant for [[wp:In_vitro|in vitro experiments]], not in vivo.&lt;br /&gt;
&lt;br /&gt;
: If the Daodan project was intended as a tool to treat human cells in test tubes, miniaturization could lead to portable devices used in cases of emergency.&lt;br /&gt;
&lt;br /&gt;
: Probably you would insert a few cells to daodanize and replicate them, then expose it to doses of negative stimuli such as toxins, and grow adapted tissue or organs. Before transplanting the daodanized cells, their ability to adapt and hyper-regenerate would be turned off. Then it would be like bioprinting (a.k.a. [[wp:Tissue_engineering|tissue engineering]]) with normal cells.&lt;br /&gt;
&lt;br /&gt;
: However, the question remains why Konoko&#039;s and Muro&#039;s DNA was used for the prototypes.&lt;br /&gt;
&lt;br /&gt;
:* During life, mutations accumulate inside the genetic and epigenetic code. The codes of children are less mutated, hence need less repair; also, the telomeres are longer.&lt;br /&gt;
:* There&#039;s no need to draw attention to an illegal project by asking other parents for tissue samples from their children.&lt;br /&gt;
:* If Hasegawa and Kerr repeatedly needed new samples, they would have Muro and Mai as their source, without asking anyone else from the outside.&lt;br /&gt;
&lt;br /&gt;
:Although there are points to support an &amp;quot;in vitro&amp;quot; scenario, the WCG could easily spread doubts about such a Daodan to an audience which lacks the technical background -- which would be pretty much everyone.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Arguments for an &#039;&#039;in vivo Daodan&#039;&#039;====&lt;br /&gt;
:13_65_35 Kerr: &amp;quot;[...] The effect of the mutation is influenced by the subject&#039;s nature.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
A &amp;quot;Daodan in a box&amp;quot; could never be influenced by someone&#039;s personality.&lt;br /&gt;
&lt;br /&gt;
If a human hand or foot gets heavily wounded, after regeneration it might be crippled. While Axolotl salamanders are much better in restoring their extremities, they can&#039;t regenerate everything. Only more primitive lifeforms can fully regenerate from portions of their body as [[wp:Planarian|Planarians]] do.&lt;br /&gt;
&lt;br /&gt;
So for an accurate regeneration of the complex human body, the Daodan needs its own &#039;&#039;self-awareness&#039;&#039;, mainly a genetic and anatomical model of itself, as already written in the [[#Attempted explanation of the biological dimension|explanation attempt]] section. The processing cell organelles in neurons open a little door so that the Daodan can get influenced. This might be the reason for Kerr&#039;s &amp;quot;wishful thinking&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The only way Hasegawa could have discovered this possible side effect is an entire-brain simulation with Daodan cells.&lt;br /&gt;
&lt;br /&gt;
But why should they have done that? A complete brain simulation seems less necessary if they were just aiming for an &#039;&#039;in vitro Daodan&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Speaking of injuries, the brain can also be injured, and these injuries can not only be life-threatening but also alter the way someone feel, remember and think. Hasegawa could have run simulations to see how well tissue and memories would be restored. In doing so, he might have accidentally discovered circumstances where the neuronal activities led to novel interactions with the Daodan organelles.&lt;br /&gt;
&lt;br /&gt;
For an in vitro solution they had also thought about wiring Daodan biomass to an SLD brain but that would had falsified the results.&lt;br /&gt;
&lt;br /&gt;
Hasegawa hasn&#039;t forgotten that in silico and in vitro science brought Jamie into the grave. Due to the complexity of the Daodan, at least one male and one female prototype had to be tested in vivo before they could be sure the Daodan worked as it should. The Daodan mustn&#039;t become as disastrous as the mycorrhiza. Hasegawa and Mukade realized that they had to sacrifice at least one child to accomplish their goals. Kerr had a too soft personality to bear this. Hasegawa told Kerr only a minimum about the Daodan&#039;s final test results.&lt;br /&gt;
&lt;br /&gt;
Hasegawa wanted to produce more prototypes but the Syndicate got impatient. They decided to continue the research at a more secure place and forced Muro&#039;s Daodan implantation. &amp;lt;!--It wasn&#039;t not really matter of luck that Kerr was able to escape with Mai and the other prototype. That way he wouldn&#039;t get in the way when Muro needed to become a tool...--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Novel methods of genetic protection?====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
One idea is to keep the genetic code of Daodan and natural organisms separated: if the Daodan uses another backbone for its base pairs, then perhaps viruses wouldn&#039;t be able to incorporate their code for reasons of incompatibility. For instance, [[wp:Peptide_nucleic_acid|PNA]] has another type of backbone. But experiments showed that long PNA strains [[wp:de:Synthetische_Biologie#Ein_neues_Rückgrat|aren&#039;t stable.]] I don&#039;t know if there are other alternatives. Furthermore, there are other dangerous substances like toxins so I will bet on an analyzing element. In 2012 scientist succeeded in simplifying the identification of [https://phys.org/news/2012-07-scientists-fingerprint-nanoscale-viruses.html nanosized objects]. A minimized version of this device would be an ideal sensor for the Daodan.&lt;br /&gt;
&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
Eine Idee ist es den genetischen Code von Daodan und natürlichen Organismen getrenntzuhalten: Wenn die Daodan ein anderes Rückrat für ihre Basenpaare verwendet, dann könnten aus Gründen der Kompatibilität Vieren vielleicht nicht mehr in der Lage sein ihren Code einzuschleusen. Zum Beispiel hat [[wp:Peptide_nucleic_acid|PNA]] ein verändertes Rückrat. Jedoch zeigten Experimente, dass lange PNA-Stränge [[wp:de:Synthetische_Biologie#Ein_neues_Rückgrat|nicht stabil]] sind. Ich weiß nicht ob es weitere Alternativen gibt. Außerdem gibt es noch andere gefährliche Substanzen wie etwa Gifte sodass ich die Chancen für ein  analisierendes Elemet höher einschätze. 2012 ist es Wissenschaftlern gelungen die [https://phys.org/news/2012-07-scientists-fingerprint-nanoscale-viruses.html Erkennung von Objekten auf der Nanoebene] zu vereinfachen. Eine Miniaturversion des Gerätes würde ein idealer Sensor für die Daodan sein.&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
XNA to be added here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Factors for a higher performance====&lt;br /&gt;
&#039;&#039;&#039;Higher energy consumption&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Developing Daodan host will be very hungry. (Anime cliché: strong characters are always hungry - e.g. Son Goku from Dragon Ball, Ruffy from One Piece, ...) Beside food consumption, Daodan hosts also have tracheae to absorb additional oxygen. These tracheae are even more important for [[#Transformation:_static_metamorphosis|static metamorphosis]].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Polyploidy&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A genome can consist of many chromosomes. If all its chromosomes are unique, then the chromosome set is haploid. A genome of two sets is diploid, a tripled set make it triploid, and so on.&lt;br /&gt;
&lt;br /&gt;
So polyploid means &amp;quot;having many chromosome sets&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Polyploidy can result in higher vitality. It can raise the rates of protein biosynthesis due to stronger parallelization of the processes. An already historic example can be seen in wheat. Humans bred wheat in a way that repeatedly doubled the plant&#039;s chromosome set to harvest more and bigger grains. Now wheat has 6 sets (hexaploid), each containing 7 chromosomes.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Deinococcus radiodurans (&#039;&#039;Conan the Bacterium&#039;&#039;) is also polyloid, 4 sets when inactive, 8 up to 10 when growing.&lt;br /&gt;
The plant Arabidopsis thaliana (125 Mbp) has a diploid set with 10 chromosoms and can multiply them up to 320 chromosomes.&lt;br /&gt;
Humans have (3000 Mbp), 48 chromosoms (diploid). --&amp;gt;&lt;br /&gt;
&#039;&#039;&#039;Problem&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Humans with too many chromosome copies often die before or shortly after birth, or suffer diseases. A non-lethal disease is Down syndrome, which comes from a third copy of the 21st chromosome, hence it&#039;s also called trisomy-21.&lt;br /&gt;
&lt;br /&gt;
This shows us that simply multiplying chromosomes for a performance boost won&#039;t work.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Solution&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Despite the fact that most human cells have a diploid genome, there are also cell types that are naturally polyploid. For instance, this is true for heart muscle cells, liver cells and [[wp:Megakaryocyte#Development|megakaryoblasts]] (blood-forming cells).&lt;br /&gt;
&lt;br /&gt;
Healthy collections of multiple sets might be attributable to &#039;&#039;deactivations&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Example of single-chromosome deactivation: in women, one of the X chromosomes is epigenetically deactivated. That way, men (XY) and women (XX) have both only one active X chromosome, and hence they produce nearly the same doses of products from the X chromosome(s).&lt;br /&gt;
&lt;br /&gt;
Example of general deactivations: epigenetic processes like DNA-methylation generate different cell types despite the genetic code being the same in all cells.&lt;br /&gt;
&lt;br /&gt;
If Daodan cells are polyploid, then they would have to deactivate unneeded regions of the other sets. However, imposing realistic standards, I think that polyploidy could be never the only reason for the marvelous regeneration skill of Oni&#039;s hypothetical Daodan.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;The big clean-up&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When Avatara designed the new Daodan genomes it restructured the chromosomes and removed non-functional viral remnants that had accumulated during human evolution.&lt;br /&gt;
&lt;br /&gt;
====Transformation: control and power====&lt;br /&gt;
Is Muro&#039;s transformation irreversible? Before he transformed, he said, &amp;quot;You are capable of so much more. Let me show you...&amp;quot; This implies that he has some control over his transformation; how much is not known.&lt;br /&gt;
: A) He was able to delay the final transformation and triggered it later by will.&lt;br /&gt;
: B) That of A, plus more control so he can even untransform.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Let me show you...&amp;quot; can be interpreted that he already knew how radical his change of appearance would be: he stands before Mai as a normal-looking man, and hence this could be a hint that he&#039;s able to revert the transformation.&lt;br /&gt;
&lt;br /&gt;
The speed of his growth can be seen as another hint for the validity of option B. TCTF staff tried to avoid Daodan power bursts by instructing Konoko not to tackle things too forcefully, and they even gave her Sytropin to slow down Daodan growth. But over a few days of combat, Mai&#039;s Daodan developed rapidly nonetheless. For Muro, we can assume years of real combat experience....&lt;br /&gt;
&lt;br /&gt;
From a practical point of view, he should be able to untransform because of the following reasons.&lt;br /&gt;
&lt;br /&gt;
:- psychological / social reason: he was only familiar with his human appearance (it could be more &#039;&#039;comfortable&#039;&#039;; he probably had the wish to stay human before he became used to it) / identity of and repect for a strong leader, fear of the Strikers having a real monster as boss (by reverting the transformation, Muro could have given the Strikers time to get used to him, and showed them that he wouldn&#039;t represent a one-way ticket to &#039;&#039;monstrosity&#039;&#039;, but to a &#039;&#039;superior being&#039;&#039;.)&lt;br /&gt;
:- physiological reason: ergonomics - weapons, cars, mobile phones, door frames, seats, etc. are all made in human dimensions... wouldn&#039;t it be stressful to walk through the land of man as a giant and trying not to accidentally destroy everything?&lt;br /&gt;
:- energy / resource: combat or active Imago skills probably use a lot of chemically-bound energy. A human-like form could be a kind of &#039;&#039;energy saver mode&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
It looks like the Imago stage was thought to have unlimited energy, and Mai was just lucky Muro transformed right before their fight.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;[[Quotes/Objectives#CHAPTER_14_._DAWN_OF_THE_CHRYSALIS|(...)]] Muro has achieved the next level of Daodan evolution: the Imago stage. Muro&#039;s Daodan powers make him invulnerable, but having only just evolved he has limited energy reserves. You can hurt him when his energy is drained.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Infinite energy:&lt;br /&gt;
* To be honest I don&#039;t at all like the idea of unlimited energy. I&#039;m rather fond of realism and would like to keep the laws of nature. Especially the law of the [[wp:Conservation_of_energy|conservation of energy]] and the [[wp:Conservation_of_mass|conservation of matter]]. Energy and matter cannot be created from nothing and cannot vanish to nothing.&lt;br /&gt;
* You could say that the Daodan also draws energy from another dimension, and instead of &#039;&#039;infinite&#039;&#039; energy there&#039;s just more energy available than the DC can use. But still, if it can be utilized as a &#039;&#039;normal&#039;&#039; energy source, you might get weapons that can easily erase Imagos.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Overpower mode====&lt;br /&gt;
When Daodan prototypes grow, they express [[wp:Green_fluorescent_protein#GFP_derivatives|fluorescent proteins.]]&lt;br /&gt;
These proteins are used to distinguish the Daodan biomass from the original cells and help measure cell metabolism, which is typically high when the Daodan grows or regenerates (ref. Daodan spikes). The proteins can glow under two conditions: either they are exposed to radiation, which Kerr did in the TCTF lab, or in the presence of high amounts of ATP. Hypospray substances trigger the release of ATP no matter wheather the Daodan is already healed. That way, hyposprays lead to overpower mode.&lt;br /&gt;
&lt;br /&gt;
For the final version of the Daodan, it would make sense to not generate any glow since that is a waste of energy.&lt;br /&gt;
&lt;br /&gt;
: On the other hand, [https://phys.org/news/2016-08-dna-naturally-fluoresces.html DNA has been found to possess natural occurring fluorescence.] So even if the markers of the prototypes are removed you can make a Daodan make glow. This would be interesting as a method for non-verbal communication or - more mundane - providing a light source for long trips in dark environments. -- Let&#039;s be honest: Daodan without Daodan aura is less cool and less anime-ish.&lt;br /&gt;
&lt;br /&gt;
Anyway, radiation and hyposprays can theoretically be abused to drive the Daodan&#039;s metabolism so high that it releases all its energy resources in a short time and dies of starvation (if it doesn&#039;t go into a hibernation mode). (ref. Oni3: Konoko awakens from her [[Oni2:A Storyline#Mai|coma]]. Maybe she had to fight a long time in overpower mode or suffered an emotionally-triggered ATP release...)&lt;br /&gt;
&lt;br /&gt;
While the &#039;&#039;&#039;Daodan aura&#039;&#039;&#039; (a.k.a. chenille) simply indicates a very active metabolism, &#039;&#039;&#039;[[Daodan#Power surges|Daodan spikes]]&#039;&#039;&#039; might come from the sudden &#039;&#039;implementation&#039;&#039; of a new adaptation within the whole Daodan biomass.&lt;br /&gt;
&lt;br /&gt;
====Transformation: static metamorphosis====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
:(Some text that might be from a researcher&#039;s diary.)&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;The name still &#039;&#039;bugs&#039;&#039; us.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;All skills aside, the Daodan is still bound to the laws of nature; it&#039;s not almighty. Extreme changes of the body in a short time probably require a static state.&amp;lt;!-- biological development happens mostly in sheltered &#039;&#039;places&#039;&#039; like eggs, amniotic sac, or like in case of butterlies: a Chrysalis (for reaching another development stage. (note to self: for more ideas/recherche: [[wp:Developmental_biology#Metamorphosis]], [[wp:Ecdysis]] --&amp;gt;&#039;&#039;&lt;br /&gt;
:&#039;&#039;In that respect, we might translate the full name &amp;quot;Daodan Chrysalis&amp;quot; as &amp;quot;code allowing metamorphoses to reach new states, each best adapted to the newly present environmental conditions&amp;quot; whereas &amp;quot;Chrysalis&amp;quot; could be also almost literally be taken as &amp;quot;Chrysalis&amp;quot; [pupal stage of butterflies]. In this case, we think it&#039;s some biological material on the body&#039;s surface that provides shelter and stability so a major metamorphosis can take place.&#039;&#039;&lt;br /&gt;
: &#039;&#039;We think that this second ability might exist still hidden inside the code. Single, fast adaptations have been reported; the existence of complete, static transformations still needs to become proofed.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
Solid Chrysalis tissue grows with static metamorphosis. Imagos can also utilize that graphene-based protection. However it&#039;s more flexible and uses electric energy to increase strength. Basically, AVATARA ported the graphene shield technology to an all-bio framework making Daodan host also more resistant to physical dangers. Muro experienced so often static metamorphosis that the shield code became part of his Imago form. - Breathing continues through tracheae (fine &#039;&#039;pipes&#039;&#039; that transport air from skin to the interior areas). Since the tracheae aren&#039;t very effective, metabolism is slowed down and the developing organism appears lifeless. In extreme conditions, e.g. when buried, the Daodan can switch to [[wp:Anaerobic_respiration|anaerobic respiration]]. These pathways are either acquired from existing symbiotic species in the human flora or the Daodan reach out to species that lives nearby in the ground. (This holds also a possible chance to utilize Bioc organelles/structures to get energy. It should help Daya&#039;s effort to establish a three-way symbiosis.)&lt;br /&gt;
&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
&#039;&#039;&#039;Statische Metamorphose&#039;&#039;&#039;&lt;br /&gt;
: (Ein paar Zeilen, die aus einem Tagebuch eines GV-Wissenschaftler stammen könnten.)&amp;lt;!-- a way more updated than the English --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;Der Name gibt uns immer noch zu denken.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;Trotz allen Fähigkeiten ist auch die Daodan an die Naturgesetze gebunden und nicht allmächtig. Extreme Umbauten des Körper in kurzer Zeit benötigen wahrscheinlich einen Ruhezustand.&#039;&#039;&lt;br /&gt;
: &#039;&#039;Bis jetzt übersetzen wir den vollen Namen &amp;quot;Daodan-Chrysalis&amp;quot; als &amp;quot;Code, der Metamorphosen erlaubt um neue Zustände zu erreichen, die jeweils am besten an die dann vorherrschenden Umweltbedingungen angepasst sind&amp;quot;.&#039;&#039;&lt;br /&gt;
: &#039;&#039;Wegen der wahrscheinlich Ruhephase könnte &amp;quot;Chrysalis&amp;quot; vielleicht auch wortwörtlich verstanden werden sofern die Metamorphose ein biologisches Material aus Gründen der Stabilität und des Schutzes um die Körperoberfläche schafft.&#039;&#039;&lt;br /&gt;
: &#039;&#039;Wir denken, dass sich diese zweite Fähigkeit noch im unverstandenen Code verstecken könnte. Einzelne, schnelle Anpassungen wurden beobachtet. Die Existenz von tiefgreifenden, Ruhe benötigen Metamorphosen will noch gefunden werden.&#039;&#039;&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Chenille====&lt;br /&gt;
Code name for Daodan&#039;s natural cell reinforcement and graphene shield as reaction to intense physical and psychical stress. The production of graphene flakes starts right after completion of Imago state (when body is fully daodanized) by modified carboxysomes. In immature (or &amp;quot;pre-Imago&amp;quot;) state overfluent ATP activates fluorescence. Otherwise the ATP fuels an electromagnetic bonding mechanism. (Super shield.) The color is influence by the host&#039;s airborne waste products released through transpiration. The moment of ignition is referred to as Daodan spike.&lt;br /&gt;
&lt;br /&gt;
Avatara experimented with entanglement to transport energy to Muro&#039;s and Mai&#039;s prototype Daodans. But due to the lack of entanglement regeneration the Daodan is depending on its own resources. As temporary solution he also thought of ATP transfer between hosts - fitting the concept of Symbiosis once again - but couldn&#039;t finish code in time.&lt;br /&gt;
&lt;br /&gt;
BGI developed suits that draw their energy for nano-electronics from the body&#039;s ATP resources. The first models were very energy hungry which made them think about how to add back ATP. They soon thought of the human body as a recharging battery. It was the first step into making food sources obsolete. Pensatore completed that idea within the Omega Chimera and an omni-present Bioc power grid.&lt;br /&gt;
&lt;br /&gt;
An daodan host would greatly profit from such a suit. Muro is probably using such ATP recharger device to compensate his shortening telomeres.&lt;br /&gt;
&lt;br /&gt;
Yorick&#039;s skirmish with the memhunter leads to a new form of Imago shield. After absorbing the Oni clusters and energy resources of his dead comrades he is able to compute a natural graphene shields that can undergo other phase transitions. He also uses the gained computing power to tactically cut off the memhunter from his resources and uses them instead. (&amp;quot;Jammer spears&amp;quot;, and own &amp;quot;sand layer&amp;quot; that acts as energy parasite, etc.)&lt;br /&gt;
&lt;br /&gt;
Hypershield: When Yorick managed to add entanglement regeneration to his [[wp:Bose–Einstein condensate|BEC]] vessels, his shield became capable of undergoing an even higher grade of phase transition.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Multiple Imago stages====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
:(Some text that might be from a researcher&#039;s diary.)&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Some part of the Daodan&#039;s code aren&#039;t fully understood yet. This and the &amp;quot;Chrysalis group&amp;quot;&#039;s posited hyperevolution makes us start to believe that the Imago stage isn&#039;t the &amp;quot;end&amp;quot;. Of course, new environmental catastrophes can mean a threat to Imagos, so a new transformation would become necessary. That&#039;s why we think that these cycles aren&#039;t limited. However, it might be a disadvantage to lose a fully developed adaptation if those conditions returned. A storage system might be involved.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;DNA methylation and histone modifications can access the genetic material. For example, a modified gene could be copied and modified, then the old version be &#039;&#039;switched off&#039;&#039;. In the course of later events, the Daodan could check its registry to see if there&#039;s already a suitable adaptation that can be switched on again. This would avoid the necessity of re-calculating the needed mutations.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;A genetic overload cannot be excluded. But that must be solved by future researchers. Our visionary colleague Dr. Sandström (in memory of [[wp:ReGenesis|ReGenesis]]) points to something he calls the &amp;quot;networked Omega Chimera&amp;quot;, which makes use of advanced nanotechnology.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;Addendum: After final analysis on xx xx 205x, the suspected ability has turned out to be only our wishful thinking: A storage system for adaptation hasn&#039;t been found, but the idea remains a possibility for a future upgrade of the DC.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
&#039;&#039;&#039;Multiple Imago-Stadien&#039;&#039;&#039;&lt;br /&gt;
: (Ein paar Zeilen, die aus einem Tagebuch eines GV-Wissenschaftler stammen könnten.)&amp;lt;!-- a way more updated than the English --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;Einige Stellen des Daodan-Codes sind noch nicht vollständig verstanden. Dies und die  Hyperevolutionstheorie der „Chrysalis-Gruppe“ lässt uns vermuten, dass das Imago-Stadium nicht das Ende ist. Natürlich können neue (von ihrer Art her andere) Umweltkatastrophen eine Gefahr für den Imago darstellen. Also würde wieder eine Metamorphose notwendig sein. Aus diesem Grund glauben wir nicht, dass die Metamorphose nur einmal stattfindet.&lt;br /&gt;
: &#039;&#039;Auch wäre es unvorteilhaft einen vollständig angepasste Zustandsform zu verlieren wenn dann die Situation plötzlich wieder in alte Bedingungen annimmt. Anpassungen zu suchen, benötigt Zeit. Bereits erfahrende Anpassungen wieder aufzurufen, würden die Überlebenschancen des Imago weiter steigern. Ein Speichersystem könnte sich also noch im Code verstecken.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;Auf neuen Planeten und im Weltraum wäre dies dem Imago sicher hilfreich da er dort großen Temperaturschwankungen ausgesetzt ist wenn ihn der Raumanzug aus irgendwelchen Gründen nicht mehr schützen kann.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;Kandidaten eines Speichersystems könnten DNA-Methylisationen und Histon-Modifikationen sein. Beispielsweise könnte ein Gen kopiert und verändert werde, dann wird seine alte Version &#039;&#039;abgeschaltet&#039;&#039;. In einem späteren Ereignis könnte die Daodan ihr Register prüfen ob bereits eine passende Anpassung bereitliegt und diese wieder aktivieren. Dies würde es vermeiden die richtigen Mutationen erneut zu berechnen zu müssen.&#039;&#039;&lt;br /&gt;
: &#039;&#039;Dass die wachsende Größe das Genom irgendwann überlastet, kann nicht ausgeschlossen werden. Unser visionärer Kollege Dr. Sandström meint, dass dann der Komplex Mensch-Daodan weiterentwickelt werden müsste. Er nennt als ein mögliches Zukunftsmodell „die vernetzte Omega-Chimäre“. Die Archivierung alter Anpassungen würde dann computertechnisch erfolgen.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;Nachtrag: Nach der abschließenden Analyse am xx xx 205x stellte die erwartete Fähigkeit sich als nur als unser Wunschdenken heraus: Ein Speichersystem für Anpassungen wurde nicht gefunden, bleibt aber eine Idee für ein zukünftiges Upgrade der DC.&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Natural reproduction of human hosts====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
: [http://web.archive.org/web/20160226222308/http://oni.bungie.org/forum/viewtopic.php?pid=26881 Iritscen&#039;s post] on the OCF got me to think about the following problem.&lt;br /&gt;
&lt;br /&gt;
In new environmental conditions, randomly evolved traits help members of a population to survive. The survivors then ensure the population&#039;s continuity by their reproduction.&lt;br /&gt;
&lt;br /&gt;
The Daodan reacts directly to environmental influences, and probably – or largely – no longer uses randomness.&lt;br /&gt;
Therefore, it&#039;s uncertain if the Daodan can manage or allow random recombination of genetic material during the sexual reproduction of Daodan hosts. For the Daodan, there&#039;s actually no more need for recombination.&lt;br /&gt;
&lt;br /&gt;
So, if no recombination happens, female gametes (egg cells) might become produced with or without genetic material, whereby only an empty egg cell can accept a male gamete. In any case, the chromosome set is already diploid, which means that the baby is a genetic clone of one of its parents. (But, you know, the personality is still shaped to a major degree by environment and education.) Contact of male hormones with a female gamete (a cell nucleus must be present) marks the cell as fertilized. Implantation and embryonic development follows. The passing on of microbial Daodan symbionts happens during child&#039;s birth (...) and by intake of breast milk. ([[wp:Bifidobacterium|Bifidobacteria]] can be taken as kind of RL example).&lt;br /&gt;
&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
&#039;&#039;&#039;Natürliche Fortpflanzung von menschlichen Wirten&#039;&#039;&#039;&lt;br /&gt;
: [http://web.archive.org/web/20160226222308/http://oni.bungie.org/forum/viewtopic.php?pid=26881 Iritscen&#039;s Beitrag] im OCF ließ mich über folgendes Problem nachdenken.&lt;br /&gt;
&lt;br /&gt;
Zufällig hervorgebrachte Merkmale helfen Mitglieder einer Population bei neuen Umweltbedingungen zu überleben. Die Überlebenden sichern den Fortbestand der Population.&lt;br /&gt;
&lt;br /&gt;
Die Daodan reagiert direkt auf Umwelteinflüsse und kennt wahrscheinlich – oder zum großen Teil – keine Zufälligkeiten mehr. Bei der sexuellen Fortpflanzung von Daodan-Trägern ist es daher ungewiss ob die Daodan mit der Rekombination des Erbguts zurechtkommt oder dies zumindest zulässt. Es besteht für die Rekombination eigentlich keine Notwendigkeit mehr.&lt;br /&gt;
&lt;br /&gt;
Wenn keine Rekombination stattfindet, könnten vielleicht weibliche Gameten (Eizellen) mit und ohne Erbgut entstehen, wobei nur die weibliche Gameten ohne Erbgut ein männlichen Gamet aufnehmen. Die Gameten sind also zu Beginn schon diploid. (Sie haben einen doppelten Chromosomensatz, der für gesunde Menschen erforderlich ist). Der Kontakt von männlichen Hormonen qualifiziert die Eizelle zur „Zygote“; es hat also jetzt den Status „befruchtet“. Nidation und embryonelle Entwickung folgt. Die Weitergabe mikrobiellen Daodan-Symbionten findet bei der Geburt statt (...) und mit der Aufnahme in der Muttermilch. (Die Weitergabe von [[wp:De:Bifidobacterium|Bifidobakterien]] könnte man als eine  Art Beispiel aus dem echten Leben nennen.)&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Real world parthenogenesis to be added here.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Contamination of the ecosystem====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Short term threat: local balance is disrupted.&amp;lt;br&amp;gt;&lt;br /&gt;
Long term threat: integration of Daodan&#039;s genetic material into parasites, germs, etc.&amp;lt;br&amp;gt;&lt;br /&gt;
An improbable long term chance: symbiosis at a planetary scale - &amp;quot;Gaia&amp;quot;.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
GV&#039;s &amp;quot;Chrysalis&amp;quot; work group thinks that the Daodan will contaminate the environment sooner or later (in case it hasn&#039;t already happened) because of [[wp:Horizontal_gene_transfer#Prokaryotes|horizontal gene transfer]] causing unseen threats. Hence the Daodan needs a patch. The idea was and is to protect the prime symbiont, the human host. To ensure that the microbial Daodan cells only stays with the human flora, these cells need to die in the absence of the prime symbiont by dissolving their genetic material with an enhanced lysosome.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;s&amp;gt;(Will [[:Image:Guido - Pandora vs. Mukade.jpg|Pandora]] hunt down all hosts with an original Daodan (to patch them or kill the hosts) ?)&lt;br /&gt;
&lt;br /&gt;
This patch solves only one part of the problem. Existing Daodans would be still a permanent danger, especially the unknown number in Syndicate &#039;property&#039;. In worst case, this threat would have to be met on a planetary scale. This would require full control over all matter and lifeforms.&amp;lt;/s&amp;gt;&amp;lt;!-- (Biocontrol) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Related topic:&lt;br /&gt;
* [[#Bioc|bioc]]&lt;br /&gt;
* faked Biosafety concerns (TCTF, Konoko)&lt;br /&gt;
&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
&#039;&#039;&#039;Kontamination der Umwelt&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
GV&#039;s &amp;quot;Chrysalis&amp;quot;-Arbeitsgruppe hält es für wahrscheinlich, dass die Daodan früher oder später (falls dies nicht schon geschehen ist) die Umwelt kontaminiert: horizontaler Gentransfer könnte noch nie gesehende Gefahren entstehen lassen. Deshalb benötigt die Daodan einen Patch. Die Idee war und ist den Primär-Symbionten, den menschlichen Wirt, zu beschützen. Um sicherzustellen, dass die mikrobischen Daodan-Zellen die Normalflora nicht verlassen, müssen sie in Abwesenheit des Primär-Symbionten absterben wobei ihr genetisches Material durch ein verbessertes Degradosom zerstört wird.&lt;br /&gt;
&lt;br /&gt;
(Wird Pandora angeheuert um alle Original-Daodan-Wirte zu patchen oder zu eliminieren?)&lt;br /&gt;
&lt;br /&gt;
Der Patch löst nur ein Problem. Die bereits existeirenden Daodan-Wirte sind weiterhin einen ständige Bedrohung, besonderst die unbekannte Anzahl an Wirten des Syndikats. Im schlimmsten Fall muss die Gefahr auf planetarer Ebene bekämpft werden. Dies würde aber volle Kontrolle über alle Organismen und Materie voraussetzen. &amp;lt;!-- (Biokontrolle) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Weiterführende Themen: [[#Bioc|Biok]]&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Daodan self-defense and diagnostics===&lt;br /&gt;
What do you need for anti-cancer or anti-mutation tests in a Daodan?&lt;br /&gt;
&lt;br /&gt;
It would have been much easier to create a Daodan with an &amp;quot;on-board genome&amp;quot;* transforming all other human hosts into clones of Muro and Mai -  then evolving into genetic individuals again.&lt;br /&gt;
&lt;br /&gt;
Hasegawa discarded this idea to avoid immuno-rejections, social confusion and the losing genetic diversity. Now evolution would be driven by the Daodan but he didn&#039;t wanted to act in hybris and lose dormant traits that might proof useful at a later time. His decision was enhanced by his education and political opinion on WCG. Diversity shouldn&#039;t be scarified for efficiency, history would show what works and what does not. (Although he was also unsatisfied with randomness being the decider - as also Jamie&#039;s dead looked random... &amp;quot;Sometimes there are only bad solutions available.&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
* The Syndicate&#039;s mass-produced version works more like a collection of patches instead of an OS upgrade.&lt;br /&gt;
&lt;br /&gt;
Meanwhile Pensatore foresees that the host survival doesn&#039;t correlate with brain intelligence but the Daodan intelligence. During time, the Daodan would adapt to critical situations by sacrificing brain mass or functionality. The evolutionary weakness of the Daodan is its inability to think but to compute. Pensatore therefor sees mankind&#039;s future in the Omega Chimera and the Biocracy. Hasegawa works and Pensatore&#039;s critics are much later used to create the Meta-Daodan (symbiont of the actual Daodan).&lt;br /&gt;
&lt;br /&gt;
At least Pensatore and Hasegawa agreed in one thing: independency. GOP was still a &amp;quot;too big&amp;quot; organization. It seemed impossible to them that the WCG would tolerate such ... experiment. With the ultimate technology any individual would be free to live without owning anything else rendering the WCG&#039;s promises for security and care-taking obsolete.&lt;br /&gt;
&lt;br /&gt;
Hasegawa&#039;s &#039;bad&#039; solution: Random sampling of cells whereby the statistical mean defines the &#039;healthy&#039; sequences.&lt;br /&gt;
Mutations happen all the time so that the different genomes cannot be taken for an boolean answer.&lt;br /&gt;
You rather have to compare the genes and other functional DNA sequences.&lt;br /&gt;
Drawback: if the majority of cells is contaminated by a new stable mutation (induced by hostile vectors such as erroneous CRISPR-cas9?) the other cells will be updated by that mutation as well.&lt;br /&gt;
This rare case and (fallback 2) database-induced errors have to be resolved by recomputing the sequence in question which needs a static metamorphosis or the accumulated use of all available Oni clusters.&lt;br /&gt;
&lt;br /&gt;
75 percent of random sampling searches for typical cancer markers such as [https://arstechnica.com/science/2017/05/killing-cancer-cells-using-the-dna-that-drives-them/ driver mutations.]&lt;br /&gt;
&lt;br /&gt;
Special cases:&lt;br /&gt;
&lt;br /&gt;
Pendulum syndrome: cycling environmental influences keep the Daodan busy, theoretically not harmful but resource intensive.&lt;br /&gt;
&lt;br /&gt;
Fallback 1: [[wp:Oncolytic_virus|oncolytic viruses]] in case of too high EM interference. In this case static metamorphosis drives skin cells to form an faraday cage.&lt;br /&gt;
&lt;br /&gt;
Fallback 2: an massively attacked Daodan forms a &#039;fixed&#039; template for healthy cell types. These are then used to create new cells. The random sampling to skipped until the holobiont is stabilized again.&lt;br /&gt;
&lt;br /&gt;
Survived attacks on the fixed template through a static metamorphosis cause the Daodan to go into combat mode (boosting physical strength) as the host might soon get under a new attack and need to defend himself.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Signal protection and anti-hacking measures====&lt;br /&gt;
In the 21st century EM fields are ubiquitous and create an unwanted background noise for the Daodan. Oni clusters encode transmissions in different frequencies simultaneously. The redundant signals are compared so that corrupted pieces can be filtered out.&lt;br /&gt;
&lt;br /&gt;
Daodan technology will attract human attackers so Avatara was tasked to create secure cell communication. An imago has enough Oni clusters to perform [[wp:Post-quantum_cryptography|post-quantum cryptography]] rendering the Daodan immune against remote attacks who also use quantum computers. However, PQC wasn&#039;t implemented due to lack of dev time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Memory delta patches====&lt;br /&gt;
Fullbody simulation revealed that a physical brain can fully heal but memories can be lost forever when the injury was too big.&lt;br /&gt;
&lt;br /&gt;
As consequence Avatara implemented the creation and re-integration of memory delta patches. Daodan hosts have the ability to store a backup of their brain as DNA capsules (main memory chromosomes). The problem is delta patches start forming as soon as brain cells are getting transformed while a full backup (reference for the deltas) is only created when the host reaches Imago stage and Mai&#039;s Imago stage remained uncomplete. Full brain backups are highly compressed data structures made possible by the quantum computing Oni cluster cells of Imagos.  &lt;br /&gt;
&lt;br /&gt;
However, Mai has another source for a full brain backup. Her first brain scans which were used to create the engrams for Shinatama.&lt;br /&gt;
&lt;br /&gt;
Shinatamas memories are used for a &amp;quot;soft imprinting&amp;quot; (not 1:1 copying), sorting and strengthening the blurry thoughts. (Pushing neural regeneration into the right directions.) After all, Shinatama has seen and heard everything Mai did.&lt;br /&gt;
&lt;br /&gt;
Delta patches can be used on an existing brain to restore a region. If a brain is completely destroyed, the Daodan tries to restore the full backup first and then applies the deltas.&lt;br /&gt;
&lt;br /&gt;
The main backup is supposed to be renewed every year or few years.&lt;br /&gt;
&lt;br /&gt;
New story idea: During RS (and the Phönix wars?) Mai is taken in as soldier and loses her memories during a series of fights. Hitman destroy her with bullets and explosives but she can always regenerate by static metamorphosis. She does not remember Shinatama and turn &amp;quot;evil&amp;quot; at some point. One day Muro pushes her into true imago stage and her memories begin to fully come back.&lt;br /&gt;
&lt;br /&gt;
The life of Mai is a drama. She is the embodiment of risks and chances of future technology. For dramaturgic effect her recovery must have a high cost. (Greek tragedy type 2? The hero doesn&#039;t die in the end, he survivied because he already suffered so much, like Odysseus.)&lt;br /&gt;
&lt;br /&gt;
Restoring her memories makes her reject Phönix which results in forming of factions and weakens the organization as a whole. Some of her Phönix friends turn out to be her new, old enemies... She, as another embodiment of the Phönix, lived many lifes; the title Phönix was also hold by Griffin after being revived with a GATC &amp;quot;spare&amp;quot;. However, the organization as such repeately used advanced SLD engramm patterning to give her fake memoies when she died once again. They turned her into a weapon and didn&#039;t care about her identity and free will.&lt;br /&gt;
&lt;br /&gt;
====Future upgrades====&lt;br /&gt;
&amp;lt;s&amp;gt;I don&#039;t think this will happen in RS, but in later sequels. It&#039;s better to write it down than forgetting it again after a while.&amp;lt;/s&amp;gt;&lt;br /&gt;
* [[wp:Telomerase|telomere regeneration]]: which allows biological immortality (overpopulation problem appears)&lt;br /&gt;
* cyborg genes: construction genes which take care of implants -- nothing special in comparison to our human growth genes -&amp;gt; Omega Chimera&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Omega Chimera&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Omega Chimeras can make use of external memory storage for different Imago stages and also knowledge.&lt;br /&gt;
* Long-range objective is to create a collective consciousness (via network) called [[wp:Daimon|Daimon]]. &amp;lt;!--(Its success will bring about the creation of superintelligences and avatars.)--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Versions===&lt;br /&gt;
While Daodan biomass undergoes hyperevolution it of course gains new abilities. However, lab-created strains got also improvements over time.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Daodan v0.99&#039;&#039;&#039;&lt;br /&gt;
:Prototype (in memory of Neo and his OniSplit v0.99)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Daodan v0.99b&#039;&#039;&#039;&lt;br /&gt;
:Syndicate version for mass-production&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Daodan v1.0&#039;&#039;&#039;&lt;br /&gt;
:telomere regeneration, enabled reproduction, PQC&lt;br /&gt;
:Konoko, gets this after visiting the lab where Hasegawa worked on the Daodan together with Pensatore and Kimura&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Daodan v1.1&#039;&#039;&#039;&lt;br /&gt;
:ATP transfer between Imagos&lt;br /&gt;
:Youngsters who are Omegas or Imagos share the same social yet self-destructible behavior. A dare in which the individual converts the ATP or other chemical reserves into electricity showing off a plasma bolt. The one with the biggest or most interesting bold &amp;quot;wins&amp;quot;. Theoretically the individual can die in the process if he doesn&#039;t reconvert the bolt to the chemical energy reservoir again. Even the attempt can be dangerous. The challenge is to hold back just as much as he needs to show it off and initializing the reconversion. The bolt is literally life force.&lt;br /&gt;
&lt;br /&gt;
On the other hand it is considered a romantic gesture to give away a part of your own &amp;quot;life force&amp;quot; - during marriages energy is exchanged instead of rings.&lt;br /&gt;
&lt;br /&gt;
Once in a year some people in GV spend a bolt on the war memorial, the [[Talk:Restless_Souls/Summary|soul tree]], which then release it again at the same night.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Daodan v1.2&#039;&#039;&#039;&lt;br /&gt;
:cold plasma (disinfection purpose)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Daodan v1.3&#039;&#039;&#039;&lt;br /&gt;
:hot plasma&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Daodan v2.0&#039;&#039;&#039;&lt;br /&gt;
: A.k.a. &amp;quot;omega&amp;quot; strain as the likelihood to survive with this version is equally high than that of an Omega Chimera. It&#039;s an own life form that observes its host before it merges with it. It is compatible with any other life form as long as it is bigger than a mouse or shrub - the cell number limit to form sensors and computing structures. Trivia: The Arc Crew believes Mai planted one of these on a planet together with the biological remnants of her parent. (Legend of fountain of youth.) After a sudden turn of events she is captured from the MEM fraction and put to stasis (prison) while Avatara is sentenced for exile. Avatara isn&#039;t longer commanding the geo-ship, he has his own arguments with the MEM fraction. He uses a trick, he shapeshifts himself into Konoko and vice versa. --- Aons later. Daya finds out that Mai is still out there. They are the figureheads of their planets. - (&amp;quot;Learn to live together, idiots.&amp;quot;) They will fight alone, the armies watching in the background. ... Yet, Nishio will rotate in his grave, literally. Dust alone outlasts the civilizations. There&#039;s only Zen left for him.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Meta-Daodan&#039;&#039;&#039;&lt;br /&gt;
: An own life form that can go into symbiosis with any other life form. It can have an intellect of human&#039;s level and therefore reject a fusion.&lt;br /&gt;
&lt;br /&gt;
===Stunning real world symbioses for inspiration===&lt;br /&gt;
The word symbiosis means &amp;quot;living together&amp;quot;. Whether the outcomes are good or not is another question. However, in daily life, symbiosis means a relationship of mutual gain.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
! symbiosis types by interaction&lt;br /&gt;
! symbiosis types by utility&lt;br /&gt;
|-&lt;br /&gt;
|on metabolic level (e.g. corals; lichens)&lt;br /&gt;
|mutualism&lt;br /&gt;
|-&lt;br /&gt;
| through behavior (e.g. flowering plants + insects, birds; ants + fungi / greenflies)&lt;br /&gt;
| parasitism&lt;br /&gt;
|-&lt;br /&gt;
| on genetic level (e.g. virus + host organism)&lt;br /&gt;
| interstages of mutualism and parasitism (commensalism, amensalism, etc.) &lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The following subsections are meant to show what real symbiosis is capable of and that it exists between very different species. Therefore those sections display combinations of the so-called [[wp:Kingdom_%28biology%29#Six_kingdoms|kingdoms]]. (As a layman I still prefer the older and simpler model.) Unfortunately viruses are unranked so far.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Virus====&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;Are viruses lifeforms?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: The problem is that they are really neither dead nor alive. They are &#039;&#039;zombies&#039;&#039;, so to speak. They do nothing until they infect a suitable host cell and become active again. Living things were thought to always have an active metabolism. Then [[wp:Tardigrade|tardigrades]] were found to break that rule with their cryptobiosis (&amp;quot;hidden life&amp;quot;). In that stage, their metabolism is almost too low for measurement [[wp:Cryptobiosis#Examples|(under 0.01%)]]. After that discovery, scientists had the rethink the definition of death. The microbes&#039; state of temporary &#039;&#039;death&#039;&#039; was defined as a kind of extreme &#039;&#039;hibernation&#039;&#039;, namely cryptobiosis, and some Christians were happy that their religion was the sole promise again for resurrection.&lt;br /&gt;
&lt;br /&gt;
: A virus cannot reproduce itself without a host, but that&#039;s also true for some endoparasites (parasitic organisms in other organisms). And a virus does not have its own metabolism, but can take over the host&#039;s metabolism and organelles. In this view, a virus might be a very mean and clever bastard, but it lives.&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;From symbiosis to symbiogenesis.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: So a virus makes the host its &#039;&#039;own body&#039;&#039;; but there also exist symbiotic viruses. These have not taken over a host cell, but sorta vice versa: they became fully incorporated into the host&#039;s genome. Two examples: First, the [[wp:Polydnaviriformidae|polydnavirus]] inside of ichneumonid (parasitic) wasps is only produced when the wasps lay eggs in a caterpillar. The virus helps the wasp eggs to survive inside the caterpillar by affecting the immune system and changing the metabolism to the advantage of the wasp eggs. The second example concerns us humans (and all animals with a placenta). The retrovirus [[wp:Syncytin-1|ERVWE1]] in our genome merges placenta cells through its produced protein &amp;quot;syncytin&amp;quot; in order to create a protective layer. That way, the embryo stays untouched by the mother&#039;s immune system. Otherwise it could be recognized as a foreign body because of the father&#039;s genes. The retrovirus gives us an advantage compared to non-placental mammals.&lt;br /&gt;
&lt;br /&gt;
: The polydnavirus is still reproduced, but the second virus completely gave up its independence. They, the host and the virus, are rather one new organism instead of two. This process of merging organisms is called [[wp:Symbiogenesis|symbiogenesis]].&lt;br /&gt;
&lt;br /&gt;
: &#039;&#039;&#039;How much human DNA makes up our body?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Incorporation of outside genetic material happened more than once. When the human genome was [[wp:DNA_sequencing|sequenced]] on a  [[wp:Human_Genome_Project|large scale]], only 1.4% was found to encode our &#039;&#039;building material&#039;&#039; - the proteins; the rest appeared to be &amp;quot;junk&amp;quot; DNA. Today we know that 8.5% are old retroviruses (HERVs). -- This brings Agent Smith from the movie Matrix into mind when [https://www.youtube.com/watch?v=JrBdYmStZJ4&amp;amp;t=117s he classified humans as a virus] because of certain similarities: according to him, humans replicated unchecked, consumed all resources, and spread to a new area (host) when another area ran out of resources. Now he would have genetic proof, you might think: our DNA is more &amp;quot;virus&amp;quot; than &amp;quot;human&amp;quot;. -- Well, the old retroviruses are almost all defective so they don&#039;t matter much. Also, noncoding but function-holding RNA and regulatory sequences - &#039;&#039;tools&#039;&#039; and &#039;&#039;building instructions&#039;&#039; - have been identified from the junk now. So, yes, no need to panic, we are still human enough.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Symbiotic [https://phys.org/news/2014-11-natural-gut-viruses-bacterial-cousins.html Virom]&#039;&#039;&#039;&lt;br /&gt;
More information:&lt;br /&gt;
* https://www.spektrum.de/news/wie-viren-unseren-darm-beherrschen/1426006&lt;br /&gt;
* http://web.archive.org/web/20210410211029/https://www.akdae.de/Arzneimitteltherapie/AVP/Artikel/201803/149h/index.php&lt;br /&gt;
...&lt;br /&gt;
&lt;br /&gt;
====Insect and bacteria====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Faithful allies since the Cretaceous: Symbiosis between beewolves and protective bacteria originated millions of years ago&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[...] A particularly fascinating defensive alliance occurs in the European beewolf (Philanthus triangulum), a digger wasp that hunts honeybees and provisions them for its offspring in underground nests. Previous research has shown that bacterial symbionts of the genus [[wp:Streptomyces|Streptomyces]] live in the wasp&#039;s antennae and on the larval cocoons. The bacteria produce a cocktail of nine different antibiotics that fend off detrimental fungi and bacteria from infecting the developing larva in the cocoon. This strategy to avoid infections is comparable to the combination prophylaxis used in human medicine.&lt;br /&gt;
&lt;br /&gt;
The scientists now reconstructed the phylogenies of different beewolf species and their symbionts. An analysis of the beewolf phylogeny revealed that the symbiosis with Streptomyces first originated in the late Cretaceous, between 68 and 110 million years ago. At present, about 170 species of wasps live in symbiosis with the protective bacteria. [...]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;source:&#039;&#039;&#039;&amp;lt;br&amp;gt;- https://www.sciencedaily.com/releases/2014/04/140414154450.htm&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Treue Verbündete seit der Kreidezeit: Symbiose zwischen Bienenwölfen und schützenden Bakterien entstand vor Millionen von Jahren&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eine besonders faszinierende Verteidigungsallianz trifft man beim europäischen Bienenwolf an (Philanthus triangulum), einer Grabwespe, die nach Honigbienen jagt und diese ihrem Nachwuchs in Untergrundnestern als Verpflegung bringt. Vorige Forschung hat gezeigt, dass die Bakteriensymbionten der Gattung [[wp:de:Streptomyces|Streptomyces]] in den Antennen und auf den Kokons der Wespe leben. Die Bakterien produzieren einen Cocktail aus neun verschiedenen Antibiotika, die schädliche Pilze und Bakterien davon abhalten die sich entwickelnde Larve im Kokon zu infizieren. Diese Strategie Infektionen zu vermeiden ist vergleichbar mit der Kombinationsprophylaxe, die in der menschlichen Medizin angewendet wird. &lt;br /&gt;
&lt;br /&gt;
Die Wissenschaftler rekonstruierten nun die Stammesgeschichten der verschiedenen Bienenwolf-Arten und ihrer Symbionten. Die Analyse der Bienenwolf-Stammesgeschichte offenbarte, dass die Symbiose mit Streptomyces in der späten Kreidezeit entstand, vor etwa 68 bis 110 Millionen Jahren. Derzeit leben etwa 170 Wespenarten in Symbiose mit Schutz bietenden Bakterien.&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Fungus and plant====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;More than 400 million years of evolution, and some plants still can&#039;t make it on their own: plant stress tolerance via fungal symbiosis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
All plants in natural ecosystems are thought to be symbiotic with [[wp:Mycorrhiza|mycorrhizal]] and/or [[wp:Endophyte|endophytic]] fungi. Collectively, these fungi express different symbiotic lifestyles ranging from parasitism to mutualism. Analysis of Colletotrichum species indicates that individual isolates can express either parasitic or mutualistic lifestyles depending on the host genotype colonized. The endophyte colonization pattern and lifestyle expression indicate that plants can be discerned as either disease, non-disease, or non-hosts. Fitness benefits conferred by fungi expressing mutualistic lifestyles include biotic and abiotic stress tolerance, growth enhancement, and increased reproductive success. Analysis of plant–endophyte associations in high stress habitats revealed that at least some fungal endophytes confer habitat-specific stress tolerance to host plants. Without the habitat-adapted fungal endophytes, the plants are unable to survive in their native habitats. Moreover, the endophytes have a broad host range encompassing both monocots and eudicots, and confer habitat-specific stress tolerance to both plant groups.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;source:&#039;&#039;&#039;&amp;lt;br&amp;gt;https://web.archive.org/web/20220121215437/https://academic.oup.com/jxb/article/59/5/1109/538568&lt;br /&gt;
&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
&#039;&#039;&#039;Mehr als 400 Millionen Jahre Evolution und manche Pflanzen können immer noch nicht alleine auskommen: Stressresistenz von Pflanzen via Pilzsymbiose&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Es wird angenommen, dass alle Pflanzen in natürlichen Ökosystemen Symbiosen mit [[wp:DE:Mykorrhiza|Mykorrhizapilzen]] und/oder [[wp:DE:Endophyt#Endophytische_Pilze|endophytischen Pilzen]] eingehen. In Anwesenheit der Pflanze entfalten diese Pilze symbiotische Lebensstile von Parasitismus bis Mutualismus. Die Analyse von Glomerella(Colletotrichum)-Arten zeigt, dass einzelne isolierte Pilze entweder parasitäre oder mutuale Lebensstile entfalten können, abhängig von dem besiedelten Genotyp des Wirts. Das endophyte Besiedlungsmuster und die Ausprägung des Lebensstils zeigen, dass Pflanzen entweder als krank, nicht-krank oder Nicht-Wirt wahrgenommen werden können. Von Pilzen übertragende Fitness-Profite bringen mutuale Lebensstile zum Ausdruck, was biotische und abiotische Stresstoleranz, Wachstumsverstärkung, und erhöhte Fortpflanzungschancen mit einschließt. Die Analyse von innerpflanzlichen Gemeinschaften in hochbelastenden Lebensräumen offenbart, dass zumindest manche endophytische Pilze lebensraumspezifische Stresstoleranz den Wirtspflanzen verleihen. Diese Pflanzen wären ohne die lebensraumangepassten endophytischen Pilze nicht im Stande in ihren natürlichen Lebensraumen zu überleben. Außerdem haben die Endophyten eine breite Wirtsauswahl, die sowohl einkeimblättrigen als auch dreifurchenpollen-zweikeimblättrige Pflanzen umfasst, und daher lebensraumspezifische Stresstoleranz auf beide Pflanzengruppen überträgt.&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Virus, fungus and plant====&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;A Virus in a Fungus in a Plant: Three-Way Symbiosis Required for Thermal Tolerance&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A mutualistic association between a fungal endophyte and a tropical panic grass allows both organisms to grow at high soil temperatures. We characterized a virus from this fungus that is involved in the mutualistic interaction. Fungal isolates cured of the virus are unable to confer heat tolerance, but heat tolerance is restored after the virus is reintroduced. The virus-infected fungus confers heat tolerance not only to its native monocot host but also to a eudicot host, which suggests that the underlying mechanism involves pathways conserved between these two groups of plants.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;source:&#039;&#039;&#039;&amp;lt;br&amp;gt;- https://web.archive.org/web/20210912141456/https://www.science.org/doi/abs/10.1126/science.1136237&amp;lt;br&amp;gt;- &amp;lt;nowiki&amp;gt;http://www.rcn.montana.edu/pubs/pdf/2007/science%202007.pdf&amp;lt;/nowiki&amp;gt; (dead link)&lt;br /&gt;
&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
&#039;&#039;&#039;Ein Virus in einem Pilz in einer Pflanze: Drei-Wege-Symbiose benötigt für Hitzetoleranz&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Eine mutuale Gemeinschaft von einem endophytischen Pilz und einer tropischen Rutenhirse (Panicum virgatum) erlaubt beiden Organismen bei hohen Bodentemperaturen zu wachsen. Wir charakterisierten ein Virus von diesem Pilz, der an der mutualen Interaktion beteiligt ist. Isolierte Pilze, die vom Virus geheilt wurden, waren unfähig Hitzetoleranz zu übertragen, jedoch wurde die Hitzetoleranz nach der Rückeinführung des Virus wiederhergestellt. Der virusinfizierte Pilz übertrug Hitzetoleranz nicht nur an seinen natürlichen einkeimblättrige Wirt sondern auch an ein dreifurchenpollen-zweikeimblättrigen Wirt, was nahelegt, dass die zugrundeliegenden Mechanismen zwischen den beiden Pflanzengruppen zu finden sind.&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Bioc==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&amp;quot;Bioc&amp;quot; is an abbreviation for its nickname &#039;&#039;bio crystal&#039;&#039;. The name was given due to many borrowed mechanisms from living (&amp;quot;bio&amp;quot;) systems and one of the prototype&#039;s macroscopic appearances is a crystal. &amp;lt;!-- (It can have various meanings: Biocrystal, Biocontrol, Biocracy) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The bioc is a research project of Silver Village (SV), which again is financed by WCG&#039;s Aeronautics and Space Administration (the former NASA). The project involves nanorobots for terraforming other planets.&lt;br /&gt;
&lt;br /&gt;
During high peaks of the [[BioCrisis|environmental crisis]], an idea arose to repurpose the bots. They should be used to filter out the toxic substances from the environment of our own planet.&lt;br /&gt;
&lt;br /&gt;
After the [[12/3|cataclysm]], WCG politicians also demanded that they be assigned to eliminate genetic material of Daodans in the wild.&lt;br /&gt;
&lt;br /&gt;
Originally the bioc was to be ASA&#039;s tool to find, analyze and eventually manipulate matter, as well as extraterrestrial microbial life forms. Now it&#039;s going to be WCG&#039;s last &#039;&#039;weapon&#039;&#039; against toxic air, Daodan threats, and the Syndicate ...&lt;br /&gt;
&lt;br /&gt;
The biological aspects of the research were outsourced to the sister facility Green Village (GV). A few different versions of bioc prototypes were produced there before the complex was partially destroyed.&lt;br /&gt;
&lt;br /&gt;
A purely &#039;&#039;artificial&#039;&#039; approach would produce a [http://imgs.xkcd.com/comics/nanobots.png massive address number] for the individual bots and therefore cause computational problems. So the bioc is supposed to create a biological means of control, whereby a kind of &#039;&#039;self-awareness&#039;&#039; is formed by sensor systems and neural networks (as with SLDs). When the bot population reaches a predefined critical mass, specialized nodes (&#039;&#039;organs&#039;&#039;) are created for &#039;&#039;higher abilities&#039;&#039; like regional localization (via GPS, etc.). These nodes also allow humans to take control over the bot collective.&lt;br /&gt;
&lt;br /&gt;
To prevent the Daodan&#039;s continuing contamination and reconquering of already cleaned areas, the bots need to cloak all lifeforms at first, analyzing them, and then killing all separated microbial Daodan cells. This event is code-named &amp;quot;Silver Dawn&amp;quot;. It&#039;s planned that all bots on and inside of an organism will destroy themselves, while the subterranean nodes will remain secure for economic purposes.&lt;br /&gt;
&lt;br /&gt;
However, some are worried that the responsible authorities will succumb to the tremendous power, and let the bots remain inside the organisms, especially humans. But, just as likely, hackers could succeed in taking over the system. The WCG will think twice if they want to unleash the bots on the world. Silver Dawn could change everything - to the good or to the bad.&lt;br /&gt;
{{divhide|German translation ...}}&lt;br /&gt;
&amp;quot;Biok&amp;quot; ist eine Abkürzung für seinen Nicknamen &amp;quot;Biokristall&amp;quot;. Der Name lehnt an Mechanismen der belebten Natur (&amp;quot;bio&amp;quot;) an sowie der makroskopischen Gestalten einiger &#039;&#039;Zelltypen&amp;quot; der Prototypen, die wie ein Kristalle aussehen. &amp;lt;!-- Je nach Situation: Biokristall, Biokontrolle, Biokratie) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Der Biok ist ein Forschungsprojekt von Silver Dawn, einer Einrichtung, die wiederum von der WKR&#039;s Aeronautics and Space Administration (ASA), der ehemaligen NASA, finanziert wird. Das Projekt umfasst selbstreplizierende, semi-autonome Nanoroboter für das Terraforming anderer Planeten.&lt;br /&gt;
&lt;br /&gt;
Nach wiederkehrenden Rekordwerten der Giftkonzentrationen in der Atmosphäre, Boden und Gewässer kam die Idee auf die Nanoroboter etwas umzufunktionieren. Sie sollten die giftigen Subtanzen aus der Umwelt des eigenen Planeten filtern.&lt;br /&gt;
&lt;br /&gt;
Nach dem Big Bang forderten WCG-Politiker auch den Einsatz der Nanobots zur Eliminierung von Daodan-Genmaterial in der freien Wildbahn.&lt;br /&gt;
&lt;br /&gt;
Ursprüngliche sollte der Biok ein Werkzeug der ASA sein Materie wie auch extraterrestrisch-mikrobiologisches Leben zu finden, zu analysieren und letztendlich auch zu manipulieren. Nun würde es das letzte &#039;&#039;Mittel&#039;&#039; der WCG gegen toxische Luft, Daodan-DNA, und Syndikat-Aktionen sein...&lt;br /&gt;
&lt;br /&gt;
Zur Erschaffung einer Selbstwahrnehmung formen die Bots Sensorsysteme und neuronaler Netzwerke (wie SLD es tun) wobei einige taktischer Knotenpunkte mit weitere &#039;&#039;Organe&#039;&#039; gebildet werden  (z. B. Seismische Ortungssystem und GPS-Receiver). Diese Knoten erlaubt aber auch Kontrolle über das Bot-kollektiv von Seiten des Menschen. Die  Knoten werden erst gebildet wenn eine &#039;&#039;kritische Masse&#039;&#039; im Bot-Kollektiv erreicht wurde.&lt;br /&gt;
&lt;br /&gt;
Um zu verhindern, dass die Daodan die Umwelt mit ihrer DNA &#039;&#039;kontaminiert&#039;&#039; oder rückerobert, müssen die Bots alles Lebensformen einschließen, sie analysieren, und dann alle losgelösten mikrobielle Daodan-Zellen. Dem Ereignis wurde der Codename &amp;quot;Silver Dawn&amp;quot; gegeben. Es ist geplant, dass alle Bots, die verschonten Organismen wieder verlassen und insbesondere nur die Unterirdischen Knoten für zukünftige ökonomische und ökologische Zwecke zurückbleiben.&lt;br /&gt;
&lt;br /&gt;
Allerdings gibt es einige Befürchtungen, dass die Verantwortlichen der ungeheuren Macht erliegen könnten und die Bots nicht wieder aus den Organismen abziehen. Genauso gut könnten es auch Hacker geben, die das System unter ihre Kontrolle bringen. Die WCG wird sich zweimal überlegen ob sie die Bots wirklich auf die Welt loslassen will. Silver Dawn könnte Alles verändern - zum Gutem wie auch zum Schlechten.&lt;br /&gt;
{{divhide|end}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Additional notes for Caged Birds chapter:&lt;br /&gt;
&lt;br /&gt;
Guiding construction and deconstruction by using electricity and light waves. The more dry the bioc get &amp;quot;burned&amp;quot; by high voltage the more concrete-like it gets. Kimura and his man at BlueMountain manipulate the construction algorithm to replace certain walls. That way he can bypass the most critical security measures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Protocols===&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Management and self-management&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
To cover wide areas the bioc needs to grow and find energy sources. A &amp;quot;node&amp;quot; in a energy poor area can demand resources from other nodes so that the network remains fully functional. Those nodes are also meant to transfer new instructions of an human operator through the entire network.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Destructive scan&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the early years the challenge was to control the Bioc cells at all, to give them directions, let them take shapes and build their sensors. &lt;br /&gt;
&lt;br /&gt;
In the basic research a non-destructive scan was out of reach. Instead the Bioc advanced into new areas with a crystal latices to then collect the information of its direct surroundings. This was exactly the time Pensatore had access to the Bioc. He actually planed to to create tools with it to escape the facility he was taken hostage in.  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Non-destructive scan&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
With the improvement in control and self-management the Bioc was programmed to do autonomic scans of the environment.&lt;br /&gt;
# It is supposed to go the way of the lowest resistance, preferring cracks in rocks, water channels in soil.&lt;br /&gt;
# It is supposed to avoid multi-cellular life so that it doesn&#039;t aggregate in animals and disrupt any biological functions. &lt;br /&gt;
&lt;br /&gt;
During the bombing of GV there was a version with only the first set of protocols. Set free it spread everywhere and infect multi-cellular live while trying scanning it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Support of humans lives&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The question how the bioc could be of direct use to humans lead also to an medical concept. Victims of natural disasters (e.g. people buried under avalanches and destroyed houses) could be provided with clean water, heat, and wound treating to stop blood lose.&lt;br /&gt;
&lt;br /&gt;
It remains unclear whether Daya acquired such Bioc protocol or managed on her own to reach the fragile equilibrium of Bioc and Daodan growth rates.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Geo-mapping&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Large-scale non-destructive scans are equally interesting for archeologists and xeno-archeologists, also those scans are requirements of any successful geoengineering and terraforming projects. Though, future applications of the Bioc are nearly limitless.&lt;br /&gt;
&lt;br /&gt;
===Another set of notes...===&lt;br /&gt;
* The Bioc is a total blend of nanotechnolgy and biology.&lt;br /&gt;
* The Bioc is the flag-ship project of the synthetic life research community, hence they are very proud of it.&lt;br /&gt;
* Energy supply: In the depth of Earth the bioc can produce energy from piezoelectricity (basically electricity from pressure), [[wp:Thermoelectric_effect|heat gradients]] partially from [[wp:Earth&#039;s_internal_heat_budget#Radiogenic_heat|nuclear decay]]. Gamma ray photosynthesis wasn&#039;t yet implemented as is very difficult to achieve. Melanin can act as UV absorber when gamma rays lost energy from interacting with other matter, it also protects the cybernetic lifeform from free radicals.)&lt;br /&gt;
* Propagation: the Bioc uses an analog to DNA, made completely of artificial amino acids. This [[wp:Xeno_nucleic_acid|XNA]] is thought to prevent any interaction from natural lifeforms and viruses. Viruses - and hence lose of control - are something that shall be avoided at all costs.&lt;br /&gt;
* Getting rid of nuclear waste (and all waste in general): when the scientists worked on the energy supply they had to consider the planet&#039;s nuclear decay. The idea emerged that the bioc could be used to sink nuclear waste into the ground, far away from any human. The material could be distributed through the network, either lowering the concentration or bringing it to sites where waste heat could be safely collected and converted to electricity or chemical-bound energy. From that thought, it was an short distance until they realized that they could potentially sink any kind of waste into the ground and eventually degrade it.&lt;br /&gt;
* Like the Daodan, the Bioc needs computing power to solve complex tasks.&amp;lt;!-- Due to its crystalline components, the creators decided to let it use [http://phys.org/news/2013-07-valleytronics-electronics-diamond.html valleytronics], which is suitable for quantum computing.--&amp;gt;&lt;br /&gt;
* Since the Bioc must be able to replicate everywhere it can from its parts from many different kinds of matter.&lt;br /&gt;
* On the other hand, explored matter and stored energy can be used to create any product on a planet&#039;s surface. Those &amp;quot;grown on demand&amp;quot; products can be anything as along as a control node was formed and accessible to an human operator which has a connection to a molecular construction database.&lt;br /&gt;
* A fully explored planet with a managing AI is termed Gaia. For sequels, Aether would be the explored and utilized atmosphere.&lt;br /&gt;
* For instance, at places rich of carbon compounds, the hull, sensors, and QC parts are made of nanoscale diamonds with a [[wp:Nitrogen-vacancy_center|nitrogen-vacancy center]]. This diamonds with intentional &#039;&#039;defects&#039;&#039; are known to have relative stable quantum states at room temperature. These structures can also be used release energy in from of light in order to uncharge when too much electricity was gathered. But usually this is only a last resort when energy cannot be transfered to different places.&lt;br /&gt;
* How could Daodan and Bioc merge? Probably by overlapping structures that process information. -- Human mind and the Daodan can interact because the Daodan also has processing organelles inside neurons. Now the bioc, as a third player, could join the party when it invades the brain. Would the Daodan be a [https://phys.org/news/2013-09-hardware-trojans-undetectable.html hardware trojan] to the bioc, or the bioc to the Daodan, or both to each other? In an uncontrolled interaction, the functions of any entity could run amok; for the human, it will mean extreme pain (the bioc invasion alone will stress/destroy a lot of nerves). In the case of Daya, it&#039;s one reason why she continues to take drugs of all sorts.&lt;br /&gt;
&lt;br /&gt;
Applications:&lt;br /&gt;
* Energy and resource production, energy and resource transport, on-demand production of goods, waste management&lt;br /&gt;
* Geo-engineering&lt;br /&gt;
** terraforming in sense of altering the Earth&#039;s crust (reinforce coasts, stabilize mountain slopes, catch floods and heavy rainfall, etc.)&lt;br /&gt;
** Earth&#039;s magnetic field is running towards another reversal. Avatara is aware of that believes to be the only trustful entity to deal with that matter. The tool of choice to prevent a reversal is the deep-earth bioc which can control the flowing currents. A temporary collapse would leave wide areas unprotected against solar winds. These areas would become inhabitable for natural lifeforms. An abuse of the Bioc could accelerate the reversal process and result in an terror attack or mass-murder, possible be committed by daodanized terrorists or other ill-minded groups (GOP?).&lt;br /&gt;
** atmospheric control (pollution cleansing, weather and climate control)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Comparing DC and Bioc===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
!width=50%|Daodan Chrysalis&lt;br /&gt;
!Bioc&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|&lt;br /&gt;
passive, defensive, protective, analyzing harmful stimuli, flexible&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;guidelines:&amp;lt;br&amp;gt;- observe the own organism&amp;lt;br&amp;gt;- identify harmful influences&amp;lt;br&amp;gt;- adapt to those influences&amp;lt;br&amp;gt;(idea based on &amp;quot;negative utilitarianism&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Survival by adapting own organism. -&amp;gt; Give up / loss of self-control.&lt;br /&gt;
&lt;br /&gt;
Mirrors a possible new behavior.&amp;lt;br&amp;gt;(Based on Hasegawa&#039;s mindset.)&lt;br /&gt;
|valign=top|&lt;br /&gt;
active, aggressive, possessive, analyzing all matter, somewhat inflexible&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;guidelines:&amp;lt;br&amp;gt;- observe the environment&amp;lt;br&amp;gt;- identify types of matter&amp;lt;br&amp;gt;- make resources available&amp;lt;br&amp;gt;(idea based on &amp;quot;utilitarianism&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
Survival by adapting the environment. -&amp;gt; Total control.&lt;br /&gt;
&lt;br /&gt;
Mirrors old human behavior.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===The hybrid===&lt;br /&gt;
The two technologies meet at a cellular level and fight in hyperevolution.&lt;br /&gt;
&lt;br /&gt;
It seem totally possible that synergistic effects could occur if both entities eventually merge.&lt;br /&gt;
&lt;br /&gt;
However, the behavior of both - DC and Bioc - is extreme. And extremes tend to not last very long.&lt;br /&gt;
&lt;br /&gt;
Therefore the new entity might work according to new guidelines, for example:&lt;br /&gt;
&lt;br /&gt;
* Analyzing threats: Adapt to harmful stimuli &amp;lt;u&amp;gt;if&amp;lt;/u&amp;gt; limits become exceeded.&lt;br /&gt;
* Analyzing resources: Adapt to new energy sources &amp;lt;u&amp;gt;if&amp;lt;/u&amp;gt; preferred source is unavailable.&lt;br /&gt;
* Defense against &amp;lt;u&amp;gt;or&amp;lt;/u&amp;gt; cooperation with other organisms. (developing immunity or integration)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Discussing a possible fusion===&lt;br /&gt;
&#039;&#039;&#039;1 Overlapping processing structures&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
DC and Bioc start as small clusters. With more cells/units, they unlock new abilities.&lt;br /&gt;
&lt;br /&gt;
So, before a fusion can take place, both entities must have already reached their &#039;&#039;first critical volume&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Then, when their information processing structures overlap, an interaction could become possible.&lt;br /&gt;
&lt;br /&gt;
Both use computation to do their task, therefore they need a model of themselves.&lt;br /&gt;
&lt;br /&gt;
But even if both models overlap and somehow become one, their programming is still different.&lt;br /&gt;
&lt;br /&gt;
* If the models merged, the Bioc could try to use the human as a tool to fulfill its tasks.&lt;br /&gt;
&lt;br /&gt;
* Another problem could be (found in) the amount of units needed to reach the critical volume without destroying the daodanized human.&lt;br /&gt;
&lt;br /&gt;
So, here we see that there&#039;s probably more things needed to make both entities work together.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.1 Brain interface&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Syndicate soldiers and TCTF agents might have brain interfaces to receive/send biometric/optical data.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s see.&lt;br /&gt;
&lt;br /&gt;
:09_31_08 Shinatama: I am an SLD, an android programmed with your brain engrams. I have seen everything you have seen, felt everything you have felt. They used me to monitor the growth of the Chrysalis inside you... &lt;br /&gt;
&lt;br /&gt;
::&amp;quot;I have seen everything&amp;quot; could be based on the brain engrams. But after all, Oni was inspired by &amp;quot;Ghost In The Shell&amp;quot; which also features brain-computer interface technologies. Shinatama&#039;s statement is reminiscent of [[wp:List_of_Ghost_in_the_Shell:_Stand_Alone_Complex_episodes|Intercepters]].&lt;br /&gt;
&lt;br /&gt;
:06_21_01 Syndicate Henchman: I&#039;ve been monitoring the woman tracking us as you instructed. Scanners indicate a standard comlink as well as a second set of sub dermal transmissions. Analysis suggests that she is &#039;&#039;&#039;neurolinked&#039;&#039;&#039; to an SLD.&lt;br /&gt;
&lt;br /&gt;
::The ComGuy was able to identify the BCI relatively easily, giving an impression of it being nothing very special.&lt;br /&gt;
&lt;br /&gt;
Anyway. If the Bioc can&#039;t understand the Daodan&#039;s &#039;&#039;language&#039;&#039;, maybe it can understand the translated, digital signals from the BCI?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.2 Analytic code as requirement&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
For an interesting plot, there could be the need of a certain programming to preserve life.&lt;br /&gt;
&lt;br /&gt;
The idea of the final Bioc is to scan a planet for all kind of aspects including traces of life.&lt;br /&gt;
&lt;br /&gt;
So, if the prototype doesn&#039;t have that programming, an infected human could seek to obtain that code in order to ensure his survival.&lt;br /&gt;
&lt;br /&gt;
After the update, the human is one step away from realizing that he could write another update to simply force a fusion to his advantage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.3 Ability to enter a new symbiosis&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
A) The Daodan is heavily based on symbiosis. Why shouldn&#039;t it be possible to add new partners to an existing symbiosis?&lt;br /&gt;
: In the end, tools are just extensions of your body. If the Daodan recognizes the Bioc as a tool, it could stop fighting it.&lt;br /&gt;
: As for the Bioc, could it falsely identify Daodan cells as its own, as some kind of &#039;&#039;higher Bioc organ&#039;&#039;?&lt;br /&gt;
&lt;br /&gt;
B) How could two very different Imagos create offspring? If they can&#039;t, natural Imagos will become extinct.&lt;br /&gt;
: The bodies would have to merge at some point in order to form one virtual model for &#039;&#039;calculating&#039;&#039; the offspring&#039;s DNA and anatomy.&lt;br /&gt;
: But what would make the Daodan work together with the Bioc? Maybe the Bioc could accidentally trigger this process.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;1.4 Mental control&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
As described in &amp;quot;Arguments for an in vivo Daodan&amp;quot;, the human mind might influence the transformation.&lt;br /&gt;
&lt;br /&gt;
The more brain cells are daodanized, the easier the transformation could be controlled.&lt;br /&gt;
&lt;br /&gt;
This can be seen in contrast to what Hasegawa actually wanted -- adding automatic protection to the human body.&lt;br /&gt;
&lt;br /&gt;
However, the possibility that messing with your own body can result in sickness or death should be common sense.&lt;br /&gt;
&lt;br /&gt;
So, you&#039;d better not interfere unless you are an expert in genetics (&amp;quot;Read the manual, duh!&amp;quot;), or you have no other choice but to learn by trial and error.&lt;br /&gt;
&lt;br /&gt;
Wouldn&#039;t that be very risky? With total control over DNA and anatomy, it should be possible the test the changes only in a few cells before applying them to the rest.&lt;br /&gt;
&lt;br /&gt;
Still, it would be wishful thinking that everything turns out okay.&lt;br /&gt;
&lt;br /&gt;
For that reason, Pensatore could have rejected the Daodan for himself. He believes that only more wisdom can bring a true solution. (Ref. Biocracy, Omega Chimera)&lt;br /&gt;
&lt;br /&gt;
To summarize the helpfulness of the &#039;&#039;human factor&#039;&#039; in this connection, with total control and technical knowledge, it&#039;s theoretical possible to &#039;&#039;conquer&#039;&#039; the Bioc from within.&lt;br /&gt;
&lt;br /&gt;
==SLD==&lt;br /&gt;
&#039;&#039;&#039;[[SLD|Simulated Life Doll]]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
The term brain engrams in Oni might be related to:&lt;br /&gt;
* [[wp:Hebbian_theory|Hebbian theory]]&lt;br /&gt;
* [[wp:Engram_(neuropsychology)|Engram (neuropsychology)]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Speculation about brain components===&lt;br /&gt;
====generation 0====&lt;br /&gt;
&lt;br /&gt;
Improvements in silicon chips are reaching their limits. With all the promising research going on, we can expect new standards in a foreseeable future.&lt;br /&gt;
&lt;br /&gt;
What can change? Materials, information transmission, and architecture.&lt;br /&gt;
&lt;br /&gt;
The new standards will deliver more computing power, and with enough computing power, pretty much everything can be simulated.&lt;br /&gt;
&lt;br /&gt;
It&#039;s thought that brain simulations require [[wp:Exascale_computing|exascale computing]].&lt;br /&gt;
&lt;br /&gt;
Right now it looks like [https://techxplore.com/news/2014-08-optalysys-prototype-optical-processor.html optical] and [https://phys.org/news/2014-08-tiny-chip-mimics-brain-supercomputer.html neurosynaptic] processors will hit the market before memristor- and spintronic-based processors do.&lt;br /&gt;
&lt;br /&gt;
If we assume a human neocortex with 1 million cortical columns, each with 60.000 neurons, it would take 60.000 of IBM&#039;s new neurosynaptic processors, each with 1.000.000 programmable neurons, to do the job.&lt;br /&gt;
&lt;br /&gt;
A SLD brain with components based on these technologies might be possible but would be still far too big in size. It might fill a small building, and remotely control its body. So that&#039;s generation 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====generation I====&lt;br /&gt;
[[wp:Memristor|memristors]]&lt;br /&gt;
* memristors as complex networks can mimic biological brains better than transistors &lt;br /&gt;
* they can execute fuzzy logic, which in contrast to Boolean logic is not fixed between two states&lt;br /&gt;
* they are non-volatile memory units, even if they run on electricity, because with usage the state of their inner matter changes&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====generation II====&lt;br /&gt;
[[wp:Spintronics|nanospintronics]]&lt;br /&gt;
* higher energy efficiency - no electric current needed, less energy used&lt;br /&gt;
* faster components - no electrical charge is transported and thus no thermal problems appear, which allows clock speed up to 10,000 GHz&lt;br /&gt;
* smaller components - e.g. the OR gate (actual iron-atom gate counts approx. 3nm), these kind of components can be smaller than today&#039;s semiconductors&lt;br /&gt;
* non-volatile memory - &#039;&#039;&#039;information is not lost when power is turned off&#039;&#039;&#039; because they store data magnetically (this means the boot process of computers would also become significantly faster)&lt;br /&gt;
* and nanospintronics would also allow hybrid components for calculation and memory (these information were adapted from [https://idw-online.de/de/attachmentdata8851.pdf here])&lt;br /&gt;
&lt;br /&gt;
That&#039;s the point which is especially interesting, because of the analogy to biological &#039;&#039;components&#039;&#039;. Also, biological brains use one type of &#039;&#039;component&#039;&#039; for two things - the neurons store &#039;&#039;&#039;and&#039;&#039;&#039; process information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Why multiple generations?===&lt;br /&gt;
To describe an SLD&#039;s brain at an early point on Oni&#039;s timeline, this brain would rely on multiple new technologies, but so far it seem that they will not be available at that time.&lt;br /&gt;
&lt;br /&gt;
* memristors are the first-choice components to create an AI brain, but they would still &amp;quot;need transistors at the periphery&amp;quot; (src: &amp;quot;[https://www.spektrum.de/inhaltsverzeichnis/die-neue-computer-aera-spektrum-spezial-physik-mathematik-technik-3-2013/1169804 Spektrum der Wissenschaft] Spezial Physik - Mathematik - Technik 3/2013&amp;quot;, page 57)&lt;br /&gt;
* at the moment it seems that memristors will hit the market before spintronic-based transistors do, so meanwhile conventional transistors would aid memristors in AIs&lt;br /&gt;
&amp;lt;!-- * after the memory and processors have been improved it would become time for a new, better method of (chip-to-chip) signal transportation: plasmonic waveguides might do the job (estimated for [http://www.spektrum.de/alias/pdf/sdw-07-06-ges-pdf/874850?file 2017-2027]) --&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Are SLDs alive?===&lt;br /&gt;
Let&#039;s consider the following points in order to discuss this topic.&lt;br /&gt;
* &amp;quot;The SLD project is an attempt to recreate human physiology with artificial materials.&amp;quot;&lt;br /&gt;
* SLD are classified as androids.&lt;br /&gt;
: The TCTF&#039;s and the Syndicate&#039;s language is mostly technical...&lt;br /&gt;
:: [[Quotes/Diary#CHAPTER_07_._A_FRIEND_IN_NEED|Konoko]]: &amp;quot;I don&#039;t know if they &#039;&#039;&#039;programmed&#039;&#039;&#039; fear into her but if they didn&#039;t she&#039;s probably figured it out on her own by now.&amp;quot;&lt;br /&gt;
:: 08_28_02 Muro: &amp;quot;Curious. Why bother &#039;&#039;&#039;programming&#039;&#039;&#039; you to feel pain so intensely?&amp;quot;&lt;br /&gt;
:: 09_31_08 Shinatama: &amp;quot;I am an SLD, an android &#039;&#039;&#039;programmed&#039;&#039;&#039; with your brain engrams&amp;quot;&lt;br /&gt;
: ... while the SLD scientists seem to be more inclined to psychological terms.&lt;br /&gt;
::&amp;quot;SLDs are &#039;&#039;&#039;[[Quotes/Consoles/level_3b|individuals]]&#039;&#039;&#039; in many respects.&amp;quot;&lt;br /&gt;
:: &amp;quot;This core &#039;&#039;&#039;personality&#039;&#039;&#039; is then given a chance to develop a unique neurolattice while experiencing accelerated streaming sensory feeds.&amp;quot;&lt;br /&gt;
:: &amp;quot;Most SLDs have to spend at least three months in the senseloop, which we have come to think of as their &#039;&#039;&#039;psychological&#039;&#039;&#039; womb.&amp;quot;&lt;br /&gt;
* [[wp:Emergence]] - new properties, behaviors, etc. of a system which its components do not possess. Also commonly known under the phrase: &amp;quot;the whole is more than the sum of its parts&amp;quot;. Two examples: gas has a temperature, but not the single molecules; a brain has a mind, but single neurons don&#039;t.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
If they had really &#039;&#039;&#039;recreated&#039;&#039;&#039; human physiology, how could they rule out a new &#039;&#039;emerged&#039;&#039; mind? Why would it be merely a &#039;&#039;simulated&#039;&#039; one? The TCTF was surprised that Shinatama developed her [[Quotes/Consoles/level_18b|own will]].&lt;br /&gt;
: &amp;quot;[...] an unprecedented degree of free will in the android [...]&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Maybe the TCTF believed that a SLD would simply run on &amp;quot;programs&amp;quot; (because the hardware is not biological but artificial), and that programs aren&#039;t enough to create a mind. That&#039;s pretty similar thinking to John Searle&#039;s [[wp:Chinese_room|Chinese Room]]. I wonder if a collection of interacting programs can show emergence.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===What&#039;s the purpose of SLDs?===&lt;br /&gt;
I don&#039;t think it&#039;s a desirable goal to create an android that can just [[Quotes/Manual#Tech_Note_2|feel pain, breathe, sweat, and eat]]* and ... &#039;&#039;So you are saying it can produce artificial shit, eh? Is that everything you were able to accomplish after spending our research budget of 100 million dollars?&#039;&#039;&lt;br /&gt;
Of course the real deal must be something else.&lt;br /&gt;
&lt;br /&gt;
We have to ask why they didn&#039;t imitate another life form. Why not a bacteria, a plant, or an animal?&lt;br /&gt;
: Side note: SLD are made of &amp;quot;artificial materials&amp;quot; and &amp;quot;micromechanical fabrication cells&amp;quot; and thus the basis is very unlikely to be DNA.&lt;br /&gt;
So the SLD project wasn&#039;t about immune systems, metabolisms, and not primarily about somatic functions. What&#039;s the big difference between humans and other life forms on earth? In all modesty, it seems that the human mind is our biggest and most interesting difference. And it&#039;s still a mystery in Oni&#039;s story as well as in reality.&lt;br /&gt;
&lt;br /&gt;
*SLD scientist: &amp;quot;One thing we [[Quotes/Consoles/level_3b|still cannot do]] is create an artificial system that adequately simulates the processes of the human mind.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
*[[wp:Turing_test#Consciousness_vs._the_simulation_of_consciousness|Turing:]] &amp;quot;I do not wish to give the impression that I think there is no mystery about consciousness. There is, for instance, something of a paradox connected with any attempt to localise it.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
So the solution seems to be to somewhat (if not entirely) copy an existing brain.&lt;br /&gt;
&lt;br /&gt;
In Oni, &amp;quot;brain engrams&amp;quot; gave the SLD androids a mind, and that way they could be a tool to study intelligence in an artificial environment.&lt;br /&gt;
&lt;br /&gt;
With the obtained data, the mind doesn&#039;t need to get &#039;&#039;reinvented&#039;&#039;, but analyzed. After the analysis phase, a true artificial intelligence could be designed.&lt;br /&gt;
&lt;br /&gt;
: Another side note: SLD brain engrams involve copying brain information, and that looks very similar to what is called mind uploading. That too is thought to be a means for advancing towards AI. Ergo, in Oni, AI might be close -- although the Syndicate developed Deadly Brains. DBs would be obsolete if AIs already existed. (Or maybe AIs are not only much more difficult to construct, but much more expensive as well...)&lt;br /&gt;
&lt;br /&gt;
However, the abilities claimed in the manual could be requirements for the SLD brain/mind to work normally because it requires some body functions.&lt;br /&gt;
Their food could be raw material for regeneration, and a compound of hydrogen and oxygen may be needed to transform chemical energy to electric current. Their sweat then could be pure water from the chemical reaction from inside the fuel cell.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Final applications====&lt;br /&gt;
: SLD technology has reached it&#039;s third design generation and prototype SLDs are in use in a wide range of industries including law enforcement, fire fighting, manufacturing, and aviation.&lt;br /&gt;
&lt;br /&gt;
After these public tests WCG decided to ban some applications in sale and manufacturing.&lt;br /&gt;
&lt;br /&gt;
Thought experiment: Factory owners try to rationalize. They replace &amp;quot;human resources&amp;quot; with robots. At the end you have a factory full of robots that only belong to the factory owners. And repairs of robots are carried out by other robots. In that scenario the capitalism would itself rationalize to death. Therefore SLDs should only be given tasks that are extreme dangerous or not &amp;quot;system threatening&amp;quot;. Think of jobs that only few wants to carry out or where androids are a more reasonable choice: activities at atomic/biologic/chemical dangerous sites, decontamination, astronauts, mining, soldiers, safeguard jobs, nursing.&lt;br /&gt;
&lt;br /&gt;
The WCG is trying to reform education and job market towards more &#039;&#039;creative&#039;&#039; directions. But that endeavor doesn&#039;t proceed as quickly as it would be necessary.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Project Checkerboard=====&lt;br /&gt;
To minimize effects of organized crime and terror attacks, the WCG founded the checkerboard project.&lt;br /&gt;
&lt;br /&gt;
The chess game serves as analogy whereas the board stands for the battle ground and black and white figures for destructive and counter-destructive forces.&lt;br /&gt;
&lt;br /&gt;
The androids lay dormant until an incidence occurs. They can counteract in an instant and reduce death tolls.&lt;br /&gt;
&lt;br /&gt;
Another decentralized application would be medical emergency SLDs. This civil application could easily increase public acceptance of SLD usage.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====SLD technology as source for prostheses=====&lt;br /&gt;
In order to slow down overpopulation of planet Earth WCG tries to ban regenerative medicine that would massively increase the human lifespan. They are hence promoting SLD technology to produce prostheses. With these prostheses disabled people can experience normal lifespans.&lt;br /&gt;
&lt;br /&gt;
===Need for a body===&lt;br /&gt;
If I had to summarize, AVATARA couldn&#039;t &#039;&#039;exist&#039;&#039; without a body that generates necessary input for a functional brain. Otherwise it couldn&#039;t see, hear, feel, taste, and scent. And with no memory it couldn&#039;t even reflect. I mean, of how much worth would it be to create an artificial brain that is completely &#039;&#039;empty&#039;&#039;? It couldn&#039;t do anything.&lt;br /&gt;
&lt;br /&gt;
Like SLDs, also AVATARA, would have needed to grow. Of course, they can later copy information and create as many new AIs they want but at first they need at least one and the challenge is to build that vary one.&lt;br /&gt;
&lt;br /&gt;
Pensatore must have realized AIs don&#039;t simply pop into existence even with sufficient enough hardware wired together. He must have guided AVATARA virtual development. That&#039;s why other scientist call him father of the SLDs.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Taken &#039;out&#039; for editing.&lt;br /&gt;
===Naming and marketing===&lt;br /&gt;
Why naming it &amp;quot;Simulated Life Doll&amp;quot;?&lt;br /&gt;
&lt;br /&gt;
While &amp;quot;[[wp:Artificial_life|artificial life]]&amp;quot; might have also been used for &amp;quot;simulated life&amp;quot;, the former term suggest somewhat more control over the system which they didn&#039;t had. So, okay, point taken.&lt;br /&gt;
&lt;br /&gt;
Still, the &amp;quot;doll&amp;quot; in the name appears to be some unreasonable choice for marketing as it reminds too much of sex robots.&lt;br /&gt;
&lt;br /&gt;
When &#039;&#039;smart-enough&#039;&#039; robots become mainstream products you would very probably see some in the entertaining sector. Ghost in the Shell [https://www.youtube.com/watch?v=vA2hrcKOBb4 just shows this] in its second season of Stand Alone Complex. Also, GitS: Innocence is strongly related to that topic if you, for a moment, simply ignore all the philosophic chit-chat and see the gynoids as they are...&lt;br /&gt;
&lt;br /&gt;
At research begin you would expect a more neutral term such as &amp;quot;robot&amp;quot; or &amp;quot;droid&amp;quot; or even &amp;quot;assembly&amp;quot; since SLD are &#039;&#039;&#039;made of artificial cells&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Maybe the &amp;quot;doll&amp;quot; part can be still justified with economic arguments. The academic staff at WCG has probably foreseen the impacts SLD have if they were to replace too many human workers because of optimizations in companies and the acceleration of such by competition. AI and SLD research have promising benefits but they would ruin capitalistic systems by making a lot of persons &amp;quot;redundant&amp;quot;. The sex industry wouldn&#039;t had to do much persuading presenting themselves as bakers and not system threatening. So, naming the robots &amp;quot;dolls&amp;quot; might be long-term lobbying for fueling acceptance of these &amp;quot;products&amp;quot;. Well, that still sounds ridiculous and might not be worth mentioning in a serious manner. It&#039;s more like a joke about where economic and political interests can sometimes result in.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Mukade, the SLD===&lt;br /&gt;
At the time of Konoko&#039;s &#039;&#039;adventures&#039;&#039;, SLD technology seems to be in its final development stage.&lt;br /&gt;
&lt;br /&gt;
Still, SLDs and their way of thinking is not fully understood; that&#039;s what Shinatama proves.&lt;br /&gt;
&lt;br /&gt;
This has a logical consequence for a theory in which Mukade is actually Hasegawa with Mukade&#039;s brain engrams.&lt;br /&gt;
&lt;br /&gt;
: When could the fusion have happened? Somewhat after Mukade and Hasegawa met, or later, just before Muro took over the Syndicate?&lt;br /&gt;
&lt;br /&gt;
: The latter is more plausible, and they would have needed one more expert. (Pensatore, SLD scientist.)&lt;br /&gt;
&lt;br /&gt;
: SLD technology [[SLD#SLDs_are_individuals|draws on brain engrams]] because scientists couldn&#039;t create intelligence on their own yet.&lt;br /&gt;
&lt;br /&gt;
:: &#039;&#039;One thing we still cannot do is create an artificial system that adequately simulates the processes of the human mind.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:: &#039;&#039;Instead SLDs contain a behavioral framework patterned on donor brain engram data fed into the system during its formation.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:: &#039;&#039;This core personality is then given a chance to develop a unique neurolattice while experiencing accelerated streaming sensory feeds.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
:: &#039;&#039;Most SLDs have to spend at least three months in the senseloop, which we have come to think of as their psychological womb.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
: Because of the lack of knowledge, it seems unlikely that they could have implanted Mukade&#039;s brain engrams into Hasegawa or vice versa.&lt;br /&gt;
&lt;br /&gt;
: Instead, they could have created an SLD from two donor brains, an &amp;quot;ego hybrida&amp;quot;. From then on, Hasegawa and Kimura (original Mukade) could sit back and use Mukade (the SLD) as an instrument for controlling/watching Muro.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Mind upload===&lt;br /&gt;
When the three mavericks got together one evening, it happened that Kimura and Pensatore talked about Shinto and Buddhism. One topic was the human soul, and that Shinto believes that multiple &#039;&#039;mitama&#039;&#039; can form one soul: the concept of [[wp:Mitama|ichirei shikon]]. Kimura&#039;s Shinobi philosophy was influenced by this to a small degree. But he mentioned enough to awake Pensatore&#039;s interest. He felt that there were similarities with the meme theory.&lt;br /&gt;
Pensatore embarked on a new path. From that time on, he understood the brain as a collection of memes running on biological hardware. His new goal was to create a digital mind that would run not in a robot brain, but on common servers. Eventually he uploaded his own mind.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Shinatama&#039;s escape===&lt;br /&gt;
[...] Shintama could have uploaded her mind to the Internet with the help of Pensatore. I guess this can continue with [[Shinatama#Hikari|Owldreamer&#039;s stuff]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Neural link==&lt;br /&gt;
To be reviewed with [[Talk:Restless_Souls/Technology#Present-day_neural_link]]&lt;br /&gt;
* 00_01_30 Shinatama: I&#039;ve checked &#039;&#039;&#039;our neural link&#039;&#039;&#039; and it&#039;s working perfectly!&lt;br /&gt;
* [[Quotes/Consoles/level_2b|level 2b console]]: Engineers attempted to exploit the advantages inherent in the speed of the &#039;&#039;&#039;neural link&#039;&#039;&#039; by interlocking batteries of free tracking ball mount plasma cannons designed to independently track and fire upon multiple targets simultaneously.&lt;br /&gt;
* [[Quotes/Consoles/level_2a|level 2a console]]: Projections indicated that the reflex response of a direct &#039;&#039;&#039;&#039;neural link&#039;&#039;&#039; would be as much as twenty times faster than any remote or automated system.&lt;br /&gt;
&lt;br /&gt;
Obviously a neural link connects bigger chunks of neurons or nerves to artificial communication channels whereby it translates one signal into another.&lt;br /&gt;
&lt;br /&gt;
They seem to be successor of [[wp:Neuroprosthetics|neural prostheses]] - models best-known to public [[wp:Cochlear_implant|cochlear (hearing) implants]] and [[wp:Visual_prosthesis|visual prostheses]].&lt;br /&gt;
&lt;br /&gt;
Conclusion: A neural link - or rather multiple of them - enables a brain to receive and send digital or analog information.&lt;br /&gt;
&lt;br /&gt;
Such links can be used for:&lt;br /&gt;
* translating phone calls to neuronal sensation patterns and injecting them into the acoustic nerve&lt;br /&gt;
* translating image and video transmission to neuronal sensation patterns and injecting them into the optic nerve&lt;br /&gt;
* collecting visual and auditory patterns&lt;br /&gt;
* collecting weak patterns of muscle memory for speech (&amp;quot;inner voice&amp;quot;)&lt;br /&gt;
** [https://www.youtube.com/watch?v=3pv0vT82Cys current RL research is still busy trying to reconstruct speech from patterns originating more &#039;&#039;higher up&#039;&#039; in the brain] [http://archive.is/TUHR9 (nature)]&lt;br /&gt;
** Note this part: &amp;quot;Even when participants mouthed sentences but did not speak them out loud, the model produced an intelligible synthesized sentence.&amp;quot;&lt;br /&gt;
* collecting weak patterns of muscle memory for gestures and movements (&amp;quot;imagined moves&amp;quot;)&lt;br /&gt;
* collecting any other neural pattern (as long as it isn&#039;t too complex for analysis such as pain) &lt;br /&gt;
&lt;br /&gt;
Capturing mental images or even memories is not possible with neural links as the associated brain patterns are too complex for these little devices.&lt;br /&gt;
&lt;br /&gt;
The TCTF used neural links to monitor Mai.&lt;br /&gt;
&lt;br /&gt;
The extent of data collection was total.&lt;br /&gt;
&lt;br /&gt;
* 01_01_02 Shinatama: &#039;&#039;&#039;All systems&#039;&#039;&#039; nominal. She&#039;s doing fine.&lt;br /&gt;
&lt;br /&gt;
They even collected data about hormone levels.&lt;br /&gt;
&lt;br /&gt;
* 01_03_06 Shinatama: She won&#039;t back down. Her &#039;&#039;&#039;adrenals&#039;&#039;&#039; have been rising steadily. Too much stress could destabilize her latency.&lt;br /&gt;
&lt;br /&gt;
Besides neural links Konoko was injected with numerous sensors under her skin. The two-way direction of the information flow was confirmed by the Syndicate and shows that they are very aware of the involved technologies.&lt;br /&gt;
&lt;br /&gt;
* 06_21_01 Syndicate Henchman: I&#039;ve been monitoring the woman tracking us as you instructed. Scanners indicate a standard comlink as well as a second set of &#039;&#039;&#039;sub dermal transmissions&#039;&#039;&#039;. Analysis suggests that she is &#039;&#039;&#039;neurolinked&#039;&#039;&#039; to an SLD.&lt;br /&gt;
&lt;br /&gt;
Mai&#039;s inherited brain engrams can be seen as Shinatama&#039;s source of knowledge. But her choice of words &#039;&#039;&#039;include recent events&#039;&#039;&#039;. That makes clear she really knows everything about her big sister.&lt;br /&gt;
&lt;br /&gt;
* 09_31_08 Shinatama: I am an SLD, an android programmed with your brain engrams. I have &#039;&#039;&#039;seen everything&#039;&#039;&#039; you have seen, &#039;&#039;&#039;felt everything&#039;&#039;&#039; you have felt. They used me to &#039;&#039;&#039;monitor&#039;&#039;&#039; the growth of the Chrysalis inside you...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Tech note for later:&lt;br /&gt;
&lt;br /&gt;
Neural links can serve as building blocks for a Nürberger Trichter which has been in the past only a joke. It wouldn&#039;t be much different from the senseloop of SLDs except that it would inject sensory feeds of refined quality.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Bertram Navarre: &amp;quot;The idea on improving NL for our purpose came when we took a look at [https://www.theguardian.com/uk/2013/jun/21/gchq-cables-secret-world-communications-nsa agencies how they collect data].&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;When they don&#039;t get the information directly from telecommunication companies they can collect minute thermal signals of glas fibres reconstructing the photon signals. The neural link warps around nerves to also collect signals. This has been used for smart prothesis too. This is the soft method.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;If the agencies need to higher amount of information they accessed the undersee cables directly, but due to high risk of damage they nowadays access nodes run by the companies. We also tried to retrieve information by opening some nerves but in the biological environment damage is increased by mechanic stress or pathogen/immune reactions. Therefore the soft information retrieval became our method of choice.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;To me the research on NL was highly interesting to test the signal quality of regenerated nerves in their full length.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Breakthrough in science are achieved mostly interdisciplinary nowadays.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Deadly Brain==&lt;br /&gt;
Deadly brains were meant to protect Syndicate controlled facilities.&lt;br /&gt;
&lt;br /&gt;
A more focused manipulation of brain regions gave rise to the idea of using the human brain for AI tasks. NPUs are nothing less than living experiments.&lt;br /&gt;
&lt;br /&gt;
===Neural Processing Units===&lt;br /&gt;
NPUs are follow-up research projects of DBs. An Russian oligarch tried to circumvent WCG&#039;s research restrictions on AI. &lt;br /&gt;
&lt;br /&gt;
Notes:&lt;br /&gt;
&lt;br /&gt;
 NPU Anwendungen&lt;br /&gt;
 &amp;quot;Frankenstein&#039;s Monster&amp;quot;&lt;br /&gt;
 NPUs substancial for &amp;quot;RShops&amp;quot;, Reverse Engenerring&lt;br /&gt;
 Networking NPUs = Cloud AI + Research on Brain architecture&lt;br /&gt;
 More Deadly Brains (MDB) + Drones (&amp;quot;mindless killing machine&amp;quot; vs. SLD, brainwashing agents with implantats)&lt;br /&gt;
 Retrieving memories from brain or forcing persons to reveal them&lt;br /&gt;
 Make people their own brain chips.&lt;br /&gt;
 Oligarch on AI research, &amp;quot;with a snip you turn on your creativity, increase your IQ, let your PC use your brain capacities for AI tasks, bring your thought to video, bring your thoughts to life&amp;quot;.&lt;br /&gt;
 &lt;br /&gt;
 Ergo Ächtung von AI/Hirnmodifikationsforschung durch WCG.&lt;br /&gt;
 &lt;br /&gt;
 Nishio witness farming/recruitment of Frankenstein NPU.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Russian connection&amp;quot; [Dr. Kafelnikov] fits nicely here. + [[Quotes/Consoles#Deadly_Brain]] ?&lt;br /&gt;
&lt;br /&gt;
==Computers==&lt;br /&gt;
===End of growth===&lt;br /&gt;
Reminded to &amp;quot;[[wp:The_Limits_to_Growth|The Limits to Growth]]&amp;quot;? ;)&lt;br /&gt;
&lt;br /&gt;
According to Moore&#039;s law the chip industry will reach fundamentals limits for transistor size (2 to 3 nanometers) in 2020. Due to increasing production difficulties 2025 seems more likely.&lt;br /&gt;
&lt;br /&gt;
So is this the end of &#039;&#039;&#039;growth of computing power&#039;&#039;&#039;? Certainly not.&lt;br /&gt;
&lt;br /&gt;
The companies will push forward &#039;&#039;&#039;multi-core processors&#039;&#039;&#039; and &#039;&#039;&#039;vertical stacking&#039;&#039;&#039;. For example, Samsung already uses vertical stacking in flash memory, by now you should have heard of their V-NAND SSD. The idea to use the third dimension should soon find its way into processor production to fulfill Moore&#039;s law.&lt;br /&gt;
&lt;br /&gt;
A computer is meant to be a universal problem solver. But special problems require special solutions. So, CPUs got company - most notably - by coprocessors for networking, sound (DSP), graphics (GPU) and physics (PPU). The &#039;&#039;lowest common denominator&#039;&#039; in sense of performance gets soldered as chips on the mainboard. Like in organic evolution, after a phase of specialization, a phase of socialization follows. ^_^&lt;br /&gt;
&lt;br /&gt;
* mainboards having &amp;quot;onboard&amp;quot; chips: networking, sound, graphics&lt;br /&gt;
* combined CPU and GPU: AMD&#039;s APU and Intel&#039;s CPUs with integrated HD Graphics&lt;br /&gt;
* GPU with further specialized parts: see CUDA and TPU&lt;br /&gt;
&lt;br /&gt;
Due to the different demand in processing power most &amp;quot;power house&amp;quot; chips - CPU and GPU - can either be exchanged directly or by the means of expansion cards.&lt;br /&gt;
&lt;br /&gt;
But progress on the hardware level is only one side of the coin. You also need software to utilize it. A Russian team demonstrated that [https://phys.org/news/2016-06-scientists-pc-complex-problems-tens.html some scenarios requiring supercomputing can actually by handled on a desk PC] after installing a new graphics card [https://arxiv.org/pdf/1508.07441 (GTX-670, CUDA supported) and self-written software.]&lt;br /&gt;
&lt;br /&gt;
Still many PC programs can&#039;t draw advantage from multi-cores processors and will not. That is because not every program need multiple cores, like text editors. However the trend is here to stay: more cores. (See Intel&#039;s Core X and AMD&#039;s Threadripper.) Or more exactly: parallelism. It&#039;s the new hype. Together with machine learning and AI which started to regain traction again after its past [[wp:AI_winter|winters]].&lt;br /&gt;
&lt;br /&gt;
After these tricks (stacking, multi-core architecture, parallelism) has been fully exploited, the companies will be forced to abandon energy hungry [[wp:Speculative_execution|speculative code execution]] and turn to new technologies such as optical computing, memristors, and spintronics.&lt;br /&gt;
&lt;br /&gt;
Harnessing the magnetic property of electrons will not only result in less power consumption but also high clock rates. In the past years the clock speed stagnated between 4 and 5 GHz due to overheating. Processors based on spintronics won&#039;t heat up that fast, so they can operate at higher frequencies. And higher frequencies means more calculations per second.&lt;br /&gt;
&lt;br /&gt;
Finally, quantum computers. You often hear of &amp;quot;breakthroughs&amp;quot; but still practical examples are nowhere to be found. That&#039;s because there is quite a number of different approaches.&lt;br /&gt;
* Quantum annealing (limited use, not a general-purpose QC), see: [[wp:D-Wave_Systems|D-Wave]]&lt;br /&gt;
* Superconducting electronic circuits&lt;br /&gt;
* Ion traps&lt;br /&gt;
* Diamond NV center&lt;br /&gt;
* Majorana particle (Topological QC)&lt;br /&gt;
&lt;br /&gt;
Each approach comes with its own difficulties and most parts have to be constructed from scratch and the underlying logic rests on fragile particle states such as entanglement.&lt;br /&gt;
&lt;br /&gt;
Powerful, universal quantum computer might just gain traction by 2050.&lt;br /&gt;
&lt;br /&gt;
However, we should see more and more specialization and hybridization of processor types in the meantime. The demand for non-standard solutions can be seen by the existance of ASIC and FPGA. But as even more processor types will emerge they will require AI to be managed in highly diverse systems.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
2017.02.01 - The first blueprint for a significant large QC has been published. The [https://phys.org/news/2017-02-blueprint-unveiled-large-scale-quantum.html article on phys.org] had 5000 shares after one day (counter was resetted), a number that is rarely reached.&lt;br /&gt;
&lt;br /&gt;
The foundation of this kind of QC are trapped ions. They require bulky vacuum chambers. That&#039;s not very elegant but due to economics&#039; tendency to create cash cows the development of better approaches will be delayed. It can only be hoped that the ion QC will provide enough computing power to accelerate further research and therefor compensate the economic influence.&lt;br /&gt;
&lt;br /&gt;
NV-centers should take over when the ion traps cannot be shrinked any further thus giving birth to real &amp;quot;large scale&amp;quot; QC.&lt;br /&gt;
&lt;br /&gt;
2019.10.23 - Google announced quantum supremacy by using superconducting circuits - at least for generating random numbers. So for what&#039;s worth: two out of the four major quantum processor technologies reached infancy and will compete for leadership.&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
The ultimate computing hardware will incorporate bio and nanotechnologies to make themselves shapeshifting hardware to adapt to the problems you give them.&lt;br /&gt;
&lt;br /&gt;
===Consequences===&lt;br /&gt;
The slowdown in increasing classical computing power means also a slowdown in innovation - even though &#039;&#039;&#039;AI might somewhat compensate&#039;&#039;&#039; the gap between classical computing and quantum computing.&lt;br /&gt;
&lt;br /&gt;
Given that capitalistic principles will not cease to exist a &#039;&#039;&#039;technosphere&#039;&#039;&#039; and slowed down knowledge acquisition will eventually cool down certain markets and strengthen the &#039;&#039;&#039;run for a &amp;quot;growth in quality&amp;quot;&#039;&#039;&#039;. It fits the new Zeitgeist of being &amp;quot;sustainable&amp;quot;, &amp;quot;CO2 neutral&amp;quot;, &amp;quot;green&amp;quot;. General speaking transformations themselves can be new markets.&lt;br /&gt;
&lt;br /&gt;
The gap between rich and poor people is likely to get wider even faster.&lt;br /&gt;
&lt;br /&gt;
* Companies are driven by the rules of stock exchange which includes that a company mustn&#039;t be stable, it must be growing to satisfy its shareholders. The &#039;&#039;&#039;additional pressure for growth&#039;&#039;&#039; - because it is getting more expensive - will increase &amp;quot;rightsizing&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
* Jobs need to change or unemployment might be skyrocketing. In a pessimistic estimate from 2015 &#039;&#039;&#039;computers and robots&#039;&#039;&#039; [https://www.theguardian.com/technology/2015/nov/05/robot-revolution-rise-machines-could-displace-third-of-uk-jobs replace about 47% of all jobs in the next 20 years in the US].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Cyber security===&lt;br /&gt;
&#039;&#039;Cyber security is a bottomless hole.&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* worldwide tracking and infiltration by intelligence agencies (see Snowden), sometimes server manipulation before shipment&lt;br /&gt;
* systematically weakened encryption standards, no passing of zero-day exploits&lt;br /&gt;
* problematic research and sell of cyber weapons (see Pegasus)&lt;br /&gt;
* [https://www.youtube.com/watch?v=wVyu7NB7W6Y SMS and telephony]&lt;br /&gt;
* emails are like postcards&lt;br /&gt;
* sooner or later developed cyber weapons and gathered exploits from states are sold in the dark web by criminals&lt;br /&gt;
* [https://www.heise.de/news/Forscher-entdecken-Generalschluessel-fuer-Systeme-zur-Gesichtserkennung-6156605.html?utm_source=pocket-newtab-global-de-DE face unlocking is unsafe], like other biometric methods&lt;br /&gt;
* security chips in computers are not safe&lt;br /&gt;
* black hat hacker: ransom malware, economic interest of creating damage&lt;br /&gt;
&lt;br /&gt;
Generally intelligence agencies favor own possibilities over security of whole society. Passing on exploits is rare but happens in case of emergency.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
==Social scoring==&lt;br /&gt;
Ganz unabhängig von harmlosen [https://www.welt.de/wirtschaft/plus232247921/Social-Score-Bildungsministerium-holt-sich-Anregungen-aus-China.html staatlichen Gedankenexperimenten zur Alternativenfindung u. Ä.] scheint Scoring zu einem Selbstläufer zu werden. Es ist ein &#039;&#039;&#039;schleichendes Voranschreiten&#039;&#039;&#039; von immer mehr Einzelbeispielen, die irgendwann in der Zukunft die Akzeptanz für ein allumfassendes Scoring ebnen könnten.&lt;br /&gt;
&lt;br /&gt;
Das [[wp:de:Sozialkredit-System|chinesische Punktesystem zur Förderung eines bestimmten sozialem Verhaltens und politischen Denkens]] wird im Westen sehr kritisch gesehen und doch gibt es bereits Schnittpunkte und ein leichten Trend, der dazu führen könnten, dass sehr wohl auch andere Bevölkerungen ein solches System irgendwann von ganz alleine begrüßen könnten.&lt;br /&gt;
&lt;br /&gt;
In Deutschland, wie so ziemlich überall auch, werden Schulnoten erteilt. Diese gelten als sehr wichtiges Entscheidungskriterium für weitere Bildung und Jobwahl. Es besteht also nahezu ein Konsens darüber, ob ein Score zu einer Belohnung - den besseren Job und der besseren Bezahlung - führt. Noch ist der Leistungsgedanke für Einsatz von Scores entscheidend. Wenn aber erst einmal die Wirtschaft vollständig mit Scores durchzogen ist, könnten diese selbstlaufend auch in soziale und dann in staatliche Bereiche Einzug halten.&lt;br /&gt;
&lt;br /&gt;
Andere Beispiele für Scores sind:&lt;br /&gt;
* &amp;quot;Punkte in Flensburg&amp;quot;&lt;br /&gt;
* Schufa-Einträge (Kreditwürdigkeit)&lt;br /&gt;
* Amazon-Ranking (Zahlungs- und Retour-Verhalten, ggf. Sperrung des Kontos)&lt;br /&gt;
* das zahnärztliche Bonusheft (Vergünstigung gegen regelmäßige Kontrollen)&lt;br /&gt;
* Payback-Punktesystem, Treuepunkte (Kaufverhalten, Kundenbindung)&lt;br /&gt;
* Bonuspunkte in Kaufapps ehemalig traditioneller Lebensmittelgeschäfte (Lidl PLUS App: Belohnung von Kauf-Meilensteine)&lt;br /&gt;
* Stempelrabattkarten (z.B. 10ter Eintritt frei oder ein prozentualer Rabatt auf den nächsten Einkauf)&lt;br /&gt;
* Vielfliegerprogramme&lt;br /&gt;
* Versicherungen (Risikoreiches Leben (Schadensfälle) werden mit höheren Beiträgen sanktioniert, aus Vorsicht kann dies das Verhalten ändern)&lt;br /&gt;
* Zeiterfassungssysteme, insbesondere die feingliedrige Ticketsysteme in größeren Unternehmen (Leistungsranking)&lt;br /&gt;
* Fitness Tracker (z.B. Schrittzähler, oft mit Ranking/Meilenstein-System als Motivationsverstärker)&lt;br /&gt;
* Punktesysteme im Wettkampf (Sport)&lt;br /&gt;
* Punktesystem bei der [[wp:de:Punktesystem_(Einwanderung)|Einwanderung]] ([https://web.archive.org/web/20221128193625/https://www.zeit.de/politik/deutschland/2022-11/zuwanderung-arbeitsmarkt-fachkraefte-bundesregierung-punktesystem Wohl auch bald in Deutschland]. Da die Staatsbürgerschaft nur einmal erworben werden muss, ist die Bewertung per Punktesystem zeitlich begrenzt und damit akzeptabel.)&lt;br /&gt;
&lt;br /&gt;
Jeder einzelne Score nimmt Einfluss auf unser Verhalten. Vielleicht nicht auf jedes Individuum, aber doch im Mittel auf die ganze Gesellschaft.&lt;br /&gt;
&lt;br /&gt;
Hinzu kommt ein Trend in der Freizeitgestaltung durch das milliardenschwere und die immer noch wachsende Gaming-Industrie: digitale Spiele setzten massiv auf Scores. &amp;quot;Je mehr desto besser.&amp;quot; Es werden Spielfortschritte, Käufe mit echtem Geld, und tägliche, wöchentliche, monatliche, ja sogar jährliche (akkumulierte) Logins belohnt, Abzeichen/Trophäen/&amp;quot;Achievements&amp;quot; vergeben, usw. Kurz um, Menschen werden bereits von Kind auf an getrimmt Scores zu folgen. &amp;lt;!-- Wenn die Zahnbürste dich konditioniert...&lt;br /&gt;
https://www.amazon.de/Playbrush-Kinder-Zahnb%C3%BCrste-spielerischen-Erlernen-Z%C3%A4hneputzens/dp/B079GY53KF?th=1&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Es ist davon auszugehen, dass Optimierungsbestrebungen zwecks Profit einerseits und [[wp:de:Gamification|Gamification]] andererseits die Scores - in all ihren vielfältigen Formen - weiter vorantreiben bis sie in jeder Ecke unseres Lebens zu finden sind. Vielleicht wird es uns einfach egal sein noch mehr Scores zu nutzen, weil diese auch immer mit Vorteilen verbunden sind...&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
Food for thought:&lt;br /&gt;
* spiritual opium, electric drugs - [https://www.faz.net/premium/digitalwirtschaft/chinas-regierung-geht-gegen-videospiel-konzern-tencent-vor-17467633.html China reduziert Gaming-Zeit drastisch]&lt;br /&gt;
* Fortnite in der Kritik - Glücksspiel, absichtliches Süchtigmachen&lt;br /&gt;
** https://web.archive.org/web/20230507154213/https://www.heise.de/news/Absichtliches-Suchtmittel-Sammelklage-gegen-Fortnite-in-Quebec-4546430.html&lt;br /&gt;
** https://www.google.com/search?q=fortnite+game+epic+Glücksspiel&lt;br /&gt;
&lt;br /&gt;
==Suits==&lt;br /&gt;
* PPPS in BSL-4&lt;br /&gt;
* [https://phys.org/news/2017-06-carbon-harder-diamond-flexible-rubber.html FlexoSteal] Suit in BSL-5&lt;br /&gt;
: Made of a newly discovered carbon derivative, flexible as rubber but strong as diamond. MEMBRANE system: additionally to a positive air pressure there are two conductive, sandwiched layers which would close a circuit in case of slightest damage. Air recycling: CO2 is filtered internally. Carbon is captured and O2 brought back. The suits are running with just electricity which the boots received via inductive coupling from the ground - it is basically the same wireless powering technique smartphones use. The idea originates from next generation of astronaut suits. Also, the suit has its own computer system.&lt;br /&gt;
* FlexoSteal suit for Konoko&lt;br /&gt;
: When Konoko was proven to be noncontagious TCTF sci remodeled it to provide protection against weapons and h2h combat. Compared to military Black OP suits, the FS material replaces parts where aramid has been used.&lt;br /&gt;
* CDC&#039;s remote control suits&lt;br /&gt;
: A.k.a. exoskeleton. Used to record body movements and transfer the signals to a robot that copies all moves.&lt;br /&gt;
* EnvSuits&lt;br /&gt;
: Airtight exoskeleton for decontamination teams. Heavy models, double size of a human, are also named &amp;quot;Decon Mechs&amp;quot; and &amp;quot;Decons&amp;quot;. They are equipped with graphene shields.&lt;br /&gt;
&lt;br /&gt;
==Mechs==&lt;br /&gt;
[[Image:Iron Demon in Battle.jpg|thumb|right|300px|Iron Demon by Craig Mullins]]&lt;br /&gt;
&lt;br /&gt;
Why a mech when you can have a tank?&lt;br /&gt;
&lt;br /&gt;
A realistic, bipedal, GUNDAM-sized robot couldn&#039;t be very fast and requires a fair amount of computing power just to accomplish stable and smooth locomotion. Also it is prone to take damage from stumbling and falling. The surface-volume-ratio is worse so that it increases weight spend for armor.&lt;br /&gt;
&lt;br /&gt;
So what could be the advantages of a mech?&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Area of operation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Terrain-wise mechs could literally go where tanks couldn&#039;t: stone deserts, mountains, deep wilderness. But also in urban warfare mechs could show off by operating inside of buildings if they aren&#039;t too big. Compare with Land Mates, Apple Seed.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Properties&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Basically a tank transports firepower from place A to place B. But nowadays tanks are easy targets and need air support.&lt;br /&gt;
&lt;br /&gt;
Same would be true for 10-meter mechs or bigger.&lt;br /&gt;
&lt;br /&gt;
If you take two-legged mechs, you must maximize their advantages by keeping them small and fast.&lt;br /&gt;
&lt;br /&gt;
From here on let&#039;s mix in more fiction.&lt;br /&gt;
&lt;br /&gt;
In order to prevent falls or minimize damage from such, mechs shouldn&#039;t be GUNDAM-sized and they need a superb movement. Buttons and levers won&#039;t do. You need either a &#039;&#039;&#039;neuro-linked pilot or an AI&#039;&#039;&#039;. So, in a sense, mechs in Oni could be &#039;&#039;&#039;over-sized SLDs in a full-body armor&#039;&#039;&#039;. The mechanic cells of SLDs and &#039;&#039;&#039;graphene shields&#039;&#039;&#039; would allow them the regenerate damaged parts right on the battle field.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Combat&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Now, how about some martial art? Our mechs (Iron Demon class) are engulfed in armor, heavy weapon would reduce their mobility. Fully packed with sensors they could detect incoming RPGs and missiles. They would have two options: destroy the threat with [[Heavy_weapons#Metal_Storm|Metal Storm]]-like defense or perform a computer-aided evasion maneuver. Missiles can home in on moving targets but those don&#039;t change direction. As faster the missile is and as closers it gets to the target the more difficult it becomes for the missile to adept direction. A well-timed evasion could prevent a full hit whereby are remaining damage (blast and shrapnels) are absorbed by the regenerative armor and body.&lt;br /&gt;
&lt;br /&gt;
If the Iron Demon isn&#039;t equipped with considerable firearms it should be at least capable of disarming an enemy tank by ripping off its cannon or doing other nasty things to it:&lt;br /&gt;
* The ID could climb on the tanks back, grab and pull the cannon until it reaches the maximal angle and break the joint, then ripping it off.&lt;br /&gt;
* A &amp;quot;locomotion transfer throw&amp;quot;: the ID sprints and grabs the cannon. The ID&#039;s inertia bring the tank into motion. After mass and velocity and combined, the ID touches ground with his feet and puts more power into his throw. He swings the tank around to crushes it into a wall or into the ground. Elite Strikers do that as a disarm move but without the running part.&lt;br /&gt;
* IDs can crash land on a tank after jumping out of a window or from a not too high roof. We are talking here about 2050&#039;s military state-of-the-art materials and mechs not bigger than 5 meters, so this should be okay.&lt;br /&gt;
* IDs could be equipped with a sword (taser included) or their legs and arms would be a sharp edge. Fast strikes and kicks enhanced by running (more kinetic energy) could cut though a detected weak spot and damage sensors and outside equipment.&lt;br /&gt;
* If the tank is too big: pump graphene gas into the interior and taser the crew and the electronics.&lt;br /&gt;
&lt;br /&gt;
Anyway, the main target shouldn&#039;t be tanks but enemy infantry and light-armored vehicles or other mechs. (Yay, close combat action. Here we go.)&lt;br /&gt;
&lt;br /&gt;
In a nutshell: &#039;&#039;&#039;c&#039;&#039;&#039;lose quarter &#039;&#039;&#039;c&#039;&#039;&#039;ombat SLD &#039;&#039;&#039;m&#039;&#039;&#039;echs (CCM) gain a lot from their design and movement control. Their body is their weapon, and their reflexes and cognitive skills reduce damage and self-damage.&lt;br /&gt;
&lt;br /&gt;
The CCM cells are capable of showing various color pigments so the mechs blend into the landscape and reach a near-perfect camouflage as long as they don&#039;t move.&lt;br /&gt;
&lt;br /&gt;
In urban warfare ID pilots love a run through walls and take the enemy by surprise although the armor is EMP-proof and defects all common Syndicate hand-held weapons. An ID can be fearsome opponent.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;History&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Mechs profited from research on exoskeleton which also have civil applications.&lt;br /&gt;
* construction work / heavy physical work in general / helping seniors and disabled people&lt;br /&gt;
* disaster areas (earthquake area, flooded area, radioactive area (heavy radiation protection))&lt;br /&gt;
* space exploration (supervised autonomous robots, exoskeleton on earth serves as remote control)&lt;br /&gt;
&lt;br /&gt;
Since the beginning of the bio crisis, the WCG equipped their reclamation teams with exoskeleton-enhanced Hazmat suit.&lt;br /&gt;
&lt;br /&gt;
[[Restless_Souls/Summary#Green_Village|Green Village]] is deployed with civil and military exoskeletons and mechs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===WCG===&lt;br /&gt;
The Iron Demon seen in pre-beta content shouldn&#039;t be considered as a piece of serial production. Maybe an old develop version, a prototype, a proof of concept, yada yada. Something Griffin used in a crazy emergency?&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===African-Islamic union===&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Fire fighting mechs===&lt;br /&gt;
Terrorists could use powerful lasers - in semi-trailer trucks or airplanes - to ignite many fires in vast areas in a short amount of time.&lt;br /&gt;
&lt;br /&gt;
The WCG therefore put high-energy laser components on its monitoring list. For example that is also the case for dangerous chemicals.&lt;br /&gt;
&lt;br /&gt;
Water is not always readily available due to dryness. This is an increasing problem.&lt;br /&gt;
&lt;br /&gt;
The trend of more wild fires - by climate change or terrorism - can only be solved in a limited way. However the key component is to use very heavy machines using soil to choke fire or to quickly build fire stop barriers. It is cheaper to cut through roads and forest than to rebuild a town.&lt;br /&gt;
&lt;br /&gt;
The mechs would essentially use heavy high-speed drills to gather soils and rocks.&lt;br /&gt;
         __&lt;br /&gt;
 forest /  \           burning forest&lt;br /&gt;
 ------/    \         /-------------&lt;br /&gt;
             \_______/&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Griffin: &amp;quot;The &amp;lt;!--https://www.zeit.de/gesellschaft/zeitgeschehen/2023-07/braende-italien-sizilien-mafia-klimawandel--&amp;gt; mafia discovered wildfires as a way to buy new ground. More and more fires have overwhelmed the financial resources of states and insurance companies. So, when a town or villages burns down the value drops significantly. The criminals can cheaply buy the land. Enough people in desperate need can only agree to the offered deal. The gov established draconic sentences for ecocides and agreed to our drone network but this remains a problem with SOC.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Satellite-based 1 MW lasers&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Since the installation of the WCG, satellite-based lasers deployed by terrorist-acting states had become a theoretical threat. Otherwise, ecocides caused by artificially induced wildfires would have posed a serious problem...&lt;br /&gt;
&lt;br /&gt;
==Aerogel shields==&lt;br /&gt;
[[wp:Aerogel|Aerogels]] contain about 99 % air and are therefore really lightweight. They do not burn and barely conduct any heat. Originally they are known for their bluish transparent appearance. [https://www.youtube.com/watch?v=qnOoDE9rj6w Fiber materials won&#039;t break and can even bend.] Other modifications can make it [https://www.youtube.com/watch?v=GcdB5bFwio4 water-repellent]. One centimeter can safely block 1000 °C.&lt;br /&gt;
&lt;br /&gt;
Carbon versions are possible and [https://pubs.rsc.org/en/content/articlepdf/2017/ra/c7ra05506d versatile]. Namely they are interesting as filters and supercapacitor. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Fire barriers&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:Eden_Project_geodesic_domes_panorama.jpg|thumb|400px|Eden Project geodesic domes]]&lt;br /&gt;
&lt;br /&gt;
What if production could be speed up and made really cheap.&lt;br /&gt;
&lt;br /&gt;
The greater idea is to use it as quickly installable &#039;&#039;firewall&#039;&#039; in villages, either as direct coatings and isolation or as literal, high-build walls (push-fit system) or &#039;&#039;blankets&#039;&#039; for cars and small houses.&lt;br /&gt;
&lt;br /&gt;
Advanced versions might look like geodesic green houses.&lt;br /&gt;
&lt;br /&gt;
==Graphene shields==&lt;br /&gt;
Oni offers only two lines about its [[Quotes/Items#shield|shield technology]]. The item description says also &amp;quot;force shield&amp;quot;, which might be an inappropriate term, because:&lt;br /&gt;
* the force shield is visible to the naked eye,&lt;br /&gt;
* &#039;&#039;pieces&#039;&#039; can break away when a bullet hits it,&lt;br /&gt;
* magnetic/electric fields couldn&#039;t protect its user against non-magnetic/non-inducting materials,&lt;br /&gt;
* and magnetic and electric fields aren&#039;t &#039;&#039;blocky&#039;&#039;. (Well, [https://www.youtube.com/watch?v=RkQFhPJuxgk maybe on Dune] but not on Earth. XD)&lt;br /&gt;
&lt;br /&gt;
So this thought leads one to think about a different technological basis.&lt;br /&gt;
&lt;br /&gt;
Side note: most of the mentioned flaws can again be explained by gameplay aspects and hardware/software limitations during Oni&#039;s creation. However, I don&#039;t want those to be an &amp;quot;excuse&amp;quot; for not developing the fiction any further.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Atmospheric shields===&lt;br /&gt;
Let&#039;s start with another question: [[Atmospheric_Conversion_Center|Atmospheric Conversion Centers]] clean air for cities, but what would keep the clean air inside and the toxins outside the cities?&lt;br /&gt;
&lt;br /&gt;
[https://phys.org/news/2012-01-graphene-supermaterial-superpermeable.html Graphene oxide] is known to be impermeable to everything except water (and maybe hydrogen). Graphene has so tight of a structure that almost nothing fits between its atoms. It&#039;s also pretty transparent, which would let sunlight still reach the interior of our hypothetical shield.&lt;br /&gt;
&lt;br /&gt;
Other graphene layers attached to the first one could align the material along a magnetic field. Pure graphene isn&#039;t magnetic, but doping and defects can change the properties of graphene in many ways.&lt;br /&gt;
&lt;br /&gt;
What if the shield gets damaged? Methods of self-assembly and [https://phys.org/news/2012-10-scientists-defects-materials.html self-healing] are currently being explored and could probably be of some help.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Challenges&#039;&#039;&#039;&lt;br /&gt;
* Initiation: [...]&lt;br /&gt;
* Healing: Atmospheric shields that shelter whole cities are threatened by gusting wind, changing air pressure, rain, lightning and other meteorologic phenomena. The shield is monitored permanently by laser systems. Fraction causing tension is treated by ultra-short (attosecond) laser pulses generating new or manipulating existing phonons (quasi particle, collective molecule vibrations). Usually fractions can&#039;t be prevented from forming. Instead, the lasers tweak phonons to prevent fraction expansion while other beams promote healing with particles from the support layer above. In some circumstances (starting helicopters and airplane) the lasers must cut openings and pulverizing the lose chunk. During thunderstorms, lasers create thin plasma channels which act as [https://phys.org/news/2012-03-laser-lightning-rod-electricity.html lightning conductor]. That way, the lightning is guided onto the ground through a opening in the shield leaving the rest of the dome unharmed.&lt;br /&gt;
&lt;br /&gt;
* Fresh air supply: like for water, natural gas, electricity and telecommunication, there are now networks to deliver treated ACC air mixed with oxygen and evacuate carbon dioxide and new pollutants. Captured carbon dioxide is filtered and transformed into new graphene flakes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;African versions&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Due to the harsh climatic conditions GUR developed additional shield layers that act as solar panels and change its translucence on demand (laser excitation with different frequency) forming a more comfortable micro climate. To prevent built up of heat over day time, the African city domes form openings at the top to let escape hot air. The suction effect powers the nearby ACC wind turbine.&lt;br /&gt;
&lt;br /&gt;
Rain water that runs down the shield is collected at ground level and guided into underground reservoirs.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Personal shields===&lt;br /&gt;
Personal shield are composed of many little generators, sensors and storages for modified graphene flakes.&lt;br /&gt;
&lt;br /&gt;
The shield collapses either when graphene flakes or energy is consumed. In idle mode the shield keeps operating for several hours.&lt;br /&gt;
&lt;br /&gt;
As the wearer moves the graphene barrier becomes adapted.&lt;br /&gt;
&lt;br /&gt;
Military versions can connect with the electronic firing system of hand-held weapons and create little, temporary holes for projectiles to fly through.&lt;br /&gt;
&lt;br /&gt;
A neuro-link can be used to switch on and off sections at the hands and feet allowing users to exchange things or to guard against land mines.&lt;br /&gt;
&lt;br /&gt;
The newest generation allows users to combine their shields in stationary situations. Also, the flakes are now manufactured in a way that they enhance their bonding strength as more Watt is spend. WCGs tries to improve the shield technology even more by maintaining graphene&#039;s superconductor property with an adapted [https://www.google.de/search?q=graphene+doping doping] recipe.&lt;br /&gt;
&lt;br /&gt;
Due to high electron density and extreme mechanical pressure, next generations of shields are thought to show someday phase transitions also changing light absorption behavior and therefor its color. Inside the Oniverse this is called PT armor by some anime fans in homage to PS armor.&lt;br /&gt;
&lt;br /&gt;
Features of Nishio&#039;s back-mounted mech shield&lt;br /&gt;
* shield shape remodeler: used to change form and size, e.g. to protect a small vehicle&lt;br /&gt;
* support for multiple layers&lt;br /&gt;
* (modded [[Quotes/Weapons#vdg|VDG]]) spray nozzles for graphene powder that when put under current creates an explosion, blasting the outer layer away (turning his &amp;quot;blast shield&amp;quot; into an effective 360° low-range self-defense weapon)&lt;br /&gt;
* spray injectors for liquid nitrogen to freeze and seal Bioc infected roamers&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Cities==&lt;br /&gt;
&#039;&#039;Wenn du eine Stadt neu bauen könntest, wie würdest du Gebäude planen in Zeiten des Klimawandels?&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Die Flächen besser nutzen in dem man auch in die Tiefe baut.&lt;br /&gt;
&lt;br /&gt;
* Eine Etage für Rückhaltebecken (Starkregen, Überflutungen). Langsames wiederabgeben. Idealerweise das aufgefangene Wasser komplett nutzen. (Trinkwassereinsparung, Bewässerung für obere Grünanlagen, Aquakulturen)&lt;br /&gt;
* Eine Etage für Verkehrswege (PKW, LKW, U-Bahn).&lt;br /&gt;
* Eine Etage für Parkplätze&lt;br /&gt;
* Wohnebene&lt;br /&gt;
* Vernetzte Dächer. Begrünung, kleine Gärten, Solarpanels. Bei einer 3-Grad-Plus-Erde würden die vernetzten Dächer die Häuserschluchten überdecken und Kontrolle über ein innerstädtisches Klima ermöglichen. Transparente Überbrückungen könnten die Sonneneinstrahlung regulieren, sodass das ganze nicht als Treibhaus endet. Luftzirkulation mit Wärme steuern. (Inspiration Termitenbauten?) Einheitliches Design, sodass sich Sturmschäden auf die Dächer beschränken.&lt;br /&gt;
&lt;br /&gt;
==3D printing==&lt;br /&gt;
3D printing got not only popular among civil and industrial-level &#039;&#039;tinkerers&#039;&#039;, also criminal organizations try to make use of it. And the Syndicate became a prime example of that. Weapon parts get printed, assembled and sold on demand. Thugs and other criminal customers receive the &#039;&#039;goods&#039;&#039; via drone. The Syndicate uses various base materials that aren&#039;t on police&#039;s watch list. The illegal blueprints are shared over the encryption-protected TITAN darknet.&lt;br /&gt;
&lt;br /&gt;
The Syndicate tries to perfect its own printing technologies to become as much independent as possible. For instance, 2049, they upgraded their African HQ by use of mobile [https://phys.org/news/2015-10-tu-eindhoven-kingsize-3d-concrete.html concrete printers.] &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Bioprinting===&lt;br /&gt;
Bioprinting is also known as tissue engineering.&lt;br /&gt;
&lt;br /&gt;
So far it wasn&#039;t possible to bioprint arteries and small blood vessels which are needed for any organ. In 2015, the problem of a sufficient blood supply was pretty much solved. Increasing printing resolution and stability and simultaneous usage of different &#039;&#039;materials&#039;&#039; will make it possible to print - in theory - complete humans, on condition that research of [[Bertram_Navarre#Added_value|iPSC]] don&#039;t run into some heavy roadblocks.&lt;br /&gt;
&lt;br /&gt;
https://phys.org/news/2015-10-team-hacks-off-the-shelf-d-printer.html&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Security-relevant aspects====&lt;br /&gt;
The TCTF is aware that this technology can generate false traces but underestimates it as a purely theoretical threat. The tech is restricted nonetheless to please WCG&#039;s worries of an over-growing world population.&lt;br /&gt;
&lt;br /&gt;
Highly organized criminals will use bioprinting to setup fake DNA traces alongside of false fingerprints. One day it will be even possible to fake corpses. With the years the fakes will become virtually indistinguishable from original bodies. A legal application is probably only reasonable for witness protection programs.&lt;br /&gt;
&lt;br /&gt;
The GATC organization experiments with faking corpses to save their assets against lethal threats and then enabling them a new life. &#039;&#039;&#039;Initially GATC intended to use this tech only to provide their wounded soldiers with bio-prostheses.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The first candidate profiting from project &amp;quot;Spare&amp;quot; as in &amp;quot;spare part&amp;quot; is likely TCTF Commander Griffin. He is thought to be very high on the Syndicate&#039;s kill list. Griffin is found to have hid away access codes for WCG &amp;quot;puppets&amp;quot;. Back then when Griffin was still with Blackstars there was a lethal disagreement within the GATC administration. The question was whether it was acceptable to brainwash certain politician to sabotage the establishment of WCG. Those defying the sabotage were taken out one by one. But Griffin silently snatched the access codes and killed the research team responsible for the WCG &amp;quot;puppet program&amp;quot;. At the same time GATC&#039; military division, Blackstars, declared themselves as a new, independent mercenary group. The remaining GATC administration and Blackstars still work together at some point as their goal that they still agree on is to re-establish the United States of America. Their relationship is to be best described as an obligate symbiosis, neither of them can survive without the other.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Spares&amp;quot; are products of cutting edge engineering and skillful craftsmanship. So-called [https://pmc.ncbi.nlm.nih.gov/articles/PMC5110476/ cinematic renders] of highly detailed full-body scans provide the anatomic blueprint for the corpse. Bioprinting techniques then reconstruct the body. Typically, decedents are identified by relatives based on the appearance. In doubt finger prints, dentition and DNA is used. With the improvements of medical scans &amp;quot;Spare&amp;quot; also need to fake other traits especially signs of aging: bone grow pattern, bone attrition, atherosclerosis, scars under the skin (cicatrization), skin marks and normal scars to generate a plausible appearance that can be checked against medical files. Of course prostheses have to be included if the person has such. &lt;br /&gt;
&lt;br /&gt;
Spares can be identified as such by missing certain traits. Concentrations of isotopes, toxins, and the telomere length are rather difficult or expensive to reproduce.&lt;br /&gt;
&lt;br /&gt;
In theory a perfectly, newly produced &amp;quot;Spare&amp;quot; can also serve as fullbody transplant for a brain...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Printed food===&lt;br /&gt;
Hmmm tasty Frankenburger ...&lt;br /&gt;
&lt;br /&gt;
https://phys.org/news/2015-07-hacking-food-chain-silicon-valley.html&lt;br /&gt;
&lt;br /&gt;
Notes: Why print food when you could reload your chemical-bound energy storage directly? -&amp;gt; Omega Chimera&lt;br /&gt;
&lt;br /&gt;
The Syndicate prints food for their HQ staff.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Molecular printing===&lt;br /&gt;
To cut a long story short, the &#039;&#039;white coats&#039;&#039; showed, in the future, it will be possible to [https://phys.org/news/2015-10-physicists-movement-electrons-molecule.html control chemical reactions with light.] This means, you need only a few elementary resources and then build stuff molecule by molecule.&lt;br /&gt;
&lt;br /&gt;
On a second thought, it should also be possible the break apart already existing chemical bonds to harvest elements from common molecules like H2O, CO2, N2, NH3, etc.&lt;br /&gt;
&lt;br /&gt;
Anyway, preferably you would also build specialized nanobots to further accelerate construction time of the actual desired product.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
Hasegawa&#039;s new lab includes molecular printers so that they can build SLDs and nano-sized tools to probe and manipulate Daodan samples.&lt;br /&gt;
&lt;br /&gt;
Pensatore also used them to dissemble himself with an early Bioc prototype. Mukade found Pensatore&#039;s beheaded corpse after unlocking the room by force.&lt;br /&gt;
&lt;br /&gt;
==Nanopore filtration==&lt;br /&gt;
GATC plans some big-scale lethal false-flags attacks. For some scenarios they even try to acquire nuclear material. Securing [https://www.businessinsider.com/nuclear-bomb-accident-goldsboro-nc-swamp-2017-5?r=DE&amp;amp;IR=T broken arrows] turns out to be rather complicated. So they decided for a slower method. Filtering ionic uranium out of seawater is only an theoretical option. Advanced filtration facilities such as GOP&#039;s seawater desalination can do that but the concentration is too low. To speed up the process they throw uranium oxide into the seawater pools. The captured mass is then further refined by [https://phys.org/news/2019-05-bio-inspired-material-oceans-uranium-sustainable.html polymer filters] designed by GATC AI Sophia.&lt;br /&gt;
&lt;br /&gt;
However, Blackstars is rather skeptical about the necessity of such weapons making it even harder for GATC to realize any of their &amp;quot;A-level&amp;quot; scenarios.&lt;br /&gt;
&lt;br /&gt;
The TCTF is aware of such threats and therefore relocates sci staff working on advanced nano filtration to their science prisons but neither GOP nor GATC is on their radar.&lt;br /&gt;
&lt;br /&gt;
==Water capturing==&lt;br /&gt;
===Sea water desalination===&lt;br /&gt;
Die WCG hat ein Preisgeld von 100 Milliarden (zweckgebunden für Hochskalierung) für die Entwicklung einer höchst effizienten Entsalzungsmethode ausgeschrieben. Angeblich soll es dann noch ein Nobelpreis oben drauf geben.&lt;br /&gt;
&lt;br /&gt;
Die GATC beteiligt sich aus verschiedenen Gründen an der Firma Myriad Waters.&lt;br /&gt;
Mithilfe von Rohren aus DDMP-Nanopore-Materialien werden Moleküle und Ionen durch die unterschiedlich großen Öffnungen geleitet. Als Prozessbeschleuniger werden mehrstufige, zentrifugale Konstruktionen und die Magnetisierung des Wassers getestet. UV-Laserlicht soll der Reinigung dienen und zylindrische Roboter die Nanopore-Beschichtung der Röhren innen und außen reparieren.&lt;br /&gt;
&lt;br /&gt;
Myriad Waters konzentriert sich dabei auf die restlose Verwertung von Meerwasser, um möglichst wirtschaftlich arbeiten zu können und Ansammlung giftiger Rückstände zu vermeiden. Der Einsatz von Fotovoltaik soll das Gesamtkonzept attraktiver für küstennahe Wüstenregionen machen.&lt;br /&gt;
&lt;br /&gt;
In weiteren Ausbaustufen sollen Synthese-Stationen gebaut werden, die sowohl einfache chemische Grundstoffe sowie später 3D-DDMP-Materialien aus Phagen-Displays liefern. Zuvor abgefischte biologische Materie sollen bakteriell zerlegt und zu weiteren Phagen verarbeitet werden.&lt;br /&gt;
&lt;br /&gt;
Prinzipiell ermöglicht die Gewinnung von Rohstoffen aus Meerwasser auch Verdoppelungen der Weltbevölkerung, indem offshore zuerst in die Fläche und dann in die Tiefe gebaut wird. Trotz der Nutzung regenerativer Energien wäre zu überlegen in wie weit eine noch stärkere Nutzung von Ökosysteme vertretbar ist.&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
&lt;br /&gt;
Food for thoughts:&lt;br /&gt;
 https://en.wikipedia.org/wiki/Ocean_colonization&lt;br /&gt;
 https://blog.nemetschek.com/de-de/themen-und-insights/schwimmende-staedte-der-zukunft&lt;br /&gt;
 https://www.zdf.de/dokumentation/planet-e/planet-e-schwimmende-staedte-100.html&lt;br /&gt;
 https://en.wikipedia.org/wiki/Seasteading&lt;br /&gt;
 https://en.wikipedia.org/wiki/Underwater_construction&lt;br /&gt;
&lt;br /&gt;
 Wasser ist Grundlage allen Lebens.&lt;br /&gt;
&lt;br /&gt;
 Geoengineering&lt;br /&gt;
&lt;br /&gt;
 Zur Besiedlung Erdkruste müssten viele Bohrungen stattfinden, um auch Energiequellen zu erschließen: Geothermie bzw. die Schaffung großer Temperaturgradienten.&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Condesation of water vapour===&lt;br /&gt;
* [https://archive.ph/DkWQm in normal air]&lt;br /&gt;
&lt;br /&gt;
==Terra Preta 2.0==&lt;br /&gt;
Tags: Green Village, &amp;quot;primary building block&amp;quot;, European Russian project (burden sharing of knowhow, machines, materials, labor, and investment)&lt;br /&gt;
&lt;br /&gt;
Technological scope:&lt;br /&gt;
* Anreicherung von Pflanzenkohle mit Wasser, Nährstoffen, Bakterien, Pilzen&lt;br /&gt;
* Ständige Forschung für besten Mikrobenmix (anpassen an regionales Klima und lokalen Boden, Flora, Fokus auf Symbiosen)&lt;br /&gt;
* Ausgleich des pH-Wertes durch &amp;quot;nachgebaute Vulkanerde&amp;quot;, die auch dafür bekannt ist mit ihren Mineralien sehr fruchtbar zu sein&lt;br /&gt;
* Nachdüngen durch vorige Beschichtung der Aussaat mit Stickstoffträger, Mineralien, etc. Ggf. hier Update von Bakterien, Pilzen&lt;br /&gt;
* Spätere Begleitung durch autonome Landwirtschaft per GPS-gestützte Traktoren, Drohnen, u. Ä. (Saat, Düngung, Überflug-Kontrolle, Pflege (mechanische Unkrautvernichtung), Ernte) bei gleichzeitiger Akademisierung (Jobumwandlung)&lt;br /&gt;
* Späterer Ausbau der Wertschöpfungkette, Verstädterung&lt;br /&gt;
* [[wp:Pleistocene_Park|Als Ausgleich für diesen Plan muss der Permafrostboden in freien Gebieten durch die Ansiedlung großer Pflanzenfresser gesichert werden]]. Das Gewicht der umherziehenden Tiere sorgt für eine Verdichtung des Bodens. Dieser bleibt dann im Sommer länger durchgefroren.&lt;br /&gt;
** Wiederansiedlung von Mammuts mit Hilfe von GV ;)&lt;br /&gt;
* Begleitung durch ständige Forschung, um Prozesse zu optimieren und um so letztendlich den CO2-Abdruck immer weiter zu mindern&lt;br /&gt;
* Überschüssige Biomasse zur Energiegewinnung nutzen (Verstromung oder Zwischenspeichern von Gas, synthetischer Kraftstoffe), daher schrittweise, konsequente Reduktion klassischer Energieträger (fossiles Öl und Gas im Boden lassen) (Bei den &amp;quot;russischen Gegebenheiten wäre eine direkte Umstellung auf Elektroantriebe wahrscheinlich zu früh.)&lt;br /&gt;
&lt;br /&gt;
Goals:&lt;br /&gt;
* accelerating generation of wealth for civil population, additional income by European shareholders, more taxes for Russian government&lt;br /&gt;
* connecting European and Russian economics to fuel peace process (future conflict escalation less likely)&lt;br /&gt;
* a shared task as an important psychological tool to overcome historic ressentiment of politician and civilian population&lt;br /&gt;
* urbanization of barren landscapes - also by taking up climate refugees and therefore reducing political social tensions (making them part of a solution instead of letting them be a problem)&lt;br /&gt;
* in last consequence to create a strengthened regional area to balance super powers (a new pole next to China and USA to support world peace; 3 poles are more stable than 2)&lt;br /&gt;
&lt;br /&gt;
==Ballistic ammo==&lt;br /&gt;
Coordinating the arms of mercenary and corporate forces during the Great Uprising had WCG researchers scrambling to solve their logistical problems.&lt;br /&gt;
&lt;br /&gt;
Their solution was modular, generic casings and projectiles loaded with mission-specific ordnance payloads. &amp;quot;Blank bullets&amp;quot; allowed modular components to adapt and reload any ballistic weapon on the battlefield.&lt;br /&gt;
&lt;br /&gt;
This technology draws on precursors of SLD machine cells which can be programmed to a limited set of memory effects.&lt;br /&gt;
&lt;br /&gt;
Further research was classified. (See GATC: [[Restless_Souls/Summary#GATC:_Blackstars|Liquid SLD]])&lt;br /&gt;
&lt;br /&gt;
==Energy==&lt;br /&gt;
===Notizen zu Kohlenstoff- und Wasserstoff-Energietechnologien===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; width=&amp;quot;100%&amp;quot;&lt;br /&gt;
|&lt;br /&gt;
&#039;&#039;&#039;Direct air capture (DAC):&#039;&#039;&#039; CO2 wird aus der Luft gefiltert. [...] Zement- und Stahlindustrie können zwar mit grüner Energie betrieben werden, werden aber auch immer CO2 ausstoßen. Daher ist DAC mindestens für diese Industrien interessant. Einmal um die Klimaziele einzuhalten und andererseits, um eine neue CO2-Quelle zu haben, z.B. für die Lebensmittelindustrie. -- Interessante Technologie, auch um das Level an Autarkie immer weiter nach oben zu treiben.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Carbon capture and storage (CCS):&#039;&#039;&#039; Der Gedanke des Abtrennens des Kohlenstoffs ist um das Speichern dessen erweitert. Der Kohlenstoff wird gasförmig als CO2 in tiefen Schichten verpresst oder bspw. als Carbonate (Feststoff) gelagert.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wasserstoff&#039;&#039;&#039; ist ein chemischer Energieträger.&lt;br /&gt;
: &#039;&#039;&#039;Erzeugung:&#039;&#039;&#039; Zukünftig wird er hauptsächlich durch Elektrolyse gewonnen: Wasser wird mit Strom in Sauerstoff und Wasserstoff gespaltet. &lt;br /&gt;
: &#039;&#039;&#039;Verwendung:&#039;&#039;&#039; Wasserstoff kann zur Wärmeerzeugung genutzt werden, als Basis für synthetische Kraftstoffe (E-Fuels für Schiffe und Flugzeuge) oder zur Erzeugung von Strom über umgekehrte Elektrolyse in einer Brennstoffzelle.&lt;br /&gt;
: &#039;&#039;&#039;Speicherung:&#039;&#039;&#039;&lt;br /&gt;
:: Die Lagerung ist nicht ganz einfach: Die kleinstmöglichen Moleküle sind sehr flüchtig. Um das Problem zu umgehen, wird für den längeren Transport und Speicherung auch auf Wasserstoffderivate wie etwa Ammoniak und [[wp:de:Methanolwirtschaft|Methanol]] zurückgegriffen. -- Vielleicht wird es in Zukunft auch &amp;lt;!--magnetisch unterstützende?--&amp;gt; DDMP-Materialien geben, die quantenmechanische Tunneleffekte blockieren und so den Wasserstoff besser einschließen.&lt;br /&gt;
:: Wasserstoff kann zu Korrosion führen. Um Wasserstoffversprödung zu vermeiden, können [https://www.chemie.de/lexikon/Wasserstoffverspr%C3%B6dung.html austenitischen Edelstähle (z. B. CrNi-Stähle)] eingesetzt werden.&lt;br /&gt;
:: &#039;&#039;&#039;Die Energiedichte ist eher gering.&#039;&#039;&#039; Im verflüssigten Zustand muss er weiter gekühlt werden. Beim Ändern der Aggregatzustände kommt es zu weiteren Verlusten. Insofern sind lange Transportwege für Wasserstoff eigentlich zu vermeiden. Er sollte als &#039;&#039;&#039;lokaler und regionaler Zwischenspeicher&#039;&#039;&#039; angesehen werden. Anscheinend wird er als geopolitischen Überlegungen auch für weitere Strecken in Betracht gezogen. Zum jetzigen Zeitpunkt legt Russland ein sehr aggressives Verhalten an den Tag. Um afrikanische Staaten vor der russischen Einflusssphäre zu schützen und ihnen gleichzeitig dabei zu helfen eine fossile Wirtschaft möglichst schnell überwinden, werden staatliche Partnerschaften angestrebt.&lt;br /&gt;
&lt;br /&gt;
Unterscheidung nach Erzeugung:&lt;br /&gt;
* &#039;&#039;&#039;Grüner Wasserstoff:&#039;&#039;&#039; Wasserstoffherstellung durch Spaltung von Wasser in Wasserstoff und Sauerstoff per Elektrolyse. Die aufgewendete elektrische Energie stammt aus nachhaltigen Quellen.&lt;br /&gt;
* Blauer Wasserstoff: Dekarbonisierten Wasserstoff aus Erdgas. CCS. Der Kohlenstoff wird gasförmig zur Einlagerung gebracht. (Brückentechnologie)&lt;br /&gt;
* Türkiser Wasserstoff: Dekarbonisierten Wasserstoff aus Erdgas. CCS. Der Kohlenstoff wird im festen Aggregatzustand zur Einlagerung gebracht. (Brückentechnologie)&lt;br /&gt;
* Grauer Wasserstoff: Wasserstoffherstellung mit aus fossilen Energieträgern. Bei der Gewinnung mit Kohle spricht man auch von braunem Wasserstoff.&lt;br /&gt;
* [[wp:Natural_hydrogen|Weißer Wasserstoff]]: Der Wasserstoff wird entweder als Abfallprodukt in anderen chemischen Prozessen gewonnen oder aus natürlichen Quellen: Verwitterung von Gestein.&lt;br /&gt;
* Orangener Wasserstoff: Der Wasserstoff wird aktiv aus dem Gesteinen herausgeholt. Im deutschen Sprachraum stammt oranger Wasserstoff aus der Abfallverwertung, insbesondere Biomasse.&lt;br /&gt;
* Gelber Wasserstoff: Wasserstoffherstellung mit Strom aus gemischten Quellen.&lt;br /&gt;
* Pinker / violetter / rosa Wasserstoff: Wasserstoffherstellung mit Strom aus Kernspaltung.&lt;br /&gt;
* Roter Wasserstoff: Wasserstoffherstellung mit Strom aus Kernfusion.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Carbon Capture and Utilization (CCU)&#039;&#039;&#039;&lt;br /&gt;
* Mit CCU wäre eine universelle Produktion denkbar. Herstellung biologisch abbaubarer Plastik, Rohmaterial für 3D-Printing, DDMP-Mikroelektronik, Carbon-Beton.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Energy cells===&lt;br /&gt;
A highly international team located at Silver Village perfected the creation of Bose-Einstein Condensates (BEC) with electrons at room temperature shortly after the WCG was founded. This energy storage technology had been in the making for many decades but nonetheless the WCG acclaimed it as its prime example of what &amp;quot;centralized&amp;quot; research could achieve. The BEC batteries had a revolutionary high energy density and short recharge times. Soon they replaced all other battery types. The explosive spread within the market caused overwhelmed recycling capacities so many old batteries ended up illegally dumped and added up to other existing environmental problems.&lt;br /&gt;
&lt;br /&gt;
The WCG pushes the complicated research for hydrogen BEC batteries as it is seen as the green &amp;quot;(non) plus ultra&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Supraleiter===&lt;br /&gt;
Supraleiter, die bei Raumtemperatur funktionieren (sollen), werden auch (Ultra-)Hochtemperatur-Supraleiter genannt. Es gibt keine einheitliche Theorie, die ihre Existenz vorhersagt und Konstruktion vereinfacht. &lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Wichtige Eigenschaften:&#039;&#039;&#039;&lt;br /&gt;
* Leitet fast verlustfrei elektrischen Strom. Der Widerstand ist nahezu null. Als Konsequenz erwärmt sich das Material nur marginal.&lt;br /&gt;
* Zeigt [[wp:de:Meißner-Ochsenfeld-Effekt|Meißner-Ochsenfeld-Effekt]]: Supraleitendes Material verdrängt äußere Magnetfelder aus seinem Inneren.&lt;br /&gt;
* Zeigt Levitation nicht auf Basis von [[wp:de:Diamagnetismus|Diamagnetismus]], sondern wegen des Meißner-Ochsenfeld-Effekts.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Zusätzlich gewünschte Eigenschaften:&#039;&#039;&#039;&lt;br /&gt;
* Wenn Supraleitfähigkeit nicht bei Normalbedingungen vorliegen kann, sollte Kühlung statt Druck diese Fähigkeit ermöglichen, weil die Umsetzung technisch leichter ist.&lt;br /&gt;
* Toleriert hohe Stromdichten, damit das Material industriell interessant ist.&lt;br /&gt;
* Einfach in der Herstellung.&lt;br /&gt;
* Biegsamkeit (etwa für Kabel und Spulen)&lt;br /&gt;
** Silber als Substrat für spröde, keramische Supraleiter, um diese formbar zu machen, wäre ein zusätzlicher Kostentreiber. &lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
//A&lt;br /&gt;
&#039;&#039;&#039;Betrugsmöglichkeit:&#039;&#039;&#039;&lt;br /&gt;
* Nach Publikation der Forschungsarbeiten, die die Herstellung von Supraleiter versprechen, aber noch nicht bestätigt sind, sammelt ein neu gegründetes Unternehmen [https://web.archive.org/web/20230811222609/https://www.golem.de/news/streit-um-supraleiter-lk-99-die-schwierige-suche-nach-der-wahrheit-2308-176337.html Gelder (Risikokapital)], mit dem Versprechen, die Produkt möglich zu machen.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Einschränken von Betrugsmöglichkeiten:&#039;&#039;&#039;&lt;br /&gt;
* Es sollten nur noch Arbeiten publiziert werden, wenn diese sowohl ausgiebige, lückenlose Testdaten als auch eine detaillierte, lückenlose Anleitung zur Replikation enthalten, sodass andere Teams die Ergebnisse so schnell wie möglich bestätigen können.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Prioritätensetzung durch die WCG:&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Da Ultra-Hochtemperatur-Supraleiter den Energieverbrauch der Menschheit massiv senken würden, plant die WCG eine massive Forschungsförderung dieser Materialien, sobald das &amp;quot;lunare R&amp;amp;D Supergrid&amp;quot; fertiggestellt wurde. Umweltorganisationen warnen, Toxizität und Recyclingfähigkeit der Materialien nicht zu unterschlagen, weil der Masseneinsatz sonst zu neuen Umweltproblemen führt.&lt;br /&gt;
&lt;br /&gt;
In Wissensgesellschaften sind Skalierung und Effizienzsteigerungen im Bereich Computing und Energiegewinnung, -umwandelung, -speicherung, und -übertragung von besonderer Bedeutung. Nach dem BioCrisis-Desaster beauftragten die technikaffinen WCG-Funktionäre Pensatore mit einer weniger gefährlichen Möglichkeit, gesamtgesellschaftliche Verbesserungen zu finden.&amp;lt;!-- Neben Supraleitern enthielt ihre Liste auch Spintronik, Photonik, Quantum Computing, Hyperentanglement, sowie der Einsatz von höherwertiger Logik.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Pensatore: &amp;quot;Avatara, wie würdest du Supraleiter herstellen?&amp;quot;&lt;br /&gt;
: &amp;quot;Da es keine einheitliche Theorie zur Hervorsage von Supraleitern gibt, wäre es naheliegend, einen Trial-and-Error/Bruteforce-Ansatz mit möglichst vielen automatisierten Experimentallaboren zu verfolgen. Je mehr Labore zur Verfügung stehen, desto mehr Varianten können in einer Zeiteinheit getestet werden. Varianten seien Materialien sowohl unter Normalbedingungen als auch unter [[#Conditional_materials|Nichtnormalebedingungen]]. Letztgenannte wären insbesondere DDMP, die zusätzlich unter unterschiedlichen Bedingungen getestet werden: Temperatur, Druck, Zugkräfte, [https://www.mpg.de/9942583/supraleitung-fulleren-lichtinduziert Licht] und Stromdichte. Das ist quasi das [[wp:de:Infinite-Monkey-Theorem|Infinite-Monkey-Theorem]], das aber mit einem systemischen Testen umgesetzt wird. Materialwissenschaftler könnte weiterhin Materialien und Wertebereiche vorschlagen, also diese Experimente priorisieren, von denen sie glauben, dass sie am ehesten zum Erfolg führen. -- Man könnte auch versuchen, den gewünschten supraleitenden Zustand in bekannten &#039;&#039;Basismaterialien&#039;&#039; zu simulieren und von dort aus immer neue Varianten virtuell und dann real zu testen, die den gewünschten Zielbedingungen am nächsten kommen.&amp;quot;&lt;br /&gt;
&amp;lt;!--&lt;br /&gt;
Avataras A7-Matrix-Material hat als erster Vertreter supraleitender Materialien unter Normalbedingungen die zweite elektrische Revolution eingeleitet.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Phase Cloak==&lt;br /&gt;
Phase cloak devices were jointly developed by Silver Village and Green Village. A highly fluent adhesive with the behavior and logic of [[wp:Physarum_polycephalum|Physarum polycephalum]] engulfs its wearer. In its high-energy state, the device undergoes a phase shift, basically becoming a smart metamaterial complex. The wearer gets invisible to 99 percent. Though it was a completely different technology by then, the first batch was embarrassingly shipped with the wrong manual describing the principles of the prototype. The mass-produced device does not damage its wearer&#039;s molecular bonding but suffers from a burnout effect, strongly limiting its usage.&lt;br /&gt;
&lt;br /&gt;
==Weapons==&lt;br /&gt;
===Wireless mid-range taser===&lt;br /&gt;
The WCG weapon manufactures discontinued VDG pistols in favor of compressed graphite powder based tasers. The conducting graphite gets synthesized in the post-firing phase to ready the next round. &lt;br /&gt;
&lt;br /&gt;
===Electrolaser===&lt;br /&gt;
The WCG experimented with [[wp:Electrolaser|electrolasers]] to secure facilities against lightning strikes. A laser-induced plasma channel takes the lightning to the ground at a secure place.&lt;br /&gt;
&lt;br /&gt;
This technology cannot be used for normal hand-held weapons as both start and end point are at danger and the usage depends on the weather. Also, creating a laser-induced plasma channel require huge amount of energy in the first place.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Lightning thrower&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At GV the rebels created a mech with two LIPC fire modes. In both cases the mech functions as a mobile relay station.&lt;br /&gt;
* GV fusion reactor can be used to power the mech&#039;s LIPC and the additionally applied current.&lt;br /&gt;
* In the second mode, the mech creates two LIPC to first trigger a lightning strike and then reroutes the energy with a second LIPC to enemy forces.&lt;br /&gt;
&lt;br /&gt;
===Plasma weapon===&lt;br /&gt;
The accelerating plasma bolt rests in a graphene-coated bubble that is self propelling due to a plasma jet. The bubble is magnetized causing electrons to be attracted and fueling a contraction mechanism. The positive charged protons are repelled and can escape only through one opening. When the bolt collapses on contact it causes shock, burn, and blast damage.&lt;br /&gt;
&lt;br /&gt;
===[[Heavy_weapons|Heavy weapons]]===&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; &lt;br /&gt;
|style=&amp;quot;background-color:#EEE&amp;quot;|&lt;br /&gt;
*[[Heavy_weapons#Vacuum_bomb|Vacuum bomb]]&lt;br /&gt;
*[[Heavy_weapons#Auto-aiming|Auto aiming weapons (like CIWS)]]&lt;br /&gt;
*[[Heavy_weapons#Railgun|Rail gun]]&lt;br /&gt;
*[[Heavy_weapons#Gatling_guns|Gatling guns]]&lt;br /&gt;
*[[Heavy_weapons#Metal_Storm|Metal Storm]]&lt;br /&gt;
----&lt;br /&gt;
(hypothetical)&lt;br /&gt;
*laser-induced plasma beam in tempests [https://web.archive.org/web/20130205205915/http://www.g-o.de/wissen-aktuell-8091-2008-04-15.html (src)]&lt;br /&gt;
*[[wp:Bose–Einstein condensate|BEC]] + pyroelectric fusion &amp;lt;!-- problem: temperature difference, solution: see term &amp;quot;emergence&amp;quot; --&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Health care==&lt;br /&gt;
===Cold plasma===&lt;br /&gt;
[...] (First chapter)&lt;br /&gt;
&lt;br /&gt;
===Individualized overkill of bacteria colonies===&lt;br /&gt;
A way to overcome antibiotic resistance.&lt;br /&gt;
&lt;br /&gt;
Persistent bacterial infections must be understood as a war against the human body. They shouldn&#039;t be simply fought with single methods, they should be eradicated with an overkill approach.&lt;br /&gt;
* hospitals that take hygiene serious (like in the Netherlands, see their &amp;quot;search and destroy&amp;quot; policy)&lt;br /&gt;
* combination of cold plasma, quorum sensing blocker, different antibiotics and an individualized phages therapy (bacteria must not be allowed to develop adaptions)&lt;br /&gt;
** Bakteriophagen: Spezifisch. Höchst effektiv in Kombination mit Antibiotika, da Bakterien sich nicht oder zumindest extrem schlecht gegen Gifte und Phagen gleichzeitig anpassen können. Günstig in der Herstellung. &amp;quot;Dosis im Centbereich.&amp;quot; (Stehen die Pharmariesen hier auf der Bremse?) Schon lange in der Forschung - und in der Anwendung in Osteuropa (insbesondere Georgien). -- [https://www.3sat.de/wissen/nano/250320-sendung-gletscherschmelze-nano-100.html &amp;quot;Rettende Viren aus dem Slum&amp;quot; (12:25)]&lt;br /&gt;
* repopulating with friendly flora to prevent reinfection (this might be a persons own, healthy &#039;&#039;flora&#039;&#039; saved before antibiotic treatment)&lt;br /&gt;
&lt;br /&gt;
===Mobile health care===&lt;br /&gt;
This technology is not actively worked on as it is highly restricted. (WCG SP)&lt;br /&gt;
&lt;br /&gt;
Such an device is meant to provide:&lt;br /&gt;
* programmable sensor arrays&lt;br /&gt;
* body health surveillance by an AI&lt;br /&gt;
* phages and antibiotics synthesis (countering bacterial infections)&lt;br /&gt;
* mRNA synthesis (countering virus infections and cancer)&lt;br /&gt;
* ...&lt;br /&gt;
&lt;br /&gt;
Omega chimera are spiritual successors of this tech.&lt;br /&gt;
&lt;br /&gt;
===Counter virus===&lt;br /&gt;
The distribution of vaccines takes too long. To counter severe pandamics WCG developed a new emergency concept: viruses that are less dangerous and spread faster than the natural variants can be brought into public. Similar surface properties deliver the wanted immunization.&lt;br /&gt;
&lt;br /&gt;
Due to mutation and recombination concerns the WCG decided to not use this new instrument of mass vaccination.&lt;br /&gt;
&lt;br /&gt;
: Red herring: This is echoing in Hasegawa words in first chapter. Something about &amp;quot;moral compass of WCG&amp;quot;. (Dealing with overpopulation. &amp;quot;[[wp:Ghost_in_the_Shell:_Stand_Alone_Complex|Stand alone complex]]&amp;quot; / pseudo conspiracy?)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--[...]&lt;br /&gt;
&lt;br /&gt;
Variants with different spreading methods are used to help areas that were already infected with the natural, dangerous version.&lt;br /&gt;
&lt;br /&gt;
This is to help the new variants &amp;quot;to win the race&amp;quot; while hygienic measures are applied that block the natural replication routes.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Silver Dawn==&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
==Mind Seal==&lt;br /&gt;
Mind Seal beschreibt konkrete Technologien und im weiteren Sinne einen Zeitabschnitt. Der Sturz der Menschen in eine Epoche, die so nie beabsichtigt war.&lt;br /&gt;
&lt;br /&gt;
Der Interessenkampf verschiedener Parteien hätte in einer absolut totalitären Welt geendet. Avatara kann dies nur verhindern in dem er im letzten Moment den Verstand der Menschen versiegelt.&lt;br /&gt;
&lt;br /&gt;
: Avatara resümierte: &amp;quot;Die Menschen haben mit dem Feuer neuer Technologien gespielt und sich die Hände verbrannt.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Er plant die Aufhebung der Siegel mit der Reparatur bzw. der Etablierung einer Biokratie. Dazu muss erst der Einfluss der Controller Group, von Shin und anderen entfernt werden.&lt;br /&gt;
&lt;br /&gt;
Auf dem Weg dahin hat er mit der Eigendynamik des entgleisten Gaia-Systems zu kämpfen.&lt;br /&gt;
&lt;br /&gt;
===Memory inhibitor===&lt;br /&gt;
Based on Pensatore&#039;s work which he used on Mukade.&lt;br /&gt;
&lt;br /&gt;
Avatara uses artificial cells to monitor and control the information flow in human brains.&lt;br /&gt;
&lt;br /&gt;
==Extended reality==&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
Durch die von Shin&#039;s Shintoismus eingefärbte Fehlinterpretationen wurden unter anderem Species Avatare reale Existenzen.&lt;br /&gt;
&lt;br /&gt;
Im Kontext eines Bioc-Grids können von Gaia ermächtigte Lebewesen auf Information zugreifen, sie visualisieren und in physische Form bringen. Von den Menschen mit einem Mind Seal wird dies gemeinhin als Magie wahrgenommen. Mit der Zeit entwickeln sich Gesten und Rituale, die Teil von &amp;quot;Zaubersprüchen&amp;quot; sind.&lt;br /&gt;
&lt;br /&gt;
==Beyond Dragons==&lt;br /&gt;
As the new protagonists awaken from their long sleep, the solar system lays in chaos.&lt;br /&gt;
&lt;br /&gt;
Earth disappeared. And where did all the humans go?&lt;br /&gt;
&lt;br /&gt;
A dangerous space journey begins. It&#039;s a fight for survival against one own mind, against friends, against enemies and against space itself.&lt;br /&gt;
&lt;br /&gt;
Eventually they discover creatures. Are those aliens or biological remnants of humans that have passed long time ago?&lt;br /&gt;
&lt;br /&gt;
What will you do to get &amp;quot;home&amp;quot;? How much can you endure?&lt;br /&gt;
&lt;br /&gt;
The group reaches the alleged location of human live. What they find is an hostile society that stigmatizes them as memetic and biological hazard material.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===2D materials and isotopes economy===&lt;br /&gt;
Mining rare earth elements became more and more difficult.&lt;br /&gt;
&lt;br /&gt;
When production and use of 2D materials in the industry became common, a new hype was kicked off.&lt;br /&gt;
&lt;br /&gt;
The combination of few base materials called for research in &#039;&#039;&#039;doping, defects and [https://www.google.com/search?q=Moir%C3%A9+pattern+graphene moiré] pattern&#039;&#039;&#039; recipes.&lt;br /&gt;
&lt;br /&gt;
And while in use the materials can be forced to switch properties by applying all kind of stimuli: pressure, light, electric current, etc.&lt;br /&gt;
&lt;br /&gt;
Research was further accelerated by AI and QC. The golden age of material science began.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
Nuclear waste became a valuable resource. Instead of burying accumulated dangerous radioactive matter under mountains, people initiated a new recycle program.&lt;br /&gt;
&lt;br /&gt;
Keeping the matter protected for a million years was problematic. It was expensive with no guarantee of geological stability of the dumping sides.&lt;br /&gt;
&lt;br /&gt;
Uranium and other radioactive isotopes were going to be recycled in &#039;&#039;&#039;DDMP&#039;&#039;&#039; recipes in the next two thousand years. Increased cancer rates were countered by new medical inventions such as mRNA cancer vaccines.&lt;br /&gt;
&lt;br /&gt;
With a continuously spreading and evolving bioc grid it became possible to store currently not needed amounts far beneath any groundwater layer and repair geological instabilities.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
Material autarky: the ultimate goal should be to able to collect and process elements from air, fresh and salt water, and any kind of ground. The remixing (also printing) of few elements in 2D and 3D materials (DDMP) enables fast space colonization and survival of mankind.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
After hydrogen and DDMP, a new kind of carbon industry can be expected.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
===&#039;&#039;Conditional&#039;&#039; materials===&lt;br /&gt;
In order to survive in space new designs for machines, electronics, and so on take advantage of external conditions and phase changes. Extreme pressure, currents, EM fields, heat, coldness, radiation and plasma are not avoided but used to have the actual material.&lt;br /&gt;
&lt;br /&gt;
Inspiration / food for thought:&lt;br /&gt;
* different phases of water&lt;br /&gt;
* metallic hydrogen&lt;br /&gt;
* ultra high temperature superconductivity (e.g. in plasma)&lt;br /&gt;
&lt;br /&gt;
===Aether===&lt;br /&gt;
This draws on [[#Molecular printing|molecular printing]].&lt;br /&gt;
&lt;br /&gt;
Actually &amp;quot;earthbound&amp;quot; printing would be much easier, but maybe there are conditions (a gas planet?) that justify airborne printing. At least it would be fun and epic...&lt;br /&gt;
&lt;br /&gt;
In the manga Blame you can see characters pop into existence, somehow simply growing. In Oni, similar can be achieved by molecular printing. A Gaia and [[wp:Aether_(mythology)|Aether]] environment isn&#039;t absolute necessary but very helpful. At the scene, molecular machines - invisible to the human eye - carry out the construction. Airborne particles have a less density than in liquids or solid aggregates, so in order to speed up the process, strong air streams are forced towards the construction core. The sky will overcloud and even a controlled tornado can emerge.&lt;br /&gt;
&lt;br /&gt;
The heat sources or magnetic fields would determine the motion of the wind. Inverse tornado wouldn&#039;t lift the entity to build.&lt;br /&gt;
&lt;br /&gt;
There would be some kind of collector and filter structures attached to the &amp;quot;core&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Electricity can be harnessed from charged clouds, [[wp:Harvesting_lightning_energy#Directed_plasma_channels|with]] or without lightning. Or simply from the ground (Bioc power grid).&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Aether AI&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Sensors and computing capacities can be built with diamond particles.&lt;br /&gt;
* https://phys.org/news/2024-10-diamond-atmosphere-cool-planet.html&lt;br /&gt;
* https://phys.org/news/2024-10-harnessing-diamond-imperfections-frontier-quantum.html&lt;br /&gt;
&lt;br /&gt;
See also: [[Talk:Restless_Souls/Summary#:~:text=the-,Tanzania,craton|Tanzania craton]]&lt;br /&gt;
&lt;br /&gt;
===Biology made from condensed matter?===&lt;br /&gt;
Possibilities of synthetic biology can be extended by [[wp:Xeno_nucleic_acid|XNA]], adding new nucleic acids to the &amp;quot;alphabet&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Now, what would happen if you even learn how to use even more [[wp:Table_of_nuclides|isotopes]] and stick only to atoms and molecules that can be condensed?&lt;br /&gt;
&lt;br /&gt;
Pokemon! I always wondered how do these animals fit into such tiny space? Answer: the ball contains pools for fermionic condensates and a memory for the genetic and anatomic blueprints. Of course you need a techno sphere (gaia or whatever) to reach ultra cool temperatures, do fast scans and later on the printing.&lt;br /&gt;
&lt;br /&gt;
This technology is reserved for Beyond Dragons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Omega Chimera===&lt;br /&gt;
Basically networking humans with an revamped Daodan.&lt;br /&gt;
&lt;br /&gt;
Their Daodan genome can now be changed by will.&lt;br /&gt;
&lt;br /&gt;
Gaia picks up the transformation task. It has enough computing power and a database to virtually develop any desired adaption or cybernetic implant.&lt;br /&gt;
&lt;br /&gt;
OCs can combine their neuronal resources.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Green OCs&amp;quot; are made of biological cells and SLD cells in equal shares.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Grey OCs&amp;quot; are purely made of SLD cells (nano bots).&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
RL examples that goes into direction Omega Chimera:&lt;br /&gt;
* [https://web.archive.org/web/20250617145327/https://wexnermedical.osu.edu/our-stories/researchers-develop-regenerative-medicine-breakthrough Chip-based cell reprogramming]&lt;br /&gt;
* [https://phys.org/news/2017-08-synthetic-genomics-unveils-digital-to-biological-digital.html bioprinting]&lt;br /&gt;
&lt;br /&gt;
===[[wp:Nuremberg_Funnel|Nürnberger Trichter]]===&lt;br /&gt;
They made it...&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Biocracy===&lt;br /&gt;
[Merge with Summary page.]&lt;br /&gt;
&lt;br /&gt;
Each human in more or less specialized due to his profession. So it happens that in specific discussions, there are always people lacking the specific background information. In theory it&#039;s possible to acquire the information but jobs with high amount of working hours prevent that from happening in real life. Free time is more likely spend on social activities, fitness and entertainment.&lt;br /&gt;
&lt;br /&gt;
:The best argument against democracy is a five-minute conversation with the average voter.&lt;br /&gt;
:: - Winston Churchill&lt;br /&gt;
&lt;br /&gt;
Democracy shouldn&#039;t be given up, it should be upgraded.&lt;br /&gt;
&lt;br /&gt;
Biocracy 1.0&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;[[Restless_Souls/Summary#Biocracy|(...)]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The Gaia AI also actively researches the causes of [[wp:The_Wisdom_of_Crowds#Failures_of_crowd_intelligence|wrong decisions]] and starts in new areas only with fully supervised seed groups.&lt;br /&gt;
&lt;br /&gt;
Biocracy 2.0&lt;br /&gt;
&lt;br /&gt;
Omega-Chimeras on the other hand, have more free time and can acquire expertise almost in an instant. They are like walking miniature Wikipedia versions and can share knowledge in an instant. Gaia separates facts from bias before compressing, caching and forwarding the information. That way, over time more and more purified knowledge is available for everyone. Neurological repairs and enhancement ensure the IQ and mental fitness required for complex information even up to the old age. Everyone can become an expert in any field.&lt;br /&gt;
&lt;br /&gt;
Direct democracy gets less and less flawed by individuals foreign to a specific topic or opinions formed in cracker-barrel groups.&lt;br /&gt;
&lt;br /&gt;
==Nature&#039;s Decision==&lt;br /&gt;
Working title. May or may not be the final name.&lt;br /&gt;
&lt;br /&gt;
The outcome of the multi-biocracy experiment is described as &amp;quot;Nature&#039;s Decision&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Meanwhile, in the shadow of the old worlds lurks a deadly threat. A Biocracy relict. A rogue memehunter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Memes===&lt;br /&gt;
A meme is basically a thought and superficial explained in analogy to genes. They can be created, copied, altered, deleted and can experience some kind of evolution within individuals and societies. If you keep comparing memes with genes, most children get their knowledge and believe from their parents, teachers and other, older authorial and/or charismatic persons which resembles vertical gene transfer while adapting memes from friends or &amp;quot;brothers in mind&amp;quot; (&amp;quot;Brüder im Geiste&amp;quot;) resemble horizontal gene transfer. Since not all memes are passed from one person to another and don&#039;t keep the same, they can be seen to evolve through selection and mutation.&lt;br /&gt;
&lt;br /&gt;
The Damocles sword within: Information of ERVs and other viral elements can cause damage but also help immune responses. Viral memes (in sense of not agreeing with but occupying space within the host) are more successful in spreading than their biological counterpart but also get less expressed. Their analysis can be used e.g. in a discussion to formulate arguments that stand against the hostile-felt meme standing in analogy to a biological immune response.&lt;br /&gt;
&lt;br /&gt;
Bad memes get also replicated as long as they don&#039;t kill their host. The survival of the fittest is an outdated view as also organisms with inherited disease create offspring. A &amp;quot;sufficient&amp;quot; survival rate is enough. And so, also genes and memes can stand in conflict with their own kind and still get passed on. Opposing memes are less likely to kill their host as they can be suppressed/silenced/fixed/solved faster than genes. They result in double standards and are criticized by other persons as unfair. On the other hand the usefulness of a meme depends on its context and perspective while the context of a gene is in most cases its own genome. &amp;quot;One man&#039;s terrorist is another man&#039;s freedom fighter.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
An unique property of memes is that they can be encapsulated in other memes. [[wp:Metameme|Metamemes]].&lt;br /&gt;
&lt;br /&gt;
In natural, biological lifeforms memes and genes can interact to a limited point.&lt;br /&gt;
* Gene affects meme: Your genome determines your starting condition, e.g. you are probably going to hate what causes your allergy.&lt;br /&gt;
* Meme affects gene: For example, you have a strong determination and decide to change your lifestyle and hence the epigenetic layer to fight obesity.&lt;br /&gt;
&lt;br /&gt;
In Omega Chimeras the memes can fully determine genetic information or any other nature of physical blueprints. - The body can be transformed into whatever the mind seems needed.&lt;br /&gt;
&lt;br /&gt;
Biocracy laws:&lt;br /&gt;
&lt;br /&gt;
Every person is to be seen as a collection of interacting memes and sensory inputs within any physical body.&lt;br /&gt;
&lt;br /&gt;
Biocracy defines lower life as: all life runs code within at least one unit whereby matter and energy is consumed for self-preservation.&lt;br /&gt;
&lt;br /&gt;
Biocracy defines higher life as: any system - may it be an multicellular individual or a single-cellular collective - that by emergence has a mental memory and self-awareness. The requirements for lower life are met as well.&lt;br /&gt;
&lt;br /&gt;
A digitalized mind is not alive and doesn&#039;t hold the right to become reanimated unless there is one proponent willing to share his resources.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Judicial consequences=====&lt;br /&gt;
Willful committed crimes are not longer punished by physical imprisonment. Instead, the crime causing memes are either altered or deleted. These fundamental interventions are often seen critical by non-biocracy societies and cause rejection and political tensions if a guilty member caught on the other&#039;s territory.&lt;br /&gt;
&lt;br /&gt;
Biocracies tolerate the existence of other forms of societies but naturally see themselves as the most advanced and rightful ones. This on the other hand can result in a hybris - a false believe in its own supremacy. A possible solution to this flaw is the ongoing multibiocracy project in which many societies put their believes to a test...&lt;br /&gt;
&lt;br /&gt;
If a merged personality is sentenced to delete an &amp;quot;emergent meme&amp;quot;, it can decide to split it minds and bodies again or to let delete the meme.&lt;br /&gt;
&lt;br /&gt;
A person that has committed a crime in the past and is now found to have the crime-causing meme missing, cannot be sentenced. Minor damage is be compensated by money or &amp;quot;ER credits&amp;quot;. (Energy and resources)&lt;br /&gt;
&lt;br /&gt;
A person found to have removed his own memes can be sentenced to remove his underlying motivations as well. In extreme cases memes are added to take away the pleasure gained from successful crimes in which removing any other memes comes too late and cause feeling of inequality in other persons. For example: a person destroyed properties of another person. Removing the delinquent&#039;s motivation doesn&#039;t necessary takes away his joy for the damage done.&lt;br /&gt;
&lt;br /&gt;
A person that splits up his memes after the crime into two new minds and bodies, can be sentenced to merge again so that he doesn&#039;t escape judgment. If one split-person died, the remaining split-person is altered so that he can never develop such meme again.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Memehunter division====&lt;br /&gt;
As any computer system can be hacked and hijacked, so are biological lifeforms with human-like level of intellect vulnerable to meme injection, therefore reprogramming of neuronal pattern. In the early years, lobbyism was identified as major danger for self-preservation of Biocracies and hence prohibited. Also, all advertisements must contain true information.&lt;br /&gt;
&lt;br /&gt;
Memehunters are so to say police officers fighting memetic corruption and investigate it causes. The very most of them are SLD or Omega Chimera.&lt;br /&gt;
&lt;br /&gt;
During the &amp;quot;big expansion&amp;quot; a few Biocracies witnessed dysfunctional divisions in which memehunters made investigations that ignored any ethical boundaries in order to feed the database. Societies not agreeing with their biocratic neighbors were tragically attacked and destroyed by memehunters.&lt;br /&gt;
&lt;br /&gt;
Memehunters possess the power to alter the mind of other people and execute the will of Biocracies against its own members or those of other societies. To achieve their missions they are given access to GAIA resources, which dramatically boosts their physical and mental abilities. The Bioc grid supports them with just everything and can even backup their personality making them immortal.&lt;br /&gt;
&lt;br /&gt;
A matured Biocracy has no more use of memehunters since all members live in total sync and will be made aware of any error causing or &amp;quot;false&amp;quot; thoughts. Rogue memehunters are officially to be taken down but this remains a difficult task as they tend to build their own planetary support systems. So the biocracies turn a blind eye against them if they stay in exile.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====ER credits====&lt;br /&gt;
The dominating currency of Biocracies is ER credits.&lt;br /&gt;
&lt;br /&gt;
ER credits are meant to summarize the true value of a product or service.&lt;br /&gt;
&lt;br /&gt;
They come in two variants which can also be combined: Energy and resources.&lt;br /&gt;
&lt;br /&gt;
For common services and goods, ER is just joul.&lt;br /&gt;
&lt;br /&gt;
In contracts the nature of ER can be further determined: for example contracting party could say that their service has a worth of 10 gigajoul delivered in hydrogen of 99,99 % purity.&lt;br /&gt;
&lt;br /&gt;
Risky contracts are partially paid in advanced and the contractor must provide all information necessary to prove his solvency.&lt;br /&gt;
&lt;br /&gt;
Due to very high transparency and absolute knowledge, credits (loans) don&#039;t have &amp;quot;interest&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Additional payment as that in capitalistic systems produces virtual money and shall be prevented. The prices are fixes by the energy production and energy consumption of goods. They get updated when whenever these base values change. New inventions are always implemented planet-wide within hours. This ensure an equal price policy.&lt;br /&gt;
&lt;br /&gt;
As a consequence rules of supply and demand aren&#039;t in action anymore, and inflation and deflation doesn&#039;t happen.&lt;br /&gt;
&lt;br /&gt;
(A joul is a joul... It&#039;s a fundamental physical definition which doesn&#039;t change its value over the years. Depending on available technology you can use with more or less efficiency. But it&#039;s never &amp;quot;worthless&amp;quot;. A chemical reaction always cost the same.)&lt;br /&gt;
&lt;br /&gt;
Every Omega Chimera can produce energy by photosynthesis or provide its neuronal resources for cloud computing. Thus, each citizen has an small but time-wise infinite income.&lt;br /&gt;
&lt;br /&gt;
ER credits are seen as an relict of the pre-Bioc era. In the future the concept of currency will fade into Gaia&#039;s management software to balance things and have check everything. Communities will then just decide what they want and see if they have resources. If they don&#039;t have the resources, Gaia and criticizes develop a plan to collect the missing resources.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Instant energy transport===&lt;br /&gt;
The Idea:&lt;br /&gt;
&lt;br /&gt;
In quantum mechanics they say, when you measure the state one entangled particle you force the corresponding (e.g. spin) state on the other partner particle. Since the distance between these partners don&#039;t seem to play any role, couldn&#039;t you transport energy from one position to another? Normally, when the probabilities collapse to a discrete state, no energy is released. It&#039;s just information that is changed.&lt;br /&gt;
&lt;br /&gt;
However, scientists try to find exceptions. One possibility: Maxwell demons. [https://phys.org/news/2017-07-maxwell-demon-quantum.html Work (ergo energy) can be extracted from a quantum measurement.]&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--Think of two spin entangled particles as a swirling bar magnet. Then you measure it, rotation stops, revealing one side of the magnet. The other particle reveals the other, opposite spin state.&lt;br /&gt;
&lt;br /&gt;
However, entanglement is very fragile so you need some kind of &amp;quot;entanglement regeneration&amp;quot; to keep it alive and restore &amp;quot;used&amp;quot; connections.&lt;br /&gt;
&lt;br /&gt;
Such tech would so ridicules powerful that you wonder &amp;quot;what can not be done?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
: I can&#039;t help to grin. It echos Marge Simpson: &amp;quot;We can do anything now that scientists have invented magic.&amp;quot;--&amp;gt;&lt;br /&gt;
Fictional use:&lt;br /&gt;
&lt;br /&gt;
One partner of an already entangled particle pair is measured with an Maxwell Demon setup. The original entanglement serves as bridge so that the additional entanglement, hence the introduction of additional energy, can be transported to whatever place to the partner particle. At the second location energy gets extracted again when the second entanglement is destroyed. The original entanglement ideally remains to repeat the process. Flipping spin states would be used to produce a weak yet energetic useful alternating spin current.&lt;br /&gt;
&lt;br /&gt;
A crazy addition to this is the usage of particles from stars because they constantly change states. Their partners are carried in BECs. (Certain merged fermions (matter particle) behave like bosons.)&lt;br /&gt;
&lt;br /&gt;
Maybe, for robustness, the entanglement can be made to exist between cluster rather than single particle.&lt;br /&gt;
&lt;br /&gt;
There&#039;s story fragment featuring this tech: boss battle of Yorick and Memhunter. Yorick switches off Möbius&#039; safty protocol. He scarifies the regeneration for a short, full energy output.&lt;br /&gt;
&lt;br /&gt;
===Instant information transport===&lt;br /&gt;
The same technique of instant energy transport can be used to transfer information.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Hyper AI===&lt;br /&gt;
Hyper AIs differ from super AIs in their sheer computing power. In total their computing devices have the size of an planet or are even bigger.&lt;br /&gt;
&lt;br /&gt;
Like Avatara, also Möbius uses cloud computing to host his main brain and controls a synthetic body in the outside world.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Wheels of time==&lt;br /&gt;
The universe is the only existing example of a true perpetual motion machine.&lt;br /&gt;
&lt;br /&gt;
&amp;quot;Wheels of time&amp;quot; is a nickname for machines that collect energy from vacuum fluctuation of space.&lt;br /&gt;
&lt;br /&gt;
Think about the universe as a constantly flowing river and the machine is a water mile.&lt;br /&gt;
&lt;br /&gt;
The inventors&#039; motivation was to escape a thermodynamical death when even the last star has died. If big rips doesn&#039;t happen you could go on living - you would have bought time, infinite time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Möbius jump===&lt;br /&gt;
A technique invented by hyper AI Möbius. It allows a space traveler to survive the transition between big rip and big bang.&lt;br /&gt;
&lt;br /&gt;
Vital information is with high redundancy encoded in patterns of particle decay and regeneration. This also includes neutrino oscillations.&lt;br /&gt;
&lt;br /&gt;
Möbius theorizes that the unequal distribution of matter and antimatter is a possible evidence that information can be passed through a transition.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Theory of sum===&lt;br /&gt;
The trivial idea is that you can achieve a specific goal by any combination of virtually infinite fragments. Specific events or an specific order of events is therefore not needed.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
Möbius observes the universe as good as he can and expands and learns with each cosmic cycle.&lt;br /&gt;
&lt;br /&gt;
After myriads of cycles, Möbius is able to recreate Earth in a run that covers itself multiple cycles.&lt;br /&gt;
&lt;br /&gt;
One problem is missing information for a recreation. Möbius can&#039;t travel backwards though time but maybe he can read past events.&lt;br /&gt;
&lt;br /&gt;
Even if not, with &amp;quot;logical completion&amp;quot; he can recreate many things by memories. Everything else can be retrieved by trail and error. This resembles the infinite monkey theorem but that&#039;s okay because he also has infinite time to work with.&lt;br /&gt;
&lt;br /&gt;
The logical completion is powered by a network of trillions of [[wp:Matrioshka_brain|Matrioshka brains]] and other megastructures.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Oni 2]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:Instance_file_format&amp;diff=47184</id>
		<title>OBD:Instance file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:Instance_file_format&amp;diff=47184"/>
		<updated>2026-04-21T22:15:25Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: using the engine term &amp;quot;placeholder&amp;quot; instead of &amp;quot;empty&amp;quot; because it&amp;#039;s clearer&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UpdatedForOniX|1.0.0}}&amp;lt;!--Documentation below is waiting to be un-commented.--&amp;gt;&lt;br /&gt;
{{OBD Home}}&lt;br /&gt;
{{Hatnote|&amp;quot;.dat&amp;quot; redirects here; for other files ending in &amp;quot;.dat&amp;quot;, see [[Oni (folder)]].&amp;lt;br&amp;gt;&lt;br /&gt;
:You should read [[Engine terminology]] and [[Game data terminology]] before this page.&amp;lt;br&amp;gt;&lt;br /&gt;
:The [[raw|Raw and separate file formats]] page should be read after this one.}}&lt;br /&gt;
Files in GameDataFolder/ named &amp;quot;level[0-19]_Final.dat&amp;quot;, together with &amp;quot;.raw&amp;quot; and sometimes &amp;quot;.sep&amp;quot; counterparts, contain the game data for Oni. These are called &amp;quot;instance files&amp;quot; internally, but a more common-sense name for them is level data files. The format described below was also used for the tool files which supplied the GUI for the in-game editor, however the retail Oni game application refuses to load tool files; for the story behind the tool files, see [[level0_Tools]].&lt;br /&gt;
&lt;br /&gt;
The level 0 files do not contain resources for a specific level but rather resources (instances) shared across all levels. Level 0 is loaded when the game starts and is never unloaded. All other level files, 1-19, are only loaded when their corresponding level starts and then unloaded when it ends. Oni can only hold two level files in memory concurrently, thus resources have to be duplicated on disk whenever a character class, sound effect, etc. occurs in more than one level. For instance, although there are only 2,380 unique sounds in the game, there are 7,386 sounds stored across all level data files.&lt;br /&gt;
{{TOClimit}}&lt;br /&gt;
==Blank space and garbage==&lt;br /&gt;
The structure of the level data files files reflects the way in which Bungie West chose to store levels in memory. So when we read the data in the files with a hex editor we can see eccentricities such as blank space coming from unused fields and byte-alignment padding, and garbage data such as now-meaningless pointer values and random RAM contents from uninitialized memory. There are also [[OBD:Raw and separate file formats#Gaps|gaps in the .raw/.sep files]], mostly representing orphaned obsolete resources, which add up to about 25 MB for the whole game.&lt;br /&gt;
&lt;br /&gt;
==Backwards tags==&lt;br /&gt;
Because the levels were built on Intel-based machines, which use a little-endian architecture, sequences of bytes which represent numbers were written from least-significant to most-significant byte. [[wp:FourCC|FourCCs]] in the data are stored &amp;quot;backwards&amp;quot; (e.g. &amp;quot;13RV&amp;quot; which is meant to be read &amp;quot;VR31&amp;quot;) because Bungie defined those four bytes as a 32-bit integer, not a string, causing them to be written to disk in little-endian order.&lt;br /&gt;
&lt;br /&gt;
==File limits==&lt;br /&gt;
*Max level number: 127&lt;br /&gt;
*Max number of instance files in GameDataFolder: 512 (Windows retail), 16 (Windows demo, Mac)&lt;br /&gt;
*Max number of simultaneously loaded instance files: 64&lt;br /&gt;
*Max number of instances in a file: 131071&lt;br /&gt;
*Max length of an instance file name: 31&lt;br /&gt;
*Max length of an instance name: 63 (including the 4 character template tag)&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
Here is a walkthrough of an instance file using the level0_Final.dat in English Windows Oni. Follow along in a hex editor for maximum educational value. Each term will be explained in-depth when we fully consider the related data. First, here is how the file begins:&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | uint64   | | 1F 27 DC 33 DF BC 03 00 | 0x0003BCDF33DC271F | Total template checksum (main indicator of engine compatibility):&lt;br /&gt;
*0x0003BCDF33DC271F - templates compatible with v1.0 engine (Windows retail)&lt;br /&gt;
*0x0003BCDF23C13061 - templates compatible with v1.1 engine (Windows demo and Mac)&lt;br /&gt;
*0x0003BA70A8DBAE11 - templates compatible with PlayStation 2 engine&lt;br /&gt;
&amp;lt;!--*0x0000000000000000 (blank) - for use with [[OniX]] engine, which instead handles data versioning using the 0x3C field below--&amp;gt;&lt;br /&gt;
OniSplit&#039;s .oni files use PC 1.0 checksum by default and 1.1 checksum when storing data that comes from the 1.1 engine and which perceptibly differs in format for that engine (SNDD, but not TXMP) }}&lt;br /&gt;
{{OBDtr| 0x08 | uint32   | | 31 33 52 56 | &#039;13RV&#039;    | .dat version (meant to be read as &amp;quot;VR31&amp;quot;)&amp;lt;br&amp;gt;OniSplit&#039;s .oni files use &#039;23RV&#039; (&amp;quot;VR32&amp;quot;) instead&amp;lt;!--&amp;lt;br&amp;gt;OniX&#039;s [[Oni (folder)|GDFX]] uses &#039;33RV&#039; (&amp;quot;VR33&amp;quot;) to signify that the new data versioning system is in use--&amp;gt; }}&lt;br /&gt;
{{OBDtr| 0x0C | uint16   | | 40 00       | 64        | size of this header }}&lt;br /&gt;
{{OBDtr| 0x0E | uint16   | | 14 00       | 20        | size of instance descriptor (32 in Windows alpha 6) }}&lt;br /&gt;
{{OBDtr| 0x10 | uint16   | | 10 00       | 16        | size of template descriptor }}&lt;br /&gt;
{{OBDtr| 0x12 | uint16   | | 08 00       | 8         | size of name descriptor }}&lt;br /&gt;
{{OBDtr| 0x14 | uint32   | | 83 24 00 00 | 9347      | instance descriptor count  }}&lt;br /&gt;
{{OBDtr| 0x18 | uint32   | | D4 1B 00 00 | 7124      | name descriptor count; 0 for .oni files because there is no name desc. table }}&lt;br /&gt;
{{OBDtr| 0x1C | uint32   | | 38 00 00 00 | 56        | template descriptor count; 0 for .oni files because there is no template desc. table }}&lt;br /&gt;
{{OBDtr| 0x20 | uint32   | | A0 BC 03 00 | 0x03BCA0  | data block offset }}&lt;br /&gt;
{{OBDtr| 0x24 | uint32   | | A0 35 25 00 | 2438560   | data block size }}&lt;br /&gt;
{{OBDtr| 0x28 | uint32   | | 40 F2 28 00 | 0x28F240  | name block offset; will be lower than data block offset for .oni files }}&lt;br /&gt;
{{OBDtr| 0x2C | uint32   | | 04 4F 02 00 | 151300    | name block size }}&lt;br /&gt;
{{OBDtr| 0x30 | uint32   | | 99 CF 40 00 | (garbage) | used by OniSplit for raw/sep block offset }}&lt;br /&gt;
{{OBDtr| 0x34 | uint32   | | 90 4F 63 00 | (garbage) | used by OniSplit for raw/sep block size }}&lt;br /&gt;
{{OBDtr| 0x38 | uint32   | | F4 55 5F 00 | (garbage) | unused&amp;lt;!--used by OniX for data versioning; the three high bytes contains the highest data version (timestamp) found in any instance in this .dat; see instance descriptor table&#039;s 0x10 for format--&amp;gt; }}&lt;br /&gt;
{{OBDtr| 0x3C | uint32   | | 90 4F 63 00 | (garbage) | unused&amp;lt;!--used by OniX for content versioning; the three high bytes contain the highest content version (timestamp) found in any instance in this .dat; see instance descriptor table&#039;s 0x10 for format--&amp;gt; }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file&#039;s &#039;&#039;&#039;total template checksum&#039;&#039;&#039; is the sum of all the template checksums (see &amp;quot;Template descriptors&amp;quot; below). Oni looks at this number in order to validate that it can read this version of the game data format. In practical terms, the total checksum value given for Windows above tells us that this level data is in the .dat/.raw file scheme, and the value given for Mac Oni and the Windows demo tells us that the level data uses the .dat/.raw/.sep file scheme.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;version&#039;&#039;&#039; of the instance file is the format version. Reading it backwards, as discussed under the &amp;quot;Backwards and garbage data&amp;quot; section, we get &amp;quot;VR31&amp;quot; (which probably means &amp;quot;version 3.1&amp;quot; because the engine subsystem that reads template data was in its third iteration when the game shipped). This is the format version of all instance files in all releases of Oni.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;descriptor sizes&#039;&#039;&#039; are the sizes of the instance, template, and name descriptors which are coming up in this file (see breakdowns in later sections). For instance, each instance descriptor will be 0x14, or 20 bytes, in length.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;descriptor counts&#039;&#039;&#039; are the sizes of arrays which are coming up in this file: the instance, name and template descriptors. For instance, the size of the instance descriptor array will be 0x2483, or 9,347 items, in length.&lt;br /&gt;
&lt;br /&gt;
Next we are told the addresses and sizes of the &#039;&#039;&#039;data and name block&#039;&#039;&#039; in the instance file. The name block simply follows the data block, as you&#039;ll see if you add the data block offset plus the data block size, so the name block offset is technically redundant. The name block offset plus the name block size equals the total size of the file since it&#039;s the last segment of the file. (However in a .oni file, the order of these blocks is reversed.)&lt;br /&gt;
&lt;br /&gt;
After the name block&#039;s size comes four &amp;quot;int&amp;quot;s of &#039;&#039;&#039;garbage&#039;&#039;&#039;; this is padding in order to align the start of the next segment of the file on a 32-byte boundary. The first two 32-bit fields in this space are, however, used in .oni files generated by OniSplit&amp;lt;!--, and the next two 32-bit fields are used by OniX for a new form of template versioning--&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
That concludes the header of the instance file. Immediately after this header we find the instance descriptors array.&lt;br /&gt;
&lt;br /&gt;
==Instance descriptors==&lt;br /&gt;
The instance descriptor array tells Oni where to find the data and the name of every instance (resource) indexed by the .dat file. The descriptors start at 0x40 in the .dat file, but below is a descriptor found at 0x017B50 in the file which makes a better example. In the table below, we use offsets relative to the start of this descriptor. We also show the alternate structure in the Windows alpha 6, the oldest known version of Oni and the only one with an observed difference in the instance descriptor format.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#E9E9E9&amp;quot;&lt;br /&gt;
! width=5% | Offset&lt;br /&gt;
! width=5% | Type&lt;br /&gt;
! width=10% | Raw Hex&lt;br /&gt;
! width=10% | Value&lt;br /&gt;
! width=35% | Description (retail&amp;lt;!--, OniX--&amp;gt;)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x00&lt;br /&gt;
| tag&lt;br /&gt;
| 54 42 55 53&lt;br /&gt;
| &#039;SUBT&#039;&lt;br /&gt;
|align=left | template tag&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x04&lt;br /&gt;
| int32&lt;br /&gt;
| C8 30 22 00&lt;br /&gt;
| 0x2230C8&lt;br /&gt;
|align=left | data offset (relative to data block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x08&lt;br /&gt;
| int32&lt;br /&gt;
| 01 CB 00 00&lt;br /&gt;
| 0xCB01&lt;br /&gt;
|align=left | name offset (relative to name block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x0C&lt;br /&gt;
| int32&lt;br /&gt;
| C0 09 00 00&lt;br /&gt;
| 2496&lt;br /&gt;
|align=left | data size&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x10&lt;br /&gt;
| int32&lt;br /&gt;
| 00 00 30 00&lt;br /&gt;
| 0x300000&lt;br /&gt;
|align=left | flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Divhide|Windows alpha 6}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#E9E9E9&amp;quot;&lt;br /&gt;
! width=5% | Offset&lt;br /&gt;
! width=5% | Type&lt;br /&gt;
! width=10% | Raw Hex&lt;br /&gt;
! width=10% | Value&lt;br /&gt;
! width=35% | Description (alpha 6)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x00&lt;br /&gt;
| int64&lt;br /&gt;
| 68 6C 04 00&lt;br /&gt;
| 0x46C68&lt;br /&gt;
|align=left | template checksum&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x08&lt;br /&gt;
| tag&lt;br /&gt;
| 54 42 55 53&lt;br /&gt;
| &#039;SUBT&#039;&lt;br /&gt;
|align=left | template tag&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x0C&lt;br /&gt;
| int32&lt;br /&gt;
| E8 37 18 00&lt;br /&gt;
| 0x1837E8&lt;br /&gt;
|align=left | data offset (relative to data block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x10&lt;br /&gt;
| int32&lt;br /&gt;
| 4E C5 00 00&lt;br /&gt;
| 0xC54E&lt;br /&gt;
|align=left | name offset (relative to name block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x14&lt;br /&gt;
| int32&lt;br /&gt;
| 20 08 00 00&lt;br /&gt;
| 2080&lt;br /&gt;
|align=left | data size&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x18&lt;br /&gt;
| int32&lt;br /&gt;
| 00 00 30 00&lt;br /&gt;
| 0x300000&lt;br /&gt;
|align=left | flags&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x1C&lt;br /&gt;
| int32&lt;br /&gt;
| EA 5F A6 39&lt;br /&gt;
| {{LocaleDate|2000|08|25}}&amp;lt;br&amp;gt;08:00:42 AM&lt;br /&gt;
|align=left | creation date (seconds since 1/1/1900)&lt;br /&gt;
|}&lt;br /&gt;
{{Divhide|end}}&lt;br /&gt;
The retail version of this instance descriptor tells us that a resource of &#039;&#039;&#039;type&#039;&#039;&#039; SUBT (a subtitle file for Oni; there are only two of these, one containing all speech subtitles, and one for help messages) has &#039;&#039;&#039;data&#039;&#039;&#039; that can be found 0x2230C8 bytes into the data block, which we learned from the file header starts at 0x03BCA0. Its &#039;&#039;&#039;name&#039;&#039;&#039; can be found 0xCB01 bytes into the name block that starts, according to the file header, at 0x28F240.&lt;br /&gt;
&lt;br /&gt;
The data&#039;s &#039;&#039;&#039;size&#039;&#039;&#039; is given as 0x09C0, or 2,496 bytes, but it&#039;s important to clarify that this is the total size of the data counting from the resource header to the next 32-byte boundary after the end of this instance&#039;s actual data; in other words it is the true total of the space occupied on disk by this instance. This is interesting because the data offset leads you to the start of the instance-specific data which begins 8 bytes after the resource header, so if you erroneously add the data size to the data offset to find the end of the instance data then you will find yourself 8 bytes into the next instance.&lt;br /&gt;
&lt;br /&gt;
Before we proceed, let&#039;s expand upon the &#039;&#039;&#039;flags&#039;&#039;&#039; field.&lt;br /&gt;
&lt;br /&gt;
;Flags - data usage&lt;br /&gt;
:0x&#039;&#039;&#039;01&#039;&#039;&#039; 00 00 00 - unnamed&lt;br /&gt;
:0x&#039;&#039;&#039;02&#039;&#039;&#039; 00 00 00 - placeholder&lt;br /&gt;
:0x&#039;&#039;&#039;04&#039;&#039;&#039; 00 00 00 - never used; intended to mark instance as pointing to duplicate data rather than its own data&lt;br /&gt;
:0x&#039;&#039;&#039;08&#039;&#039;&#039; 00 00 00 - instance&#039;s data is being used by duplicate instances as a source&lt;br /&gt;
&lt;br /&gt;
;Flags - Tool mode&amp;lt;!-- (retail)--&amp;gt;&lt;br /&gt;
The first two of the following bits occur throughout the original .dat files. However all of these bits are ignored by the engine when loading data because they only have relevance at runtime when Oni is in Tool mode:&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;10&#039;&#039;&#039; 00 - touched (unsaved data)&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;20&#039;&#039;&#039; 00 - &amp;quot;in batch file&amp;quot;&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;40&#039;&#039;&#039; 00 - delete upon next save&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--;Flags - Tool mode (OniX)&lt;br /&gt;
These bits have been moved to the upper half of the first byte (on disk they are cleared altogether in the GDFX data, but this is their location in memory):&lt;br /&gt;
:0x&#039;&#039;&#039;10&#039;&#039;&#039; 00 00 00 - touched (unsaved data)&lt;br /&gt;
:0x&#039;&#039;&#039;20&#039;&#039;&#039; 00 00 00 - &amp;quot;in batch file&amp;quot;&lt;br /&gt;
:0x&#039;&#039;&#039;40&#039;&#039;&#039; 00 00 00 - delete upon next save&lt;br /&gt;
This frees up the three higher bytes for the data versioning timestamp which is in YY/MM/DD format, stored thusly:&lt;br /&gt;
:0x00 &#039;&#039;&#039;00&#039;&#039;&#039; 00 00 - versioning timestamp – day&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;00&#039;&#039;&#039; 00 - versioning timestamp – month&lt;br /&gt;
:0x00 00 00 &#039;&#039;&#039;00&#039;&#039;&#039; - versioning timestamp – year--&amp;gt;&lt;br /&gt;
The flags &amp;quot;unnamed&amp;quot; and &amp;quot;placeholder&amp;quot; require special explanation.&lt;br /&gt;
&lt;br /&gt;
===Unnamed and placeholder resources===&lt;br /&gt;
You&#039;ll notice that the level file header lists fewer names (7,124) than instances (9,347). That&#039;s because there are 3 types of instance:&lt;br /&gt;
*Unnamed and not placeholder - they are only referenced by other instances in the same file via instance ID; these are generally what can be considered child data of a named instance (e.g., 3D geometry elements like ABNA are &amp;quot;contained&amp;quot; by AKEV, a level&#039;s environment).&lt;br /&gt;
*:In vanilla Oni .dats there are some rare occurrences of unnamed non-placeholder &#039;&#039;orphan&#039;&#039; instances (e.g., [[OBD:File types/Naming#TRCM|TRCM]]). These are a form of garbage and are discarded by OniSplit when unpacking a level. &lt;br /&gt;
*Named and not placeholder - they can be referenced by other instances in any file and the engine can use their name or template tag to find them.&lt;br /&gt;
*Named and placeholder - &amp;quot;placeholder&amp;quot; instances are used in level-specific instance files (i.e. not in level0_Final.dat) to associate an instance ID with a name. For every placeholder resource, there&#039;s another one with a matching name in level0_Final.dat that has data in it. The placeholder resource in the instance file is looked up by ID or name and then the engine searches all the loaded files for a non-placeholder instance with the same name, causing it to find the actual file in the global data in level0_Final.dat.&lt;br /&gt;
&lt;br /&gt;
===Peeking ahead at instance name===&lt;br /&gt;
Before we talk about the name block in depth, we can peek ahead at the name of this resource using the offset we&#039;ve just been given. Let&#039;s add the offset 0xCB01 to 0x28F240, the file header&#039;s address for the name block. This gives us the address 0x29BD41. There we find the string &amp;quot;SUBTsubtitles&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Peeking ahead at instance data===&lt;br /&gt;
The actual subtitle data should be found by adding the offset 0x2230C8 to 0x03BCA0, the file header&#039;s address for the data block, to get 0x25ED68. We&#039;re going to leave the full details of the data block for later, but below is the data you should actually see for the English Oni SUBT file at this address. You have to consult the [[SUBT]] page to know how to read this data.&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x08 | char[16] | | AD DE       | dead        | unused }}&lt;br /&gt;
{{OBDtr| 0x18 | offset   | | 80 44 44 01 | 0x01444480  | raw file data address }}&lt;br /&gt;
{{OBDtr| 0x1C | int32    | | 61 02 00 00 | 609         | array size }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After &#039;&#039;&#039;padding&#039;&#039;&#039; of 16 unused bytes, we find that, instead of data, there&#039;s an address of the actual data: it&#039;s in the level&#039;s raw file. Open level0_Final.raw and jump to address 0x01444480, and you should see &amp;quot;01_01_01 Griffin: Give me another reading.&amp;quot;, and the rest of some very familiar dialogue continuing from there.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;array size&#039;&#039;&#039; of 609 tells the part of the engine that reads SUBT data to expect a chunk of 609 subtitled lines of dialogue.&lt;br /&gt;
&lt;br /&gt;
==Name descriptors==&lt;br /&gt;
The name descriptor array starts immediately after the instance descriptors array. To find the end of the instance descriptors, we can simply take the size of an instance descriptor, 20 bytes, and multiply it by the number of instance descriptors in the file header. In this case, that means 20 * 9347 = 186940, or 0x02DA3C. Adding that to 0x40 (the start of the instance descriptors) takes us to address 0x02DA7C. Voila, the start of the name descriptors.&lt;br /&gt;
&lt;br /&gt;
The name descriptor array stores the numbers of all named instances in the alphabetical order by said names, which are found in the name block but also pointed to by these entries. This array is used by the engine to look up instances by name; it&#039;s also used to find instances by template (scanning just the tag at the start of each name). The purpose of this array being alphabetized was to allow the engine to do a binary search to find instances by name more quickly, but the retail engine no longer attempts a binary search and merely iterates over the array from start to end.&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | int32   | | 15 16 00 00 | 5653      | instance descriptor index }}&lt;br /&gt;
{{OBDtr| 0x04 | int32   | | 60 2C 1C 0E | (garbage) | runtime: pointer to instance name }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The index number here is referring to the instance&#039;s position in the instance descriptor array. This number is also used by the data block to identify each instance, thus it is found in two places in the data explicitly and one place implicitly.&lt;br /&gt;
&lt;br /&gt;
Since the addresses of the names in memory cannot be known until the file is loaded into RAM, a space of 32 bits is reserved for each pointer at runtime.&lt;br /&gt;
&lt;br /&gt;
==Template descriptors==&lt;br /&gt;
Likewise, the template descriptor array starts directly after the name descriptors. Since name descriptors are 8 bytes, 8 * 7124 (taken from the header) = 56992, or 0xDEA0, and adding that to the name descriptor array&#039;s start address (0x02DA7C) gives us 0x03B91C as the start of the template descriptors.&lt;br /&gt;
&lt;br /&gt;
The template descriptor array contains information about all templates (that is, resource types, aka tags), used in the file (56 in this case, as we learned from the file header). Any resource occurring in this instance file has to have its type listed here. Here is the template descriptor at 0x3B9FC:&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | int64   | | 3C B9 A6 71 08 00 00 00 | 0x871A6B93C | template checksum }}&lt;br /&gt;
{{OBDtr| 0x08 | tag     | | 45 47 52 54             | &#039;EGRT&#039;      | template tag }}&lt;br /&gt;
{{OBDtr| 0x0C | int32   | | 01 00 00 00             | 1           | unused: number of resources in file that use this template }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;template checksum&#039;&#039;&#039; is used to prevent loading of instance files that are not compatible with the current engine version. The &#039;&#039;&#039;tag&#039;&#039;&#039; is the same kind of number-written-as-backwards-ASCII that we discussed in the &amp;quot;Backwards and garbage data&amp;quot; section; in this case, &#039;EGRT&#039; means [[TRGE]]. The field for the &#039;&#039;&#039;number of resources&#039;&#039;&#039; using this template is unused. The number should be correct for each template, but Oni never uses it for anything.&lt;br /&gt;
&lt;br /&gt;
You might wonder how Oni knows how to read each type of data, such as a SUBT or an ABNA. The simple answer is that this information is hard-coded into Oni. In fact, the information on each instance type, as stored in Oni&#039;s code, is actually the real &amp;quot;template&amp;quot;. The file data merely gives the tag and checksum that identify the template in use so that Oni knows how to read the following data fields. These hardcoded templates also tell Oni which parts of the file data are reserved for pointers.&lt;br /&gt;
&lt;br /&gt;
That&#039;s because an instance may have pointers to other related instances, but pointers are only valid in memory; they cannot be stored meaningfully on disk. They must be set at runtime when the level data is loaded into memory and an address in RAM has been assigned. Thus one type of data field in Oni&#039;s templates is a &amp;quot;raw data&amp;quot; pointer; on Macs and the Windows demo, there is an additional &amp;quot;separate data&amp;quot; pointer. These pointers are 32 bits in length, as one must expect since Oni was compiled for 32-bit PCs.&lt;br /&gt;
&lt;br /&gt;
Incidentally, the templates in Oni&#039;s code have not just the familiar four-character tags attached to them, but also a descriptive string, e.g. &amp;quot;BSP Tree Node Array&amp;quot;. These strings were typed into the source code where each template structure was defined, and eventually extracted from the binary by modders. This is the source of the names on [[OBD:File types]].&lt;br /&gt;
&lt;br /&gt;
==Data block==&lt;br /&gt;
The data block occupies the majority of the file and stores all the instance data (though this data sometimes points to the location of more data in a raw/separate file). We peeked at this block before when we looked at the instance descriptor for SUBTsubtitles. The block&#039;s starting point is found at the offset given in the header, in this case 0x03BCA0, saving us the trouble of adding up the size of the four preceding segments of the file and then aligning to the next 32-byte boundary.&lt;br /&gt;
&lt;br /&gt;
The reason we&#039;d need to align to 32 bytes is that the start of each instance&#039;s record (the instance ID) is always 32 byte-aligned. Thus, even though the template descriptors ended at 0x03BC9C, there are four empty bytes here so that the data block can begin at 0x03BCA0, which divides evenly by 32. This alignment rule also means that the instance-specific data will always start at an offset like 0x0008, 0x0028, 0x0148, etc. &lt;br /&gt;
&lt;br /&gt;
The instance ID and file ID are not actually part of the instance data but are considered to be the resource header. The engine always keeps pointers to the start of the type-specific data itself; we saw this before when we jumped to 0x25ED68 and saw the data for the SUBT rather than the header for this data. The instance ID and file ID are accessed using negative offsets when needed (usually to find the name or template tag of an instance, given a pointer to it).&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | res_id  | | 01 0B 04 00 | 1035 | instance descriptor index }}&lt;br /&gt;
{{OBDtr| 0x04 | lev_id  | | 01 00 00 06 |    3 | level number }}&lt;br /&gt;
{{OBDtr| 0x08 | ...     | | ...         | ...  | type-specific data... }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This example is taken from level 3 so that the file ID is more instructive. In the OBD documentation, these fields are called res_id and lev_id as seen above.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;instance&#039;s ID&#039;&#039;&#039; is stored as &amp;quot;(instance descriptor index &amp;lt;&amp;lt; 8) | 1&amp;quot;. Thus the ID for item #1,035 (0x40B) in the instance descriptor index will be encoded as 0x40B01. The official purpose of the &#039;1&#039; is that it was a marker used by the engine at runtime signifying that this instance ID had already been converted to a pointer to a live instance in memory (an instance pointer will always be 8-byte aligned, so it will never have the zero bit set). These pointer flags were retained when the file was written to disk, where they seemingly serve no purpose, but in fact they allow us to differentiate link fields which are truly unused (all zeroes) from a link field which points to instance #0 (since this would be encoded as 01 00 00 00 on disk). At level-load time the flags are cleared and then set again when Oni allocates memory for each instance. The purpose of left-shifting the index number is simply to leave the lowest byte open for the pointer flag.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;file ID&#039;&#039;&#039; is computed from the number found in the name of the instance file: &amp;quot;(level number &amp;lt;&amp;lt; 25) | 1&amp;quot;. Thus instances found in level3_Final.dat will have the file ID encoded as 0x6000001. Again, the &#039;1&#039; was used by the engine at runtime to know which file IDs had been converted to pointers at runtime, but it does allow us to tell the difference between a reference to level0_Final (01 00 00 00) and a file ID field that has somehow not been filled in (though this should not happen). The reason for left-shifting the level number so far might have originally been to store it alongside the instance ID and the pointer flag in a single int32, but they are separate int32s now, perhaps so that both IDs can have their own pointer flag.&lt;br /&gt;
&lt;br /&gt;
After the header, the size of each instance&#039;s data is of a somewhat arbitrary length depending on the template this instance falls under. As mentioned under &amp;quot;Instance descriptors&amp;quot;, the data size given by the descriptor includes the 8-byte resource header and the padding at the end of the data to align the next instance on 32 bytes.&lt;br /&gt;
&lt;br /&gt;
===Looking backward from data to instance===&lt;br /&gt;
By the way, if you pick a random place in the data block to look at with a hex editor, how do you know which resource you&#039;re looking at? You would look for the highest data offset in the instance descriptor array that is less than your position in the file. Let&#039;s say that the string at 0x3BD40 caught our eye: &amp;quot;powerup_ammo&amp;quot;. Subtracting the start of the data block, 0x3BCA0, gives us 0xA0 as the position of this string. Now looking back at the instance descriptor array, the instances&#039; data offsets occur every 20 bytes and come directly after the tags. We can see that the first data offset is 0x8 and the next one is 0xF68, thus our offset into the data block of 0xA0 means we are looking at the instance which starts at 0x8. It&#039;s the very first instance listed at the start of the instance descriptor array:&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | tag     | | 53 47 4E 4F | &#039;ONGS&#039;  | template tag }}&lt;br /&gt;
{{OBDtr| 0x04 | int32   | | 08 00 00 00 | 0x08    | data offset (relative to data block) }}&lt;br /&gt;
{{OBDtr| 0x08 | int32   | | 00 00 00 00 | 0x00    | name offset (relative to name block) }}&lt;br /&gt;
{{OBDtr| 0x0C | int32   | | 60 0F 00 00 | 3936    | data size }}&lt;br /&gt;
{{OBDtr| 0x10 | int32   | | 00 00 00 00 | 0       | flags }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
So this tells us that the first data in the data block belongs to the solitary [[ONGS]] resource, and that it extends for 3,936 bytes. Since its name offset is 0x0, it&#039;s the first string in the name block, which we can see below is SUBTsubtitles.&lt;br /&gt;
&lt;br /&gt;
==Name block==&lt;br /&gt;
This final segment of the file (third-to-last in a .oni, followed by the data and raw/sep blocks) stores all the instance names as C-style ASCII strings (terminated by a zero byte). We peeked at this before when we looked at the instance descriptor for SUBTsubtitles. The start of this block is 32-byte aligned but after that the strings are simply packed end to end, separated only by their null terminator. As with the data block, the name block&#039;s starting point is given in the header, in this case 0x28F240.&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | string  | | 53 55 ... 00 | &amp;quot;SUBTsubtitles&amp;quot; | name string (zero-terminated) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These names can be up to 63 characters long, counting the tag. The instance file concludes with the end of the name block, or the raw/sep block in a .oni file.&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Validate_External_Links/Exceptions&amp;diff=47177</id>
		<title>Validate External Links/Exceptions</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Validate_External_Links/Exceptions&amp;diff=47177"/>
		<updated>2026-04-19T22:59:21Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If the Validate External Links script is mis-reporting certain external links as issues when they actually work fine or when the link has to be presented that way for a specific reason, add them here in order to exempt them from ValExtLinks&#039; reports. The list is sorted by wiki page name for convenience. Each line supports four comma-separated fields, the first three required:&lt;br /&gt;
#The response code that ValExtLinks should expect. For NG and RD links, this should be the exact HTTP response code or the &#039;curl&#039; result code, whichever applies. You can also put &amp;quot;IW&amp;quot; or &amp;quot;EI&amp;quot; here to exempt a warning about an interwiki or external internal link.&lt;br /&gt;
#The recurring &amp;quot;problem&amp;quot; link. Place a &#039;*&#039; as a wildcard at the end of a URL to match multiple links.&lt;br /&gt;
#The wiki page that this link is appearing on. Use the proper page name, i.e. underscores where the displayed name has spaces. To exempt this link from Val&#039;s report regardless of what page it appears on, put a &#039;*&#039; here.&lt;br /&gt;
#(optional) A comment explaining the exception. The only requirements are that the comment be separated from the previous field by a space and that you don&#039;t use any commas. The &amp;quot;--&amp;quot;s used below are only for human readability.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BEGIN LIST&lt;br /&gt;
403,https://dotnet.microsoft.com/en-us/download/dotnet-framework,*&lt;br /&gt;
403,https://dev.epicgames.com/*,*&lt;br /&gt;
403,https://*.blender.org/*,*&lt;br /&gt;
403,https://*.fandom.com/*,*&lt;br /&gt;
403,https://*.gamespot.com/*,*&lt;br /&gt;
403,https://www.rnd.de/*,*&lt;br /&gt;
403,https://wikis.khronos.org/opengl/History_of_OpenGL,AE:ONK/EXE&lt;br /&gt;
403,https://www.gamefront.com/games/jedi-knight-iii/file/major-kusanagi,AE_talk:BGI&lt;br /&gt;
403,https://www.java.com/en/download/,Anniversary_Edition&lt;br /&gt;
403,https://binarygroup.com/,BGI&lt;br /&gt;
403,https://x.com/craigmullins3/status/1920384911292207363,Category:Art_by_Craig_Mullins&lt;br /&gt;
403,https://x.com/mehvechan,Category:Art_by_Lorraine_Reyes&lt;br /&gt;
403,https://x.com/Quantum_Sheep/status/1473397180535029760,Category:Oni_(WAP)_game_images&lt;br /&gt;
403,https://www.artstation.com/artwork/D9d2o,Duality&lt;br /&gt;
403,https://www.artstation.com/artwork/Jl8YXa,Duality&lt;br /&gt;
403,https://www.artstation.com/artwork/4bNKW4,Duality&lt;br /&gt;
403,https://www.artstation.com/artwork/l9g5V,Duality&lt;br /&gt;
301,http://translate.google.com/#en%7Cja%7CChrysalis,File:Daodan_Chrysalis_in_Chinese.png&lt;br /&gt;
403,https://www.artstation.com/artwork/4bNKW4,File:Duality_concept_art_-_BioCorp_VR_avatar.jpg&lt;br /&gt;
EI,https://wiki.oni2.net/Special:ListFiles?limit=500&amp;amp;ilsearch=Fallen,File:Fallen_Enemies.jpg -- EI link is necessary because this special page can&#039;t take these parameters when linked to internally&lt;br /&gt;
403,https://www.fab.com/listings/a1fe637c-ef4d-45de-9a21-9a377d06dee1,File:KatiaVersusKonokoFront.png&lt;br /&gt;
403,https://x.com/mehvechan/status/556178295612391425,File:Lorraine_Reyes_with_Konoko_Fully_Armed_standup.jpg&lt;br /&gt;
000-92,https://www.adobe.com/products/catalog.html#category=3d-ar,Fuse&lt;br /&gt;
000-92,https://helpx.adobe.com/beta/fuse/faq.html,Fuse&lt;br /&gt;
404,https://www.autodesk.com/products/fbx/overview,Importing_character_models&lt;br /&gt;
000-92,https://www.adobe.com/creativecloud/plans.html,Media_creation_with_artificial_intelligence&lt;br /&gt;
EI,http://wiki.oni2.net/Main_Page,MediaWiki:Vector -- necessary EI link to demonstrate circular arrow&lt;br /&gt;
EI,http://wiki.oni2.net/Main_Page,MediaWiki:Vector-2022 -- necessary EI link to demonstrate circular arrow&lt;br /&gt;
404,https://www.autodesk.com/products/softimage/overview,Mod_Tool&lt;br /&gt;
403,https://www.guru3d.com/download/rtss-rivatuner-statistics-server-download,Mouse_control_issues&lt;br /&gt;
403,https://www.vgmpf.com/Wiki/index.php?title=Brian_Salter,Music&lt;br /&gt;
403,https://www.supreme-network.com/midis/browse/O/3494-oni/13574-konoko-chase,Music/Fanmade&lt;br /&gt;
403,https://wikis.khronos.org/opengl/S3_Texture_Compression,OBD:TXMP&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/0000891554-00-000145.txt,Oni&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/000112528202003845/b320556.htm,Oni&lt;br /&gt;
403,https://www.artelino.com/articles/japanese_mythology.asp,Oni_(myth)&lt;br /&gt;
403,https://pcsx2.net/,Oni_(PlayStation_2)&lt;br /&gt;
000-28,https://mega.nz/#!x9oHxaLZ!-bOo-wwdj1fh925DYv1Qc6ErDSRl2HEgtWC-i2FtxtY,Oni_2_(Angel_Studios) -- Mega doesn&#039;t seem to like &#039;curl&#039;&lt;br /&gt;
403,https://pcsx2.net/,Oni_2_(Angel_Studios)/Running&lt;br /&gt;
000-28,https://www.echeat.com/free-essay/Symbolism-in-Fahrenheit-451-by-Ray-Bradbury-29746.aspx,Oni2:Phoenix&lt;br /&gt;
403,https://www.telegraph.co.uk/news/newstopics/howaboutthat/3328480/Otto-the-octopus-wrecks-havoc.html,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://featuredcreature.com/from-dangerous-fluff-to-bunny-stuff/,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,http://www.conoserver.org/,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.cracked.com/article_19988_the-5-most-nightmarish-worms-planet.html,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.cracked.com/article_20078_5-weird-directions-human-evolution-could-have-taken.html,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.treehugger.com/rare-interspecies-play-observed-between-dolphins-and-whales-4857038,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://ocean.si.edu/ocean-life/invertebrates/zombie-worms-crave-bone,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.viator.com/tours/Rio-de-Janeiro/Niteroi-City-Tour-and-Contemporary-Art-Museum-Admission/d712-8753P7,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.cracked.com/article_17562_5-horrifying-apocalyptic-scenarios-that-have-already-happened.html,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.cracked.com/article_19678_6-abandoned-places-that-will-make-awesome-supervillain-lairs.html,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.peninsula.com/en/newsroom/hong-kong,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.nexusmods.com/games/oni,OniGalore:Community_portal&lt;br /&gt;
302,http://www.gnu.org/copyleft/fdl.html,OniGalore:Copyrights&lt;br /&gt;
403,https://www.sfgate.com/entertainment/article/WOMEN-WARRIORS-Forget-Lara-Croft-the-new-3240096.php,Press_coverage&lt;br /&gt;
403,https://x.com/robinalexander_/status/1872960359696376127,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
000-92,https://www.washingtonpost.com/news/wonk/wp/2015/08/27/trump-the-bible-means-a-lot-to-me-but-i-dont-want-to-get-into-specifics/,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://x.com/elonmusk/status/1882406209187409976,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.president.gov.ua/documents/6792022-44249,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.golem.de/news/kritik-an-nasa-musk-will-direkt-zum-mars-fliegen-2501-192128.html,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.axios.com/2025/01/23/elon-musk-nazi-joke-adl,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.axios.com/2022/05/02/mark-esper-book-trump-protesters,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.golem.de/news/kuenstliche-intelligenz-grok-3-veraergert-maga-anhaenger-2505-195906.html,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.luzernerzeitung.ch/kultur/debatte-das-ende-des-westens-ist-da-was-heisst-das-fuer-die-schweiz-und-europa-ld.2751339,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.ndtv.com/world-news/transgender-vs-transgenic-mice-row-over-donald-trumps-animal-experiments-claim-7867258,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
000-92,https://www.washingtonpost.com/archive/politics/1997/04/24/russia-china-sign-new-friendship-pact/896539b8-c583-44f2-8a73-095cbad1e784/,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.economist.com/by-invitation/2022/03/11/john-mearsheimer-on-why-the-west-is-principally-responsible-for-the-ukrainian-crisis,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.nytimes.com/2025/09/18/us/politics/trump-fcc-licenses.html,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
000-92,https://www.washingtonpost.com/national-security/2025/09/18/trump-taiwan-arms-sales-military-aid/,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://x.com/LAGovJeffLandry/status/2002950029494124986,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.derstandard.de/story/3000000301573/putin-gab-sich-bei-seiner-jahrespressekonferenz-wieder-einmal-volksnah,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.politico.com/news/2025/06/02/pentagon-greenland-northern-command-00381223,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
303,https://link.springer.com/article/10.1007/s41748-026-01073-y,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.oeaw.ac.at/news/wie-die-wasserkrise-teheran-unter-druck-setzt,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.golem.de/news/abschreckungspolitik-taiwan-will-tsmc-fabriken-nicht-von-usa-bombardieren-lassen-2305-174057.html,Restless_Souls/Glossary/de&lt;br /&gt;
000-92,https://www.washingtonpost.com/archive/politics/1997/04/24/russia-china-sign-new-friendship-pact/896539b8-c583-44f2-8a73-095cbad1e784/,Restless_Souls/Glossary/de&lt;br /&gt;
403,https://www.economist.com/by-invitation/2022/03/11/john-mearsheimer-on-why-the-west-is-principally-responsible-for-the-ukrainian-crisis,Restless_Souls/Glossary/de&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/uwl,Restless_Souls/Reconstruction&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/uwl,Restless_Souls/Reconstruction/Gapfilling&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/SSOB,Restless_Souls/Reconstruction&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/SSOB,Restless_Souls/Reconstruction/Gapfilling&lt;br /&gt;
000-92,https://www.washingtonpost.com/national-security/2025/08/31/trump-gaza-plan-riviera-relocation/,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://x.com/MEMRIReports/status/1721097018062606708,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://x.com/MedvedevRussiaE/status/1821967864947220777,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://www.nytimes.com/2024/07/24/world/middleeast/gaza-war-hepatitis-polio.html,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://www.researchgate.net/publication/262485473_The_Russia-China_Security_Partnership_in_the_Asia-Pacific_Region_Conjectural_and_Structural_Dimensions,Restless_Souls/Summary&lt;br /&gt;
403,https://www.forbes.com/sites/wadeshepard/2019/10/03/what-china-is-really-up-to-in-africa/,Restless_Souls/Summary&lt;br /&gt;
404,https://idw-online.de/de/attachmentdata8851.pdf,Restless_Souls/Technology&lt;br /&gt;
403,https://www.unrealengine.com/en-US,Restless_Souls/Wishlist&lt;br /&gt;
301,https://www.bungie.net/,Rights&lt;br /&gt;
403,https://tsdr.uspto.gov/caseviewer/assignments?caseId=75570211&amp;amp;docIndex=1&amp;amp;searchprefix=sn#docIndex=1,Rights&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/WPS,Talk:Hasegawa&lt;br /&gt;
403,https://www.ixbt.com/video2/tech_ss2.shtml,Talk:Oni_Model_Extractor&lt;br /&gt;
301,https://www.welt.de/debatte/kommentare/plus246585502/Niedergang-Deutschland-zeigt-der-Welt-wie-man-es-nicht-macht.html,Talk:Restless_Souls/Summary&lt;br /&gt;
302,https://www.derstandard.at/story/3000000190426/der-nahostkonflikt-in-oesterreichs-klassenzimmer,Talk:Restless_Souls/Summary&lt;br /&gt;
303,https://www.bmjv.de/DE/themen/menschenrechte/menschenrechte_node.html,Talk:Restless_Souls/Summary&lt;br /&gt;
403,https://www.researchgate.net/figure/S-curves-for-the-established-and-disruptive-technology-Performance_fig2_4899992,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://de.statista.com/statistik/daten/studie/1208627/umfrage/ausbreitung-von-corona-mutationen-in-deutschland/,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/haeufiger-als-andere-modelle-chatgpt-sabotiert-bei-tests-eigene-abschaltung-2505-196561.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/microsoft-studie-diese-berufe-veraendert-ki-am-staerksten-2508-198747.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/neue-ki-architektur-was-ist-baby-dragon-hatchling-2510-201047.html,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://www.forbes.com/sites/mattnovak/2023/04/11/elon-musk-working-on-ai-at-twitter-despite-calling-for-6-month-pause-report/,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://www.forbes.com/sites/ronschmelzer/2025/10/09/samsung-ai-research-team-builds-a-tiny-model-with-big-powe/,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.derstandard.de/story/3000000302571/neuralink-will-gehirn-chips-in-serie-fertigen-operationen-bald-automatisiert,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/claude-opus-4-6-ki-findet-ueber-500-zero-day-luecken-in-open-source-software-2602-205139.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/soziales-netzwerk-moltbook-entpuppt-sich-als-ki-trugbild-2602-205141.html,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://medium.com/@aloy.banerjee30/infinite-context-length-in-llms-the-next-big-advantage-in-ai-2550e9e6ce9b,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/hackerbot-claw-ki-agent-kapert-softwareprojekte-auf-github-2603-205990.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/unkontrollierbares-fehlverhalten-ki-agenten-werden-zu-immer-groesserem-insider-risiko-2603-206491.html,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://www.unrealengine.com/en-US/blog/a-first-look-at-unreal-engine-5,Talk:UnrealOni&lt;br /&gt;
404,https://www.autodesk.com/products/fbx/overview,Template:AutodeskFBX&lt;br /&gt;
000-92,https://www.adobe.com/creativecloud/plans.html,Template:Photoshop&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/0000891554-00-000145.txt,Timeline_of_development&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/000112528202003845/b320556.htm,Timeline_of_development&lt;br /&gt;
403,https://www.fab.com/listings/ef9651a4-fb55-4866-a2d9-1b38b028f9c7,UnrealOni/ALS&lt;br /&gt;
403,https://www.fab.com/listings/ef9651a4-fb55-4866-a2d9-1b38b028f9c7,UnrealOni/Tutorials&lt;br /&gt;
403,https://www.fab.com/listings/a1fe637c-ef4d-45de-9a21-9a377d06dee1,User:Geyser/CharacterTutorialMakeHumanToUE4&lt;br /&gt;
EI,https://wiki.oni2.net/Special:AllMessages?prefix=&amp;amp;filter=modified&amp;amp;lang=en&amp;amp;limit=50,User:Iritscen/WikiMods -- EI link is necessary&lt;br /&gt;
302,https://m.facebook.com/groups/186656799756?refid=27,User:Samer&lt;br /&gt;
403,https://www.speedrun.com/oni,Videos&lt;br /&gt;
403,https://www.computerhope.com/jargon/w/wildcard.htm,XmlTools&lt;br /&gt;
END LIST&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Support]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Oni_(no_relation)&amp;diff=47176</id>
		<title>Oni (no relation)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Oni_(no_relation)&amp;diff=47176"/>
		<updated>2026-04-19T22:58:52Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: link fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Bungie&#039;s game &#039;&#039;&#039;[[Oni]]&#039;&#039;&#039; is sometimes confused with other works and characters titled &amp;quot;Oni&amp;quot;. This isn&#039;t surprising considering the popularity of the [[Oni (myth)|Japanese mythical &#039;&#039;oni&#039;&#039;]]. Below we&#039;ve listed some prominent examples of other &amp;quot;Oni&amp;quot;s. Due to the shared inspiration, perhaps interesting similarities can occasionally be found.&lt;br /&gt;
&lt;br /&gt;
==Urusei Yatsura&#039;s Oni==&lt;br /&gt;
In this anime from 1981, &amp;quot;Oni&amp;quot; is the name of an alien race, but the name isn&#039;t mentioned much. What&#039;s more important is how the myth of the &#039;&#039;oni&#039;&#039; influenced the design of alien character Lum, so see {{SectionLink|Oni (myth)|Aliens}} for information.&lt;br /&gt;
&lt;br /&gt;
==ONI RPG series and OVA==&lt;br /&gt;
{| align=&amp;quot;right&amp;quot; style=&amp;quot;width:260px&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Toma Kijinden Oni - Misao and Akihito transformed.jpg|256px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Toma Kijinden Oni - Misao and Akihito normal.jpg|256px]]&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|In the OVA, Shuramaru meets two characters who can transform into oni like he can.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[wp:ja:ONIシリーズ|A classic RPG series]] created by Pandora Box, and once popular in Japan, depicted transforming heroes with beast forms. The series is primarily identified by its use of the [[wp:Romanization of Japanese|romanized]] &amp;quot;ONI&amp;quot; rather than the kanji 鬼. Hover over any text below with dotted underlining for a best-effort English translation.&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|GB&lt;br /&gt;
|1990-12-08&lt;br /&gt;
|鬼忍降魔録 ONI&lt;br /&gt;
|{{Hover|Oni Shinobu Komaroku ONI|text=Oni Ninja Demon Descent Record ONI}}&lt;br /&gt;
|-&lt;br /&gt;
|GB&lt;br /&gt;
|1992-02-28&lt;br /&gt;
|ONI II 隠忍伝説&lt;br /&gt;
|{{Hover|ONI II In&#039;nin Densetsu|text=ONI II Ninja Legend}} ({{Hover|cartridge photo|image=Oni II for the GameBoy.jpg}})&lt;br /&gt;
|-&lt;br /&gt;
|GB&lt;br /&gt;
|1993-02-23&lt;br /&gt;
|ONI III 黒の破壊神&lt;br /&gt;
|{{Hover|ONI III Kuro no Hakai-shin|text=ONI III Black God of Destruction}}&lt;br /&gt;
|-&lt;br /&gt;
|GB&lt;br /&gt;
|1994-03-11&lt;br /&gt;
|ONI IV 鬼神の血族&lt;br /&gt;
|{{Hover|ONI IV Kishin no Ketsuzoku|text=Oni IV Bloodline of Demon Gods}}&lt;br /&gt;
|-&lt;br /&gt;
|SNES&lt;br /&gt;
|1994-08-05&lt;br /&gt;
|鬼神降臨伝ONI&lt;br /&gt;
|{{Hover|Oni Kishin Korin-den ONI|text=Oni Demon God Advent Legend ONI}}&lt;br /&gt;
|-&lt;br /&gt;
|GB&lt;br /&gt;
|1995-03-24&lt;br /&gt;
|ONI V 隠忍を継ぐ者&lt;br /&gt;
|{{Hover|ONI V In-nin o Tsugu Mono|text=ONI V Ninja Inheritor}}&lt;br /&gt;
|-&lt;br /&gt;
|SNES&lt;br /&gt;
|1996-02-02&lt;br /&gt;
|幕末降臨伝ONI&lt;br /&gt;
|{{Hover|Bakumatsu Korin-den ONI|text=Bakumatsu Advent Legend ONI}}&lt;br /&gt;
|-&lt;br /&gt;
|PS1&lt;br /&gt;
|2001-03-22&lt;br /&gt;
|ONI零〜復活〜&lt;br /&gt;
|{{Hover|ONI Rei ~Fukkatsu~|text=Oni Zero ~Resurrection~}}&lt;br /&gt;
|-&lt;br /&gt;
|DS&lt;br /&gt;
|2007-08-30&lt;br /&gt;
|ONI零 戦国乱世百花繚乱&lt;br /&gt;
|{{Hover|ONI Rei Sengoku Ransei Hyakka Ryoran|text=Oni Zero Sengoku Hundred Flower Turbulent Chaos}}&lt;br /&gt;
|-&lt;br /&gt;
|PS1&lt;br /&gt;
|canceled&lt;br /&gt;
|ONI零〜流転〜&lt;br /&gt;
|{{Hover|ONI Rei ~Ruten~|text=Oni Zero ~Fluidity~}}&lt;br /&gt;
|-&lt;br /&gt;
|Arcade&lt;br /&gt;
|1995&lt;br /&gt;
|{{Hover|隠忍 ーザニンジャマスター|text=also called おに ザ ニンジャマスター}}&lt;br /&gt;
|{{Hover|In&#039;nin/Oni —Za Ninja Masuta–|text=Hidden —The Ninja Master— or Oni —The Ninja Master— }}&lt;br /&gt;
|-&lt;br /&gt;
|TBA&lt;br /&gt;
|2027&lt;br /&gt;
|ONI零X&lt;br /&gt;
|{{Hover|ONI Zero Kurosu|text=Oni Zero Cross}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The one game that actually released for PlayStation came out in 2001 and was called ONI Zero ~Resurrection~; thankfully it wasn&#039;t for the PS2, which might have been confusing since [[:Image:Mac (JP) box art - front.jpg|Oni&#039;s Japanese box]] used a romanized &amp;quot;ONI&amp;quot; too. A 1995 arcade fighting game loosely based in the same universe was called Oni -The Ninja Master-. Despite the game&#039;s subtitle already being in katakana-ized English, it was released in the Western world with the inscrutable name [http://www.hardcoregaming101.net/metamoqester/ Metamoqester].&lt;br /&gt;
&lt;br /&gt;
Also in 1995, the game universe was the basis for an anime OVA called [https://www.animenewsnetwork.com/encyclopedia/anime.php?id=5374 Touma Kishinden Oni] ({{Hover|闘魔鬼神伝ONI|text=Tale of the Fighting Demon Demon God ONI}}) consisting of 25 10-minute episodes released on five discs. Incredibly obscure and hard to find, the opening can be seen [https://www.youtube.com/watch?v=Bi7ZZYCC4Qg here]. It&#039;s about a young warrior who has to come to terms with his inhuman nature and ability to transform into an &amp;quot;oni&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In 2025, a new game was announced for as-yet-unknown consoles. Expected in 2027, it will be the first new game in 26 years. Its name? Oni Zero X. This is the tenth title in the ONI series released for a home system, so the X may be intended as a Roman numeral. Make sure to see the image released with the announcement [https://www.famitsu.com/article/202509/53761 here]. Why does this seem so familiar?&lt;br /&gt;
&lt;br /&gt;
==Halo&#039;s ONI==&lt;br /&gt;
See {{SectionLink|Easter eggs|Halo}}.&lt;br /&gt;
&lt;br /&gt;
==Marathon (2026)&#039;s ONI==&lt;br /&gt;
See {{SectionLink|Easter eggs|Marathon (2026)}}.&lt;br /&gt;
&lt;br /&gt;
==AT-43&#039;s ONI Corporation==&lt;br /&gt;
[https://www.orderofgamers.com/games/at-43/ AT-43] was a sci-fi role-playing board game released in 2006 which told the story of several warring factions. One faction is called [https://www.orderofgamers.com/downloads/AT43ONI.pdf ONI], standing for Okamura Non-aligned Industries. They&#039;re a mercenary corporation that uses the O serum to create zombie soldiers and builds weapons based off any technology they can get their hands on, then sells them to the highest bidder in the war between the other factions of the game.&lt;br /&gt;
&lt;br /&gt;
Although the original publisher Rackham has been defunct since 2010, the rights to the company&#039;s games were [https://www.ontabletop.com/board-games/monolith-announce-rackham-companys-ip/ acquired by] Monolith Edition in 2024, another board game publisher, with the intent of putting the games back in production.&lt;br /&gt;
&lt;br /&gt;
{{Quote|Okamura Kazuo finally met his fate after eight months of work in his new service. He undertook an experiment with a highly-advanced viral strain and put it in the presence of a reagent he had invented.&lt;br /&gt;
[…]&lt;br /&gt;
The first signs of change that occurred in Okamura took place in the weeks which followed his traumatic experience. The virus changed, developing its own intelligence. The doctor soon discovered that he was inhabited by a gifted host of clear thought, able to speak using his mouth, and able to take partial control of his body. The virus’s personality merged with that of its host. The symbiosis was soon absolute: Okamura Kazuo literally became a new man: he was insensitive to pain, sleep was unnecessary, and all known diseases had no effect on him.&lt;br /&gt;
[…]&lt;br /&gt;
He revealed his secret only to those he felt able to succeed him, and soon began dreaming of being the pioneer of the next stage of human evolution.|width=50%}}&lt;br /&gt;
&lt;br /&gt;
==Ao Oni==&lt;br /&gt;
Ever since [[wp:Ao Oni|Ao Oni]] was released in 2008, it&#039;s had a tendency to usurp search results for the word &amp;quot;oni&amp;quot;. Intended to be read as &amp;quot;Blue Demon&amp;quot;, Ao Oni is based very loosely on the Japanese game of &#039;&#039;oni&#039;&#039;, which is equivalent to our game of tag. A child playing this game, once tagged, is called the &#039;&#039;oni&#039;&#039; instead of being called &amp;quot;it&amp;quot;, and must catch another player to make them the &#039;&#039;oni&#039;&#039;. Ao Oni, despite being a very low budget game, was somehow popular enough to get two live-action movies and a short anime series.&lt;br /&gt;
&lt;br /&gt;
==Street Fighter&#039;s Akuma Oni==&lt;br /&gt;
[https://streetfighter.fandom.com/wiki/Oni Oni] (sometimes called Akuma Oni or Oni Akuma for clarity) is a &amp;quot;demon&amp;quot; form of long-time Street Fighter character Akuma who has been corrupted by the dark energy of his martial art. He first appeared in Super Street Fighter IV (2011). There is also a [https://www.youtube.com/watch?v=AFTuABAn4i8 Pandora&#039;s Box variant of Oni] in Street Fighter X Tekken.&lt;br /&gt;
&lt;br /&gt;
==Agent of Mayhem&#039;s Oni==&lt;br /&gt;
[[wp:Agents of Mayhem|Agents of Mayhem]], a 2017 open-world action game set in the Saint&#039;s Row universe, has a cast of 12 playable characters including [https://www.youtube.com/watch?v=Ej9slYp6QAQ&amp;amp;t=220s Oni, a Japanese hitman].&lt;br /&gt;
&lt;br /&gt;
==ONI: Road to be the Mightiest Oni==&lt;br /&gt;
[[Image:ONI Episode Zero manga.jpg|256px|right]]&lt;br /&gt;
A 2023 Nintendo Switch title with [https://www.youtube.com/watch?v=358wiFqkx1w a very cute art style] but mixed reviews. A partial game description from the publisher: &amp;quot;The protagonist, Kuuta, attacks the enemy using his club. Kazemaru sucks the enemy&#039;s spirit out of its body, and by destroying that spirit, Kuuta can then claim victory. Enjoy an all-new, unique co-op experience by playing both Kuuta and Kazemaru at the same time! […] The player can also level up by running away from pursuing monsters, like a game of tag, and collecting mushrooms that grow in clusters to purchase upgraded clubs.&amp;quot;&lt;br /&gt;
&lt;br /&gt;
The main character is himself an oni, a demon warrior, and it seems that his goal is to absorb other oni to get stronger. The children&#039;s game of tag, called &#039;&#039;oni&#039;&#039; as mentioned under &amp;quot;Ao Oni&amp;quot; above, is also somehow a part of the gameplay.&lt;br /&gt;
&lt;br /&gt;
==Oxygen Not Included==&lt;br /&gt;
A survival game set in a space colony, released in 2019 by Klei Entertainment. No connection to the concept of the Japanese oni, but abbreviated to &amp;quot;ONI&amp;quot; often enough that it competes for attention with Oni in search engine results. People post on our Oni subreddit asking for help with that game. We even had to expand our Discord server&#039;s name to &amp;quot;Oni (Bungie, 2001)&amp;quot; to cut down on confused Oxygen fans joining the server.&lt;br /&gt;
[[Image:Oni confusion.jpg|center|900px]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Real World]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OniX&amp;diff=47159</id>
		<title>OniX</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OniX&amp;diff=47159"/>
		<updated>2026-04-19T01:55:09Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: actually forgot why I chose 192; it didn&amp;#039;t come out of a hat&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|style=&amp;quot;float:right;&amp;quot; border=1 cellspacing=0&lt;br /&gt;
|[[Image:OniX icon.png|center|128px]]&lt;br /&gt;
{|cellspacing=3&lt;br /&gt;
!colspan=&amp;quot;2&amp;quot;|OniX&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Developer:&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|Team Chrysalis&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;|&#039;&#039;&#039;Version:&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|{{/Change log}}&amp;lt;br&amp;gt;[[/Change log|Change log]]&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;|&#039;&#039;&#039;Supports:&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;right&amp;quot;|Windows 98–Windows 11&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; align=&amp;quot;right&amp;quot;|Linux via Wine&amp;lt;ref&amp;gt;Linux can run OniX through Wine without any special configuration; see [[Playing in Linux]].&amp;lt;/ref&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; align=&amp;quot;right&amp;quot;|(Mac support coming later)&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&#039;&#039;&#039;Bug reporting:&#039;&#039;&#039;&lt;br /&gt;
|&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot; align=&amp;quot;right&amp;quot;|#oni-general channel on {{Discord|label=Discord}}&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;OniX&#039;&#039;&#039; is a fan-made rebuild of the [[Oni]] game application, yielding new possibilities for Oni in terms of modding, new engine features, and maintenance for modern operating systems. The initial v1.0 release is intended to replicate &amp;quot;vanilla&amp;quot; Oni as closely as possible while fixing compatibility issues with current operating systems and modern hardware (including HDPI&amp;lt;ref&amp;gt;High DPI, typically defined as a minimum of 220-240 dpi.&amp;lt;br&amp;gt;For an HDPI display, a backing scale above 1x is commonly used (where &amp;quot;1x&amp;quot; means a 1:1 ratio of physical pixel to logical point); this means that controls, text, and everything else on-screen is drawn with more pixels in order to prevent the screen contents from becoming too tiny.&amp;lt;br&amp;gt;The Retina displays on Macs with built-in screens use a 2x (4:1 pixels-per-point) scaling factor. A display in Microsoft Windows which is set to use scaling above 100% raises the effective DPI by using a fractional backing scale, e.g. 125% = 1.25x.&amp;lt;br&amp;gt;In Windows, OniX queries the monitor&#039;s effective DPI at its current scaling, and treats any effective DPI ≥ 192 as a 2x backing scale (because 96 dpi is the default in Windows). Setting OniX to a resolution of &amp;quot;1280x960&amp;quot; on such a display will create a 640x480-point window which is drawn with a 2x scaling factor, containing 1280x960 pixels of content.&amp;lt;/ref&amp;gt; and HRR&amp;lt;ref&amp;gt;High Refresh Rate, that is, anything above 60 Hz. OniX corrects timing issues and input issues which Oni.exe experienced at high refresh rates.&amp;lt;/ref&amp;gt; displays) and upgrading to a new game data versioning system that will make future improvements easier to roll out. A legacy build is offered which will run in anything from Windows 98 to Windows 8. It does this by not supporting certain features of modern Windows which don&#039;t impact older computers anyway, e.g. HDPI support.&lt;br /&gt;
&lt;br /&gt;
==Limitations==&lt;br /&gt;
OniX does not (yet) support the [[Anniversary Edition]] modding system or implement any features/fixes of the [[Daodan DLL]]. Oni localizations with text in non-English scripts (European, Asian, Cyrillic) will not display correctly, and AE mods with large textures (above 256x256 px) or 32-bit transparency will not work. The features of the Daodan DLL, including full support of AE mods, will be brought to OniX over the following one or two releases.&lt;br /&gt;
&lt;br /&gt;
==Requirements==&lt;br /&gt;
*A retail copy of Oni for Windows or Mac. OniX can also run from the Windows demo data without any conversion if you rename the demo&#039;s GameDataFolder to GameDataFolderX. &lt;br /&gt;
*.NET Framework 3.5. To install it, type &#039;features&#039; in the Windows menu, choose &amp;quot;Turn Windows features on or off&amp;quot;, and configure the settings like [[:Image:NET selection.png|this]]; you can download 3.5 [https://dotnet.microsoft.com/en-us/download/dotnet-framework here] if you don&#039;t see it as an option.&lt;br /&gt;
*The game data will need to be converted before using OniX for the first time (instructions for this are in the download). However, the data conversion script does not support Windows 98 or Me, so the game data will need to be converted in a newer OS and then copied to a system running one of those OSes.&lt;br /&gt;
&lt;br /&gt;
==Download==&lt;br /&gt;
Mod Depot page: [http://mods.oni2.net/node/390 OniX (Windows)]&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Patches]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Engine_terminology&amp;diff=47151</id>
		<title>Engine terminology</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Engine_terminology&amp;diff=47151"/>
		<updated>2026-04-17T21:48:34Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: mentioned when PS2 port started; added Particle3 to the list of our favorite subsystems; corrected my rusty Latin&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UpdatedForOniX|1.0.0}}&lt;br /&gt;
Here is a high-level view of the different versions of the Oni engine and a brief introduction to some of the subsystems in the engine. It&#039;s meant to be read in tandem with [[Game data terminology]]. For a list of general differences between the Windows, Mac and PS2 versions of Oni, see [[PS2 vs PC]] and [[Mac vs PC]].&lt;br /&gt;
&lt;br /&gt;
==Engine versions==&lt;br /&gt;
There are three versions of Oni&#039;s engine found in released versions of the game. They are referred to interchangeably by various names.&lt;br /&gt;
;Windows retail, Windows, PC, v1.0&lt;br /&gt;
This version of the engine can be identified as &#039;&#039;&#039;v1.0&#039;&#039;&#039; from [[Oni (folder)/readme.txt|its read-me]] but is often referred to as the &amp;quot;Windows&amp;quot; or &amp;quot;PC&amp;quot; engine. This version of the engine was used for all localized Windows releases translated into non-English languages as well.&lt;br /&gt;
&lt;br /&gt;
;Mac, Windows demo, v1.1&amp;lt;!--, OniX--&amp;gt;&lt;br /&gt;
This version was used for Mac retail and demo releases and can be identified as &#039;&#039;&#039;v1.1&#039;&#039;&#039; from [[Oni (folder)/Oni ReadMe|the Mac read-me]], and underwent another month of development after v1.0. It was also used for the Windows demo, but is sometimes referred to as the &amp;quot;Mac&amp;quot; engine for simplicity. &amp;lt;!--[[OniX]] is built on this version of the engine.--&amp;gt; Its most obvious difference is the addition of .sep files to the GameDataFolder which now contain some of the data formerly stored in .raw files. The format of the individual templates is generally unchanged (with minor differences in [[SNDD]] and [[TRAM]]).&lt;br /&gt;
&lt;br /&gt;
;PS2&lt;br /&gt;
This version was created by Rockstar North for the PlayStation 2 port. It also uses .sep files but makes additional changes to templates ([[AGQG]], [[IGSt]], [[M3GM]], [[SNDD]], [[TRAM|TRAM/TREX]], [[TSFT]], [[TSGA]] and [[TXMP]]). It went through another 3-4 weeks of development after the Mac version was completed, besides have been developed in parallel with Bungie West&#039;s version of the engine starting in early 2000, and could possibly be thought of as a v1.2 engine, but is probably best understood as a fork of the v1.1 engine made for PS2 compatibility.&lt;br /&gt;
&lt;br /&gt;
==Subsystems==&lt;br /&gt;
The engine consists of various subsystems, some of which have colorful animé-related names and some of which have boring descriptive names. If an article is devoted to documenting more of that subsystem, it will be linked.&lt;br /&gt;
&lt;br /&gt;
;AI2&lt;br /&gt;
The second iteration of the code for driving the [[AI|AIs]] (NPCs).&lt;br /&gt;
&lt;br /&gt;
;Akira&lt;br /&gt;
The [[Graphics|environment]] code, responsible for holding the game world in memory. Named for the 1988 film [[wp:Akira (1988 film)|Akira]].&lt;br /&gt;
&lt;br /&gt;
;BFW&lt;br /&gt;
A layer rather than a subsystem: stands for &amp;quot;BungieFrameWork&amp;quot;. This is the lower layer of the game engine, consisting of generalized cross-platform engine code. The upper layer is simply called &amp;quot;Oni&amp;quot; and contains specializations needed to implement Oni&#039;s gameplay logic.&lt;br /&gt;
&lt;br /&gt;
;BSL&lt;br /&gt;
Standing for &amp;quot;BFW Scripting Language&amp;quot;, this is the subsystem responsible for running Oni&#039;s [[BSL|scripting language]].&lt;br /&gt;
&lt;br /&gt;
;Motoko&lt;br /&gt;
The renderer code, responsible for drawing Oni&#039;s [[graphics]]. Named for the main character of the 1995 film [[Ghost in the Shell]].&lt;br /&gt;
&lt;br /&gt;
;Particle3&lt;br /&gt;
The third iteration of the particle code, responsible for special effects and weapon projectiles. Often called PAR3 for short due to the [[PAR3]] template tag.&lt;br /&gt;
&lt;br /&gt;
;Totoro&lt;br /&gt;
The code for Oni&#039;s 3D [[Animation|animation system]]. Named for the 1988 film [[wp:My Neighbor Totoro|My Neighbor Totoro]].&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;Et alii&#039;&#039;&lt;br /&gt;
There are various other subsystems that we essentially never talk about, such as LocalInput, WindowManager, SoundSystem2 and TemplateManager.&lt;br /&gt;
&lt;br /&gt;
[[Category:Engine docs]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Timeline_of_development&amp;diff=47150</id>
		<title>Timeline of development</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Timeline_of_development&amp;diff=47150"/>
		<updated>2026-04-17T21:43:12Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: added date of PS2 port announcement&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hatnote|For the full story of Oni&#039;s development, see [[Oni]]. For detailed information on the continued updates for Mac after release, see [[History of Mac Oni]].}}&lt;br /&gt;
The Oni project started development in April of 1997 and ran for approximately 3 years, 9 months, ending in January of 2001. Through this time, the [[Bungie West]] team ran into unexpected technical and design hurdles, resulting in a much longer development period than planned. The initial internal deadline for the game, October 1999, was gradually pushed back quarter by quarter until the game was finished in the time period from November 2000 to January 2001, depending on the platform.&lt;br /&gt;
&lt;br /&gt;
The development of the game was accompanied by unexpected events such as a financial blow to Bungie from the Myth II uninstaller bug, a partial buyout by Take-Two Interactive, turnover on the staff and a change of project lead, and then a complete buyout by Microsoft. Only a sustained crunch period at the end of development, pushing Bungie West to their limits, allowed the game to be finished to a degree where it was ready to ship, and cuts to the game were still required such as the removal of multiplayer mode.&lt;br /&gt;
&lt;br /&gt;
The dates below are sometimes approximate but are mostly supported by hard evidence, as seen in the citations.&lt;br /&gt;
&lt;br /&gt;
{{Timeline&lt;br /&gt;
|event1date=Apr. 2, 1997&lt;br /&gt;
|event1text=Engine quietly begins development under Brent Pease per dates in source code&amp;lt;br&amp;gt;Projected release date is &amp;quot;October 1999&amp;quot;{{ref|note=See [[Oni/Positioning]]}}&lt;br /&gt;
|event2date=July 1997&lt;br /&gt;
|event2text=Bungie West announces they are hiring{{ref|note=[https://marathon.bungie.org/story/blastfromthepast.html Marathon Story Page: Blasts from the Past]. Note that [https://marathon.bungie.org/story/BungieWest/job.html this copy of the Bungie West job ad] is stated to have the wrong date at the bottom of the page.}}&lt;br /&gt;
|event3date=Dec. 31, 1997&lt;br /&gt;
|event3text=Bungie West gets their content authoring pipeline working{{ref|note=[http://web.archive.org/web/20010302193919/http://www.insidemacgames.com/previews/99/oni/oni2.shtml Inside Mac Games: &amp;quot;Sneak Preview: Oni&amp;quot;]}}&lt;br /&gt;
|event4date=May 28, 1998&lt;br /&gt;
|event4text=Oni is announced along with Myth II at E3{{ref|note=[https://marathon.bungie.org/story/blastfromthepast.html Marathon Story Page: Blasts from the Past]. Note that [https://web.archive.org/web/20000422020741/http://pc.ign.com/news/5839.html this official press release] was months late.}}{{ref|name=&amp;quot;monsters&amp;quot;|note=[https://chicagoreader.com/news/monsters-in-a-box/ Chicago Reader: &amp;quot;Monsters in a Box&amp;quot;]}}&lt;br /&gt;
|event5date=Dec. 28, 1998&lt;br /&gt;
|event5text=Myth II uninstaller bug is discovered, costs Bungie about $800,000{{ref|name=&amp;quot;monsters&amp;quot;}}&lt;br /&gt;
|event6date=May 14, 1999&lt;br /&gt;
|event6text=Oni appears at E3 with hands-on demo running in multiplayer mode{{ref|name=&amp;quot;mp&amp;quot;|note=See [[Multiplayer]] for video evidence}}&amp;lt;br&amp;gt;Release date is estimated as early 2000{{ref|note=[https://web.archive.org/web/20000817003431/http://www.insidemacgames.com/features/99/e3report/e3-2.shtml IMG: &amp;quot;Feature: The E3 Report - Page 2&amp;quot;]}}&amp;lt;br&amp;gt;&amp;quot;Blam&amp;quot; project is shown three days later to a select group behind closed doors{{ref|note=[https://web.archive.org/web/20000815110548/http://www.insidemacgames.com/features/99/e3report/e3.shtml IMG: &amp;quot;Feature: The E3 Report&amp;quot;]}}&lt;br /&gt;
|event7date=Jul. 21, 1999&lt;br /&gt;
|event7text=Oni appears at Macworld NY running in multiplayer mode{{ref|name=&amp;quot;mp&amp;quot;}}&amp;lt;br&amp;gt;Halo is announced{{ref|note=[https://marathon.bungie.org/story/Halo_press_release_21July99.html Bungie: &amp;quot;Halo Brings Action Gamers a World Without End&amp;quot;]}}&lt;br /&gt;
|event8date=Aug. 12, 1999&lt;br /&gt;
|event8text=Take-Two Interactive announces that it will purchase 19.9% stake in Bungie, becoming the distributor for Oni and Halo;{{ref|name=&amp;quot;T2&amp;quot;|note=[https://web.archive.org/web/20000118055725/http://pc.ign.com/news/9525.html IGN: &amp;quot;Take-Two Take Bungie&amp;quot;]}} purchase occurs in November{{ref|note=[https://www.sec.gov/Archives/edgar/data/946581/0000891554-00-000145.txt SEC 10-K filing for Take-Two Interactive]}}&amp;lt;br&amp;gt;Oni&#039;s stated release date is &amp;quot;before Christmas&amp;quot; 1999{{ref|name=&amp;quot;T2&amp;quot;}}&lt;br /&gt;
|event9date=Sept. 29, 1999&lt;br /&gt;
|event9text=Sell sheet gives &amp;quot;Q1 2000&amp;quot; as release date{{ref|note=See [[:Image:Info sheet.jpg]]}}&lt;br /&gt;
|event10date=Nov. 19, 1999&lt;br /&gt;
|event10text=GameSpot email gives &amp;quot;summer 2000&amp;quot; as release date{{ref|note=[https://carnage.bungie.org/oniforum/oni.forum.pl?read=1129 Oni Central Forum: &amp;quot;New Oni Preview Coming Up...&amp;quot;]}}&lt;br /&gt;
|event11date=Dec. 20, 1999&lt;br /&gt;
|event11text=Brent Pease leaves the Oni team{{ref|note=[https://carnage.bungie.org/oniforum/oni.forum.pl?read=1410 Oni Central Forum: &amp;quot;Brent Pease leaves Bungie?&amp;quot;]}}&lt;br /&gt;
|event12date=Jan. 5, 2000&lt;br /&gt;
|event12text=Oni appears at Macworld SF; on BungieTV, the game is demonstrated in multiplayer mode by Bungie staffers{{ref|name=&amp;quot;mp&amp;quot;}}&lt;br /&gt;
|event13date=Feb. 20, 2000&lt;br /&gt;
|event13text=Oni&#039;s release date is listed as &amp;quot;summer 2000&amp;quot; by Take-Two{{ref|note=[http://oni.bungie.org/newsarchives/2000/feb00.html#take2 Oni Central: News for February 2000]}}&lt;br /&gt;
|event14date=Mar. 16, 2000&lt;br /&gt;
|event14text=The PlayStation 2 port is officially announced.{{ref|note=[http://oni.bungie.org/newsarchives/2000/mar00.html#breaking Oni Central: &amp;quot;Oni is coming for the PS2&amp;quot;]}}{{ref|note=[https://web.archive.org/web/20000511043021/http://www.bungie.com/corporate/press/oni_ps2.shtml Bungie.com: &amp;quot;Take-Two Interactive Software&#039;s Rockstar Games Announces Oni for the Playstation 2&amp;quot;]}} The port had actually begun a short while earlier.{{ref|note=[https://carnage.bungie.org/oniforum/oni.forum.pl?read=2421 Oni Central Forum: &amp;quot;Re: Question asking time....&amp;quot;]}}&lt;br /&gt;
|event15date=May 13, 2000&lt;br /&gt;
|event15text=The announcement is made that multiplayer mode has been canceled{{ref|note=[https://carnage.bungie.org/oniforum/oni.forum.pl?read=3216 Oni Central Forum: &amp;quot;Rant here... I think its a good rant ;)&amp;quot;]}}&lt;br /&gt;
|event16date=Jun. 19, 2000&lt;br /&gt;
|event16text=Microsoft purchases 100% stake in Bungie and Take-Two gains full IP rights over Oni and Myth{{ref|note=[https://www.ign.com/articles/2000/06/20/microsoft-buys-bungie-take-two-buys-oni-ps2-situation-unchanged IGN: &amp;quot;Microsoft Buys Bungie, Take Two Buys Oni, PS2 Situation Unchanged&amp;quot;]}}{{ref|note=[https://www.sec.gov/Archives/edgar/data/946581/000112528202003845/b320556.htm SEC 10-K filing for Take-Two Interactive]}}&lt;br /&gt;
|event17date=Jul. 25, 2000&lt;br /&gt;
|event17text=Gathering of Developers email gives &amp;quot;October 2000&amp;quot; as release date&lt;br /&gt;
|event18date=Aug. 28, 2000&lt;br /&gt;
|event18text=Oni enters beta phase of development{{ref|note=[http://carnage.bungie.org/oniforum/oni.forum.pl?read=4556 Oni Central Forum: &amp;quot;New news groups?&amp;quot;]}}&lt;br /&gt;
|event19date=Sept. 11, 2000&lt;br /&gt;
|event19text=A GameSpot UK article covering the European Computer Trade Show reports a show floor statement that Oni&#039;s release date is March 2001,{{ref|note=[https://carnage.bungie.org/oniforum/oni.forum.pl?read=4699 Oni Central Forum: &amp;quot;What the...?!?&amp;quot;]}} which is then disputed by Bungie employees and others; in the end it turns out to be accurate for the European releases but not the North American release&lt;br /&gt;
|event20date=Nov. 4, 2000&lt;br /&gt;
|event20text=Creation date on game data files in the Windows retail release&lt;br /&gt;
|event21date=Nov. 8, 2000&lt;br /&gt;
|event21text=Gathering of Developers announces the final North American release date of January 29, 2001 for all three platforms{{ref|note=[https://web.archive.org/web/20001213051800/http://www.imgmagazine.com/news/story.php?ArticleID=1400 IMG News: &amp;quot;Oni Release Date&amp;quot;]}}&lt;br /&gt;
|event22date=Nov. 17, 2000&lt;br /&gt;
|event22text=Oni is gold mastered for Windows{{ref|note=[http://oni.bungie.org/newsarchives/2000/nov00.html#xbox Oni Central: News for November 2000]}}&lt;br /&gt;
|event23date=Nov. 20, 2000&lt;br /&gt;
|event23text=Creation date on game data files in the Windows demo and Mac retail release (in .sep format)&lt;br /&gt;
|event24date=Dec. 15, 2000&lt;br /&gt;
|event24text=Bungie West officially moves to Microsoft&#039;s headquarters at Redmond{{ref|note=[https://web.archive.org/web/20010413012240/http://www.haloplayers.com/features/haloupdates/index?976977146 HaloPlayers.com: &amp;quot;Matt&#039;s Halo Update - December 15, 2000&amp;quot;]}}&lt;br /&gt;
|event25date=Dec. 17, 2000&lt;br /&gt;
|event25text=Windows demo released{{ref|note=[http://carnage.bungie.org/oniforum/oni.forum.pl?read=7479 Oni Central Forum: &amp;quot;ONI DEMO!&amp;quot;]}}&lt;br /&gt;
|event26date=Dec. 20, 2000&lt;br /&gt;
|event26text=Oni is gold mastered for Mac, based on the date on the retail application and the release of the Mac demo{{ref|note=See [[:Image:Classic Mac Oni Get Info window.png]]}}{{ref|note=[https://carnage.bungie.org/oniforum/oni.forum.pl?read=8045 Oni Central Forum: Mac Demo News]}}&lt;br /&gt;
|event27date=Dec. 21, 2000&lt;br /&gt;
|event27text=Mac demo released{{ref|note=[https://www.insidemacgames.com/historical/news/story.php%3FArticleID=1744.html Inside Mac Games News: &amp;quot;Oni Demo Released&amp;quot;]}}&lt;br /&gt;
|event28date=Jan. 22, 2001&lt;br /&gt;
|event28text=Oni is gold mastered for PlayStation 2{{ref|note=[https://web.archive.org/web/20010128150200/http://www.dailyradar.com/news/game_news_6691.html Daily Radar: &amp;quot;Oni Gets SCEA&#039;s Approval &amp;quot;, Jan. 22, 2001]}}&lt;br /&gt;
|event29date=Jan. 29, 2001&lt;br /&gt;
|event29text=Official release date for Oni in North America on Mac, Windows and PS2{{ref|note=[http://oni.bungie.org/newsarchives/2001/jan01.html Oni Central: News for January 2001]}}{{ref|name=&amp;quot;GOD release&amp;quot;|note=[https://web.archive.org/web/20010617133132/http://www.godgames.com/main.php?section=news&amp;amp;page=press&amp;amp;pr=ONI_Ships Godgames.com: &amp;quot;Gathering of Developers Ships Oni Nationwide for the PC and Macintosh&amp;quot;]}}{{ref|note=[https://www.gamespot.com/articles/oni-receives-final-approval/1100-2676645/ GameSpot: &amp;quot;Oni Receives Final Approval&amp;quot;]}}&lt;br /&gt;
}}&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
==References==&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Oni history]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:Instance_file_format&amp;diff=47149</id>
		<title>OBD:Instance file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:Instance_file_format&amp;diff=47149"/>
		<updated>2026-04-17T20:29:35Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: discovered the hard way that the &amp;quot;+1&amp;quot; on the instance ID actually has value&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UpdatedForOniX|1.0.0}}&amp;lt;!--Documentation below is waiting to be un-commented.--&amp;gt;&lt;br /&gt;
{{OBD Home}}&lt;br /&gt;
{{Hatnote|&amp;quot;.dat&amp;quot; redirects here; for other files ending in &amp;quot;.dat&amp;quot;, see [[Oni (folder)]].&amp;lt;br&amp;gt;&lt;br /&gt;
:You should read [[Engine terminology]] and [[Game data terminology]] before this page.&amp;lt;br&amp;gt;&lt;br /&gt;
:The [[raw|Raw and separate file formats]] page should be read after this one.}}&lt;br /&gt;
Files in GameDataFolder/ named &amp;quot;level[0-19]_Final.dat&amp;quot;, together with &amp;quot;.raw&amp;quot; and sometimes &amp;quot;.sep&amp;quot; counterparts, contain the game data for Oni. These are called &amp;quot;instance files&amp;quot; internally, but a more common-sense name for them is level data files. The format described below was also used for the tool files which supplied the GUI for the in-game editor, however the retail Oni game application refuses to load tool files; for the story behind the tool files, see [[level0_Tools]].&lt;br /&gt;
&lt;br /&gt;
The level 0 files do not contain resources for a specific level but rather resources (instances) shared across all levels. Level 0 is loaded when the game starts and is never unloaded. All other level files, 1-19, are only loaded when their corresponding level starts and then unloaded when it ends. Oni can only hold two level files in memory concurrently, thus resources have to be duplicated on disk whenever a character class, sound effect, etc. occurs in more than one level. For instance, although there are only 2,380 unique sounds in the game, there are 7,386 sounds stored across all level data files.&lt;br /&gt;
{{TOClimit}}&lt;br /&gt;
==Blank space and garbage==&lt;br /&gt;
The structure of the level data files files reflects the way in which Bungie West chose to store levels in memory. So when we read the data in the files with a hex editor we can see eccentricities such as blank space coming from unused fields and byte-alignment padding, and garbage data such as now-meaningless pointer values and random RAM contents from uninitialized memory. There are also [[OBD:Raw and separate file formats#Gaps|gaps in the .raw/.sep files]], mostly representing orphaned obsolete resources, which add up to about 25 MB for the whole game.&lt;br /&gt;
&lt;br /&gt;
==Backwards tags==&lt;br /&gt;
Because the levels were built on Intel-based machines, which use a little-endian architecture, sequences of bytes which represent numbers were written from least-significant to most-significant byte. [[wp:FourCC|FourCCs]] in the data are stored &amp;quot;backwards&amp;quot; (e.g. &amp;quot;13RV&amp;quot; which is meant to be read &amp;quot;VR31&amp;quot;) because Bungie defined those four bytes as a 32-bit integer, not a string, causing them to be written to disk in little-endian order.&lt;br /&gt;
&lt;br /&gt;
==File limits==&lt;br /&gt;
*Max level number: 127&lt;br /&gt;
*Max number of instance files in GameDataFolder: 512 (Windows retail), 16 (Windows demo, Mac)&lt;br /&gt;
*Max number of simultaneously loaded instance files: 64&lt;br /&gt;
*Max number of instances in a file: 131071&lt;br /&gt;
*Max length of an instance file name: 31&lt;br /&gt;
*Max length of an instance name: 63 (including the 4 character template tag)&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
Here is a walkthrough of an instance file using the level0_Final.dat in English Windows Oni. Follow along in a hex editor for maximum educational value. Each term will be explained in-depth when we fully consider the related data. First, here is how the file begins:&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | uint64   | | 1F 27 DC 33 DF BC 03 00 | 0x0003BCDF33DC271F | Total template checksum (main indicator of engine compatibility):&lt;br /&gt;
*0x0003BCDF33DC271F - templates compatible with v1.0 engine (Windows retail)&lt;br /&gt;
*0x0003BCDF23C13061 - templates compatible with v1.1 engine (Windows demo and Mac)&lt;br /&gt;
*0x0003BA70A8DBAE11 - templates compatible with PlayStation 2 engine&lt;br /&gt;
&amp;lt;!--*0x0000000000000000 (blank) - for use with [[OniX]] engine, which instead handles data versioning using the 0x3C field below--&amp;gt;&lt;br /&gt;
OniSplit&#039;s .oni files use PC 1.0 checksum by default and 1.1 checksum when storing data that comes from the 1.1 engine and which perceptibly differs in format for that engine (SNDD, but not TXMP) }}&lt;br /&gt;
{{OBDtr| 0x08 | uint32   | | 31 33 52 56 | &#039;13RV&#039;    | .dat version (meant to be read as &amp;quot;VR31&amp;quot;)&amp;lt;br&amp;gt;OniSplit&#039;s .oni files use &#039;23RV&#039; (&amp;quot;VR32&amp;quot;) instead&amp;lt;!--&amp;lt;br&amp;gt;OniX&#039;s [[Oni (folder)|GDFX]] uses &#039;33RV&#039; (&amp;quot;VR33&amp;quot;) to signify that the new data versioning system is in use--&amp;gt; }}&lt;br /&gt;
{{OBDtr| 0x0C | uint16   | | 40 00       | 64        | size of this header }}&lt;br /&gt;
{{OBDtr| 0x0E | uint16   | | 14 00       | 20        | size of instance descriptor (32 in Windows alpha 6) }}&lt;br /&gt;
{{OBDtr| 0x10 | uint16   | | 10 00       | 16        | size of template descriptor }}&lt;br /&gt;
{{OBDtr| 0x12 | uint16   | | 08 00       | 8         | size of name descriptor }}&lt;br /&gt;
{{OBDtr| 0x14 | uint32   | | 83 24 00 00 | 9347      | instance descriptor count  }}&lt;br /&gt;
{{OBDtr| 0x18 | uint32   | | D4 1B 00 00 | 7124      | name descriptor count; 0 for .oni files because there is no name desc. table }}&lt;br /&gt;
{{OBDtr| 0x1C | uint32   | | 38 00 00 00 | 56        | template descriptor count; 0 for .oni files because there is no template desc. table }}&lt;br /&gt;
{{OBDtr| 0x20 | uint32   | | A0 BC 03 00 | 0x03BCA0  | data block offset }}&lt;br /&gt;
{{OBDtr| 0x24 | uint32   | | A0 35 25 00 | 2438560   | data block size }}&lt;br /&gt;
{{OBDtr| 0x28 | uint32   | | 40 F2 28 00 | 0x28F240  | name block offset; will be lower than data block offset for .oni files }}&lt;br /&gt;
{{OBDtr| 0x2C | uint32   | | 04 4F 02 00 | 151300    | name block size }}&lt;br /&gt;
{{OBDtr| 0x30 | uint32   | | 99 CF 40 00 | (garbage) | used by OniSplit for raw/sep block offset }}&lt;br /&gt;
{{OBDtr| 0x34 | uint32   | | 90 4F 63 00 | (garbage) | used by OniSplit for raw/sep block size }}&lt;br /&gt;
{{OBDtr| 0x38 | uint32   | | F4 55 5F 00 | (garbage) | unused&amp;lt;!--used by OniX for data versioning; the three high bytes contains the highest data version (timestamp) found in any instance in this .dat; see instance descriptor table&#039;s 0x10 for format--&amp;gt; }}&lt;br /&gt;
{{OBDtr| 0x3C | uint32   | | 90 4F 63 00 | (garbage) | unused&amp;lt;!--used by OniX for content versioning; the three high bytes contain the highest content version (timestamp) found in any instance in this .dat; see instance descriptor table&#039;s 0x10 for format--&amp;gt; }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file&#039;s &#039;&#039;&#039;total template checksum&#039;&#039;&#039; is the sum of all the template checksums (see &amp;quot;Template descriptors&amp;quot; below). Oni looks at this number in order to validate that it can read this version of the game data format. In practical terms, the total checksum value given for Windows above tells us that this level data is in the .dat/.raw file scheme, and the value given for Mac Oni and the Windows demo tells us that the level data uses the .dat/.raw/.sep file scheme.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;version&#039;&#039;&#039; of the instance file is the format version. Reading it backwards, as discussed under the &amp;quot;Backwards and garbage data&amp;quot; section, we get &amp;quot;VR31&amp;quot; (which probably means &amp;quot;version 3.1&amp;quot; because the engine subsystem that reads template data was in its third iteration when the game shipped). This is the format version of all instance files in all releases of Oni.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;descriptor sizes&#039;&#039;&#039; are the sizes of the instance, template, and name descriptors which are coming up in this file (see breakdowns in later sections). For instance, each instance descriptor will be 0x14, or 20 bytes, in length.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;descriptor counts&#039;&#039;&#039; are the sizes of arrays which are coming up in this file: the instance, name and template descriptors. For instance, the size of the instance descriptor array will be 0x2483, or 9,347 items, in length.&lt;br /&gt;
&lt;br /&gt;
Next we are told the addresses and sizes of the &#039;&#039;&#039;data and name block&#039;&#039;&#039; in the instance file. The name block simply follows the data block, as you&#039;ll see if you add the data block offset plus the data block size, so the name block offset is technically redundant. The name block offset plus the name block size equals the total size of the file since it&#039;s the last segment of the file. (However in a .oni file, the order of these blocks is reversed.)&lt;br /&gt;
&lt;br /&gt;
After the name block&#039;s size comes four &amp;quot;int&amp;quot;s of &#039;&#039;&#039;garbage&#039;&#039;&#039;; this is padding in order to align the start of the next segment of the file on a 32-byte boundary. The first two 32-bit fields in this space are, however, used in .oni files generated by OniSplit&amp;lt;!--, and the next two 32-bit fields are used by OniX for a new form of template versioning--&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
That concludes the header of the instance file. Immediately after this header we find the instance descriptors array.&lt;br /&gt;
&lt;br /&gt;
==Instance descriptors==&lt;br /&gt;
The instance descriptor array tells Oni where to find the data and the name of every instance (resource) indexed by the .dat file. The descriptors start at 0x40 in the .dat file, but below is a descriptor found at 0x017B50 in the file which makes a better example. In the table below, we use offsets relative to the start of this descriptor. We also show the alternate structure in the Windows alpha 6, the oldest known version of Oni and the only one with an observed difference in the instance descriptor format.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#E9E9E9&amp;quot;&lt;br /&gt;
! width=5% | Offset&lt;br /&gt;
! width=5% | Type&lt;br /&gt;
! width=10% | Raw Hex&lt;br /&gt;
! width=10% | Value&lt;br /&gt;
! width=35% | Description (retail&amp;lt;!--, OniX--&amp;gt;)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x00&lt;br /&gt;
| tag&lt;br /&gt;
| 54 42 55 53&lt;br /&gt;
| &#039;SUBT&#039;&lt;br /&gt;
|align=left | template tag&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x04&lt;br /&gt;
| int32&lt;br /&gt;
| C8 30 22 00&lt;br /&gt;
| 0x2230C8&lt;br /&gt;
|align=left | data offset (relative to data block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x08&lt;br /&gt;
| int32&lt;br /&gt;
| 01 CB 00 00&lt;br /&gt;
| 0xCB01&lt;br /&gt;
|align=left | name offset (relative to name block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x0C&lt;br /&gt;
| int32&lt;br /&gt;
| C0 09 00 00&lt;br /&gt;
| 2496&lt;br /&gt;
|align=left | data size&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x10&lt;br /&gt;
| int32&lt;br /&gt;
| 00 00 30 00&lt;br /&gt;
| 0x300000&lt;br /&gt;
|align=left | flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Divhide|Windows alpha 6}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#E9E9E9&amp;quot;&lt;br /&gt;
! width=5% | Offset&lt;br /&gt;
! width=5% | Type&lt;br /&gt;
! width=10% | Raw Hex&lt;br /&gt;
! width=10% | Value&lt;br /&gt;
! width=35% | Description (alpha 6)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x00&lt;br /&gt;
| int64&lt;br /&gt;
| 68 6C 04 00&lt;br /&gt;
| 0x46C68&lt;br /&gt;
|align=left | template checksum&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x08&lt;br /&gt;
| tag&lt;br /&gt;
| 54 42 55 53&lt;br /&gt;
| &#039;SUBT&#039;&lt;br /&gt;
|align=left | template tag&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x0C&lt;br /&gt;
| int32&lt;br /&gt;
| E8 37 18 00&lt;br /&gt;
| 0x1837E8&lt;br /&gt;
|align=left | data offset (relative to data block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x10&lt;br /&gt;
| int32&lt;br /&gt;
| 4E C5 00 00&lt;br /&gt;
| 0xC54E&lt;br /&gt;
|align=left | name offset (relative to name block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x14&lt;br /&gt;
| int32&lt;br /&gt;
| 20 08 00 00&lt;br /&gt;
| 2080&lt;br /&gt;
|align=left | data size&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x18&lt;br /&gt;
| int32&lt;br /&gt;
| 00 00 30 00&lt;br /&gt;
| 0x300000&lt;br /&gt;
|align=left | flags&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x1C&lt;br /&gt;
| int32&lt;br /&gt;
| EA 5F A6 39&lt;br /&gt;
| {{LocaleDate|2000|08|25}}&amp;lt;br&amp;gt;08:00:42 AM&lt;br /&gt;
|align=left | creation date (seconds since 1/1/1900)&lt;br /&gt;
|}&lt;br /&gt;
{{Divhide|end}}&lt;br /&gt;
The retail version of this instance descriptor tells us that a resource of &#039;&#039;&#039;type&#039;&#039;&#039; SUBT (a subtitle file for Oni; there are only two of these, one containing all speech subtitles, and one for help messages) has &#039;&#039;&#039;data&#039;&#039;&#039; that can be found 0x2230C8 bytes into the data block, which we learned from the file header starts at 0x03BCA0. Its &#039;&#039;&#039;name&#039;&#039;&#039; can be found 0xCB01 bytes into the name block that starts, according to the file header, at 0x28F240.&lt;br /&gt;
&lt;br /&gt;
The data&#039;s &#039;&#039;&#039;size&#039;&#039;&#039; is given as 0x09C0, or 2,496 bytes, but it&#039;s important to clarify that this is the total size of the data counting from the resource header to the next 32-byte boundary after the end of this instance&#039;s actual data; in other words it is the true total of the space occupied on disk by this instance. This is interesting because the data offset leads you to the start of the instance-specific data which begins 8 bytes after the resource header, so if you erroneously add the data size to the data offset to find the end of the instance data then you will find yourself 8 bytes into the next instance.&lt;br /&gt;
&lt;br /&gt;
Before we proceed, let&#039;s expand upon the &#039;&#039;&#039;flags&#039;&#039;&#039; field.&lt;br /&gt;
&lt;br /&gt;
;Flags - data usage&lt;br /&gt;
:0x&#039;&#039;&#039;01&#039;&#039;&#039; 00 00 00 - unnamed&lt;br /&gt;
:0x&#039;&#039;&#039;02&#039;&#039;&#039; 00 00 00 - empty&lt;br /&gt;
:0x&#039;&#039;&#039;04&#039;&#039;&#039; 00 00 00 - never used; intended to mark instance as pointing to duplicate data rather than its own data&lt;br /&gt;
:0x&#039;&#039;&#039;08&#039;&#039;&#039; 00 00 00 - instance&#039;s data is being used by duplicate instances as a source&lt;br /&gt;
&lt;br /&gt;
;Flags - Tool mode&amp;lt;!-- (retail)--&amp;gt;&lt;br /&gt;
The first two of the following bits occur throughout the original .dat files. However all of these bits are ignored by the engine when loading data because they only have relevance at runtime when Oni is in Tool mode:&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;10&#039;&#039;&#039; 00 - touched (unsaved data)&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;20&#039;&#039;&#039; 00 - &amp;quot;in batch file&amp;quot;&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;40&#039;&#039;&#039; 00 - delete upon next save&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--;Flags - Tool mode (OniX)&lt;br /&gt;
These bits have been moved to the upper half of the first byte (on disk they are cleared altogether in the GDFX data, but this is their location in memory):&lt;br /&gt;
:0x&#039;&#039;&#039;10&#039;&#039;&#039; 00 00 00 - touched (unsaved data)&lt;br /&gt;
:0x&#039;&#039;&#039;20&#039;&#039;&#039; 00 00 00 - &amp;quot;in batch file&amp;quot;&lt;br /&gt;
:0x&#039;&#039;&#039;40&#039;&#039;&#039; 00 00 00 - delete upon next save&lt;br /&gt;
This frees up the three higher bytes for the data versioning timestamp which is in YY/MM/DD format, stored thusly:&lt;br /&gt;
:0x00 &#039;&#039;&#039;00&#039;&#039;&#039; 00 00 - versioning timestamp – day&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;00&#039;&#039;&#039; 00 - versioning timestamp – month&lt;br /&gt;
:0x00 00 00 &#039;&#039;&#039;00&#039;&#039;&#039; - versioning timestamp – year--&amp;gt;&lt;br /&gt;
The flags &amp;quot;unnamed&amp;quot; and &amp;quot;empty&amp;quot; require special explanation.&lt;br /&gt;
&lt;br /&gt;
===Unnamed and empty resources===&lt;br /&gt;
You&#039;ll notice that the level file header lists fewer names (7,124) than instances (9,347). That&#039;s because there are 3 types of instance:&lt;br /&gt;
*Unnamed and not empty - they are only referenced by other instances in the same file, generally as child data (e.g., 3D geometry elements like ABNA are &amp;quot;contained&amp;quot; by AKEV, a level&#039;s environment).&lt;br /&gt;
*:In vanilla Oni .dats there are some rare occurrences of unnamed non-empty &#039;&#039;orphan&#039;&#039; instances (e.g., [[OBD:File types/Naming#TRCM|TRCM]]). These are a form of garbage and are discarded by OniSplit when unpacking a level. &lt;br /&gt;
*Named and not empty - they can be referenced by other instances in any file and the engine can use their name or template tag to find them.&lt;br /&gt;
*Named and empty - &amp;quot;empty&amp;quot; instances are used in level-specific instance files (i.e. not in level0_Final.dat) to associate an instance ID with a name. For every empty resource, there&#039;s another one with a matching name in level0_Final.dat that has data in it. The empty resource in the instance file is (usually) looked up by ID, then the engine searches all the loaded files for a non-empty instance with the same name, causing it to find the actual file in the global data in level0_Final.dat.&lt;br /&gt;
&lt;br /&gt;
===Peeking ahead at instance name===&lt;br /&gt;
Before we talk about the name block in depth, we can peek ahead at the name of this resource using the offset we&#039;ve just been given. Let&#039;s add the offset 0xCB01 to 0x28F240, the file header&#039;s address for the name block. This gives us the address 0x29BD41. There we find the string &amp;quot;SUBTsubtitles&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Peeking ahead at instance data===&lt;br /&gt;
The actual subtitle data should be found by adding the offset 0x2230C8 to 0x03BCA0, the file header&#039;s address for the data block, to get 0x25ED68. We&#039;re going to leave the full details of the data block for later, but below is the data you should actually see for the English Oni SUBT file at this address. You have to consult the [[SUBT]] page to know how to read this data.&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x08 | char[16] | | AD DE       | dead        | unused }}&lt;br /&gt;
{{OBDtr| 0x18 | offset   | | 80 44 44 01 | 0x01444480  | raw file data address }}&lt;br /&gt;
{{OBDtr| 0x1C | int32    | | 61 02 00 00 | 609         | array size }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After &#039;&#039;&#039;padding&#039;&#039;&#039; of 16 unused bytes, we find that, instead of data, there&#039;s an address of the actual data: it&#039;s in the level&#039;s raw file. Open level0_Final.raw and jump to address 0x01444480, and you should see &amp;quot;01_01_01 Griffin: Give me another reading.&amp;quot;, and the rest of some very familiar dialogue continuing from there.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;array size&#039;&#039;&#039; of 609 tells the part of the engine that reads SUBT data to expect a chunk of 609 subtitled lines of dialogue.&lt;br /&gt;
&lt;br /&gt;
==Name descriptors==&lt;br /&gt;
The name descriptor array starts immediately after the instance descriptors array. To find the end of the instance descriptors, we can simply take the size of an instance descriptor, 20 bytes, and multiply it by the number of instance descriptors in the file header. In this case, that means 20 * 9347 = 186940, or 0x02DA3C. Adding that to 0x40 (the start of the instance descriptors) takes us to address 0x02DA7C. Voila, the start of the name descriptors.&lt;br /&gt;
&lt;br /&gt;
The name descriptor array stores the numbers of all named instances in the alphabetical order by said names, which are found in the name block but also pointed to by these entries. This array is used by the engine to look up instances by name; it&#039;s also used to find instances by template (scanning just the tag at the start of each name). The purpose of this array being alphabetized was to allow the engine to do a binary search to find instances by name more quickly, but the retail engine no longer attempts a binary search and merely iterates over the array from start to end.&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | int32   | | 15 16 00 00 | 5653      | instance descriptor index }}&lt;br /&gt;
{{OBDtr| 0x04 | int32   | | 60 2C 1C 0E | (garbage) | runtime: pointer to instance name }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The index number here is referring to the instance&#039;s position in the instance descriptor array. This number is also used by the data block to identify each instance, thus it is found in two places in the data explicitly and one place implicitly.&lt;br /&gt;
&lt;br /&gt;
Since the addresses of the names in memory cannot be known until the file is loaded into RAM, a space of 32 bits is reserved for each pointer at runtime.&lt;br /&gt;
&lt;br /&gt;
==Template descriptors==&lt;br /&gt;
Likewise, the template descriptor array starts directly after the name descriptors. Since name descriptors are 8 bytes, 8 * 7124 (taken from the header) = 56992, or 0xDEA0, and adding that to the name descriptor array&#039;s start address (0x02DA7C) gives us 0x03B91C as the start of the template descriptors.&lt;br /&gt;
&lt;br /&gt;
The template descriptor array contains information about all templates (that is, resource types, aka tags), used in the file (56 in this case, as we learned from the file header). Any resource occurring in this instance file has to have its type listed here. Here is the template descriptor at 0x3B9FC:&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | int64   | | 3C B9 A6 71 08 00 00 00 | 0x871A6B93C | template checksum }}&lt;br /&gt;
{{OBDtr| 0x08 | tag     | | 45 47 52 54             | &#039;EGRT&#039;      | template tag }}&lt;br /&gt;
{{OBDtr| 0x0C | int32   | | 01 00 00 00             | 1           | unused: number of resources in file that use this template }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;template checksum&#039;&#039;&#039; is used to prevent loading of instance files that are not compatible with the current engine version. The &#039;&#039;&#039;tag&#039;&#039;&#039; is the same kind of number-written-as-backwards-ASCII that we discussed in the &amp;quot;Backwards and garbage data&amp;quot; section; in this case, &#039;EGRT&#039; means [[TRGE]]. The field for the &#039;&#039;&#039;number of resources&#039;&#039;&#039; using this template is unused. The number should be correct for each template, but Oni never uses it for anything.&lt;br /&gt;
&lt;br /&gt;
You might wonder how Oni knows how to read each type of data, such as a SUBT or an ABNA. The simple answer is that this information is hard-coded into Oni. In fact, the information on each instance type, as stored in Oni&#039;s code, is actually the real &amp;quot;template&amp;quot;. The file data merely gives the tag and checksum that identify the template in use so that Oni knows how to read the following data fields. These hardcoded templates also tell Oni which parts of the file data are reserved for pointers.&lt;br /&gt;
&lt;br /&gt;
That&#039;s because an instance may have pointers to other related instances, but pointers are only valid in memory; they cannot be stored meaningfully on disk. They must be set at runtime when the level data is loaded into memory and an address in RAM has been assigned. Thus one type of data field in Oni&#039;s templates is a &amp;quot;raw data&amp;quot; pointer; on Macs and the Windows demo, there is an additional &amp;quot;separate data&amp;quot; pointer. These pointers are 32 bits in length, as one must expect since Oni was compiled for 32-bit PCs.&lt;br /&gt;
&lt;br /&gt;
Incidentally, the templates in Oni&#039;s code have not just the familiar four-character tags attached to them, but also a descriptive string, e.g. &amp;quot;BSP Tree Node Array&amp;quot;. These strings were typed into the source code where each template structure was defined, and eventually extracted from the binary by modders. This is the source of the names on [[OBD:File types]].&lt;br /&gt;
&lt;br /&gt;
==Data block==&lt;br /&gt;
The data block occupies the majority of the file and stores all the instance data (though this data sometimes points to the location of more data in a raw/separate file). We peeked at this block before when we looked at the instance descriptor for SUBTsubtitles. The block&#039;s starting point is found at the offset given in the header, in this case 0x03BCA0, saving us the trouble of adding up the size of the four preceding segments of the file and then aligning to the next 32-byte boundary.&lt;br /&gt;
&lt;br /&gt;
The reason we&#039;d need to align to 32 bytes is that the start of each instance&#039;s record (the instance ID) is always 32 byte-aligned. Thus, even though the template descriptors ended at 0x03BC9C, there are four empty bytes here so that the data block can begin at 0x03BCA0, which divides evenly by 32. This alignment rule also means that the instance-specific data will always start at an offset like 0x0008, 0x0028, 0x0148, etc. &lt;br /&gt;
&lt;br /&gt;
The instance ID and file ID are not actually part of the instance data but are considered to be the resource header. The engine always keeps pointers to the start of the type-specific data itself; we saw this before when we jumped to 0x25ED68 and saw the data for the SUBT rather than the header for this data. The instance ID and file ID are accessed using negative offsets when needed (usually to find the name or template tag of an instance, given a pointer to it).&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | res_id  | | 01 0B 04 00 | 1035 | instance descriptor index }}&lt;br /&gt;
{{OBDtr| 0x04 | lev_id  | | 01 00 00 06 |    3 | level number }}&lt;br /&gt;
{{OBDtr| 0x08 | ...     | | ...         | ...  | type-specific data... }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This example is taken from level 3 so that the file ID is more instructive. In the OBD documentation, these fields are called res_id and lev_id as seen above.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;instance&#039;s ID&#039;&#039;&#039; is stored as &amp;quot;(instance descriptor index &amp;lt;&amp;lt; 8) | 1&amp;quot;. Thus the ID for item #1,035 (0x40B) in the instance descriptor index will be encoded as 0x40B01. The official purpose of the &#039;1&#039; is that it was a marker used by the engine at runtime signifying that this instance ID had already been converted to a pointer to a live instance in memory (an instance pointer will always be 8-byte aligned, so it will never have the zero bit set). These pointer flags were retained when the file was written to disk, where they seemingly serve no purpose, but in fact they allow us to differentiate link fields which are truly unused (all zeroes) from a link field which points to instance #0 (since this would be encoded as 01 00 00 00 on disk). At level-load time the flags are cleared and then set again when Oni allocates memory for each instance. The purpose of left-shifting the index number is simply to leave the lowest byte open for the pointer flag.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;file ID&#039;&#039;&#039; is computed from the number found in the name of the instance file: &amp;quot;(level number &amp;lt;&amp;lt; 25) | 1&amp;quot;. Thus instances found in level3_Final.dat will have the file ID encoded as 0x6000001. Again, the &#039;1&#039; was used by the engine at runtime to know which file IDs had been converted to pointers at runtime, but it does allow us to tell the difference between a reference to level0_Final (01 00 00 00) and a file ID field that has somehow not been filled in (though this should not happen). The reason for left-shifting the level number so far might have originally been to store it alongside the instance ID and the pointer flag in a single int32, but they are separate int32s now, perhaps so that both IDs can have their own pointer flag.&lt;br /&gt;
&lt;br /&gt;
After the header, the size of each instance&#039;s data is of a somewhat arbitrary length depending on the template this instance falls under. As mentioned under &amp;quot;Instance descriptors&amp;quot;, the data size given by the descriptor includes the 8-byte resource header and the padding at the end of the data to align the next instance on 32 bytes.&lt;br /&gt;
&lt;br /&gt;
===Looking backward from data to instance===&lt;br /&gt;
By the way, if you pick a random place in the data block to look at with a hex editor, how do you know which resource you&#039;re looking at? You would look for the highest data offset in the instance descriptor array that is less than your position in the file. Let&#039;s say that the string at 0x3BD40 caught our eye: &amp;quot;powerup_ammo&amp;quot;. Subtracting the start of the data block, 0x3BCA0, gives us 0xA0 as the position of this string. Now looking back at the instance descriptor array, the instances&#039; data offsets occur every 20 bytes and come directly after the tags. We can see that the first data offset is 0x8 and the next one is 0xF68, thus our offset into the data block of 0xA0 means we are looking at the instance which starts at 0x8. It&#039;s the very first instance listed at the start of the instance descriptor array:&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | tag     | | 53 47 4E 4F | &#039;ONGS&#039;  | template tag }}&lt;br /&gt;
{{OBDtr| 0x04 | int32   | | 08 00 00 00 | 0x08    | data offset (relative to data block) }}&lt;br /&gt;
{{OBDtr| 0x08 | int32   | | 00 00 00 00 | 0x00    | name offset (relative to name block) }}&lt;br /&gt;
{{OBDtr| 0x0C | int32   | | 60 0F 00 00 | 3936    | data size }}&lt;br /&gt;
{{OBDtr| 0x10 | int32   | | 00 00 00 00 | 0       | flags }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
So this tells us that the first data in the data block belongs to the solitary [[ONGS]] resource, and that it extends for 3,936 bytes. Since its name offset is 0x0, it&#039;s the first string in the name block, which we can see below is SUBTsubtitles.&lt;br /&gt;
&lt;br /&gt;
==Name block==&lt;br /&gt;
This final segment of the file (third-to-last in a .oni, followed by the data and raw/sep blocks) stores all the instance names as C-style ASCII strings (terminated by a zero byte). We peeked at this before when we looked at the instance descriptor for SUBTsubtitles. The start of this block is 32-byte aligned but after that the strings are simply packed end to end, separated only by their null terminator. As with the data block, the name block&#039;s starting point is given in the header, in this case 0x28F240.&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | string  | | 53 55 ... 00 | &amp;quot;SUBTsubtitles&amp;quot; | name string (zero-terminated) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These names can be up to 63 characters long, counting the tag. The instance file concludes with the end of the name block, or the raw/sep block in a .oni file.&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Oni_(disambiguation)&amp;diff=47124</id>
		<title>Oni (disambiguation)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Oni_(disambiguation)&amp;diff=47124"/>
		<updated>2026-04-16T20:32:12Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: added several more Oni things, because why not?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;[[Oni]]&#039;&#039;&#039; is an action video game developed by Bungie West and released in 2001.&lt;br /&gt;
&lt;br /&gt;
Our wiki also has the following additional &#039;&#039;&#039;Oni&#039;&#039;&#039; articles:&lt;br /&gt;
* [[Oni (myth)]], an examination of the Japanese mythical oni&lt;br /&gt;
* [[Oni (folder)]], information on the game&#039;s installation directory&lt;br /&gt;
* [[Oni (PlayStation 2)]], cataloging the differences from the PC version of the game&lt;br /&gt;
* [[Oni (no relation)]], a list of unrelated works named Oni&lt;br /&gt;
&lt;br /&gt;
Also see these things which aren&#039;t quite called &#039;&#039;&#039;Oni&#039;&#039;&#039; but are still pretty interesting:&lt;br /&gt;
* [[Category:Dark Horse comics|Oni comic]]&lt;br /&gt;
* [[OniX]]&lt;br /&gt;
* [[Oni-likes and engine ports]]&lt;br /&gt;
* [[Oni2|Oni 2 (fan fiction)]]&lt;br /&gt;
* [[Oni 2 (Angel Studios)]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Support]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OniGalore:Current_events&amp;diff=47123</id>
		<title>OniGalore:Current events</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OniGalore:Current_events&amp;diff=47123"/>
		<updated>2026-04-16T20:20:22Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: wording around PS2 port work; removed redlink for a page that we don&amp;#039;t need to create&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|style=&amp;quot;float:right&amp;quot;&lt;br /&gt;
!WIKI WORK IS FUN!&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Penny_Arcade_-_EvilCorp_Too.png|250px]]&lt;br /&gt;
|-&lt;br /&gt;
!ENOUGH FOR A JOKE OR TWO&amp;lt;br&amp;gt;THEN IT GETS BORING&lt;br /&gt;
|}&lt;br /&gt;
{{Hatnote|If you&#039;re not familiar with wikis, see [[OniGalore:About]]. If you&#039;re not confident about editing a wiki, see [[Help:Editing]].}}&lt;br /&gt;
Here are some ongoing projects, and ideas for projects, on the wiki. Whatever in this list looks interesting to you, feel free to tackle it, even if you only have a little time here and there. However, if you are leaving a project half-done until you can resume it, please note this under the item in the list. Thanks for whatever you can do to contribute.&lt;br /&gt;
&lt;br /&gt;
{{TOClimit}}&lt;br /&gt;
&lt;br /&gt;
==General wiki work==&lt;br /&gt;
* Look at [[:Category:Flagged articles]] and see if there&#039;s anything you can help out with. There are a number of articles which need to be updated or finished, including ones about characters and settings in Oni.&lt;br /&gt;
* Just browse [[Special:Wantedpages]] and pick an interesting topic to write about! There are many interesting parts of Oni&#039;s world which do not have a dedicated article yet.&lt;br /&gt;
&lt;br /&gt;
==PlayStation 2 port==&lt;br /&gt;
Let&#039;s expand on the documentation of the PS2 version in the [[Oni (PlayStation 2)]] article, including how it differs from PC Oni in terms of gameplay, content and binary data (the latter should be covered on the [[OBD]] page devoted to each template). We should also check the game data for unexpected resources.&lt;br /&gt;
&lt;br /&gt;
==Angel Studios sequel==&lt;br /&gt;
If you have some hacking skills, please look at [[Talk:Oni 2 (Angel Studios)]] and [[OBD:Oni2AS]] to see if you can answer any outstanding questions or contribute new information.&lt;br /&gt;
&lt;br /&gt;
==BSL documentation==&lt;br /&gt;
The goal is to replace the [[BSL:Functions]] and [[BSL:Variables]] pages with a more organized, sortable and readable system:&lt;br /&gt;
# A single, master list of all functions and variables at [[BSL:List of built-in commands]] (&amp;quot;BSL:List&amp;quot; is a shortcut that redirects there). No longer will we have to browse two pages at once when we&#039;re trying to find a command but don&#039;t remember if it&#039;s a variable or function. The list is sortable by name, group, kind (function or variable), and platform availability, but does not contain any other info on the commands. It&#039;s just intended as a quick reference. You can click the group name for any command to go to the grouped page that discusses it in the context of related commands.&lt;br /&gt;
# Grouped pages which discuss all the functions/variables related to a certain task. This is where the detailed coverage of commands will be found. See [[BSL:AI activity]] for an example.&lt;br /&gt;
# Each command will also have its own page, so typing in the name of that command, e.g. &amp;quot;ai2_active&amp;quot;, in the Go/Search box will take you to a page that allows you to either edit the basic information about that command or to visit its group&#039;s page.&lt;br /&gt;
&lt;br /&gt;
This revamp of the BSL docs was starting to be built on a system that I (Iritscen) hacked into the wiki, but it&#039;s too rickety and clumsy. The proper approach to interlinked documentation that reads from the same central pool of data would be the [[mw:Extension:Cargo|Cargo]] extension, if we can get it installed here.&lt;br /&gt;
&lt;br /&gt;
==Oni 2 and beyond...==&lt;br /&gt;
Some fans use the wiki to write sequels, prequels, interquels (what may have happened to Konoko in the time gaps between the original chapters, e.g., between Chapter 12 and Chapter 13) or even paraquels (e.g., what was happening on the Syndicate side during Oni?). You can then list your work [[Oni2|HERE]]. Just be aware of the [[OniGalore:Copyrights|rights issues]] surrounding fan fiction posted on the Internet. Also, plagiarism is not nice, but &amp;quot;Oni 2&amp;quot; can still be influenced by anime/cyberpunk/other references. See [[:Category:Oni 2 influences|HERE]] to review the influences so far, elaborate on them some more, or point out new ones.&lt;br /&gt;
&lt;br /&gt;
[[Category:Policies and documentation]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Engine_terminology&amp;diff=47122</id>
		<title>Engine terminology</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Engine_terminology&amp;diff=47122"/>
		<updated>2026-04-16T20:16:33Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: linked to Mac/Win and PS2/PC comparison articles; wikilinked all the differing types on PS2&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UpdatedForOniX|1.0.0}}&lt;br /&gt;
Here is a high-level view of the different versions of the Oni engine and a brief introduction to some of the subsystems in the engine. It&#039;s meant to be read in tandem with [[Game data terminology]]. For a list of general differences between the Windows, Mac and PS2 versions of Oni, see [[PS2 vs PC]] and [[Mac vs PC]].&lt;br /&gt;
&lt;br /&gt;
==Engine versions==&lt;br /&gt;
There are three versions of Oni&#039;s engine found in released versions of the game. They are referred to interchangeably by various names.&lt;br /&gt;
;Windows retail, Windows, PC, v1.0&lt;br /&gt;
This version of the engine can be identified as &#039;&#039;&#039;v1.0&#039;&#039;&#039; from [[Oni (folder)/readme.txt|its read-me]] but is often referred to as the &amp;quot;Windows&amp;quot; or &amp;quot;PC&amp;quot; engine. This version of the engine was used for all localized Windows releases translated into non-English languages as well.&lt;br /&gt;
&lt;br /&gt;
;Mac, Windows demo, v1.1&amp;lt;!--, OniX--&amp;gt;&lt;br /&gt;
This version was used for Mac retail and demo releases and can be identified as &#039;&#039;&#039;v1.1&#039;&#039;&#039; from [[Oni (folder)/Oni ReadMe|the Mac read-me]], and underwent another month of development after v1.0. It was also used for the Windows demo, but is sometimes referred to as the &amp;quot;Mac&amp;quot; engine for simplicity. &amp;lt;!--[[OniX]] is built on this version of the engine.--&amp;gt; Its most obvious difference is the addition of .sep files to the GameDataFolder which now contain some of the data formerly stored in .raw files. The format of the individual templates is generally unchanged (with minor differences in [[SNDD]] and [[TRAM]]).&lt;br /&gt;
&lt;br /&gt;
;PS2&lt;br /&gt;
This version was created by Rockstar North for the PlayStation 2 port. It also uses .sep files but makes additional changes to templates ([[AGQG]], [[IGSt]], [[M3GM]], [[SNDD]], [[TRAM|TRAM/TREX]], [[TSFT]], [[TSGA]] and [[TXMP]]). It went through another 3 weeks to a month of development after the Mac version was completed and could possibly be thought of as a v1.2 engine, but is probably best understood as a fork of the v1.1 engine made for PS2 compatibility.&lt;br /&gt;
&lt;br /&gt;
==Subsystems==&lt;br /&gt;
The engine consists of various subsystems, some of which have colorful animé-related names and some of which have boring descriptive names. If an article is devoted to documenting more of that subsystem, it will be linked.&lt;br /&gt;
&lt;br /&gt;
;AI2&lt;br /&gt;
The second iteration of the code for driving the [[AI|AIs]] (NPCs).&lt;br /&gt;
&lt;br /&gt;
;Akira&lt;br /&gt;
The [[Graphics|environment]] code, responsible for holding the game world in memory. Named for the 1988 film [[wp:Akira (1988 film)|Akira]].&lt;br /&gt;
&lt;br /&gt;
;BFW&lt;br /&gt;
A layer rather than a subsystem: stands for &amp;quot;BungieFrameWork&amp;quot;. This is the lower layer of the game engine, consisting of generalized cross-platform engine code. The upper layer is simply called &amp;quot;Oni&amp;quot; and contains specializations needed to implement Oni&#039;s gameplay logic.&lt;br /&gt;
&lt;br /&gt;
;BSL&lt;br /&gt;
Standing for &amp;quot;BFW Scripting Language&amp;quot;, this is the subsystem responsible for running Oni&#039;s [[BSL|scripting language]].&lt;br /&gt;
&lt;br /&gt;
;Motoko&lt;br /&gt;
The renderer code, responsible for drawing Oni&#039;s [[graphics]]. Named for the main character of the 1995 film [[Ghost in the Shell]].&lt;br /&gt;
&lt;br /&gt;
;Totoro&lt;br /&gt;
The code for Oni&#039;s 3D [[Animation|animation system]]. Named for the 1988 film [[wp:My Neighbor Totoro|My Neighbor Totoro]].&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;Et cetera&#039;&#039;&lt;br /&gt;
There are various other subsystems that we essentially never talk about, such as LocalInput, WindowManager, SoundSystem2 and TemplateManager.&lt;br /&gt;
&lt;br /&gt;
[[Category:Engine docs]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Oni_(PlayStation_2)&amp;diff=47121</id>
		<title>Oni (PlayStation 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Oni_(PlayStation_2)&amp;diff=47121"/>
		<updated>2026-04-16T20:15:09Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: /* Binary data format */ +wikilink&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Midway through Oni&#039;s development, in 1999, Take-Two Interactive purchased a stake in Bungie and became the publisher for the upcoming game. In addition to their investment, T2 stipulated that a PlayStation 2 port would be released alongside Oni for Windows and Macintosh. That port was created by Rockstar Toronto (known at the time as Rockstar Canada), and because the game had originally been intended for a PC with a hard drive, changes had to be made in order to load the game more quickly from CD-ROM. Even after this work, the PS2 version has been noted for its long load times.&lt;br /&gt;
&lt;br /&gt;
Today, Oni runs well in the emulator [https://pcsx2.net/ PCSX2]. When using this emulator, load times are reduced by placing an ISO of the game disc on your hard drive. You can also easily apply patches from within PCSX2 instead of having to buy a cheat device for your PS2, so this is the best way to run the game.&lt;br /&gt;
&lt;br /&gt;
==Gameplay differences==&lt;br /&gt;
* Cheats are entered differently; see {{SectionLink|Cheats|PlayStation 2}}. Also, they do not require the game to be beaten first, which is extremely helpful since the console controls make this version harder.&lt;br /&gt;
* The cooldown exploit has been fixed.&lt;br /&gt;
* The AI for the androids in Training is glitchy or overly aggressive. They might try to attack you after beating Karen, and the training bots sometimes forget the defense/offense program they&#039;re supposed to be following and wantonly attack you. It remains to be seen if this is an overall glitch with AI in the PS2 version.&lt;br /&gt;
* In the opening cutscene for Chapter 13, Konoko fires two or three times at the glass in the ceiling instead of once. (This probably means you have fewer bullets in your clip when the level starts, can someone confirm?)&lt;br /&gt;
&lt;br /&gt;
==Visual differences==&lt;br /&gt;
[[Image:Konoko from T2 PS2 intro.png|250px|thumb|right|The PS2-only movie where Konoko hits you in the face repeatedly, ending with a kick where her shoe plants the Rockstar logo on the screen (see her foot in [[:Image:Konoko Jump Kick.jpg|this art]]).]]&lt;br /&gt;
[more pictures coming later]&lt;br /&gt;
* The intro and outro movies are 30 fps (NTSC) or 25 fps (PAL) instead of 15 fps, and intro in particular looks better on PS2. (These movies were turned into mod packages for PC Oni called &amp;quot;HQ Movies (Mac)&amp;quot; and &amp;quot;HQ Intro Movie (Windows)&amp;quot;.)&lt;br /&gt;
* The intro on PC starts with the Bungie logo sequence and then plays the anime intro as part of one movie, but on PS2 there are two intro movies: the first contains a ten-second [https://www.youtube.com/watch?v=itX1fGbkpbo Konoko-based presentation of the Rockstar logo] and the original PC Bungie logo sequence; this movie is unskippable. The second movie contains the original anime intro and is skippable with a button press. See {{SectionLink||Patches}} for a PCSX2 patch which disables movie playback.&lt;br /&gt;
* Different Main Menu.&lt;br /&gt;
* When loading a level, instead of a progress bar against a black background, PS2 Oni has a proper loading screen – the game cycles through three different backgrounds for these.&lt;br /&gt;
* The splashscreens for each level use the same images as on PC, but the title overlay has a different style.&lt;br /&gt;
* The text used for subtitles is larger. Character names in the fly-in portraits are also redone to be much larger.&lt;br /&gt;
* There is less texture variety due to limited memory. Various environmental objects, such as the crates at the very start of Chapter 1, are uniform instead of having differently colored variants. Textures are also reduced to indexed color (they use custom 256-color palettes of 32-bit colors) which does not seem to make a big difference since players have never noted a loss of texture quality.&lt;br /&gt;
* Apparently there is less variety in enemies as well, but this is yet to be documented in detail. See [https://www.reddit.com/r/oni/comments/lpgrx3/i_was_the_art_director_for_ps2_port/ this Reddit thread] for a firsthand account of the nature of these cuts.&lt;br /&gt;
* Lighting is handled differently; there seems to be a higher gamma to the graphical output.&lt;br /&gt;
* Karen in Training is using the dark-haired female cop model.&lt;br /&gt;
* Some of Shinatama&#039;s un-subtitled instructions in the PC version of Training are subtitled on PS2, but not all. Some of these PS2-only subtitles are abbreviated transcriptions, as seen when we compare SNDD and SUBT:&lt;br /&gt;
:: Staggering moves (00_01_76):&lt;br /&gt;
:* SNDD: &amp;quot;Be careful, Konoko! Some attacks are so powerful that they can stagger you even if you block them. Some super moves are so strong they can&#039;t be blocked at all!&amp;quot;&lt;br /&gt;
:* SUBT: &amp;quot;Some powerful attacks can stagger you. Supermoves cannot be blocked.&amp;quot;&lt;br /&gt;
:: Training drone (00_01_89):&lt;br /&gt;
:* SNDD: &amp;quot;I&#039;ll activate a training drone to walk up and down the firing range. Fire at it to disable it.&amp;quot;&lt;br /&gt;
:* SUBT: &amp;quot;Fire at the moving training drone to disable it.&amp;quot;&lt;br /&gt;
:: Completion (00_01_82):&lt;br /&gt;
:* SNDD: &amp;quot;Your comlink stores lots of information about weapons, items, and mission objectives. It also has a help feature, and even a diary built right in.&amp;quot;&lt;br /&gt;
:* SUBT: &amp;quot;Your comlink stores information about weapons, items and mission objectives. It also has a help feature and a diary.&amp;quot;&lt;br /&gt;
*...and some wording has been re-distributed between SUBTs, presumably to even out the number of words appearing onscreen.&lt;br /&gt;
** SNDDs 00_01_86 and 00_01_88:&lt;br /&gt;
::: &amp;quot;Perfect!&amp;quot;&lt;br /&gt;
::: &amp;quot;Let&#039;s try firing at some moving targets. Walk over to the table on the right. See the weapon lying there? That&#039;s a plasma rifle. Pick it up.&amp;quot;&lt;br /&gt;
:* SUBTs 00_01_86 and 00_01_88:&lt;br /&gt;
::: &amp;quot;Perfect! Let&#039;s try firing on some moving targets.&amp;quot;&lt;br /&gt;
::: &amp;quot;Walk over to the table on the right. See the weapon lying there? That&#039;s a plasma rifle. Pick it up.&amp;quot;&lt;br /&gt;
* In Chapter 1, the &amp;quot;-OMM- TTC 1.1&amp;quot; crate with the &amp;lt;code&amp;gt;thedayismine&amp;lt;/code&amp;gt; code has had its message covered over with a metal plate, presumably a tongue-in-cheek way of saying that Dev Mode will not be available to the player.&lt;br /&gt;
&lt;br /&gt;
==Credits differences==&lt;br /&gt;
* Instead of using &amp;quot;Trailer&amp;quot; and &amp;quot;Farewell&amp;quot; for the credits, the PS2 credits have completely different music. This is probably because [https://www.youtube.com/watch?v=Od1ReWIxduo the PC credits sequence] is 171 seconds long (that is, the textual credits, not counting the animated outro), but [https://www.youtube.com/watch?v=Yhqg_MF6dM8 the NTSC version] of the PS2 credits is 156 seconds and [https://www.youtube.com/watch?v=YX0OGl2-WLA the PAL version] is 204 seconds. (The differing frame rate of PAL&#039;s 25 fps vs. NTSC&#039;s 30 fps cannot account for this 48-second time difference, and the credits themselves are identical; the PAL version simply scrolls the credits 30% slower for some reason.) To cover these credit sequences of differing length, a new backing track with a house beat was composed by Rockstar Canada staff. The NTSC version&#039;s music fades out arbitrarily as the credits end, whereas the track behind the longer PAL version continues on an extended (and eyebrow-raising) riff on female pain sounds from the game and ends with an actual coda.&lt;br /&gt;
* The text of the PS2 credits is somewhat different; see {{SectionLink|Quotes/Credits|PS2 outro differences}} for details.&lt;br /&gt;
&lt;br /&gt;
==Directories==&lt;br /&gt;
The root directory of the PS2 CD-ROM is roughly equivalent to [[Oni (folder)|the Oni folder]] of a Windows or Mac installation (see subsections below for exceptions). This similarity isn&#039;t clear at first, as the names of the files and folders are represented by numbers. Most of Oni&#039;s original file and folder names would be too long for a PS2 disc&#039;s ISO 9660 Level 1 file system, which employs [[wp:8.3 filename|8+3 naming]]. Thus, the actual names for these files are given in plain-text directory listings named INDEX.DIR alongside the renamed files. The game executable reads these .DIR files at runtime to find the desired file/folder by name. Here is the directory tree with de-indexed names:&lt;br /&gt;
&lt;br /&gt;
{|border=1 cellspacing=0 style=&amp;quot;font-size:75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Name on disk&lt;br /&gt;
!De-indexed name&lt;br /&gt;
!Notes&lt;br /&gt;
|-valign=top&lt;br /&gt;
|&lt;br /&gt;
*1/&lt;br /&gt;
**1/&lt;br /&gt;
***...&lt;br /&gt;
**19/&lt;br /&gt;
***&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; (#=1-15)&lt;br /&gt;
**20/&lt;br /&gt;
***&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; (#=1-15)&lt;br /&gt;
**21/&lt;br /&gt;
***&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; (#=1-15)&lt;br /&gt;
**2,18&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; (#=3-17)&lt;br /&gt;
|&lt;br /&gt;
*GameDataFolder/&lt;br /&gt;
**IGMD/&lt;br /&gt;
***...&lt;br /&gt;
**pal/&lt;br /&gt;
***level#_palette.pal (#=0-4,6,8-14,18-19)&lt;br /&gt;
**raw/&lt;br /&gt;
***level#_Final.raw (#=0-4,6,8-14,18-19)&lt;br /&gt;
**sep/&lt;br /&gt;
***level#_Final.sep (#=0-4,6,8-14,18-19)&lt;br /&gt;
**intro.bik, outro.bik&lt;br /&gt;
**level#_Final.dat (#=0-4,6,8-14,18-19)&lt;br /&gt;
|&lt;br /&gt;
*Main game data container (c.f. [[GameDataFolder]])&lt;br /&gt;
**Level logic scripts written in [[BSL]]&lt;br /&gt;
***(see [[IGMD]] for an expanded list)&lt;br /&gt;
*Palette folder&lt;br /&gt;
**Palette files referenced by a level&#039;s [[TXMP]]&lt;br /&gt;
*Raw data folder&lt;br /&gt;
**.raw files referenced from the respective .dat&lt;br /&gt;
*Separate data folder&lt;br /&gt;
**.sep files referenced from the respective .dat&lt;br /&gt;
*[[Intro]] and [[outro]] sequences in Bink video format (unused)&lt;br /&gt;
*[[OBD:Instance file format|Instance files]] (game data files)&lt;br /&gt;
|-valign=top&lt;br /&gt;
|colspan=2|&lt;br /&gt;
*ICONS/&lt;br /&gt;
**ONI1.ICO&lt;br /&gt;
*MODULES/&lt;br /&gt;
**IOPRP16.IMG&lt;br /&gt;
**LIBSD.IRX, MCMAN.IRX, MCSERV.IRX, PADMAN.IRX,&amp;lt;br&amp;gt;SDRDRV.IRX, SIO2MAN.IRX&lt;br /&gt;
**ONISS2.IRX &lt;br /&gt;
*SOUNDS/&lt;br /&gt;
**LEVEL#/ (#=0-4,6,8-14,18,19)&lt;br /&gt;
***SOUND.DAT, SOUND.RAW, SOUND.SEP&lt;br /&gt;
**BINK#.VAG (#=0,1,2)&lt;br /&gt;
*INTRO1.PSS, INTRO2.PSS, OUTRO.PSS&lt;br /&gt;
*LOADING.RAW&lt;br /&gt;
*PERSIST.DAT&lt;br /&gt;
|&lt;br /&gt;
*Icons folder (the 18.12.2000 dev build also has an empty &amp;quot;icons&amp;quot; folder)&lt;br /&gt;
**Oni icon (the 18.12.2000 dev build instead has SLIME[1-3].ICO)&lt;br /&gt;
*Standard folder for application modules (hardware drivers, etc.)&lt;br /&gt;
**An &amp;quot;image&amp;quot; module (the 18.12.2000 dev build also has IOPRP165.IMG)&lt;br /&gt;
**Six standard modules typical of PS2 games (the 18.12.2000 dev build has ten more modules,&amp;lt;br&amp;gt;plus one in an OLD folder)&lt;br /&gt;
**A custom module specific to the game (Oni&#039;s &amp;quot;SoundSystem2&amp;quot;)&lt;br /&gt;
*A separate folder containing the sound data&lt;br /&gt;
**Per-level folders&lt;br /&gt;
***SOUND.DAT referenced from level#_Final.dat, .SEP and .RAW looked up from .DAT&lt;br /&gt;
**Three short beeps stored separately (used as menu sounds)&lt;br /&gt;
*Intro and outro video sequences (18.12.2000 dev build has INTRO.PSS and OUTRO.PSS)&lt;br /&gt;
*Game data for the loading screen interface (absent for the 18.12.2000 dev build)&lt;br /&gt;
*A savegame/preference file (unused; see {{SectionLink||Relic files}})&lt;br /&gt;
|-valign=top&lt;br /&gt;
|&lt;br /&gt;
*2&lt;br /&gt;
*3&lt;br /&gt;
|&lt;br /&gt;
*persist.dat&lt;br /&gt;
*Preferences.txt&lt;br /&gt;
|&lt;br /&gt;
*A duplicate of PERSIST.DAT (also unused, see {{SectionLink||Relic files}})&lt;br /&gt;
*A vestigial file listing locations for the game data (absent in 18.12.2000 dev build)&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2|&lt;br /&gt;
*SLUS_200.64&lt;br /&gt;
*SYSTEM.CNF&lt;br /&gt;
|&lt;br /&gt;
*The game binary (a.k.a. executable)&lt;br /&gt;
*Standard boot information for a PS2 game&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Raw and separate files===&lt;br /&gt;
Although the GameDataFolder generally matches the PC version, one notable exception is that raw and separate files are tucked away into &#039;&#039;&#039;raw&#039;&#039;&#039; and &#039;&#039;&#039;sep&#039;&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Palette files===&lt;br /&gt;
There is also a &#039;&#039;&#039;pal&#039;&#039;&#039; directory holding a set of &#039;&#039;&#039;level#_palette.pal&#039;&#039;&#039; files (one per level); in PS2 Oni, all the textures (TXMP files) use compact 8-bit storage (i.e., each pixel is an index into a palette of 256 colors), as opposed to Windows and Mac TXMPs which typically use 16- or 24-bit color.&lt;br /&gt;
&lt;br /&gt;
===Relic files===&lt;br /&gt;
*&#039;&#039;&#039;intro.bik&#039;&#039;&#039; and &#039;&#039;&#039;outro.bik&#039;&#039;&#039; are not used by the engine (they&#039;re superseded by &#039;&#039;&#039;INTRO2.PSS&#039;&#039;&#039; and &#039;&#039;&#039;OUTRO.PSS&#039;&#039;&#039;); they&#039;re just taking up 56 MB of storage space for nothing (the .PSS versions take up another 188 MB).&lt;br /&gt;
*The [[persist.dat|save-game]] files &#039;&#039;&#039;persist.dat&#039;&#039;&#039; and &#039;&#039;&#039;PERSIST.DAT&#039;&#039;&#039; are little-endian (i.e., created in Windows or on a PS2 dev unit) and are byte-identical to each other. Actual save data is stored in a standard PS2 format on the memory card (obviously the game cannot write to files on disc). They might be a development relic of the PS2 port since they are much smaller than a PC persist.dat (also, one is named in all-caps like the other files Rockstar added to the game directory).&lt;br /&gt;
&lt;br /&gt;
==Binary data format==&lt;br /&gt;
The internal structure of &#039;&#039;&#039;level#_Final.dat&#039;&#039;&#039; and the corresponding &#039;&#039;&#039;.raw&#039;&#039;&#039; and &#039;&#039;&#039;.sep&#039;&#039;&#039; is compliant with the &amp;quot;VR31&amp;quot; iteration of [[instance file]]s, although many resources were optimized for minimal storage space (textures use indexed colors, character animations has been split into a trimmed-down TRAM and an &amp;quot;extra&amp;quot; type, [[TREX]], that only exists for combat moves and such, etc.). A list of changed resource types is on [[Engine terminology]].&lt;br /&gt;
&lt;br /&gt;
Sounds are encoded using Sony&#039;s VAG format/codec, and (unlike for other Oni versions) their waveform data isn&#039;t stored in &#039;&#039;&#039;level#_Final.raw&#039;&#039;&#039; (see {{SectionLink|OBD:SNDD|PS2 implementation}}). Instead the SNDD instances in &#039;&#039;&#039;level#_Final.dat&#039;&#039;&#039; contain links to &#039;&#039;&#039;SOUNDS/LEVEL#/SOUND.DAT&#039;&#039;&#039;, which in turn references waveform data stored either in &#039;&#039;&#039;SOUNDS/LEVEL#/SOUND.SEP&#039;&#039;&#039; (raw VAG data without any headers) or &#039;&#039;&#039;SOUNDS/LEVEL#/SOUND.RAW&#039;&#039;&#039; (raw VAG data with minimal headers to allow the lookup of each sound). The three &#039;&#039;&#039;BINK#.VAG&#039;&#039;&#039; files are beep-like sounds picked from Oni&#039;s game data (SNDDbeep43, SNDDbeep24 and SNDDbeep23, respectively); they have a VAG header and are valid sounds for VAG-capable apps.&lt;br /&gt;
&lt;br /&gt;
==Level scripts==&lt;br /&gt;
The PS2 IGMD includes the same pre-beta folders as the [[European Mac releases]]: scripting logic intended for now-missing chapters and test levels. Some &amp;quot;test&amp;quot; subfolders are present for &#039;&#039;&#039;EnvWarehouse&#039;&#039;&#039; and &#039;&#039;&#039;manplant&#039;&#039;&#039;, with backups of the scripts for levels 1 and 2. When it comes to the Windows/Mac differences in the [[Oni (folder)/GameDataFolder/IGMD/tctf_ii|tctf_ii]] folder, the scripts match the Windows versions (although the folder is named &amp;quot;tctf_II&amp;quot; with capital &#039;i&#039;s in the INDEX.DIR). However, the PS2 scripts have differences of their own:&lt;br /&gt;
*Many &amp;quot;sleep&amp;quot; commands have been added or removed to adjust cutscene timing.&lt;br /&gt;
*Two dialogue lines in compound.bsl have been renamed, and in a number of places where dialogue is played, a short sleep command and a new dialogue line appear to be added afterward (see compound.bsl, lab_cutscene.bsl and warehouse_train2.bsl); could these be original lines split into two pieces?&lt;br /&gt;
*A BSL function called gs_nearclipplane_set was added so that it could be called from warehouse_cutscene.bsl.&lt;br /&gt;
*&amp;quot;input 1&amp;quot; isn&#039;t called at the beginning of Chapter 1 until after Shinatama introduces the HUD at the end of the intro, rather than before.&lt;br /&gt;
*A possible fix in manplant_level_logic.bsl that disables the trigger volume for SP2 when SP3 is loaded (can it be reached by backtracking?).&lt;br /&gt;
*A possible fix in roof.bsl that sets an objective when SP4 is loaded.&lt;br /&gt;
*The PS2 version of BSL implements at least two new script variables, &#039;&#039;&#039;psx2_ambient2&#039;&#039;&#039; and &#039;&#039;&#039;psx2_directional2&#039;&#039;&#039; (both of them floats). They appear to be white light intensities (i.e., shades of gray) used for the Gouraud shading of characters and other M3GM (powerups, weapons, furniture, animated objects). In Windows/Mac Oni there is no possibility to adjust ambient or directional light intensities through scripts: the main directional light has intensity 0.7, the auxiliary directional light (turned on at higher quality settings) has intensity 0.3, and the ambient intensity is either 0.65 or 0.55 (larger if one directional light, smaller if two directional lights).&lt;br /&gt;
&lt;br /&gt;
==Patches==&lt;br /&gt;
Punk7890 of TCRF (The Cutting Room Floor) found that a number of Dev Mode features were still present in the PS2 port. Some need hex-patching in order to activate them, and some can be toggled using the controller once activated, showing that Rockstar found these features useful during their port work. The patches (for the U.S. release of the game) are found [https://tcrf.net/Oni_(PlayStation_2) HERE].&lt;br /&gt;
&lt;br /&gt;
In order to apply the patches on a PS2, you would use a cheat device like GameShark, which few people have. If you&#039;re running Oni in PCSX2, you&#039;ll have an easy time adapting these patches. Create a plain-text file called FD9CD8FC.pnach (that&#039;s the CRC of the U.S. release of the game), and make sure there&#039;s no &amp;quot;.txt&amp;quot; at the end of the name. Place it in the &amp;quot;cheats&amp;quot; directory for PCSX2, and inside the file, create a line of text for each patch you want to use, using the following guide to convert the patch on the TCRF wiki:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:auto; margin-right:auto;&amp;quot;&lt;br /&gt;
!TCRF wiki&lt;br /&gt;
!&lt;br /&gt;
!.pnach file&lt;br /&gt;
|-&lt;br /&gt;
|0033A904&amp;lt;br&amp;gt;00000001&lt;br /&gt;
|becomes&lt;br /&gt;
|&amp;lt;tt&amp;gt;patch=1,EE,0033A904,word,00000001 # FPS counter&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The comment at the end of the .pnach file&#039;s line is optional, but you will definitely want to label your patches.&lt;br /&gt;
&lt;br /&gt;
An additional patch for skipping the intro movies is below, courtesy of [[User:Iritscen|Iritscen]]. Place this patch in a .pnach file to disable the movie-playing function so that the game skips right to the loading screen for the Main Menu. Make sure not to have this active when finishing the game or you won&#039;t see the outro movie and credits.&lt;br /&gt;
&lt;br /&gt;
 patch=1,EE,001C726C,word,00000000 # no movies&lt;br /&gt;
&lt;br /&gt;
[[Category:Oni history]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Oni_(PlayStation_2)&amp;diff=47120</id>
		<title>Oni (PlayStation 2)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Oni_(PlayStation_2)&amp;diff=47120"/>
		<updated>2026-04-16T20:12:52Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: this page doesn&amp;#039;t exist, and the deviations are covered on each template&amp;#039;s OBD page, so let&amp;#039;s link to the list of changed templates instead&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Midway through Oni&#039;s development, in 1999, Take-Two Interactive purchased a stake in Bungie and became the publisher for the upcoming game. In addition to their investment, T2 stipulated that a PlayStation 2 port would be released alongside Oni for Windows and Macintosh. That port was created by Rockstar Toronto (known at the time as Rockstar Canada), and because the game had originally been intended for a PC with a hard drive, changes had to be made in order to load the game more quickly from CD-ROM. Even after this work, the PS2 version has been noted for its long load times.&lt;br /&gt;
&lt;br /&gt;
Today, Oni runs well in the emulator [https://pcsx2.net/ PCSX2]. When using this emulator, load times are reduced by placing an ISO of the game disc on your hard drive. You can also easily apply patches from within PCSX2 instead of having to buy a cheat device for your PS2, so this is the best way to run the game.&lt;br /&gt;
&lt;br /&gt;
==Gameplay differences==&lt;br /&gt;
* Cheats are entered differently; see {{SectionLink|Cheats|PlayStation 2}}. Also, they do not require the game to be beaten first, which is extremely helpful since the console controls make this version harder.&lt;br /&gt;
* The cooldown exploit has been fixed.&lt;br /&gt;
* The AI for the androids in Training is glitchy or overly aggressive. They might try to attack you after beating Karen, and the training bots sometimes forget the defense/offense program they&#039;re supposed to be following and wantonly attack you. It remains to be seen if this is an overall glitch with AI in the PS2 version.&lt;br /&gt;
* In the opening cutscene for Chapter 13, Konoko fires two or three times at the glass in the ceiling instead of once. (This probably means you have fewer bullets in your clip when the level starts, can someone confirm?)&lt;br /&gt;
&lt;br /&gt;
==Visual differences==&lt;br /&gt;
[[Image:Konoko from T2 PS2 intro.png|250px|thumb|right|The PS2-only movie where Konoko hits you in the face repeatedly, ending with a kick where her shoe plants the Rockstar logo on the screen (see her foot in [[:Image:Konoko Jump Kick.jpg|this art]]).]]&lt;br /&gt;
[more pictures coming later]&lt;br /&gt;
* The intro and outro movies are 30 fps (NTSC) or 25 fps (PAL) instead of 15 fps, and intro in particular looks better on PS2. (These movies were turned into mod packages for PC Oni called &amp;quot;HQ Movies (Mac)&amp;quot; and &amp;quot;HQ Intro Movie (Windows)&amp;quot;.)&lt;br /&gt;
* The intro on PC starts with the Bungie logo sequence and then plays the anime intro as part of one movie, but on PS2 there are two intro movies: the first contains a ten-second [https://www.youtube.com/watch?v=itX1fGbkpbo Konoko-based presentation of the Rockstar logo] and the original PC Bungie logo sequence; this movie is unskippable. The second movie contains the original anime intro and is skippable with a button press. See {{SectionLink||Patches}} for a PCSX2 patch which disables movie playback.&lt;br /&gt;
* Different Main Menu.&lt;br /&gt;
* When loading a level, instead of a progress bar against a black background, PS2 Oni has a proper loading screen – the game cycles through three different backgrounds for these.&lt;br /&gt;
* The splashscreens for each level use the same images as on PC, but the title overlay has a different style.&lt;br /&gt;
* The text used for subtitles is larger. Character names in the fly-in portraits are also redone to be much larger.&lt;br /&gt;
* There is less texture variety due to limited memory. Various environmental objects, such as the crates at the very start of Chapter 1, are uniform instead of having differently colored variants. Textures are also reduced to indexed color (they use custom 256-color palettes of 32-bit colors) which does not seem to make a big difference since players have never noted a loss of texture quality.&lt;br /&gt;
* Apparently there is less variety in enemies as well, but this is yet to be documented in detail. See [https://www.reddit.com/r/oni/comments/lpgrx3/i_was_the_art_director_for_ps2_port/ this Reddit thread] for a firsthand account of the nature of these cuts.&lt;br /&gt;
* Lighting is handled differently; there seems to be a higher gamma to the graphical output.&lt;br /&gt;
* Karen in Training is using the dark-haired female cop model.&lt;br /&gt;
* Some of Shinatama&#039;s un-subtitled instructions in the PC version of Training are subtitled on PS2, but not all. Some of these PS2-only subtitles are abbreviated transcriptions, as seen when we compare SNDD and SUBT:&lt;br /&gt;
:: Staggering moves (00_01_76):&lt;br /&gt;
:* SNDD: &amp;quot;Be careful, Konoko! Some attacks are so powerful that they can stagger you even if you block them. Some super moves are so strong they can&#039;t be blocked at all!&amp;quot;&lt;br /&gt;
:* SUBT: &amp;quot;Some powerful attacks can stagger you. Supermoves cannot be blocked.&amp;quot;&lt;br /&gt;
:: Training drone (00_01_89):&lt;br /&gt;
:* SNDD: &amp;quot;I&#039;ll activate a training drone to walk up and down the firing range. Fire at it to disable it.&amp;quot;&lt;br /&gt;
:* SUBT: &amp;quot;Fire at the moving training drone to disable it.&amp;quot;&lt;br /&gt;
:: Completion (00_01_82):&lt;br /&gt;
:* SNDD: &amp;quot;Your comlink stores lots of information about weapons, items, and mission objectives. It also has a help feature, and even a diary built right in.&amp;quot;&lt;br /&gt;
:* SUBT: &amp;quot;Your comlink stores information about weapons, items and mission objectives. It also has a help feature and a diary.&amp;quot;&lt;br /&gt;
*...and some wording has been re-distributed between SUBTs, presumably to even out the number of words appearing onscreen.&lt;br /&gt;
** SNDDs 00_01_86 and 00_01_88:&lt;br /&gt;
::: &amp;quot;Perfect!&amp;quot;&lt;br /&gt;
::: &amp;quot;Let&#039;s try firing at some moving targets. Walk over to the table on the right. See the weapon lying there? That&#039;s a plasma rifle. Pick it up.&amp;quot;&lt;br /&gt;
:* SUBTs 00_01_86 and 00_01_88:&lt;br /&gt;
::: &amp;quot;Perfect! Let&#039;s try firing on some moving targets.&amp;quot;&lt;br /&gt;
::: &amp;quot;Walk over to the table on the right. See the weapon lying there? That&#039;s a plasma rifle. Pick it up.&amp;quot;&lt;br /&gt;
* In Chapter 1, the &amp;quot;-OMM- TTC 1.1&amp;quot; crate with the &amp;lt;code&amp;gt;thedayismine&amp;lt;/code&amp;gt; code has had its message covered over with a metal plate, presumably a tongue-in-cheek way of saying that Dev Mode will not be available to the player.&lt;br /&gt;
&lt;br /&gt;
==Credits differences==&lt;br /&gt;
* Instead of using &amp;quot;Trailer&amp;quot; and &amp;quot;Farewell&amp;quot; for the credits, the PS2 credits have completely different music. This is probably because [https://www.youtube.com/watch?v=Od1ReWIxduo the PC credits sequence] is 171 seconds long (that is, the textual credits, not counting the animated outro), but [https://www.youtube.com/watch?v=Yhqg_MF6dM8 the NTSC version] of the PS2 credits is 156 seconds and [https://www.youtube.com/watch?v=YX0OGl2-WLA the PAL version] is 204 seconds. (The differing frame rate of PAL&#039;s 25 fps vs. NTSC&#039;s 30 fps cannot account for this 48-second time difference, and the credits themselves are identical; the PAL version simply scrolls the credits 30% slower for some reason.) To cover these credit sequences of differing length, a new backing track with a house beat was composed by Rockstar Canada staff. The NTSC version&#039;s music fades out arbitrarily as the credits end, whereas the track behind the longer PAL version continues on an extended (and eyebrow-raising) riff on female pain sounds from the game and ends with an actual coda.&lt;br /&gt;
* The text of the PS2 credits is somewhat different; see {{SectionLink|Quotes/Credits|PS2 outro differences}} for details.&lt;br /&gt;
&lt;br /&gt;
==Directories==&lt;br /&gt;
The root directory of the PS2 CD-ROM is roughly equivalent to [[Oni (folder)|the Oni folder]] of a Windows or Mac installation (see subsections below for exceptions). This similarity isn&#039;t clear at first, as the names of the files and folders are represented by numbers. Most of Oni&#039;s original file and folder names would be too long for a PS2 disc&#039;s ISO 9660 Level 1 file system, which employs [[wp:8.3 filename|8+3 naming]]. Thus, the actual names for these files are given in plain-text directory listings named INDEX.DIR alongside the renamed files. The game executable reads these .DIR files at runtime to find the desired file/folder by name. Here is the directory tree with de-indexed names:&lt;br /&gt;
&lt;br /&gt;
{|border=1 cellspacing=0 style=&amp;quot;font-size:75%&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Name on disk&lt;br /&gt;
!De-indexed name&lt;br /&gt;
!Notes&lt;br /&gt;
|-valign=top&lt;br /&gt;
|&lt;br /&gt;
*1/&lt;br /&gt;
**1/&lt;br /&gt;
***...&lt;br /&gt;
**19/&lt;br /&gt;
***&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; (#=1-15)&lt;br /&gt;
**20/&lt;br /&gt;
***&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; (#=1-15)&lt;br /&gt;
**21/&lt;br /&gt;
***&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; (#=1-15)&lt;br /&gt;
**2,18&lt;br /&gt;
**&amp;lt;nowiki&amp;gt;#&amp;lt;/nowiki&amp;gt; (#=3-17)&lt;br /&gt;
|&lt;br /&gt;
*GameDataFolder/&lt;br /&gt;
**IGMD/&lt;br /&gt;
***...&lt;br /&gt;
**pal/&lt;br /&gt;
***level#_palette.pal (#=0-4,6,8-14,18-19)&lt;br /&gt;
**raw/&lt;br /&gt;
***level#_Final.raw (#=0-4,6,8-14,18-19)&lt;br /&gt;
**sep/&lt;br /&gt;
***level#_Final.sep (#=0-4,6,8-14,18-19)&lt;br /&gt;
**intro.bik, outro.bik&lt;br /&gt;
**level#_Final.dat (#=0-4,6,8-14,18-19)&lt;br /&gt;
|&lt;br /&gt;
*Main game data container (c.f. [[GameDataFolder]])&lt;br /&gt;
**Level logic scripts written in [[BSL]]&lt;br /&gt;
***(see [[IGMD]] for an expanded list)&lt;br /&gt;
*Palette folder&lt;br /&gt;
**Palette files referenced by a level&#039;s [[TXMP]]&lt;br /&gt;
*Raw data folder&lt;br /&gt;
**.raw files referenced from the respective .dat&lt;br /&gt;
*Separate data folder&lt;br /&gt;
**.sep files referenced from the respective .dat&lt;br /&gt;
*[[Intro]] and [[outro]] sequences in Bink video format (unused)&lt;br /&gt;
*[[OBD:Instance file format|Instance files]] (game data files)&lt;br /&gt;
|-valign=top&lt;br /&gt;
|colspan=2|&lt;br /&gt;
*ICONS/&lt;br /&gt;
**ONI1.ICO&lt;br /&gt;
*MODULES/&lt;br /&gt;
**IOPRP16.IMG&lt;br /&gt;
**LIBSD.IRX, MCMAN.IRX, MCSERV.IRX, PADMAN.IRX,&amp;lt;br&amp;gt;SDRDRV.IRX, SIO2MAN.IRX&lt;br /&gt;
**ONISS2.IRX &lt;br /&gt;
*SOUNDS/&lt;br /&gt;
**LEVEL#/ (#=0-4,6,8-14,18,19)&lt;br /&gt;
***SOUND.DAT, SOUND.RAW, SOUND.SEP&lt;br /&gt;
**BINK#.VAG (#=0,1,2)&lt;br /&gt;
*INTRO1.PSS, INTRO2.PSS, OUTRO.PSS&lt;br /&gt;
*LOADING.RAW&lt;br /&gt;
*PERSIST.DAT&lt;br /&gt;
|&lt;br /&gt;
*Icons folder (the 18.12.2000 dev build also has an empty &amp;quot;icons&amp;quot; folder)&lt;br /&gt;
**Oni icon (the 18.12.2000 dev build instead has SLIME[1-3].ICO)&lt;br /&gt;
*Standard folder for application modules (hardware drivers, etc.)&lt;br /&gt;
**An &amp;quot;image&amp;quot; module (the 18.12.2000 dev build also has IOPRP165.IMG)&lt;br /&gt;
**Six standard modules typical of PS2 games (the 18.12.2000 dev build has ten more modules,&amp;lt;br&amp;gt;plus one in an OLD folder)&lt;br /&gt;
**A custom module specific to the game (Oni&#039;s &amp;quot;SoundSystem2&amp;quot;)&lt;br /&gt;
*A separate folder containing the sound data&lt;br /&gt;
**Per-level folders&lt;br /&gt;
***SOUND.DAT referenced from level#_Final.dat, .SEP and .RAW looked up from .DAT&lt;br /&gt;
**Three short beeps stored separately (used as menu sounds)&lt;br /&gt;
*Intro and outro video sequences (18.12.2000 dev build has INTRO.PSS and OUTRO.PSS)&lt;br /&gt;
*Game data for the loading screen interface (absent for the 18.12.2000 dev build)&lt;br /&gt;
*A savegame/preference file (unused; see {{SectionLink||Relic files}})&lt;br /&gt;
|-valign=top&lt;br /&gt;
|&lt;br /&gt;
*2&lt;br /&gt;
*3&lt;br /&gt;
|&lt;br /&gt;
*persist.dat&lt;br /&gt;
*Preferences.txt&lt;br /&gt;
|&lt;br /&gt;
*A duplicate of PERSIST.DAT (also unused, see {{SectionLink||Relic files}})&lt;br /&gt;
*A vestigial file listing locations for the game data (absent in 18.12.2000 dev build)&lt;br /&gt;
|-&lt;br /&gt;
|colspan=2|&lt;br /&gt;
*SLUS_200.64&lt;br /&gt;
*SYSTEM.CNF&lt;br /&gt;
|&lt;br /&gt;
*The game binary (a.k.a. executable)&lt;br /&gt;
*Standard boot information for a PS2 game&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Raw and separate files===&lt;br /&gt;
Although the GameDataFolder generally matches the PC version, one notable exception is that raw and separate files are tucked away into &#039;&#039;&#039;raw&#039;&#039;&#039; and &#039;&#039;&#039;sep&#039;&#039;&#039; directories.&lt;br /&gt;
&lt;br /&gt;
===Palette files===&lt;br /&gt;
There is also a &#039;&#039;&#039;pal&#039;&#039;&#039; directory holding a set of &#039;&#039;&#039;level#_palette.pal&#039;&#039;&#039; files (one per level); in PS2 Oni, all the textures (TXMP files) use compact 8-bit storage (i.e., each pixel is an index into a palette of 256 colors), as opposed to Windows and Mac TXMPs which typically use 16- or 24-bit color.&lt;br /&gt;
&lt;br /&gt;
===Relic files===&lt;br /&gt;
*&#039;&#039;&#039;intro.bik&#039;&#039;&#039; and &#039;&#039;&#039;outro.bik&#039;&#039;&#039; are not used by the engine (they&#039;re superseded by &#039;&#039;&#039;INTRO2.PSS&#039;&#039;&#039; and &#039;&#039;&#039;OUTRO.PSS&#039;&#039;&#039;); they&#039;re just taking up 56 MB of storage space for nothing (the .PSS versions take up another 188 MB).&lt;br /&gt;
*The [[persist.dat|save-game]] files &#039;&#039;&#039;persist.dat&#039;&#039;&#039; and &#039;&#039;&#039;PERSIST.DAT&#039;&#039;&#039; are little-endian (i.e., created in Windows or on a PS2 dev unit) and are byte-identical to each other. Actual save data is stored in a standard PS2 format on the memory card (obviously the game cannot write to files on disc). They might be a development relic of the PS2 port since they are much smaller than a PC persist.dat (also, one is named in all-caps like the other files Rockstar added to the game directory).&lt;br /&gt;
&lt;br /&gt;
==Binary data format==&lt;br /&gt;
The internal structure of &#039;&#039;&#039;level#_Final.dat&#039;&#039;&#039; and the corresponding &#039;&#039;&#039;.raw&#039;&#039;&#039; and &#039;&#039;&#039;.sep&#039;&#039;&#039; is compliant with the &amp;quot;VR31&amp;quot; iteration of instance files, although many resources were optimized for minimal storage space (textures use indexed colors, character animations has been split into a trimmed-down TRAM and an &amp;quot;extra&amp;quot; type, [[TREX]], that only exists for combat moves and such, etc.). A list of changed resource types is on [[Engine terminology]].&lt;br /&gt;
&lt;br /&gt;
Sounds are encoded using Sony&#039;s VAG format/codec, and (unlike for other Oni versions) their waveform data isn&#039;t stored in &#039;&#039;&#039;level#_Final.raw&#039;&#039;&#039; (see {{SectionLink|OBD:SNDD|PS2 implementation}}). Instead the SNDD instances in &#039;&#039;&#039;level#_Final.dat&#039;&#039;&#039; contain links to &#039;&#039;&#039;SOUNDS/LEVEL#/SOUND.DAT&#039;&#039;&#039;, which in turn references waveform data stored either in &#039;&#039;&#039;SOUNDS/LEVEL#/SOUND.SEP&#039;&#039;&#039; (raw VAG data without any headers) or &#039;&#039;&#039;SOUNDS/LEVEL#/SOUND.RAW&#039;&#039;&#039; (raw VAG data with minimal headers to allow the lookup of each sound). The three &#039;&#039;&#039;BINK#.VAG&#039;&#039;&#039; files are beep-like sounds picked from Oni&#039;s game data (SNDDbeep43, SNDDbeep24 and SNDDbeep23, respectively); they have a VAG header and are valid sounds for VAG-capable apps.&lt;br /&gt;
&lt;br /&gt;
==Level scripts==&lt;br /&gt;
The PS2 IGMD includes the same pre-beta folders as the [[European Mac releases]]: scripting logic intended for now-missing chapters and test levels. Some &amp;quot;test&amp;quot; subfolders are present for &#039;&#039;&#039;EnvWarehouse&#039;&#039;&#039; and &#039;&#039;&#039;manplant&#039;&#039;&#039;, with backups of the scripts for levels 1 and 2. When it comes to the Windows/Mac differences in the [[Oni (folder)/GameDataFolder/IGMD/tctf_ii|tctf_ii]] folder, the scripts match the Windows versions (although the folder is named &amp;quot;tctf_II&amp;quot; with capital &#039;i&#039;s in the INDEX.DIR). However, the PS2 scripts have differences of their own:&lt;br /&gt;
*Many &amp;quot;sleep&amp;quot; commands have been added or removed to adjust cutscene timing.&lt;br /&gt;
*Two dialogue lines in compound.bsl have been renamed, and in a number of places where dialogue is played, a short sleep command and a new dialogue line appear to be added afterward (see compound.bsl, lab_cutscene.bsl and warehouse_train2.bsl); could these be original lines split into two pieces?&lt;br /&gt;
*A BSL function called gs_nearclipplane_set was added so that it could be called from warehouse_cutscene.bsl.&lt;br /&gt;
*&amp;quot;input 1&amp;quot; isn&#039;t called at the beginning of Chapter 1 until after Shinatama introduces the HUD at the end of the intro, rather than before.&lt;br /&gt;
*A possible fix in manplant_level_logic.bsl that disables the trigger volume for SP2 when SP3 is loaded (can it be reached by backtracking?).&lt;br /&gt;
*A possible fix in roof.bsl that sets an objective when SP4 is loaded.&lt;br /&gt;
*The PS2 version of BSL implements at least two new script variables, &#039;&#039;&#039;psx2_ambient2&#039;&#039;&#039; and &#039;&#039;&#039;psx2_directional2&#039;&#039;&#039; (both of them floats). They appear to be white light intensities (i.e., shades of gray) used for the Gouraud shading of characters and other M3GM (powerups, weapons, furniture, animated objects). In Windows/Mac Oni there is no possibility to adjust ambient or directional light intensities through scripts: the main directional light has intensity 0.7, the auxiliary directional light (turned on at higher quality settings) has intensity 0.3, and the ambient intensity is either 0.65 or 0.55 (larger if one directional light, smaller if two directional lights).&lt;br /&gt;
&lt;br /&gt;
==Patches==&lt;br /&gt;
Punk7890 of TCRF (The Cutting Room Floor) found that a number of Dev Mode features were still present in the PS2 port. Some need hex-patching in order to activate them, and some can be toggled using the controller once activated, showing that Rockstar found these features useful during their port work. The patches (for the U.S. release of the game) are found [https://tcrf.net/Oni_(PlayStation_2) HERE].&lt;br /&gt;
&lt;br /&gt;
In order to apply the patches on a PS2, you would use a cheat device like GameShark, which few people have. If you&#039;re running Oni in PCSX2, you&#039;ll have an easy time adapting these patches. Create a plain-text file called FD9CD8FC.pnach (that&#039;s the CRC of the U.S. release of the game), and make sure there&#039;s no &amp;quot;.txt&amp;quot; at the end of the name. Place it in the &amp;quot;cheats&amp;quot; directory for PCSX2, and inside the file, create a line of text for each patch you want to use, using the following guide to convert the patch on the TCRF wiki:&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:auto; margin-right:auto;&amp;quot;&lt;br /&gt;
!TCRF wiki&lt;br /&gt;
!&lt;br /&gt;
!.pnach file&lt;br /&gt;
|-&lt;br /&gt;
|0033A904&amp;lt;br&amp;gt;00000001&lt;br /&gt;
|becomes&lt;br /&gt;
|&amp;lt;tt&amp;gt;patch=1,EE,0033A904,word,00000001 # FPS counter&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The comment at the end of the .pnach file&#039;s line is optional, but you will definitely want to label your patches.&lt;br /&gt;
&lt;br /&gt;
An additional patch for skipping the intro movies is below, courtesy of [[User:Iritscen|Iritscen]]. Place this patch in a .pnach file to disable the movie-playing function so that the game skips right to the loading screen for the Main Menu. Make sure not to have this active when finishing the game or you won&#039;t see the outro movie and credits.&lt;br /&gt;
&lt;br /&gt;
 patch=1,EE,001C726C,word,00000000 # no movies&lt;br /&gt;
&lt;br /&gt;
[[Category:Oni history]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Engine_terminology&amp;diff=47119</id>
		<title>Engine terminology</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Engine_terminology&amp;diff=47119"/>
		<updated>2026-04-16T20:09:07Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: clarified which templates differ on Mac and PS2 (not guaranteed to be a complete list)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UpdatedForOniX|1.0.0}}&lt;br /&gt;
Here is a high-level view of the different versions of the Oni engine and a brief introduction to some of the subsystems in the engine. It&#039;s meant to be read in tandem with [[Game data terminology]].&lt;br /&gt;
&lt;br /&gt;
==Engine versions==&lt;br /&gt;
There are three versions of Oni&#039;s engine found in released versions of the game. They are referred to interchangeably by various names.&lt;br /&gt;
;Windows retail, Windows, PC, v1.0&lt;br /&gt;
This version of the engine can be identified as &#039;&#039;&#039;v1.0&#039;&#039;&#039; from [[Oni (folder)/readme.txt|its read-me]] but is often referred to as the &amp;quot;Windows&amp;quot; or &amp;quot;PC&amp;quot; engine. This version of the engine was used for all localized Windows releases translated into non-English languages as well.&lt;br /&gt;
&lt;br /&gt;
;Mac, Windows demo, v1.1&amp;lt;!--, OniX--&amp;gt;&lt;br /&gt;
This version was used for Mac retail and demo releases and can be identified as &#039;&#039;&#039;v1.1&#039;&#039;&#039; from [[Oni (folder)/Oni ReadMe|the Mac read-me]], and underwent another month of development after v1.0. It was also used for the Windows demo, but is sometimes referred to as the &amp;quot;Mac&amp;quot; engine for simplicity. &amp;lt;!--[[OniX]] is built on this version of the engine.--&amp;gt; Its most obvious difference is the addition of .sep files to the GameDataFolder which now contain some of the data formerly stored in .raw files. The format of the individual templates is generally unchanged (with minor differences in [[SNDD]] and [[TRAM]]).&lt;br /&gt;
&lt;br /&gt;
;PS2&lt;br /&gt;
This version was created by Rockstar North for the PlayStation 2 port. It also uses .sep files but makes additional changes to templates (AGQG, IGSt, M3GM, SNDD, TRAM/TREX, TSFT, TSGA and TXMP). It went through another 3 weeks to a month of development after the Mac version was completed and could possibly be thought of as a v1.2 engine, but is probably best understood as a fork of the v1.1 engine made for PS2 compatibility.&lt;br /&gt;
&lt;br /&gt;
==Subsystems==&lt;br /&gt;
The engine consists of various subsystems, some of which have colorful animé-related names and some of which have boring descriptive names. If an article is devoted to documenting more of that subsystem, it will be linked.&lt;br /&gt;
&lt;br /&gt;
;AI2&lt;br /&gt;
The second iteration of the code for driving the [[AI|AIs]] (NPCs).&lt;br /&gt;
&lt;br /&gt;
;Akira&lt;br /&gt;
The [[Graphics|environment]] code, responsible for holding the game world in memory. Named for the 1988 film [[wp:Akira (1988 film)|Akira]].&lt;br /&gt;
&lt;br /&gt;
;BFW&lt;br /&gt;
A layer rather than a subsystem: stands for &amp;quot;BungieFrameWork&amp;quot;. This is the lower layer of the game engine, consisting of generalized cross-platform engine code. The upper layer is simply called &amp;quot;Oni&amp;quot; and contains specializations needed to implement Oni&#039;s gameplay logic.&lt;br /&gt;
&lt;br /&gt;
;BSL&lt;br /&gt;
Standing for &amp;quot;BFW Scripting Language&amp;quot;, this is the subsystem responsible for running Oni&#039;s [[BSL|scripting language]].&lt;br /&gt;
&lt;br /&gt;
;Motoko&lt;br /&gt;
The renderer code, responsible for drawing Oni&#039;s [[graphics]]. Named for the main character of the 1995 film [[Ghost in the Shell]].&lt;br /&gt;
&lt;br /&gt;
;Totoro&lt;br /&gt;
The code for Oni&#039;s 3D [[Animation|animation system]]. Named for the 1988 film [[wp:My Neighbor Totoro|My Neighbor Totoro]].&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;Et cetera&#039;&#039;&lt;br /&gt;
There are various other subsystems that we essentially never talk about, such as LocalInput, WindowManager, SoundSystem2 and TemplateManager.&lt;br /&gt;
&lt;br /&gt;
[[Category:Engine docs]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:Instance_file_format&amp;diff=47118</id>
		<title>OBD:Instance file format</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:Instance_file_format&amp;diff=47118"/>
		<updated>2026-04-16T20:03:53Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: looking at this checksum statement again, I do think this was written for OniSplit v1.0, but that never left alpha so it&amp;#039;s more useful to document v0.99&amp;#039;s format&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UpdatedForOniX|1.0.0}}&amp;lt;!--Documentation below is waiting to be un-commented.--&amp;gt;&lt;br /&gt;
{{OBD Home}}&lt;br /&gt;
{{Hatnote|&amp;quot;.dat&amp;quot; redirects here; for other files ending in &amp;quot;.dat&amp;quot;, see [[Oni (folder)]].&amp;lt;br&amp;gt;&lt;br /&gt;
:You should read [[Engine terminology]] and [[Game data terminology]] before this page.&amp;lt;br&amp;gt;&lt;br /&gt;
:The [[raw|Raw and separate file formats]] page should be read after this one.}}&lt;br /&gt;
Files in GameDataFolder/ named &amp;quot;level[0-19]_Final.dat&amp;quot;, together with &amp;quot;.raw&amp;quot; and sometimes &amp;quot;.sep&amp;quot; counterparts, contain the game data for Oni. These are called &amp;quot;instance files&amp;quot; internally, but a more common-sense name for them is level data files. The format described below was also used for the tool files which supplied the GUI for the in-game editor, however the retail Oni game application refuses to load tool files; for the story behind the tool files, see [[level0_Tools]].&lt;br /&gt;
&lt;br /&gt;
The level 0 files do not contain resources for a specific level but rather resources (instances) shared across all levels. Level 0 is loaded when the game starts and is never unloaded. All other level files, 1-19, are only loaded when their corresponding level starts and then unloaded when it ends. Oni can only hold two level files in memory concurrently, thus resources have to be duplicated on disk whenever a character class, sound effect, etc. occurs in more than one level. For instance, although there are only 2,380 unique sounds in the game, there are 7,386 sounds stored across all level data files.&lt;br /&gt;
{{TOClimit}}&lt;br /&gt;
==Blank space and garbage==&lt;br /&gt;
The structure of the level data files files reflects the way in which Bungie West chose to store levels in memory. So when we read the data in the files with a hex editor we can see eccentricities such as blank space coming from unused fields and byte-alignment padding, and garbage data such as now-meaningless pointer values and random RAM contents from uninitialized memory. There are also [[OBD:Raw and separate file formats#Gaps|gaps in the .raw/.sep files]], mostly representing orphaned obsolete resources, which add up to about 25 MB for the whole game.&lt;br /&gt;
&lt;br /&gt;
==Backwards tags==&lt;br /&gt;
Because the levels were built on Intel-based machines, which use a little-endian architecture, sequences of bytes which represent numbers were written from least-significant to most-significant byte. [[wp:FourCC|FourCCs]] in the data are stored &amp;quot;backwards&amp;quot; (e.g. &amp;quot;13RV&amp;quot; which is meant to be read &amp;quot;VR31&amp;quot;) because Bungie defined those four bytes as a 32-bit integer, not a string, causing them to be written to disk in little-endian order.&lt;br /&gt;
&lt;br /&gt;
==File limits==&lt;br /&gt;
*Max level number: 127&lt;br /&gt;
*Max number of instance files in GameDataFolder: 512 (Windows retail), 16 (Windows demo, Mac)&lt;br /&gt;
*Max number of simultaneously loaded instance files: 64&lt;br /&gt;
*Max number of instances in a file: 131071&lt;br /&gt;
*Max length of an instance file name: 31&lt;br /&gt;
*Max length of an instance name: 63 (including the 4 character template tag)&lt;br /&gt;
&lt;br /&gt;
==Header==&lt;br /&gt;
Here is a walkthrough of an instance file using the level0_Final.dat in English Windows Oni. Follow along in a hex editor for maximum educational value. Each term will be explained in-depth when we fully consider the related data. First, here is how the file begins:&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | uint64   | | 1F 27 DC 33 DF BC 03 00 | 0x0003BCDF33DC271F | Total template checksum (main indicator of engine compatibility):&lt;br /&gt;
*0x0003BCDF33DC271F - templates compatible with v1.0 engine (Windows retail)&lt;br /&gt;
*0x0003BCDF23C13061 - templates compatible with v1.1 engine (Windows demo and Mac)&lt;br /&gt;
*0x0003BA70A8DBAE11 - templates compatible with PlayStation 2 engine&lt;br /&gt;
&amp;lt;!--*0x0000000000000000 (blank) - for use with [[OniX]] engine, which instead handles data versioning using the 0x3C field below--&amp;gt;&lt;br /&gt;
OniSplit&#039;s .oni files use PC 1.0 checksum by default and 1.1 checksum when storing data that comes from the 1.1 engine and which perceptibly differs in format for that engine (SNDD, but not TXMP) }}&lt;br /&gt;
{{OBDtr| 0x08 | uint32   | | 31 33 52 56 | &#039;13RV&#039;    | .dat version (meant to be read as &amp;quot;VR31&amp;quot;)&amp;lt;br&amp;gt;OniSplit&#039;s .oni files use &#039;23RV&#039; (&amp;quot;VR32&amp;quot;) instead&amp;lt;!--&amp;lt;br&amp;gt;OniX&#039;s [[Oni (folder)|GDFX]] uses &#039;33RV&#039; (&amp;quot;VR33&amp;quot;) to signify that the new data versioning system is in use--&amp;gt; }}&lt;br /&gt;
{{OBDtr| 0x0C | uint16   | | 40 00       | 64        | size of this header }}&lt;br /&gt;
{{OBDtr| 0x0E | uint16   | | 14 00       | 20        | size of instance descriptor (32 in Windows alpha 6) }}&lt;br /&gt;
{{OBDtr| 0x10 | uint16   | | 10 00       | 16        | size of template descriptor }}&lt;br /&gt;
{{OBDtr| 0x12 | uint16   | | 08 00       | 8         | size of name descriptor }}&lt;br /&gt;
{{OBDtr| 0x14 | uint32   | | 83 24 00 00 | 9347      | instance descriptor count  }}&lt;br /&gt;
{{OBDtr| 0x18 | uint32   | | D4 1B 00 00 | 7124      | name descriptor count; 0 for .oni files because there is no name desc. table }}&lt;br /&gt;
{{OBDtr| 0x1C | uint32   | | 38 00 00 00 | 56        | template descriptor count; 0 for .oni files because there is no template desc. table }}&lt;br /&gt;
{{OBDtr| 0x20 | uint32   | | A0 BC 03 00 | 0x03BCA0  | data block offset }}&lt;br /&gt;
{{OBDtr| 0x24 | uint32   | | A0 35 25 00 | 2438560   | data block size }}&lt;br /&gt;
{{OBDtr| 0x28 | uint32   | | 40 F2 28 00 | 0x28F240  | name block offset; will be lower than data block offset for .oni files }}&lt;br /&gt;
{{OBDtr| 0x2C | uint32   | | 04 4F 02 00 | 151300    | name block size }}&lt;br /&gt;
{{OBDtr| 0x30 | uint32   | | 99 CF 40 00 | (garbage) | used by OniSplit for raw/sep block offset }}&lt;br /&gt;
{{OBDtr| 0x34 | uint32   | | 90 4F 63 00 | (garbage) | used by OniSplit for raw/sep block size }}&lt;br /&gt;
{{OBDtr| 0x38 | uint32   | | F4 55 5F 00 | (garbage) | unused&amp;lt;!--used by OniX for data versioning; the three high bytes contains the highest data version (timestamp) found in any instance in this .dat; see instance descriptor table&#039;s 0x10 for format--&amp;gt; }}&lt;br /&gt;
{{OBDtr| 0x3C | uint32   | | 90 4F 63 00 | (garbage) | unused&amp;lt;!--used by OniX for content versioning; the three high bytes contain the highest content version (timestamp) found in any instance in this .dat; see instance descriptor table&#039;s 0x10 for format--&amp;gt; }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The file&#039;s &#039;&#039;&#039;total template checksum&#039;&#039;&#039; is the sum of all the template checksums (see &amp;quot;Template descriptors&amp;quot; below). Oni looks at this number in order to validate that it can read this version of the game data format. In practical terms, the total checksum value given for Windows above tells us that this level data is in the .dat/.raw file scheme, and the value given for Mac Oni and the Windows demo tells us that the level data uses the .dat/.raw/.sep file scheme.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;version&#039;&#039;&#039; of the instance file is the format version. Reading it backwards, as discussed under the &amp;quot;Backwards and garbage data&amp;quot; section, we get &amp;quot;VR31&amp;quot; (which probably means &amp;quot;version 3.1&amp;quot; because the engine subsystem that reads template data was in its third iteration when the game shipped). This is the format version of all instance files in all releases of Oni.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;descriptor sizes&#039;&#039;&#039; are the sizes of the instance, template, and name descriptors which are coming up in this file (see breakdowns in later sections). For instance, each instance descriptor will be 0x14, or 20 bytes, in length.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;descriptor counts&#039;&#039;&#039; are the sizes of arrays which are coming up in this file: the instance, name and template descriptors. For instance, the size of the instance descriptor array will be 0x2483, or 9,347 items, in length.&lt;br /&gt;
&lt;br /&gt;
Next we are told the addresses and sizes of the &#039;&#039;&#039;data and name block&#039;&#039;&#039; in the instance file. The name block simply follows the data block, as you&#039;ll see if you add the data block offset plus the data block size, so the name block offset is technically redundant. The name block offset plus the name block size equals the total size of the file since it&#039;s the last segment of the file. (However in a .oni file, the order of these blocks is reversed.)&lt;br /&gt;
&lt;br /&gt;
After the name block&#039;s size comes four &amp;quot;int&amp;quot;s of &#039;&#039;&#039;garbage&#039;&#039;&#039;; this is padding in order to align the start of the next segment of the file on a 32-byte boundary. The first two 32-bit fields in this space are, however, used in .oni files generated by OniSplit&amp;lt;!--, and the next two 32-bit fields are used by OniX for a new form of template versioning--&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
That concludes the header of the instance file. Immediately after this header we find the instance descriptors array.&lt;br /&gt;
&lt;br /&gt;
==Instance descriptors==&lt;br /&gt;
The instance descriptor array tells Oni where to find the data and the name of every instance (resource) indexed by the .dat file. The descriptors start at 0x40 in the .dat file, but below is a descriptor found at 0x017B50 in the file which makes a better example. In the table below, we use offsets relative to the start of this descriptor. We also show the alternate structure in the Windows alpha 6, the oldest known version of Oni and the only one with an observed difference in the instance descriptor format.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#E9E9E9&amp;quot;&lt;br /&gt;
! width=5% | Offset&lt;br /&gt;
! width=5% | Type&lt;br /&gt;
! width=10% | Raw Hex&lt;br /&gt;
! width=10% | Value&lt;br /&gt;
! width=35% | Description (retail&amp;lt;!--, OniX--&amp;gt;)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x00&lt;br /&gt;
| tag&lt;br /&gt;
| 54 42 55 53&lt;br /&gt;
| &#039;SUBT&#039;&lt;br /&gt;
|align=left | template tag&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x04&lt;br /&gt;
| int32&lt;br /&gt;
| C8 30 22 00&lt;br /&gt;
| 0x2230C8&lt;br /&gt;
|align=left | data offset (relative to data block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x08&lt;br /&gt;
| int32&lt;br /&gt;
| 01 CB 00 00&lt;br /&gt;
| 0xCB01&lt;br /&gt;
|align=left | name offset (relative to name block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x0C&lt;br /&gt;
| int32&lt;br /&gt;
| C0 09 00 00&lt;br /&gt;
| 2496&lt;br /&gt;
|align=left | data size&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x10&lt;br /&gt;
| int32&lt;br /&gt;
| 00 00 30 00&lt;br /&gt;
| 0x300000&lt;br /&gt;
|align=left | flags&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Divhide|Windows alpha 6}}&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|- bgcolor=&amp;quot;#E9E9E9&amp;quot;&lt;br /&gt;
! width=5% | Offset&lt;br /&gt;
! width=5% | Type&lt;br /&gt;
! width=10% | Raw Hex&lt;br /&gt;
! width=10% | Value&lt;br /&gt;
! width=35% | Description (alpha 6)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x00&lt;br /&gt;
| int64&lt;br /&gt;
| 68 6C 04 00&lt;br /&gt;
| 0x46C68&lt;br /&gt;
|align=left | template checksum&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x08&lt;br /&gt;
| tag&lt;br /&gt;
| 54 42 55 53&lt;br /&gt;
| &#039;SUBT&#039;&lt;br /&gt;
|align=left | template tag&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x0C&lt;br /&gt;
| int32&lt;br /&gt;
| E8 37 18 00&lt;br /&gt;
| 0x1837E8&lt;br /&gt;
|align=left | data offset (relative to data block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x10&lt;br /&gt;
| int32&lt;br /&gt;
| 4E C5 00 00&lt;br /&gt;
| 0xC54E&lt;br /&gt;
|align=left | name offset (relative to name block)&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x14&lt;br /&gt;
| int32&lt;br /&gt;
| 20 08 00 00&lt;br /&gt;
| 2080&lt;br /&gt;
|align=left | data size&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x18&lt;br /&gt;
| int32&lt;br /&gt;
| 00 00 30 00&lt;br /&gt;
| 0x300000&lt;br /&gt;
|align=left | flags&lt;br /&gt;
|- align=center&lt;br /&gt;
| 0x1C&lt;br /&gt;
| int32&lt;br /&gt;
| EA 5F A6 39&lt;br /&gt;
| {{LocaleDate|2000|08|25}}&amp;lt;br&amp;gt;08:00:42 AM&lt;br /&gt;
|align=left | creation date (seconds since 1/1/1900)&lt;br /&gt;
|}&lt;br /&gt;
{{Divhide|end}}&lt;br /&gt;
The retail version of this instance descriptor tells us that a resource of &#039;&#039;&#039;type&#039;&#039;&#039; SUBT (a subtitle file for Oni; there are only two of these, one containing all speech subtitles, and one for help messages) has &#039;&#039;&#039;data&#039;&#039;&#039; that can be found 0x2230C8 bytes into the data block, which we learned from the file header starts at 0x03BCA0. Its &#039;&#039;&#039;name&#039;&#039;&#039; can be found 0xCB01 bytes into the name block that starts, according to the file header, at 0x28F240.&lt;br /&gt;
&lt;br /&gt;
The data&#039;s &#039;&#039;&#039;size&#039;&#039;&#039; is given as 0x09C0, or 2,496 bytes, but it&#039;s important to clarify that this is the total size of the data counting from the resource header to the next 32-byte boundary after the end of this instance&#039;s actual data; in other words it is the true total of the space occupied on disk by this instance. This is interesting because the data offset leads you to the start of the instance-specific data which begins 8 bytes after the resource header, so if you erroneously add the data size to the data offset to find the end of the instance data then you will find yourself 8 bytes into the next instance.&lt;br /&gt;
&lt;br /&gt;
Before we proceed, let&#039;s expand upon the &#039;&#039;&#039;flags&#039;&#039;&#039; field.&lt;br /&gt;
&lt;br /&gt;
;Flags - data usage&lt;br /&gt;
:0x&#039;&#039;&#039;01&#039;&#039;&#039; 00 00 00 - unnamed&lt;br /&gt;
:0x&#039;&#039;&#039;02&#039;&#039;&#039; 00 00 00 - empty&lt;br /&gt;
:0x&#039;&#039;&#039;04&#039;&#039;&#039; 00 00 00 - never used; intended to mark instance as pointing to duplicate data rather than its own data&lt;br /&gt;
:0x&#039;&#039;&#039;08&#039;&#039;&#039; 00 00 00 - instance&#039;s data is being used by duplicate instances as a source&lt;br /&gt;
&lt;br /&gt;
;Flags - Tool mode&amp;lt;!-- (retail)--&amp;gt;&lt;br /&gt;
The first two of the following bits occur throughout the original .dat files. However all of these bits are ignored by the engine when loading data because they only have relevance at runtime when Oni is in Tool mode:&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;10&#039;&#039;&#039; 00 - touched (unsaved data)&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;20&#039;&#039;&#039; 00 - &amp;quot;in batch file&amp;quot;&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;40&#039;&#039;&#039; 00 - delete upon next save&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--;Flags - Tool mode (OniX)&lt;br /&gt;
These bits have been moved to the upper half of the first byte (on disk they are cleared altogether in the GDFX data, but this is their location in memory):&lt;br /&gt;
:0x&#039;&#039;&#039;10&#039;&#039;&#039; 00 00 00 - touched (unsaved data)&lt;br /&gt;
:0x&#039;&#039;&#039;20&#039;&#039;&#039; 00 00 00 - &amp;quot;in batch file&amp;quot;&lt;br /&gt;
:0x&#039;&#039;&#039;40&#039;&#039;&#039; 00 00 00 - delete upon next save&lt;br /&gt;
This frees up the three higher bytes for the data versioning timestamp which is in YY/MM/DD format, stored thusly:&lt;br /&gt;
:0x00 &#039;&#039;&#039;00&#039;&#039;&#039; 00 00 - versioning timestamp – day&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;00&#039;&#039;&#039; 00 - versioning timestamp – month&lt;br /&gt;
:0x00 00 00 &#039;&#039;&#039;00&#039;&#039;&#039; - versioning timestamp – year--&amp;gt;&lt;br /&gt;
The flags &amp;quot;unnamed&amp;quot; and &amp;quot;empty&amp;quot; require special explanation.&lt;br /&gt;
&lt;br /&gt;
===Unnamed and empty resources===&lt;br /&gt;
You&#039;ll notice that the level file header lists fewer names (7,124) than instances (9,347). That&#039;s because there are 3 types of instance:&lt;br /&gt;
*Unnamed and not empty - they are only referenced by other instances in the same file, generally as child data (e.g., 3D geometry elements like ABNA are &amp;quot;contained&amp;quot; by AKEV, a level&#039;s environment).&lt;br /&gt;
*:In vanilla Oni .dats there are some rare occurrences of unnamed non-empty &#039;&#039;orphan&#039;&#039; instances (e.g., [[OBD:File types/Naming#TRCM|TRCM]]). These are a form of garbage and are discarded by OniSplit when unpacking a level. &lt;br /&gt;
*Named and not empty - they can be referenced by other instances in any file and the engine can use their name or template tag to find them.&lt;br /&gt;
*Named and empty - &amp;quot;empty&amp;quot; instances are used in level-specific instance files (i.e. not in level0_Final.dat) to associate an instance ID with a name. For every empty resource, there&#039;s another one with a matching name in level0_Final.dat that has data in it. The empty resource in the instance file is (usually) looked up by ID, then the engine searches all the loaded files for a non-empty instance with the same name, causing it to find the actual file in the global data in level0_Final.dat.&lt;br /&gt;
&lt;br /&gt;
===Peeking ahead at instance name===&lt;br /&gt;
Before we talk about the name block in depth, we can peek ahead at the name of this resource using the offset we&#039;ve just been given. Let&#039;s add the offset 0xCB01 to 0x28F240, the file header&#039;s address for the name block. This gives us the address 0x29BD41. There we find the string &amp;quot;SUBTsubtitles&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Peeking ahead at instance data===&lt;br /&gt;
The actual subtitle data should be found by adding the offset 0x2230C8 to 0x03BCA0, the file header&#039;s address for the data block, to get 0x25ED68. We&#039;re going to leave the full details of the data block for later, but below is the data you should actually see for the English Oni SUBT file at this address. You have to consult the [[SUBT]] page to know how to read this data.&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x08 | char[16] | | AD DE       | dead        | unused }}&lt;br /&gt;
{{OBDtr| 0x18 | offset   | | 80 44 44 01 | 0x01444480  | raw file data address }}&lt;br /&gt;
{{OBDtr| 0x1C | int32    | | 61 02 00 00 | 609         | array size }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
After &#039;&#039;&#039;padding&#039;&#039;&#039; of 16 unused bytes, we find that, instead of data, there&#039;s an address of the actual data: it&#039;s in the level&#039;s raw file. Open level0_Final.raw and jump to address 0x01444480, and you should see &amp;quot;01_01_01 Griffin: Give me another reading.&amp;quot;, and the rest of some very familiar dialogue continuing from there.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;array size&#039;&#039;&#039; of 609 tells the part of the engine that reads SUBT data to expect a chunk of 609 subtitled lines of dialogue.&lt;br /&gt;
&lt;br /&gt;
==Name descriptors==&lt;br /&gt;
The name descriptor array starts immediately after the instance descriptors array. To find the end of the instance descriptors, we can simply take the size of an instance descriptor, 20 bytes, and multiply it by the number of instance descriptors in the file header. In this case, that means 20 * 9347 = 186940, or 0x02DA3C. Adding that to 0x40 (the start of the instance descriptors) takes us to address 0x02DA7C. Voila, the start of the name descriptors.&lt;br /&gt;
&lt;br /&gt;
The name descriptor array stores the numbers of all named instances in the alphabetical order by said names, which are found in the name block but also pointed to by these entries. This array is used by the engine to look up instances by name; it&#039;s also used to find instances by template (scanning just the tag at the start of each name). The purpose of this array being alphabetized was to allow the engine to do a binary search to find instances by name more quickly, but the retail engine no longer attempts a binary search and merely iterates over the array from start to end.&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | int32   | | 15 16 00 00 | 5653      | instance descriptor index }}&lt;br /&gt;
{{OBDtr| 0x04 | int32   | | 60 2C 1C 0E | (garbage) | runtime: pointer to instance name }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The index number here is referring to the instance&#039;s position in the instance descriptor array. This number is also used by the data block to identify each instance, thus it is found in two places in the data explicitly and one place implicitly.&lt;br /&gt;
&lt;br /&gt;
Since the addresses of the names in memory cannot be known until the file is loaded into RAM, a space of 32 bits is reserved for each pointer at runtime.&lt;br /&gt;
&lt;br /&gt;
==Template descriptors==&lt;br /&gt;
Likewise, the template descriptor array starts directly after the name descriptors. Since name descriptors are 8 bytes, 8 * 7124 (taken from the header) = 56992, or 0xDEA0, and adding that to the name descriptor array&#039;s start address (0x02DA7C) gives us 0x03B91C as the start of the template descriptors.&lt;br /&gt;
&lt;br /&gt;
The template descriptor array contains information about all templates (that is, resource types, aka tags), used in the file (56 in this case, as we learned from the file header). Any resource occurring in this instance file has to have its type listed here. Here is the template descriptor at 0x3B9FC:&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | int64   | | 3C B9 A6 71 08 00 00 00 | 0x871A6B93C | template checksum }}&lt;br /&gt;
{{OBDtr| 0x08 | tag     | | 45 47 52 54             | &#039;EGRT&#039;      | template tag }}&lt;br /&gt;
{{OBDtr| 0x0C | int32   | | 01 00 00 00             | 1           | unused: number of resources in file that use this template }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;template checksum&#039;&#039;&#039; is used to prevent loading of instance files that are not compatible with the current engine version. The &#039;&#039;&#039;tag&#039;&#039;&#039; is the same kind of number-written-as-backwards-ASCII that we discussed in the &amp;quot;Backwards and garbage data&amp;quot; section; in this case, &#039;EGRT&#039; means [[TRGE]]. The field for the &#039;&#039;&#039;number of resources&#039;&#039;&#039; using this template is unused. The number should be correct for each template, but Oni never uses it for anything.&lt;br /&gt;
&lt;br /&gt;
You might wonder how Oni knows how to read each type of data, such as a SUBT or an ABNA. The simple answer is that this information is hard-coded into Oni. In fact, the information on each instance type, as stored in Oni&#039;s code, is actually the real &amp;quot;template&amp;quot;. The file data merely gives the tag and checksum that identify the template in use so that Oni knows how to read the following data fields. These hardcoded templates also tell Oni which parts of the file data are reserved for pointers.&lt;br /&gt;
&lt;br /&gt;
That&#039;s because an instance may have pointers to other related instances, but pointers are only valid in memory; they cannot be stored meaningfully on disk. They must be set at runtime when the level data is loaded into memory and an address in RAM has been assigned. Thus one type of data field in Oni&#039;s templates is a &amp;quot;raw data&amp;quot; pointer; on Macs and the Windows demo, there is an additional &amp;quot;separate data&amp;quot; pointer. These pointers are 32 bits in length, as one must expect since Oni was compiled for 32-bit PCs.&lt;br /&gt;
&lt;br /&gt;
Incidentally, the templates in Oni&#039;s code have not just the familiar four-character tags attached to them, but also a descriptive string, e.g. &amp;quot;BSP Tree Node Array&amp;quot;. These strings were typed into the source code where each template structure was defined, and eventually extracted from the binary by modders. This is the source of the names on [[OBD:File types]].&lt;br /&gt;
&lt;br /&gt;
==Data block==&lt;br /&gt;
The data block occupies the majority of the file and stores all the instance data (though this data sometimes points to the location of more data in a raw/separate file). We peeked at this block before when we looked at the instance descriptor for SUBTsubtitles. The block&#039;s starting point is found at the offset given in the header, in this case 0x03BCA0, saving us the trouble of adding up the size of the four preceding segments of the file and then aligning to the next 32-byte boundary.&lt;br /&gt;
&lt;br /&gt;
The reason we&#039;d need to align to 32 bytes is that the start of each instance&#039;s record (the instance ID) is always 32 byte-aligned. Thus, even though the template descriptors ended at 0x03BC9C, there are four empty bytes here so that the data block can begin at 0x03BCA0, which divides evenly by 32. This alignment rule also means that the instance-specific data will always start at an offset like 0x0008, 0x0028, 0x0148, etc. &lt;br /&gt;
&lt;br /&gt;
The instance ID and file ID are not actually part of the instance data but are considered to be the resource header. The engine always keeps pointers to the start of the type-specific data itself; we saw this before when we jumped to 0x25ED68 and saw the data for the SUBT rather than the header for this data. The instance ID and file ID are accessed using negative offsets when needed (usually to find the name or template tag of an instance, given a pointer to it).&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | res_id  | | 01 0B 04 00 | 1035 | instance descriptor index }}&lt;br /&gt;
{{OBDtr| 0x04 | lev_id  | | 01 00 00 06 |    3 | level number }}&lt;br /&gt;
{{OBDtr| 0x08 | ...     | | ...         | ...  | type-specific data... }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
This example is taken from level 3 so that the file ID is more instructive. In the OBD documentation, these fields are called res_id and lev_id as seen above.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;instance&#039;s ID&#039;&#039;&#039; is stored as &amp;quot;(instance descriptor index &amp;lt;&amp;lt; 8) | 1&amp;quot;. Thus the ID for item #1,035 (0x40B) in the instance descriptor index will be encoded as 0x40B01. The &#039;1&#039; is used by the engine to mark which IDs have already been converted to pointers (an instance pointer will always be 8-byte aligned, so it will never have the zero bit already set). These pointer flags were retained when the file was written to disk but are meaningless now. At level-load time the flags are cleared and then set again when Oni allocates memory for each instance. The purpose of left-shifting the index number is simply to leave the lowest byte open for the pointer flag.&lt;br /&gt;
&lt;br /&gt;
The &#039;&#039;&#039;file ID&#039;&#039;&#039; is computed from the number found in the name of the instance file: &amp;quot;(level number &amp;lt;&amp;lt; 25) | 1&amp;quot;. Thus instances found in level3_Final.dat will have the file ID encoded as 0x6000001. Again, the &#039;1&#039; is used by the engine to know which file IDs have been converted to pointers at runtime, but on disk this is a relic which has no meaning to us. The reason for left-shifting the level number might have originally been to store it alongside the instance ID and the pointer flag in a single int32, but they are separate numbers now, perhaps so that both IDs can have their own pointer flag.&lt;br /&gt;
&lt;br /&gt;
After the header, the size of each instance&#039;s data is of a somewhat arbitrary length depending on the template this instance falls under. As mentioned under &amp;quot;Instance descriptors&amp;quot;, the data size given by the descriptor includes the 8-byte resource header and the padding at the end of the data to align the next instance on 32 bytes.&lt;br /&gt;
&lt;br /&gt;
===Looking backward from data to instance===&lt;br /&gt;
By the way, if you pick a random place in the data block to look at with a hex editor, how do you know which resource you&#039;re looking at? You would look for the highest data offset in the instance descriptor array that is less than your position in the file. Let&#039;s say that the string at 0x3BD40 caught our eye: &amp;quot;powerup_ammo&amp;quot;. Subtracting the start of the data block, 0x3BCA0, gives us 0xA0 as the position of this string. Now looking back at the instance descriptor array, the instances&#039; data offsets occur every 20 bytes and come directly after the tags. We can see that the first data offset is 0x8 and the next one is 0xF68, thus our offset into the data block of 0xA0 means we are looking at the instance which starts at 0x8. It&#039;s the very first instance listed at the start of the instance descriptor array:&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | tag     | | 53 47 4E 4F | &#039;ONGS&#039;  | template tag }}&lt;br /&gt;
{{OBDtr| 0x04 | int32   | | 08 00 00 00 | 0x08    | data offset (relative to data block) }}&lt;br /&gt;
{{OBDtr| 0x08 | int32   | | 00 00 00 00 | 0x00    | name offset (relative to name block) }}&lt;br /&gt;
{{OBDtr| 0x0C | int32   | | 60 0F 00 00 | 3936    | data size }}&lt;br /&gt;
{{OBDtr| 0x10 | int32   | | 00 00 00 00 | 0       | flags }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
So this tells us that the first data in the data block belongs to the solitary [[ONGS]] resource, and that it extends for 3,936 bytes. Since its name offset is 0x0, it&#039;s the first string in the name block, which we can see below is SUBTsubtitles.&lt;br /&gt;
&lt;br /&gt;
==Name block==&lt;br /&gt;
This final segment of the file (third-to-last in a .oni, followed by the data and raw/sep blocks) stores all the instance names as C-style ASCII strings (terminated by a zero byte). We peeked at this before when we looked at the instance descriptor for SUBTsubtitles. The start of this block is 32-byte aligned but after that the strings are simply packed end to end, separated only by their null terminator. As with the data block, the name block&#039;s starting point is given in the header, in this case 0x28F240.&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
{{OBDtr| 0x00 | string  | | 53 55 ... 00 | &amp;quot;SUBTsubtitles&amp;quot; | name string (zero-terminated) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
These names can be up to 63 characters long, counting the tag. The instance file concludes with the end of the name block, or the raw/sep block in a .oni file.&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:TSFT&amp;diff=47117</id>
		<title>OBD:TSFT</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:TSFT&amp;diff=47117"/>
		<updated>2026-04-16T19:58:32Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: PC = Win/Mac, consistent with rest of wiki; gave PC and PS2 sections their own subheaders&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OBD_File_Header | type=TSFT | prev=TSFL | next=TSGA | name=Font | family=Interface | align=center}}&lt;br /&gt;
&lt;br /&gt;
==PC implementation==&lt;br /&gt;
[[Image:tsft_a.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:tsft_m.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:tsft_e.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
|- ALIGN=CENTER VALIGN=TOP&lt;br /&gt;
{{OBDtr| 0x000 | res_id   |FF0000| 01 03 00 00 | 3    | 00003-.TSFT }}&lt;br /&gt;
{{OBDtr| 0x004 | lev_id   |FFFF00| 01 00 00 00 | 0    | level 0 }}&lt;br /&gt;
{{OBDtr| 0x008 | dead[6]  |FFFFFF| AD DE       | dead | not used }}&lt;br /&gt;
{{OBDtr| 0x00E | int16    |00FF00| 07 00       | 7    | font size in points }}&lt;br /&gt;
{{OBDtr| 0x010 | int32    |FFFFFF| 01 00 00 00 | 1    | font option; the following options are possible:&lt;br /&gt;
&lt;br /&gt;
:0 - normal font&lt;br /&gt;
:1 - &#039;&#039;&#039;bold font&#039;&#039;&#039;&lt;br /&gt;
:2 - &#039;&#039;italic font&#039;&#039;&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr| 0x014 | int16    |FFFFFF| 09 00       | 9    | [[wikt:ascender#Noun|ascender]] height }}&lt;br /&gt;
{{OBDtr| 0x016 | int16    |FFFFFF| 02 00       | 2    | [[wikt:descender#Noun|descender]] height }}&lt;br /&gt;
{{OBDtr| 0x018 | int16    |FFFFFF| 02 00       | 2    | [[wikt:leading#Noun_2|leading]] height }}&lt;br /&gt;
{{OBDtr| 0x01a | int16    |FFFFFF| 02 00       | 2    | ignored }}&lt;br /&gt;
{{OBDtrBK|Room for 256 TSGA links (only the first one is typically used for Western languages)}}&lt;br /&gt;
{{OBDtr| 0x01C | link     |00FFFF| 01 04 00 00 | 4    | link to [[OBD:TSGA|00004-.TSGA]] (glyph array for character codes 0-255) }}&lt;br /&gt;
{{OBDtr| 0x020 | link     |00FFFF| 00 00 00 00 | 0    | unused }}&lt;br /&gt;
{{OBDtr| ...   | ...      |00FFFF|     ...     | ...  | ... }}&lt;br /&gt;
{{OBDtr| 0x418 | link     |00FFFF| 00 00 00 00 | 0    | unused }}&lt;br /&gt;
{{OBDtrBK|Pixel data for the glyphs (8-bit intensities for four pixels at a time, stored as 32-bit integers)}}&lt;br /&gt;
{{OBDtr| 0x41C | int32    |FF00FF| 4F 0E 00 00 | 3663 | array size (one element has a length of 4 bytes) }}&lt;br /&gt;
{{OBDtr| 0x420 | int32    |C0C0C0| FF FF FF FF | 255,255,255,255 | the first 4 pixels (all white) of the first used glyph }}&lt;br /&gt;
{{OBDtr| ...   | ...      |C0C0C0|     ...     | ...  | the rest of the pixel data }}&lt;br /&gt;
{{OBDtrBK|Alternative pixel storage used by PS2 implementation}}&lt;br /&gt;
{{OBDtr| 0x41C | offset   |FF00FF| 20 00 00 00 | 0x00000020 | offset of the pixel data in the .raw file }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==PS2 implementation==&lt;br /&gt;
*The PC TSFTs store pixel data in a variable-size array (number of elements announced at 0x41C, then 4 bytes per element). PS2 TSFTs instead store the pixel data in the .raw file, using the field at 0x41C to store the offset.&lt;br /&gt;
*PC TSFTs use a whole byte for every pixel, i.e. 256 shades of gray, which in theory allows for subtle antialiasing. (In practice the antialiasing of Oni&#039;s fonts is anything but subtle, and the engine further posterizes them from 8-bit to 4-bit when rendering text.) PS2 fonts use only 2 bits per pixel, i.e., only 4 degrees of brightness/opacity.&lt;br /&gt;
*The PC engine uses a &amp;quot;black-on-white&amp;quot; representation of the font, with blank areas stored as 0xFF and fully opaque pixels as 0x00. PS2 uses &amp;quot;white-on-black&amp;quot;, so a single opaque pixel in a row of four will be stored as 0x03, 0x0C, 0x30 or 0xC0.&lt;br /&gt;
*In PC Oni, the pixel rows for a given glyph can span across several 4-byte array elements, but pixel data for a new glyph must always start at the first byte of an array element (glyph data in a PC TSGA is indexed by TSFT array element, not by pixel). Therefore, on PC, if a glyph has, say, 33 8-bit pixels, then there will be 33 bytes of actual storage, spanning 4 whole array elements and 1 byte of a 5th element, and the rest of the 5th element (3 bytes) will be padded (typically with &amp;quot;DE AD&amp;quot; bytes). Inside the PS2 .raw file, the storage is not padded or aligned in any way, and the indexation for each glyph (from TSGA) is by pixel, i.e. by quarter-of-a-byte.&lt;br /&gt;
*Same as on PC, pixel rows are stored top-to-bottom, and each row is stored left-to-right, using lower bits first. For example, the 4x11 bitmap for a 7pt regular double-quote character (&amp;quot;), would be encoded as the following 11 bytes if it was byte-aligned:&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x33 (11001100 low-to-high)&lt;br /&gt;
 byte 0x33 (11001100 low-to-high)&lt;br /&gt;
 byte 0x33 (11001100 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
However, the actually stored pixel data for (&amp;quot;) is shifted by half a byte because of the previous two glyphs, which are both 3x11 and take up 33 quarter-bytes each. Therefore the actual storage for (&amp;quot;) looks like this:&lt;br /&gt;
 byte 0x?0 (....0000 low-to-high, lower 4 bits belong to previous glyph)&lt;br /&gt;
 byte 0x30 (00001100 low-to-high)&lt;br /&gt;
 byte 0x33 (11001100 low-to-high)&lt;br /&gt;
 byte 0x33 (11001100 low-to-high)&lt;br /&gt;
 byte 0x03 (11000000 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x00 (00000000 low-to-high)&lt;br /&gt;
 byte 0x0? (0000.... low-to-high, upper 4 bits belong to next glyph)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{OBD_File_Footer | type=TSFT | prev=TSFL | next=TSGA | name=Font | family=Interface}}&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:M3GM&amp;diff=47116</id>
		<title>OBD:M3GM</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:M3GM&amp;diff=47116"/>
		<updated>2026-04-16T19:55:06Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: more link tweaks, and better wording for GMAN&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OBD_File_Header | type=M3GM | prev=M3GA | next=Mtrl | name=Geometry | family=General | align=center}}&lt;br /&gt;
&lt;br /&gt;
==PC implementation==&lt;br /&gt;
This format is used by the Windows and Mac versions of the engine.&lt;br /&gt;
&lt;br /&gt;
[[Image:m3gm_all.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr|0x00|res_id  |FF0000|01 D7 00 00|215   | 00215-door_1_0.M3GM}}&lt;br /&gt;
{{OBDtr|0x04|lev_id  |FFFF00|01 00 00 06|3     | level 3}}&lt;br /&gt;
{{OBDtr|0x08|uint32  |FFC8C8|00 00 00 00|0     | geometry flags; runtime only }}&lt;br /&gt;
{{OBDtr|0x0C|link    |FFFFC8|01 DA 00 00|218   | link to 00218-.[[OBD:PNTA|PNTA]] (vertex XYZs) }}&lt;br /&gt;
{{OBDtr|0x10|link    |FFFFC8|01 F7 00 00|247   | link to 00247-.[[OBD:VCRA|VCRA]] (vertex normals) }}&lt;br /&gt;
{{OBDtr|0x14|link    |FFFFC8|01 F0 00 00|240   | link to 00240-.VCRA (face normals) }}&lt;br /&gt;
{{OBDtr|0x18|link    |FFFFC8|01 ED 00 00|237   | link to 00237-.[[OBD:TXCA|TXCA]] (vertex UVs) }}&lt;br /&gt;
{{OBDtr|0x1C|link    |FFFFC8|01 0C 01 00|268   | link to 00268-.[[OBD:IDXA_M3GM_1|IDXA (type 1)]] (triangle strips) }}&lt;br /&gt;
{{OBDtr|0x20|link    |FFFFC8|01 11 01 00|273   | link to 00273-.[[OBD:IDXA_M3GM_2|IDXA (type 2)]] (face grouping by normal) }}&lt;br /&gt;
{{OBDtr|0x24|link    |FFFFC8|01 D8 00 00|216   | link to 00216-.[[OBD:TXMP|TXMP]] (texture) }}&lt;br /&gt;
{{OBDtr|0x28|link    |C8FFC8|00 00 00 00|unused| obsolete GMAN (geometry animation) link; never used in Oni}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Vertices===&lt;br /&gt;
XYZ and UV coordinates are stored in parallel (same number of entries in PNTA and TXCA).&lt;br /&gt;
&lt;br /&gt;
===Vertex normals===&lt;br /&gt;
The first VCRA stores the normals for every vertex (same entries as in PNTA and TXCA). Vertex normals are used by the engine for its simple Gouraud shading (directional lighting).&lt;br /&gt;
&lt;br /&gt;
===Face normals===&lt;br /&gt;
The second VCRA stores the normals for every face (groups defined by the second IDXA). Face normals are used for backface culling.&lt;br /&gt;
&lt;br /&gt;
===Triangle strips===&lt;br /&gt;
The first IDXA lists the triangles as strips. The IDs are the ones in PNTA and IDXA. The start of a new strip is signaled by a high bit in the ID of its first vertex. Strips are more optimal for rendering; they are generated when authoring an M3GM.&lt;br /&gt;
&lt;br /&gt;
===Face groupings===&lt;br /&gt;
The second IDXA groups the triangles into faces (oriented by the second VCRA).&lt;br /&gt;
&lt;br /&gt;
===Geometry animation===&lt;br /&gt;
Geometry animation worked in a way similar to how animated textures (TXAN) consist of an array of TXMPs – by picking M3GMs from an array (GMAN) and displaying them at a specified frame rate, optionally with randomization. This would have allowed complete transformation of an object on a per-point level instead of only the rotation and translation of the whole object that is currently possible via [[OBD:OBAN|OBAN]].&lt;br /&gt;
&lt;br /&gt;
===Collision===&lt;br /&gt;
M3GMs have no inherent collision for physics purposes, but they will gain them if spawned via [[OBD:OBOA|OBOA]].&lt;br /&gt;
&lt;br /&gt;
==PS2 implementation==&lt;br /&gt;
:PS2 M3GMs have the same data size as PC ones (0x24 bytes of actual data, 0x2C if counting the instance and level IDs) but the layout is different.&lt;br /&gt;
:*Face normals aren&#039;t stored at all, and vertex normals aren&#039;t stored as VCRA either, therefore both VCRA and the second IDXA are simply missing, which frees up 12 bytes worth of space for data fields unique to the PS2 format.&lt;br /&gt;
:*8 of the 12 freed-up bytes are used by explicitly storing the number of vertices (i.e., the array size common to PNTA and TXCA) and the number of faces (same count as the 2nd VCRA on PC), as two int32s.&lt;br /&gt;
:*The other 4 bytes are used to reference the compressed storage of vertex normals in the .raw file. This storage is very compact/lossy, using only 1 byte per normal (instead of 12 bytes per normal in the case of VCRA storage).&lt;br /&gt;
:An an example, consider M3GMaxes of level0_Final.&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr|0x00|res_id |FF0000|01 63 00 00|99    | 00099-axes.M3GM}}&lt;br /&gt;
{{OBDtr|0x04|lev_id |FFFF00|01 00 00 00|0     | level 0}}&lt;br /&gt;
{{OBDtr|0x08|uint32 |FFC8C8|00 00 00 00|0     | runtime geometry flags (supposedly the same as for PC) }}&lt;br /&gt;
{{OBDtr|0x0C|uint32 |FFC8C8|60 00 00 00|96    | number of faces (same as in second VCRA on PC) }}&lt;br /&gt;
{{OBDtr|0x10|link   |FFFFC8|01 64 00 00|100   | link to [[OBD:PNTA|00100-.PNTA]] (vertex XYZs) }}&lt;br /&gt;
{{OBDtr|0x14|link   |FFFFC8|01 65 00 00|101   | link to [[OBD:TXCA|00101-.TXCA]] (vertex UVs) }}&lt;br /&gt;
{{OBDtr|0x18|link   |FFFFC8|01 66 00 00|102   | link to [[OBD:IDXA_M3GM_1|00102-.IDXA]] (triangle strips) }}&lt;br /&gt;
{{OBDtr|0x1C|uint32 |FFC8C8|6C 00 00 00|108   | number of vertices (same as in PNTA and TXCA); also size of .raw part in bytes }}&lt;br /&gt;
{{OBDtr|0x20|offset |FFFFC8|A0 8E 01 00| 0x00018EA0 | offset into the .raw file where the the 108 compressed vertex normals are stored:&lt;br /&gt;
 &#039;&#039;&#039;2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D 2D F8 F8 C2 55&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;40 40 10 D4 D4 09 C2 5F 6B 6B 6B 6B 6B 6B 6B 6B&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;6B 82 82 D9 16 E3 E3 00 EB EB 6D 6D 6D 6D 6D 6D&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;6D 6D 6D 6D AB AB EB 80 52 FC 95 30 30 EA EA EA&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;EA EA A7 A7 24 EA EA EA EA 24 02 02 02 A7 A7 A7&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;A7 EF EA EA EA EA 02 02 02 02 24 24 24 24 F8 2D&#039;&#039;&#039;&lt;br /&gt;
 &#039;&#039;&#039;2D 2D 2D A7 A7 A7 A7 EA EA EA EA 16&#039;&#039;&#039;&lt;br /&gt;
See below for an overview of the compression/decompression rule, i.e. how the 256 values of a compressed normal are mapped to the unit sphere.&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr|0x24|link    |FFFFC8|01 67 00 00|103   | texture link (to the empty 00103-_AXIS.[[OBD:TXMP|TXMP]]; the actually relevant 00104-_axis.TXMP is orphaned) }}&lt;br /&gt;
{{OBDtr|0x28|link    |C8FFC8|00 00 00 00|unused| supposedly the same GMAN link (geometry animation) as for PC }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;OniBrowser being able to load PS2 M3GMs (a mystery of the modern times)&lt;br /&gt;
:Somehow OniBrowser is able to display M3GMs from PS2 instance files (except those with textures), even though all the links (PNТA, TXCA, IDXA) are in the wrong positions. Apparently, in the case of M3GM, OniBrowser reads in all the fields past 0x0C as a bunch of non-typed instance links, then identifies their types and populates the PNTA, VCRA, TXCA and IDXA references with the first encountered instance of the matching type.&lt;br /&gt;
&lt;br /&gt;
;Compressed vertex normals&lt;br /&gt;
[[Image:Four-fold tetrahedron.jpg|right|160px]]&lt;br /&gt;
:It is somewhat uncommon to pack a normal vector into a single byte, but it turns out that there is a relatively straightforward way to subdivide the unit sphere into 256 sectors. One starts by splitting the sphere into four large quadrants (based on tetrahedral symmetry), and then each of the big &amp;quot;triangles&amp;quot; is subdivided into 4, then 16, then 64 smaller triangles, like the picture to the right. There is some distortion near the four poles, but other than that it&#039;s a valid way to pack normals if space is an issue (if packing to 2 bytes or more, then one would typically work in plain spherical coordinates instead, i.e. azimuth and elevation).&lt;br /&gt;
:There isn&#039;t much of a point in giving a detailed description of the mapping here, but the basic idea would be to use the lowest 64 values for the first quadrant, the next 64 values for the second quadrant, etc. In actuality the PS2 implementation uses 63 for the first quadrant, 62 for the second, 63 for the third, and 68 for the last - for whatever reason. Within a quadrant the distribution isn&#039;t entirely regular, either. To be documented later if at all.&lt;br /&gt;
&lt;br /&gt;
;&amp;quot;Bad door lighting&amp;quot;&lt;br /&gt;
:When looking at the .raw part of the M3GM for some doors (level geometry), a striking observation is that there are only three distinct normal values (0xDE, 0x6A and 0x82), rather than the 6 normals that you&#039;d expect for an axis-aligned box. Apparently half of those are bad, inward-pointing normals that no one ever bothered fixing. The regular VCRA normals for the same doors (on PC) are messed up in exactly the same way. Possibly this is related to the BSL variable &#039;&#039;&#039;door_pop_lighting&#039;&#039;&#039; (&amp;quot;uses bad door lighting&amp;quot;).  &lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{OBD_File_Footer | type=M3GM | prev=M3GA | next=Mtrl | name=Geometry | family=General | align=center}}&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:TRAM&amp;diff=47115</id>
		<title>OBD:TRAM</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:TRAM&amp;diff=47115"/>
		<updated>2026-04-16T19:39:05Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: &amp;quot;PC&amp;quot; is now consistently used on the wiki to mean &amp;quot;Win/Mac&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OBD_File_Header | align=center | type=TRAM | prev=TRAC | next=TRAS | name=Totoro Animation Sequence | family=Character}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:Tram_all.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x000 | res_id   |FF0000| 01 49 07 00 | 1865        | 01865-KONCOMpunch_heavy.TRAM }}&lt;br /&gt;
{{OBDtr| 0x004 | lev_id   |FFFF00| 01 00 00 00 | 0           | level 0 }}&lt;br /&gt;
{{OBDtr| 0x008 | int32    |FFC8C8| 00 00 00 00 | 0           | runtime only; pointer to animation name }}&lt;br /&gt;
{{OBDtr| 0x00C | offset   |FFFFC8| A0 B4 80 00 | 0x0080B4A0  | raw file offset of the [[OBD:TRAM/raw0x0C|height]] track (Y-position of the pelvis above the root) }}&lt;br /&gt;
{{OBDtr| 0x010 | offset   |FFFFC8| E0 B5 80 00 | 0x0080B5E0  | raw file offset of the [[OBD:TRAM/raw0x10|horizontal velocities]] of the character root }}&lt;br /&gt;
{{OBDtr| 0x014 | offset   |FFFFC8| 60 B8 80 00 | 0x0080B860  | raw file offset of the [[OBD:TRAM/raw0x14|attack part]] }}&lt;br /&gt;
{{OBDtr| 0x018 | offset   |FFFFC8| 00 00 00 00 | unused      | raw file offset of the [[OBD:TRAM/raw0x18|damage part]] (used only by &amp;quot;_tgt&amp;quot; animations (throw targets/victims) }}&lt;br /&gt;
{{OBDtr| 0x01C | offset   |FFFFC8| A0 B8 80 00 | 0x0080B8A0  | raw file offset of the [[OBD:TRAM/raw0x1C|motion blur part]] }}&lt;br /&gt;
{{OBDtr| 0x020 | offset   |FFFFC8| C0 B8 80 00 | 0x0080B8C0  | raw file offset of the [[OBD:TRAM/raw0x20|shortcut data]] }}&lt;br /&gt;
{{OBDtr| 0x024 | offset   |FFFFC8| 00 00 00 00 | unused      | raw file offset of the [[OBD:TRAM/raw0x24|throw data]] (including effective distance of throw) }}&lt;br /&gt;
{{OBDtr| 0x028 | offset   |FFFFC8| E0 B8 80 00 | 0x0080B8E0  | raw file offset of the [[OBD:TRAM/raw0x28|footstep data]] }}&lt;br /&gt;
{{OBDtr| 0x02C | offset   |FFFFC8| 00 B9 80 00 | 0x0080B900  | raw file offset of the [[OBD:TRAM/raw0x2C|particle data]] (trails, dust, etc.) }}&lt;br /&gt;
{{OBDtr| 0x030 | offset   |FFFFC8| 60 B9 80 00 | 0x0080B960  | raw file offset of the [[OBD:TRAM/raw0x30|position data]] (for basic prediction) }}&lt;br /&gt;
{{OBDtr| 0x034 | offset   |FFFFC8| 00 BD 80 00 | 0x0080BD00  | raw file offset of the [[OBD:TRAM/raw0x34|rotations]] (of all body parts) }}&lt;br /&gt;
{{OBDtr| 0x038 | offset   |FFFFC8| 00 00 00 00 | unused      | raw file offset of the [[OBD:TRAM/raw0x38|sound data]] }}&lt;br /&gt;
{{OBDtr| 0x03C | bitset32 |C8FFC8| 90 00 08 00 | attack, atomic, dontAim| flags; listed in [[OBD:StNA|StNA]]anim_flags (except that StNAanim_flags is missing the dontAim flag, which offset the following flags when it was added to the engine); the bits are as follows:&lt;br /&gt;
:0x&#039;&#039;&#039;01&#039;&#039;&#039; 00 00 00 - prepared (used at runtime only; marks that the animation was loaded)&lt;br /&gt;
:0x&#039;&#039;&#039;02&#039;&#039;&#039; 00 00 00 - invulnerable&lt;br /&gt;
:0x&#039;&#039;&#039;04&#039;&#039;&#039; 00 00 00 - blockHigh&lt;br /&gt;
:0x&#039;&#039;&#039;08&#039;&#039;&#039; 00 00 00 - blockLow&lt;br /&gt;
:0x&#039;&#039;&#039;10&#039;&#039;&#039; 00 00 00 - attack&lt;br /&gt;
:0x&#039;&#039;&#039;20&#039;&#039;&#039; 00 00 00 - dropWeapon&lt;br /&gt;
:0x&#039;&#039;&#039;40&#039;&#039;&#039; 00 00 00 - inAir (unused)&lt;br /&gt;
:0x&#039;&#039;&#039;80&#039;&#039;&#039; 00 00 00 - atomic&lt;br /&gt;
:0x00 &#039;&#039;&#039;01&#039;&#039;&#039; 00 00 - noTurn&lt;br /&gt;
:0x00 &#039;&#039;&#039;02&#039;&#039;&#039; 00 00 - attackForward&lt;br /&gt;
:0x00 &#039;&#039;&#039;04&#039;&#039;&#039; 00 00 - attackLeft&lt;br /&gt;
:0x00 &#039;&#039;&#039;08&#039;&#039;&#039; 00 00 - attackRight&lt;br /&gt;
:0x00 &#039;&#039;&#039;10&#039;&#039;&#039; 00 00 - attackBackward&lt;br /&gt;
:0x00 &#039;&#039;&#039;20&#039;&#039;&#039; 00 00 - overlay&lt;br /&gt;
:0x00 &#039;&#039;&#039;40&#039;&#039;&#039; 00 00 - dontInterpolateVelocity&lt;br /&gt;
:0x00 &#039;&#039;&#039;80&#039;&#039;&#039; 00 00 - throwSource&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;01&#039;&#039;&#039; 00 - throwTarget&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;02&#039;&#039;&#039; 00 - realWorld&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;04&#039;&#039;&#039; 00 - doAim&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;08&#039;&#039;&#039; 00 - dontAim&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;10&#039;&#039;&#039; 00 - canPickup&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;20&#039;&#039;&#039; 00 - aim360&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;40&#039;&#039;&#039; 00 - disableShield&lt;br /&gt;
:0x00 00 &#039;&#039;&#039;80&#039;&#039;&#039; 00 - noAIPickup&lt;br /&gt;
&lt;br /&gt;
;invulnerable&lt;br /&gt;
This animation makes the character impervious to melee damage and throws. He can still take damage from particles and falls.&lt;br /&gt;
&lt;br /&gt;
;blockHigh, blockLow&lt;br /&gt;
An animation with one of these flags can block attacks coming from the front if they have the high/low attack bit on in [[OBD:TRAM/raw0x14|0x14]].&lt;br /&gt;
&lt;br /&gt;
;attack, throwSource, throwTarget, realWorld as proxy flags&lt;br /&gt;
These flags were looked at by Importer, Bungie West&#039;s authoring tool, which assigned the dontAim flag to an animation if any of them were found. Additionally, Importer used throwSource and throwTarget as indicators that an animation should be flagged as noTurn, but Oni itself also refuses to allow turning when it sees these flags. Within Oni, the attack flag has no effect.&lt;br /&gt;
&lt;br /&gt;
;throwSource, throwTarget&lt;br /&gt;
Besides serving as proxies, throwSource and throwTarget are used in numerous places in the code to handle throws properly, so they should always be assigned appropriately to throw anims. throwTarget in particular allows your teammates to be hurt by an enemy you throw.&lt;br /&gt;
&lt;br /&gt;
;realWorld&lt;br /&gt;
This flag only served a purpose when the animation was imported from 3ds Max. Animations without this flag had their extents prepared by Importer. Has no effect within Oni except signifying a lack of attack extents data for visual debugging purposes.&lt;br /&gt;
&lt;br /&gt;
;atomic&lt;br /&gt;
Has no effect within Oni. When seen by Importer during authoring, however, it set the entire animation to atomic by maxing out the range of the atomic start and end frames (0x174, 0x176).&lt;br /&gt;
&lt;br /&gt;
;noTurn&lt;br /&gt;
This refers to the user&#039;s ability to turn with the controls.&lt;br /&gt;
&lt;br /&gt;
;attackForward, attackLeft, attackRight, attackBackward&lt;br /&gt;
Have no effect within Oni. Used by Importer to set the movement direction at 0x54.&lt;br /&gt;
&lt;br /&gt;
;doAim&lt;br /&gt;
Applies aiming screen (PIS/RIF) if character has a weapon.&lt;br /&gt;
&lt;br /&gt;
;dontAim&lt;br /&gt;
Prevents aiming screen from being applied.&lt;br /&gt;
&lt;br /&gt;
;aim360&lt;br /&gt;
No effect in Oni. Was used by Importer as a cue to mark the attack&#039;s direction (0x54) as 360° (but only Forward, Backward, Left and Right seem to be used in the game data).&lt;br /&gt;
&lt;br /&gt;
;disableShield&lt;br /&gt;
Used on certain Mutant Muro attacks to temporarily remove his supershield (the anims are listed on [[XML:TRAM]] under its DisableShield documentation).&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr| 0x040 | link     |C8FFFF| 00 00 00 00 | unused      | direct animation 0 (link to another TRAM file) }}&lt;br /&gt;
{{OBDtr| 0x044 | link     |C8FFFF| 00 00 00 00 | unused      | direct animation 1 (link to another TRAM file); see {{SectionLink||Direct links}} }}&lt;br /&gt;
{{OBDtr| 0x048 | bitset32 |FFC8FF| 00 00 00 00 | 0           | used body parts; for original 19-bone hierarchy the bit layout is as follows:&lt;br /&gt;
:0x000000&#039;&#039;&#039;01&#039;&#039;&#039; - pelvis&lt;br /&gt;
:0x000000&#039;&#039;&#039;02&#039;&#039;&#039; - left thigh&lt;br /&gt;
:0x000000&#039;&#039;&#039;04&#039;&#039;&#039; - left calf&lt;br /&gt;
:0x000000&#039;&#039;&#039;08&#039;&#039;&#039; - left foot&lt;br /&gt;
:0x000000&#039;&#039;&#039;10&#039;&#039;&#039; - right thigh&lt;br /&gt;
:0x000000&#039;&#039;&#039;20&#039;&#039;&#039; - right calf&lt;br /&gt;
:0x000000&#039;&#039;&#039;40&#039;&#039;&#039; - right foot&lt;br /&gt;
:0x000000&#039;&#039;&#039;80&#039;&#039;&#039; - mid&lt;br /&gt;
:0x0000&#039;&#039;&#039;01&#039;&#039;&#039;00 - chest&lt;br /&gt;
:0x0000&#039;&#039;&#039;02&#039;&#039;&#039;00 - neck&lt;br /&gt;
:0x0000&#039;&#039;&#039;04&#039;&#039;&#039;00 - head&lt;br /&gt;
:0x0000&#039;&#039;&#039;08&#039;&#039;&#039;00 - left shoulder&lt;br /&gt;
:0x0000&#039;&#039;&#039;10&#039;&#039;&#039;00 - left arm&lt;br /&gt;
:0x0000&#039;&#039;&#039;20&#039;&#039;&#039;00 - left wrist&lt;br /&gt;
:0x0000&#039;&#039;&#039;40&#039;&#039;&#039;00 - left fist&lt;br /&gt;
:0x0000&#039;&#039;&#039;80&#039;&#039;&#039;00 - right shoulder&lt;br /&gt;
:0x00&#039;&#039;&#039;01&#039;&#039;&#039;0000 - right arm&lt;br /&gt;
:0x00&#039;&#039;&#039;02&#039;&#039;&#039;0000 - right wrist&lt;br /&gt;
:0x00&#039;&#039;&#039;04&#039;&#039;&#039;0000 - right fist&lt;br /&gt;
Aiming screen TRAMs use several bones here. Other overlay TRAMs use only &amp;quot;chest&amp;quot;. Non-overlay TRAMs use none.&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr| 0x04C | bitset32 |FFC8FF| 00 00 00 00 | 0           | replaced parts; same bitset layout as above; only overlay TRAMs other than aiming-screen ones replace parts. }}&lt;br /&gt;
{{OBDtr| 0x050 | float    |FFC800| 00 00 00 00 | 0.000000    | final rotation in radians (for anims that make you turn) }}&lt;br /&gt;
{{OBDtr| 0x054 | int16    |C800C8| 01 00       | 1           | main moving direction; the following directions are possible:&lt;br /&gt;
:0 - none&lt;br /&gt;
:1 - forward&lt;br /&gt;
:2 - backward&lt;br /&gt;
:3 - left&lt;br /&gt;
:4 - right&lt;br /&gt;
:5 - 360 (unused? even Devil Spin Kick uses &amp;quot;forward&amp;quot;)&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr| 0x056 | uint16   |C87C64| 06 00    | 6 | vocalization type (-1 if unused); references one of the 10 vocalization slots in [[OBD:ONCC|ONCC]]&lt;br /&gt;
:0 - taunt&lt;br /&gt;
:1 - alert&lt;br /&gt;
:2 - startle&lt;br /&gt;
:3 - checkbody&lt;br /&gt;
:4 - pursue&lt;br /&gt;
:5 - cower&lt;br /&gt;
:6 - superpunch&lt;br /&gt;
:7 - superkick&lt;br /&gt;
:8 - super3&lt;br /&gt;
:9 - super4&lt;br /&gt;
In this case the value 6 triggers Konoko&#039;s &amp;quot;superpunch&amp;quot; vocalization, &amp;quot;Rising fury!&amp;quot; }}&lt;br /&gt;
{{OBDtrBK|Extent info}}&amp;lt;br&amp;gt;See {{SectionLink||Extent info}} for explanation&lt;br /&gt;
{{OBDtr| 0x058 | float    |B0C3D4| 8D 87 CF 41 | 25.941187   | max horizontal extent of the attack }}&lt;br /&gt;
{{OBDtr| 0x05C | float    |B0C3D4| DE E9 1A 40 | 2.420524    | min Y of the attack }}&lt;br /&gt;
{{OBDtr| 0x060 | float    |B0C3D4| 95 34 D3 41 | 26.400675   | max Y of the attack }}&lt;br /&gt;
{{OBDtr| 0x064 | float    |B0C3D4| 8D 87 CF 41 | 25.941187   | max horizontal extent at 0° (front) }}&lt;br /&gt;
{{OBDtr| ...   | ...      |B0C3D4| ...         | ...         | ... }}&lt;br /&gt;
{{OBDtr| 0x088 | float    |B0C3D4| DF 37 87 40 | 4.225570    | max horizontal extent at 90° (left) }}&lt;br /&gt;
{{OBDtr| ...   | ...      |B0C3D4| ...         | ...         | ... }}&lt;br /&gt;
{{OBDtr| 0x0AC | float    |B0C3D4| 5A D8 6D 40 | 3.716330    | max horizontal extent at 180° (back) }}&lt;br /&gt;
{{OBDtr| ...   | ...      |B0C3D4| ...         | ...         | ... }}&lt;br /&gt;
{{OBDtr| 0x0D0 | float    |B0C3D4| 98 95 E3 40 | 7.112011    | max horizontal extent at 270° (right) }}&lt;br /&gt;
{{OBDtr| ...   | ...      |B0C3D4| ...         | ...         | ... }}&lt;br /&gt;
{{OBDtr| 0x0F0 | float    |B0C3D4| 8D 87 CF 41 | 25.941187   | max horizontal extent at 350° }}&lt;br /&gt;
{{OBDtrBK|First extent info - information about the first extent in the extent part}}&lt;br /&gt;
{{OBDtr| 0x0F4 | int16    |E7CEA5| 05 00       | 5           | frame; -1 if the attack part does not exist }}&lt;br /&gt;
{{OBDtr| 0x0F6 | int8     |FFDDDD| 00          | 0           | attack index; always 0 }}&lt;br /&gt;
{{OBDtr| 0x0F7 | int8     |FFDDDD| 00          | 0           | attack frame offset; always 0 }}&lt;br /&gt;
{{OBDtr| 0x0F8 | float    |64AAAA| 00 00 00 BF | -0.500000   | x location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x0FC | float    |64AAAA| 1E 85 6B BF | -0.920000   | z location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x100 | float    |64AAAA| 19 47 0C 41 | 8.767358    | y location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x104 | float    |64AAAA| EB 51 F0 40 | 7.510000    | extent length }}&lt;br /&gt;
{{OBDtr| 0x108 | float    |64AAAA| D7 A3 14 41 | 9.290000    | extent min Y }}&lt;br /&gt;
{{OBDtr| 0x10C | float    |64AAAA| 0A D7 3B 41 | 11.740000   | extent max Y }}&lt;br /&gt;
{{OBDtr| 0x110 | float    |64AAAA| 5E 93 BF 40 | 5.986739    | extent angle (in radians) }}&lt;br /&gt;
{{OBDtrBK|Farthest extent info - information about the farthest reaching extent in the extent part }}&lt;br /&gt;
{{OBDtr| 0x114 | int16    |EBEBEB| 2F 00       | 47          | frame; -1 if there is no attack part of if the animation is for a throw target/victim (&amp;quot;_tgt&amp;quot;) }}&lt;br /&gt;
{{OBDtr| 0x116 | int8     |8C8CCC| 01          | 1           | attack index to which the max extent belongs }}&lt;br /&gt;
{{OBDtr| 0x117 | int8     |FF00C8| 16          | 22          | attack frame offset from the attack with index 0 }}&lt;br /&gt;
{{OBDtr| 0x118 | float    |F0F096| 85 EB 51 BF | -1.850000   | x location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x11C | float    |F0F096| E1 7A 7C C1 | -3.900000   | z location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x120 | float    |F0F096| 69 61 BF 40 | 16.874636   | y location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x124 | float    |F0F096| 70 3D 22 41 | 10.510000   | extent length }}&lt;br /&gt;
{{OBDtr| 0x128 | float    |F0F096| 47 E1 3A 40 | 8.860000    | extent min Y }}&lt;br /&gt;
{{OBDtr| 0x12C | float    |F0F096| 33 33 DB 40 | 18.460000   | extent max Y }}&lt;br /&gt;
{{OBDtr| 0x130 | float    |F0F096| F7 C0 2E 3E | 0.055320    | extent angle }}&lt;br /&gt;
{{OBDtrBK|End max extent info }}&lt;br /&gt;
{{OBDtr| 0x134 | int32    |00C864| 00 00 00 00 | 0           | alternative move direction; used only when the previous move direction field is 0, that means never }}&lt;br /&gt;
{{OBDtr| 0x138 | int32    |00C8FF| 18 00 00 00 | 24          | number of elements in the extent part }}&lt;br /&gt;
{{OBDtr| 0x13C | offset   |C80040| E0 BB 80 00 | 00 80 BB E0 | at this position starts the [[OBD:TRAM/raw0x13C|extent part]] in the raw file }}&lt;br /&gt;
{{OBDtrBK|End extent info}}&lt;br /&gt;
{{OBDtr2|0x140 | char[16] |FFCD96| konflash1                 | impact particle name (reference to 01018-.[[OBD:ONIA|ONIA]], which is called up in the [[OBD:ONCC|ONCC]] file) }}&lt;br /&gt;
{{OBDtr| 0x150 | uint16   |C8C864| 00 00       | 0           | hard pause in game ticks (1/60 seconds) }}&lt;br /&gt;
{{OBDtr| 0x152 | uint16   |C8C864| 12 00       | 18          | soft pause in game ticks (1/60 seconds) }}&lt;br /&gt;
{{OBDtr| 0x154 | int32    |0096C8| 00 00 00 00 | 0           | number of elements in the sound part }}&lt;br /&gt;
{{OBDtr| 0x158 | int32    |FF80C0| 00 00 00 00 | 0           | runtime only; pointer to the sound for this animation (from [[OBD:BINA/SABD|SABD]])}}&lt;br /&gt;
{{OBDtr| 0x15C | int16    |D0C0AF| 00 00       | 0           | runtime only; sound start frame (from SABD) }}&lt;br /&gt;
{{OBDtr| 0x15E | int16    |D0C0AF| 3C 00       | 60          | animation frame rate (always 60?) }}&lt;br /&gt;
{{OBDtr| 0x160 | int16    |EEDDFF| 06 00       | 6           | compression size }}&lt;br /&gt;
{{OBDtr| 0x162 | int16    |EEDDFF| 16 00       | 22          | animation type (from [[XML:StNA|StNA]]) }}&lt;br /&gt;
{{OBDtr| 0x164 | int16    |C5FF8A| 16 00       | 22          | aiming type from StNA }}&lt;br /&gt;
{{OBDtr| 0x166 | int16    |C5FF8A| 00 00       | 0           | from state; see {{SectionLink||From state, to state, animation type, variant, shortcuts}} }}&lt;br /&gt;
{{OBDtr| 0x168 | int16    |C0C0C0| 07 00       | 7           | to state }}&lt;br /&gt;
{{OBDtr| 0x16A | int16    |C0C0C0| 13 00       | 19          | number of body parts }}&lt;br /&gt;
{{OBDtr| 0x16C | int16    |FF0080| 50 00       | 80          | number of frames }}&lt;br /&gt;
{{OBDtr| 0x16E | int16    |FF0080| 50 00       | 80          | duration in game ticks (1/60 seconds) }}&lt;br /&gt;
{{OBDtr| 0x170 | bitset16 |FFFFA6| 00 02       | 0x0200 &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; COM| variant, the following bits are possible (values in hex):&lt;br /&gt;
:0x&#039;&#039;&#039;01&#039;&#039;&#039;00 - &amp;quot;sprint&amp;quot; (&#039;&#039;&#039;SPR&#039;&#039;&#039;int animation)&lt;br /&gt;
:0x&#039;&#039;&#039;02&#039;&#039;&#039;00 - &amp;quot;fight&amp;quot; (&#039;&#039;&#039;COM&#039;&#039;&#039;bat animation)&lt;br /&gt;
:0x&#039;&#039;&#039;04&#039;&#039;&#039;00 - &amp;quot;shoulder&amp;quot; (not used by the engine; apparently used at one time for weapons like [[:Image:Pre-beta enigma 5.png|rocket launchers]])&lt;br /&gt;
:0x&#039;&#039;&#039;08&#039;&#039;&#039;00 - &amp;quot;righty pistol&amp;quot; (&#039;&#039;&#039;PIS&#039;&#039;&#039;tol animation)&lt;br /&gt;
:0x&#039;&#039;&#039;10&#039;&#039;&#039;00 - &amp;quot;lefty pistol&amp;quot; (&#039;&#039;&#039;NIN&#039;&#039;&#039;ja &#039;&#039;&#039;PIS&#039;&#039;&#039;tol animation)&lt;br /&gt;
:0x&#039;&#039;&#039;20&#039;&#039;&#039;00 - &amp;quot;righty rifle&amp;quot; (&#039;&#039;&#039;RIF&#039;&#039;&#039;le animation)&lt;br /&gt;
:0x&#039;&#039;&#039;40&#039;&#039;&#039;00 - &amp;quot;lefty rifle&amp;quot; (&#039;&#039;&#039;NIN&#039;&#039;&#039;ja &#039;&#039;&#039;RIF&#039;&#039;&#039;le animation)&lt;br /&gt;
:0x&#039;&#039;&#039;80&#039;&#039;&#039;00 - &amp;quot;panic&amp;quot; (&#039;&#039;&#039;PAN&#039;&#039;&#039;ic or &#039;&#039;&#039;SCR&#039;&#039;&#039;amble animation)&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr| 0x172 | char[2]  |FFFFA6| AD DE       | dead        | &amp;quot;varient end&amp;quot;; ignored by the engine }}&lt;br /&gt;
{{OBDtr| 0x174 | uint16   |71FFB8| 00 00       | 0           | atomic start }}&lt;br /&gt;
{{OBDtr| 0x176 | uint16   |71FFB8| FF FF       | 65535       | atomic end }}&lt;br /&gt;
{{OBDtr| 0x178 | uint16   |0000BF| 00 00       | 0           | end interpolation }}&lt;br /&gt;
{{OBDtr| 0x17A | uint16   |0000BF| FF FF       | 65535       | maximum interpolation }}&lt;br /&gt;
{{OBDtr| 0x17C | uint16   |804040| FF FF       | 65535       | action frame; e.g. when weapon theft occurs in a disarm anim }}&lt;br /&gt;
{{OBDtr| 0x17E | uint16   |804040| 0A 00       | 10          | first level where the animation is available }}&lt;br /&gt;
{{OBDtr| 0x180 | uint8    |FF22FF| 01          | 1           | first &amp;quot;invulnerable&amp;quot; frame }}&lt;br /&gt;
{{OBDtr| 0x181 | uint8    |FF22FF| 1C          | 28          | last &amp;quot;invulnerable&amp;quot; frame }}&lt;br /&gt;
{{OBDtr| 0x182 | uint8    |808080| 02          | 2           | number of elements in the attack part above }}&lt;br /&gt;
{{OBDtr| 0x183 | uint8    |808080| 00          | 0           | number of elements in the take damage part above }}&lt;br /&gt;
{{OBDtr| 0x184 | uint8    |FFAA82| 01          | 1           | number of elements in the motion blur part above }}&lt;br /&gt;
{{OBDtr| 0x185 | uint8    |FFAA82| 01          | 1           | number of elements in the shortcut part above }}&lt;br /&gt;
{{OBDtr| 0x186 | uint8    |00D900| 02          | 2           | number of elements in the footstep part above }}&lt;br /&gt;
{{OBDtr| 0x187 | uint8    |00D900| 04          | 4           | number of elements in the particle part above }}&lt;br /&gt;
{{OBDtr| 0x188 | char[24] |CACAFF| AD DE       | dead        | unused (not part of the template) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Animation timeline==&lt;br /&gt;
:&#039;&#039;&#039;NOTE:&#039;&#039;&#039; The following assumes animation data sampled at 60 frames per second (i.e., in sync with game ticks). Different frame rates have not been studied, and OniSplit only works with 60 fps TRAMs.&lt;br /&gt;
The duration of an animation in game ticks is equal to the number of frames covered by the main animation data, i.e., it extends one tick past the last keyframe of the height track or rotation tracks. Over this last tick, the pelvis height and bone rotations are interpolated to the values supplied by the first frame of the &#039;&#039;following&#039;&#039; animation, whereas the horizontal position is advanced using the last velocity entry of the current animation.&lt;br /&gt;
&lt;br /&gt;
Thus an important note about looping animations is that the poses at the start and end of an animation (a combination of height, bone rotation and the accumulated horizontal velocity) are generally &#039;&#039;not&#039;&#039; identical, but rather one tick apart. The same applies to animation pairs (locomotion loops) or any matching animation sequences (e.g., combos).&lt;br /&gt;
&lt;br /&gt;
For the current example (KONCOMpunch_heavy), the duration is 80 ticks, and the main animation tracks are as follows:&lt;br /&gt;
*The [[/raw0x0C|height]] track has 80 entries that are used to place the character vertically at every tick, starting at tick 0 and ending at tick 79. At tick 80, i.e., at the end of the current animation&#039;s duration, the height is supplied by the next animation. Between ticks 79 and 80, the height is interpolated between the last height entry of KONCOMpunch_heavy and the first height entry of the next animation.&lt;br /&gt;
*The [[/raw0x10|velocity]] tracks (horizontal motion of the root) also have 80 entries. However, unlike the height values, the velocities correspond not to ticks but to intervals between ticks, and thus span the whole range of the animation, from tick 0 to tick 80. Starting at tick 80, the first velocity entry of the following animation applies.&lt;br /&gt;
*The [[/raw0x34|rotation]] tracks are keyed at ticks (like the height track), but (unlike the height track) are typically not keyed at &#039;&#039;every&#039;&#039; tick: there are intervals (gaps) of variable size between the keys, over which the rotation of each bone is interpolated. Even so, the total duration  of the intervals is the same as the time span of the height track, i.e., one tick shorter than the &amp;quot;duration&amp;quot; of the animation. In this example, the first rotation pose corresponds to tick 0 and the last pose corresponds to tick 79. At tick 80, the pose will be read from the following animation, and between ticks 79 and 80, the pose will be interpolated between the last pose of KONCOMpunch_heavy and the first pose of the next animation.&lt;br /&gt;
&#039;&#039;&#039;NOTE:&#039;&#039;&#039; The above description of how heights and rotations are interpolated during the last tick on an animation&#039;s duration does not only apply for most of Oni&#039;s transitions, which typically involve overlapping timelines and interpolation between two animations playing simultaneously. Nonetheless, the description is useful to understand why the time span of rotation and height data is one tick shorter than the supposed duration of the animation, and also what happens for loops, pairs or combo sequences.&lt;br /&gt;
&lt;br /&gt;
==Direct links==&lt;br /&gt;
These fields work together with soft pause and hard pause fields when switching animations. When the current animation has a direct link to the new animation the soft pause and hard pause are both considered to be 0.&lt;br /&gt;
;Example&lt;br /&gt;
01855-KONCOMcomb_p_p.TRAM links to:&lt;br /&gt;
*01856-KONCOMcomb_p_p_p.TRAM (direct animation 0)&lt;br /&gt;
*01857-KONCOMcomb_p_p_k.TRAM (direct animation 1)&lt;br /&gt;
&lt;br /&gt;
That means that if a p_p_p or p_p_k animation follows after a p_p animation there will be no pause between them but for animations other than p_p_p and p_p_k there may be a pause of &#039;soft pause&#039; frames between them. &lt;br /&gt;
&lt;br /&gt;
==Extent info==&lt;br /&gt;
The extent information is used by the AI to figure out if an attack can reach the enemy. This information is only present/used if the animation contains attacks. Many of the fields in the extent information can be computed from other available information like the attack/position/extent parts. The only &amp;quot;unique&amp;quot; information here is the &amp;quot;max horizontal extent 0° ... 360°&amp;quot; array and the extent part count/offset fields. The alternate move direction does not appear to be ever used.&lt;br /&gt;
&lt;br /&gt;
==From state, to state, animation type, variant, shortcuts==&lt;br /&gt;
These are used to find specific animations. Each character has a current animation state and a current &amp;quot;varient&amp;quot;. When the engine searches for an animation with a specific type it considers those that have a matching &amp;quot;from state&amp;quot; and &amp;quot;varient&amp;quot;. For example both &amp;quot;comb_k_k&amp;quot; and &amp;quot;jump_fw_kick&amp;quot; animations have the type &amp;quot;kick&amp;quot; but one can be executed when the character is in the &amp;quot;standing&amp;quot; state and the other can be executed when the character is in &amp;quot;falling back&amp;quot; or &amp;quot;falling forward&amp;quot; states.&lt;br /&gt;
&lt;br /&gt;
==Aiming Type==&lt;br /&gt;
Aiming type is used to find the aiming animation in [[TRSC]] and normally it is the same as the animation type. In a couple of cases this type is &amp;quot;none&amp;quot; meaning that no aiming animation should be used. It is pretty much equivalent to setting the &amp;quot;don&#039;t aim&amp;quot; flag.&lt;br /&gt;
&lt;br /&gt;
==Particles==&lt;br /&gt;
While Oni can store a number as large as 255 in 0x187, Oni only allocates memory for 16 particles per TRAM, and it does not check to make sure that the actual number of particles is ≤ 16. Thus you can easily crash Oni by initiating a move which has 17 particles attached.&lt;br /&gt;
&lt;br /&gt;
==Limitations on animation length==&lt;br /&gt;
Frame counts in Oni&#039;s TRAM are either absolute frame counts since the beginning of the animation, or intervals between events or keyframes.&lt;br /&gt;
:(The following analysis assumes 60 fps as an animation&#039;s frame rate. If the frame rate can be reduced, the limiting time amounts will increase accordingly.)&lt;br /&gt;
&lt;br /&gt;
===16-bit frame counts===&lt;br /&gt;
Most typically a frame count is an unsigned 16-bit integer, which allows for a comfortable range of 65535 frames = 1092.25 seconds = 18 m 12.25 s. Even if the integer is accidentally parsed as 16-bit &#039;&#039;signed&#039;&#039;, the wraparound to negative values only happens after 32767 frames = 546.13̅ seconds = 9 m 6.13̅ s. Oni has other contexts where frame counts are stored as 16-bit integers, e.g., [[OBD:SNDD|SNDD]] and [[OBD:OBAN|OBAN]].&lt;br /&gt;
&lt;br /&gt;
===8-bit frame counts===&lt;br /&gt;
Some of the frame counts inside a TRAM are stored as 8-bit integers (unsigned), which reduces the range to 255 frames = 4.25 seconds (or, in the event of signed interpretation, 127 frames = 2.116̅ seconds).&amp;lt;br&amp;gt;&lt;br /&gt;
The contexts where 8-bit frame counts occur are as follows.&lt;br /&gt;
*[[OBD:TRAM/raw0x1C|Motion blur]], &amp;quot;Lifetime&amp;quot; and &amp;quot;Interval&amp;quot;, meaning that &amp;quot;ghosts&amp;quot; can be spawned no more than 4.25 seconds apart and can last no more than 4.25 seconds before disappearing (LIMITATION SEVERITY: MINOR)&lt;br /&gt;
*[[OBD:TRAM/raw0x34|Rotation data]], intervals between a bone&#039;s keyframes, meaning that rotation keyframes for a bone cannot be more than 4.25 seconds apart. (LIMITATION SEVERITY: MINOR)&lt;br /&gt;
*&amp;quot;Max/farthest extent info&amp;quot; (main TRAM file, see above): the &amp;quot;attack frame offset from the attack with index 0&amp;quot; is an 8-bit frame interval, meaning that attacks belonging to a same TRAM cannot be more than 4.25 seconds apart, or the extent of the later attacks may not be taken into account properly by the AI. (LIMITATION SEVERITY: Can be an issue for very long special moves or throws, where damage is dealt both at the beginning and at the end of the animation.)&lt;br /&gt;
*&amp;quot;Invulnerable&amp;quot; range (main TRAM file, see above): The invulnerability range is a pair of 8-bit frame indices, meaning that the invulnerability range cannot extend past 4.25 seconds. (LIMITATION SEVERITY: Can be an issue for very long crowd-clearing moves, like a much longer &amp;quot;Whirling Dervish&amp;quot; (ELICOMpunch_heavy) or long versions of Muro&#039;s &amp;quot;Breakdancer&amp;quot; or &amp;quot;Helicopter&amp;quot; moves; a possible workaround is to set invulnerability for the whole animation rather than for an 8-bit frame range)&lt;br /&gt;
&lt;br /&gt;
===16-bit raw data offsets===&lt;br /&gt;
Unlike files like [[OBD:AGDB|AGDB]] and [[OBD:SUBT|SUBT]] (which use 32-bit pointers into the .raw data stored in the .dat part), a TRAM&#039;s [[OBD:TRAM/raw0x34|rotation data]] starts off with a set of 16-bit offsets, stored in the .raw part and pointing into the following data (typically there are 19 such offsets, one for each bone in a skeleton).&lt;br /&gt;
&lt;br /&gt;
For the last offset to work, it must be at most equal to 65535 and, since the first 38 bytes are taken up by the offsets, this leaves at most 65497 bytes for the cumulated size of the 18 first rotation tracks.&lt;br /&gt;
&lt;br /&gt;
The raw size of a rotation track depends on the number of keyframe intervals (let&#039;s call it N) and on the compression size (either 6 or 16 bytes): a size-6 rotation track takes up 7N+6 bytes, and a size-16 rotation track takes up 17N+16 bytes.&lt;br /&gt;
&lt;br /&gt;
For a size-6 animation, the &amp;quot;average N&amp;quot; for the first 18 tracks cannot exceed 518.96, so that 126N+108 stays below 65497. For a size-16 animation, this &amp;quot;average N&amp;quot; for the first 18 tracks must not exceed 213.1013, so that 306N+288 stays below 65497.&lt;br /&gt;
&lt;br /&gt;
For an animation that has a keyframe for every bone at each game tick, a 518-frame duration corresponds to 8.63̅ seconds, whereas 213 frames = 3.55 seconds. Typically, however, rotation tracks will have significant keyframe reduction, e.g., Konoko&#039;s &amp;quot;Rising Fury!&amp;quot; lasts 80 frames but the pelvis rotation has only 23 keyframe intervals. Assuming 4:1 keyframe reduction for typical animations, this means that the 16-bit offset won&#039;t be an issue (for size-6 animations) unless the animation is longer than about 30 seconds.&lt;br /&gt;
&lt;br /&gt;
==PS2 implementation==&lt;br /&gt;
The PS2 implementation optimizes TRAM storage by splitting off combat-relevant data (extents etc) to a new instance type, TREX (Totoro Animation Extra, see below). As a result, the TRAM size (with header) is reduced from 392 to 80 bytes.&lt;br /&gt;
&lt;br /&gt;
{|cellpadding=3 cellspacing=0 style=&amp;quot;line-height:13px&amp;quot;&lt;br /&gt;
{{HexRow|0x00|&lt;br /&gt;
|01|C8|03|00|01|00|00|00|01|45|06|00|00|00|00|00|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|00|00|00|00|FF|FF|FF|FF|&lt;br /&gt;
|00|00|00|00|FF|FF|FF|FF|FF|FF|FF|FF|C8|C8|C8|C8|&lt;br /&gt;
|00|00|00|00|00|00|00|00|00|00|00|00|C8|C8|C8|C8|&lt;br /&gt;
|°È°°°°°°°E°°°°°°&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x10|&lt;br /&gt;
|E0|EE|0F|00|20|F0|0F|00|80|F4|0F|00|A0|F4|0F|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|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|&lt;br /&gt;
|àî°° ð°° ô°° ô°°&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x20|&lt;br /&gt;
|C0|F4|0F|00|40|F7|0F|00|90|00|08|00|00|00|00|00|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|C8|C8|C8|C8|FF|FF|FF|FF|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|C8|C8|C8|C8|&lt;br /&gt;
|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|FF|FF|FF|FF|&lt;br /&gt;
|Àô°°@÷°° °°°°°°°&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x30|&lt;br /&gt;
|00|00|00|00|01|00|00|00|06|00|16|00|16|00|00|00|&lt;br /&gt;
|FF|FF|FF|FF|C8|C8|FF|FF|EE|EE|EE|EE|C5|C5|C5|C5|&lt;br /&gt;
|C8|C8|C8|C8|00|00|00|00|DD|DD|DD|DD|FF|FF|FF|FF|&lt;br /&gt;
|FF|FF|FF|FF|C8|C8|FF|FF|FF|FF|FF|FF|8A|8A|8A|8A|&lt;br /&gt;
|°°°°°°°°°°°°°°°°&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x40|&lt;br /&gt;
|07|00|50|00|00|02|AD|DE|00|00|FF|FF|00|01|02|13|&lt;br /&gt;
|C0|C0|FF|FF|FF|FF|FF|FF|71|71|71|71|FF|FF|00|C0|&lt;br /&gt;
|C0|C0|00|00|FF|FF|FF|FF|FF|FF|FF|FF|AA|AA|D9|C0|&lt;br /&gt;
|C0|C0|80|80|A6|A6|A6|A6|B8|B8|B8|B8|82|82|00|C0|&lt;br /&gt;
|°°P°°°-Þ°°ÿÿ°°°°&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x50|&lt;br /&gt;
|AD|DE|AD|DE|AD|DE|AD|DE|AD|DE|AD|DE|AD|DE|AD|DE|&lt;br /&gt;
|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|&lt;br /&gt;
|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|CA|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|-Þ-Þ-Þ-Þ-Þ-Þ-Þ-Þ&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x000 | res_id   |FF0000| 01 C8 03 00 | 968         | 00968-KONCOMpunch_heavy.TRAM }}&lt;br /&gt;
{{OBDtr| 0x004 | lev_id   |FFFF00| 01 00 00 00 | 0           | level 0 }}&lt;br /&gt;
{{OBDtr| 0x008 | link     |00FF00| 01 45 06 00 | 1605        | link to 01605-.TREX (combat-relevant data) }}&lt;br /&gt;
{{OBDtr| 0x00C | int32    |FFC8C8| 00 00 00 00 | 0           | runtime only; pointer to animation name }}&lt;br /&gt;
{{OBDtr| 0x010 | offset   |FFFFC8| E0 EE 0F 00 | 0x000FEEE0  | raw file offset of the [[OBD:TRAM/raw0x0C|height]] track (Y-position of the pelvis above the root) }}&lt;br /&gt;
{{OBDtr| 0x014 | offset   |FFFFC8| 20 F0 0F 00 | 0x000FF020  | raw file offset of the [[OBD:TRAM/raw0x10|horizontal velocities]] of the character root }}&lt;br /&gt;
{{OBDtr| 0x018 | offset   |FFFFC8| 80 F4 0F 00 | 0x000FF480  | raw file offset of the [[OBD:TRAM/raw0x20|shortcut data]] }}&lt;br /&gt;
{{OBDtr| 0x01C | offset   |FFFFC8| A0 F4 0F 00 | 0x000FF4A0  | raw file offset of the [[OBD:TRAM/raw0x28|footstep data]] }}&lt;br /&gt;
{{OBDtr| 0x020 | offset   |FFFFC8| C0 F4 0F 00 | 0x000FF4C0  | raw file offset of the [[OBD:TRAM/raw0x30|position data]] (for basic prediction) }}&lt;br /&gt;
{{OBDtr| 0x024 | offset   |FFFFC8| 40 F7 0F 00 | 0x000FF740  | raw file offset of the [[OBD:TRAM/raw0x34|rotations]] (of all body parts) }}&lt;br /&gt;
{{OBDtr| 0x028 | bitset32 |C8FFC8| 90 00 08 00 | attack, atomic, dontAim | flags (same as PC&#039;s 0x03C) }}&lt;br /&gt;
{{OBDtr| 0x02C | bitset32 |FFC8FF| 00 00 00 00 | 0           | used body parts; used mostly by aiming overlays (same as PC&#039;s 0x048) }}&lt;br /&gt;
{{OBDtr| 0x030 | bitset32 |FFC8FF| 00 00 00 00 | 0           | replaced parts; used by non-aiming overlays (same as PC&#039;s 0x04C) }}&lt;br /&gt;
{{OBDtr| 0x034 | int16    |C800C8| 01 00       | 1           | moving direction }}&lt;br /&gt;
{{OBDtr| 0x036 | int16    |FF00FF| 00 00       | 1           | unknown }}&lt;br /&gt;
{{OBDtr| 0x038 | int16    |EEDDFF| 06 00       | 6           | compression size }}&lt;br /&gt;
{{OBDtr| 0x03A | int16    |EEDDFF| 16 00       | 22          | animation type (from [[XML:StNA|StNA]]) }}&lt;br /&gt;
{{OBDtr| 0x03C | int16    |C5FF8A| 16 00       | 22          | aiming type }}&lt;br /&gt;
{{OBDtr| 0x03E | int16    |C5FF8A| 00 00       | 0           | from state }}&lt;br /&gt;
{{OBDtr| 0x040 | int16    |C0C0C0| 07 00       | 7           | to state }}&lt;br /&gt;
{{OBDtr| 0x042 | int16    |FF0080| 50 00       | 80          | number of frames (animations are locked to 60 fps) }}&lt;br /&gt;
{{OBDtr| 0x044 | bitset16 |FFFFA6| 00 02       | 0x0200 &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; COM| variant (same as PC&#039;s 0x170) }}&lt;br /&gt;
{{OBDtr| 0x046 | char[2]  |FFFFA6| AD DE       | dead        | &amp;quot;varient end&amp;quot;; ignored by the engine }}&lt;br /&gt;
{{OBDtr| 0x048 | uint16   |71FFB8| 00 00       | 0           | atomic start }}&lt;br /&gt;
{{OBDtr| 0x04A | uint16   |71FFB8| FF FF       | 65535       | atomic end }}&lt;br /&gt;
{{OBDtr| 0x04C | uint8    |FFAA82| 00          | 0           | unknown }}&lt;br /&gt;
{{OBDtr| 0x04D | uint8    |FFAA82| 01          | 1           | number of elements in the shortcut part }}&lt;br /&gt;
{{OBDtr| 0x04E | uint8    |00D900| 02          | 2           | number of elements in the footstep part }}&lt;br /&gt;
{{OBDtr| 0x04F | uint8    |C0C0C0| 13          | 19          | number of body parts? }}&lt;br /&gt;
{{OBDtr| 0x050 | char[16] |CACAFF| AD DE       | dead        | unused (not part of the template) }}&lt;br /&gt;
|}&lt;br /&gt;
At the time of writing, some of the above data is merely an informed guess (not thoroughly confirmed), and the nature of 0x036 (int16?) and 0x04C (uint8?) needs to be clarified more particularly. If 0x036 is always zero, then maybe 0x034 is stored as an int32. We also need to locate &amp;quot;end/maximal interpolation&amp;quot; and possibly other remaining fields from the PC data format, or establish that they are missing from the TRAM/TREX representation of animations on PS2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The TREX file has all the combat-relevant stuff as well as some stuff that isn&#039;t necessary combat-related (e.g., vocalizations, turning angle, moving direction).&lt;br /&gt;
&lt;br /&gt;
The block between 0x008 and 0x0F0 is exactly the extent block between 0x058 and 0x140 in the PC TRAM. After that come the other 6 .raw links that were stripped from the reduced TRAM, the impact particle name, and the two direct TRAM links, which accounts for all the data up to 0x150 in the PC TRAM. Some data fields from the end of PC&#039;s TRAM are confirmed to be missing on PS2 (e.g., the frame rate is implied to be 60 Hz), but some of the correspondence is still not documented or thoroughly confirmed.&lt;br /&gt;
{|cellpadding=3 cellspacing=0 style=&amp;quot;line-height:13px&amp;quot;&lt;br /&gt;
{{HexRow|0x000|&lt;br /&gt;
|01|45|06|00|01|00|00|00|8D|87|CF|41|DE|E9|1A|40|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|B0|B0|B0|B0|B0|B0|B0|B0|&lt;br /&gt;
|00|00|00|00|FF|FF|FF|FF|C3|C3|C3|C3|C3|C3|C3|C3|&lt;br /&gt;
|00|00|00|00|00|00|00|00|D4|D4|D4|D4|D4|D4|D4|D4|&lt;br /&gt;
|ºEºººººº  ÏAÞéº@&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x010|&lt;br /&gt;
|95|34|D3|41|8D|87|CF|41|8D|87|CF|41|8D|87|CF|41|&lt;br /&gt;
|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|&lt;br /&gt;
|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|&lt;br /&gt;
|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|&lt;br /&gt;
| 4ÓA  ÏA  ÏA  ÏA&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x020|&lt;br /&gt;
|8D|87|CF|41|9D|E4|11|41|14|BA|04|41|6B|77|D4|40|&lt;br /&gt;
|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|&lt;br /&gt;
|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|&lt;br /&gt;
|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|&lt;br /&gt;
|  ÏAºººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x030|&lt;br /&gt;
|50|5A|B3|40|74|4B|9C|40|DF|37|87|40|70|75|84|40|&lt;br /&gt;
|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|&lt;br /&gt;
|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|&lt;br /&gt;
|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x040|&lt;br /&gt;
|8E|ED|6A|40|16|40|5F|40|16|40|5F|40|BF|CD|45|40|&lt;br /&gt;
|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|&lt;br /&gt;
|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|&lt;br /&gt;
|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x050|&lt;br /&gt;
|34|2B|49|40|34|2B|49|40|34|2B|49|40|5A|D8|6D|40|&lt;br /&gt;
|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|&lt;br /&gt;
|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|&lt;br /&gt;
|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x0060|&lt;br /&gt;
|5A|D8|6D|40|5A|D8|6D|40|8F|D9|96|40|8F|D9|96|40|&lt;br /&gt;
|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|&lt;br /&gt;
|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|&lt;br /&gt;
|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x070|&lt;br /&gt;
|B7|7B|AB|40|F0|81|BF|40|98|95|E3|40|98|95|E3|40|&lt;br /&gt;
|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|&lt;br /&gt;
|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|&lt;br /&gt;
|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x080|&lt;br /&gt;
|98|95|E3|40|98|95|E3|40|98|95|E3|40|98|95|E3|40|&lt;br /&gt;
|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|&lt;br /&gt;
|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|&lt;br /&gt;
|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x090|&lt;br /&gt;
|ED|E7|14|41|D4|2E|9E|41|8F|FB|CC|41|8D|87|CF|41|&lt;br /&gt;
|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|B0|&lt;br /&gt;
|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|C3|&lt;br /&gt;
|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|D4|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x0A0|&lt;br /&gt;
|8D|87|CF|41|05|00|00|00|00|00|00|BF|1E|85|6B|BF|&lt;br /&gt;
|B0|B0|B0|B0|E7|E7|FF|FF|64|64|64|64|64|64|64|64|&lt;br /&gt;
|C3|C3|C3|C3|CE|CE|DD|DD|AA|AA|AA|AA|AA|AA|AA|AA|&lt;br /&gt;
|D4|D4|D4|D4|A5|A5|DD|DD|AA|AA|AA|AA|AA|AA|AA|AA|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x0B0|&lt;br /&gt;
|19|47|0C|41|EB|51|F0|40|D7|A3|14|41|0A|D7|3B|41|&lt;br /&gt;
|64|64|64|64|64|64|64|64|64|64|64|64|64|64|64|64|&lt;br /&gt;
|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|&lt;br /&gt;
|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|AA|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x0C0|&lt;br /&gt;
|5E|93|BF|40|2F|00|01|16|85|EB|51|BF|E1|7A|7C|C1|&lt;br /&gt;
|64|64|64|64|EB|EB|8C|FF|F0|F0|F0|F0|F0|F0|F0|F0|&lt;br /&gt;
|AA|AA|AA|AA|EB|EB|8C|00|F0|F0|F0|F0|F0|F0|F0|F0|&lt;br /&gt;
|AA|AA|AA|AA|EB|EB|CC|C8|96|96|96|96|96|96|96|96|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x0D0|&lt;br /&gt;
|69|61|BF|40|70|3D|22|41|47|E1|3A|40|33|33|DB|40|&lt;br /&gt;
|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|&lt;br /&gt;
|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|F0|&lt;br /&gt;
|96|96|96|96|96|96|96|96|96|96|96|96|96|96|96|96|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x0E0|&lt;br /&gt;
|F7|C0|2E|3E|00|00|00|00|18|00|00|00|60|F3|0F|00|&lt;br /&gt;
|F0|F0|F0|F0|00|00|00|00|00|00|00|00|C8|C8|C8|C8|&lt;br /&gt;
|F0|F0|F0|F0|C8|C8|C8|C8|C8|C8|C8|C8|00|00|00|00|&lt;br /&gt;
|96|96|96|96|64|64|64|64|FF|FF|FF|FF|40|40|40|40|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x0F0|&lt;br /&gt;
|E0|F2|0F|00|00|00|00|00|A0|F2|0F|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|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|C8|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x100|&lt;br /&gt;
|00|F3|0F|00|00|00|00|00|6B|6F|6E|66|6C|61|73|68|&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|CD|CD|CD|CD|CD|CD|CD|CD|&lt;br /&gt;
|C8|C8|C8|C8|C8|C8|C8|C8|96|96|96|96|96|96|96|96|&lt;br /&gt;
|ººººººººkonflash&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x110|&lt;br /&gt;
|31|00|AD|DE|AD|DE|AD|DE|00|00|00|00|00|00|00|00|&lt;br /&gt;
|FF|FF|FF|FF|FF|FF|FF|FF|C8|C8|C8|C8|C8|C8|C8|C8|&lt;br /&gt;
|CD|CD|CD|CD|CD|CD|CD|CD|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|96|96|96|96|96|96|96|96|FF|FF|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|1ººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x120|&lt;br /&gt;
|00|00|00|00|00|00|00|00|00|00|00|00|00|00|12|00|&lt;br /&gt;
|FF|FF|FF|FF|00|00|00|00|FF|FF|FF|FF|C8|C8|C8|C8|&lt;br /&gt;
|C8|C8|C8|C8|96|96|96|96|80|80|80|80|C8|C8|C8|C8|&lt;br /&gt;
|00|00|00|00|C8|C8|C8|C8|C0|C0|C0|C0|64|64|64|64|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
{{HexRow|0x130|&lt;br /&gt;
|FF|FF|0A|00|06|00|02|00|01|04|01|1C|AD|DE|AD|DE|&lt;br /&gt;
|80|80|80|80|C8|C8|80|80|FF|00|FF|FF|CA|CA|CA|CA|&lt;br /&gt;
|40|40|40|40|7C|7C|80|80|AA|D9|22|22|CA|CA|CA|CA|&lt;br /&gt;
|40|40|40|40|64|64|80|80|82|00|FF|FF|FF|FF|FF|FF|&lt;br /&gt;
|ºººººººººººººººº&lt;br /&gt;
}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x000 | res_id   |FF0000| 01 49 07 00 | 1532        | 01865-KONCOMpunch_heavy.TREX }}&lt;br /&gt;
{{OBDtr| 0x004 | lev_id   |FFFF00| 01 00 00 00 | 0           | level 0 }}&lt;br /&gt;
{{OBDtrBK|Extent info}}&lt;br /&gt;
{{OBDtr| 0x008 | float    |B0C3D4| 8D 87 CF 41 | 25.941187   | max horizontal extent of the attack }}&lt;br /&gt;
{{OBDtr| 0x00C | float    |B0C3D4| DE E9 1A 40 | 2.420524    | min Y of the attack }}&lt;br /&gt;
{{OBDtr| 0x010 | float    |B0C3D4| 95 34 D3 41 | 26.400675   | max Y of the attack }}&lt;br /&gt;
{{OBDtr| 0x014 | float    |B0C3D4| 8D 87 CF 41 | 25.941187   | max horizontal extent at 0° (front) }}&lt;br /&gt;
{{OBDtr| ...   | ...      |B0C3D4| ...         | ...         | ... }}&lt;br /&gt;
{{OBDtr| 0x0A0 | float    |B0C3D4| 8D 87 CF 41 | 25.941187   | max horizontal extent at 350° }}&lt;br /&gt;
{{OBDtrBK|First extent info - information about the first extent in the extent part}}&lt;br /&gt;
{{OBDtr| 0x0A4 | int16    |E7CEA5| 05 00       | 5           | frame; -1 if the attack part does not exist }}&lt;br /&gt;
{{OBDtr| 0x0A6 | int8     |FFDDDD| 00          | 0           | attack index; always 0 }}&lt;br /&gt;
{{OBDtr| 0x0A7 | int8     |FFDDDD| 00          | 0           | attack frame offset; always 0 }}&lt;br /&gt;
{{OBDtr| 0x0A8 | float    |64AAAA| 00 00 00 BF | -0.500000   | x location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x0AC | float    |64AAAA| 1E 85 6B BF | -0.920000   | z location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x0B0 | float    |64AAAA| 19 47 0C 41 | 8.767358    | y location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x0B4 | float    |64AAAA| EB 51 F0 40 | 7.510000    | extent length }}&lt;br /&gt;
{{OBDtr| 0x0B8 | float    |64AAAA| D7 A3 14 41 | 9.290000    | extent min Y }}&lt;br /&gt;
{{OBDtr| 0x0BC | float    |64AAAA| 0A D7 3B 41 | 11.740000   | extent max Y }}&lt;br /&gt;
{{OBDtr| 0x0C0 | float    |64AAAA| 5E 93 BF 40 | 5.986739    | extent angle (in radians) }}&lt;br /&gt;
{{OBDtrBK|Farthest extent info - information about the farthest reaching extent in the extent part }}&lt;br /&gt;
{{OBDtr| 0x0C4 | int16    |EBEBEB| 2F 00       | 47          | frame; -1 if there is no attack part of if the animation is for a throw target/victim (&amp;quot;_tgt&amp;quot;) }}&lt;br /&gt;
{{OBDtr| 0x0C6 | int8     |8C8CCC| 01          | 1           | attack index to which the max extent belongs }}&lt;br /&gt;
{{OBDtr| 0x0C7 | int8     |FF00C8| 16          | 22          | attack frame offset from the attack with index 0 }}&lt;br /&gt;
{{OBDtr| 0x0C8 | float    |F0F096| 85 EB 51 BF | -1.850000   | x location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x0CC | float    |F0F096| E1 7A 7C C1 | -3.900000   | z location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x0D0 | float    |F0F096| 69 61 BF 40 | 16.874636   | y location of the pelvis }}&lt;br /&gt;
{{OBDtr| 0x0D4 | float    |F0F096| 70 3D 22 41 | 10.510000   | extent length }}&lt;br /&gt;
{{OBDtr| 0x0D8 | float    |F0F096| 47 E1 3A 40 | 8.860000    | extent min Y }}&lt;br /&gt;
{{OBDtr| 0x0DC | float    |F0F096| 33 33 DB 40 | 18.460000   | extent max Y }}&lt;br /&gt;
{{OBDtr| 0x0E0 | float    |F0F096| F7 C0 2E 3E | 0.055320    | extent angle }}&lt;br /&gt;
{{OBDtrBK|End max extent info }}&lt;br /&gt;
{{OBDtr| 0x0E4 | int32    |00C864| 00 00 00 00 | 0           | alternative move direction; used only when the previous move direction field is 0, that means never }}&lt;br /&gt;
{{OBDtr| 0x0E8 | int32    |00C8FF| 18 00 00 00 | 24          | number of elements in the extent part }}&lt;br /&gt;
{{OBDtr| 0x0EC | offset   |C80040| 60 F3 0F 00 | 0x000FF360  | raw file offset of the [[OBD:TRAM/raw0x13C|extent part]] }}&lt;br /&gt;
{{OBDtrBK|End extent info}}&lt;br /&gt;
{{OBDtr| 0x0F0 | offset   |FFFFC8| E0 F2 0F 00 | 0x000FF2E0  | raw file offset of the [[OBD:TRAM/raw0x1C|motion blur part]] }}&lt;br /&gt;
{{OBDtr| 0x0F4 | offset   |FFFFC8| 00 00 00 00 | unused      | raw file offset of the [[OBD:TRAM/raw0x24|throw data]] }}&lt;br /&gt;
{{OBDtr| 0x0F8 | offset   |FFFFC8| A0 F2 0F 00 | 0x000FF2A0  | raw file offset of the [[OBD:TRAM/raw0x14|attack part]] }}&lt;br /&gt;
{{OBDtr| 0x0FC | offset   |FFFFC8| 00 00 00 00 | unused      | raw file offset of the [[OBD:TRAM/raw0x18|damage part]] (used only by &amp;quot;_tgt&amp;quot; animations (throw targets/victims) }}&lt;br /&gt;
{{OBDtr| 0x100 | offset   |FFFFC8| 00 F3 0F 00 | 0x000F0F00  | raw file offset of the [[OBD:TRAM/raw0x2C|particle data]] (trails, dust, etc.) }}&lt;br /&gt;
{{OBDtr| 0x104 | offset   |FFFFC8| 00 00 00 00 | unused      | raw file offset of the [[OBD:TRAM/raw0x38|sound data]] }}&lt;br /&gt;
{{OBDtr2|0x108 | char[16] |FFCD96| konflash1                 | impact particle name (reference to 01018-.[[OBD:ONIA|ONIA]], which is called up in the [[OBD:ONCC|ONCC]] file) }}&lt;br /&gt;
{{OBDtr| 0x118 | link     |C8FFFF| 00 00 00 00 | unused      | direct animation 0 (link to a TRAM file) }}&lt;br /&gt;
{{OBDtr| 0x11C | link     |C8FFFF| 00 00 00 00 | unused      | direct animation 1 (link to a TRAM file) }}&lt;br /&gt;
{{OBDtr| 0x120 | float    |FFC800| 00 00 00 00 | 0.000000    | final rotation in radians (for anims that make you turn) }}&lt;br /&gt;
{{OBDtr| 0x124 | int32    |0096C8| 00 00 00 00 | 0           | number of elements in the sound part }}&lt;br /&gt;
{{OBDtr| 0x128 | int32    |FF80C0| 00 00 00 00 | 0           | unknown; runtime pointer to the sound? }}&lt;br /&gt;
{{OBDtr| 0x12C | uint16   |C8C864| 00 00       | 0           | hard pause in game ticks (1/60 seconds) }}&lt;br /&gt;
{{OBDtr| 0x12E | uint16   |C8C864| 12 00       | 18          | soft pause in game ticks (1/60 seconds) }}&lt;br /&gt;
{{OBDtr| 0x130 | uint16   |804040| FF FF       | 65535       | action frame }}&lt;br /&gt;
{{OBDtr| 0x132 | uint16   |804040| 0A 00       | 10          | first level where the animation is available }}&lt;br /&gt;
{{OBDtr| 0x134 | uint16   |C87C64| 06 00       | 6 &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; superpunch | vocalization type (-1 if unused) }}&lt;br /&gt;
{{OBDtr| 0x136 | uint8    |808080| 02          | 2           | number of elements in the attack part }}&lt;br /&gt;
{{OBDtr| 0x137 | uint8    |808080| 00          | 0           | number of elements in the take damage part }}&lt;br /&gt;
{{OBDtr| 0x138 | uint8    |FFAA82| 01          | 1           | number of elements in the motion blur part }}&lt;br /&gt;
{{OBDtr| 0x139 | uint8    |00D900| 04          | 4           | number of elements in the particle part }}&lt;br /&gt;
{{OBDtr| 0x13A | uint8    |FF22FF| 01          | 1           | first &amp;quot;invulnerable&amp;quot; frame }}&lt;br /&gt;
{{OBDtr| 0x13B | uint8    |FF22FF| 1C          | 28          | last &amp;quot;invulnerable&amp;quot; frame }}&lt;br /&gt;
{{OBDtr| 0x13C | char[4]  |CACAFF| AD DE       | dead        | unused (not part of the template) }}&lt;br /&gt;
|}&lt;br /&gt;
At the time of writing, some of the above data is merely an informed guess (not thoroughly confirmed), and the nature of 0x128 (int32?) needs to be clarified more particularly. We also need to locate &amp;quot;end/maximal interpolation&amp;quot; and possibly other remaining fields from the PC data format, or establish that they are missing from the TRAM/TREX representation of animations on PS2.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{OBD_File_Footer | type=TRAM | prev=TRAC | next=TRAS | name=Totoro Animation Sequence | family=Character}}&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=MediaWiki:Unusedimagestext-categorizedimgisused&amp;diff=47114</id>
		<title>MediaWiki:Unusedimagestext-categorizedimgisused</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=MediaWiki:Unusedimagestext-categorizedimgisused&amp;diff=47114"/>
		<updated>2026-04-16T18:36:20Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: rewrite for clarity; added link to message page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;While this page would normally list &amp;quot;unused&amp;quot; images, if $wgCountCategorizedImagesAsUsed is set to true (as it is for our wiki) then categorized images are considered to be used even if they are not referenced from any page. Because we categorize all of our uploaded images, this page should be empty.&lt;br /&gt;
&lt;br /&gt;
Click [[MediaWiki:Unusedimagestext-categorizedimgisused|here]] to edit this message.&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:TXMP&amp;diff=47113</id>
		<title>OBD:TXMP</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:TXMP&amp;diff=47113"/>
		<updated>2026-04-16T18:29:45Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: removed one last reference to wrong row order&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OBD_File_Header | type=TXMP | prev=TXMB | next=TxtC | name=Texture Map | family=General | align=center}}&lt;br /&gt;
&lt;br /&gt;
TXMP is the only known instance type that is interpreted differently by the three kinds of Oni engines on the three platforms (Windows, Mac and PS2).&lt;br /&gt;
&lt;br /&gt;
The difference between the format used in v1.0 of the engine (Windows retail) and v1.1 (Windows demo, Mac, [[OniX]]) is minor, at least from the point of view of disk storage (the structural difference is limited to runtime fields grouped at the end of the instance, which is why they haven&#039;t been documented or implemented in OniSplit). A more obvious difference is that v1.0 TXMPs store their pixel data in the .raw file and v1.1 TXMPs use the .sep file, but as far as the .dat is concerned this merely amounts to using a different data pointer field within the TXMP structure. Thus, even though the template checksums for v1.0 and v1.1 are different, both formats can easily be described together.&lt;br /&gt;
&lt;br /&gt;
The PS2 implementation is significantly different from the other two, in that it systematically uses indexed colors: instead of color being stored in the pixel data itself, each pixel is merely an index into a custom 256-color palette. This format is detailed under {{SectionLink||PS2 implementation}}.&lt;br /&gt;
&lt;br /&gt;
==Windows/Mac implementation==&lt;br /&gt;
[[Image:txmp_all.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
|- ALIGN=CENTER VALIGN=TOP&lt;br /&gt;
{{OBDtr| 0x00 | res_id   |FF0000| 01 1F 00 00 | 31        | 00031-rl_1.TXMP }}&lt;br /&gt;
{{OBDtr| 0x04 | lev_id   |FFFF00| 01 00 00 06 | 3         | level 3 }}&lt;br /&gt;
{{OBDtr2|0x08 | char[128]|FFC8C8| rl_1                    | name of the texture; unused }}&lt;br /&gt;
{{OBDtr| 0x88 | int32    |FFFFC8| 00 10 00 00 | 0x1000    | options; possible option flags (from left to right):&lt;br /&gt;
:0x01 - has mipmaps&lt;br /&gt;
:0x04 - U wrapping disabled&lt;br /&gt;
:0x08 - V wrapping disabled&lt;br /&gt;
:0x10 - ignored&lt;br /&gt;
:0x40 - animation order: play back to back (frames 0 to n then n-1 to 0)&lt;br /&gt;
:0x80 - animation order: play in random order&lt;br /&gt;
:0x100 - animation time: add local (particle) time (see below)&lt;br /&gt;
:0x200 - has environment map texture&lt;br /&gt;
:0x400 - additive alpha blending&lt;br /&gt;
:0x1000 - little-endian data&lt;br /&gt;
:0x4000 - animation time: ignore game time (see below)&lt;br /&gt;
:0x8000 - effect: blue shield&lt;br /&gt;
:0x10000 - effect: invisibility&lt;br /&gt;
:0x20000 - effect: Daodan shield}}&lt;br /&gt;
{{OBDtr| 0x8C | int16    |C8FFC8| 80 00       | 128       | width of the image in pixels }}&lt;br /&gt;
{{OBDtr| 0x8E | int16    |C8FFC8| 80 00       | 128       | height of the image in pixels }}&lt;br /&gt;
{{OBDtr| 0x90 | int32    |C8FFFF| 09 00 00 00 | 9         | texture format; see below for list of available formats.&lt;br /&gt;
:0 - ARGB4444, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Four 4-bit channels, with bitmasks 0x000F (Blue), 0x00F0 (Green), 0x0F00 (Red) and 0xF000 (Alpha).&lt;br /&gt;
:1 - RGB555, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels, with bitmasks 0x001F (Blue), 0x03E0 (Green) and 0x7C00 (Red).&lt;br /&gt;
:::N.B. The high bit (0x8000) is unused, but the convention is to always set it to 1.&lt;br /&gt;
:2 - ARGB1555, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels with bitmasks 0x001F (Blue), 0x03E0 (Green) and 0x7C00 (Red), 1-bit alpha (0x8000).&lt;br /&gt;
:3 (never used in vanilla TXMPs)&amp;lt;ref&amp;gt;[[TSFT]] implicitly uses I8 for storing its glyphs in the PC versions, at least in most languages (the Chinese version has its own font storage system), but TSFT doesn&#039;t use TXMP to store its pixel data so it doesn&#039;t count as a use of this TXMP format type.&amp;lt;/ref&amp;gt; - I8, 8 bits/pixel, stored as a single byte. Monochrome &amp;quot;intensity&amp;quot; (256 levels of gray).&lt;br /&gt;
:4 (never used in vanilla TXMPs) - I1, 8 &#039;&#039;pixels/byte&#039;&#039;. Monochrome &amp;quot;intensity&amp;quot; (black-or-white).&lt;br /&gt;
:5 (never used in vanilla TXMPs) - A8, 8 bits/pixel, stored as a single byte. Standalone alpha (256 levels of opacity).&lt;br /&gt;
:6 (never used in vanilla TXMPs) - A4I4, 8 bits/pixel, stored as a single byte. Intensity (bit mask 0x0F), alpha (0xF0).&lt;br /&gt;
:7 (never used in vanilla TXMPs&amp;lt;ref&amp;gt;Storage format 7 was jointly used by OniSplit, Daodan DLL and the Intel Mac build to allow for 32-bit textures with transparency - most importantly experimental lightmaps, see [[Lightmapping levels|HERE]]. However, the actual storage format used in this case was RGBA_Bytes (type 11), and type 7 was used by mistake.&amp;lt;/ref&amp;gt;) - ARGB8888, 32 bits/pixel (stored as a little-endian int32, swaps to big-endian at runtime on a PowerPC Mac)&lt;br /&gt;
::Four 8-bit channels, with bitmasks 0x000000FF (Blue), 0x0000FF00 (Green), 0x00FF0000 (Red) and 0xFF000000 (Alpha).&lt;br /&gt;
:8 - RGB888, 32 bits/pixel (stored as a little-endian int32, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 8-bit channels, with bitmasks 0x000000FF (Blue), 0x0000FF00 (Green) and 0x00FF0000 (Red).&lt;br /&gt;
:::N.B. The high byte (0xFF000000) is unused, but the convention is to always set it to 0x00.&lt;br /&gt;
:9 - S3TC/DXT1, RGB565 compressed 4 times ([https://wikis.khronos.org/opengl/S3_Texture_Compression GL_COMPRESSED_RGB_S3TC_DXT1_EXT] OpenGL texture format)&lt;br /&gt;
:10 (never used in vanilla TXMPs) - RGB_Bytes, 24 bits/pixel, stored as 3 consecutive bytes: first Red, then Green, then Blue.&lt;br /&gt;
::N.B. Unlike for RGB888 (type 8), the storage is compact, with no unused alpha bit.&lt;br /&gt;
:11 (never used in vanilla TXMPs&amp;lt;ref&amp;gt;Storage format 11 (RGBA_Bytes) was effectively implemented by OniSplit to allow for 32-bit textures with transparency - most importantly experimental lightmaps, see [[Lightmapping levels|HERE]]. However, it was mislabeled as type 7 (ARGB8888) by OniSplit, Daodan DLL and the Intel Mac build, which resulted in byte swapping and the requirement of authoring Windows and Mac versions of TXMPs.&amp;lt;/ref&amp;gt;) - RGBA_Bytes, 32 bits/pixel, stored as 4 consecutive bytes: first Red, then Green, then Blue, then Alpha.&lt;br /&gt;
:12 (never used in vanilla TXMPs) - RGBA5551, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels with bitmasks 0x003E (Blue), 0x07C0 (Green) and 0xF800 (Red), 1-bit alpha (0x0001).&lt;br /&gt;
:13 (never used in vanilla TXMPs) - RGBA4444, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Four 4-bit channels, with bitmasks 0x00F0 (Blue), 0x0F00 (Green), 0xF000 (Red) and 0x000F (Alpha).&lt;br /&gt;
:14 (never used in vanilla TXMPs) - RGB565, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Two 5-bit channels with bitmasks 0x001F (Blue) and 0xF800 (Red), 6-bit Green channel (0x07E0).&lt;br /&gt;
:15 (never used in vanilla TXMPs) - ABGR1555, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels with bitmasks 0x001F (Red), 0x03E0 (Green) and 0x7C00 (Blue), 1-bit alpha (0x8000).&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr| 0x94 | link     |FFC8FF| 00 00 00 00 | unused    | link to a [[OBD:TXAN|TXAN]] file; used if this texture is animated }}&lt;br /&gt;
{{OBDtr| 0x98 | link     |FFC800| 00 00 00 00 | unused    | link to a TXMP file that contain the environment map  }}&lt;br /&gt;
{{OBDtr| 0x9C | offset   |C800C8| 20 00 00 00 |00 00 00 20| offset of pixel data in the raw file (v1.0 engine only) }}&lt;br /&gt;
{{OBDtr| 0xA0 | offset   |C87C64| 00 00 00 00 | unused    | offset of pixel data in the separate file (v1.1 engine only) }}&lt;br /&gt;
{{OBDtr| 0xA4 | char[12] |B0C3D4| AD DE       | dead      | The layout of these 12 bytes is different for the v1.0 and v1.1 versions (i.e. Windows retail vs. Windows demo and Mac):&lt;br /&gt;
*For a v1.1 TXMP, the four bytes at 0xA4-A7 are &amp;quot;00 00 00 00&amp;quot; instead of &amp;quot;AD DE AD DE&amp;quot;, and correspond to a &amp;quot;material type&amp;quot; attributed at runtime (from [[TMBD]]), which is then used for impact/breakability lookup. The Windows retail TXMPs apparently have no such &amp;quot;material type&amp;quot; field.&lt;br /&gt;
*The fields at 0xA8-AF (for v1.1) or 0xA4-AB (for v1.0) are used only at runtime (and somehow obfuscated by &amp;quot;0xDEAD&amp;quot; when written to disk). Judging by the Windows demo and Mac engine, we can assume they are the same in both engines, and serve for rendering optimization (there is a texture name pointer, a &amp;quot;dirty&amp;quot; flag stored as a byte and 3 extra bytes used as flags).&lt;br /&gt;
*For Windows retail, the four bytes at 0xAC-AF are completely unused (not part of the template).&lt;br /&gt;
Since runtime fields are grouped at the end, v1.0 and v1.1 TXMPs are treated by OniSplit under the same template, merely switching between the .raw and .sep links and blanking out everything past 0xA4.&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr| 0xB0 | char[16] |B0C3D4| AD DE       | dead      | padding bytes (not part of TXMP) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect options===&lt;br /&gt;
The &amp;quot;blue shield&amp;quot;, &amp;quot;invisibility&amp;quot; and &amp;quot;Daodan shield&amp;quot; options tell the engine to vary the texture&#039;s Gouraud shading with certain preset colors that vary with time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Flag name&lt;br /&gt;
!Texture with flag&lt;br /&gt;
!Used for&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;blue shield&amp;quot;&lt;br /&gt;
|TXMPSHIELD&lt;br /&gt;
|force shield&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;invisibility&amp;quot;&lt;br /&gt;
|TXMPINVIS&lt;br /&gt;
|phase cloak&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;Daodan shield&amp;quot;&lt;br /&gt;
|TXMPDAODAN_SHIELD&lt;br /&gt;
|red boss shield and [[supershield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In the vanilla game data, these flags are only used by the above-named textures. The engine also calls upon these textures by hardcoded name in order to create a character&#039;s shield or phase cloak effect.&lt;br /&gt;
&lt;br /&gt;
===Animation time===&lt;br /&gt;
When using animated textures the image to display is selected using the game time and animation speed. For textures that are used by particles the local (particle) time can be used either to replace or offset the game time.&lt;br /&gt;
&lt;br /&gt;
===Pixel byte storage order===&lt;br /&gt;
As noted above under each format description, the bytes of multibyte texture formats are generally stored &amp;quot;backwards&amp;quot; compared to their names, so if a format is named &amp;quot;RGBA&amp;quot;-something then its bytes will be in ABGR order on disk. This convention was established in the Windows world where PCs were little-endian and loading the bytes AA BB GG RR into a 32-bit int in memory would place them in the correct order, 0xRRGGBBAA. Macintoshes, being big-endian at the time, expected the data to be stored in reverse order and thus Oni would perform a byte swap on most of these types when it loaded them into memory to ensure that they ended up as 0xRRGGBBAA in memory. The sole exceptions to this little-endian storage rule among Oni&#039;s supported texture formats are RGB_Bytes and RGBA_Bytes, which actually store their bytes in the stated order, RGB and RGBA respectively. However these formats were never used by any textures in Oni.&lt;br /&gt;
&lt;br /&gt;
===Pixel scanline storage order===&lt;br /&gt;
Pixels are stored in row-major order, meaning that the pixels are stored in rows and then columns, as opposed to the other way around. These rows are stored in &#039;&#039;top-to-bottom&#039;&#039; order, contrary to what was documented on this wiki for a long time. In the case of the DXT1 storage format, the row-major, left-to-right, top-to-bottom order applies to the 4x4 blocks composing the image, and also inside each 4x4 block for the storage of 2-bit pixels. In the case of the I1 format (multiple pixels per byte), the row-major, left-to-right, top-to-bottom order applies to the 1-bit pixels composing the image.&lt;br /&gt;
&lt;br /&gt;
==PS2 implementation==&lt;br /&gt;
The PS2 TXMP layout is similar to PC, with notable differences in the last few bytes due to Rockstar moving to a PS2-standard 32-bit indexed color (&amp;quot;CLUT&amp;quot;) system for optimization purposes. Here are the high-level differences:&lt;br /&gt;
*There are 4 extra bytes of storage as compared to a v1.1 TXMP (which is already 4 bytes larger than a v1.0 TXMP).&lt;br /&gt;
*The extra 4 bytes come from a palette index (int32) inserted at 0x90 before the pixel format (which is pushed down to 0x94 along with everything else that follows).&lt;br /&gt;
*Two new pixel formats were added, and are the only formats used on PS2: type 16 for opaque textures (indexed 32-bit RGB with ignored alpha byte), and type 17 for transparent textures (indexed 32-bit RGBA).&lt;br /&gt;
*The pixel data (color indices) can be stored either in the .raw file (pointer field at 0xA0) or in the .sep file (pointer at 0xA4).&lt;br /&gt;
&lt;br /&gt;
Here is how the end of TXMPrl_1 looks in level3_Final.dat of the English retail PS2 version.&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
|- ALIGN=CENTER VALIGN=TOP&lt;br /&gt;
{{OBDtr| 0x90 | int32    |C8FFC8| 56 00 00 00 | 86        | index of the 256-color palette used by this texture (starts at 0x15800 in level3_palette.pal) }}&lt;br /&gt;
{{OBDtr| 0x94 | int32    |C8FFFF| 10 00 00 00 | 16        | pixel format 16 (indexed 32-bit RGB with inactive alpha) }}&lt;br /&gt;
{{OBDtr| 0x98 | link     |FFC8FF| 00 00 00 00 | 0         | link to a [[OBD:TXAN|TXAN]] file; used if this texture is animated }}&lt;br /&gt;
{{OBDtr| 0x9C | link     |FFC800| 00 00 00 00 | 0         | link to a TXMP file that contains the environment map  }}&lt;br /&gt;
{{OBDtr| 0xA0 | offset   |C800C8| C0 05 00 00 |00 00 05 C0| offset of pixel data in the .raw file }}&lt;br /&gt;
{{OBDtr| 0xA4 | offset   |C87C64| 00 00 00 00 | 0         | offset of pixel data in the .sep file }}&lt;br /&gt;
{{OBDtr| 0xA8 | int32    |B0C3D4| 00 00 00 00 | 0         | always 0; presumably the same &amp;quot;material type&amp;quot; (set at runtime) as for Windows demo and Mac }}&lt;br /&gt;
{{OBDtr| 0xAC | char[4]  |B0C3D4| AD DE AD DE | dead      | presumably the same texture name pointer (set at runtime) as for Windows demo and Mac }}&lt;br /&gt;
{{OBDtr| 0xB0 | char[4]  |B0C3D4| AD DE AD DE | dead      | presumably the same rendering optimization flags (runtime) as for Windows demo and Mac }}&lt;br /&gt;
{{OBDtr| 0xB4 | char[12] |B0C3D4| AD DE       | dead      | completely unused bytes (not part of the template) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Palette file format===&lt;br /&gt;
*Palettes are stored per-level in level#_palette.pal files in a pal/ subdirectory of GameDataFolder, corresponding to how .raw and .sep files are stored in raw/ and sep/ subdirectories.&lt;br /&gt;
*Each level#_palette.pal file contains between 85 and 179 palettes, not counting the first palette (index 0) at the start of each .pal file which is always blank.&lt;br /&gt;
&lt;br /&gt;
===Palette format===&lt;br /&gt;
*Valid palette indices start at 1 because of palette 0 always being empty.&lt;br /&gt;
*Each color in a palette entry is 4 bytes, stored on disk in RGBA order (byte 0 = red, byte 1 = green, byte 2 = blue, byte 3 = alpha). This is the same layout as RGB_Bytes (type 10) and RGBA_Bytes (type 11), not the reversed BGRA order used by most of the other texture formats.&lt;br /&gt;
*Each palette consists of 256 32-bit color slots and thus takes up 1024 bytes. If a palette does not use all 256 entries then the palette is closed out with a series of {0x00, 0x00, 0x00, 0x80} entries.&lt;br /&gt;
*Each pixel in the .raw or .sep data is stored as a 1-byte index into the image&#039;s chosen color palette.&lt;br /&gt;
&lt;br /&gt;
===Palette CLUT swizzle===&lt;br /&gt;
:The PS2 Graphics Synthesizer (GS) stores CLUT entries in a scrambled order due to its hardware cache line layout. Within every 32-entry block of the palette, entries 8–15 and 16–23 are swapped relative to their logical positions. Software reading the palette must undo this before using it as a palette index.&lt;br /&gt;
&lt;br /&gt;
===Ignored alpha byte for type 16===&lt;br /&gt;
:The fourth byte would represent alpha, but in RGB888 it is merely a padding byte, always set to 0x80.&lt;br /&gt;
&lt;br /&gt;
===Alpha scaling for type 17===&lt;br /&gt;
:The PS2 GS uses a half-range alpha where 0x00 = fully transparent and 0x80 = fully opaque (values above 0x80 are technically possible but indicate &amp;quot;source alpha contribution &amp;gt; 1&amp;quot; in GS blending, which doesn&#039;t arise in Oni).&lt;br /&gt;
&lt;br /&gt;
===Alternating use of .raw or .sep storage===&lt;br /&gt;
Unlike the Win/Mac game data (where pixel data is stored exclusively in .raw or exclusively in .sep for all TXMPs), PS2 TXMPs use .raw and .sep storage alternatingly, depending on the TXMP. The engine apparently uses the .sep pointer if there is no .raw pointer (or vice versa).&lt;br /&gt;
&lt;br /&gt;
Examples of textures using .sep storage are: all [[:Category:Fly-in_portraits|fly-in portraits]]; all [[:Category:Splashscreens|splashscreen]] components; some illustrations in Konoko&#039;s [[Data Comlink]] (namely, [[:File:TXMPLevel02move.png|combat move illustrations]] and [[:File:TXMPhypo.png|item illustrations]]; objectives and weapon illustrations use .raw storage).&lt;br /&gt;
&lt;br /&gt;
Environment/character/particle TXMPs seem to be using .raw storage consistently (not checked beyond level1_Final). As a notable anomaly, .sep storage is used for the following three textures (console screens) in level0_Final: _CON_SAVEGAME (main TXMP only; the animation frames use .raw storage), _CON_SAVEGAME_USED, _CON_USED.&lt;br /&gt;
&lt;br /&gt;
==Oni&#039;s internal storage types==&lt;br /&gt;
Some of Oni&#039;s 18 types of image storage are elaborated on below in order to illustrate exactly how they work. The &amp;quot;Mem view&amp;quot; column shows the bytes in big-endian format and the &amp;quot;Disk view&amp;quot; column shows the bytes as they are actually stored in little-endian order. For example, bytes in memory shown as 0xFC00 are stored as &amp;quot;00 FC&amp;quot; on disk.&lt;br /&gt;
&lt;br /&gt;
===ARGB4444 (type 0)===&lt;br /&gt;
*A 16-bit field is used to store 4 color channels (4 bits each, values from 0 to 15).&lt;br /&gt;
*Bit masks are 0x000F for Blue, 0x00F0 for Green, 0x0F00 for Red, 0xF000 for Alpha.&lt;br /&gt;
*Stored as big-endian in TXMP (first the AAAARRRR byte, then the GGGGBBBB byte).&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A A A A R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=3|&amp;lt;br&amp;gt;Bit values for primary colors (fully opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 00!!00 F0&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF!!FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00!!00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 F0!!F0 F0&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 0F!!0F F0&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 FF!!FF F0&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 0F!!0F FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF F0!!F0 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGB555 (type 1)===&lt;br /&gt;
*A 16-bit field is used to store 3 color channels (5 bits each, values from 0 to 31).&lt;br /&gt;
*Bit masks are 0x001F for Blue, 0x03E0 for Green, 0x7C00 for Red.&lt;br /&gt;
*The high bit (0x8000) is unused, but is always set to 1 by convention.  &lt;br /&gt;
*Stored in little-endian order in TXMP.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;X R R R R R G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=3|&amp;lt;br&amp;gt;Bit values for primary colors&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 00!!00 80&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF!!FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 00!!00 FC&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 E0!!E0 83&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 1F!!1F 80&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 FF!!FF 83&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 1F!!1F FC&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF E0!!E0 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ARGB1555 (type 2)===&lt;br /&gt;
*A 16-bit field is used to store 3 color channels (5 bits each, values from 0 to 31) and one 1-bit channel.&lt;br /&gt;
*Bit masks are 0x001F for Blue, 0x03E0 for Green, 0x7C00 for Red, and 0x8000 for Alpha.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A R R R R R G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=3|&amp;lt;br&amp;gt;Bit values for primary colors (opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 00!!00 80&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF!!FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 00!!00 FC&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 E0!!E0 83&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 1F!!1F 80&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 FF!!FF 83&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 1F!!1F FC&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF E0!!E0 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===A4I4 (type 6)===&lt;br /&gt;
*An 8-bit field is used to store an intensity and an alpha (4 bits each, values from 0 to 15).&lt;br /&gt;
*Bit masks are 0x0F for Intensity, 0xF0 for Alpha.&lt;br /&gt;
*Endianness is irrelevant for single-byte storage.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!Bits&lt;br /&gt;
!&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A A A A I I I I&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=2|Examples of bit values&lt;br /&gt;
!Mem view&lt;br /&gt;
|-&lt;br /&gt;
|Black, opaque||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0&lt;br /&gt;
|-&lt;br /&gt;
|White, opaque||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF&lt;br /&gt;
|-&lt;br /&gt;
|Black, transparent||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00&lt;br /&gt;
|-&lt;br /&gt;
|White, transparent||&amp;lt;code&amp;gt;0 0 0 0 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!0F&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ARGB8888 (type 7)===&lt;br /&gt;
*A 32-bit field is used to store 4 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Bit masks are 0x000000FF for Blue, 0x0000FF00 for Green, 0x00FF0000 for Red, 0xFF000000 for Alpha.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 3 (highest)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (higher)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A A A A A A A A&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=5|&amp;lt;br&amp;gt;Bit values for primary colors (fully opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00 00!!00 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF FF!!FF FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00 00!!00 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF 00!!00 FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00 FF!!FF 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF FF!!FF FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00 FF!!FF 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF 00!!00 FF FF FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGB888 (type 8)===&lt;br /&gt;
*A 32-bit field is used to store 3 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Bit masks are 0x000000FF for Blue, 0x0000FF00 for Green, 0x00FF0000 for Red.&lt;br /&gt;
*The high byte (0xFF000000) is unused, but is always set to 00 by convention.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 3 (highest)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (higher)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;X X X X X X X X&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=5|&amp;lt;br&amp;gt;Bit values for primary colors&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00 00!!00 00 00 00&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF FF!!FF FF FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00 00!!00 00 FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF 00!!00 FF 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00 FF!!FF 00 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF FF!!FF FF 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00 FF!!FF 00 FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF 00!!00 FF FF 00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGB_Bytes (type 10)===&lt;br /&gt;
*Three consecutive 8-bit fields are used to store 3 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Each channel has its own byte, and there is no &amp;quot;unused&amp;quot; byte (the bytes are packed 3 by 3).&lt;br /&gt;
*Endianness is irrelevant when storing as a sequence of bytes.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 0 (red)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (green)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (blue)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=4|Bit values for primary colors&lt;br /&gt;
!Mem view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGBA_Bytes (type 11)===&lt;br /&gt;
*Four consecutive 8-bit fields are used to store 4 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Each channel has its own byte. Endianness is irrelevant when storing as a sequence of bytes.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 0 (red)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (green)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (blue)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 3 (alpha)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;A A A A A A A A&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=5|&amp;lt;br&amp;gt;Bit values for primary colors (fully opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OBD_File_Footer | type=TXMP | prev=TXMB | next=TxtC | name=Texture Map | family=General}}&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:TXMP&amp;diff=47112</id>
		<title>OBD:TXMP</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:TXMP&amp;diff=47112"/>
		<updated>2026-04-16T18:27:53Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: how is it possible that the wiki was wrong about this major fact, accompanied by a wrong illustration, for twenty years? I don&amp;#039;t know, but I&amp;#039;m fixing it now&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OBD_File_Header | type=TXMP | prev=TXMB | next=TxtC | name=Texture Map | family=General | align=center}}&lt;br /&gt;
&lt;br /&gt;
TXMP is the only known instance type that is interpreted differently by the three kinds of Oni engines on the three platforms (Windows, Mac and PS2).&lt;br /&gt;
&lt;br /&gt;
The difference between the format used in v1.0 of the engine (Windows retail) and v1.1 (Windows demo, Mac, [[OniX]]) is minor, at least from the point of view of disk storage (the structural difference is limited to runtime fields grouped at the end of the instance, which is why they haven&#039;t been documented or implemented in OniSplit). A more obvious difference is that v1.0 TXMPs store their pixel data in the .raw file and v1.1 TXMPs use the .sep file, but as far as the .dat is concerned this merely amounts to using a different data pointer field within the TXMP structure. Thus, even though the template checksums for v1.0 and v1.1 are different, both formats can easily be described together.&lt;br /&gt;
&lt;br /&gt;
The PS2 implementation is significantly different from the other two, in that it systematically uses indexed colors: instead of color being stored in the pixel data itself, each pixel is merely an index into a custom 256-color palette. This format is detailed under {{SectionLink||PS2 implementation}}.&lt;br /&gt;
&lt;br /&gt;
==Windows/Mac implementation==&lt;br /&gt;
[[Image:txmp_all.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
|- ALIGN=CENTER VALIGN=TOP&lt;br /&gt;
{{OBDtr| 0x00 | res_id   |FF0000| 01 1F 00 00 | 31        | 00031-rl_1.TXMP }}&lt;br /&gt;
{{OBDtr| 0x04 | lev_id   |FFFF00| 01 00 00 06 | 3         | level 3 }}&lt;br /&gt;
{{OBDtr2|0x08 | char[128]|FFC8C8| rl_1                    | name of the texture; unused }}&lt;br /&gt;
{{OBDtr| 0x88 | int32    |FFFFC8| 00 10 00 00 | 0x1000    | options; possible option flags (from left to right):&lt;br /&gt;
:0x01 - has mipmaps&lt;br /&gt;
:0x04 - U wrapping disabled&lt;br /&gt;
:0x08 - V wrapping disabled&lt;br /&gt;
:0x10 - ignored&lt;br /&gt;
:0x40 - animation order: play back to back (frames 0 to n then n-1 to 0)&lt;br /&gt;
:0x80 - animation order: play in random order&lt;br /&gt;
:0x100 - animation time: add local (particle) time (see below)&lt;br /&gt;
:0x200 - has environment map texture&lt;br /&gt;
:0x400 - additive alpha blending&lt;br /&gt;
:0x1000 - little-endian data&lt;br /&gt;
:0x4000 - animation time: ignore game time (see below)&lt;br /&gt;
:0x8000 - effect: blue shield&lt;br /&gt;
:0x10000 - effect: invisibility&lt;br /&gt;
:0x20000 - effect: Daodan shield}}&lt;br /&gt;
{{OBDtr| 0x8C | int16    |C8FFC8| 80 00       | 128       | width of the image in pixels }}&lt;br /&gt;
{{OBDtr| 0x8E | int16    |C8FFC8| 80 00       | 128       | height of the image in pixels }}&lt;br /&gt;
{{OBDtr| 0x90 | int32    |C8FFFF| 09 00 00 00 | 9         | texture format; see below for list of available formats.&lt;br /&gt;
:0 - ARGB4444, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Four 4-bit channels, with bitmasks 0x000F (Blue), 0x00F0 (Green), 0x0F00 (Red) and 0xF000 (Alpha).&lt;br /&gt;
:1 - RGB555, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels, with bitmasks 0x001F (Blue), 0x03E0 (Green) and 0x7C00 (Red).&lt;br /&gt;
:::N.B. The high bit (0x8000) is unused, but the convention is to always set it to 1.&lt;br /&gt;
:2 - ARGB1555, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels with bitmasks 0x001F (Blue), 0x03E0 (Green) and 0x7C00 (Red), 1-bit alpha (0x8000).&lt;br /&gt;
:3 (never used in vanilla TXMPs)&amp;lt;ref&amp;gt;[[TSFT]] implicitly uses I8 for storing its glyphs in the PC versions, at least in most languages (the Chinese version has its own font storage system), but TSFT doesn&#039;t use TXMP to store its pixel data so it doesn&#039;t count as a use of this TXMP format type.&amp;lt;/ref&amp;gt; - I8, 8 bits/pixel, stored as a single byte. Monochrome &amp;quot;intensity&amp;quot; (256 levels of gray).&lt;br /&gt;
:4 (never used in vanilla TXMPs) - I1, 8 pixels/byte. Pixel rows, bottom to top. Monochrome &amp;quot;intensity&amp;quot; (black-or-white).&lt;br /&gt;
:5 (never used in vanilla TXMPs) - A8, 8 bits/pixel, stored as a single byte. Standalone alpha (256 levels of opacity).&lt;br /&gt;
:6 (never used in vanilla TXMPs) - A4I4, 8 bits/pixel, stored as a single byte. Intensity (bit mask 0x0F), alpha (0xF0).&lt;br /&gt;
:7 (never used in vanilla TXMPs&amp;lt;ref&amp;gt;Storage format 7 was jointly used by OniSplit, Daodan DLL and the Intel Mac build to allow for 32-bit textures with transparency - most importantly experimental lightmaps, see [[Lightmapping levels|HERE]]. However, the actual storage format used in this case was RGBA_Bytes (type 11), and type 7 was used by mistake.&amp;lt;/ref&amp;gt;) - ARGB8888, 32 bits/pixel (stored as a little-endian int32, swaps to big-endian at runtime on a PowerPC Mac)&lt;br /&gt;
::Four 8-bit channels, with bitmasks 0x000000FF (Blue), 0x0000FF00 (Green), 0x00FF0000 (Red) and 0xFF000000 (Alpha).&lt;br /&gt;
:8 - RGB888, 32 bits/pixel (stored as a little-endian int32, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 8-bit channels, with bitmasks 0x000000FF (Blue), 0x0000FF00 (Green) and 0x00FF0000 (Red).&lt;br /&gt;
:::N.B. The high byte (0xFF000000) is unused, but the convention is to always set it to 0x00.&lt;br /&gt;
:9 - S3TC/DXT1, RGB565 compressed 4 times ([https://wikis.khronos.org/opengl/S3_Texture_Compression GL_COMPRESSED_RGB_S3TC_DXT1_EXT] OpenGL texture format)&lt;br /&gt;
:10 (never used in vanilla TXMPs) - RGB_Bytes, 24 bits/pixel, stored as 3 consecutive bytes: first Red, then Green, then Blue.&lt;br /&gt;
::N.B. Unlike for RGB888 (type 8), the storage is compact, with no unused alpha bit.&lt;br /&gt;
:11 (never used in vanilla TXMPs&amp;lt;ref&amp;gt;Storage format 11 (RGBA_Bytes) was effectively implemented by OniSplit to allow for 32-bit textures with transparency - most importantly experimental lightmaps, see [[Lightmapping levels|HERE]]. However, it was mislabeled as type 7 (ARGB8888) by OniSplit, Daodan DLL and the Intel Mac build, which resulted in byte swapping and the requirement of authoring Windows and Mac versions of TXMPs.&amp;lt;/ref&amp;gt;) - RGBA_Bytes, 32 bits/pixel, stored as 4 consecutive bytes: first Red, then Green, then Blue, then Alpha.&lt;br /&gt;
:12 (never used in vanilla TXMPs) - RGBA5551, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels with bitmasks 0x003E (Blue), 0x07C0 (Green) and 0xF800 (Red), 1-bit alpha (0x0001).&lt;br /&gt;
:13 (never used in vanilla TXMPs) - RGBA4444, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Four 4-bit channels, with bitmasks 0x00F0 (Blue), 0x0F00 (Green), 0xF000 (Red) and 0x000F (Alpha).&lt;br /&gt;
:14 (never used in vanilla TXMPs) - RGB565, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Two 5-bit channels with bitmasks 0x001F (Blue) and 0xF800 (Red), 6-bit Green channel (0x07E0).&lt;br /&gt;
:15 (never used in vanilla TXMPs) - ABGR1555, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels with bitmasks 0x001F (Red), 0x03E0 (Green) and 0x7C00 (Blue), 1-bit alpha (0x8000).&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr| 0x94 | link     |FFC8FF| 00 00 00 00 | unused    | link to a [[OBD:TXAN|TXAN]] file; used if this texture is animated }}&lt;br /&gt;
{{OBDtr| 0x98 | link     |FFC800| 00 00 00 00 | unused    | link to a TXMP file that contain the environment map  }}&lt;br /&gt;
{{OBDtr| 0x9C | offset   |C800C8| 20 00 00 00 |00 00 00 20| offset of pixel data in the raw file (v1.0 engine only) }}&lt;br /&gt;
{{OBDtr| 0xA0 | offset   |C87C64| 00 00 00 00 | unused    | offset of pixel data in the separate file (v1.1 engine only) }}&lt;br /&gt;
{{OBDtr| 0xA4 | char[12] |B0C3D4| AD DE       | dead      | The layout of these 12 bytes is different for the v1.0 and v1.1 versions (i.e. Windows retail vs. Windows demo and Mac):&lt;br /&gt;
*For a v1.1 TXMP, the four bytes at 0xA4-A7 are &amp;quot;00 00 00 00&amp;quot; instead of &amp;quot;AD DE AD DE&amp;quot;, and correspond to a &amp;quot;material type&amp;quot; attributed at runtime (from [[TMBD]]), which is then used for impact/breakability lookup. The Windows retail TXMPs apparently have no such &amp;quot;material type&amp;quot; field.&lt;br /&gt;
*The fields at 0xA8-AF (for v1.1) or 0xA4-AB (for v1.0) are used only at runtime (and somehow obfuscated by &amp;quot;0xDEAD&amp;quot; when written to disk). Judging by the Windows demo and Mac engine, we can assume they are the same in both engines, and serve for rendering optimization (there is a texture name pointer, a &amp;quot;dirty&amp;quot; flag stored as a byte and 3 extra bytes used as flags).&lt;br /&gt;
*For Windows retail, the four bytes at 0xAC-AF are completely unused (not part of the template).&lt;br /&gt;
Since runtime fields are grouped at the end, v1.0 and v1.1 TXMPs are treated by OniSplit under the same template, merely switching between the .raw and .sep links and blanking out everything past 0xA4.&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr| 0xB0 | char[16] |B0C3D4| AD DE       | dead      | padding bytes (not part of TXMP) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect options===&lt;br /&gt;
The &amp;quot;blue shield&amp;quot;, &amp;quot;invisibility&amp;quot; and &amp;quot;Daodan shield&amp;quot; options tell the engine to vary the texture&#039;s Gouraud shading with certain preset colors that vary with time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Flag name&lt;br /&gt;
!Texture with flag&lt;br /&gt;
!Used for&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;blue shield&amp;quot;&lt;br /&gt;
|TXMPSHIELD&lt;br /&gt;
|force shield&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;invisibility&amp;quot;&lt;br /&gt;
|TXMPINVIS&lt;br /&gt;
|phase cloak&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;Daodan shield&amp;quot;&lt;br /&gt;
|TXMPDAODAN_SHIELD&lt;br /&gt;
|red boss shield and [[supershield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In the vanilla game data, these flags are only used by the above-named textures. The engine also calls upon these textures by hardcoded name in order to create a character&#039;s shield or phase cloak effect.&lt;br /&gt;
&lt;br /&gt;
===Animation time===&lt;br /&gt;
When using animated textures the image to display is selected using the game time and animation speed. For textures that are used by particles the local (particle) time can be used either to replace or offset the game time.&lt;br /&gt;
&lt;br /&gt;
===Pixel byte storage order===&lt;br /&gt;
As noted above under each format description, the bytes of multibyte texture formats are generally stored &amp;quot;backwards&amp;quot; compared to their names, so if a format is named &amp;quot;RGBA&amp;quot;-something then its bytes will be in ABGR order on disk. This convention was established in the Windows world where PCs were little-endian and loading the bytes AA BB GG RR into a 32-bit int in memory would place them in the correct order, 0xRRGGBBAA. Macintoshes, being big-endian at the time, expected the data to be stored in reverse order and thus Oni would perform a byte swap on most of these types when it loaded them into memory to ensure that they ended up as 0xRRGGBBAA in memory. The sole exceptions to this little-endian storage rule among Oni&#039;s supported texture formats are RGB_Bytes and RGBA_Bytes, which actually store their bytes in the stated order, RGB and RGBA respectively. However these formats were never used by any textures in Oni.&lt;br /&gt;
&lt;br /&gt;
===Pixel scanline storage order===&lt;br /&gt;
Pixels are stored in row-major order, meaning that the pixels are stored in rows and then columns, as opposed to the other way around. These rows are stored in &#039;&#039;top-to-bottom&#039;&#039; order, contrary to what was documented on this wiki for a long time. In the case of the DXT1 storage format, the row-major, left-to-right, top-to-bottom order applies to the 4x4 blocks composing the image, and also inside each 4x4 block for the storage of 2-bit pixels. In the case of the I1 format (multiple pixels per byte), the row-major, left-to-right, top-to-bottom order applies to the 1-bit pixels composing the image.&lt;br /&gt;
&lt;br /&gt;
==PS2 implementation==&lt;br /&gt;
The PS2 TXMP layout is similar to PC, with notable differences in the last few bytes due to Rockstar moving to a PS2-standard 32-bit indexed color (&amp;quot;CLUT&amp;quot;) system for optimization purposes. Here are the high-level differences:&lt;br /&gt;
*There are 4 extra bytes of storage as compared to a v1.1 TXMP (which is already 4 bytes larger than a v1.0 TXMP).&lt;br /&gt;
*The extra 4 bytes come from a palette index (int32) inserted at 0x90 before the pixel format (which is pushed down to 0x94 along with everything else that follows).&lt;br /&gt;
*Two new pixel formats were added, and are the only formats used on PS2: type 16 for opaque textures (indexed 32-bit RGB with ignored alpha byte), and type 17 for transparent textures (indexed 32-bit RGBA).&lt;br /&gt;
*The pixel data (color indices) can be stored either in the .raw file (pointer field at 0xA0) or in the .sep file (pointer at 0xA4).&lt;br /&gt;
&lt;br /&gt;
Here is how the end of TXMPrl_1 looks in level3_Final.dat of the English retail PS2 version.&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
|- ALIGN=CENTER VALIGN=TOP&lt;br /&gt;
{{OBDtr| 0x90 | int32    |C8FFC8| 56 00 00 00 | 86        | index of the 256-color palette used by this texture (starts at 0x15800 in level3_palette.pal) }}&lt;br /&gt;
{{OBDtr| 0x94 | int32    |C8FFFF| 10 00 00 00 | 16        | pixel format 16 (indexed 32-bit RGB with inactive alpha) }}&lt;br /&gt;
{{OBDtr| 0x98 | link     |FFC8FF| 00 00 00 00 | 0         | link to a [[OBD:TXAN|TXAN]] file; used if this texture is animated }}&lt;br /&gt;
{{OBDtr| 0x9C | link     |FFC800| 00 00 00 00 | 0         | link to a TXMP file that contains the environment map  }}&lt;br /&gt;
{{OBDtr| 0xA0 | offset   |C800C8| C0 05 00 00 |00 00 05 C0| offset of pixel data in the .raw file }}&lt;br /&gt;
{{OBDtr| 0xA4 | offset   |C87C64| 00 00 00 00 | 0         | offset of pixel data in the .sep file }}&lt;br /&gt;
{{OBDtr| 0xA8 | int32    |B0C3D4| 00 00 00 00 | 0         | always 0; presumably the same &amp;quot;material type&amp;quot; (set at runtime) as for Windows demo and Mac }}&lt;br /&gt;
{{OBDtr| 0xAC | char[4]  |B0C3D4| AD DE AD DE | dead      | presumably the same texture name pointer (set at runtime) as for Windows demo and Mac }}&lt;br /&gt;
{{OBDtr| 0xB0 | char[4]  |B0C3D4| AD DE AD DE | dead      | presumably the same rendering optimization flags (runtime) as for Windows demo and Mac }}&lt;br /&gt;
{{OBDtr| 0xB4 | char[12] |B0C3D4| AD DE       | dead      | completely unused bytes (not part of the template) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Palette file format===&lt;br /&gt;
*Palettes are stored per-level in level#_palette.pal files in a pal/ subdirectory of GameDataFolder, corresponding to how .raw and .sep files are stored in raw/ and sep/ subdirectories.&lt;br /&gt;
*Each level#_palette.pal file contains between 85 and 179 palettes, not counting the first palette (index 0) at the start of each .pal file which is always blank.&lt;br /&gt;
&lt;br /&gt;
===Palette format===&lt;br /&gt;
*Valid palette indices start at 1 because of palette 0 always being empty.&lt;br /&gt;
*Each color in a palette entry is 4 bytes, stored on disk in RGBA order (byte 0 = red, byte 1 = green, byte 2 = blue, byte 3 = alpha). This is the same layout as RGB_Bytes (type 10) and RGBA_Bytes (type 11), not the reversed BGRA order used by most of the other texture formats.&lt;br /&gt;
*Each palette consists of 256 32-bit color slots and thus takes up 1024 bytes. If a palette does not use all 256 entries then the palette is closed out with a series of {0x00, 0x00, 0x00, 0x80} entries.&lt;br /&gt;
*Each pixel in the .raw or .sep data is stored as a 1-byte index into the image&#039;s chosen color palette.&lt;br /&gt;
&lt;br /&gt;
===Palette CLUT swizzle===&lt;br /&gt;
:The PS2 Graphics Synthesizer (GS) stores CLUT entries in a scrambled order due to its hardware cache line layout. Within every 32-entry block of the palette, entries 8–15 and 16–23 are swapped relative to their logical positions. Software reading the palette must undo this before using it as a palette index.&lt;br /&gt;
&lt;br /&gt;
===Ignored alpha byte for type 16===&lt;br /&gt;
:The fourth byte would represent alpha, but in RGB888 it is merely a padding byte, always set to 0x80.&lt;br /&gt;
&lt;br /&gt;
===Alpha scaling for type 17===&lt;br /&gt;
:The PS2 GS uses a half-range alpha where 0x00 = fully transparent and 0x80 = fully opaque (values above 0x80 are technically possible but indicate &amp;quot;source alpha contribution &amp;gt; 1&amp;quot; in GS blending, which doesn&#039;t arise in Oni).&lt;br /&gt;
&lt;br /&gt;
===Alternating use of .raw or .sep storage===&lt;br /&gt;
Unlike the Win/Mac game data (where pixel data is stored exclusively in .raw or exclusively in .sep for all TXMPs), PS2 TXMPs use .raw and .sep storage alternatingly, depending on the TXMP. The engine apparently uses the .sep pointer if there is no .raw pointer (or vice versa).&lt;br /&gt;
&lt;br /&gt;
Examples of textures using .sep storage are: all [[:Category:Fly-in_portraits|fly-in portraits]]; all [[:Category:Splashscreens|splashscreen]] components; some illustrations in Konoko&#039;s [[Data Comlink]] (namely, [[:File:TXMPLevel02move.png|combat move illustrations]] and [[:File:TXMPhypo.png|item illustrations]]; objectives and weapon illustrations use .raw storage).&lt;br /&gt;
&lt;br /&gt;
Environment/character/particle TXMPs seem to be using .raw storage consistently (not checked beyond level1_Final). As a notable anomaly, .sep storage is used for the following three textures (console screens) in level0_Final: _CON_SAVEGAME (main TXMP only; the animation frames use .raw storage), _CON_SAVEGAME_USED, _CON_USED.&lt;br /&gt;
&lt;br /&gt;
==Oni&#039;s internal storage types==&lt;br /&gt;
Some of Oni&#039;s 18 types of image storage are elaborated on below in order to illustrate exactly how they work. The &amp;quot;Mem view&amp;quot; column shows the bytes in big-endian format and the &amp;quot;Disk view&amp;quot; column shows the bytes as they are actually stored in little-endian order. For example, bytes in memory shown as 0xFC00 are stored as &amp;quot;00 FC&amp;quot; on disk.&lt;br /&gt;
&lt;br /&gt;
===ARGB4444 (type 0)===&lt;br /&gt;
*A 16-bit field is used to store 4 color channels (4 bits each, values from 0 to 15).&lt;br /&gt;
*Bit masks are 0x000F for Blue, 0x00F0 for Green, 0x0F00 for Red, 0xF000 for Alpha.&lt;br /&gt;
*Stored as big-endian in TXMP (first the AAAARRRR byte, then the GGGGBBBB byte).&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A A A A R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=3|&amp;lt;br&amp;gt;Bit values for primary colors (fully opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 00!!00 F0&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF!!FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00!!00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 F0!!F0 F0&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 0F!!0F F0&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 FF!!FF F0&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 0F!!0F FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF F0!!F0 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGB555 (type 1)===&lt;br /&gt;
*A 16-bit field is used to store 3 color channels (5 bits each, values from 0 to 31).&lt;br /&gt;
*Bit masks are 0x001F for Blue, 0x03E0 for Green, 0x7C00 for Red.&lt;br /&gt;
*The high bit (0x8000) is unused, but is always set to 1 by convention.  &lt;br /&gt;
*Stored in little-endian order in TXMP.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;X R R R R R G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=3|&amp;lt;br&amp;gt;Bit values for primary colors&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 00!!00 80&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF!!FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 00!!00 FC&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 E0!!E0 83&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 1F!!1F 80&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 FF!!FF 83&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 1F!!1F FC&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF E0!!E0 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ARGB1555 (type 2)===&lt;br /&gt;
*A 16-bit field is used to store 3 color channels (5 bits each, values from 0 to 31) and one 1-bit channel.&lt;br /&gt;
*Bit masks are 0x001F for Blue, 0x03E0 for Green, 0x7C00 for Red, and 0x8000 for Alpha.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A R R R R R G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=3|&amp;lt;br&amp;gt;Bit values for primary colors (opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 00!!00 80&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF!!FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 00!!00 FC&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 E0!!E0 83&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 1F!!1F 80&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 FF!!FF 83&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 1F!!1F FC&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF E0!!E0 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===A4I4 (type 6)===&lt;br /&gt;
*An 8-bit field is used to store an intensity and an alpha (4 bits each, values from 0 to 15).&lt;br /&gt;
*Bit masks are 0x0F for Intensity, 0xF0 for Alpha.&lt;br /&gt;
*Endianness is irrelevant for single-byte storage.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!Bits&lt;br /&gt;
!&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A A A A I I I I&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=2|Examples of bit values&lt;br /&gt;
!Mem view&lt;br /&gt;
|-&lt;br /&gt;
|Black, opaque||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0&lt;br /&gt;
|-&lt;br /&gt;
|White, opaque||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF&lt;br /&gt;
|-&lt;br /&gt;
|Black, transparent||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00&lt;br /&gt;
|-&lt;br /&gt;
|White, transparent||&amp;lt;code&amp;gt;0 0 0 0 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!0F&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ARGB8888 (type 7)===&lt;br /&gt;
*A 32-bit field is used to store 4 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Bit masks are 0x000000FF for Blue, 0x0000FF00 for Green, 0x00FF0000 for Red, 0xFF000000 for Alpha.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 3 (highest)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (higher)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A A A A A A A A&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=5|&amp;lt;br&amp;gt;Bit values for primary colors (fully opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00 00!!00 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF FF!!FF FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00 00!!00 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF 00!!00 FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00 FF!!FF 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF FF!!FF FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00 FF!!FF 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF 00!!00 FF FF FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGB888 (type 8)===&lt;br /&gt;
*A 32-bit field is used to store 3 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Bit masks are 0x000000FF for Blue, 0x0000FF00 for Green, 0x00FF0000 for Red.&lt;br /&gt;
*The high byte (0xFF000000) is unused, but is always set to 00 by convention.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 3 (highest)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (higher)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;X X X X X X X X&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=5|&amp;lt;br&amp;gt;Bit values for primary colors&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00 00!!00 00 00 00&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF FF!!FF FF FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00 00!!00 00 FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF 00!!00 FF 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00 FF!!FF 00 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF FF!!FF FF 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00 FF!!FF 00 FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF 00!!00 FF FF 00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGB_Bytes (type 10)===&lt;br /&gt;
*Three consecutive 8-bit fields are used to store 3 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Each channel has its own byte, and there is no &amp;quot;unused&amp;quot; byte (the bytes are packed 3 by 3).&lt;br /&gt;
*Endianness is irrelevant when storing as a sequence of bytes.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 0 (red)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (green)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (blue)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=4|Bit values for primary colors&lt;br /&gt;
!Mem view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGBA_Bytes (type 11)===&lt;br /&gt;
*Four consecutive 8-bit fields are used to store 4 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Each channel has its own byte. Endianness is irrelevant when storing as a sequence of bytes.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 0 (red)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (green)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (blue)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 3 (alpha)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;A A A A A A A A&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=5|&amp;lt;br&amp;gt;Bit values for primary colors (fully opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OBD_File_Footer | type=TXMP | prev=TXMB | next=TxtC | name=Texture Map | family=General}}&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Marathon&amp;diff=47106</id>
		<title>Marathon</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Marathon&amp;diff=47106"/>
		<updated>2026-04-14T19:29:32Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: broke page into distinct sections for old and new Marathon, added image for NuMa&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Marathon is a series of first-person shooter games started by Bungie. Now that the new Marathon has been released, the old games are sold under the name Classic Marathon, Classic Marathon 2 and Classic Marathon Infinity.&lt;br /&gt;
&lt;br /&gt;
==Classic series (1994–1996)==&lt;br /&gt;
[[Image:Marathon - Defend THIS!.jpg|right|400px]]&lt;br /&gt;
The original Marathon was released for Macintosh in 1994 and was preferred by Mac gamers as a more sophisticated alternative to the PC hit DOOM. As with the [[Myth]] series, Bungie made the first two games (&#039;&#039;&#039;Marathon&#039;&#039;&#039; and &#039;&#039;&#039;Marathon 2: Durandal&#039;&#039;&#039;) and then another studio made the third (&#039;&#039;&#039;Marathon Infinity&#039;&#039;&#039;). Unlike Myth&#039;s third game, the third Marathon game stayed close to the previous games&#039; roots because Marathon Infinity was created by [[wp:Double Aught|Double Aught]], a short-lived studio spun off from Bungie which was co-founded by Marathon&#039;s lead writer, Greg Kirkpatrick.&lt;br /&gt;
&lt;br /&gt;
Bungie is known for cross-referencing their games, and indeed there are multiple references to Classic Marathon in [[Oni]], documented in the [[Easter eggs]] article.&lt;br /&gt;
&lt;br /&gt;
Unlike Oni with its [[Multiplayer|canceled multiplayer]], Marathon shipped in 1994 with a very popular multiplayer feature (LAN-only). Bungie also supported the modding community with helpful information on the file formats; they eventually released the development tools Forge and Anvil alongside Marathon Infinity.&lt;br /&gt;
&lt;br /&gt;
In 1999, the Marathon 2 engine was open-sourced by Bungie. This code was used by fans to produce Aleph One, a unified engine which runs the scenarios for Marathon, Marathon 2, and Marathon Infinity as well as fan-made scenarios. The original LAN networking was improved and extended to be Internet-capable. In 2005, the Marathon Trilogy was made freeware by Bungie, so anyone can download it legally and play it on modern computers with the Aleph One engine (see links below).&lt;br /&gt;
&lt;br /&gt;
;Community links&lt;br /&gt;
:[https://alephone.lhowon.org/ Lhowon.org] (serves the Trilogy, the standalone Aleph One engine, and links to the Aleph One source code)&lt;br /&gt;
:[https://marathon.bungie.org/ Marathon.Bungie.Org] (home of the Marathon Story Forums and Story Page)&lt;br /&gt;
:[https://simplici7y.com/ Simplici7y] (mod repository)&lt;br /&gt;
:[https://pfhorums.com/ Pfhorums] (community forum)&lt;br /&gt;
:[https://metaserver.lhowon.org/ Lhowon.org metaserver] (for Internet matchmaking)&lt;br /&gt;
&lt;br /&gt;
;Marathon (1994) on Bungie.net (archived)&lt;br /&gt;
:[https://web.archive.org/web/20140421231244/http://halo.bungie.net/inside/history.aspx?link=juggernougat Bungie History: Marathon]&lt;br /&gt;
:[https://web.archive.org/web/20130501113706/http://halo.bungie.net/projects/marathon/asset_thumb_viewer.aspx?at=59&amp;amp;cc=33 Picture galleries]&lt;br /&gt;
&lt;br /&gt;
;Marathon on Wikipedia&lt;br /&gt;
:The Marathon games are documented extensively on Wikipedia; you can start with the [[wp:Marathon (series)|&amp;quot;Marathon series&amp;quot; article]], but there are specific articles for each game as well.&lt;br /&gt;
&lt;br /&gt;
==Extraction shooter (2026)==&lt;br /&gt;
[[Image:Marathon (2026) - NuCal.jpg|right|400px]]&lt;br /&gt;
Unlike Oni and Myth, the rights to the Marathon [[wp:Intellectual property|IP]] never left Bungie&#039;s hands. Bungie announced in May 2023 that they were returning to the IP with a new extraction shooter set on/around Tau Ceti, the location of the original game. The game released in March 2026. A major Oni reference occurs in the form of the AI agent named ONI – see {{SectionLink|Easter eggs|Marathon (2026)}}.&lt;br /&gt;
&lt;br /&gt;
:[https://www.youtube.com/watch?v=ckI_m8bbXfw Official Announce Trailer - YouTube]&lt;br /&gt;
:[https://www.marathonthegame.com/ Official Site]&lt;br /&gt;
:[https://www.youtube.com/watch?v=fvbEnWLRo1s Reveal Cinematic Short - YouTube]&lt;br /&gt;
&lt;br /&gt;
[[Category:Real World]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=File:Marathon_(2026)_-_NuCal.jpg&amp;diff=47105</id>
		<title>File:Marathon (2026) - NuCal.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=File:Marathon_(2026)_-_NuCal.jpg&amp;diff=47105"/>
		<updated>2026-04-14T19:28:23Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: Category:Other video game images&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
[[Category:Other video game images]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=File:Marathon_(2026)_-_ONI.jpg&amp;diff=47104</id>
		<title>File:Marathon (2026) - ONI.jpg</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=File:Marathon_(2026)_-_ONI.jpg&amp;diff=47104"/>
		<updated>2026-04-14T19:06:52Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: Iritscen moved page File:Marathon (2025) - ONI.jpg to File:Marathon (2026) - ONI.jpg without leaving a redirect: who could have foreseen the game being delayed?&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== Summary ==&lt;br /&gt;
[[Category:Other video game images]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Easter_eggs&amp;diff=47103</id>
		<title>Easter eggs</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Easter_eggs&amp;diff=47103"/>
		<updated>2026-04-14T19:06:00Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: wording tweak to emphasize the importance of ONI in Marathon (2026)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;An Easter egg is a secret message placed in a game by a developer. Typically Easter eggs speak to the audience directly, make an inside joke, or contain vanity messages such as hidden credits. [[Oni]] contains a few in-jokes and a lot of references to other Bungie games, as is common for Bungie.&lt;br /&gt;
{{TOClimit|3}}&lt;br /&gt;
==References hidden in Oni==&lt;br /&gt;
{{Anchor|OMM}}&lt;br /&gt;
===Old Man Murray and fake Sean Connery===&lt;br /&gt;
[[Image:Penny_Arcade_-_EvilCorp.jpg|thumb|250px|right|Not an Easter egg, but very apropos: a [[wp:Penny Arcade|Penny Arcade]] comic about crates and Oni.]]&lt;br /&gt;
Old Man Murray was a gaming blog with feisty criticism of the industry; its writers would later work on [[wp:Psychonauts|Psychonauts]] and the [[wp:Portal (series)|Portal games]]. In [https://www.oldmanmurray.com/features/39.html one of their most famous articles], they suggested that the ultimate quality of a game could be judged by a single measurement called &amp;quot;Start to Crate&amp;quot;: the amount of time from the start of the game until the first crate (or barrel, etc.) is sighted. The smaller the time, the worse the game, as the use of crates to adorn a level demonstrates that the developers have run out of ideas.&lt;br /&gt;
{|align=left&lt;br /&gt;
|[[Image:TheDayIsMine crate.png]]&lt;br /&gt;
|}&lt;br /&gt;
Oni&#039;s first level is a warehouse and it is literally &#039;&#039;full&#039;&#039; of crates, barrels and containers. You can see a stack of crates right from where you start the level (there are also crates in the training course, but not in the first room). On one of the first crates you see in the Warehouse, there&#039;s a self-deprecating label saying &amp;quot;-OMM- TTC 1.1&amp;quot; or, in other words, &amp;quot;-Old Man Murray- Time To Crate 1.1 seconds&amp;quot;; a pretty bad score, needless to say.&lt;br /&gt;
&lt;br /&gt;
Underneath this is written &amp;quot;THE DAY IS MINE!!&amp;quot; While Oni players will see this as a reference to the cheat code for activating [[Developer Mode]], it should be noted that the &amp;quot;thedayismine&amp;quot; cheat was never intended to be published or present in the shipped game, so there was little point in writing the cheat code (with spacing and punctuation) on a crate. Most proximately, this crate&#039;s text should be seen as a reference to Saturday Night Live&#039;s [[wp:Celebrity Jeopardy! (Saturday Night Live)|Celebrity Jeopardy!]], a popular recurring comedy sketch in the late 1990s. In it, the character &amp;quot;Sean Connery&amp;quot; frequently says, &amp;quot;The day is mine!&amp;quot; The cheat code &amp;quot;thedayismine&amp;quot; is merely another manifestation of the same quote, which must have become an office in-joke. (A second reference to Celebrity Jeopardy! is found below under {{SectionLink||Febtober Striker}}.)&lt;br /&gt;
{{clearall}}&lt;br /&gt;
&lt;br /&gt;
===Marathon (1994)===&lt;br /&gt;
The [[Marathon]] trilogy began and ended before Oni&#039;s release; it was a major source of new Bungie fans in their first decade, before the release of Halo.&lt;br /&gt;
&lt;br /&gt;
====Marathon symbol====&lt;br /&gt;
The first Oni trailer featured [[wp:Marathon (1994 video game)|Marathon]] symbols {{Hover|on the crates|image=1998 trailer 73.png}}. In-game, the Marathon symbol can be seen on the hull of the [[TCTF]] computer [[Damocles]] in [[{{C6}}]] and [[{{C13}}]] (see texture TXMPTC_SHCOMP2 as well as [[:Image:Damocles 1.jpg|this concept art]]). Fans certainly did not miss this, so Harry brought it up in [http://oni.bungie.org/special/part1/alex.html his interview with Alex Okita]:&lt;br /&gt;
&lt;br /&gt;
:;Harry: Who did the first Oni trailer? The one yanked from the web rather often. &lt;br /&gt;
:;Alex: I did the direction for it, Steve [Abeyta] and Chris [Hughes] did all the animation. &lt;br /&gt;
:;Harry: And the crate with the Marathon logos. A nice touch...You made Hamish [Sinclair] really paranoid with that one... &lt;br /&gt;
:;Alex: (grinning) That was our goal. &lt;br /&gt;
:;Harry: That&#039;s why that picture of Damocles has a small Marathon logo on it, huh? &lt;br /&gt;
:;Alex: Yeah (laughs) It kicks up some dust. &lt;br /&gt;
:;Harry: Any significance to the name? &lt;br /&gt;
:;Alex: It&#039;s kind of [a] cool name. &lt;br /&gt;
:;Harry: It&#039;s not gonna drop on your head or anything... &lt;br /&gt;
:;Alex: No, heh. Although it is kind of neat; it&#039;s a giant supercomputer which has all these cables going through the ceiling.&lt;br /&gt;
&lt;br /&gt;
====Wave Motion Cannon====&lt;br /&gt;
[[Image:TXMPbarab gun.png|right]]&lt;br /&gt;
A weapon called &amp;quot;Wave Motion Cannon&amp;quot; was seemingly [https://marathon.bungie.org/story/weapons.html cut from Marathon]. As we know, the [[Wave Motion Cannon]] is the biggest weapon in Oni and the only one with two firing modes. The Marathon weapon in turn references the primary weapon of the titular ship in the [[anime]] &amp;quot;Space Battleship Yamato&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
====Frog blast the vent core!====&lt;br /&gt;
[[Comm Trooper]]s can say &amp;quot;Okay, okay, &#039;&#039;don&#039;t&#039;&#039; frog blast the vent core!&amp;quot; as a taunt, but only very rarely (the odds are 4%). This is a reference not just to Marathon&#039;s assimilated BOBs but to the fact that they share a voice actor, Doug Zartman. The inhabitants of the UESC &#039;&#039;Marathon&#039;&#039; (who are called BOBs because they were &amp;quot;Born On Board&amp;quot;) have been partially replaced with &amp;quot;assimilated&amp;quot; versions, or &amp;quot;simulacrums&amp;quot;. The assimilated BOBs are intended to blend in with the normal ones until they can get close enough to the player to detonate themselves. The big giveaway that they are not normal is the odd phrases they sometimes shout – the most famous of which is &amp;quot;Frog blast the vent core!&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Zartman describes the inspiration for the quote in the Marathon Scrapbook:&lt;br /&gt;
{{Quote|The idea was that some of the assimilated Bobs become insane from their conversion and run around yelling nonsense. Alex [Seropian] said to me ‘say something random’, and that phrase tumbled from my lips. Totally spontaneous. While I could have sat down and thought up something more random than that, it worked out well, since it sounds close enough to a real sentence that it kept people guessing and generated some fascinating (and totally wrong) discussion about what the phrase was and its meaning. One popular theory was ‘God bless the Marine Corps!’, which was a fair guess, but still wrong.}}&lt;br /&gt;
&lt;br /&gt;
It was very popular to say this in the text chat of a networked Bungie game or on IRC; the sheer randomness of this phrase means it can be used at any time.&lt;br /&gt;
&lt;br /&gt;
Zartman also recorded the Easter egg line &amp;quot;She&#039;s everywhere!&amp;quot; for the Comm Trooper; this is a reference to the BOB line &amp;quot;They&#039;re everywhere!&amp;quot; (referring to the invading aliens). It was not connected to any [[OSBD]] and thus cannot play in-game, but it can be heard in the bonus track at the end of [[Music/CD#End Titles|End Titles]] on the OST CD.&lt;br /&gt;
&lt;br /&gt;
====Rampancy====&lt;br /&gt;
The word [[wikt:rampant|rampant]] had existed before Bungie, but the specific concept of &amp;quot;[[wp:Marathon (series)#Rampancy|rampancy]]&amp;quot;, referring to an AI that goes out of control and acts with free will, was coined and subsequently developed by the Marathon team (this concept was revisited by 343 Industries for Halo 4). The three/four stages of a rampant AI are Melancholia, Anger, Jealousy, and Metastability. An egotistical level of self-awareness accompanies the development of the AI&#039;s personality. The tirades of the [[Deadly Brain]] (only seen in the subtitles) are a reference to this, as shown by Shinatama&#039;s statement, &amp;quot;Clearly, it&#039;s gone rampant.&amp;quot; However, a rampancy in Marathon takes place when an AI is exposed to large amounts of data for a long enough period of time. Here, the Deadly Brain is a disembodied human brain, and it is essentially just going crazy because Konoko &amp;quot;decoupled its core logic&amp;quot; (how exactly does one do that to a human brain, anyway?).&lt;br /&gt;
&lt;br /&gt;
===Myth===&lt;br /&gt;
The second [[Myth]] game was Bungie&#039;s most recent release before Oni in 2001, and about as popular as the Marathon series.&lt;br /&gt;
&lt;br /&gt;
====Balor====&lt;br /&gt;
Forklifts in the Warehouse are labeled &amp;quot;BALOR&amp;quot;, and Balor is the name of a Celtic god, but it is also the name taken by the incarnation of &amp;quot;the Leveler&amp;quot; in Myth.&lt;br /&gt;
:&#039;&#039;&#039;&#039;&#039;From [[wp:Special:PermanentLink/245212356|an old version]] of Wikipedia&#039;s Balor article:&#039;&#039;&#039;&#039;&#039;&lt;br /&gt;
:Balor is the name Connacht the Wolf adopts when he becomes the new Leveler in the Myth computer game series. During the seventeenth year of the Great War, he interrogated the hero Alric, who was previously captured by one of Balor&#039;s six Fallen Lords (The Deceiver). During the interrogatory Alric learned by chance that the Fallen Lords were bound to Balor. Near the end of the war, Alric and the Legion went to Rhi&#039;anon, Balor&#039;s fortress, and to enrage Balor planted the Myrkridian standard they had found inside the Tain. During the Last Battle, Alric immobilized Balor with the aid of the Eblis Stone, thus allowing the barbarians of the Legion to behead the warlord. In the end, Balor&#039;s head was thrown into the Great Devoid, ending his life and his sway over the surviving Fallen.&lt;br /&gt;
&lt;br /&gt;
====Surly Dwarf====&lt;br /&gt;
The dwarf unit of Myth, voiced by Bob O&#039;Donnell, is sometimes referred to as the Surly Dwarf. He is loosely referenced by the writing on the side of Konoko&#039;s motorcycle which mentions &amp;quot;Surly Performance Forks&amp;quot; (forks are the front suspension for a motorcycle).&lt;br /&gt;
&lt;br /&gt;
====Soundtrack====&lt;br /&gt;
A number of ambient themes from &#039;&#039;&#039;Myth: The Fallen Lords&#039;&#039;&#039; and &#039;&#039;&#039;Myth II: Soulblighter&#039;&#039;&#039; were reprised in Oni:&lt;br /&gt;
*&#039;&#039;&#039;Heart of the Stone&#039;&#039;&#039; (from Myth, reprised in Myth II as &#039;&#039;&#039;Gonen&#039;s Bridge&#039;&#039;&#039;)&lt;br /&gt;
*&#039;&#039;&#039;Smiths of Muirthemne&#039;&#039;&#039; (from Myth)&lt;br /&gt;
*&#039;&#039;&#039;A Traitor&#039;s Grave&#039;&#039;&#039; (from Myth)&lt;br /&gt;
*&#039;&#039;&#039;The Deceiver&#039;&#039;&#039; (from Myth II)&lt;br /&gt;
&lt;br /&gt;
See [[Music/Myth]] for details.&lt;br /&gt;
&lt;br /&gt;
==References to Oni in other works==&lt;br /&gt;
===Halo===&lt;br /&gt;
====ONI====&lt;br /&gt;
[[Image:Halo&#039;s ONI.png|right]]&lt;br /&gt;
Oni doesn&#039;t refer to Halo unless you count the [[Oni matrix]] naming Cortana, but [[wp:Halo (franchise)|Halo]] features an entity called [https://www.halopedia.org/Office_of_Naval_Intelligence ONI]. Pronounced in-game like the word &amp;quot;oni&amp;quot;, ONI stands for Office of Naval Intelligence. A military intelligence service by this name [[wp:Office of Naval Intelligence|actually exists]]: it&#039;s the United States&#039; oldest continuously operating intelligence service (est. 1882).&lt;br /&gt;
&lt;br /&gt;
There has been a lot of speculation around Halo&#039;s ONI, most of which you can see on the [http://halostory.bungie.org/oni.html Halo Story Page]. A specific entry which draws the parallel between Halo&#039;s ONI, the [[Oni (myth)|Japanese myth of the oni]], and Bungie&#039;s &amp;quot;Oni&amp;quot; is [http://halostory.bungie.org/newssearch.html?newsitem=695 HERE].&lt;br /&gt;
&lt;br /&gt;
====The demon====&lt;br /&gt;
After Master Chief&#039;s exploits in Halo CE where he singlehandedly turns the tide of battle and destroys an entire Halo installation, he becomes known to the Covenant as &amp;quot;the demon&amp;quot;. It&#039;s difficult to find any discussion of whether this was a deliberate reference to the word &amp;quot;oni&amp;quot; but it&#039;s hard to believe it&#039;s a coincidence. Few people have noticed this possible reference, and Bungie devs do not seem to have discussed it in any interviews.&lt;br /&gt;
&lt;br /&gt;
===Big Strike Bowling===&lt;br /&gt;
Although this is more than an Easter egg, it needs to be mentioned here simply for its unexpectedness – not to mention that it&#039;s the only game besides Oni in which Konoko appears. [[Big Strike Bowling]], an obscure game from the end of the PS1&#039;s life cycle, contained unlockable characters, and the most expensive of them was Konoko. The only other character from an outside game IP was Max Payne.&lt;br /&gt;
&lt;br /&gt;
===Marathon (2026)===&lt;br /&gt;
[[Image:Marathon (2026) - ONI.jpg|256px|right]]&lt;br /&gt;
Bungie still hasn&#039;t forgotten about Oni. In Bungie&#039;s new Marathon, you control a cybernetic &amp;quot;runner&amp;quot; who can take contracts from various factions. One of these factions, a corporation named CyberAcme, uses an AI agent called ONI to interact with runners. When a player starts the game, ONI is responsible for overseeing the player&#039;s onboarding and introduction to other factions; in-world, this is referred to as a &amp;quot;reorientation&amp;quot; where the digitized consciousness of a runner is installed into a newly manufactured body. Like Halo&#039;s ONI, this AI&#039;s name is pronounced as the word &amp;quot;oni&amp;quot;, not as separate letters. She is voiced by Donnla Hughes. ONI&#039;s appearances so far are:&lt;br /&gt;
*[https://www.youtube.com/watch?v=fvbEnWLRo1s Marathon | Reveal Cinematic Short]. Here ONI handles the &amp;quot;grounding exercises&amp;quot; for respawned runners – see 2:43, 4:00, 8:03 for ONI&#039;s appearances.&lt;br /&gt;
*[https://www.youtube.com/watch?v=N4Jv5H3_yAo Marathon | Alpha Intro Cinematic]. You can hear ONI say her own name at 1:27.&lt;br /&gt;
*[https://www.youtube.com/watch?v=Sw_PdO-W9bY Bungie’s Marathon – ONI Intro &amp;amp; CyberAcme AI Intro]. ONI introduces herself here and guides the player&#039;s reorientation.&lt;br /&gt;
&lt;br /&gt;
==Developer cameos==&lt;br /&gt;
===Name drops===&lt;br /&gt;
[[Image:RT_BILLBRD2.jpg|right]]&lt;br /&gt;
The poster for &amp;quot;mr.b&#039;s dance troupe&amp;quot;, appearing in [[Rooftops]], can be seen at right. It names three members of the team: Dave Dunn, Steve Abeyta and Chris Lee. &amp;quot;Mr. B&amp;quot; may possibly be referring to Brent Pease, who was Project Lead through the end of 1999.&lt;br /&gt;
&lt;br /&gt;
The [[:Image:No 1 Chris Hughes GLASSMBO.jpg|impact texture]] for the Mercury Bow contains the name of Chris Hughes, one of the texture artists. His name is also preserved in the Hughes Death Adder SMG, the standard weapon for Syndicate Strikers.&lt;br /&gt;
&lt;br /&gt;
Konoko&#039;s service pistol is the Campbell Equalizer Mk4, and the name &amp;quot;Campbell&amp;quot; can be found in a few places connected to Bungie: the Campbell/LeBel family members mentioned in the [[Quotes/Credits|credits]], the city of Campbell, CA (arguably the true location of [[Bungie West]], not San Jose), and [[Steve Campbell]], founder of Bungie.org and Oni Central.&lt;br /&gt;
&lt;br /&gt;
A couple consoles starting [[Quotes/Consoles#Extraordinary security measures|HERE]] contain emails written between &amp;quot;P[eter] Tamte&amp;quot; and &amp;quot;D[avid] Joost&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Michael Evans is likely being given a cameo in [[Quotes/Consoles#Evans|the Evans console]].&lt;br /&gt;
&lt;br /&gt;
Michael Wu&#039;s name is used for the Wucraft transport plane in [[Quotes/Diary#CHAPTER_05_._HOT_PURSUIT|this diary entry]].&lt;br /&gt;
&lt;br /&gt;
The name of Bungie itself is found (very faintly) on the side of Konoko&#039;s motorcycle above the reference to the {{SectionLink||Surly Dwarf}}.&lt;br /&gt;
&lt;br /&gt;
===Voice appearances===&lt;br /&gt;
Several one-line NPCs are likely voiced by Bungie staffers, such as the &amp;quot;particularly suave scientist&amp;quot; of Chapter 6, but we usually can&#039;t identify who they were. One that has been identified is the scientist who&#039;s [[Quotes/Speech#Really really misc|just trying to hide]], which was recognized by Marty O&#039;Donnell as his own voice when asked in 2024. The Deadly Brain&#039;s non-verbal vocals sound like Hardy LeBel.&lt;br /&gt;
&lt;br /&gt;
==Secrets and jokes==&lt;br /&gt;
There are quite a few semi-hidden items and characters in Oni. The items hidden in corners of the levels (called &amp;quot;[http://carnage.bungie.org/oniforum/oni.forum.pl?read=20168 Wu goodies]&amp;quot; by Bungie West) generally don&#039;t qualify as Easter eggs as most of them can be uncovered by carefully exploring the level.&lt;br /&gt;
&lt;br /&gt;
===Forklift Striker===&lt;br /&gt;
However a special mention goes to the secret [[Striker]] in [[{{C1}}]]. If you pass the first door, then take the stairs to the top floor, and jump onto the cabin of the forklift, a Striker will appear (see [https://www.youtube.com/watch?v=iU4T1Qpu-8U this video]). When killed, he drops 3 items (hypo spray, phase cloak, force shield). The phase cloak and the force shield are otherwise not encountered before [[{{C3}}]], and the secret Striker comes before the first Striker you see normally (after you find [[Chung]]). The very improbable encounter and its extraordinary reward distinguish this secret Striker as Oni&#039;s most complex Easter egg.&lt;br /&gt;
&lt;br /&gt;
===Febtober Striker===&lt;br /&gt;
A trigger volume in [[{{C2}}]] has the name &amp;quot;febtober&amp;quot;, which is a second reference (after [[#OMM|-OMM- TTC 1.1]]) to the Celebrity Jeopardy! sketches on Saturday Night Live. In one sketch, &amp;quot;Sean Connery&amp;quot; guesses that the month of the year starting with &amp;quot;Feb&amp;quot; is &amp;quot;Febtober&amp;quot;. Any possible additional in-joke at Bungie concerning this &amp;quot;month&amp;quot; is unknown. Triggering &amp;quot;febtober&amp;quot;, which is done by jumping off the walkway with the turret at the end, spawns a Striker with a plasma rifle who patrols the corridor near the turbines seen in the [[:Image:CHAPTER_02_._ENGINES_OF_EVIL.png|level&#039;s splashscreen]].&lt;br /&gt;
&lt;br /&gt;
===Happy Bomber===&lt;br /&gt;
Normally [[Mad Bomber]]s have a neutral facial expression, but at the medium LOD (level of detail) in the character geometry, the texture coordinates are different from the other LODs and the bomber appears to be smiling:&lt;br /&gt;
[[Image:Bipolar Bomber.jpg|thumb|250px|center]]&lt;br /&gt;
&lt;br /&gt;
===The day after===&lt;br /&gt;
In {{C3}}, there&#039;s [[Quotes/Consoles#The_day_after|this safety-related console]] right before the acid room:&lt;br /&gt;
{{:Quotes/Consoles/level 3d}}&lt;br /&gt;
Nothing happens if you don&#039;t read the console.&lt;br /&gt;
&lt;br /&gt;
===Cleam air===&lt;br /&gt;
[[Image:TXMPPOSTER4.png|right]]&lt;br /&gt;
An in-game poster found in [[{{C4}}]] depicts cartoon children frolicking in a city while wearing heavy-duty masks. The caption reads &amp;quot;CLEAM AIR HAPPY&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
The in-joke behind this misspelling of &amp;quot;clean&amp;quot; as &amp;quot;cleam&amp;quot; just so happens to have a public explanation at the 16&#039;45&amp;quot; mark in [http://hl.udogs.net/files/Gaming/Bungie%20Related%20Movies/MWSF%202000/Bungie%20TV/MWSF%202000/bTV_day2_big.mov this video tour] of Bungie West, when Dave Dunn points to a [[wp:My Neighbor Totoro|My Neighbor Totoro]] poster on the wall of their office with this [[wikt:Engrish|Engrish]] text at its bottom: &amp;quot;CLEAM AIR OF THEIR NEW HOME&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===VI-AG crane===&lt;br /&gt;
Besides &amp;quot;Balor&amp;quot; being written on the cranes as discussed above, the final crane in {{C1}} with an arm (the one Konoko uses to stop the Syndicate truck) says on one side of its arm &amp;quot;VI-AG&amp;quot; and the other side reads &amp;quot;KEEP IT UP&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
===Hugh Jass===&lt;br /&gt;
The truck Konoko steals in {{C14}} reads &amp;quot;Hugh Jas Truckin&#039; Lines&amp;quot;. One &#039;s&#039; is used here, and two in the Credits where &amp;quot;Hugh Jass&amp;quot; is thanked.&lt;br /&gt;
&lt;br /&gt;
==Unused resources and features==&lt;br /&gt;
Though not Easter eggs, resources that were never used in the final game can sometimes be found by looking through the level scripts and game data. For instance, a music theme called &amp;quot;[[Music/Ingame#The Hunt|The Hunt]]&amp;quot; was placed in [[{{C13}}]] but was supposed to play in [[{{C12}}]], and additional characters can be spawned for the boss battle in [[{{C14}}]]. A more famous example is [https://www.youtube.com/watch?v=dszw2vmlmzw an undressing animation] for Konoko that was intended to be used in [http://carnage.bungie.org/oniforum/oni.forum.pl?read=14686 a cut feature] where Konoko could go undercover by changing into different clothes. More unused animations are listed [[XML:TRAM#List of unused animations|HERE]]. Lastly, some sound effects for the [[Iron Demon]] can be found in the global resources.&lt;br /&gt;
&lt;br /&gt;
As mentioned at the top of the article, a reference to Developer Mode (the cheat code &#039;&#039;&#039;thedayismine&#039;&#039;&#039;) is found on a crate label in {{C1}}, along with an Old Man Murray reference. Developer Mode was believed to be absent from the retail game builds, but was [[History of Oni modding/The tale of Dev Mode|eventually unlocked]] in 2006.&lt;br /&gt;
&lt;br /&gt;
Some features of the engine were not fully utilized by the game. In one case, a feature was even obscured by a bug: the AI knew how to dodge gunfire but was not looking at the right axes to reliably do this. This was fixed by Neo in a patch made with the [[Daodan DLL]], resulting in much smarter behavior by AIs under fire.&lt;br /&gt;
&lt;br /&gt;
[[Category:Added value]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OniGalore:About&amp;diff=47089</id>
		<title>OniGalore:About</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OniGalore:About&amp;diff=47089"/>
		<updated>2026-04-13T18:27:11Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: added descrip. of wiki&amp;#039;s contents&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__NOTOC__&lt;br /&gt;
{{PoliciesSidebox}}&lt;br /&gt;
===Who We Are===&lt;br /&gt;
OniGalore is a wiki (a freely editable website) run by the [[Oni]] fan community. The software used by OniGalore is [[mw:MediaWiki|MediaWiki]], the same software that Wikipedia runs on. For an overview of how wikis work, see the [[wp:Wiki|Wiki]] article on Wikipedia.&lt;br /&gt;
&lt;br /&gt;
The editing of OniGalore is currently limited to registered users in order to prevent spam. If you request an account, you will need to wait for it to be approved before you can start editing.&lt;br /&gt;
&lt;br /&gt;
===What OniGalore Contains===&lt;br /&gt;
The founding purpose of the wiki was actually technical documentation: the fans who were reverse-engineering the format of the game data needed a place they could collaborate. Over time, fan fiction and fan art were added in large amounts, and project pages for mods and modding tools were created. Eventually we even got around to documenting the game itself from a player standpoint (years after the wiki was started :-), though there&#039;s still work to do there.&lt;br /&gt;
&lt;br /&gt;
===How To Help===&lt;br /&gt;
If you&#039;re interested in contributing to the wiki and haven&#039;t edited one before, then you should start by reading [[Help:Editing]]. Then check out the [[OniGalore:Current events|Current events]] page for suggestions on where your help will be most valuable.&lt;br /&gt;
&lt;br /&gt;
Unlike on Wikipedia, we only have [[OniGalore:Dos and don&#039;ts|a few &amp;quot;do&amp;quot;s and &amp;quot;don&#039;t&amp;quot;s]] concerning style. Mistakes can always be fixed/undone, but try to experiment in your userspace or on [[:Category:Test pages|a test page]], and ask an experienced editor if you&#039;re not sure about something.&lt;br /&gt;
&lt;br /&gt;
Cleaning up a messy area on the wiki typically requires good knowledge of the topic you&#039;re trying to document. If you don&#039;t feel competent, you can always try and nag someone knowledgeable into doing the job :-)&lt;br /&gt;
&lt;br /&gt;
===How To Customize OniGalore===&lt;br /&gt;
If you have an account on OniGalore then you have a lot of control over the appearance of the wiki. You can start by looking through your [[Special:Preferences|preferences]]. Note the &amp;quot;Appearance&amp;quot; tab. Not only can you select an alternate skin here, but you&#039;ll notice red links for each skin called Custom CSS and Custom JavaScript. You can use those pages to create personal modifications to the appearance or behavior of that skin (these only work when you are logged in). Many examples can be found by looking [https://en.wikipedia.org/w/index.php?search=vector+2022.js&amp;amp;search=vector+2022.js&amp;amp;title=Special%3ASearch&amp;amp;profile=advanced&amp;amp;fulltext=1&amp;amp;ns2=1 here] at custom CSS/JS pages that Wikipedia users have made for Vector 2022, the current skin in use on both Wikipedia and OniGalore. We have some customizations on OniGalore for the Vector skin (no longer in use) which you can find [https://wiki.oni2.net/w/index.php?title=Special%3ASearch&amp;amp;redirs=1&amp;amp;search=vector.css&amp;amp;fulltext=Search&amp;amp;ns2=1&amp;amp;title=Special%3ASearch&amp;amp;advanced=1&amp;amp;fulltext=Advanced+search here].&lt;br /&gt;
&lt;br /&gt;
[[Category:Policies and documentation]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Validate_External_Links/Exceptions&amp;diff=47088</id>
		<title>Validate External Links/Exceptions</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Validate_External_Links/Exceptions&amp;diff=47088"/>
		<updated>2026-04-13T15:23:50Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If the Validate External Links script is mis-reporting certain external links as issues when they actually work fine or when the link has to be presented that way for a specific reason, add them here in order to exempt them from ValExtLinks&#039; reports. The list is sorted by wiki page name for convenience. Each line supports four comma-separated fields, the first three required:&lt;br /&gt;
#The response code that ValExtLinks should expect. For NG and RD links, this should be the exact HTTP response code or the &#039;curl&#039; result code, whichever applies. You can also put &amp;quot;IW&amp;quot; or &amp;quot;EI&amp;quot; here to exempt a warning about an interwiki or external internal link.&lt;br /&gt;
#The recurring &amp;quot;problem&amp;quot; link. Place a &#039;*&#039; as a wildcard at the end of a URL to match multiple links.&lt;br /&gt;
#The wiki page that this link is appearing on. Use the proper page name, i.e. underscores where the displayed name has spaces. To exempt this link from Val&#039;s report regardless of what page it appears on, put a &#039;*&#039; here.&lt;br /&gt;
#(optional) A comment explaining the exception. The only requirements are that the comment be separated from the previous field by a space and that you don&#039;t use any commas. The &amp;quot;--&amp;quot;s used below are only for human readability.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BEGIN LIST&lt;br /&gt;
403,https://dotnet.microsoft.com/en-us/download/dotnet-framework,*&lt;br /&gt;
403,https://dev.epicgames.com/*,*&lt;br /&gt;
403,https://*.blender.org/*,*&lt;br /&gt;
403,https://*.fandom.com/*,*&lt;br /&gt;
403,https://*.gamespot.com/*,*&lt;br /&gt;
403,https://www.rnd.de/*,*&lt;br /&gt;
403,https://wikis.khronos.org/opengl/History_of_OpenGL,AE:ONK/EXE&lt;br /&gt;
403,https://www.gamefront.com/games/jedi-knight-iii/file/major-kusanagi,AE_talk:BGI&lt;br /&gt;
403,https://www.java.com/en/download/,Anniversary_Edition&lt;br /&gt;
403,https://binarygroup.com/,BGI&lt;br /&gt;
403,https://x.com/craigmullins3/status/1920384911292207363,Category:Art_by_Craig_Mullins&lt;br /&gt;
403,https://x.com/mehvechan,Category:Art_by_Lorraine_Reyes&lt;br /&gt;
403,https://x.com/Quantum_Sheep/status/1473397180535029760,Category:Oni_(WAP)_game_images&lt;br /&gt;
403,https://www.artstation.com/artwork/D9d2o,Duality&lt;br /&gt;
403,https://www.artstation.com/artwork/Jl8YXa,Duality&lt;br /&gt;
403,https://www.artstation.com/artwork/4bNKW4,Duality&lt;br /&gt;
403,https://www.artstation.com/artwork/l9g5V,Duality&lt;br /&gt;
301,http://translate.google.com/#en%7Cja%7CChrysalis,File:Daodan_Chrysalis_in_Chinese.png&lt;br /&gt;
403,https://www.artstation.com/artwork/4bNKW4,File:Duality_concept_art_-_BioCorp_VR_avatar.jpg&lt;br /&gt;
EI,https://wiki.oni2.net/Special:ListFiles?limit=500&amp;amp;ilsearch=Fallen,File:Fallen_Enemies.jpg -- EI link is necessary because this special page can&#039;t take these parameters when linked to internally&lt;br /&gt;
403,https://www.fab.com/listings/a1fe637c-ef4d-45de-9a21-9a377d06dee1,File:KatiaVersusKonokoFront.png&lt;br /&gt;
403,https://x.com/mehvechan/status/556178295612391425,File:Lorraine_Reyes_with_Konoko_Fully_Armed_standup.jpg&lt;br /&gt;
000-92,https://www.adobe.com/products/catalog.html#category=3d-ar,Fuse&lt;br /&gt;
000-92,https://helpx.adobe.com/beta/fuse/faq.html,Fuse&lt;br /&gt;
404,https://www.autodesk.com/products/fbx/overview,Importing_character_models&lt;br /&gt;
000-92,https://www.adobe.com/creativecloud/plans.html,Media_creation_with_artificial_intelligence&lt;br /&gt;
EI,http://wiki.oni2.net/Main_Page,MediaWiki:Vector -- necessary EI link to demonstrate circular arrow&lt;br /&gt;
EI,http://wiki.oni2.net/Main_Page,MediaWiki:Vector-2022 -- necessary EI link to demonstrate circular arrow&lt;br /&gt;
404,https://www.autodesk.com/products/softimage/overview,Mod_Tool&lt;br /&gt;
403,https://www.guru3d.com/download/rtss-rivatuner-statistics-server-download,Mouse_control_issues&lt;br /&gt;
403,https://www.vgmpf.com/Wiki/index.php?title=Brian_Salter,Music&lt;br /&gt;
403,https://www.supreme-network.com/midis/browse/O/3494-oni/13574-konoko-chase,Music/Fanmade&lt;br /&gt;
403,https://wikis.khronos.org/opengl/S3_Texture_Compression,OBD:TXMP&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/0000891554-00-000145.txt,Oni&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/000112528202003845/b320556.htm,Oni&lt;br /&gt;
403,https://www.artelino.com/articles/japanese_mythology.asp,Oni_(myth)&lt;br /&gt;
403,https://pcsx2.net/,Oni_(PlayStation_2)&lt;br /&gt;
000-28,https://mega.nz/#!x9oHxaLZ!-bOo-wwdj1fh925DYv1Qc6ErDSRl2HEgtWC-i2FtxtY,Oni_2_(Angel_Studios) -- Mega doesn&#039;t seem to like &#039;curl&#039;&lt;br /&gt;
403,https://pcsx2.net/,Oni_2_(Angel_Studios)/Running&lt;br /&gt;
000-28,https://www.echeat.com/free-essay/Symbolism-in-Fahrenheit-451-by-Ray-Bradbury-29746.aspx,Oni2:Phoenix&lt;br /&gt;
403,https://www.telegraph.co.uk/news/newstopics/howaboutthat/3328480/Otto-the-octopus-wrecks-havoc.html,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://featuredcreature.com/from-dangerous-fluff-to-bunny-stuff/,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,http://www.conoserver.org/,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.cracked.com/article_19988_the-5-most-nightmarish-worms-planet.html,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.cracked.com/article_20078_5-weird-directions-human-evolution-could-have-taken.html,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.treehugger.com/rare-interspecies-play-observed-between-dolphins-and-whales-4857038,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.viator.com/tours/Rio-de-Janeiro/Niteroi-City-Tour-and-Contemporary-Art-Museum-Admission/d712-8753P7,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.cracked.com/article_17562_5-horrifying-apocalyptic-scenarios-that-have-already-happened.html,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.cracked.com/article_19678_6-abandoned-places-that-will-make-awesome-supervillain-lairs.html,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.peninsula.com/en/newsroom/hong-kong,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.nexusmods.com/games/oni,OniGalore:Community_portal&lt;br /&gt;
302,http://www.gnu.org/copyleft/fdl.html,OniGalore:Copyrights&lt;br /&gt;
403,https://www.sfgate.com/entertainment/article/WOMEN-WARRIORS-Forget-Lara-Croft-the-new-3240096.php,Press_coverage&lt;br /&gt;
403,https://x.com/robinalexander_/status/1872960359696376127,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
000-92,https://www.washingtonpost.com/news/wonk/wp/2015/08/27/trump-the-bible-means-a-lot-to-me-but-i-dont-want-to-get-into-specifics/,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://x.com/elonmusk/status/1882406209187409976,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.president.gov.ua/documents/6792022-44249,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.golem.de/news/kritik-an-nasa-musk-will-direkt-zum-mars-fliegen-2501-192128.html,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.axios.com/2025/01/23/elon-musk-nazi-joke-adl,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.axios.com/2022/05/02/mark-esper-book-trump-protesters,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.golem.de/news/kuenstliche-intelligenz-grok-3-veraergert-maga-anhaenger-2505-195906.html,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.luzernerzeitung.ch/kultur/debatte-das-ende-des-westens-ist-da-was-heisst-das-fuer-die-schweiz-und-europa-ld.2751339,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.ndtv.com/world-news/transgender-vs-transgenic-mice-row-over-donald-trumps-animal-experiments-claim-7867258,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
000-92,https://www.washingtonpost.com/archive/politics/1997/04/24/russia-china-sign-new-friendship-pact/896539b8-c583-44f2-8a73-095cbad1e784/,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.economist.com/by-invitation/2022/03/11/john-mearsheimer-on-why-the-west-is-principally-responsible-for-the-ukrainian-crisis,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.nytimes.com/2025/09/18/us/politics/trump-fcc-licenses.html,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
000-92,https://www.washingtonpost.com/national-security/2025/09/18/trump-taiwan-arms-sales-military-aid/,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://x.com/LAGovJeffLandry/status/2002950029494124986,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.derstandard.de/story/3000000301573/putin-gab-sich-bei-seiner-jahrespressekonferenz-wieder-einmal-volksnah,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.politico.com/news/2025/06/02/pentagon-greenland-northern-command-00381223,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
303,https://link.springer.com/article/10.1007/s41748-026-01073-y,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.golem.de/news/abschreckungspolitik-taiwan-will-tsmc-fabriken-nicht-von-usa-bombardieren-lassen-2305-174057.html,Restless_Souls/Glossary/de&lt;br /&gt;
000-92,https://www.washingtonpost.com/archive/politics/1997/04/24/russia-china-sign-new-friendship-pact/896539b8-c583-44f2-8a73-095cbad1e784/,Restless_Souls/Glossary/de&lt;br /&gt;
403,https://www.economist.com/by-invitation/2022/03/11/john-mearsheimer-on-why-the-west-is-principally-responsible-for-the-ukrainian-crisis,Restless_Souls/Glossary/de&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/uwl,Restless_Souls/Reconstruction&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/uwl,Restless_Souls/Reconstruction/Gapfilling&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/SSOB,Restless_Souls/Reconstruction&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/SSOB,Restless_Souls/Reconstruction/Gapfilling&lt;br /&gt;
000-92,https://www.washingtonpost.com/national-security/2025/08/31/trump-gaza-plan-riviera-relocation/,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://x.com/MEMRIReports/status/1721097018062606708,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://x.com/MedvedevRussiaE/status/1821967864947220777,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://www.nytimes.com/2024/07/24/world/middleeast/gaza-war-hepatitis-polio.html,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://www.researchgate.net/publication/262485473_The_Russia-China_Security_Partnership_in_the_Asia-Pacific_Region_Conjectural_and_Structural_Dimensions,Restless_Souls/Summary&lt;br /&gt;
403,https://www.forbes.com/sites/wadeshepard/2019/10/03/what-china-is-really-up-to-in-africa/,Restless_Souls/Summary&lt;br /&gt;
404,https://idw-online.de/de/attachmentdata8851.pdf,Restless_Souls/Technology&lt;br /&gt;
403,https://www.unrealengine.com/en-US,Restless_Souls/Wishlist&lt;br /&gt;
301,https://www.bungie.net/,Rights&lt;br /&gt;
403,https://tsdr.uspto.gov/caseviewer/assignments?caseId=75570211&amp;amp;docIndex=1&amp;amp;searchprefix=sn#docIndex=1,Rights&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/WPS,Talk:Hasegawa&lt;br /&gt;
403,https://www.ixbt.com/video2/tech_ss2.shtml,Talk:Oni_Model_Extractor&lt;br /&gt;
301,https://www.welt.de/debatte/kommentare/plus246585502/Niedergang-Deutschland-zeigt-der-Welt-wie-man-es-nicht-macht.html,Talk:Restless_Souls/Summary&lt;br /&gt;
302,https://www.derstandard.at/story/3000000190426/der-nahostkonflikt-in-oesterreichs-klassenzimmer,Talk:Restless_Souls/Summary&lt;br /&gt;
303,https://www.bmjv.de/DE/themen/menschenrechte/menschenrechte_node.html,Talk:Restless_Souls/Summary&lt;br /&gt;
403,https://www.researchgate.net/figure/S-curves-for-the-established-and-disruptive-technology-Performance_fig2_4899992,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://de.statista.com/statistik/daten/studie/1208627/umfrage/ausbreitung-von-corona-mutationen-in-deutschland/,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/haeufiger-als-andere-modelle-chatgpt-sabotiert-bei-tests-eigene-abschaltung-2505-196561.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/microsoft-studie-diese-berufe-veraendert-ki-am-staerksten-2508-198747.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/neue-ki-architektur-was-ist-baby-dragon-hatchling-2510-201047.html,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://www.forbes.com/sites/mattnovak/2023/04/11/elon-musk-working-on-ai-at-twitter-despite-calling-for-6-month-pause-report/,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://www.forbes.com/sites/ronschmelzer/2025/10/09/samsung-ai-research-team-builds-a-tiny-model-with-big-powe/,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.derstandard.de/story/3000000302571/neuralink-will-gehirn-chips-in-serie-fertigen-operationen-bald-automatisiert,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/claude-opus-4-6-ki-findet-ueber-500-zero-day-luecken-in-open-source-software-2602-205139.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/soziales-netzwerk-moltbook-entpuppt-sich-als-ki-trugbild-2602-205141.html,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://medium.com/@aloy.banerjee30/infinite-context-length-in-llms-the-next-big-advantage-in-ai-2550e9e6ce9b,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/hackerbot-claw-ki-agent-kapert-softwareprojekte-auf-github-2603-205990.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/unkontrollierbares-fehlverhalten-ki-agenten-werden-zu-immer-groesserem-insider-risiko-2603-206491.html,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://www.unrealengine.com/en-US/blog/a-first-look-at-unreal-engine-5,Talk:UnrealOni&lt;br /&gt;
404,https://www.autodesk.com/products/fbx/overview,Template:AutodeskFBX&lt;br /&gt;
000-92,https://www.adobe.com/creativecloud/plans.html,Template:Photoshop&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/0000891554-00-000145.txt,Timeline_of_development&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/000112528202003845/b320556.htm,Timeline_of_development&lt;br /&gt;
403,https://www.fab.com/listings/ef9651a4-fb55-4866-a2d9-1b38b028f9c7,UnrealOni/ALS&lt;br /&gt;
403,https://www.fab.com/listings/ef9651a4-fb55-4866-a2d9-1b38b028f9c7,UnrealOni/Tutorials&lt;br /&gt;
403,https://www.fab.com/listings/a1fe637c-ef4d-45de-9a21-9a377d06dee1,User:Geyser/CharacterTutorialMakeHumanToUE4&lt;br /&gt;
EI,https://wiki.oni2.net/Special:AllMessages?prefix=&amp;amp;filter=modified&amp;amp;lang=en&amp;amp;limit=50,User:Iritscen/WikiMods -- EI link is necessary&lt;br /&gt;
302,https://m.facebook.com/groups/186656799756?refid=27,User:Samer&lt;br /&gt;
403,https://www.speedrun.com/oni,Videos&lt;br /&gt;
403,https://www.computerhope.com/jargon/w/wildcard.htm,XmlTools&lt;br /&gt;
END LIST&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Support]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Restless_Souls/Wishlist&amp;diff=47087</id>
		<title>Restless Souls/Wishlist</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Restless_Souls/Wishlist&amp;diff=47087"/>
		<updated>2026-04-13T15:14:38Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: link fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;The main page for [[UnrealOni|&#039;&#039;&#039;UnrealOni&#039;&#039;&#039; can be found HERE]].&lt;br /&gt;
&lt;br /&gt;
==Oni 2 game==&lt;br /&gt;
===Engine===&lt;br /&gt;
If we had a real option to create an Oni 2 with modern engine I would root for Unreal Engine 4.&lt;br /&gt;
&lt;br /&gt;
It works on PC and Macs and it is free for non-commercial projects.&lt;br /&gt;
&lt;br /&gt;
There&#039;s a big community, documentation and tutorials.&lt;br /&gt;
&lt;br /&gt;
If the demo is going to be extended it would be better to work with original/free content from begin with, sparing us IP concerns. Old content is meant as placeholders.&lt;br /&gt;
&lt;br /&gt;
It supports weapon and h2h combat. Of course Oni&#039;s unique fighting style would have be re-written. But everything else should be supported by the engine. Particle, trigger volumes, wide environments, details characters. What else could you wish for?&lt;br /&gt;
&lt;br /&gt;
===Features===&lt;br /&gt;
Besides new levels, characters and story... How about new gameplay elements? Since the Daodan is an core element of the story it would be shame not to make use of it. It would add a strategical component and adds to the replay value.&lt;br /&gt;
&lt;br /&gt;
Since the bio aspects would be hard to reinvent for a spiritual successor, one might more concentrate on good &#039;ol nanotech. &amp;quot;Omega days&amp;quot;? &amp;quot;Iron demons?&amp;quot;&lt;br /&gt;
&lt;br /&gt;
====Primary Daodan traits====&lt;br /&gt;
* Healing (stopping a heavy bleeding and recovery speed)&lt;br /&gt;
* Power (stronger attacks, throwing or using heavy objects and enemies as weapons (e.g. using a skriker as Nunchaku with maxed out power))&lt;br /&gt;
* Speed (faster attacks, running, reflexes (dodging, counters))&lt;br /&gt;
* Adapting (mutation speed (biological computing by means of &amp;quot;Oni cluster&amp;quot; cells))&lt;br /&gt;
* Mechanical resistance (adaptions to pressure and kinetic damage (e.g. graphene enhanced cells))&lt;br /&gt;
* Physical resistance (VDG, plasma, phase stream projectors (electric isolation))&lt;br /&gt;
* Chemical resistance (acid, poison (lead bullets, mercury bow bullets))&lt;br /&gt;
* Biological resistance (screamer cells, infections by untreated wounds)&lt;br /&gt;
* Thermal resistance (extreme heat - fire, extreme coldness)&lt;br /&gt;
* Nuclear resistance (depleted uranium ammunition and surviving contaminated areas)&lt;br /&gt;
&lt;br /&gt;
Basically you can &amp;quot;tank up&amp;quot; against weapons and don&#039;t need to worry about ammo.&lt;br /&gt;
&lt;br /&gt;
To keep balance you could add more dangerous weapons as the game progresses.&lt;br /&gt;
&lt;br /&gt;
====Secondary Daodan traits====&lt;br /&gt;
The Daodan is not almighty. It has certain weaknesses you should watch out for.&lt;br /&gt;
&lt;br /&gt;
* Your Daodan abilities depend on Daodan biomass which means you can either unlock new abilities or enhance existing ones. And there&#039;s a limit to your abilities, because your cell count is limited.&lt;br /&gt;
* There should be one or two &amp;quot;ultimates&amp;quot; in Imago stage that depend on your evolution.&lt;br /&gt;
* Your number of Daodan cells depend on taken damage and recovery that happen in the last level.&lt;br /&gt;
* But too much damage can cause too high growth rates (temporary sudden pain and fever resulting in moments of reduced vision, shooting accuracy, &amp;quot;getting blocked&amp;quot; rate) or it simply kills you because you exceeded the maximal healing capacity of the daodan.&lt;br /&gt;
* Sytropin can help you in lowering growth rates. Be aware of increasing drug resistance as the game progresses.&lt;br /&gt;
* Reverting an existing mutation takes more &amp;quot;work&amp;quot; than establishing a new one. Basically your course of action is directed evolution.&lt;br /&gt;
&lt;br /&gt;
====Improved movement set and h2h====&lt;br /&gt;
* prone mode&lt;br /&gt;
* sneaking at walls and through vent channels&lt;br /&gt;
* throw foes over obstacles&lt;br /&gt;
* extend h2h with Parkour elements (e.g. wall jump connectable to a flying knee)&lt;br /&gt;
* use pickable objects as weapons (either throwable or usable as a club)&lt;br /&gt;
* ledge grab (not a must-have)&lt;br /&gt;
* swimming (not a must-have)&lt;br /&gt;
&lt;br /&gt;
====Miscellaneous====&lt;br /&gt;
* controllable drones, robots, mechs, vehicles&lt;br /&gt;
* dynamic lighting, wearable lights (flash lights) for dark environments&lt;br /&gt;
* temperature affects characters (not a must-have)&lt;br /&gt;
* emotions affects characters (not a must-have, rage enhances Daodan powers to a limited degree)&lt;br /&gt;
&lt;br /&gt;
==Oni 2 game tech demo with Unreal Engine 4==&lt;br /&gt;
[[Image:UE4_appetizer.jpg|400px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
===Goal===&lt;br /&gt;
There is big skepticism inside the community whether an Oni-like game can be accomplished with the Unreal 4 engine.&lt;br /&gt;
&lt;br /&gt;
Therefore I seek to create a technical demo to proof feasibility of such project.&lt;br /&gt;
&lt;br /&gt;
The availability of XML documentation for Oni 1 seem to have speeded up mod creation so I will pursue a similar route for this project. The documentation written here in the process shall serve as measure to lower the learning curve of other modders (or then programmers / content creators). &lt;br /&gt;
&lt;br /&gt;
Since EdT joined I feel very confident that a community-based Oni 2 is possible. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 23:37, 20 February 2018 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Stuff that is probably coverd by the tech demo===&lt;br /&gt;
Everyone could pickup one of these points and investigate how to implement it.&lt;br /&gt;
&lt;br /&gt;
If successful that person would write down a mini-tutorial here on OniGalore so others could see progress and learn from the documentation to perhaps pickup the next, somewhat more complex point.&lt;br /&gt;
&lt;br /&gt;
There could be project files on a cloud drive as long as there aren&#039;t too many people involved (otherwise a SVN). New files could be uploaded into a revision folder. Users could test the changes and then update the project in the cloud.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
:V - video&lt;br /&gt;
:T - tutorial&lt;br /&gt;
:D - documentation&lt;br /&gt;
&lt;br /&gt;
Features the demo should include: &lt;br /&gt;
* two levels (to test normal level load routine and level streaming [https://dev.epicgames.com/documentation/en-us/unreal-engine/level-streaming-how-tos?application_version=4.27 (T)])&lt;br /&gt;
* skydome [https://www.youtube.com/results?search_query=ue4+skybox (V)]&lt;br /&gt;
* lightning&lt;br /&gt;
* main menu&lt;br /&gt;
** So far I failed to add background music. This gave rise to the idea of having an own level for the main menu where you can spawn ambient music. Muro or another character could be previewed with their current movement set and equipment. Shooting the camera would make the game quit. This will be useful when the enemy takes over this HQ AI and he needs to &#039;&#039;shut it down&#039;&#039;. &amp;quot;Mission failed.&amp;quot; &amp;quot;Screw you!&amp;quot; Pressing the &amp;quot;V&amp;quot; key would allow you to go into your training room or HQ testing new moves or doing investments. &lt;br /&gt;
* HUD (&amp;quot;circular&amp;quot; health bar, item slots)&lt;br /&gt;
** [https://web.archive.org/web/20181006203834/https://wiki.unrealengine.com/Unreal_Motion_Graphics_(UMG)_UI_-_Inventory_Tutorial_Playlist (T)]&lt;br /&gt;
* background music [https://dev.epicgames.com/documentation/en-us/unreal-engine/WorkingWithMedia/Audio/?application_version=4.27 (D)] [https://dev.epicgames.com/documentation/en-us/unreal-engine/playing-animations-and-sounds?application_version=4.27 (T)] [https://www.youtube.com/results?search_query=ue4+background+music (V)]&lt;br /&gt;
* save game state&lt;br /&gt;
* read game state&lt;br /&gt;
* text pages for diary, etc.&lt;br /&gt;
* fbx import of old objects&lt;br /&gt;
** static&lt;br /&gt;
** pushable&lt;br /&gt;
** animated&lt;br /&gt;
* animated objects with collision box to stand on&lt;br /&gt;
* objects that can be thrown&lt;br /&gt;
* CJBO equivalents (characters, console, door, trigger (laser), trigger volume, ...)&lt;br /&gt;
* compass (objective)&lt;br /&gt;
* LSI&lt;br /&gt;
* FBX import and usage of old characters&lt;br /&gt;
*: ...&lt;br /&gt;
*: [https://www.youtube.com/watch?v=7vtdJeRscAQ adding animations (V)]&lt;br /&gt;
** combining character parts to one model&lt;br /&gt;
** rigging the model&lt;br /&gt;
*** minimum TRAC-TRAM integration I (walk cycle and idle)&lt;br /&gt;
*** prone mode&lt;br /&gt;
* keyboard and mouse controls&lt;br /&gt;
* functional animations&lt;br /&gt;
** character h2h (force-sensitive) (a.k.a physical animation component)&lt;br /&gt;
**:&amp;lt;nowiki&amp;gt;https://www.youtube.com/watch?v=2AapLKCntvc (V)&amp;lt;/nowiki (dead link)&lt;br /&gt;
** character h2h&lt;br /&gt;
**:[https://www.youtube.com/watch?v=2QakhD03d9M (V)]&lt;br /&gt;
** hit reaction&lt;br /&gt;
**:&amp;lt;nowiki&amp;gt;https://www.youtube.com/watch?v=f9z7N50wu7s (V)&amp;lt;/nowiki&amp;gt; (dead link)&lt;br /&gt;
**:&amp;lt;nowiki&amp;gt;https://www.youtube.com/watch?v=3lPSKA0hpdc (V)&amp;lt;/nowiki&amp;gt; (dead link)&lt;br /&gt;
** minimum TRAC-TRAM integration II (combat idle, punch, kick, block, half-damage, unblockable, super)&lt;br /&gt;
** minimum TRAC-TRAM integration III (throws)&lt;br /&gt;
** minimum TRAC-TRAM integration IV (throwable objects)&lt;br /&gt;
** overlay animations&lt;br /&gt;
*** aiming&lt;br /&gt;
*** holstering&lt;br /&gt;
*** h2h weapons&lt;br /&gt;
** ledge climbing&lt;br /&gt;
**:[https://www.youtube.com/watch?v=4yjcwZLQqlE (V)]&lt;br /&gt;
**:[https://www.youtube.com/watch?v=H2xqW7lKkyw (V)]&lt;br /&gt;
**:[https://www.youtube.com/watch?v=H2xqW7lKkyw (V)]&lt;br /&gt;
**:[https://www.youtube.com/watch?v=fLLKgc0LDqc (V)]&lt;br /&gt;
**:[https://www.youtube.com/watch?v=ABgcv21uivU (V)]&lt;br /&gt;
** cover&lt;br /&gt;
**:[https://www.youtube.com/watch?v=TzL7YDEPej0 (V)]&lt;br /&gt;
**:[https://www.youtube.com/watch?v=efKH9ugTzLM (V)]&lt;br /&gt;
**:[https://www.youtube.com/watch?v=-oGDDIbvQ1c (V)]&lt;br /&gt;
** cover (AI)&lt;br /&gt;
**:&amp;lt;nowiki&amp;gt;https://www.youtube.com/watch?v=nh30nt0wSjs (V)&amp;lt;/nowiki&amp;gt; (dead link)&lt;br /&gt;
* healing by hypo and level areas&lt;br /&gt;
* particle (attachable to env, weap, char)&lt;br /&gt;
** weather (rain, snow, wind, dust, lightning)&lt;br /&gt;
* two weapons&lt;br /&gt;
* ammo type: ballistic ammo&lt;br /&gt;
* ammo type: energy cell&lt;br /&gt;
* AI&lt;br /&gt;
** patrol paths and pathfinding&lt;br /&gt;
** recreation of basic ONCC properties (incl. shooting inaccuracy)&lt;br /&gt;
** spawn AI&lt;br /&gt;
**: [https://www.youtube.com/watch?v=hVdNji_TtXw (V)]&lt;br /&gt;
* h2h-specific animations&lt;br /&gt;
** startle&lt;br /&gt;
** stun&lt;br /&gt;
** knockdown&lt;br /&gt;
** blowup&lt;br /&gt;
** got hit animation&lt;br /&gt;
*** got hit animation (CBPM-specific)&lt;br /&gt;
** throws mechanics&lt;br /&gt;
** follow me command, stop command&lt;br /&gt;
** alarm behavior&lt;br /&gt;
* CBPM-specific bullet hit behavior&lt;br /&gt;
* add effects via ONIE-TMBD-MTRL mini complex&lt;br /&gt;
* driving a truck&lt;br /&gt;
* BSL equivalent (&amp;quot;Blueprint&amp;quot;)&lt;br /&gt;
* team support (easy methods to make project contributions)&lt;br /&gt;
* levels of difficulty&lt;br /&gt;
** Easy: -20%? health for foes &lt;br /&gt;
** Normal&lt;br /&gt;
** Hard: +20%? health for foes, foe class upgrade?&lt;br /&gt;
** Extreme: shorter reaction times of AI (&amp;quot;killmequick&amp;quot;)&lt;br /&gt;
::: powerups on the ground can be destroyed quite easily by projectiles or heavy h2h attacks&lt;br /&gt;
:::: ammo -&amp;gt; blast damage and fire&lt;br /&gt;
:::: cell -&amp;gt; blast damage and stun effect&lt;br /&gt;
:::: hypo -&amp;gt; little blast damage and a cloud of healing gas&lt;br /&gt;
:::: shield -&amp;gt; major blast damage&lt;br /&gt;
:::: invis -&amp;gt; blinding&lt;br /&gt;
:::: LSI -&amp;gt; mission failed ?&lt;br /&gt;
** YOLO: Extreme mode plus when player dies he cannot reload that savegame. He has to restart at level 1.&lt;br /&gt;
** YOLO +: YOLO plus the games has never been played before. first play after installation. This is a secrete achievement.&lt;br /&gt;
&lt;br /&gt;
Besides from what all should be tested and made, here&#039;s a groundwork tutorial: [https://dev.epicgames.com/documentation/en-us/unreal-engine/third-person-template?application_version=4.27 Blueprint 3rd Person Game]&lt;br /&gt;
&lt;br /&gt;
It touches pretty much stuff in those 4 hours: getting a character into a level, setting him up as player, the controls, animations cycles, animation blending, animation overlay and attaching physics&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You could probably split this thing into three parts: learning the basics, adding stuff from the long feature list (those not already covered by the basics), and tweaking animations controls to behave like Oni 1&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Practice notes===&lt;br /&gt;
Now then if you want to try this do the following.&lt;br /&gt;
&lt;br /&gt;
# For content creation you maybe want to use [[Blender]] since it is free and available for PC, Mac and Linux.&lt;br /&gt;
# Install Visual Studio 2017 Community (to write C++ later)&lt;br /&gt;
# Register at https://www.unrealengine.com/en-US, while logged in you can download the installer from the upper right corner. (Blue button &amp;quot;DOWNLOAD&amp;quot;.)&lt;br /&gt;
# Start Installer and download Unreal Engine 4.17.1 (It will be about 6 GB. It extracts to 17 GB.)&lt;br /&gt;
# Learn viewport navigation from the yellow flashing blue hat icon.&lt;br /&gt;
# Then continue with the videos of the [https://dev.epicgames.com/documentation/en-us/unreal-engine/third-person-template?application_version=4.27 3rd Person Game tutorials.]&lt;br /&gt;
&lt;br /&gt;
===Tutorial summary: 3rd Person Game===&lt;br /&gt;
Incomplete notes...&lt;br /&gt;
&lt;br /&gt;
It seems like there aren&#039;t scripts anymore. Blueprint is Visual scripting, you are working with visualized functions, objects, etc. It&#039;s more what you can do with the C++ code which also gets compiled.&lt;br /&gt;
&lt;br /&gt;
FBX can contain data for TRBS, TRIA, TRAC, multiple TRAM, materials, textures.&lt;br /&gt;
&lt;br /&gt;
;Video ?&lt;br /&gt;
:Blend Parameter now on the left side.&lt;br /&gt;
&lt;br /&gt;
Keybinding (equivalent to key_config.txt)&lt;br /&gt;
&lt;br /&gt;
Input to move binding (equivalent to StNA)&lt;br /&gt;
&lt;br /&gt;
Support for Keyboard, Mouse (and inverted control), Gamepads and touch&lt;br /&gt;
&lt;br /&gt;
Player camera settings editable (distance holder named &amp;quot;Spring Arm&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
;Animations&lt;br /&gt;
:Animation cycles (TRAM - shortcuts)&lt;br /&gt;
:Transition rules (similar to those in TRAM headers &amp;lt;FromState&amp;gt;, &amp;lt;ToState&amp;gt;)&lt;br /&gt;
:Blend Space is an heavily enhanced version of &amp;lt;Interpolation&amp;gt;&lt;br /&gt;
::The animation gets adapted in length AND rotation values. When properly used, transition are nothing less than perfect.&lt;br /&gt;
&lt;br /&gt;
;Video 8&lt;br /&gt;
:Anim Preview Editor is on the right now&lt;br /&gt;
:Event Graph: right-click for context menu to add missing &amp;quot;Try Get Pawn Owner&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Video 12&lt;br /&gt;
:Character Blueprint is sort of an ONCC. They aren&#039;t exactly equal.&lt;br /&gt;
:: It misses seeing, hearing, weapon skills and more. It has settings for jump, &amp;quot;air control&amp;quot;, LOD, shadow, few CHAR events, collision box, tags, ONIE related stuff&lt;br /&gt;
&lt;br /&gt;
 EventGraph -&amp;gt; Component -&amp;gt; Mesh -&amp;gt; e.g. Get Material Index &lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Selected knowledge===&lt;br /&gt;
Whenever you edited a Blueprint: compile (F7) and save (Ctrl + S).&lt;br /&gt;
&lt;br /&gt;
====Code management====&lt;br /&gt;
In order to sort things and avoid code duplication I&#039;m trying to spit things for now the following way:&lt;br /&gt;
&lt;br /&gt;
* game related code such as a level loading function and menu references goes to the &#039;&#039;&#039;Game Instance&#039;&#039;&#039;&lt;br /&gt;
* level related code such as a Slash Screen function goes to the &#039;&#039;&#039;Level blueprint&#039;&#039;&#039;&lt;br /&gt;
* player related code such as keyboard inputs go to a custom &#039;&#039;&#039;Player Controller&#039;&#039;&#039; (changeable in the Game Mode)&lt;br /&gt;
* AI related code goes to the &#039;&#039;&#039;ONCC component blueprint&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Game instance====&lt;br /&gt;
When we store information in an game instance it won&#039;t disappear after loading the next level.&lt;br /&gt;
&lt;br /&gt;
Let&#039;s say there is a menu button or hotkey in a pause menu widget to disable hint texts.&lt;br /&gt;
&lt;br /&gt;
Using variables in a widget is a dead end. They are destroyed as soon as we close the widget.&lt;br /&gt;
&lt;br /&gt;
We could save our choice of showing the hint text in the level blueprint but as soon as we proceed to the next level the hint text would be shown again.&lt;br /&gt;
&lt;br /&gt;
So, we go up in the hierarchy and store the information in the game instance.&lt;br /&gt;
&lt;br /&gt;
To make the information really persistent (between game starts or when loading a save game) all we would need to do is saving the information from the game instance to a save game.&lt;br /&gt;
&lt;br /&gt;
====Main func====&lt;br /&gt;
[[Image:UE4_Level_Blueprint_Event_BeginPlay_as_main_func_replacement.png|400px|right|thumb]]&lt;br /&gt;
Equivalent to Oni&#039;s main func can be found / created in the &amp;quot;Level Blueprint&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Blueprints &amp;gt; Open Level Bluprints&lt;br /&gt;
&lt;br /&gt;
Right-click to open context menu. Search for and add node &amp;quot;Event BeginPlay&amp;quot;&lt;br /&gt;
&lt;br /&gt;
At this point it&#039;s empty.&lt;br /&gt;
&lt;br /&gt;
Maybe for testing or learning purposes add another node: &amp;quot;Play Sound 2D&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Change its Sound source to a Sound Cue you made.&lt;br /&gt;
&lt;br /&gt;
Connect the nodes Event BeginPlay with Play Sound 2D.&lt;br /&gt;
&lt;br /&gt;
=====Blueprints=====&lt;br /&gt;
You can copy-paste blueprints and share them with others in plain text.&lt;br /&gt;
&lt;br /&gt;
Example of an exit function. (In the actual game use Escape key to exit.)&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Begin Object Class=/Script/BlueprintGraph.K2Node_InputKey Name=&amp;quot;K2Node_InputKey_0&amp;quot;&lt;br /&gt;
   InputKey=Escape&lt;br /&gt;
   NodePosX=864&lt;br /&gt;
   NodePosY=-832&lt;br /&gt;
   NodeGuid=99076AC847F4C36E70B54AA78927F135&lt;br /&gt;
   CustomProperties Pin (PinId=92DEBC9A43D657DB995617849A0B7927,PinName=&amp;quot;Pressed&amp;quot;,Direction=&amp;quot;EGPD_Output&amp;quot;,PinType.PinCategory=&amp;quot;exec&amp;quot;,PinType.PinSubCategory=&amp;quot;&amp;quot;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(K2Node_CallFunction_44 BC9E715842362EDD413EF8A39B14F625,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)&lt;br /&gt;
   CustomProperties Pin (PinId=3CDB2A9D40427A0CCFDABF8F090CE41F,PinName=&amp;quot;Released&amp;quot;,Direction=&amp;quot;EGPD_Output&amp;quot;,PinType.PinCategory=&amp;quot;exec&amp;quot;,PinType.PinSubCategory=&amp;quot;&amp;quot;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)&lt;br /&gt;
   CustomProperties Pin (PinId=02AB461F46584F140257A5BC03E90865,PinName=&amp;quot;Key&amp;quot;,Direction=&amp;quot;EGPD_Output&amp;quot;,PinType.PinCategory=&amp;quot;struct&amp;quot;,PinType.PinSubCategory=&amp;quot;&amp;quot;,PinType.PinSubCategoryObject=ScriptStruct&#039;/Script/InputCore.Key&#039;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)&lt;br /&gt;
End Object&lt;br /&gt;
Begin Object Class=/Script/BlueprintGraph.K2Node_CallFunction Name=&amp;quot;K2Node_CallFunction_44&amp;quot;&lt;br /&gt;
   FunctionReference=(MemberParent=Class&#039;/Script/Engine.KismetSystemLibrary&#039;,MemberName=&amp;quot;QuitGame&amp;quot;)&lt;br /&gt;
   NodePosX=992&lt;br /&gt;
   NodePosY=-832&lt;br /&gt;
   NodeGuid=F926936F4422AC469B38B3B6EBAB12BE&lt;br /&gt;
   CustomProperties Pin (PinId=BC9E715842362EDD413EF8A39B14F625,PinName=&amp;quot;execute&amp;quot;,PinToolTip=&amp;quot;\nExec&amp;quot;,PinType.PinCategory=&amp;quot;exec&amp;quot;,PinType.PinSubCategory=&amp;quot;&amp;quot;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,LinkedTo=(K2Node_InputKey_0 92DEBC9A43D657DB995617849A0B7927,),PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)&lt;br /&gt;
   CustomProperties Pin (PinId=308342D741456EB59283E7A1B0C7183D,PinName=&amp;quot;then&amp;quot;,PinToolTip=&amp;quot;\nExec&amp;quot;,Direction=&amp;quot;EGPD_Output&amp;quot;,PinType.PinCategory=&amp;quot;exec&amp;quot;,PinType.PinSubCategory=&amp;quot;&amp;quot;,PinType.PinSubCategoryObject=None,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)&lt;br /&gt;
   CustomProperties Pin (PinId=2EF7797B47E79A543E0AEAB9F7914F98,PinName=&amp;quot;self&amp;quot;,PinFriendlyName=NSLOCTEXT(&amp;quot;K2Node&amp;quot;, &amp;quot;Target&amp;quot;, &amp;quot;Target&amp;quot;),PinToolTip=&amp;quot;Target\nKismet System Library Object Reference&amp;quot;,PinType.PinCategory=&amp;quot;object&amp;quot;,PinType.PinSubCategory=&amp;quot;&amp;quot;,PinType.PinSubCategoryObject=Class&#039;/Script/Engine.KismetSystemLibrary&#039;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultObject=&amp;quot;/Script/Engine.Default__KismetSystemLibrary&amp;quot;,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)&lt;br /&gt;
   CustomProperties Pin (PinId=E5668388474ABD86D0C505AE22C65ECB,PinName=&amp;quot;WorldContextObject&amp;quot;,PinToolTip=&amp;quot;World Context Object\nObject Object Reference&amp;quot;,PinType.PinCategory=&amp;quot;object&amp;quot;,PinType.PinSubCategory=&amp;quot;&amp;quot;,PinType.PinSubCategoryObject=Class&#039;/Script/CoreUObject.Object&#039;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=True,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)&lt;br /&gt;
   CustomProperties Pin (PinId=8E90ECF5471A7E7EA51527B95CA238F9,PinName=&amp;quot;SpecificPlayer&amp;quot;,PinToolTip=&amp;quot;Specific Player\nPlayer Controller Object Reference\n\nThe specific player to quit the game. If not specified, player 0 will quit.&amp;quot;,PinType.PinCategory=&amp;quot;object&amp;quot;,PinType.PinSubCategory=&amp;quot;&amp;quot;,PinType.PinSubCategoryObject=Class&#039;/Script/Engine.PlayerController&#039;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)&lt;br /&gt;
   CustomProperties Pin (PinId=FDCA728E4AFA5A2ABEA52A88B5B79FEA,PinName=&amp;quot;QuitPreference&amp;quot;,PinToolTip=&amp;quot;Quit Preference\nEQuitPreference Enum&amp;quot;,PinType.PinCategory=&amp;quot;byte&amp;quot;,PinType.PinSubCategory=&amp;quot;&amp;quot;,PinType.PinSubCategoryObject=Enum&#039;/Script/Engine.EQuitPreference&#039;,PinType.PinSubCategoryMemberReference=(),PinType.PinValueType=(),PinType.ContainerType=None,PinType.bIsMap=False,PinType.bIsSet=False,PinType.bIsArray=False,PinType.bIsReference=False,PinType.bIsConst=False,PinType.bIsWeakPointer=False,DefaultValue=&amp;quot;Quit&amp;quot;,PersistentGuid=00000000000000000000000000000000,bHidden=False,bNotConnectable=False,bDefaultValueIsReadOnly=False,bDefaultValueIsIgnored=False,bAdvancedView=False,bOrphanedPin=False,)&lt;br /&gt;
End Object&lt;br /&gt;
Begin Object Class=/Script/UnrealEd.EdGraphNode_Comment Name=&amp;quot;EdGraphNode_Comment_7&amp;quot;&lt;br /&gt;
   NodePosX=816&lt;br /&gt;
   NodePosY=-880&lt;br /&gt;
   NodeWidth=490&lt;br /&gt;
   NodeHeight=230&lt;br /&gt;
   NodeComment=&amp;quot;Exit&amp;quot;&lt;br /&gt;
   NodeGuid=92DC2D0B492925CE0957EB865A535520&lt;br /&gt;
End Object&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Cameras====&lt;br /&gt;
=====Third Person View=====&lt;br /&gt;
Right after testing the vanilla Third Person Character template in UE you will notice that the camera can be fully moved around the player character.&lt;br /&gt;
&lt;br /&gt;
In Oni the orbiting is limited. IMO this added to Oni&#039;s unique vibe. Hand-to-hand combat felt more realistic because you can&#039;t really see behind your back. &lt;br /&gt;
[[Image:UE4_Oni-like_Third_Person_View.png|400px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
;Part I&lt;br /&gt;
To reproduce the same behavior you have to silent the mouse controls on some conditions.&lt;br /&gt;
&lt;br /&gt;
In theory the core function would hold these parts:&lt;br /&gt;
# check for camera&#039;s rotation relative to the character (if rotation exceeds limits the input gets nullified)&lt;br /&gt;
# check for left turn mouse rotation to get out of camera&#039;s right side maximum&lt;br /&gt;
# check for right turn mouse rotation to get out of camera&#039;s left side maximum&lt;br /&gt;
&lt;br /&gt;
In practice I tweaked the facing value so that is always below 180 degrees (e.g. -270 becomes 90). That way following code only needs the later 2 of 3 checks.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://1drv.ms/t/s!Asn4fV_yvODigUAfQ-spWYnvi1pV&amp;lt;/nowiki&amp;gt; (dead link)&lt;br /&gt;
&lt;br /&gt;
;Part II&lt;br /&gt;
During the BeginPlay Event you can set nodes to limit the camera pitch (up and down movement).&lt;br /&gt;
&lt;br /&gt;
&amp;lt;nowiki&amp;gt;https://1drv.ms/t/s!Asn4fV_yvODigT8xJ35jXaxFlD35&amp;lt;/nowiki&amp;gt; (dead link)&lt;br /&gt;
&lt;br /&gt;
;Part III&lt;br /&gt;
Oni&#039;s second unique feature of its Third Person View is the look mode. It shifts the mouse rotation control from the body to the head.&lt;br /&gt;
&lt;br /&gt;
By that you can look to the side while keep running forward.  &lt;br /&gt;
&lt;br /&gt;
;Part IV&lt;br /&gt;
The limited mouse controls feel clumsy as long as the character can turn around by pressing the &amp;quot;walk backwards&amp;quot; key.&lt;br /&gt;
&lt;br /&gt;
We need changes so that the character actually walks backwards and does NOT turn around.&lt;br /&gt;
&lt;br /&gt;
====Music====&lt;br /&gt;
Sound files extracted with OniSplit aren&#039;t compatible, you have to convert them to 16-bit PCM wav again. Audacity works well for that.&lt;br /&gt;
&lt;br /&gt;
The OSBD properties can be recreated by turning the sound into a cue and then adding BluePrint logic to it.&lt;br /&gt;
&lt;br /&gt;
UE4 is unable to seamlessly loop sound parts which is a requirement for playing permutations. However, almost every Oni modder imports complete soundtracks, so it&#039;s not that much of a loss.&lt;br /&gt;
&lt;br /&gt;
[[Image:UE4_SoundCue.png|400px|right|thumb]]&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
Import two wav files to the content browser. Right-click one to &amp;quot;Create Cue&amp;quot;. Double-click that created Cue.&lt;br /&gt;
&lt;br /&gt;
Add &amp;quot;Wave Player&amp;quot;, &amp;quot;Enveloper&amp;quot;, &amp;quot;Random&amp;quot;, and &amp;quot;Looping&amp;quot; nodes.&lt;br /&gt;
&lt;br /&gt;
Set a wave file for each new Wave Player.&lt;br /&gt;
&lt;br /&gt;
Select all and press &amp;quot;C&amp;quot; to group them in a comment. That way you better remember what it does and can move the stuff around all at once.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Meshes====&lt;br /&gt;
[[Image:UE4_StaticOniMesh.png|400px|right|thumb]]&lt;br /&gt;
Since &#039;&#039;&#039;OniSplit outputs 3D meshes mostly as Collada (DAE)&#039;&#039;&#039; - and few as Wavefront (OBJ) - you cannot transfer objects from Oni to UE4 directly.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Creating FBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
You either need the &#039;&#039;&#039;[https://aps.autodesk.com/developer/overview/fbx-converter-archives FBX converter]&#039;&#039;&#039; or [[Blender]] to convert the Collada to FBX file format.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Reimports (Furniture)=====&lt;br /&gt;
The CJBO files include a furniture file. But this can be mostly garbage - or empty. Instead the furniture is baked into AKEV. The meshes have flags which allow OniSplit to extract these objects again.&lt;br /&gt;
&lt;br /&gt;
 Onisplit -extract:dae level1_Final level1_Final/AKEV*.oni&lt;br /&gt;
&lt;br /&gt;
In the past this created a bunch of DAE files:&lt;br /&gt;
 EnvWarehouse_bnv.dae&lt;br /&gt;
 EnvWarehouse_cons.dae&lt;br /&gt;
 EnvWarehouse_door.dae&lt;br /&gt;
 EnvWarehouse_furn.dae&lt;br /&gt;
 EnvWarehouse_env.dae&lt;br /&gt;
 EnvWarehouse_env_markers.dae&lt;br /&gt;
 EnvWarehouse_script_X.dae&lt;br /&gt;
 EnvWarehouse_trig.dae&lt;br /&gt;
 other.dae&lt;br /&gt;
&lt;br /&gt;
At some point _furn might be extracted as part of _env. The cause for this is unknown.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Importing FBX&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
The scaling of OniSplit DAE files is too small. &#039;&#039;&#039;Use a factor of 10 to fix it.&#039;&#039;&#039; If we wanted to do a mass-import we would need a tool or a Blender script that alters the DAE (XML) data in advance. (Or maybe some python magic for the UE4 editor can help here too.)&lt;br /&gt;
&lt;br /&gt;
Warehouse boxes from level 1 (and others objects) do only have 5 sides. Writing a macro for XSI/Blender COULD possibly add a 6th side automatically.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Placing individual furniture assets into levels&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
After dragging the assets into the level we need to reposition them all to 0, 0, 0 as the pivot point is used inside the FBX to save their relative position the level.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Optional: Asset library&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Besides re-imports of furniture, objects could be added to a new asset library. For the later case [https://www.youtube.com/watch?v=N1h5mMviSKs resetting the pivot point of meshes (V)] can be useful.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Object instances&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
If we would import an entire furniture file to UE4 it would create the objects as they are: for each object one mesh. That is inefficient as many objects are simply duplicates, although textures and materials are created only once.&lt;br /&gt;
&lt;br /&gt;
To bypass this inefficiency scripting is needed.&lt;br /&gt;
 U_freight_wht_long_7412&lt;br /&gt;
 U_freight_wht_long_7413&lt;br /&gt;
&lt;br /&gt;
Ending numbers such as &amp;quot;_7412&amp;quot; seem to be the CJBO id. (See [[XML:AKEV#AGQG|AGQG &amp;lt;ObjectId&amp;gt;]])&lt;br /&gt;
&lt;br /&gt;
For example a script would export the furniture &amp;quot;U_freight_wht_long&amp;quot; and save the position of all instances to a text file. UE4 would need the import the FBX once and read that text file to place them all in the level. The problem is that rotations are all reset to 0. It might be possible to define some kind of reference and read the first vertex of each object, reading the different rotation and saving this to the text file as well.&lt;br /&gt;
&lt;br /&gt;
A text file (txt/csv/json/xml) might store this data:&lt;br /&gt;
 &amp;lt;asset name=&amp;quot;U_freight_wht_long&amp;quot; cjboId=&amp;quot;7412&amp;quot; pos=&amp;quot;x,y,z&amp;quot; rot=&amp;quot;x,y,z&amp;quot; /&amp;gt;&lt;br /&gt;
 &amp;lt;asset name=&amp;quot;U_freight_wht_long&amp;quot; cjboId=&amp;quot;7413&amp;quot; pos=&amp;quot;x,y,z&amp;quot; rot=&amp;quot;x,y,z&amp;quot; /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
If we import a level 1 &#039;&#039;&#039;furniture file as it is&#039;&#039;&#039;, it creates 366 meshes, 66 textures/materials, resulting in a total &#039;&#039;&#039;498 &amp;quot;uassets&amp;quot; 45 MB&#039;&#039;&#039; in disc space. The process takes all cores to get the job done, first import, about one or two minutes on a modern CPU.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Some possibilities of preparing FURN&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Method !! Notes&lt;br /&gt;
|-&lt;br /&gt;
| XSI scripting || considered &amp;quot;deprecated&amp;quot; by community&lt;br /&gt;
|-&lt;br /&gt;
| Standalone python || splitting DAE (mostly XML)&lt;br /&gt;
|-&lt;br /&gt;
| Blender scripting || -&lt;br /&gt;
|-&lt;br /&gt;
| UE4 editor scripting || importing XML/CSV list for instances of meshes&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Adding door locklight particle to assets?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Some objects such as door locklight are meant to have particles. Oni happened to store some  particle in &#039;&#039;&#039;ONLV&#039;&#039;&#039;, however the door locklight have been moved to the &#039;&#039;&#039;CJBO particle collection&#039;&#039;&#039;. That&#039;s something to keep in mind. If we want to add particle to the static meshes we would need to turn them into full-fledged blueprint assets.&lt;br /&gt;
&lt;br /&gt;
ONLVlab.xml (locklight particle example)&lt;br /&gt;
    &amp;lt;ENVP id=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;Particles&amp;gt;&lt;br /&gt;
            &amp;lt;ENVPParticle&amp;gt;&lt;br /&gt;
                &amp;lt;Class&amp;gt;locklight&amp;lt;/Class&amp;gt;&lt;br /&gt;
                &amp;lt;Tag&amp;gt;lock1_locklight01&amp;lt;/Tag&amp;gt;&lt;br /&gt;
                &amp;lt;Transform&amp;gt;-1 -4.559326E-08 -1.34529964E-05 1.34529973E-05 -2.03512554E-05 -1 4.53194744E-08 -1 2.03512554E-05 643.527 13.0480433 -275.8361&amp;lt;/Transform&amp;gt;&lt;br /&gt;
                &amp;lt;DecalScale&amp;gt;1 1&amp;lt;/DecalScale&amp;gt;&lt;br /&gt;
                &amp;lt;Flags&amp;gt;&amp;lt;/Flags&amp;gt;&lt;br /&gt;
            &amp;lt;/ENVPParticle&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Green collision boxes&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Although the green collision boxes are imported with transparency they are not completely invisible. We could either:&lt;br /&gt;
* remove the collision box (scripting) &lt;br /&gt;
** then tick checkbox in FBX import dialog &amp;quot;Auto Generate Collision&amp;quot;&lt;br /&gt;
* modify the texture &amp;quot;_marker_barrier&amp;quot;&lt;br /&gt;
* modify the material &amp;quot;MaterialLibrary__marker_barrier&amp;quot;&lt;br /&gt;
** change Opacity from Texture Sample to a scalar or vector 3 node (0,0,0 for black = fully transparent)&lt;br /&gt;
&lt;br /&gt;
Since in Oni the &#039;&#039;&#039;green collision box is meant for characters how do we deal with particle collisions?&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Custom collision boxes=====&lt;br /&gt;
In an 3D editor create collision objects and name it beginning with &amp;quot;UCX_&amp;quot;. Save objects and collision objects together in one FBX file.&lt;br /&gt;
&lt;br /&gt;
On import, uncheck &amp;quot;Auto Generate Collision&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
:https://www.youtube.com/watch?v=YxVFChB3oxY&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Reimports (AKEV core geometry)=====&lt;br /&gt;
&#039;&#039;&#039;IIRC, Edt said you need to carefully pick the options while importing&#039;&#039;&#039; core geometry as rooms with otherwise open doors can be blocked for character locomotion.&lt;br /&gt;
&lt;br /&gt;
For destructive environment / Chaos system a modular core geometry might be better. However, this would require scripting again to split geometries apart.&lt;br /&gt;
&lt;br /&gt;
In XSI we can relative easily see where an object has &amp;quot;polygon clusters&amp;quot; and associated textures. (Select a polygon cluster in wireframe mode while having an Image panel open.)&lt;br /&gt;
&lt;br /&gt;
Whether this can be an alternative to Edt&#039;s workflow only major &#039;&#039;&#039;testing&#039;&#039;&#039; can show whereby the geometry is extracted as usual...&lt;br /&gt;
&lt;br /&gt;
 Onisplit -extract:dae level1_Final level1_Final/AKEV*.oni&lt;br /&gt;
&lt;br /&gt;
... and loaded into an 3D editor ...&lt;br /&gt;
&lt;br /&gt;
 EnvWarehouse_env.dae&lt;br /&gt;
&lt;br /&gt;
A rough splitting could be done by looping over the polygon clusters&lt;br /&gt;
&lt;br /&gt;
 &#039; XSI (VBS) scripting&lt;br /&gt;
 for each n in selection(0).activeprimitive.geometry.clusters&lt;br /&gt;
   logmessage (n.name)&lt;br /&gt;
 next&lt;br /&gt;
&lt;br /&gt;
Loop content:&lt;br /&gt;
 &#039; basic test with Polygon75 instead of n.name&lt;br /&gt;
 SelectObj &amp;quot;world.polymsh.cls.Polygon75&amp;quot;&lt;br /&gt;
 SelectMembers &amp;quot;world.polymsh.cls.Polygon75&amp;quot;&lt;br /&gt;
 &#039; poly arg can be blank, in that case active selection is taken&lt;br /&gt;
 &#039; ExtractFromComponents &amp;quot;ExtractPolygonsOp&amp;quot;, &amp;quot;world.poly[12653-12730]&amp;quot;, &amp;quot;polymsh_extracted&amp;quot;, , siPersistentOperation, siKeepGenOpInputs&lt;br /&gt;
 ExtractFromComponents &amp;quot;ExtractPolygonsOp&amp;quot;, , &amp;quot;polymsh_extracted&amp;quot;, , siPersistentOperation, siKeepGenOpInputs&lt;br /&gt;
&lt;br /&gt;
After the level has been broken down into pieces it could be save as DAE and then converted to FBX.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Baked-in furniture&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
At unknown constellation OniSplit outputs the &amp;quot;_env&amp;quot; file with furniture from level one (Syndicate Warehouse). This needs double-checking. Is a newer OniSplit or .NET/Windows 10 version to blame?&lt;br /&gt;
&lt;br /&gt;
====Sockets====&lt;br /&gt;
You can&#039;t socket static meshes. Set them to be &amp;quot;movable&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
For now each socket will need its own bool variable to keep track whether it is in use or not.&lt;br /&gt;
&lt;br /&gt;
Problem: when we use this node &amp;quot;get overlapping actors&amp;quot; then also actors stored in sockets will be counted. We would need to subtract the ones from the others. To differentiate the items we could check for a new variable &amp;quot;UsedInSocket&amp;quot;. If the number is higher than -1 we can subtract it from the overlapping items because we already have this one collected.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Powerups====&lt;br /&gt;
Tested in 4.18&lt;br /&gt;
&lt;br /&gt;
If powerups don&#039;t spam the area they should fall to the ground after use. They should be throwable and kickable to attract the attention of foes.&lt;br /&gt;
&lt;br /&gt;
Maybe there should be a weight penalty to motivate h2h combat. As less items you carry around as faster, powerful and agile you are. Reminded to Ultra saiyan vs Super saiyan?&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Done stuff&#039;&#039;&#039;&lt;br /&gt;
* All powerup &amp;quot;glowtex&amp;quot; textures has been recreated in higher resolution.&lt;br /&gt;
* Pickup &#039;&#039;&#039;materials use emissive color&#039;&#039;&#039; to be actual &amp;quot;glowtex&amp;quot;.&lt;br /&gt;
* Pickup event executes a &#039;&#039;&#039;preflight&#039;&#039;&#039; to check for valid objects. For example it will determine whether your pickup slots for hypos are all full or not. In a second step only one of the valid pickups is added to the inventory.&lt;br /&gt;
* Slots in the character skeleton will be used for further experiments. Pickups will be stored in belt and chest pockets. (Short one-hand weapons (e.g. pistols) are going to be holstered at the legs while rifles are put on the back.)&lt;br /&gt;
* Powerups in sockets are scaled down and their glowtex becomes disabled.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Possible improvements&#039;&#039;&#039;&lt;br /&gt;
* If powerups use the same names for their inner components (TV, glowtex plane, item mesh) then the code could maybe be simplified with an &amp;quot;interface blueprint&amp;quot; which take some inputs and gives them to all powerups that are bound to that interface. That would be useful when adding more items and weapons.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Glowtex functionality=====&lt;br /&gt;
In Powerup BP: Custom event with boolean input parameter&lt;br /&gt;
&lt;br /&gt;
Other nodes:&lt;br /&gt;
:Set Visibility (New Visibility) (target: glowtex Plane object)&lt;br /&gt;
:Static Mesh Component-&amp;gt; AddLocalOffset&lt;br /&gt;
:Powerup Item -&amp;gt; Add local Rotation, Set World Scale 3D&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
======Swappable Glowtex======&lt;br /&gt;
In order to indicate ammo state of weapon a dynamic material can be used.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:DynamicMaterial_GlowTex.png|right-click texture node to turn it into a parameterized node&lt;br /&gt;
Image:DynamicMaterial_TextureSwapping_GlowTex.png|code to changed texture at runtime&lt;br /&gt;
Image:DynamicMaterial_GlowTex_InGame.png|ingame result&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Hyposprays=====&lt;br /&gt;
&#039;&#039;&#039;Object creation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In this attempt the glow texture was applied to a plane that is attached to the hypo mesh. Right now the actual hypo mesh is just a placeholder made of a cuboid with green ellipses. The transparency seemed to make it darker than expected so I added some input to the material&#039;s emissive color. See gallery below.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:M_HypoGlow_docu.png|hypo material blueprint&lt;br /&gt;
Image:Hypo_Blueprint.png|hypo object blueprint&lt;br /&gt;
Image:Hypos_InGame.jpg|ingame result&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Functionality implementation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
In the following there is code that let&#039;s you pickup Hyposprays (1 + 2) and use them to regain health (3 + 4).&lt;br /&gt;
&lt;br /&gt;
Caution: This script is different from the others as the pickup key press event is located in the level blueprint. Normally key press events are found in the character blueprint. We will probably want to change that in a future version though I don&#039;t know how yet. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 21:03, 16 December 2017 (CET)&lt;br /&gt;
&lt;br /&gt;
If you add a trigger volume to your hypospray object it will act like a new collision box. This can be used to adds some tolerance to the pickup distance. Otherwise the character has to be not just really close but to actually overlap the object.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;gallery&amp;gt;&lt;br /&gt;
Image:UE4_Pickup_Hypo.png|Press key to pickup hypo (Code: &amp;lt;nowiki&amp;gt;https://1drv.ms/t/s!Asn4fV_yvODigUSQY6R4bhXJqRFi&amp;lt;/nowiki&amp;gt;, dead link)&lt;br /&gt;
Image:UE4_Add_Hypo_to_inventory.png|Adds hypo to inventory (Code: &amp;lt;nowiki&amp;gt;https://1drv.ms/t/s!Asn4fV_yvODigUFiFR2WCYIsvnl0&amp;lt;/nowiki&amp;gt;, dead link)&lt;br /&gt;
Image:UE4_Apply_Hypo.png|Press key to apply hypo (Code: &amp;lt;nowiki&amp;gt;https://1drv.ms/t/s!Asn4fV_yvODigUPgtVd9c21Szk68&amp;lt;/nowiki&amp;gt;, dead link)&lt;br /&gt;
Image:UE4_Add_Hypo_Health.png|Increases health via hypo (Code: &amp;lt;nowiki&amp;gt;https://1drv.ms/t/s!Asn4fV_yvODigUIEKdkZj6rFdo1o&amp;lt;/nowiki&amp;gt;, dead link)&lt;br /&gt;
&amp;lt;/gallery&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Youtube: &amp;lt;nowiki&amp;gt;https://youtu.be/y4sxRP-GrVQ&amp;lt;/nowiki&amp;gt; Oni UE4 Test #2 - picking up hyposprays and using them (dead link)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Todo&#039;&#039;&#039;&lt;br /&gt;
* new hypo object mesh&lt;br /&gt;
* pickup animations (kneel and take, take, &amp;quot;roll-take&amp;quot;)&lt;br /&gt;
* condition to prevent pickup with certain animations&lt;br /&gt;
* new sounds (&amp;quot;cannot pickup more&amp;quot;, &amp;quot;usage&amp;quot;)&lt;br /&gt;
* health bar interaction&lt;br /&gt;
** flashing animation&lt;br /&gt;
** start red health area with a higher health value&lt;br /&gt;
** improve code where HypoRegenerationRate adds in to avoid rounding errors&lt;br /&gt;
&lt;br /&gt;
====HUD====&lt;br /&gt;
&lt;br /&gt;
=====Health bar=====&lt;br /&gt;
Tested in 4.18&lt;br /&gt;
&lt;br /&gt;
Observation from Oni 1 vanilla health bar. If base health is 200 points...&lt;br /&gt;
&lt;br /&gt;
* remaining health is flashing at 60 points every 2s one time&lt;br /&gt;
* remaining health is flashing at 1 point every 1s two times&lt;br /&gt;
* critical health sound loop at 39 points (minimum sound volume)&lt;br /&gt;
* critical health sound loop at 1 point (max. sound volume)&lt;br /&gt;
* health drain animation from 200 to 1 health points takes 5s&lt;br /&gt;
* health gain animation speed is determined by [[XML:ONCC#.3CInventoryConstants.3E|HypoRegenerationRate in ONCC]]&lt;br /&gt;
* overpower health gain animation has an overpower sound of an approximate volume of 75% while overpower sound is played at 100% volume once overpower gain ended and drops again&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Health calculation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
An applied hypo gives you points equal to your full normal health health. At this point of time these points should be considered a &amp;quot;potential&amp;quot; because they aren&#039;t multiplied yet with hypo factors and can increase or decrease by additional healing and damage events.&lt;br /&gt;
&lt;br /&gt;
As long as you regenerate normal health you regenerate from your potential multiplied by 0.25 (Oni 1 default).&lt;br /&gt;
&lt;br /&gt;
As soon as you reach overhealth you multiply one point of potential by 1 (Oni 1 default).&lt;br /&gt;
&lt;br /&gt;
Let&#039;s say your maximum health is 1000 and with overhealth you are at 2000.&lt;br /&gt;
&lt;br /&gt;
Taking 2 hypos at health 750 will regenerate you 250 points of normal health and then - because reaching overhealth - you get another 1000 points. So taking 2 hypos at 750 health points will let you reach 2000.&lt;br /&gt;
&lt;br /&gt;
A calculation with &amp;quot;potential&amp;quot; give you the advantage to stack hypos more easily.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Color mapping&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
[[Image:DynamicHealthBarMaterial.png|300px|right|thumb|health bar material where color, shape and progress merge]]&lt;br /&gt;
[[Image:HealthBarColorZoneControl.png|300px|right|thumb|integrating a color zone on the health bar]]&lt;br /&gt;
&lt;br /&gt;
UE4&#039;s progress bar has a fixed range of 0 to 1. In order to realize overpower values (float 1.0 to 2.0) we have to scale everything down to fit into a 0 to 100 percentage range.&lt;br /&gt;
&lt;br /&gt;
If we think of the different colors as milestones on a road whereby each milestone is named red, yellow and so on then each two stones span their own area of interpolated colors. So for UE4&#039;s &amp;quot;Lerp (LineraColor)&amp;quot; we would will need several alpha ranges, always float values from 0 to 1.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Health mapping&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Health and overhealth points have different densities which results in different grow speeds on the artwork.&lt;br /&gt;
&lt;br /&gt;
To recreate a similar behavior we can let the normals health points fill the health bar with a speed of 1.5 while overpower is the sum of normal health * 1.5 plus health over 100% * 0.5. Since the health bar isn&#039;t a full circle we tweaking the second factor to about 0.44.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Animations&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
* Anywhere from 0 to 20% health the bar is flashing to indicate damage.&lt;br /&gt;
* While regenerating the health bar is slowly increasing while a transparent area indicates how much the regeneration will be. That zone is color-interpolated on current health.&lt;br /&gt;
* Taken damage is indicated by instantly dropped health while a transparent area is &#039;&#039;melting&#039;&#039; to the new health value.&lt;br /&gt;
&lt;br /&gt;
So, both - present and past/future health - use animations.&lt;br /&gt;
&lt;br /&gt;
To deal with the transparent areas it might be the easiest to add another object to the health bar. In total we have then three: a frame texture, a &amp;quot;future/past health&amp;quot; material, and a &amp;quot;present health&amp;quot; material.&lt;br /&gt;
&lt;br /&gt;
How to increase values over time? It looks like &amp;quot;timeline&amp;quot; don&#039;t have inputs for start and end time and timers don&#039;t work in character BP. Even loops are problematic: if they contain a delay node it is simply ignored. The solution seems to be a custom event. Once triggered it will increase or decrease the health value and call itself again if the certain conditions are still true. The animation seem smooth enough with a 0.1 second delay.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Health bar recreation&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
There are two options to create a mask: a computed texture (vector) or a real texture designed in a image editor.&lt;br /&gt;
&lt;br /&gt;
For color changes we would need a dynamic material in any case.&lt;br /&gt;
&lt;br /&gt;
In the following sub section there are the required steps to achieve a health display meter.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
======Texture======&lt;br /&gt;
Basically the mask (shape) of the health display meter.&lt;br /&gt;
&lt;br /&gt;
This will be used as a node inside the material.&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
======Material======&lt;br /&gt;
Create Material Blueprint, Set output node to Material Domain: User interface (!), create a constant 4 Vector, right-click to turn it into a Parameter and name it Color, connect to output node&lt;br /&gt;
&lt;br /&gt;
======Widget======&lt;br /&gt;
* Right-click in assets folder to create a new widget (User Interface &amp;gt; Widget Blueprint).&lt;br /&gt;
* Place an image into your Designer. This is going to be the health display meter.&lt;br /&gt;
* Under Appearance choose your Material.&lt;br /&gt;
&lt;br /&gt;
Turning the Material in a dynamic one and setting initial color... Create variable of type &amp;quot;Material Instance Dynamic&amp;quot;, create 2 vector variables (rgb red, rgb green, use 0 to 1 range). Then in In your widget goto Graph and add these nodes to your Construct and Custom event...&lt;br /&gt;
&lt;br /&gt;
* Construct event -&amp;gt; Get HealthImage, Get Dynamic Material, set Dynamic Material variable, Get Player Character, Cast to ThirdPersonCharacter, Target MaxHealth, Set Progress (call function)&lt;br /&gt;
&lt;br /&gt;
* Custom event -&amp;gt; Set Progress (with a float input), Get Dynamic Material, Set Vector Parameter Value (Parameter name (&amp;quot;Color&amp;quot;) from your material), add lerp(linearColor) to SVPV node, add vector color variables to lerp node (here we can add more logic to recreate [[XML:ONGS#The_health_display_meter|ONGS&#039; &amp;lt;Color&amp;gt; tags]])&lt;br /&gt;
&lt;br /&gt;
Displaying the widget to screen and creating a reference ...&lt;br /&gt;
* In your Character BP create or add these to the BeginPlay event node:&lt;br /&gt;
** Get Player Controller, Create Widget (your health bar widget), Add to Viewport, set output Create Widget to a public variable (object) (use search to find widget)&lt;br /&gt;
&lt;br /&gt;
Setting progress on the HUD... In Character PB ...&lt;br /&gt;
* event ..., get widget object variable, Set Progress (Target: var, Input: Health Percentage)&lt;br /&gt;
&lt;br /&gt;
[...]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Tables and structures====&lt;br /&gt;
* Data tables are created based on previously defined structures. So these two file types are best seen as a tandem to get things done.&lt;br /&gt;
* Structures can be made to provide default values so that new tables will have those after creation. This might be suitable for new ONCC.&lt;br /&gt;
* Structures can be nested.&lt;br /&gt;
** Wtih version 4.25, the editor and engine might need a few restarts before an new structure is usable by an older one.&lt;br /&gt;
** With version 4.26, this bug doesn&#039;t seem to appear anymore.&lt;br /&gt;
* &#039;&#039;&#039;Tables can be exported to csv and json&#039;&#039;&#039; whereby json would be the more human readable form for complex, nested structures.&lt;br /&gt;
** Exporting and examining tables help you understand how to programmatically create such structured tables.&lt;br /&gt;
* Tables can be imported by using the import button or drag and drop.&lt;br /&gt;
* Tables can be reimported by rightclicking then Reimport (remembers file location) or Reimport With New File.&lt;br /&gt;
** Reimports (converting raw data files to assets) can be done with python and probably other methods.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Widgets====&lt;br /&gt;
[[Image:ue4_open_close_a_menu_widget.jpg|400px|right|thumb|For testing purposes H key is used to show the pause menu. F1 will let the Unreal Editor switch wireframe mode.]]&lt;br /&gt;
&amp;lt;!--obsolete with IsValid node [[Image:ue4_create_widget_ref_after_BeginPlay.jpg|400px|right|thumb|Creating a menu reference at BeginPlay. Reminder: &amp;quot;Cast To ...&amp;quot; node is used to get variables from another blueprint.]]--&amp;gt;&lt;br /&gt;
Any key can be used to open a menu. But when the game gets paused too then pressing the same key again cannot close the menu.&lt;br /&gt;
&lt;br /&gt;
You need to set the key&#039;s property &amp;quot;Execute when Paused&amp;quot; to true.&lt;br /&gt;
&lt;br /&gt;
Also, in theory a &amp;quot;Flipflop&amp;quot; node would work but has proven unreliable. Instead, a reference to the menu instead, an &amp;quot;Is Visible&amp;quot; and a &amp;quot;Branch&amp;quot; (if) node will do the trick. Additionally, an Is Valid node is placed to catch an error when the reference is used for the very first time.&lt;br /&gt;
&lt;br /&gt;
We can capture the mouse within the game application if we place an &amp;quot;Set Input Mode Game And UI&amp;quot; node with &amp;quot;Lock Always&amp;quot; option.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Button and section images=====&lt;br /&gt;
[[Image:ue4PauseMenuButtonsDisabled.jpg|400px|right|thumb]]&lt;br /&gt;
&#039;&#039;&#039;Styles&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Buttons have 4 styles: Normal, Hovered, Pressed, Disabled.&lt;br /&gt;
&lt;br /&gt;
For now lets use only 2 textures: one for Normal, one for Hovered and Pressed.&lt;br /&gt;
&lt;br /&gt;
The Disabled style just uses a tint color on the Normal texture with an RGBA of 000000FF.&lt;br /&gt;
&lt;br /&gt;
Buttons can be disabled via Set Is Enabled (Target is Widget). You can get button references from the Graph window.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:ue4PauseMenuButtonsDisabledInGame.jpg|400px|right|thumb]]&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Scaling&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
When you place a Grid Panel into the widget you can define columns and rows. Buttons and other elements can adapt to their given space.&lt;br /&gt;
&lt;br /&gt;
You probably want to set button texture property Draw As to Image.&lt;br /&gt;
&lt;br /&gt;
For standalone images Draw As Border can be used if the image is big enough. This will work like Oni&#039;s [[XML:PSpc]] where only specific sections of the image are scaled.&lt;br /&gt;
&lt;br /&gt;
For extreme different resolutions we might need to bind different textures so Draw As Border won&#039;t produce empty spaces in the center.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Text pages=====&lt;br /&gt;
For now I see 3 major flaws with text items:&lt;br /&gt;
* no richtext support (you are limited to one font color, unless you use a C++ plugin)&lt;br /&gt;
* text warping is not accurately working&lt;br /&gt;
* space for an image has to be planned in advance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Text vs text box&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Because of the multiline feature I rushed to use a text box for static text.&lt;br /&gt;
&lt;br /&gt;
Reminder: While &amp;quot;Text&amp;quot; is for static text, &amp;quot;Text box&amp;quot; is for letting the user type his own text.&lt;br /&gt;
&lt;br /&gt;
It turns out the font color of &amp;quot;Text box&amp;quot; cannot be changed at runtime and a simple &amp;quot;Text&amp;quot; object does also has the multi-line feature.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Dynamic text content&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
We can either use&lt;br /&gt;
: A) the &amp;quot;Set Text&amp;quot; node with a reference to the object or&lt;br /&gt;
: B) bind the object to a text variable or function, making the code a bit shorter&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
// ------------------------------------ move this to Pause Menu section at a later time&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
When you insert text you have to compile (F7) before you see the result.&lt;br /&gt;
&lt;br /&gt;
Text pages can be grouped in the Designer with a Widget Switcher. However, each text should have an Overlay as parent so they aren&#039;t all shown simultaneously.&lt;br /&gt;
&lt;br /&gt;
 -- WidgetSwitcher (master section, e.g. for &amp;quot;Main content&amp;quot;)&lt;br /&gt;
  +-- WidgetSwitcher (section, e.g. for powerup items)&lt;br /&gt;
    +-- Overlay &lt;br /&gt;
      +-- Text (e.g. hypospray text)&lt;br /&gt;
      +-- Image (e.g. hypospray icon)&lt;br /&gt;
 -- WidgetSwitcher (master section, e.g. for &amp;quot;hint text&amp;quot;)&lt;br /&gt;
  +-- WidgetSwitcher (section, e.g. for powerup item hints)&lt;br /&gt;
    +-- Overlay&lt;br /&gt;
      +-- Text (e.g. hypospray hint text)&lt;br /&gt;
&lt;br /&gt;
Count direct children of &#039;&#039;&#039;W&#039;&#039;&#039;idget&#039;&#039;&#039;S&#039;&#039;&#039;witcher by using the its reference connected to a Get Num Widget node.&lt;br /&gt;
&lt;br /&gt;
It&#039;s possibly a good idea to count all sections during the construction event and save the results in an array via Make Array node.&lt;br /&gt;
&lt;br /&gt;
In theory we could create many copies of Overlay nodes. But doing so and future update would mean more work than necessary. Instead a single overlay with its children can be do the job by assigning data to them from a &#039;&#039;&#039;data table&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
Variables that track active pages are destroyed as the widget is closed. If we want to resume reading after reopening a menu the variable values should have been copied to somewhere else. If we put them into character variable then we can easily restore those values even after a level loading.&lt;br /&gt;
&lt;br /&gt;
// ---------------------------------------------------------------------------------------------------------------------&lt;br /&gt;
&lt;br /&gt;
=====Bulk import=====&lt;br /&gt;
HTF do I? Import a CSV File into a Data Table ( UE4 )&lt;br /&gt;
* https://www.youtube.com/watch?v=nMy6H1o1zO0&lt;br /&gt;
&lt;br /&gt;
Summary:&lt;br /&gt;
* if you need a free spreadsheet program [https://www.libreoffice.org/download/ you can download Calc, it is part of LibreOffice], or use Google Sheets&lt;br /&gt;
* &#039;&#039;&#039;create a csv&#039;&#039;&#039; file with the first cell of first column (A1) being empty and the other lower cells (A2, A3, ...) to be unique in name&lt;br /&gt;
* Calc: save file, check &amp;quot;edit filter settings&amp;quot;, save csv with comma as field delimiter&lt;br /&gt;
* in ue4 goto &amp;quot;Add New&amp;quot; &amp;gt; Blueprints &amp;gt; &#039;&#039;&#039;Structure&#039;&#039;&#039;&lt;br /&gt;
* open that &#039;&#039;Struct&#039;&#039; and add for all columns (except for A) a variable, assign a type for each&lt;br /&gt;
* be sure Struct&#039;s variables have the same name as the csv column headers&lt;br /&gt;
* import the csv and assign the Struc to it&lt;br /&gt;
* data tabes can be updated by reimporting the csv&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:DPgeDataTable.png|400px|right|thumb|CSV file for the data table to import. &#039;&#039;LevelNumber&#039;&#039; makes it possible to &#039;&#039;bookmark&#039;&#039; pages for levels.]]&lt;br /&gt;
&lt;br /&gt;
Example:&lt;br /&gt;
&lt;br /&gt;
for now diary (DPge) will have this structure&lt;br /&gt;
* levelNumber = Integer&lt;br /&gt;
* pageNumber = Integer&lt;br /&gt;
* isLearnedMove = Integer&lt;br /&gt;
* caption = String&lt;br /&gt;
* image = Texture 2D&lt;br /&gt;
* diaryText = String&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Stuff that might be useful later...&lt;br /&gt;
* https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/Utilities/Text/FindStringTableIDandKeyfromText?application_version=4.27&lt;br /&gt;
* https://dev.epicgames.com/documentation/en-us/unreal-engine/BlueprintAPI/Utilities/Text/MakeTextfromStringTable_Advanced/?application_version=4.27&lt;br /&gt;
* https://forums.unrealengine.com/t/how-to-localise-with-string-tables-in-blueprints-only-project/395329&lt;br /&gt;
&lt;br /&gt;
Importing data tables is cool but unfortunately I haven&#039;t see a way to create text and image fields programmatically to the editor. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 22:52, 11 February 2018 (CET)&lt;br /&gt;
&lt;br /&gt;
Then again maybe this will do: https://www.youtube.com/watch?v=e8MPDnVX1h4&lt;br /&gt;
&lt;br /&gt;
If not I will try to just use one text field for diaryText, etc.&lt;br /&gt;
&lt;br /&gt;
If textures aren&#039;t found in the data table, open them once from the asset browser. It seems there&#039;s a bug which prevents new textures from being registered properly until they were accessed for the first time.&lt;br /&gt;
&lt;br /&gt;
=====Pause menu=====&lt;br /&gt;
======Objective pages======&lt;br /&gt;
Objective pages are level specific.&lt;br /&gt;
&lt;br /&gt;
Optional small image.&lt;br /&gt;
&lt;br /&gt;
Main and hint section holds green text (todo) and red text (done).&lt;br /&gt;
&lt;br /&gt;
======Item pages======&lt;br /&gt;
Main section: Small image plus orange text.&lt;br /&gt;
* Image&lt;br /&gt;
* Name .............. Function&lt;br /&gt;
* Text&lt;br /&gt;
&lt;br /&gt;
Hint section: orange text.&lt;br /&gt;
&lt;br /&gt;
======Weapon pages======&lt;br /&gt;
Main section: Small image plus orange text.&lt;br /&gt;
* Image&lt;br /&gt;
* Attribute .......... value&lt;br /&gt;
* Text&lt;br /&gt;
&lt;br /&gt;
Hint section: orange text.&lt;br /&gt;
&lt;br /&gt;
======Diary page======&lt;br /&gt;
Diary pages are global -- in a manner that the latest date would get you all other diary pages as well.&lt;br /&gt;
&lt;br /&gt;
Sub types:&lt;br /&gt;
* &amp;quot;New move&amp;quot; page: main window for orange caption and a big image. Explanation in the hint section, white text.&lt;br /&gt;
* &amp;quot;Regular diary&amp;quot; page: main section only, white text.&lt;br /&gt;
&lt;br /&gt;
======Help page======&lt;br /&gt;
Green text for main section and explanation. Hint section not shown.&lt;br /&gt;
&amp;quot;Controls&amp;quot;&lt;br /&gt;
Action .............. Mouse/Key&lt;br /&gt;
&lt;br /&gt;
And explanation overlaying the UI.&lt;br /&gt;
&lt;br /&gt;
====Animations====&lt;br /&gt;
=====Key binding=====&lt;br /&gt;
Every key can be used in blueprints. In order to allow key remapping by the player keys should be mapped in the setting instead of using detecting their real key stroke.&lt;br /&gt;
&lt;br /&gt;
Goto Project Settings &amp;gt; Engine &amp;gt; Input.&lt;br /&gt;
&lt;br /&gt;
Name your action or axis, then bind a key to it.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=====Interaction=====&lt;br /&gt;
Requirements: typically a variable in the Character BP. For example you can set &amp;quot;IsPickingUp?&amp;quot; to true with a &amp;quot;Q&amp;quot; button &amp;quot;Pressed&amp;quot; action and setting it to false with the &amp;quot;Released&amp;quot; action.&lt;br /&gt;
&lt;br /&gt;
Then in Character Animation BP &amp;gt; &#039;&#039;&#039;EventGraph&#039;&#039;&#039; there should be a &amp;quot;Event Blueprint Update Animation&amp;quot;. There you retrieve &amp;quot;IsPickingUp?&amp;quot; and save it in a local variable. You can retrieve variables from other blueprints by getting the object holding them, passing it to a cast node, pulling a wire out of the right side and search for it in the popping up context menu.&lt;br /&gt;
&lt;br /&gt;
Then in Character Animation BP &amp;gt; Anim Graph &amp;gt; Default State Machine you pull out from Idle/Run a wire and create a new state.&lt;br /&gt;
&lt;br /&gt;
In the transition rule for &#039;&#039;&#039;Idle to Pickup&#039;&#039;&#039; create two nodes: The local variable IsPickingUp and the &amp;quot;Result - Can Enter Transition&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
In the transition rule for &#039;&#039;&#039;Pickup to Idle&#039;&#039;&#039; create three nodes: The local variable IsPickingUp, a boolean &amp;quot;NOT&amp;quot; and the &amp;quot;Result - Can Enter Transition&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Now the character plays the animation as long as you press the key. If you want to play the full animation just by pressing the button firmly you have to use a slightly different setup. Use these three nodes instead: &#039;&#039;&#039;&amp;quot;Time Remaining (ratio)&amp;quot;&#039;&#039;&#039;(&#039;&#039;Animation name&#039;&#039;), float &amp;gt; float node, Result node.&lt;br /&gt;
&lt;br /&gt;
The float 0 to 1 means how much of the animation will play before it is aborted if the key wasn&#039;t longer pressed. In this case, the lower check float the more of the animation is played. Use a number greater than 0 like 0.001&lt;br /&gt;
&lt;br /&gt;
To disable other input you have to create another variable in the Character BP with is also retrieved in the Character Animation BP by casting.&lt;br /&gt;
&lt;br /&gt;
In this example it was named &amp;quot;Movement Allowed&amp;quot;. The event that sets and resets the variable was created in the Animation.&lt;br /&gt;
&lt;br /&gt;
Every animation can have Notifies events. Right-click notifies track to add a new custom notify.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Normal maps====&lt;br /&gt;
Can be created in Photoshop (3D) and Blender.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====BSL equivalents====&lt;br /&gt;
=====print=====&lt;br /&gt;
&lt;br /&gt;
Level Blueprint, right-click to search for&lt;br /&gt;
&amp;quot;Keyboard Event V&amp;quot;, add that node, drag the &amp;quot;Pressed&amp;quot; slot to the backgound to create another node: &amp;quot;Print String&amp;quot;. Compile. Close.&lt;br /&gt;
&lt;br /&gt;
Play Level, hit &amp;quot;V&amp;quot;. &amp;quot;Hello&amp;quot; appears on the screen.&lt;br /&gt;
&lt;br /&gt;
Use you imagination: This could be used to toggle visibility of developer stuff.&lt;br /&gt;
In connection with a HUD you could create the equivalent of &amp;quot;chr_debug_characters = 1&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
====Cooking the game====&lt;br /&gt;
On Windows, run the game editor with administration rights.&lt;br /&gt;
&lt;br /&gt;
Then go: File &amp;gt; Package Project &amp;gt; Windows &amp;gt; Windows (64-bit).&lt;br /&gt;
&lt;br /&gt;
Choose an output folder.&lt;br /&gt;
&lt;br /&gt;
You can now play the game.&lt;br /&gt;
&lt;br /&gt;
:https://forums.unrealengine.com/t/how-do-i-create-a-exe-of-my-game/282120&lt;br /&gt;
&lt;br /&gt;
====Exit the game====&lt;br /&gt;
Create two nodes in level blueprints: &amp;quot;input keyboard escape&amp;quot; and &amp;quot;quit game&amp;quot;. Connect the execution slots.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;!--===Videos===&lt;br /&gt;
Those videos are merely video proofs that a certain feature can be made by us with this engine. Not more, not less.&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/RZSeUP-cCVA Oni UE4 experiment 1 - Main Menu, HUD, Fall damage]&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/y4sxRP-GrVQ Oni UE4 experiment 2 - picking up hyposprays and using them]&lt;br /&gt;
&lt;br /&gt;
[https://youtu.be/-AxaiojcAQU Oni UE4 experiment 3 - optional glowtex, animation binding, character sockets]&lt;br /&gt;
:;Comment&lt;br /&gt;
:Glowtex can be disabled if we need to. Though I think the majority of the modders wants a non-visible &amp;quot;hammerspace&amp;quot; inventroy.&lt;br /&gt;
:The pickup animation from &amp;quot;Character Interaction&amp;quot; is too slow for Oni&#039;s fast pace. Also the animation needs tweaking so that it better interpolates to the idle anim.--&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Oni 2]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:Main_Page/Archive1&amp;diff=47086</id>
		<title>Talk:Main Page/Archive1</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:Main_Page/Archive1&amp;diff=47086"/>
		<updated>2026-04-13T15:13:28Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: link fix&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;__TOC__&lt;br /&gt;
==Diversification of Names==&lt;br /&gt;
The list under Names includes varying entities. The Imago suggests splitting into: Characters, Groups, and Objects, allowing Added Value a separate listing. So proposes the Imago. [[User:Imago|Imago]] 04:31, 29 July 2008 (CEST)&lt;br /&gt;
:I liked your idea, and have implemented it with a couple changes: the Names page wasn&#039;t worth breaking up into even smaller pages for Characters, Groups, and Objects, and we wouldn&#039;t have multiple links on the Main page all going to one other page, so I simply changed the wording of the link on the Main page to be more descriptive.&lt;br /&gt;
:I did add a link to Added value, which indeed, should have been there all along. I&#039;m just not sure what to do with the Trivia. Does that belong in Added value? I wonder what geyser&#039;s thoughts on that are. Was the [[Trivia]] page always going to be its own thing? Is &amp;quot;added value&amp;quot; supposed to refer only to further thoughts on Oni, which would rule out the Trivia page? Or should Trivia just be rolled into the other pages? I think at least some of it is totally redundant. --[[User:Iritscen|Iritscen]] 18:32, 29 July 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Standerds==&lt;br /&gt;
:Mayhap we should set some standerds for article creation/modification. For one, NO m-rated language.[[User:The Deadly Brain|The Deadly Brain]] 19:18, 25 May 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
:I beg to disagree. Clean language is not an option.&lt;br /&gt;
:The best we can do is blank out certain characters.&lt;br /&gt;
:So I hope you&#039;re all right with s##t and f##k etc.&lt;br /&gt;
:Peace&lt;br /&gt;
::[[User:Geyser|geyser]] 22:16, 25 May 2007 (CEST)&lt;br /&gt;
:In any case, such a rule would have to be motivated.&lt;br /&gt;
:Are &#039;&#039;you&#039;&#039; offended, or do you want to protect others?&lt;br /&gt;
::[[User:Geyser|geyser]] 22:16, 25 May 2007 (CEST)&lt;br /&gt;
:BTW, there &#039;&#039;are&#039;&#039; stand&#039;&#039;&#039;a&#039;&#039;&#039;rds in terms of spelling ^^&lt;br /&gt;
::[[User:Geyser|geyser]] 22:16, 25 May 2007 (CEST)&lt;br /&gt;
:I know for a fact children younger then ten visit this site.&lt;br /&gt;
::[[User:The Deadly Brain|The Deadly Brain]] 23:22, 25 May 2007 (CEST)&lt;br /&gt;
:#Do you mean from {{OCF}}? (we&#039;re not indexed on Google yet)&lt;br /&gt;
:#All clear. But it&#039;s as I said. &amp;quot;Bleeping&amp;quot; at most.&lt;br /&gt;
:You can be the bleeper-in-chief if you want ^^&lt;br /&gt;
::[[User:Geyser|geyser]] 00:59, 26 May 2007 (CEST)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
&lt;br /&gt;
==Expansion==&lt;br /&gt;
it could use a bit of enlarging... and detailing... this site ain&#039;t a direct-copy of the game (even though it might seem so ;P), so... :)&lt;br /&gt;
[[User:EgonFreeman|EgonFreeman]] 1:33, 9 Jun 2006 (CEST)&lt;br /&gt;
:Well, feel free to contribute... that&#039;s how it works. All the detailing and enlarging is done by me ATM, but it&#039;s not supposed to stay that way...&lt;br /&gt;
:I know there are things like chapter summaries and character profiles missing, but... there are other priorities, including Oni-related ones :)&lt;br /&gt;
:I may be trimming the Main Page soon (it&#039;s a bit confusing at the moment). More images, less text. Links to namespaces and such.&lt;br /&gt;
:[[User:Geyser|geyser]] 02:30, 14 Jun 2006 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Proposal for New Main Page ([[User:Iritscen/MainPageProposal]])==&lt;br /&gt;
:Sorry, geyser, I should have discussed it first, but I thought, it&#039;s better to show than to tell, and if you didn&#039;t like it, you could revert... also, I copied because I didn&#039;t want to make you move things back if you wanted to revert (and because some things were getting moved to separate pages, not just moved together)...&lt;br /&gt;
:anyway, it sounds like you prefer the main items to be the only items on the front page, and each links to its own page, right?  &amp;quot;Making of&amp;quot;, &amp;quot;Basic&amp;quot;, etc. are the only level that shows here.  Is that right?&lt;br /&gt;
::[[User:Iritscen|Iritscen]] 17:27, 16 January 2008 (CET)&lt;br /&gt;
#You could totally have &amp;quot;shown&amp;quot; here in the talk page, or (better) in your user namespace, with only a link to that new page design here, like: [[User:Iritscen/Main Page]]&lt;br /&gt;
#That&#039;s right. The main page should be a &amp;quot;portal to portals&amp;quot; with most of the details moved to those other portals. What we have now is something resembling a &amp;quot;site map&amp;quot;.&lt;br /&gt;
:We&#039;ll see about reverting. The wiki is important, but I will sorta have to focus on modding this week, so I&#039;m not sure I&#039;ll have the right inspiration to help you guys.&lt;br /&gt;
:As for the splitting stuff off to separate pages, please let&#039;s not have too much of that. Mini-pages actually make the wiki harder to browse and more annoying to read.&lt;br /&gt;
::[[User:Geyser|geyser]] 17:40, 16 January 2008 (CET)&lt;br /&gt;
Okay, what if the main page looks as it does now (but maybe a nicer arrangement of the titles), and then each of those links to some fairly large pages -- no mini-pages. If you don&#039;t like that, I will revert to original Main Page and go do something with the Images section... future changes will indeed be previewed in my namespace. Sorry, I forgot my wiki etiquette. --[[User:Iritscen|Iritscen]] 17:47, 16 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
@Iritscen: That sucks. Would you please change that back and use a playground first as geyser had suggested it above? [[User:Ssg|Ssg]] 18:21, 16 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
:Well, since you asked nicely, sure, I&#039;ll do that. --[[User:Iritscen|Iritscen]] 18:22, 16 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
Thank you. (Wow, now that was really a fast response. :-) I&#039;ve nothing against a new main page, but it&#039;s not a good choice to replace a full working site with an &amp;quot;under construction&amp;quot; one. [[User:Ssg|Ssg]] 18:38, 16 January 2008 (CET)&lt;br /&gt;
:You&#039;re right, I was expecting a quick reply from geyser, but it seems he&#039;s moved on to something else. When he responded I was going to start fixing things up. You just happened to come along in the meantime. As he&#039;s pointed out, I should be doing things like that in my namespace; see User:Iritscen/MainPageProposal from now on.&lt;br /&gt;
:Anyway, we should still get a sense of what kind of page people want.  A very simple one with groups like &amp;quot;Making Of&amp;quot;, &amp;quot;Basic Info&amp;quot;, etc., or can we have subgroups like in the Proposal?  --[[User:Iritscen|Iritscen]] 18:55, 16 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
Oh... I&#039;m sorry. Didn&#039;t know that it was already in work. However, your new main page looks good. IMO you can replace the main page.&lt;br /&gt;
&lt;br /&gt;
One suggestion: Add an equals sign to every group and subgroup. F.e.: &amp;lt;nowiki&amp;gt;=Help= to ==Help==&amp;lt;/nowiki&amp;gt;. IMO it looks better, because the page has not so much dividing lines. [[User:Ssg|Ssg]] 11:20, 17 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
:Okay, I did that, and agree it looks better. But Ssg, geyser does not agree that the page should be so long, which is why I want to arrive at a consensus before replacing what&#039;s on the Main Page. I think the page can be that long, but maybe he thinks it&#039;s unwieldy or intimidating.&lt;br /&gt;
&lt;br /&gt;
:Also, I am trying to add this code at the top of the page:&lt;br /&gt;
&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;&amp;lt;center&amp;gt;&amp;lt;div style=&amp;quot;font-size=162%;&amp;quot;&amp;gt;Welcome to OniGalore, the wiki for all things Oni.&amp;lt;/div&amp;gt;&lt;br /&gt;
:[[Special:Statistics|{{NUMBEROFARTICLES}}]] articles in total&amp;lt;/center&amp;gt;&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
:Two problems: 1. It does not change the font-size! and 2. The article count looks wrong. Look at the statistics page. There&#039;s a bajillion pages and it says only 90 are probably &amp;quot;real content&amp;quot;. Is that true? --[[User:Iritscen|Iritscen]] 16:14, 17 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
Replace the equals sign between &amp;quot;font-size&amp;quot; and &amp;quot;162%&amp;quot; with a colon:&lt;br /&gt;
&lt;br /&gt;
&amp;lt;center&amp;gt;&amp;lt;div style=&amp;quot;font-size:162%;&amp;quot;&amp;gt;Welcome to OniGalore, the wiki for all things Oni.&amp;lt;/div&amp;gt;&lt;br /&gt;
:[[Special:Statistics|{{NUMBEROFARTICLES}}]] articles in total&amp;lt;/center&amp;gt;&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;90 articles&amp;quot; is right, I guess. IMO Wiki takes a namepsace as one article. So f.e. the whole OBD sites are only one article. Well, that&#039;s what I think. I&#039;ve no idea, if that&#039;s right or not.&lt;br /&gt;
&lt;br /&gt;
I like the long main page, because it contains all information I need. I don&#039;t have to search for something and I don&#039;t have to guess where something could be located. Nevertheless, to shorten it I would move the external links to a seperate site, because that&#039;s a topic that can run up to a lot of entries. The link to the &amp;quot;External Links&amp;quot; can be placed in the &amp;quot;Further Content&amp;quot; section. [[User:Ssg|Ssg]] 18:57, 17 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
:THANK YOU. That was driving me crazy; I think our wiki&#039;s syntax is a little different from Wikipedia, or else I&#039;m just confused. But the tags work now, and that&#039;s what matters. I agree with your input on the External Links (it&#039;s not really appropriate to have external links on a wiki&#039;s front page, now that I think about it), and am adjusting accordingly. --[[User:Iritscen|Iritscen]] 19:45, 17 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
::It is probably because wikipedia is updated :P...OniWiki is ollllddd [[User:Gumby|Gumby]]&lt;br /&gt;
&lt;br /&gt;
==Vote for New Main Page==&lt;br /&gt;
Please add your opinion below.  All in favor of the page at User:Iritscen/MainPageProposal write &#039;&#039;&#039;For&#039;&#039;&#039; and optionally give a comment.  Otherwise write &#039;&#039;&#039;Against&#039;&#039;&#039; and please explain why.  Remember to sign!  We need to get this matter settled so I can move on to other things on the wiki and stop glancing at the talk page looking for changes.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For&#039;&#039;&#039;.  But I &#039;&#039;am&#039;&#039; a biased party :-3 --[[User:Iritscen|Iritscen]] 16:15, 28 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For&#039;&#039;&#039;.  The new page is hawt [[User:Gumby|Gumby]] 08:42, 30 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For&#039;&#039;&#039;.  I like it :) [[User:Tyr|Tyr]] 16:57, 30 January 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Err&#039;&#039;&#039;.  How is it different from the old one? [[User:Geyser|geyser]] 16:26, 31 January 2008 (CET)&lt;br /&gt;
::Stuff got moved around, and a new intro, methinks&lt;br /&gt;
::&amp;lt;nowiki&amp;gt;http://wiki.oni2.net/w/index.php?title=User%3AIritscen%2FMainPageProposal&amp;amp;diff=7480&amp;amp;oldid=7479&amp;lt;/nowiki&amp;gt; if it helps :P [[User:Gumby|Gumby]] 20:03, 1 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;For&#039;&#039;&#039;. Maybe we should move the &amp;quot;help&amp;quot; section to the 2nd or 4th position, so that the &amp;quot;basic content&amp;quot; is followed directly by the &amp;quot;further content&amp;quot;. That makes more sense, IMO. [[User:Ssg|Ssg]] 14:37, 2 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
;Kkk.&lt;br /&gt;
:K guys, looks like long silences attract spam. What do you think about a 3-column layout such as [[User:Geyser/Main|THIS]]?&lt;br /&gt;
:Of course, you could add items to every list, but I&#039;d rather keep them short and redirecting elsewhere.&lt;br /&gt;
:If I don&#039;t have a reply by the end of the weekend, I&#039;ll make [[User:Geyser/Main|this]] the new main page, fa fa fa fa fa! ^_^&lt;br /&gt;
:The old one (or maybe Iritscen&#039;s revisited version) will be moved to &amp;quot;Main Page/Site map&amp;quot; or something.&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Mmh&#039;&#039;&#039;... not bad either. If we use this, you should add a &amp;quot;valign=top&amp;quot; so that the entries of the last row are always on top. [[User:Ssg|Ssg]] 19:07, 2 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
;Hmm...&lt;br /&gt;
:Added the valign thing. Needless to say, you&#039;re welcome to fancify the colors, reshuffle the lists etc... at any time.&lt;br /&gt;
:That page also relies on 4 pages that don&#039;t exist yet: &amp;quot;ONi&amp;quot;, &amp;quot;ONi for fans&amp;quot;, &amp;quot;ONi for players&amp;quot; and &amp;quot;ONi for modders&amp;quot;...&lt;br /&gt;
::[[User:Geyser|geyser]] 00:32, 3 February 2008 (CET)&lt;br /&gt;
;Oh...&lt;br /&gt;
:Oh indeed. As for that spam we&#039;re getting, it&#039;s not clear whom we owe this new source of comfort.&lt;br /&gt;
:We were never indexed on Google, so it must be a problem of linking here from one place too many.&lt;br /&gt;
:Did someone add a link to the wiki from a site hosted on a public server, or something like that?&lt;br /&gt;
:Interestingly, the IPs are very specific, with a single set of spam per IP. That&#039;s a &amp;quot;good &amp;quot; thing.&lt;br /&gt;
:If we keep getting more of that, we will probably restrict editing access to registered users.&lt;br /&gt;
::[[User:Geyser|geyser]] 00:32, 3 February 2008 (CET)&lt;br /&gt;
:OK, who do we know in Odessa, Ukraine? ^_^&lt;br /&gt;
&lt;br /&gt;
I&#039;ve added a lot of &amp;quot;Links&amp;quot;. [[User:Ssg|Ssg]] 01:08, 3 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
Why not to [[OniGalore:Community_Portal]]? [[User:Geyser|geyser]] 01:44, 3 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
Oh... forgot about this site. (There is no link to it on the main page.) Sorry. Nonetheless, I prefer the name &amp;quot;links&amp;quot;. So I would suggest to close the &amp;quot;community_portal&amp;quot; page and use the &amp;quot;links&amp;quot; page.&lt;br /&gt;
*To your main page proposal: Why are the entries of the 1st and 2nd rows links? (&amp;quot;ONi&amp;quot;, &amp;quot;ONi for fans&amp;quot;, &amp;quot;ONi for players&amp;quot; and &amp;quot;ONi for modders&amp;quot;) Do we need these? What&#039;s your idea for the content of these?&lt;br /&gt;
*To the colouring offer: Believe it or not, but the colour you&#039;ve chosen looks good to me. :-) [[User:Ssg|Ssg]] 15:02, 3 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
;Crap.&lt;br /&gt;
:It&#039;s getting flooded in here. Will definitely clean this up after setting up the new Main Page layout.&lt;br /&gt;
:There are nice links to &amp;quot;Community portal&amp;quot; and &amp;quot;Current events&amp;quot; in the wiki&#039;s main navigation box...&lt;br /&gt;
:These pages are there by default, which is why I&#039;m using them rather than pages called &amp;quot;Links&amp;quot; etc.&lt;br /&gt;
:So, closing [[OniGalore:Community_Portal]] is not an option, but we can make &amp;quot;Links&amp;quot; redirect there.&lt;br /&gt;
:I strongly object to an &amp;quot;exhaustive&amp;quot; collection of links (the &amp;quot;links to programs&amp;quot;, for example)...&lt;br /&gt;
:Such lists are useless to newcomers, and only serve as bookmarks to people who know where to look.&lt;br /&gt;
:If a program is worth linking to, develop on it, either on its own page, or in &amp;quot;Programs&amp;quot; or such.&lt;br /&gt;
*&amp;quot;ONi&amp;quot; and the other three are supposed to be portals in article form (with sentences and lists).&lt;br /&gt;
:They would describe the main fields of interest and provide links to more detailed &amp;quot;articles&amp;quot;.&lt;br /&gt;
:Simply put, they are expanded, verbose versions of the mini-lists in the Main Page portal.&lt;br /&gt;
*Heh, I&#039;m just using [[Template:Table]], so the color is yours. I thought of livening it up.&lt;br /&gt;
:(you know, with different colors for the columns, a background picture, some mini-thumbs)&lt;br /&gt;
::[[User:Geyser|geyser]] 18:10, 3 February 2008 (CET)&lt;br /&gt;
----&lt;br /&gt;
;To a public server?&lt;br /&gt;
:Could be almost every fan site which isn&#039;t on oni2.net. (Links which I set to the wiki: a more or less dead  webspace*, a private wiki*, a privat forum**). Or do you mean link from a public server? Maybe it works that way too. (I&#039;ve a link on animexx.onlinewelten.com** to my oni2.net webspace which is linked to the OG.)&lt;br /&gt;
:&amp;lt;nowiki&amp;gt;*&amp;lt;/nowiki&amp;gt; - not indexed by google&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;**&amp;lt;/nowiki&amp;gt; - indexed by google, but restricted area excluded for logged in members&lt;br /&gt;
:However, it seems like a silly bot which attacks only the &amp;quot;Talk:Main Page&amp;quot;. So why not set it under protection?&lt;br /&gt;
::[[User:Paradox-01|Paradox-01]] 14:46, 3 February 2008 (CET)&lt;br /&gt;
:Yes, I meant &amp;quot;from&amp;quot; (sorry about the &amp;quot;typo&amp;quot;).&lt;br /&gt;
:I enabled protection for this page.&lt;br /&gt;
:You have to log in to edit it now.&lt;br /&gt;
::[[User:Geyser|geyser]] 22:58, 3 February 2008 (CET)&lt;br /&gt;
;For/against...&lt;br /&gt;
:Well, I think both pages are better than the old. But I trend to geyser&#039;s because it&#039;s more compact.&lt;br /&gt;
::[[User:Paradox-01|Paradox-01]] 14:46, 3 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Vote Canceled===&lt;br /&gt;
:At the risk of sounding bitchy... you guys really got off track here. You&#039;re talking about spam (where?), and portals, and forgetting to sign so I have no idea who&#039;s saying what. Now geyser has introduced a new main page in the middle of the vote, so the vote has been totally derailed. This means everyone&#039;s vote is now obsolete, because it may or may not have been made after seeing geyser&#039;s new page. *sigh* If we&#039;re going to try this democratic thing properly, we need everyone to please vote again in the next section. It&#039;s not my fault. --[[User:Iritscen|Iritscen]] 18:44, 4 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
:I&#039;m sorry I spoiled your vote (perhaps intentionally: I&#039;m a dictator after all, albeit an enlightened one). Note, however, that every single person either signed or logged in.&lt;br /&gt;
:You could thus always get an idea of who&#039;s talking, with a quick look at the history. BTW, the recent spam would also appear there, as it was plaguing this very page.&lt;br /&gt;
:You shouldn&#039;t overestimate the democratic aspects of wikis. Just because Wikipedia does things a certain way doesn&#039;t mean we should mimic them: not at all...&lt;br /&gt;
:All those encyclopedic standards, for example, are completely irrelevant to a project wiki, which should just be decently informative to its supposed visitors, period.&lt;br /&gt;
:I also think it&#039;s quite appropriate not to enforce scholarly objectivity in the articles. As long as &amp;quot;personal essays&amp;quot; and occasional wacky stuff do their job, let them be.&lt;br /&gt;
:Bring in organization if you like, but spare us the tedious bits. In other words: take the &amp;quot;fun&amp;quot; out of &amp;quot;functionality&amp;quot;, and I might buy myself some extra guts, my [[friend]] ^_^&lt;br /&gt;
::[[User:Geyser|geyser]] 23:09, 4 February 2008 (CET)&amp;lt;br&amp;gt;&lt;br /&gt;
::Perhaps you noticed my bringing in a template, huh? :-) Don&#039;t worry, I am not going to be a wiki-Nazi who insists on WP-style writing everywhere. I am all for some whimsicality in this wiki. But at the start, it seems to me that the wiki was basically your baby, and while I don&#039;t want to take it away from you (not that I could, Mr. Admin!), if we don&#039;t open it up for others to contribute, it can&#039;t represent the community as a whole. But if an article is written in 1st person, then it naturally makes anyone else hesitant to touch it, so they can&#039;t contribute. That was the purpose behind the template.&lt;br /&gt;
::I&#039;m sure you won&#039;t mind others taking some of the burden off your shoulders and helping you finish up the wiki; I just want to assure you that that&#039;s really my only goal in everything I do here. I also don&#039;t intend to put every single thing up to a vote; it&#039;s just that the Main Page is an important matter and I think we need input on what design would be most user-friendly. --[[User:Iritscen|Iritscen]] 15:28, 5 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
==2nd Vote For New Main Page==&lt;br /&gt;
Please vote for the old (current) [[Main_Page]], or for my [[User:Iritscen/MainPageProposal|proposal]], or for geyser&#039;s [[User:Geyser/Main|proposal]]. I guess it will save time to just say &#039;&#039;&#039;OP&#039;&#039;&#039; for the original (current) page, &#039;&#039;&#039;IP&#039;&#039;&#039; for Iritscen&#039;s Page, or &#039;&#039;&#039;GP&#039;&#039;&#039; for Geyser&#039;s Page. --[[User:Iritscen|Iritscen]] 18:44, 4 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
;IP.&lt;br /&gt;
:I do appreciate geyser&#039;s new page, but I think the formatting is not really proper wiki-style. True, it&#039;s our wiki and it can look however we want it to. I just prefer a vertical layout to a horizontal layout. Also, the comments on each item in GP are a bit untidy and make it look cluttered because they broaden the overall table.&lt;br /&gt;
::[[User:Iritscen|Iritscen]] 18:44, 4 February 2008 (CET)&lt;br /&gt;
;GP.&lt;br /&gt;
:(I don&#039;t think either Iritscen or I are in a position to vote, but his critique deserves a response)&lt;br /&gt;
:No comment on your preferences, but IMO a home page should offer an overview within a page or two.&lt;br /&gt;
:Optimally, the user doesn&#039;t need to scroll at all to start navigating (more or less my suggestion).&lt;br /&gt;
:As for &amp;quot;proper wiki-style&amp;quot;, you should have a 2nd look at Main Pages elsewhere... anywhere.&lt;br /&gt;
:They are typically very small: either tight paragraphs or tables, directing to only a few pages.&lt;br /&gt;
:Finally, my table spans the whole page: the comments wrap around instead of &amp;quot;broadening it up&amp;quot;.&lt;br /&gt;
:Also note that the comments don&#039;t wrap at all unless your horizontal resolution is 800 or lower.&lt;br /&gt;
:I wouldn&#039;t say the table looks cluttered on a 1024x768 monitor, which is quite something.&lt;br /&gt;
:If by &amp;quot;untidy&amp;quot; you meant the wacky randomness of some comments, it&#039;s an intended feature.&lt;br /&gt;
:Of course I can&#039;t claim to be a master of silly jokes à la Bungie (nor do I want to).&lt;br /&gt;
:But the wiki can be made more appealing/intriguing if it&#039;s spiced up by such things.&lt;br /&gt;
::[[User:Geyser|geyser]] 23:26, 4 February 2008 (CET)&lt;br /&gt;
::I&#039;m not going to keep critiquing your page and start sounding like a politician doing attack ads; the vote isn&#039;t up to us, anyway; but just to be clear, you are right that your table is wiki-like. But the advantage of my vertical approach is that the Table of Contents is used to jump to wherever you want. You also don&#039;t have to categorize yourself first when trying to find a link (&amp;quot;Am I a fan, a player, or a modder?&amp;quot;). You just look for the subject you want to read about in the TOC and click it.&lt;br /&gt;
::And it&#039;s okay to be a little silly, but the comments in parentheses are basically explaining what each link is, which looks like clutter to me. If the links are not explanatory enough for a newbie, than you and I are doing something wrong and the links/pages need to be named better. --[[User:Iritscen|Iritscen]] 15:42, 5 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
;?P.&lt;br /&gt;
:Ooh... I can&#039;t decide. Both are good. Seems that we have to wait for some more opinions...&lt;br /&gt;
::[[User:Ssg|Ssg]] 12:34, 5 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
===Vote Canceled===&lt;br /&gt;
Okay, let&#039;s forget this whole thing ever happened. --[[User:Iritscen|Iritscen]] 19:30, 6 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
==Beyond the vote==&lt;br /&gt;
:@geyser: The table doesn&#039;t look good in 1440x900. I suggest either to put the table into another table or to put the content of the last row into separate tables and center these. Also I don&#039;t like the look of the part above the table (introduction, welcome pic). That should be polished somehow.&lt;br /&gt;
::[[User:Ssg|Ssg]] 12:34, 5 February 2008 (CET)&lt;br /&gt;
:As for both layouts being good, my suggestion was to keep them both. Iritscen&#039;s can go either below the table or on a separate page (like a site map).&lt;br /&gt;
:As for the looks in 1440x900, I&#039;m not sure what you mean. If you object to the lists being flushed left in wide table columns, then I kinda disagree.&lt;br /&gt;
:If you embed the lists into centered sub-tables, the width of those will depend on the content, so it will be different for the three columns. Ugly.&lt;br /&gt;
:IMO, left-aligned lists are OK and anything else will look worse. Might be wrong. Anyway, you are free to polish anything you feel like polishing.&lt;br /&gt;
::[[User:Geyser|geyser]] 14:39, 5 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
My vote goes neither to Geyser&#039;s nor to Iritscen&#039;s proposal. What we have here is not a choice between two alternatives. We rather need a blending of both.&lt;br /&gt;
Iritscen organized the main topics way better than Geyser. However Geyser&#039;s layout is absolutely more user friendly... even a lazy person like me is  allowed  to spot everything that&#039;s worth of interest at a first glance. &lt;br /&gt;
Somebody just grab Geyser&#039;s layout script, and figure out a way to put in the bottom table all the topics as Iriscen said. Also, Iritscen you may think of a better welcome message for the page header. The note about the search function is annoyingly obvious, just delete it. And remove that bloody drawing of mine! Bring back Lorraine&#039;s art or just leave no pictures, it will look fine as well.&lt;br /&gt;
::[[User:Guido|guido]] 13.15, 6 February 2008 (CET)&lt;br /&gt;
:What do you mean by the &amp;quot;bottom table&amp;quot;?  I&#039;m curious.&lt;br /&gt;
:&amp;quot;A better welcome message&amp;quot;... yeah, I ripped that thing off wholesale from Wikipedia, I&#039;m not defending it. I&#039;ll see if I can think of something better.&lt;br /&gt;
:&amp;quot;The note about the search function&amp;quot;... yeah, it&#039;s a little patronizing, I thought the same thing.&lt;br /&gt;
:&amp;quot;Remove that bloody drawing of mine&amp;quot;... I really like it, but perhaps a piece of &amp;quot;canon&amp;quot; art is called for on the Main Page. I&#039;ll browse through our Images gallery for something of Lorraine&#039;s.&lt;br /&gt;
::[[User:Iritscen|Iritscen]] 15:21, 6 February 2008 (CET)&lt;br /&gt;
:Guido and ssg both have really weird ways to refer to those three lists: &amp;quot;bottom table&amp;quot;, &amp;quot;last row&amp;quot;... for sake&#039;s sake, it&#039;s the actual table, guys!&lt;br /&gt;
:Welcome messages are hard to get right, which is why no one seems willing to take the responsibility of actually sitting down and writing them. ^_^&lt;br /&gt;
:I know for a fact that many people are unaware/oblivious of the direct-hit a.k.a. &amp;quot;Go&amp;quot; feature. I explained that in some more detail. Enjoy.&lt;br /&gt;
:Guido, your drawing is staying. It&#039;s up to you to remove or replace it, but as far as I&#039;m concerned I&#039;d only take the thumb-frame away.&lt;br /&gt;
:Apart from being just plain nice, it makes us stand apart from all those who don&#039;t know better than to recycle Lorraine&#039;s art forever.&lt;br /&gt;
:BTW, the opportunity to liven up the wiki with contextual illustrations still holds. Help yourself to the image gallery, everybody.&lt;br /&gt;
::[[User:Geyser|geyser]] 18:18, 6 February 2008 (CET)&lt;br /&gt;
:About the comments in brackets. When they are humorous rather than informative, and don&#039;t contain hyperlinks, we can replace them with hoverboxes, like this: [[Iron Demon|&amp;lt;span title=&amp;quot;IT&#039;S... ALIIIVE!!!&amp;quot;&amp;gt;Iron Demon&amp;lt;/span&amp;gt;]]&lt;br /&gt;
:There are plenty of other ways to improve &amp;quot;my&amp;quot; table, but I woundn&#039;t cram all of Iritscen&#039;s &amp;quot;site map&amp;quot; into it because: 1) it will never encompass the variety of the wiki&#039;s content; 2) in the attempt to do so, it will grow larger and larger, so that &amp;quot;even a lazy person like [Guido] is able to spot everything that&#039;s worth of interest at a first glance&amp;quot; will no longer be true.&lt;br /&gt;
::[[User:Geyser|geyser]] 18:18, 6 February 2008 (CET)&lt;br /&gt;
::Okay, I will implement the hover boxes. That seems like a good compromise. --[[User:Iritscen|Iritscen]] 19:11, 6 February 2008 (CET)&lt;br /&gt;
:::Hoverboxes added. I also removed some lower levels of hierarchy (or should I say arboresence?) in the Main Page because that kind of detail is unnecessary (that&#039;s what my Main Page, er, Site Map is for!) --[[User:Iritscen|Iritscen]] 19:32, 6 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
==On The New Main Page==&lt;br /&gt;
Well, this is it. We&#039;ve just witnessed a mental breakdown. Someone call the men in white coats for geyser. --[[User:Iritscen|Iritscen]] 17:43, 6 February 2008 (CET)&lt;br /&gt;
:Also, am I the only one who has a big problem with &amp;quot;ONi&amp;quot;? I suppose if I weren&#039;t lazy I would change it to &amp;quot;Oni&amp;quot; myself and get in a revert war with geyser, but instead I&#039;m being diplomatic by asking for other people&#039;s opinions. --[[User:Iritscen|Iritscen]] 18:27, 6 February 2008 (CET)&lt;br /&gt;
::And so it begins...luckily for me, I won&#039;t have access to the forum for a few days. geyser, I apologize, but I am hardheaded :P[[User:Gumby|Gumby]] 20:02, 6 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
That chibi Shinatama is cute. Just wanted to say that. --[[User:Iritscen|Iritscen]] 17:14, 12 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
Okay, here&#039;s a more constructive comment. I propose that we (by which I mean geyser, since he&#039;s the expert in tables) make a second table below &amp;quot;Oni&amp;quot; for &amp;quot;After Oni...&amp;quot; where we can put the items in See Also. It seems disorganized to have a little section like that after a big table. The second table could bring those items out in more detail (specifically, breaking out &amp;quot;Oni 2&amp;quot; to be a little more specific). Just an idea. --[[User:Iritscen|Iritscen]] 17:25, 12 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
:Well, as far as I&#039;m concerned, the Main Page is functional enough as it is&lt;br /&gt;
:(however, I still can&#039;t forgive how you replaced Upgrades with Daodan DLL).&lt;br /&gt;
:If you think about &amp;quot;Oni 2&amp;quot; in terms of &amp;quot;added value&amp;quot;, it is not &amp;quot;after&amp;quot; Oni.&lt;br /&gt;
:And the projects under &amp;quot;See also&amp;quot; are really miscellaneous curiosities ATM.&lt;br /&gt;
:When Konoko Payne goes beyond the proof-of-concept stage, I&#039;ll reconsider.&lt;br /&gt;
::[[User:Geyser|geyser]] 23:00, 25 February 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
==Chibi Image==&lt;br /&gt;
&lt;br /&gt;
Why is it all pink when I see it on the main page, but all colorful when I click on the image?&lt;br /&gt;
:--Gumby&lt;br /&gt;
:Me too. Gumby, what browser you&#039;re using. I&#039;ve mozilla firefox.&lt;br /&gt;
:Same effect for an image by Iritscen. Please check [[:Image:Iritscen_-_PKV_01_-_Front-On_Konoko_%28F-PS%29.png|THIS]] and confirm the error.&lt;br /&gt;
::--[[User:Paradox-01|Paradox-01]] 21:15, 25 February 2008 (CET)&lt;br /&gt;
Being colorblind, it&#039;s hard for me to see that Shinatama is &amp;quot;all pink&amp;quot; on the main page, but she doesn&#039;t look nearly as good as on the image page: [[Image:Rina - Chibi Shinatama Final.png]].&amp;lt;br&amp;gt; Even aside from the color thing, she might need to be sized down in a proper graphics app like Photoshop rather than leaving the scaling to the wiki. --[[User:Iritscen|Iritscen]] 21:38, 25 February 2008 (CET)&lt;br /&gt;
::Perfect, Gumby!  Nicely fixed. --[[User:Iritscen|Iritscen]] 21:40, 25 February 2008 (CET)&lt;br /&gt;
:It is &#039;&#039;not&#039;&#039; a perfect fix, it&#039;s a dirty hack around a flaw in the outdated MediaWiki engine.&lt;br /&gt;
:I asked Alloc to update the engine and I&#039;d rather if you had some patience until he does so.&lt;br /&gt;
:Sigh. I&#039;ll leave the resized PNG for now, but eventually I&#039;ll revert to the one I uploaded.&lt;br /&gt;
:Wikipedia scales PNG nicely, so there&#039;s no reason why our wiki shouldn&#039;t. Just be patient.&lt;br /&gt;
::[[User:Geyser|geyser]] 23:00, 25 February 2008 (CET)&lt;br /&gt;
:&amp;quot;dirty hack&amp;quot;? Pshaw, that took a lot of work...like...copying the image...and uploading the image :P I understand the want for the PNG to work properly though. I once asked Alloc about the wiki&#039;s age and there was some reason he didn&#039;t want to upgrade it...probably too much work...xD. I wanted to have support for lowercase titles, but the wiki is too old :P. And, I use IE7 at school. Let me check using Opera (Wii browser) for the glitch...&lt;br /&gt;
::[[User:Gumby|Gumby]]&lt;br /&gt;
:I have Opera, and the glitch is there. Moreover, you have to realize that the scaling glitch is server-side.&lt;br /&gt;
:It&#039;s the wiki&#039;s engine that generates the scaled versions of the images, when processing wiki text into HTML.&lt;br /&gt;
:It&#039;s those automatically generated images that are wrong, and they&#039;ll be wrong no matter what the browser...&lt;br /&gt;
:Upgrading the wiki means quite a lot of work for the admin, and a downtime, too. Dunno when that&#039;ll happen.&lt;br /&gt;
::[[User:Geyser|geyser]] 06:06, 27 February 2008 (CET)&lt;br /&gt;
:Yeah, I know, it doesn&#039;t hurt to check though...:D&lt;br /&gt;
::[[User:Gumby|Gumby]]&lt;br /&gt;
==Talking Heads Xplode==&lt;br /&gt;
:The wiki now scales PNG properly, however previously generated thumbs may need to be purged (the easiest way is to reupload the image).&lt;br /&gt;
::[[User:Geyser|geyser]] 12:45, 2 June 2008 (CEST)&lt;br /&gt;
:Now that the PNG scaling problem is fixed we can re-upload all of the talking head images as PNG right? The JPEG artifacts look really bad, especially when scaled. I&#039;d be glad to help.&lt;br /&gt;
::[[User:RossyMiles|rossy]] 11:46, 3 June 2008 (CEST)&lt;br /&gt;
:Great. Let us know if you have problems exporting them from Oni. As for the naming convention, please use [[:Image:TXMPSHINlistening.png]] etc. It&#039;s also best to add the category tags &amp;lt;nowiki&amp;gt;[[Category:Portraits]][[Category:In-game art]]&amp;lt;/nowiki&amp;gt; to the upload summary. After you&#039;re done, we&#039;ll delete &amp;quot;Images/In-Game/Talking_Heads&amp;quot;.&lt;br /&gt;
:Maybe &amp;quot;Portraits&amp;quot; (or &amp;quot;Small portraits&amp;quot;) is not the best pick, but &amp;quot;Talking heads&amp;quot; is pretty bad as well. Oni calls them &amp;quot;cinematics&amp;quot;, even more counter-intuitively. They&#039;re &amp;quot;insets&amp;quot; and &amp;quot;popups&amp;quot; (or &amp;quot;fly-ins&amp;quot;) to me, so maybe the least confusing category would be something like &amp;quot;Cutscene pop-ups&amp;quot; or &amp;quot;Inset portraits&amp;quot;.&lt;br /&gt;
:If we don&#039;t want to stress the function of those images in Oni, then &amp;quot;Small portraits&amp;quot; is probably good enough. If we want to stress that they&#039;re backing up the voice-overs, maybe I&#039;d use &amp;quot;Voice-over art&amp;quot; ([[Voice actors|deliberately confusing]], sorta).&lt;br /&gt;
:Off topic: I didn&#039;t bother to give you feedback on your user page, since you apparently got in touch with SFeLi. As for Daodan discussion, you&#039;ve probably spotted [[Daodan DLL]] by now.&lt;br /&gt;
::[[User:Geyser|geyser]] 14:31, 3 June 2008 (CEST)&lt;br /&gt;
==Welcome statements==&lt;br /&gt;
:I removed this from the top of the Main Page because I thought it was redundant, feel free to reinject it in the main text somehow.&lt;br /&gt;
&amp;lt;center&amp;gt;&#039;&#039;This wiki is a community-wide effort. If you&#039;re a new or returning Oni fan, perhaps you can take the time to [[OniGalore:Current events|contribute]] towards making this wiki more complete.&#039;&#039;&amp;lt;/center&amp;gt;&lt;br /&gt;
:Whatever you do, make sure that Shinatama doesn&#039;t interfere with the table on 1600x#### or wider. Move the haiku around if you have to.&lt;br /&gt;
::[[User:Geyser|geyser]] 12:45, 2 June 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Main Page Image==&lt;br /&gt;
Does anyone know how to randomize in the wiki parser language? Or else how to get the current date? I&#039;d like to switch up the image on the right of the Main Page from time to time. It&#039;s very nice, but it&#039;s also very very cute, and Oni is not accurately summed up by Chibi Shinatama. We should at least put in a darker image from time to time, and vary the subject (Mukade, Konoko, Griffin, etc.). But I don&#039;t want to have to change the image manually. If we can set up a template that looks at, say, the day of the week, or picks a random number, we can have the image change itself from a pool of candidate images that we would set up. --[[User:Iritscen|Iritscen]] 18:09, 1 August 2008 (CEST)&lt;br /&gt;
:1) Let&#039;s have a look at the pool, first; 2) It&#039;s less procrastinatory to do it manually, really; 3) Actually, pretty much anything is less procrastinatory than this ^_^ --[[User:Geyser|geyser]] 18:19, 1 August 2008 (CEST)&lt;br /&gt;
::1. I don&#039;t have a pool, I just had a thought and then posted it. But the pool would be mostly Guido stuff, certainly. Not fan art in general. No more than seven handpicked images, cream of the crop and all that.&lt;br /&gt;
::2. Yes and no. Who feels like changing the page every week or whatever? I don&#039;t. Plus that generates unnecessary edits. I love automation, and getting technology to work for me, not the other way around.&lt;br /&gt;
::3. We can afford to procrastinate this, it&#039;s hardly a big issue. Seriously, I just wanted to throw my thoughts out there, and see if anyone had an answer to my question(s) (I&#039;ve done some research, but I haven&#039;t found anything). We&#039;ll get around to doing something when we get around to doing it. No rush (unlike the other umpteen things I am working on). --[[User:Iritscen|Iritscen]] 18:27, 1 August 2008 (CEST)&lt;br /&gt;
:::I see no image, and the haiku is smashed to the right, in a thin column. Making it only a simple poem :) [[User:Gumby|Gumby]] 04:13, 3 August 2008 (CEST)&lt;br /&gt;
::::Which image is up? Griffin&#039;s? It looks fine for me. Can you take a screenshot of the problem, please? --[[User:Iritscen|Iritscen]] 13:50, 3 August 2008 (CEST)&lt;br /&gt;
:::::&amp;quot;Gumby: I see no image - Iritscen: Which image is up?&amp;quot; Duuuuuuuh, priceless.&lt;br /&gt;
:::::&amp;quot;Griffin&#039;s?&amp;quot; Griffin&#039;s was yesterday. Today&#039;s treat is ominous ragged Konoko.&lt;br /&gt;
:::::&amp;quot;It looks fine for me.&amp;quot; Blame your browser&#039;s cache for showing you Griffin.&lt;br /&gt;
::::::[[User:Geyser|geyser]] 16:02, 3 August 2008 (CEST)&lt;br /&gt;
:::::::Well, bite me. I hit Refresh on the page and it still showed me Griffin. That seemed wrong, hence my question to Gumby as to who he was seeing. And now I Refreshed again and see scary smiling Konoko, but the haiku is still fine. Since I didn&#039;t change the layout of the page at all, only varied the image, I am justifiably confused about what problem Gumby could be having as long as he&#039;s not looking at my MainPageTest. --[[User:Iritscen|Iritscen]] 17:48, 3 August 2008 (CEST)&lt;br /&gt;
:::::::Okay, looks like you did do something to fix it, I guess. I never saw the problem, so I don&#039;t know. But thanks, I suppose. God, you piss me off so much sometimes, though, geyser. --[[User:Iritscen|Iritscen]] 17:51, 3 August 2008 (CEST)&lt;br /&gt;
::::::::&#039;&#039;&#039;hence my question to Gumby as to who he was seeing&#039;&#039;&#039; he said &amp;quot;I see no image&amp;quot;, re:duh... &#039;&#039;&#039;That seemed wrong&#039;&#039;&#039;... but you sounded like everything was &amp;quot;fine for you&amp;quot;. &#039;&#039;&#039;looks like you did do something to fix it&#039;&#039;&#039;... yeah, turned out the fancy variable is zero-based. --[[User:Geyser|geyser]] 18:09, 3 August 2008 (CEST)&lt;br /&gt;
:::::::::&#039;&#039;&#039;reasons I&#039;m an idiot&#039;&#039;&#039;... Damn. I need more sleep. --[[User:Iritscen|Iritscen]] 20:26, 3 August 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
==On The New New Main Page==&lt;br /&gt;
Well, I don&#039;t understand why it has to be fiddled with. I strongly feel that two large blocks of tabled text such as we have now, preceded by technical mumbo-jumbo, are not more &amp;quot;inviting&amp;quot; than the light, airy feel we had with the previous introduction text. I thought we had finally reached a Good Place with the Main Page when I slimmed down your unnecessary explanations. --[[User:Iritscen|Iritscen]] 04:04, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:I plead guilty on the mumbo-jumbo: I thought of it as intriguing. It&#039;s a reference to Chung&#039;s datapad, the icon of which (OniGalore&#039;s old icon) is shown in the upper-right corner, and leads people straight to {{C|1}}. Somehow I&#039;ve always wanted the main page to be somewhat fancy, with the welcome message set in some kind of atmosphere: in this case, Oni&#039;s cyberpunk in general and data terminals in particular. Maybe a screenshot of Konoko reading our welcome message from Chung&#039;s datapad would be more immersive. Or maybe it would suck.&lt;br /&gt;
:As for my unnecessary explanations, I hoped they would encourage scripters from OCF to contribute to BSL documentation. If we think this isn&#039;t going to happen, then you can remove the whole NOTE ON THE &amp;quot;GO&amp;quot; FEATURE block (to the general public it may look like an insult to intelligence, yes). Keep the table, though, as it solves the overlap issue permanently; if you want airiness, you can have something like this (note I trimmed the first block significantly).&lt;br /&gt;
::[[User:Geyser|geyser]] 05:16, 8 October 2008 (CEST)&lt;br /&gt;
{|width=100%&lt;br /&gt;
|&lt;br /&gt;
{|align=center&lt;br /&gt;
|&lt;br /&gt;
{|align=center&lt;br /&gt;
{|align=center&lt;br /&gt;
|&lt;br /&gt;
Welcome to Oni Galore, a [[wikipedia:Wiki|wiki]] dedicated to the video game &#039;&#039;&#039;[[Oni]]&#039;&#039;&#039; from [[Bungie West]] (PC/Mac/PS2, 2001/01).&amp;lt;br&amp;gt;&lt;br /&gt;
Below is a portal to the most popular/current/relevant resources. For the rest, there&#039;s search and [[wikipedia:Serendipity|serendipity]]...&amp;lt;br&amp;gt;&lt;br /&gt;
For further information about the community, have a look at our [[OniGalore:Community Portal|community portal]] and at {{OCF}}.&amp;lt;br&amp;gt;&lt;br /&gt;
If you&#039;d like to contribute to this wiki, check out the [[OniGalore:Current events|Current events]] as well as our [[Help:Contents|Help]] section. Enjoy your stay.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
|&lt;br /&gt;
{|align=center&lt;br /&gt;
|+&#039;&#039;&#039;&#039;&#039;Friend or enemy,&amp;lt;br&amp;gt;thank you for your interest&amp;lt;br&amp;gt;in Oni Galore.&lt;br /&gt;
|{{Dailyimage}}&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
!TABLE&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
It&#039;s quite helpful when you explain your thought processes like this, it allows me to find common ground. For instance, I think the idea of an &amp;quot;atmosphere&amp;quot; for the Main Page is an interesting one. I kind of feel like we could only achieve that with something more radically graphical and more unified. In other words, if this is ugly, which I think we all agree on:&lt;br /&gt;
 ENCRYPT SEQUENCE TmeC119-67&lt;br /&gt;
 Manifest 12A-694-v contains a number of fragile items. Note the follo....&lt;br /&gt;
 &amp;lt;TCTF UNIVERSAL DECRYPT RUNNING...DATA FOUND. DISPLAYING...&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Then this is less ugly, but still not pretty, and it&#039;s also distracting:&amp;lt;br&amp;gt;&lt;br /&gt;
ENCRYPT SEQUENCE TmeC119-67&amp;lt;br&amp;gt;&lt;br /&gt;
Manifest 12A-694-v contains a number of fragile items. Note the follo....&amp;lt;br&amp;gt;&lt;br /&gt;
&amp;lt;TCTF UNIVERSAL DECRYPT RUNNING...DATA FOUND. DISPLAYING...&amp;gt; &lt;br /&gt;
&lt;br /&gt;
This is more immersive:&amp;lt;br&amp;gt;&lt;br /&gt;
(I deleted this one day because it was ugly. --[[User:Iritscen|Iritscen]] 23:01, 17 July 2010 (UTC))&lt;br /&gt;
&lt;br /&gt;
So, in other words, making some of the text into graphics allows us the freedom to use different fonts and more complex table-like structures (for instance, making the whole page feel like a datapad display; the above image doesn&#039;t really convey that, of course, it&#039;s just a quick and dirty sample). An overall structure would encompass the welcome text, the navigation table, and the picture of the day, all into one. Right now another problem on the Main Page is that there are two boxes and then a picture which feels tacked on to one side.&lt;br /&gt;
&lt;br /&gt;
So maybe we can try out some different designs and post mock-ups here of our ideas.&lt;br /&gt;
&lt;br /&gt;
As far as the Go/Search note, I just don&#039;t feel that the Main Page is a place to solicit editors to perform a certain task like setting up BSL redirects, even if they do kick butt. The thing is, I already tried to draw some people over to the wiki by posting on the forum a while back, and ultimately, even if it had a small effect, it wasn&#039;t much. I don&#039;t think we&#039;re ever going to see mass participation by community members in the wiki; it will probably always be more or less the ones who are already active (plus a few more if the community grows as we hopefully get more attention). And since you acknowledge that to readers of the wiki it is condscending to explain what &amp;quot;Go&amp;quot; and &amp;quot;Search&amp;quot; mean, I think we know what has to happen to that blurb.&lt;br /&gt;
&lt;br /&gt;
P.S.: How did you trim the first block that is posted above? It&#039;s identical to what&#039;s on the current Main Page.... --[[User:Iritscen|Iritscen]] 16:20, 8 October 2008 (CEST)&lt;br /&gt;
&lt;br /&gt;
:&amp;quot;Making the whole page feel like a datapad display&amp;quot; is what I suggested up there. Text doesn&#039;t have to be photoshopped, because bold Arial or Tahoma already looks OK, and there are some more common font families we can use; so there can be graphics in the background, with typeset text on top of it. However, I don&#039;t feel we should spend too much time on designing something as fancy as [http://guido.oni2.net/index.%20guido.oni2.net.jpg this] or whatever could have been the new design of OniCentral. I actually planned a compact, datapad-like design for geyser.oni2.net at first, based on [https://www.issendai.com/ THIS] but with a black/blue theme similar to Oni&#039;s Load Game dialog. And I could port it here. But I doubt we can make such an &amp;quot;atmospheric&amp;quot; thing work well within an otherwise plain frame (the default layout of the wiki is black on white and it&#039;s not going anywhere). Screen width VS resolution of the immersive screenshot or artwork would be one issue, visual clash between the &amp;quot;welcome&amp;quot; and the table would be another, and with the picture of the day next to a graphically enhanced text, people won&#039;t know where to look first and what to look for, sorta. So probably it&#039;s better to stick with my &amp;quot;airy&amp;quot; suggestion up there. A minimal block of text, and the haiku/POTD as the only artful/atmospheric element. As for the block of text, it&#039;s the same as on the current Main Page, yes, but it&#039;s shorter and more tidy than the &#039;&#039;previous&#039;&#039; revision. --[[User:Geyser|geyser]] 17:13, 8 October 2008 (CEST)&lt;br /&gt;
::Just to be clear, I was suggesting a look that would include the table at the bottom as well as the picture, in other words not looking strictly like the in-game datapad, but based on the look of Oni&#039;s interface and technology.&lt;br /&gt;
::But as you said, it wouldn&#039;t jive with the overall plain &amp;quot;theme&amp;quot; of the Main Page, and in any case, it could be considered jarring to go from a fancy page like that to plain black on white everywhere else on the wiki. So I&#039;m willing to let this idea go.&lt;br /&gt;
::P.S.: Still meaning to write individual haiku for the PotDs, just haven&#039;t been in the poetic mood yet. --[[User:Iritscen|Iritscen]] 20:17, 8 October 2008 (CEST)&lt;br /&gt;
==Cherry picking==&lt;br /&gt;
::&lt;br /&gt;
:P.S: ... and what about replacing &amp;quot;serendipity&amp;quot; with &amp;quot;cherry picking&amp;quot;? I think it would be more intuitive. [User:Guido|Guido]] 10:00, 26 October 2008 (CEST)&lt;br /&gt;
::Well, the meaning of &amp;quot;[[wikipedia:Cherry_picking|cherry picking]]&amp;quot; was &#039;&#039;really&#039;&#039; not intuitive to &#039;&#039;me&#039;&#039;, so I had to look it up. And it&#039;s still not clear to me what exactly it means as applied to this wiki (biased sample? WTF?) or why it&#039;s more appropriate than &amp;quot;[[wikipedia:Serendipity|serendipity]]&amp;quot;. Eventually I meant to replace this with a link to the [[OniGalore_talk:General_disclaimer]], which would be a sort of condensed site map. --[[User:Geyser|geyser]] 11:10, 26 October 2008 (CET)&lt;br /&gt;
:::It&#039;s true that I don&#039;t think &amp;quot;cherry picking&amp;quot; is the right phrase to replace &amp;quot;serendipity&amp;quot;, but the more important question is what &amp;quot;serendipity&amp;quot; is supposed to mean in the first place. You should be aware that, as fond as you are of &amp;quot;serendipity&amp;quot;, geyser, I can confidently say that a lot of native English speakers do not know its meaning, and those who do, like myself, are still at a loss as to what it means when used &amp;lt;u&amp;gt;here&amp;lt;/u&amp;gt;. When I first saw that the word was a link, I assumed it would link to [[Special:Random]], not a dictionary definition of the word that still gives it no context....&lt;br /&gt;
:::&amp;quot;&#039;&#039;&#039;a link to the [[OniGalore_talk:General_disclaimer]]&#039;&#039;&#039;&amp;quot; o.O ...Come again, geyser? --[[User:Iritscen|Iritscen]] 17:57, 26 October 2008 (CET)&lt;br /&gt;
:Clicking &amp;quot;Random page&amp;quot; has less to do with serendipity than following intrawiki links. The idea is that beyond a certain amount of cross-linking, the wiki virtually &amp;quot;navigates itself&amp;quot;, and allows casual/curious readers to end up in unexpected places, through a set of more or less loose associations with what they were initially interested in. Maybe I&#039;m the only one who reads wikis like this (starting with Wikipedia) and enjoys it... Anyway, &amp;quot;serendipity&amp;quot; in the context of our wiki (casual navigation powered by intralinks) is not meant to be self-explanatory right now. The actual thing that&#039;s supposed to be featured on the main page is the disclaimer: I used to link to it without the serendipity label, and I will re:link to it eventually, probably without calling it serendipity either. Thus thee serendipity thing is just a placeholder, or at least you can think of it that way. Of course, you can decide to kill that initiative (and delete the disclaimer while you&#039;re at it), but I wouldn&#039;t do that, or if I did, I&#039;d expect unexpected retribution. My advice is to ignore everything you can ignore, and I&#039;ll do my best to ignore bureau-cats and other uncyclopedic spam that is only funny to certain people while on certain drugs --[[User:Geyser|geyser]] 22:04, 26 October 2008 (CET)&lt;br /&gt;
::&amp;lt;sigh&amp;gt;Because the Disclaimers page is &#039;&#039;so&#039;&#039; much funnier to &#039;&#039;such&#039;&#039; a larger audience :rolleyes:. The fact that you use the words &amp;quot;uncyclopedic spam&amp;quot; simply blows my mind when you were just talking about [[OniGalore:General disclaimer|this]] page in the same breath. Anyway, what I was trying to ask above was, How is the Disclaimers page in any way connected with your concept of browsing the wiki by serendipity? And don&#039;t get jumpy, I never said I was thinking of killing any initiative, I don&#039;t attack what I can&#039;t even begin to understand :-3. --[[User:Iritscen|Iritscen]] 01:39, 27 October 2008 (CET)&lt;br /&gt;
:::Quite simply, a list of ill side effects is a nice place to start browsing; every ill side effect linking to an article, ideally. Seen that way, the disclaimer has the potential of becoming a condensed site map (and I already told you that). Not in the present form, of course (remember that I was young and stupid when I stole SOW&#039;s disclaimer, so comparing your own silliness with it is not to your advantage), but as outlined in the footer and on the talk page (which I also linked to, for Mukade&#039;s sake). My own brainstorming and Gumby&#039;s should give you an idea of what&#039;s cooking. Just don&#039;t tell me we have to explain the meaning of every single item, because we all have better things to do right now. --[[User:Geyser|geyser]] 02:16, 27 October 2008 (CET)&lt;br /&gt;
::::Okay, now I get it, at least as much as I&#039;m going to get it, I suppose. But if you think this plan was in any way clear before your last post, hate to tell ya, but it wasn&#039;t; don&#039;t act like you explained anything on the Disclaimers talk page, it&#039;s an incomprehensible list of gibberish right now. Whatever, have fun with it.&lt;br /&gt;
::::P.S.: By injecting humor into official wiki pages such as [[OniGalore:Policy|Policy]], I am *trying* to preserve fun while adding functionality, sorry if you don&#039;t see it that way, but I daresay most people will; heck, even Wikipedia has [[wikipedia:WP:BEANS|joke pages]] as part of their system of policy articles. --[[User:Iritscen|Iritscen]] 02:28, 27 October 2008 (CET)&lt;br /&gt;
:::::The functionality added by those official pages is nil, and the humor is IMO fairly tasteless, so in a way it&#039;s &amp;quot;worse than nothing&amp;quot;. You know as well as I do that there&#039;s more than enough places on the web that cultivate that kind of humor; no need to develop it here as if our wiki was Yet Another Weak Hu--[[User:Iritscen|Iritscen]] 04:27, 27 October 2008 (CET)mor Site. If you can relate your humor to Bungie or Oni, that will already be more creative, if not better (I mean, since Bungie humor is already not very tasteful, either make the weak s##t part of the Bungie strain or leave it out). That&#039;s just my opinion of course, you&#039;re a big boy and I wouldn&#039;t want to tell you how to run an Oni wiki. &#039;&#039;&amp;lt;-- NOT ASKING FOR A FORMAL POLICY, OF COURSE; JUST TRYING TO APPEAL TO COMMON SENSE: THE WIKI IS NEITHER A SELF-INDULGENT BLOG NOR A PORTAL TO UNCYCLOPEDIA; SO LET&#039;S AT LEAST TRY TO KEEP THE CRAP OUT&lt;br /&gt;
:::::&amp;quot;don&#039;t act like you explained anything on the Disclaimers talk page, it&#039;s an incomprehensible list of gibberish right now&amp;quot; Let&#039;s not play dumb and dumber, please. Care to go and read it again? Here&#039;s what it says at the bottom: &#039;&#039;&amp;lt;-- OOPS! MISTAKING THE DISCLAIMER FOR THE TALK PAGE WAS A VERY BAD IDEA&#039;&#039;&lt;br /&gt;
::::::&#039;&#039;The above masterpiece was outrageousy stolen (by me, [[User:Geyser|geyser]]) from [https://www.swo.com/ Science of War and Oppression]. &#039;&#039;&#039;I am looking forward to making [[OniGalore talk:General disclaimer|a more Oni-oriented variant]] (you&#039;re welcome if you want to help)&#039;&#039;&#039;, but for now it&#039;s [https://www.swo.com/disclaimer.shtml SWO&#039;s original version], with a few original entries by myself. No, I don&#039;t have permission to redistribute their disclaimer. I&#039;ll try to keep it clean :)&#039;&#039;&lt;br /&gt;
:::::You have had the ample opportunity to check out SWO&#039;s original disclaimer (incomprehensible list of gibberish?  &#039;&#039;riiiiiiight&#039;&#039;   &#039;&#039;&amp;lt;-- OOPS! SAME MISTAKE AS ABOVE, LOOKING AT THE WRONG PAGE&#039;&#039;), as well as the talk related to ours, and the recent contributions by Gumby and myself have made the initiative all the more explicit. Sorry if you didn&#039;t get the picture, but I didn&#039;t want to insult your intelligence. &#039;&#039;&amp;lt;-- THAT ONE STILL HOLDS, I GUESS. I MEAN, GUMBY GOT THE IDEA ALL BY HIMSELF AND EVEN ADDED THE FIRST HYPERLINK...&#039;&#039;&lt;br /&gt;
::::::[[User:Geyser|geyser]] 03:27, 27 October 2008 (CET)&lt;br /&gt;
:::::::Non-Oni-related humor... is &amp;lt;u&amp;gt;that&amp;lt;/u&amp;gt; what&#039;s been burning your biscuits all this time about my jokes? Sorry, I didn&#039;t think we had a Bungie-only humor rule here. Let&#039;s try not to be so insular and snobbish, &#039;kay? Let&#039;s also try not to be insulting, although it&#039;s too late for that today -- having an Editing Policy page, a Copyrights page, or any page defining user rights and roles is a &#039;&#039;hell&#039;&#039; of a lot more useful than your original Disclaimers page. And I certainly read that note at the bottom a while back... how on Earth do you think that wording conveys your plans to make a Site Map out of random Oni phrases on a &#039;&#039;Disclaimer&#039;&#039; page? The longer you continue this back-and-forth, the more ridiculous you look. --[[User:Iritscen|Iritscen]] 03:35, 27 October 2008 (CET)&lt;br /&gt;
:::::::P.S.: In response to your point about not making the wiki a portal to other crap, I don&#039;t plan on doing regularly what I did with the Editing Policy page. But to clarify what I meant above in case you missed it, I don&#039;t think we need to be insular as a community, where anything that&#039;s not Oni or generally Bungie-related is automatically &amp;quot;crap&amp;quot;. I specifically put a note in my Talk page about how a community can go too far in that direction and become a barricaded fortress of in-jokes that only the community elite actually understand. I prefer a more approachable take on humor, personally. But I will try to keep the external links to a bare minimum. --[[User:Iritscen|Iritscen]] 04:27, 27 October 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
:::::::stop bitching or my ninjas will come and find you! [[User:guido|guido]] 18:47, 27 October 2008 (CET)&lt;br /&gt;
::::::::Guido, nice of you to watch over us, but don&#039;t let it become your only hobby. Also, you&#039;re always late, so your assassins probably suck at catching up with their targets, too ^_^ --[[User:Geyser|geyser]] 21:09, 27 October 2008 (CET)&lt;br /&gt;
&lt;br /&gt;
[[Category:Contents]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Localizations&amp;diff=47085</id>
		<title>Localizations</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Localizations&amp;diff=47085"/>
		<updated>2026-04-11T23:20:45Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: added a subheading, forced the TOC on, moved a paragraph, and removed some of the editorialization around which dubs are better&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hatnote|For a list of the different physical releases of Oni, see [[Releases]]. For a technical examination of the localizations, see [[OBD:Localization]].}}&lt;br /&gt;
__TOC__&lt;br /&gt;
[[Image:Mac (ES) CD-ROM.jpg|300px|right|thumb|Oni in Castilian Spanish for the Mac.]]&lt;br /&gt;
After being developed by [[Bungie West]] in the United States, where the canonical English version was developed, [[Oni]] was translated into several other languages for worldwide distribution.&lt;br /&gt;
&lt;br /&gt;
==Products==&lt;br /&gt;
The following languages received full localizations, encompassing the game packaging, the manual, in-game text and in-game voice acting:&lt;br /&gt;
*Russian&lt;br /&gt;
*French&lt;br /&gt;
*Italian&lt;br /&gt;
*German&lt;br /&gt;
*Spanish&lt;br /&gt;
*Japanese&lt;br /&gt;
&lt;br /&gt;
One language received a text-only translation, including translated subtitles, but the voice acting was left in English:&lt;br /&gt;
*Chinese&lt;br /&gt;
&lt;br /&gt;
Other languages, perhaps ones with smaller markets, received box-and-manual translations where the game itself was left in the original English:&lt;br /&gt;
*Hungarian&lt;br /&gt;
*Polish&lt;br /&gt;
*Portuguese (Brazilian)&lt;br /&gt;
*Slovak&lt;br /&gt;
&lt;br /&gt;
There are almost certainly more languages which received these box-and-manual translations, but they have been poorly documented. If you have evidence of one not mentioned here, please let us know.&lt;br /&gt;
&lt;br /&gt;
Out of the [[seven]] versions of the game that were dubbed, fans have shown the most interest in the Japanese version since Oni is, after all, descended from the world of [[anime]]. The voiceover was done with care, and Konoko was played by well-known voice actress Kotono Mitsuishi (read [[wp:Kotono Mitsuishi|her filmography]] to see her famous credits).&lt;br /&gt;
&lt;br /&gt;
==Releases==&lt;br /&gt;
These localizations were then used in multiple physical releases in different territories, as documented at [[Releases]], sometimes including multiple languages on the disc which could be selected during installation. The releases were sometimes made for all three platforms: Windows, Macintosh and PlayStation 2. But sometimes they were only made for Windows, or only Windows and PS2, in territories where Macs were not common.&lt;br /&gt;
&lt;br /&gt;
==Errors==&lt;br /&gt;
The localization process was not, of course, without its mishaps. Translators sometimes failed to understand the nature or context of what they were translating. Sometimes the localization office translated and released files that were [[European Mac releases|not meant for release at all]].&lt;br /&gt;
&lt;br /&gt;
A small collection of known errors:&lt;br /&gt;
* The Slovakian translators called the [[wp:Hoplite|Hoplite]] Class (blue Strikers) the &amp;quot;[[Slovak game manual#Pages 16-17|Hopping Class]]&amp;quot;.&lt;br /&gt;
* Spanish translators referred to Griffin as a veterinarian when translating the line &amp;quot;Where&#039;s Griffin&#039;s pet doctor today?&amp;quot;.&lt;br /&gt;
* Whoever created the [[OBD:Text encoding#European|European character set]] for Oni didn&#039;t know what a Spanish question mark looked like, as seen below.&lt;br /&gt;
* Buka&#039;s Russian translation probably doesn&#039;t have more errors than other translations, but we have a lot more Russian fans to tell us about them ^_^&lt;br /&gt;
** In the Deadly Brain scene, instead of telling Konoko, &amp;quot;Turn off those breakers...Fast!&amp;quot;, Shinatama tells her, &amp;quot;Disconnect those hackers...Fast!&amp;quot;&lt;br /&gt;
** [[Quotes/Speech#Way out|This helpful NPC]] in [[Regional State]] implies that you&#039;ll be traveling together when he says &amp;quot;Underground passage, it&#039;ll lead us to the command offices.&amp;quot;&lt;br /&gt;
** The &amp;quot;pet doctor&amp;quot; line which confused the Spanish translators refers to Griffin as &amp;quot;lovely&amp;quot; in this dub.&lt;br /&gt;
** The translators apparently had some confusion about the factions in the game and labeled the final mission &amp;quot;TCTF Mountain Compound&amp;quot; on their translated splashscreen (however the Load Game screen gets it right).&lt;br /&gt;
&lt;br /&gt;
No doubt many more delightful [[wikt:gaffe|gaffes]] and [[wikt:false friend|false friends]] await any players who possess both an English copy and a translated copy of Oni and want to take the time to compare them. &lt;br /&gt;
&lt;br /&gt;
{| style=&amp;quot;margin-left:auto; margin-right:auto; width:525px;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Spanish Mac - mystery question mark in SUBT.png|512px]]&lt;br /&gt;
|-&lt;br /&gt;
|In Spanish Oni&#039;s subtitles, all questions begin with [[OBD:Text encoding#European|a novel question mark]] that no Spanish speaker has ever seen. Ending question marks are followed by a period, as are some sentences that already end with periods. As for the quality of the translated dialogue… above, Kerr asks Griffin, &amp;quot;Why do you send her inside?&amp;quot; instead of &amp;quot;What are you sending her into?&amp;quot;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Oni history]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Installation&amp;diff=47084</id>
		<title>Installation</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Installation&amp;diff=47084"/>
		<updated>2026-04-11T21:38:20Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UpdatedForOniX|1.0.0}}&lt;br /&gt;
This page will guide you in obtaining, installing and running Oni on practically any computer.&lt;br /&gt;
&lt;br /&gt;
==Obtaining==&lt;br /&gt;
===Demo===&lt;br /&gt;
You can get the Windows demo [http://mods.oni2.net/node/335 HERE] and the Mac demo [http://mods.oni2.net/node/334 HERE]. They have been repackaged for modern computers, and include all three demo levels.&lt;br /&gt;
&lt;br /&gt;
===Retail===&lt;br /&gt;
The game is no longer available to purchase new, but is often for sale secondhand on sites like eBay and Amazon. Make sure you know which platform you&#039;re purchasing the game for, as sometimes the game is not carefully labeled by the seller. Unless you&#039;re specifically looking for the PlayStation 2 port for some reason, make sure you&#039;re buying Oni for Windows or Oni for Mac OS, as those are considered the best versions of the game, and only Windows/Mac Oni is supported by the community and can be modded (note: Mac Oni does not run in macOS 10.15 Catalina or newer due to the loss of 32-bit support, though a 64-bit port is expected eventually).&lt;br /&gt;
&lt;br /&gt;
==Installing==&lt;br /&gt;
After installing retail Oni on a modern OS, you will need to install a patch of some kind to run it. The repackaged demos (linked above) come with the needed patches (but note again that Oni currently will not run on Macs in macOS 10.15+).&lt;br /&gt;
&lt;br /&gt;
After following the instructions below to install a retail copy of the game, see {{SectionLink||Patches}}, then check out the [[Troubleshooting]] page if you still encounter problems.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
:&#039;&#039;The installer on the CD sometimes experiences issues in Windows 10/11; see {{SectionLink|Troubleshooting|Installer}} for how to install Oni manually if you run into a problem, but give the installer a try first.&#039;&#039;&lt;br /&gt;
When the Oni CD is inserted, the installation will automatically start with the following steps:&lt;br /&gt;
*Language selection (maybe): If you have a multilingual version of Oni, you&#039;ll be asked to choose the language first.&lt;br /&gt;
*Installation process itself: The usual stuff (software license agreement, installation folder selection...).&lt;br /&gt;
*Prompt to install DirectX/OpenGL: &#039;&#039;&#039;Skip this&#039;&#039;&#039;, as the version of DirectX or OpenGL provided with Oni is &#039;&#039;very&#039;&#039; old.&lt;br /&gt;
&lt;br /&gt;
A shortcut to Oni is automatically generated and placed on your desktop.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
The installer requires Mac OS 9 to run, but you can simply open the CD and drag the &amp;quot;Oni ƒ&amp;quot; folder to the desired place on your hard drive. It&#039;s recommended that you then rename the folder to simply &amp;quot;Oni&amp;quot;. See the {{SectionLink||Patches}} to get the right version of the Oni game application for your system. If Oni still does not run properly, see [[Troubleshooting]].&lt;br /&gt;
&lt;br /&gt;
===Linux===&lt;br /&gt;
Oni was not developed for Linux, but for unofficial support with installing and patching Oni via Wine, see [[Playing in Linux]].&lt;br /&gt;
&lt;br /&gt;
==Post-installation notes==&lt;br /&gt;
All of Oni&#039;s files will be found in &#039;&#039;&#039;C:\Program Files\Oni&#039;&#039;&#039; on Windows, and &#039;&#039;&#039;wherever you dragged the folder to&#039;&#039;&#039; on the Mac. The name of the folder does not have to be &amp;quot;Oni&amp;quot; and the Oni application can be renamed, too, but it is not recommended (some community tools expect the app to be called by its original name). Look at [[Oni (folder)|this page]] for a listing of the files you should have and a description of what they do.&lt;br /&gt;
&lt;br /&gt;
===Windows===&lt;br /&gt;
#Oni does not create any important registry entries (just [[Talk:Installation#Registry redux|this one]] for uninstallation purposes). An installation of Oni consists entirely of the &amp;quot;Oni&amp;quot; folder; this makes it easy to back up Oni before experimenting with it.&lt;br /&gt;
#The save-game file persist.dat, as well as key_config.txt and Oni&#039;s log files, will &amp;lt;u&amp;gt;not&amp;lt;/u&amp;gt; be saved next to Oni.exe if you are not running the game as an administrator. See {{SectionLink|Oni (folder)|Warning for non-admins}} to learn more.&lt;br /&gt;
#Retail versions of Oni sometimes check for the installation CD, but the original U.S. distribution did not. If you run into a CD check, you can get rid of it by using the Oni.exe that is installed automatically by the [[AE]] (directly downloadable [[Customizing#CD check|here]]) or by using [[OniX]]. Otherwise you need to have either the Oni CD-ROM in the drive or any mounted volume with the same as the CD-ROM.&lt;br /&gt;
#If Oni.exe is opened by double-clicking it or its shortcut, it first looks for GameDataFolder (which we call &amp;quot;the GDF&amp;quot;) in the same directory as itself. If Oni.exe is launched from the command line, it first looks for the GDF in the current command line directory, and if it&#039;s called by a .bat it looks in the location of the .bat that called it. Wherever it starts looking, Oni will also look for a folder in that directory called &amp;quot;OniEngine&amp;quot; and look inside there too for a GameDataFolder. If neither location contains the GDF, Oni progressively checks the parent directories, all the way up to C:\ if necessary, looking for the GDF (or an OniEngine folder with the GDF inside) at each level. OniX behaves the same except that it never looks for OniEngine.&lt;br /&gt;
&lt;br /&gt;
===Mac===&lt;br /&gt;
#The Mac app never checks for the Oni disc in the CD-ROM drive.&lt;br /&gt;
#When opened, the app first looks for the GameDataFolder in the same directory as itself. If the GDF is not found there, it continues to look in each parent directory up to the root of the hard drive. Unlike in Windows, the app never looks for an OniEngine folder.&lt;br /&gt;
&lt;br /&gt;
==Patches==&lt;br /&gt;
Retail Oni will not usually run on modern computers without a patched game application. For the sake of historical completeness, below is a table of Oni&#039;s compatibility with every version of Windows and the Mac OS going back to the minimum required OS that was listed for Oni when it launched in 2001. If you still encounter problems after following these directions, see the [[Troubleshooting]] page.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:auto; margin-right:auto;&amp;quot;&lt;br /&gt;
|+Windows&lt;br /&gt;
!Version&lt;br /&gt;
!width=300px|Oni.exe&lt;br /&gt;
!width=300px|OniX.exe&lt;br /&gt;
|-&lt;br /&gt;
|Windows 95, 98, 2000, ME&lt;br /&gt;
|The {{Hover|vanilla|text=The original unmodded game}} version of Oni.exe should work out of the box.&lt;br /&gt;
|The &#039;&#039;legacy&#039;&#039; build of [[OniX|OniX.exe]] will also work (however the game data conversion script only runs in Windows 2000 or later).&lt;br /&gt;
|-&lt;br /&gt;
|Windows XP, Vista, 7&lt;br /&gt;
|A crashing bug began to manifest in Oni.exe around the time of XP. It is fixed by installing the [[Daodan DLL]] or by installing the [[Anniversary Edition]] modding framework, which includes the DLL.&lt;br /&gt;
|The &#039;&#039;legacy&#039;&#039; build of OniX.exe will work without issue.&lt;br /&gt;
|-&lt;br /&gt;
|Windows 8&lt;br /&gt;
|As above, install the Daodan DLL or the AE. Starting with Win8, however, you may experience mouse-pointing issues, which requires turning off display scaling for Oni (instructions [[Mouse control issues#Camera|HERE]]).&lt;br /&gt;
|The &#039;&#039;legacy&#039;&#039; build of OniX.exe will work without issue.&lt;br /&gt;
|-&lt;br /&gt;
|Windows 10, 11&lt;br /&gt;
|As above, install the Daodan DLL or the AE, and turn off display scaling if you have mouse issues.&lt;br /&gt;
|The &#039;&#039;modern&#039;&#039; build of OniX.exe is designed to work on Windows 10 and 11.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:auto; margin-right:auto;&amp;quot;&lt;br /&gt;
|+Macintosh&lt;br /&gt;
!Version&lt;br /&gt;
!width=530px|Notes&lt;br /&gt;
|-&lt;br /&gt;
|Mac OS 8.6–9.x&lt;br /&gt;
|The original version of Oni should work out of the box.&lt;br /&gt;
|-&lt;br /&gt;
|Mac OS X 10.0–10.6&lt;br /&gt;
|Use the community-patched version of The Omni Group&#039;s Mac OS X port found [[OMNI|HERE]].&lt;br /&gt;
|-&lt;br /&gt;
|Mac OS X 10.7–macOS 10.14&lt;br /&gt;
|Use Feral Interactive&#039;s Intel Mac port found [[FERAL|HERE]].&lt;br /&gt;
|-&lt;br /&gt;
|macOS 10.15+&lt;br /&gt;
|32-bit apps are no longer supported, so you must boot in macOS 10.14 or below to play Oni.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Customization==&lt;br /&gt;
For information on customizing the controls and making other changes to Oni&#039;s settings, see [[Customizing]].&lt;br /&gt;
&lt;br /&gt;
==Mods==&lt;br /&gt;
The community has produced a number of mods. You can browse the mods on the [http://mods.oni2.net Mod Depot], but you might just want to start at the [[Anniversary Edition]] page since mods are generally installed through the Anniversary Edition&#039;s Installer.&lt;br /&gt;
&lt;br /&gt;
The central introduction to making your own mods is found [[Introduction to modding|HERE]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Oni Support]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:ONCC&amp;diff=47082</id>
		<title>OBD:ONCC</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:ONCC&amp;diff=47082"/>
		<updated>2026-04-09T01:39:22Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: fixed hex transcription error&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OBD_File_Header | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character | align=center}}&lt;br /&gt;
&lt;br /&gt;
[[Image:oncc_a.gif]]&lt;br /&gt;
&lt;br /&gt;
==Air settings==&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x000 | res_id   |FF0000| 01 DF 03 00 | 991         | 00991-konoko_generic.ONCC }}&lt;br /&gt;
{{OBDtr| 0x004 | lev_id   |FFFF00| 01 00 00 06 | 0           | level 3 }}&lt;br /&gt;
{{OBDtr| 0x008 | float    |00FF00| CD CC 0C 3F | 0.550000    | fall speed (always 0.55) (mostly unused, see below) }}&lt;br /&gt;
{{OBDtr| 0x00C | float    |00FF00| 8F C2 75 3D | 0.060000    | strength of gravity for this character }}&lt;br /&gt;
{{OBDtr| 0x010 | float    |00FF00| CD CC 8C 3F | 1.100000    | starting velocity for a simple (tap) JUMP }}&lt;br /&gt;
{{OBDtr| 0x014 | float    |00FF00| 00 00 80 C0 | -4.000000   | maximum velocity for jumping and falling }}&lt;br /&gt;
{{OBDtr| 0x018 | float    |00FF00| 8F C2 F5 3C | 0.030000    | upward acceleration as long as you hold JUMP }}&lt;br /&gt;
{{OBDtr| 0x01C | uint16   |00FFFF| 07 00       | 7           | fall timer (always 7) (mostly unused, see below) }}&lt;br /&gt;
{{OBDtr| 0x01E | uint16   |00FFFF| 14 00       | 20          | how long you can continue holding down JUMP to increase the height of your jump }}&lt;br /&gt;
{{OBDtr| 0x020 | float    |FF00FF| 00 00 34 42 | 45.000000   | maximum falling height without damage }}&lt;br /&gt;
{{OBDtr| 0x024 | float    |FF00FF| 00 00 07 43 | 135.000000  | maximum falling height with damage }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Units&lt;br /&gt;
:Times are in frames&lt;br /&gt;
:Heights are in world units (0.1m or 4&amp;quot;)&lt;br /&gt;
:Velocities are in world units per tick (1/60s)&lt;br /&gt;
:Accelerations are in world units per tick squared&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Fall speed and timer&lt;br /&gt;
:The fields 0x008 and 0x01C are only looked at when predicting whether an attack will hit a target while the attacker is in midair. They are probably a development relic that is looked at in error, as the actual falling speed is determined by the gravity setting at 0x00C and the actual &amp;quot;fall timer&amp;quot; is the jump timer at 0x01E.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Jump timer&lt;br /&gt;
:You can press JUMP multiple times during the time window when it&#039;s large enough. See the [http://mods.oni2.net/node/83 Barabas Jetpack mod] for an application of this principle.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;Falling height: let FH1 be the height at 0x20&lt;br /&gt;
:let FH2 be the height at 0x24&lt;br /&gt;
:let BH be the base health of the character&lt;br /&gt;
:let FH be the actual falling height&lt;br /&gt;
:then, if FH &amp;gt; FH2, the character is killed&lt;br /&gt;
:if FH &amp;lt; FH1, the character takes no damage&lt;br /&gt;
:if FH1 &amp;lt; FH &amp;lt; FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH&lt;br /&gt;
&lt;br /&gt;
==Shadow settings==&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x028 | link     |FF8000| 01 F8 03 00 | 1016        | link to 01016-shadow1.[[OBD:TXMP|TXMP]] }}&lt;br /&gt;
{{OBDtr| 0x02C | float    |FF8000| 00 00 40 41 | 12.000000   | height where the diameter of the shadow shrinks to 0x03C }}&lt;br /&gt;
{{OBDtr| 0x030 | float    |FF8000| 00 00 00 41 | 8.000000    | height range over which the diameter of the shadow decreases from 0x034 to 0x038 and the shadow starts to fades out from 0x040 to 0x042 }}&lt;br /&gt;
{{OBDtr| 0x034 | float    |FF8000| 00 00 C0 40 | 6.000000    | maximum diameter of the shadow }}&lt;br /&gt;
{{OBDtr| 0x038 | float    |FF8000| 00 00 90 40 | 4.500000    | diameter that the shadow shrinks to when 0x030 is reached }}&lt;br /&gt;
{{OBDtr| 0x03C | float    |FF8000| 00 00 40 40 | 3.000000    | minimum diameter of the shadow }}&lt;br /&gt;
{{OBDtr| 0x040 | uint16   |FF8000| 30 00       | 48          | starting transparency of the shadow as the character rises towards 0x030 }}&lt;br /&gt;
{{OBDtr| 0x042 | uint16   |FF8000| 30 00       | 48          | starting transparency of the shadow when the character begins to get above 0x030 }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Jump settings (unused)==&lt;br /&gt;
These fields were deprecated at some point in Oni&#039;s development and do nothing.&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x044 | float    |FF0080| 00 00 C8 41 | 25.000000   | &amp;quot;jump distance&amp;quot;; unused (always 25) }}&lt;br /&gt;
{{OBDtr| 0x048 | uint8    |FFC8C8| 16          | 22          | &amp;quot;jump height&amp;quot;; unused (always 22) }}&lt;br /&gt;
{{OBDtr| 0x049 | uint8    |FFC8C8| 06          | 6           | &amp;quot;jump distance squares&amp;quot;; unused (always 6) }}&lt;br /&gt;
{{OBDtr| 0x04A | char[2]  |FFC8C8| AD DE       | dead        | padding }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Cover settings==&lt;br /&gt;
These fields were deprecated at some point in Oni&#039;s development and do nothing.&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x04C | float    |FFFFC8| 00 00 20 42 | 40.000000   | &amp;quot;ray increment&amp;quot;; unused (always 40) }}&lt;br /&gt;
{{OBDtr| 0x050 | float    |FFFFC8| 00 00 96 43 | 300.000000  | &amp;quot;ray max&amp;quot;; unused (always 300) }}&lt;br /&gt;
{{OBDtr| 0x054 | float    |FFFFC8| 35 FA 8E 3C | 0.017453    | &amp;quot;ray angle&amp;quot;; unused (always π/180) }}&lt;br /&gt;
{{OBDtr| 0x058 | float    |FFFFC8| DB 0F C9 3F | 1.570796    | &amp;quot;ray angle max&amp;quot;; unused (always π/2) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Autofreeze settings==&lt;br /&gt;
These fields were deprecated at some point in Oni&#039;s development and do nothing.&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x05C | float    |FFFFC8| 00 00 A0 40 | 5.000000    | &amp;quot;distance XZ&amp;quot;; unused (always 5) }}&lt;br /&gt;
{{OBDtr| 0x060 | float    |FFFFC8| 00 00 80 3F | 1.000000    | &amp;quot;distance Y&amp;quot;; unused (always 1) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Inventory settings==&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x064 | uint16    |C8FFC8| 06 00      | 6           | hypo regeneration rate in ticks per hit point restored }}&lt;br /&gt;
{{OBDtr| 0x066 | char[2]  |C8FFC8| AD DE       | dead        | padding }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==LOD settings==&lt;br /&gt;
Squares of the distance from the camera at which each LOD kicks in; see {{SectionLink|XML:ONCC|&amp;lt;LODConstants&amp;gt;}} for an explanation of this table, and {{SectionLink|Graphics|LOD}} for the full calculation on which LOD to use.&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x068 | float    |C8FFFF| 00 10 3D 48 |193600.000000| min. distance for super-low LOD; always 440² }}&lt;br /&gt;
{{OBDtr| 0x06C | float    |C8FFFF| 00 10 3D 47 | 48400.000000| min. distance for low LOD; always 220² }}&lt;br /&gt;
{{OBDtr| 0x070 | float    |C8FFFF| 00 10 3D 46 | 12100.000000| min. distance for medium LOD; always 110² }}&lt;br /&gt;
{{OBDtr| 0x074 | float    |C8FFFF| 00 00 00 00 |     0.000000| min. distance for high LOD; always 0 }}&lt;br /&gt;
{{OBDtr| 0x078 | float    |C8FFFF| 00 00 00 00 |     0.000000| min. distance for super-high LOD; always 0 }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Hurt sound settings==&lt;br /&gt;
The numbers below cannot be understood without some elaboration. See [[XML:ONCC#.3CHurtSoundConstants.3E|HERE]] for the full calculation of whether to play a hurt sound and which sound to play.&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x07C | uint16   |FFC8FF| 23 00       | 35          | minimum % chance of playing a pain sound if char. has not been hurt before (always 35) }}&lt;br /&gt;
{{OBDtr| 0x07E | uint16   |FFC8FF| 5A 00       | 90          | maximum % chance of playing a pain sound if char. has not been hurt before (always 90) }}&lt;br /&gt;
{{OBDtr| 0x080 | uint16   |FFC8FF| 0F 00       | 15          | damage threshold; used to calculate a percentage chance of pain sound between min % and max % (always 15) }}&lt;br /&gt;
{{OBDtr| 0x082 | uint16   |FFC8FF| 78 00       | 120         | time in ticks before the damage tracker used for this AI&#039;s pain sounds resets (always 120) }}&lt;br /&gt;
{{OBDtr| 0x084 | uint16   |FFC8FF| 23 00       | 35          | time in ticks that must pass between pain sounds being played (always 35) }}&lt;br /&gt;
{{OBDtr| 0x086 | uint16   |FFC8FF| 01 00       | 1           | number of times that AI will play light pain sound before &amp;quot;upgrading&amp;quot; to a medium pain sound (always 1) }}&lt;br /&gt;
{{OBDtr| 0x088 | uint16   |FFC8FF| 02 00       | 2           | number of times that AI will play medium pain sound before &amp;quot;upgrading&amp;quot; to a heavy pain sound (always 2) }}&lt;br /&gt;
{{OBDtr| 0x08A | uint16   |FFC8FF| 64 00       | 100         | chance of playing a death sound (always 100) }}&lt;br /&gt;
{{OBDtr| 0x08C | uint16   |FFC8FF| 0A 00       | 10          | minimum damage required for an AI to play the pain sound at maximum volume (always 10) }}&lt;br /&gt;
{{OBDtr| 0x08E | uint16   |FFC8FF| 0C 00       | 12          | cumulative damage before a light pain sound gets upgraded to a medium pain sound (always 12) }}&lt;br /&gt;
{{OBDtr| 0x090 | uint16   |FFC8FF| 16 00       | 22          | cumulative damage before a medium pain sound gets upgraded to a heavy pain sound (always 22) }}&lt;br /&gt;
{{OBDtr| 0x092 | bool     |FFC800| 00          | 0           | runtime only: if sound pointers have been set (if sounds are found) }}&lt;br /&gt;
{{OBDtr| 0x093 | char[1]  |C800C8| DE          | dead        | padding }}&lt;br /&gt;
{{OBDtr| 0x094 | float    |C87C64| 00 00 00 3F | 0.500000    | minimum volume of pain sound (before 0x08C is reached and volume becomes 100%) }}&lt;br /&gt;
{{OBDtr2|0x098 | char[32] |B0C3D4| konoko_hurt_light         | light hurt sound (reference to 08121-konoko_hurt_light.[[OBD:OSBD|imp.OSBD]] of level 0) }}&amp;lt;!--Don&#039;t change the word &amp;quot;reference&amp;quot; in this article without updating [[OBD:Data types#Links by name]]--&amp;gt;&lt;br /&gt;
{{OBDtr2|0x0B8 | char[32] |B0C3D4| konoko_hurt_medium        | medium hurt sound (reference to 08123-konoko_hurt_medium.imp.OSBD of level 0) }}&lt;br /&gt;
{{OBDtr2|0x0D8 | char[32] |B0C3D4| konoko_hurt_heavy         | heavy hurt sound (reference to 08119-konoko_hurt_heavy.imp.OSBD of level 0) }}&lt;br /&gt;
{{OBDtr2|0x0F8 | char[32] |B0C3D4| konoko_death              | death sound (reference to 08115-konoko_death.imp.OSBD of level 0) }}&lt;br /&gt;
{{OBDtr| 0x118 | offset   |E7CEA5| 00 00 00 00 | 0           | runtime only: raw offset of light hurt sound }}&lt;br /&gt;
{{OBDtr| 0x11C | offset   |E7CEA5| 00 00 00 00 | 0           | runtime only: raw offset of medium hurt sound }}&lt;br /&gt;
{{OBDtr| 0x120 | offset   |E7CEA5| 00 00 00 00 | 0           | runtime only: raw offset of heavy hurt sound }}&lt;br /&gt;
{{OBDtr| 0x124 | offset   |E7CEA5| 00 00 00 00 | 0           | runtime only: raw offset of death sound }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==AI settings==&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x128 | bitset   |E7CEA5| 17 00 00 00 | 23          | AI options bitset; see below }}&lt;br /&gt;
{{OBDtr| 0x12C | float    |FFDDDD| 00 00 80 3F | 1.000000    | AI rotation speed factor; always 1.0 except for ninjabots, ninjas and super_ninja, which use 2.0 }}&lt;br /&gt;
{{OBDtr| 0x130 | uint16   |64AAAA| 06 00       | 6           | minimum number of frames AI can remain dazed (in fallen position) when it is knocked down }}&lt;br /&gt;
{{OBDtr| 0x132 | uint16   |64AAAA| 18 00       | 24          | maximum number of frames AI can remain dazed (in fallen position) when it is knocked down (actual number used is picked randomly from the range {min ... max}) }}&lt;br /&gt;
{{OBDtr| 0x134 | uint32   |EBEBEB| 0F 00 00 00 | 15          | number of frames after which AI realizes that it is in the firing spread and it starts dodging }}&lt;br /&gt;
{{OBDtr| 0x138 | float    |8C8CCC| 00 00 80 3F | 1.000000    | minimum dodge time; how long AI should perform dodging/hiding in response to being inside a firing spread (the higher it is, the longer he will hide/dodge even after firing spread disappears) }}&lt;br /&gt;
{{OBDtr| 0x13C | float    |8C8CCC| 00 00 80 3F | 1.000000    | dodge priority dampening; the higher it is, the lower priority the AI gives to dodging }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;AI options bitset&lt;br /&gt;
:Allows or disables some parts of the AI behavior:&lt;br /&gt;
*no flags - startle anim is enabled, rest is disabled&lt;br /&gt;
*0x01 - startle anim disabled&lt;br /&gt;
*0x02 - firing spread/projectile dodge enabled for melee&lt;br /&gt;
*0x04 - requires 0x02; firing spread/projectile dodge enabled for weapons; AI tries to face shooter and shoot back while dodging&lt;br /&gt;
*0x08 - requires 0x02, overrides 0x04 if both are set; firing spread/projectile dodge enabled for weapons; AI isn&#039;t shooting, it just tends to run away, not facing shooter&lt;br /&gt;
*0x10 - running weapon pickup enabled; bit not used; only 0x2A8 is used for the running pickup chance&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
;AI rotation speed factor&lt;br /&gt;
:A rotation speed of 1 is roughly one turn (360°) per second. The setting is only effective if the AI is in control. So it&#039;s a bit like the AI&#039;s mouse sensitivity.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==AI targeting prediction==&lt;br /&gt;
See [[XML:ONCC#.3CTargeting.3E|HERE]] for how the variables here interact to control the AI&#039;s target prediction.&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x140 | float    |8C8CCC| 00 00 00 3F | 0.500000    | multiplied against target&#039;s distance to get error in AI&#039;s/turret&#039;s first wild shot (always 0.5) }}&lt;br /&gt;
{{OBDtr| 0x144 | float    |8C8CCC| 00 00 C8 41 | 25.000000   | max value for result of multiplication above (always 25) }}&lt;br /&gt;
{{OBDtr| 0x148 | float    |8C8CCC| 00 00 80 3F | 1.000000    | accuracy multiplier for prediction of target&#039;s position (always 1) }}&lt;br /&gt;
{{OBDtr| 0x14C | uint32    |FF00C8| 00 00 00 00 | 0           | maximum allowed frames of lookback to be used for predicting target&#039;s position (always 0) }}&lt;br /&gt;
{{OBDtr| 0x150 | uint32    |FF00C8| 05 00 00 00 | 5           | frames of delay in recognizing target&#039;s current position (always 5) }}&lt;br /&gt;
{{OBDtr| 0x154 | uint32    |FF00C8| 0F 00 00 00 | 15          | number of frames over which AI can average target&#039;s velocity to help predict position (always 15) }}&lt;br /&gt;
{{OBDtr| 0x158 | uint32    |FF00C8| 3C 00 00 00 | 60          | size in frames of target&#039;s history location buffer (always 60) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==AI weapon skills==&lt;br /&gt;
This is an array of 13 sets of skill variables, one for each weapon. Below is the data for the first element:&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x15C | float    |F0F096| 00 00 00 00 | 0.000000    | recoil compensation amount (0.0 &amp;lt;nowiki&amp;gt;= no compensation, 1.0 =&amp;lt;/nowiki&amp;gt; no recoil) }}&lt;br /&gt;
{{OBDtr| 0x160 | float    |F0F096| 00 00 00 00 | 0.000000    | minimum aiming error as an angle in radians }}&lt;br /&gt;
{{OBDtr| 0x164 | float    |F0F096| 00 00 00 00 | 0.000000    | shot grouping error as a percentage }}&lt;br /&gt;
{{OBDtr| 0x168 | float    |F0F096| 00 00 80 3F | 1.000000    | how quickly aiming inaccuracy decreases or increases while shooting (ranges from 0.0 to 1.0) }}&lt;br /&gt;
{{OBDtr| 0x16C | float    |F0F096| 00 00 80 3F | 1.000000    | shooting inaccuracy multiplier }}&lt;br /&gt;
{{OBDtr| 0x170 | uint16   |00C864| 00 00       | 0           | minimum delay in ticks before pulling the trigger again }}&lt;br /&gt;
{{OBDtr| 0x172 | uint16   |00C864| 00 00       | 0           | maximum delay in ticks before pulling the trigger again }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
AI weapon skills can be reviewed with e.g. &#039;&#039;&#039;ai2_skill_select konoko_generic w1_tap&#039;&#039;&#039; and then either &#039;&#039;&#039;ai2_skill_show&#039;&#039;&#039; (prints to console) or &#039;&#039;&#039;ai2_skill_save&#039;&#039;&#039; (prints to file).&lt;br /&gt;
&lt;br /&gt;
The first weapon (weapon 0) is not in the game anymore, whatever it was. Mutant Muro&#039;s thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade&#039;s Devil Star, except &#039;&#039;&#039;w10_sni&#039;&#039;&#039; is still available). Barabas&#039; Wave Motion Cannon is a bit mixed up since the beam is made of &#039;&#039;&#039;w12_ba2&#039;&#039;&#039; particles and the grenade is a &#039;&#039;&#039;w11_ba1&#039;&#039;&#039; particle.&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
|- bgcolor=&amp;quot;#E9E9E9&amp;quot; align=center&lt;br /&gt;
!Weapon       ||Offset     ||recoil||bestangle||error||decay||inaccuracy||delays&lt;br /&gt;
|- align=center     &lt;br /&gt;
|&#039;&#039;&#039;w0_sec&#039;&#039;&#039; ||0x15C-0x173|| 0.0  || 0.000000|| 0.00|| 1.0 || 1.0      || 0 - 0&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w1_tap&#039;&#039;&#039; ||0x174-0x18B|| 0.0  || 0.000000|| 0.40|| 0.4 || 0.0      || 30 - 45&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w2_sap&#039;&#039;&#039; ||0x18C-0x193|| 0.3  || 0.013962|| 0.13|| 1.0 || 1.0      || 0 - 0&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w3_phr&#039;&#039;&#039; ||0x194-0x20B|| 0.3  || 0.010472|| 0.05|| 0.5 || 1.0      || 0 - 0&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w4_psm&#039;&#039;&#039; ||0x20C-0x213|| 0.3  || 0.015707|| 0.03|| 0.2 || 1.0      || 0 - 0&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w5_sbg&#039;&#039;&#039; ||0x214-0x22B|| 0.3  || 0.001745|| 0.00|| 0.1 || 1.0      || 0 - 0&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w6_vdg&#039;&#039;&#039; ||0x22C-0x233|| 0.3  || 0.001745|| 0.13|| 0.9 || 1.0      || 0 - 0&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w7_scc&#039;&#039;&#039; ||0x234-0x24B|| 0.3  || 0.001745|| 0.05|| 0.1 || 1.0      || 0 - 0&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w8_mbo&#039;&#039;&#039; ||0x24C-0x253|| 0.3  || 0.005236|| 0.01|| 0.5 || 1.0      || 0 - 0&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w9_scr&#039;&#039;&#039; ||0x254-0x26B|| 0.3  || 0.010472|| 0.04|| 0.5 || 1.0      || 0 - 0&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w10_sni&#039;&#039;&#039;||0x26C-0x273|| 0.0  || 0.000000|| 0.00|| 1.0 || 1.0      || 0 - 0&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w11_ba1&#039;&#039;&#039;||0x274-0x28B|| 0.0  || 0.000000|| 0.00|| 1.0 || 1.0      || 0 - 0&lt;br /&gt;
|- align=center&lt;br /&gt;
|&#039;&#039;&#039;w12_ba2&#039;&#039;&#039;||0x28B-0x293|| 0.0  || 0.000000|| 0.00|| 1.0 || 1.0      || 0 - 0&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Other AI behaviors==&lt;br /&gt;
[[Image:oncc_m.gif]]&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x294 | uint32   |00C8FF| 5A 00 00 00 | 90          | how long AI will continue shooting a dead body to make sure it&#039;s dead (always 90) }}&lt;br /&gt;
{{OBDtr| 0x298 | uint32   |00C8FF| F0 00 00 00 | 240         | how long AI will stand over dead body before returning to last job (always 240) }}&lt;br /&gt;
{{OBDtr| 0x29C | uint32   |00C8FF| B4 00 00 00 | 180         | how long after losing sight of target until AI engages pursuit mode (always 180) }}&lt;br /&gt;
{{OBDtr| 0x2A0 | uint32   |00C8FF| 28 00 00 00 | 40          | chance (as a percentage) of AI taunting a dead body }}&lt;br /&gt;
{{OBDtr| 0x2A4 | uint32   |00C8FF| 37 00 00 00 | 55          | chance (as a percentage) of AI running to some weapon to pick it up; can be checked in Dev Mode with the &#039;&#039;&#039;debug_gun_behavior&#039;&#039;&#039; command }}&lt;br /&gt;
{{OBDtr| 0x2A8 | uint32   |00C8FF| 3C 00 00 00 | 60          | chance (as a percentage) of AI performing a running weapon pickup (including acrobatics moves, slides) instead of the normal &amp;quot;stop and pick up&amp;quot;; this is calculated after the engine decides that the AI will go for a gun }}&lt;br /&gt;
{{OBDtr| 0x2AC | uint16   |C80040| 00 00       | 0           | combat profile ID; for example *0D* is for Mutant Muro }}&lt;br /&gt;
{{OBDtr| 0x2AE | uint16   |C80040| 16 00       | 22          | melee profile ID }}&lt;br /&gt;
{{OBDtr| 0x2B0 | uint8    |FFCD96| 64          | 100         | &amp;quot;taunt&amp;quot; sound probability (always) }}&lt;br /&gt;
{{OBDtr| 0x2B1 | uint8    |FFCD96| 00          | 0           | &amp;quot;alert&amp;quot; sound probability (never) }}&lt;br /&gt;
{{OBDtr| 0x2B2 | uint8    |FFCD96| 00          | 0           | &amp;quot;startle&amp;quot; sound probability (never) }}&lt;br /&gt;
{{OBDtr| 0x2B3 | uint8    |FFCD96| 00          | 0           | &amp;quot;checkbody&amp;quot; sound probability (never) }}&lt;br /&gt;
{{OBDtr| 0x2B4 | uint8    |FFCD96| 00          | 0           | &amp;quot;pursue&amp;quot; sound probability (never) }}&lt;br /&gt;
{{OBDtr| 0x2B5 | uint8    |FFCD96| 00          | 0           | &amp;quot;cower&amp;quot; sound probability (never) }}&lt;br /&gt;
{{OBDtr| 0x2B6 | uint8    |FFCD96| 64          | 100         | &amp;quot;superpunch&amp;quot; probability (always) }}&lt;br /&gt;
{{OBDtr| 0x2B7 | uint8    |FFCD96| 64          | 100         | &amp;quot;superkick&amp;quot; probability (always) }}&lt;br /&gt;
{{OBDtr| 0x2B8 | uint8    |FFCD96| 00          | 0           | &amp;quot;super3&amp;quot; sound probability (never) }}&lt;br /&gt;
{{OBDtr| 0x2B9 | uint8    |FFCD96| 00          | 0           | &amp;quot;super4&amp;quot; sound probability (never) }}&lt;br /&gt;
{{OBDtr| 0x2BA | char[2]  |C8C864| 00 00       | 0           | padding }}&lt;br /&gt;
{{OBDtr2|0x2BC | char[32] |0096C8| c17_99_28konoko           | &amp;quot;taunt&amp;quot; sound (reference to 08108-c17_99_28konoko.[[OBD:OSBD|amb.OSBD]] of level 0) }}&lt;br /&gt;
{{OBDtr2|0x2DC | char[32] |0096C8| unused                    | &amp;quot;alert&amp;quot; sound name }}&lt;br /&gt;
{{OBDtr2|0x2FC | char[32] |0096C8| unused                    | &amp;quot;startle&amp;quot; sound name }}&lt;br /&gt;
{{OBDtr2|0x31C | char[32] |0096C8| unused                    | &amp;quot;checkbody&amp;quot; sound name }}&lt;br /&gt;
{{OBDtr2|0x33C | char[32] |0096C8| unused                    | &amp;quot;pursue&amp;quot; sound name }}&lt;br /&gt;
{{OBDtr2|0x35C | char[32] |0096C8| unused                    | &amp;quot;cower&amp;quot; sound name }}&lt;br /&gt;
{{OBDtr2|0x37C | char[32] |0096C8| c18_79_14konoko           | &amp;quot;superpunch&amp;quot; sound name (reference to 08110-c17_99_28konoko.amb.OSBD of level 0) }}&lt;br /&gt;
{{OBDtr2|0x39C | char[32] |0096C8| c18_79_15konoko           | &amp;quot;superkick&amp;quot; sound name (reference to 08112-c17_99_28konoko.amb.OSBD of level 0) }}&lt;br /&gt;
{{OBDtr2|0x3BC | char[32] |0096C8| unused                    | &amp;quot;super3&amp;quot; sound name (only Mukade uses this slot) }}&lt;br /&gt;
{{OBDtr2|0x3DC | char[32] |0096C8| unused                    | &amp;quot;super4&amp;quot; sound name (never used in game data) }}&lt;br /&gt;
{{OBDtrBK|The following 7 vision fields are used to detect if a character can be seen by AI; see {{SectionLink||Vision field}} for explanation }}&lt;br /&gt;
{{OBDtr| 0x3FC | float    |FF80C0| 00 80 ED 43 | 475.000000  | central vision distance }}&lt;br /&gt;
{{OBDtr| 0x400 | float    |FF80C0| 00 00 16 43 | 150.000000  | peripheral vision distance }}&lt;br /&gt;
{{OBDtr| 0x404 | float    |FF80C0| 7D 1B 44 3F | 0.766044    | vertical vision range }}&lt;br /&gt;
{{OBDtr| 0x408 | float    |FF80C0| F3 B3 51 3F | 0.819152    | central vision range }}&lt;br /&gt;
{{OBDtr| 0x40C | float    |FF80C0| E8 D5 12 3F | 0.573576    | central vision max }}&lt;br /&gt;
{{OBDtr| 0x410 | float    |FF80C0| D5 D0 31 3E | 0.173648    | peripheral vision range }}&lt;br /&gt;
{{OBDtr| 0x414 | float    |FF80C0| 6B 61 D8 BE | 0.422618    | peripheral vision max }}&lt;br /&gt;
{{OBDtr| 0x418 | uint32   |D0C0AF| B4 00 00 00 | 180         | how long will AI know exactly where its enemy is even if it can&#039;t see him with central vision field, and attempt to attack him }}&lt;br /&gt;
{{OBDtr| 0x41C | uint32   |D0C0AF| 84 03 00 00 | 900         | how long will AI remain strongly convinced that there is an enemy, but will investigate his presence rather than attack him }}&lt;br /&gt;
{{OBDtr| 0x420 | uint32   |D0C0AF| 10 0E 00 00 | 3600        | how long an AI will remain weakly convinced of an enemy&#039;s presence, looking around aimlessly to find him (Glance pursuit mode) }}&lt;br /&gt;
{{OBDtr| 0x424 | uint32   |D0C0AF| 10 0E 00 00 | 3600        | decay time for dropping back from high alert to medium alert }}&lt;br /&gt;
{{OBDtr| 0x428 | uint32   |D0C0AF| 50 46 00 00 | 18000       | decay time for dropping back from medium alert to low alert }}&lt;br /&gt;
{{OBDtr| 0x42C | uint32   |D0C0AF| A0 8C 00 00 | 36000       | decay time for dropping back from low alert to no alert status }}&lt;br /&gt;
{{OBDtr| 0x430 | float    |EEDDFF| 00 00 80 3F | 1.000000    | hearing radius; defines size of the sound-detection sphere around an AI }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Vision field===&lt;br /&gt;
See [[XML:ONCC#.3CVisionConstants.3E|HERE]] for details on how this works.&lt;br /&gt;
&lt;br /&gt;
==Body settings==&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr| 0x434 | link     |C5FF8A| 01 FB 03 00 | 1019       | link to 01019-konoko.[[OBD:ONCV|ONCV]]; defines variants and upgrades }}&lt;br /&gt;
{{OBDtr| 0x438 | link     |C5FF8A| 01 F9 03 00 | 1017       | link to [[OBD:ONCP|01017-.ONCP]]; lists the particles available for this character (trails, flashes, etc) }}&lt;br /&gt;
{{OBDtr| 0x43C | link     |C5FF8A| 01 FA 03 00 | 1018       | link to [[OBD:ONIA|01018-.ONIA]]; lists the special impact sounds (used for special combat moves) }}&lt;br /&gt;
{{OBDtr| 0x440 | bool     |C5FF8A| 00          | 0          | runtime: flag meaning that modifier type has been set by looking up modifier name and impact types have been set by looking up impact names; runtime only }}&lt;br /&gt;
{{OBDtr| 0x441 | uint8    |C5FF8A| 00          | 0           | padding }}&lt;br /&gt;
{{OBDtr| 0x442 | uint16   |C5FF8A| 00 00       | 0           | runtime: modifier type }}&lt;br /&gt;
{{OBDtr2|0x444 | char[16] |C0C0C0| Light                    | modifier name, used to look up modifier type }}&lt;br /&gt;
{{OBDtrBK|1=Array of 15 impact elements: first element }}&lt;br /&gt;
{{OBDtr2|0x454 | char[128]|FF0080| Footstep_Walk            | impact name, used to look up impact type (reference to 04124-Footstep_Walk.Impt of level 0); always the same; without the impacts you can&#039;t hear the steps of a character }}&lt;br /&gt;
{{OBDtr| 0x4D4 | uint16   |FF0080| FF FF       | 65536       | runtime: impact type (comes from 0x08 in [[OBD:Impt|Impt]]) }}&lt;br /&gt;
{{OBDtrBK|1=End of array }}&lt;br /&gt;
{{OBDtr| 0xBF2 | char[2]  |FFFFA5| 00 00       | unused      | padding (seen below) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Image:oncc_e.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBDth}}&lt;br /&gt;
{{OBDtr2|0xBF4 | char[64] |71FFB8| unused                  | name of particle spawned on death; only the Mad Bomber uses it }} &lt;br /&gt;
{{OBDtr| 0xC34 | offset   |0000BF| 00 00 00 00 | unused    | runtime: raw offset of death particle class }}&lt;br /&gt;
{{OBDtr| 0xC38 | offset   |0000BF| 00 00 00 00 | unused    | runtime: raw offset of cache of derived information on body model geometry }}&lt;br /&gt;
{{OBDtr| 0xC3C | link     |0000BF| 01 E6 03 00 | 998       | link to [[OBD:TRBS|00998-konoko_body_high.TRBS]] }}&lt;br /&gt;
{{OBDtr| 0xC40 | link     |0000BF| 01 E7 03 00 | 999       | link to [[OBD:TRMA|00999-konoko002_high_texture_generic.TRMA]] }}&lt;br /&gt;
{{OBDtr| 0xC44 | link     |0000BF| 01 E8 03 00 | 1000      | link to [[OBD:CBPM|01000-.CBPM]] }}&lt;br /&gt;
{{OBDtr| 0xC48 | link     |0000BF| 01 EC 03 00 | 1004      | link to [[OBD:CBPI|01004-.CBPI]] }}&lt;br /&gt;
{{OBDtr| 0xC4C | uint32   |804040| 2C 01 00 00 | 300       | how long in ticks before character can leave fight mode }} &lt;br /&gt;
{{OBDtr| 0xC50 | uint32   |804040| 30 75 00 00 | 30000     | how long in ticks before the Idle animation can be played the first time }} &lt;br /&gt;
{{OBDtr| 0xC54 | uint32   |804040| 30 75 00 00 | 30000     | how long in ticks before the Idle animation can be played another time }} &lt;br /&gt;
{{OBDtr| 0xC58 | uint32   |804040| C8 00 00 00 | 200       | base health of the character model; specific health information for every unique character is stored in the [[OBD:BINA/OBJC/CHAR|Character.BINA]] file}} &lt;br /&gt;
{{OBDtr| 0xC5C | uint32   |804040| 48 00 00 00 | 72        | &amp;quot;feet bits&amp;quot;; unused }} &lt;br /&gt;
{{OBDtr| 0xC60 | float    |FF22FF| 00 00 80 3F | 1.000000  | minimum body size factor }} &lt;br /&gt;
{{OBDtr| 0xC64 | float    |FF22FF| 00 00 80 3F | 1.000000  | maximum body size factor }} &lt;br /&gt;
{{Anchor|DamageTypes}}&lt;br /&gt;
{{OBDtrBK|The following 7 float values are ONCC-specific multipliers for each of the 7 PAR3 DamageTypes. See [[Particle damage types]] for an explanation of DamageTypes. Values range from 0.0-1.0, with 0 meaning &amp;quot;no immunity&amp;quot; and 1 meaning &amp;quot;total immunity&amp;quot;.&amp;lt;br&amp;gt;&lt;br /&gt;
Note: These multipliers only affect the stun damage and knockback components of a PAR3 action, not the HP damage dealt.}}&lt;br /&gt;
{{OBDtr| 0xC68 | float    |FF22FF| 00 00 00 00 | 0.000000    | &amp;quot;Normal&amp;quot; DamageType multiplier }} &lt;br /&gt;
{{OBDtr| 0xC6C | float    |FF22FF| 00 00 00 00 | 0.000000    | &amp;quot;MinorStun&amp;quot; DamageType multiplier }} &lt;br /&gt;
{{OBDtr| 0xC70 | float    |FF22FF| 00 00 00 3F | 0.500000    | &amp;quot;MajorStun&amp;quot; DamageType multiplier }} &lt;br /&gt;
{{OBDtr| 0xC74 | float    |FF22FF| 00 00 80 3E | 0.250000    | &amp;quot;MinorKnockdown&amp;quot; DamageType multiplier }} &lt;br /&gt;
{{OBDtr| 0xC78 | float    |FF22FF| 00 00 00 00 | 0.000000    | &amp;quot;MajorKnockdown&amp;quot; DamageType multiplier }} &lt;br /&gt;
{{OBDtr| 0xC7C | float    |FF22FF| 00 00 00 00 | 0.000000    | &amp;quot;Blownup&amp;quot; DamageType multiplier }} &lt;br /&gt;
{{OBDtr| 0xC80 | float    |FF22FF| 00 00 00 00 | 0.000000    | &amp;quot;Pickup&amp;quot; DamageType multiplier }} &lt;br /&gt;
{{OBDtr| 0xC84 | float    |FF22FF| 00 00 00 3F | 0.500000    | damage reducer, employed when the character has a [[boss shield]] (0.0-1.0 &amp;lt;nowiki&amp;gt;=&amp;lt;/nowiki&amp;gt; 0%-100%) }}&lt;br /&gt;
{{OBDtr| 0xC88 | link     |808080| 01 F6 03 00 | 1014        | link to 01014-konoko_animations.[[OBD:TRAC|TRAC]] }} &lt;br /&gt;
{{OBDtr| 0xC8C | link     |808080| 01 F7 03 00 | 1015        | link to 01015-konoko_screens.[[OBD:TRSC|TRSC]] }} &lt;br /&gt;
{{OBDtr| 0xC90 | uint16   |FFAA82| 1E 00       | 30          | AI rate of firing; unused }} &lt;br /&gt;
{{OBDtr| 0xC92 | uint16   |FFAA82| 00 00       | 0           | time between death and deletion, in frames (0 for all characters except Mad Bomber, who is 190 ticks) }} &lt;br /&gt;
{{OBDtr| 0xC94 | bool     |00D900| 00          | 0           | whether character is lefthanded (true for Ninjas, Ninjabots, Comguys) }} &lt;br /&gt;
{{OBDtr| 0xC95 | bool     |00D900| 01          | 1           | character has Daodan powers (can overheal with hypos, do more damage in overpower mode) and can display a Daodan aura particle)}} &lt;br /&gt;
{{OBDtr| 0xC96 | bool     |00D900| 00          | 0           | character has [[supershield]] }} &lt;br /&gt;
{{OBDtr| 0xC97 | bool     |00D900| 00          | 0           | knockdown resistant (used by MutantMuro.ONCC) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
;Body size factor&lt;br /&gt;
{|align=right&lt;br /&gt;
|[[Image:ONCC_body_size_factor-original.jpg|120px]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:ONCC_body_size_factor-spawn_order_change.jpg|120px]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
:The geometry specified in a character&#039;s [[TRBS]] (Totoro body set) can be multiplied by a scale factor. For example, the &#039;&#039;&#039;minime&#039;&#039;&#039; and &#039;&#039;&#039;behemoth&#039;&#039;&#039; [[cheats]] set that factor to 0.25 or 1.8, and back to 1. The size can be used for specific purposes (mini-Strikers, Mutant Muro, giant Shinatama), or it can be used to add generic variety to Oni&#039;s characters, as a complement to &amp;quot;character variants&amp;quot; ([[ONCV]]).&lt;br /&gt;
:The floats at 0xC60 and 0xC64 define a range in which Oni can pick a random body size factor (if the two values are identical, then the body size factor is effectively fixed instead of random). Konoko, Shinatama (both regular and zombified), Griffin (both variants) and Muro all have a fixed body size of 1. Mini-Strikers have 0.5 and giant Shinatama has 7 (yes, [[seven]]).&lt;br /&gt;
:Everybody else (including Barabas, Mukade and Kerr) has a random body size within 5% of 1 (i.e., the floats at 0xC60 and 0xC64 are 0.95 and 1.05). Mutant Muro is a bit odd because his &amp;quot;minimum&amp;quot; body size 1.75 and the &amp;quot;maximum&amp;quot; is 1.74 (the difference is barely noticeable anyway). In the [[Anniversary Edition]], some characters have altered factors (e.g., [[Shinatama Too]]).&lt;br /&gt;
:The random value is different every time the [[ONCC]] is looked up (e.g., when a character is spawned or shapeshifted) and is not reproducible. Here is a simple script for {{C|6}} a.k.a. [[IGMD/tctf]] (remove all BSL files and leave only the one below):&lt;br /&gt;
 func main&lt;br /&gt;
 {&lt;br /&gt;
   ai2_allpassive 1&lt;br /&gt;
   ai2_spawn a_v3&lt;br /&gt;
   ai2_spawn Lv_40&lt;br /&gt;
   ai2_spawn lobby_victim05&lt;br /&gt;
   chr_location 1 -1255 -1.5 50&lt;br /&gt;
   chr_location 2 -1255 -1.5 60&lt;br /&gt;
   chr_location 3 -1255 -1.5 70&lt;br /&gt;
   chr_location 4 -1255 -1.5 80&lt;br /&gt;
   ai2_lookatme&lt;br /&gt;
 }&lt;br /&gt;
:This script lines up four &amp;quot;usual suspects&amp;quot; against a wall in the parking lot of the TCTF HQ. Load the level repeatedly and note how their heights vary.&lt;br /&gt;
&lt;br /&gt;
{{OBD_File_Footer | type=ONCC | prev=OFGA | next=ONCP | name=Oni Character Class | family=Character}}&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=XML:TRSC&amp;diff=47081</id>
		<title>XML:TRSC</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=XML:TRSC&amp;diff=47081"/>
		<updated>2026-04-08T00:59:34Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{XML_File_Header | prev=TRMA | type=TRSC | next=TSFF | name=(Aiming) Screen Collection}}&lt;br /&gt;
&lt;br /&gt;
==General information==&lt;br /&gt;
*TRSCs can be global (level0_Final.dat) or local (level&#039;&#039;X&#039;&#039;_Final.dat). The commonly used ones, &#039;&#039;&#039;TRSCcomguy_screens&#039;&#039;&#039;, &#039;&#039;&#039;TRSCkonoko_screens&#039;&#039;&#039; and &#039;&#039;&#039;TRSCstriker_screens&#039;&#039;&#039;, are global whereas the rest are found in the levels where the characters appear who use them: &#039;&#039;&#039;TRSCmuro_screens&#039;&#039;&#039;, &#039;&#039;&#039;TRSCninja_screens&#039;&#039;&#039;, &#039;&#039;&#039;TRSCred_screens&#039;&#039;&#039; and &#039;&#039;&#039;TRSCtanker_screens&#039;&#039;&#039;.&lt;br /&gt;
*TRSCs are lists of all the aiming screens ([[XML:TRAS|TRAS]]) that can be applied to a character, based on their current animation state.&lt;br /&gt;
*Each [[XML:ONCC|ONCC]] links to one TRSC.&lt;br /&gt;
&lt;br /&gt;
==Example==&lt;br /&gt;
TRSCkonoko_screens:&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&amp;gt;&lt;br /&gt;
    &amp;lt;TRSC id=&amp;quot;0&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;AimingScreens&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASKONPISaim_screen_run&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASKONPISaim_screen_ss_lt&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASKONPISaim_screen_ss_rt&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASKONPISaim_screen_crouch&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASKONPISaim_screen_stand&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASKONOKOaim_screen_stand&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASKONOKOaim_screen_crouch&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASKONRIFaim_screen_stand&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASKONRIFaim_screen_crouch&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASSTRRIFaim_screen_crouch_r&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASKONRIFaim_screen_run&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASSTRPISaim_screen_crouch_r&amp;lt;/Link&amp;gt;&lt;br /&gt;
            &amp;lt;Link&amp;gt;TRASKONCOMaim_screen_stand&amp;lt;/Link&amp;gt;&lt;br /&gt;
        &amp;lt;/AimingScreens&amp;gt;&lt;br /&gt;
    &amp;lt;/TRSC&amp;gt;&lt;br /&gt;
 &amp;lt;/Oni&amp;gt;&lt;br /&gt;
&lt;br /&gt;
TRSCs have a variable number of aiming screens in them; as few as 11 (TRSCninja_screens) and as many as 14 (TRSCstriker_screens). What happens if a character&#039;s animation state is not covered by any TRAS?&lt;br /&gt;
&lt;br /&gt;
{{XML}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=XML:File_types&amp;diff=47080</id>
		<title>XML:File types</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=XML:File_types&amp;diff=47080"/>
		<updated>2026-04-08T00:58:52Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{Hatnote|See [[Introduction to modding]] if you are new to modding.}}&lt;br /&gt;
{{XML Home}}&lt;br /&gt;
Following is an overview of each of the 65 significant data types (45 basic, 16 OBJC, and 4 BINA) and 43 sub-types that they rely on.&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;border:1px solid #AAA; float:left&amp;quot;&lt;br /&gt;
|width=&amp;quot;250px&amp;quot; style=&amp;quot;text-align:center;&amp;quot;|&#039;&#039;&#039;Legend&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|Documentation status:&lt;br /&gt;
:[[Image:Aqua Dot-Green.png]] Available&lt;br /&gt;
:[[Image:Aqua Dot-Yellow.png]] Incomplete&lt;br /&gt;
:[[Image:Aqua Dot-Red.png]] Unavailable, see [[OBD:File types|OBD docs]]&amp;lt;br /&amp;gt;if you wish to mod the file type&lt;br /&gt;
|-&lt;br /&gt;
|Location:&lt;br /&gt;
:vanilla: An un-modded retail copy of Oni&lt;br /&gt;
:AE: The [[AE]] reorganizes some data&lt;br /&gt;
:global: File(s) found in level0_Final&lt;br /&gt;
:local: File(s) may be in level[1-19]_Final&lt;br /&gt;
:both: File(s) may be in either place&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;border:1px solid #AAA; margin-left:275px&amp;quot;&lt;br /&gt;
|colspan=&amp;quot;4&amp;quot; style=&amp;quot;text-align:center; max-width:950px&amp;quot;|&#039;&#039;&#039;Jump Table&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top; border:1px solid #AAA; border-width:0px 0px 0px 0px; padding-right:20px&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;A-B&#039;&#039;&#039; • [[#AKEV|ABNA]], [[#AKEV|AGQC]], &amp;lt;br&amp;gt;[[#AKEV|AGQG]], [[#AKEV|AGQR]], &amp;lt;br&amp;gt;[[#AISA|AISA]], [[#AKEV|AKAA]], &amp;lt;br&amp;gt;[[#AKEV|AKBA]], [[#AKEV|AKBP]], &amp;lt;br&amp;gt;[[#AKEV|AKEV]], [[#AKEV|AKOT]], &amp;lt;br&amp;gt;[[#AKEV|AKVA]], &#039;&#039;&#039;[[#BINA|BINA]]&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top; border:1px solid #AAA; border-width:0px 0px 0px 0px; padding-right:20px&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;C-E&#039;&#039;&#039; • [[#ONCC|CBPI]], [[#ONCC|CBPM]], &amp;lt;br&amp;gt;[[#BINA/OBJC/CHAR|CHAR]], [[#BINA/OBJC/CMBT|CMBT]], &amp;lt;br&amp;gt;[[#CONS|CONS]], [[#BINA/OBJC/CONS|CONS &amp;lt;font size=&amp;quot;1&amp;quot;&amp;gt;&#039;&#039;&#039;(OBJC)&#039;&#039;&#039;&amp;lt;/font&amp;gt;]], &amp;lt;br&amp;gt;[[#ONLV|CRSA]], [[#DOOR|DOOR]], &amp;lt;br&amp;gt;[[#BINA/OBJC/DOOR|DOOR &amp;lt;font size=&amp;quot;1&amp;quot;&amp;gt;&#039;&#039;&#039;(OBJC)&#039;&#039;&#039;&amp;lt;/font&amp;gt;]], [[#DPge|DPge]], &amp;lt;br&amp;gt;[[#ONLV|ENVP]]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top; border:1px solid #AAA; border-width:0px 0px 0px 0px; padding-right:20px&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;F-K&#039;&#039;&#039; • [[#FILM|FILM]], [[#BINA/OBJC/FLAG|FLAG]], &amp;lt;br&amp;gt;[[#BINA/OBJC/FURN|FURN]], [[#HPge|HPge]], &amp;lt;br&amp;gt;[[#IDXA|IDXA]], [[#IGHH|IGHH]], &amp;lt;br&amp;gt;[[#IGPA|IGPA]], [[#IGPG|IGPG]], &amp;lt;br&amp;gt;[[#IGSA|IGSA]], [[#IGSt|IGSt]], &amp;lt;br&amp;gt;[[#Impt|Impt]], [[#IPge|IPge]], [[#DPge|KeyI]]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top; border:1px solid #AAA; border-width:0px 0px 0px 0px&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;M-N&#039;&#039;&#039; • [[#OBAN|M3GA]], [[#M3GM|M3GM]], &amp;lt;br&amp;gt;[[#BINA/OBJC/MELE|MELE]], [[#Mtrl|Mtrl]], [[#BINA/OBJC/NEUT|NEUT]]&lt;br /&gt;
&lt;br /&gt;
|-&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top; border:1px solid #AAA; border-width:0px 0px 0px 0px; padding-right:20px&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;O&#039;&#039;&#039; • [[#OBAN|OBAN]], &#039;&#039;&#039;[[#BINA/OBJC|OBJC]]&#039;&#039;&#039;, &amp;lt;br&amp;gt;[[#OBAN|OBOA]], [[#OFGA|OFGA]], &amp;lt;br&amp;gt;[[#ONCC|ONCC]], [[#ONCC|ONCP]], &amp;lt;br&amp;gt;[[#ONCV|ONCV]], [[#ONGS|ONGS]], &amp;lt;br&amp;gt;[[#ONCC|ONIA]], [[#BINA/ONIE|ONIE]], &amp;lt;br&amp;gt;[[#ONLD|ONLD]], [[#ONLV|ONLV]], &amp;lt;br&amp;gt;[[#ONLV|ONOA]], [[#ONSK|ONSK]], &amp;lt;br&amp;gt;[[#ONVL|ONVL]], [[#ONWC|ONWC]], &amp;lt;br&amp;gt;[[#OPge|OPge]], [[#SNDD|OSBD]], &amp;lt;br&amp;gt;[[#AKEV|OTIT]], [[#AKEV|OTLF]]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top; border:1px solid #AAA; border-width:0px 0px 0px 0px; padding-right:20px&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;P-S&#039;&#039;&#039; • [[#BINA/PAR3|PAR3]], [[#BINA/OBJC/PART|PART]], &amp;lt;br&amp;gt;[[#BINA/OBJC/PATR|PATR]], [[#AKEV|PLEA]], &amp;lt;br&amp;gt;[[#PNTA|PNTA]], [[#PSpc|PSpc]], &amp;lt;br&amp;gt;[[#PSpL|PSpL]], [[#PSUI|PSUI]], &amp;lt;br&amp;gt;[[#BINA/OBJC/PWRU|PWRU]], [[#AKEV|QTNA]], &amp;lt;br&amp;gt;[[#BINA/SABD|SABD]], [[#SNDD|SNDD]], &amp;lt;br&amp;gt;[[#BINA/OBJC/SNDG|SNDG]], [[#StNA|StNA]], [[#SUBT|SUBT]]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top; border:1px solid #AAA; border-width:0px 0px 0px 0px; padding-right:20px&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;T&#039;&#039;&#039; • [[#BINA/TMBD|TMBD]], [[#TRAC|TRAC]], &amp;lt;br&amp;gt;[[#TRAM|TRAM]], [[#TRAS|TRAS]], &amp;lt;br&amp;gt;[[#TRBS|TRBS]], [[#TRBS|TRCM]], &amp;lt;br&amp;gt;[[#TRBS|TRGA]], [[#TRGE|TRGE]], &amp;lt;br&amp;gt;[[#BINA/OBJC/TRGV|TRGV]], [[#TRBS|TRIA]], &amp;lt;br&amp;gt;[[#TRIG|TRIG]], [[#BINA/OBJC/TRIG|TRIG &amp;lt;font size=&amp;quot;1&amp;quot;&amp;gt;&#039;&#039;&#039;(OBJC)&#039;&#039;&#039;&amp;lt;/font&amp;gt;]], &amp;lt;br&amp;gt;[[#TRMA|TRMA]], [[#TRSC|TRSC]], &amp;lt;br&amp;gt;[[#TRBS|TRTA]], [[#TSFF|TSFF]], &amp;lt;br&amp;gt;[[#TSFF|TSFL]], [[#TSFF|TSFT]], &amp;lt;br&amp;gt;[[#TSFF|TSGA]], [[#TURR|TURR]], &amp;lt;br&amp;gt;[[#BINA/OBJC/TURR|TURR &amp;lt;font size=&amp;quot;1&amp;quot;&amp;gt;&#039;&#039;&#039;(OBJC)&#039;&#039;&#039;&amp;lt;/font&amp;gt;]], [[#TXMP|TXAN]], &amp;lt;br&amp;gt;[[#TXCA|TXCA]], [[#AKEV|TXMA]], &amp;lt;br&amp;gt;[[#TXMB|TXMB]], [[#TXMP|TXMP]], [[#TxtC|TxtC]]&lt;br /&gt;
&lt;br /&gt;
|style=&amp;quot;vertical-align:top; border:1px solid #AAA; border-width:0px 0px 0px 0px&amp;quot;|&lt;br /&gt;
&#039;&#039;&#039;V-W&#039;&#039;&#039; • [[#M3GM|VCRA]], [[#BINA/OBJC/WEAP|WEAP]], &amp;lt;br&amp;gt;[[#WMCL|WMCL]], [[#WMDD|WMDD]], &amp;lt;br&amp;gt;[[#WMM|WMM_]], [[#WMM|WMMB]], [[#WPge|WPge]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot; style=&amp;quot;background-color:#F9F9F9; border:1px solid #AAA&amp;quot;&lt;br /&gt;
!width=&amp;quot;10px&amp;quot; style=&amp;quot;text-align:left; vertical-align:center; background-color:#EEEEEE&amp;quot;|Tag&lt;br /&gt;
!style=&amp;quot;text-align:left; vertical-align:center; background-color:#EEEEEE&amp;quot;|[[Image:Aqua Dot-Grey.png]]&lt;br /&gt;
!width=&amp;quot;250px&amp;quot; style=&amp;quot;text-align:left; vertical-align:center; background-color:#EEEEEE&amp;quot;|Name&lt;br /&gt;
!width=&amp;quot;200px&amp;quot; style=&amp;quot;text-align:left; vertical-align:center; background-color:#EEEEEE&amp;quot;|File name(s)&lt;br /&gt;
!width=&amp;quot;125px&amp;quot; style=&amp;quot;text-align:left; vertical-align:bottom; background-color:#EEEEEE&amp;quot;|Location (vanilla)&lt;br /&gt;
!style=&amp;quot;text-align:left; vertical-align:bottom; background-color:#EEEEEE&amp;quot;|Location (AE)&lt;br /&gt;
{{XMLtype|AISA|AI Character Setup Array&lt;br /&gt;
|yes&lt;br /&gt;
|AISAlevel##_scripts&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|This file type was probably in the process of being replaced by [[#BINA/OBJC/CHAR|CHAR]] when Oni shipped, but it is still used for a few cutscene characters.}}&lt;br /&gt;
{{XMLtype|AKEV|Akira Environment&lt;br /&gt;
|some&lt;br /&gt;
|AKEV...&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|It&#039;s the 3D level model. Many subtypes are used for the actual 3D data -- ABNA, AGDB, AGQG, AGQC, AGQR, AKAA, AKBA, AKBP, AKDA, AKOT (which in turn uses OTIT, OTLF, and QTNA), AKVA, IDXA, PLEA, PNTA, TXCA, and TXMA; these types do not have separate XML documentation because they export as a part of AKEV. Some of these types are also used by [[#M3GM|M3GM]]. AKEV exports as a Collada (.dae) file, meant to be edited in a 3D modeler like [[Blender]].}}&lt;br /&gt;
{{XMLtype|CONS|Console&lt;br /&gt;
|some&lt;br /&gt;
|CONSconsole...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|There are only three of these models for the consoles used in all of Oni, as documented in [[Data console]], though the picture ([[#TXMP|TXMP]]) displayed on a specific console varies.}}&lt;br /&gt;
{{XMLtype|DOOR|Door&lt;br /&gt;
|yes&lt;br /&gt;
|DOOR...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|There are 48 types of doors, defined globally for use in the levels.}}&lt;br /&gt;
{{XMLtype|DPge|Diary Page&lt;br /&gt;
|yes&lt;br /&gt;
|DPgelev_##_pg_##&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|As seen in the Diary tab of the Data Comlink. The actual text is in a linked IGPG (see [[#OPge|OPge]] for more info; also used by [[#HPge|HPge]], [[#IPge|IPge]], and [[#WPge|WPge]]). The diary page is used for both diary-style entries and move pages, which are both unlocked when reaching the level number contained in this data. When being used as a move page, the sequence of actions that produce the move can be conveyed with the use of icons ([[#TXMP|TXMP]]s provided by KeyI), however this functionality is unused in Oni&#039;s existing data.}}&lt;br /&gt;
{{XMLtype|FILM|Film&lt;br /&gt;
|yes&lt;br /&gt;
|FILM...&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|A record of a character&#039;s movements, created by a developer recording his gameplay, and played back in cutscenes to make an AI perform complex actions. During playback, AIs have no AI. ^_^}}&lt;br /&gt;
{{XMLtype|HPge|Help Page&lt;br /&gt;
|yes&lt;br /&gt;
|HPgehelp_pg_01&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|The Help tab of the Data Comlink labels the in-game UI and reminds the player of the controls (but only the default bindings, regardless of what the player is actually using...). The actual text is in a linked IGPG (also used by [[#DPge|DPge]], [[#OPge|OPge]], [[#IPge|IPge]], and [[#WPge|WPge]]).}}&lt;br /&gt;
{{XMLtype|IDXA|Index Array&lt;br /&gt;
|yes&lt;br /&gt;
| --&lt;br /&gt;
|both&lt;br /&gt;
|both&lt;br /&gt;
|This is just a disambiguation page which points to the higher-level types that use IDXA (AKEV, ONLV, M3GM), because IDXAs do not get exported as standalone files by OniSplit.}}&lt;br /&gt;
{{XMLtype|IGHH|IGUI HUD Help&lt;br /&gt;
|yes&lt;br /&gt;
|IGHHhud_help_info&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|The Help tab of the Data Comlink labels the in-game UI using the text found here and the overlay textures it links to. (IGUI is &amp;quot;In-Game User Interface&amp;quot;.)}}&lt;br /&gt;
{{XMLtype|IGPA|IGUI Page Array&lt;br /&gt;
|yes&lt;br /&gt;
| --&lt;br /&gt;
|both&lt;br /&gt;
|both&lt;br /&gt;
|This is just a disambiguation page which points to the higher-level types that use IGPA (DPge, HPge, IPge, OPge, WPge, TxtC), because IGPAs do not get exported as standalone files by OniSplit.}}&lt;br /&gt;
{{XMLtype|IGPG|IGUI Page&lt;br /&gt;
|yes&lt;br /&gt;
| --&lt;br /&gt;
|both&lt;br /&gt;
|both&lt;br /&gt;
|This is just a disambiguation page which points to the higher-level types that use IGPG (DPge, HPge, IPge, OPge, WPge, TxtC), because IGPGs do not get exported as standalone files by OniSplit.}}&lt;br /&gt;
{{XMLtype|IGSA|IGUI String Array&lt;br /&gt;
|yes&lt;br /&gt;
| --&lt;br /&gt;
|both&lt;br /&gt;
|both&lt;br /&gt;
|This is just a disambiguation page which points to the higher-level types that use IGSA (DPge, HPge, IPge, OPge, WPge, TxtC), because IGSAs do not get exported as standalone files by OniSplit.}}&lt;br /&gt;
{{XMLtype|IGSt|IGUI String&lt;br /&gt;
|yes&lt;br /&gt;
| --&lt;br /&gt;
|both&lt;br /&gt;
|both&lt;br /&gt;
|This is just a disambiguation page which points to the higher-level types that use IGSt (DPge, HPge, IPge, OPge, WPge, TxtC), because IGSts do not get exported as standalone files by OniSplit.}}&lt;br /&gt;
{{XMLtype|Impt|Impact&lt;br /&gt;
|yes&lt;br /&gt;
|Impt...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|This file is used to build up a hierarchy of impacts. See [[#BINA/ONIE|BINA/ONIE]] for more information.}}&lt;br /&gt;
{{XMLtype|IPge|Item Page&lt;br /&gt;
|yes&lt;br /&gt;
|IPge...&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|As items are picked up, their Item Pages are displayed on the Items tab of the Data Comlink. The actual text and image is found in a linked IGPG (see [[#OPge|OPge]] for more info; also used by [[#DPge|DPge]], [[#HPge|HPge]], and [[#WPge|WPge]]).}}&lt;br /&gt;
{{XMLtype|M3GM|Geometry&lt;br /&gt;
|yes&lt;br /&gt;
|M3GM...&lt;br /&gt;
|both&lt;br /&gt;
|both (more are global)&lt;br /&gt;
|A basic unit of 3D geometry used by anything that can have a physical shape, such as character models ([[#TRBS|TRBS]]), consoles ([[#CONS|CONS]]), animated objects ([[#OBAN|OBAN]]) and particles ([[#BINA/PAR3|PAR3]]). The building blocks of the geometry are the types IDXA, PNTA, TXCA and VCRA (these are all exported under M3GM so do not have separate XML documentation), and the texture is provided by [[#TXMP|TXMP]].}}&lt;br /&gt;
{{XMLtype|Mtrl|Material&lt;br /&gt;
|yes&lt;br /&gt;
|Mtrl...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|These files are used to build up a hierarchy of materials. See [[#BINA/ONIE|BINA/ONIE]] for more information.}}&lt;br /&gt;
{{XMLtype|OBAN|Object Animation&lt;br /&gt;
|yes&lt;br /&gt;
|OBAN...&lt;br /&gt;
|both&lt;br /&gt;
|both&lt;br /&gt;
|Yes, this is used to animate objects, but also characters and cutscene cameras. Uses OBOA (also used by [[#ONLV|ONLV]]) to store the physics settings, and the OBOA in turn uses an M3GA, which is an array of [[#M3GM|M3GMs]], to store the actual geometry.}}&lt;br /&gt;
{{XMLtype|OFGA|Object Furniture Geometry Array&lt;br /&gt;
|yes&lt;br /&gt;
|OFGA...&lt;br /&gt;
|N/A&lt;br /&gt;
|N/A&lt;br /&gt;
|Used to import objects with no functions. (Doors, consoles, etc. get imported as [[#BINA/OBJC|object lists]]. See [[XML:ONLV]] for more information.)}}&lt;br /&gt;
{{XMLtype|ONCC|Oni Character Class&lt;br /&gt;
|yes&lt;br /&gt;
|ONCC...&lt;br /&gt;
|local&lt;br /&gt;
|global&lt;br /&gt;
|This is where a class of character (Konoko, Striker, etc.) is assigned its weapon skill, behavior ID, vision radius, jumping height, sounds, 3D model ([[#TRBS|TRBS]]), animation collection ([[#TRAC|TRAC]]), textures ([[#TRMA|TRMA]]), and much more. The XML file contains also the character&#039;s body part material (CBPM), body part impacts (CBPI), and particles for animations (ONCP and ONIA), so these types are also documented on this page.}}&lt;br /&gt;
{{XMLtype|ONCV|Oni Character Variant&lt;br /&gt;
|yes&lt;br /&gt;
|ONCV...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|Used to create a pool of characters from which an AI can be randomly spawned, in order to create a natural variation in appearance. A flag in a [[#BINA/OBJC/CHAR|CHAR]] determines which variant the character falls under. It can be also used to upgrade characters on the Hard difficulty level, also determined by a flag in the CHAR.}}&lt;br /&gt;
{{XMLtype|ONGS|Oni Game Settings&lt;br /&gt;
|yes&lt;br /&gt;
|ONGSgame_settings&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|Here you can modify the game&#039;s health bar, hypo spray strength, [[Difficulty modes|game difficulty]], autoprompts (text messages when picking up a new kind of item), etc.}}&lt;br /&gt;
{{XMLtype|ONLD|Oni Game Level Descriptor&lt;br /&gt;
|yes&lt;br /&gt;
|ONLDlevel_##&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|Contains a level&#039;s number, the number of the next level, and the level&#039;s name as it appears on the Load Game screen.}}&lt;br /&gt;
{{XMLtype|ONLV|Oni Game Level&lt;br /&gt;
|yes&lt;br /&gt;
|ONLV...&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|The top of the hierarchy when it comes to level data. Holds the name of the BSL folder with the scripts for this level, links to the environmental model ([[#AKEV|AKEV]]), animated objects ([[#OBAN|OBOA]]), skybox ([[#ONSK|ONSK]]) and AIs to spawn (well, the ones in [[#AISA|AISA]]; the ones in [[#BINA/OBJC/CHAR|CHAR]] need no link from here), and more. These type links as well as the corpse array (CRSA), environmental particles (ENVP), and gunk data (ONOA, which uses IDXA) will be exported together in XML. ONLV also links to six obsolete types which will not be exported: AITR, OBDC, ONFA, ONMA, [[XML:ONSA|ONSA]] and ONTA.}}&lt;br /&gt;
{{XMLtype|ONSK|Oni Sky Class&lt;br /&gt;
|yes&lt;br /&gt;
|ONSK...&lt;br /&gt;
|local&lt;br /&gt;
|global&lt;br /&gt;
|It&#039;s essentially a box of textures that surrounds the level, so you will need five images for the top, north, east, south and west. The bottom has no image.}}&lt;br /&gt;
{{XMLtype|ONVL|Oni Variant List&lt;br /&gt;
|yes&lt;br /&gt;
|ONVLvariant_list&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|It&#039;s used to randomize characters&#039; appearances in conjunction with [[#ONCV|ONCV]].}}&lt;br /&gt;
{{XMLtype|ONWC|Oni Weapon Class&lt;br /&gt;
|yes&lt;br /&gt;
|ONWCw...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|Describes a weapon&#039;s primary and secondary firing mode and more, and links to its particles ([[#BINA/PAR3|PAR3]]), its 3D model ([[#M3GM|M3GM]]) and textures ([[#TXMP|TXMP]]).}}&lt;br /&gt;
{{XMLtype|OPge|Objective Page&lt;br /&gt;
|yes&lt;br /&gt;
|OPgelevel_##&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|This is the wrapping type for the text that appears in the Objective tab of the Data Comlink. The actual text is found by following the objective page&#039;s link to an IGPA (also used by [[#TxtC|TxtC]]), which is an array of IGPGs (also used by [[#DPge|DPge]], [[#HPge|HPge]], [[#IPge|IPge]], and [[#WPge|WPge]]) which contain links to arrays of text strings (IGSA, which point to the individual strings, IGSt, which link to the font family, [[#WMDD|TSFF]]) and links to [[#TXMP|TXMPs]] for illustrations.}}&lt;br /&gt;
{{XMLtype|PNTA|3D Point Array&lt;br /&gt;
|yes&lt;br /&gt;
| --&lt;br /&gt;
|both&lt;br /&gt;
|both&lt;br /&gt;
|This is just a disambiguation page which points to the higher-level types that use PNTA (AKEV, M3GM), because PNTAs do not get exported as standalone files by OniSplit.}}&lt;br /&gt;
{{XMLtype|PSpc|Part Specification&lt;br /&gt;
|yes&lt;br /&gt;
|PSpc...&lt;br /&gt;
|both&lt;br /&gt;
|both&lt;br /&gt;
|Specifies coordinates in a certain [[#TXMP|TXMP]] which contains a collection of UI elements. The coordinates are used to cut out specific elements for use in drawing the windows in the game.}}&lt;br /&gt;
{{XMLtype|PSpL|Part Specification List&lt;br /&gt;
|yes&lt;br /&gt;
|PSpLpartspec_list&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|Links to the [[#PSpc|PSpc]] used for the plain-color background of a particular UI (the in-game UI uses black and the out-game UI uses transparency).}}&lt;br /&gt;
{{XMLtype|PSUI|Part Specification UI&lt;br /&gt;
|yes&lt;br /&gt;
|PSUIpsui_...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|Specifies the [[#PSpc|PSpcs]] used to paint a certain style of UI. There are only two of these files in Oni, and only PSUIpsui_oniUI is actually used.}}&lt;br /&gt;
{{XMLtype|SNDD|Sound Data&lt;br /&gt;
|yes&lt;br /&gt;
|SNDD...&lt;br /&gt;
|local&lt;br /&gt;
|global&lt;br /&gt;
|These are all the sounds and music tracks that Oni can play.}}&lt;br /&gt;
{{XMLtype|StNA|String Array&lt;br /&gt;
|yes&lt;br /&gt;
|StNA...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|StNA files are obsolete. However, on this XML page you&#039;ll find collections of flags used by [[#TRAM|TRAMs]].}}&lt;br /&gt;
{{XMLtype|SUBT|Subtitle Array&lt;br /&gt;
|yes&lt;br /&gt;
|SUBT...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|An array of strings used for subtitles in Oni. This is just here for informational purposes, because subtitle files are extracted to TXT files, not XML.}}&lt;br /&gt;
{{XMLtype|TRAC|Totoro Animation Collection&lt;br /&gt;
|yes&lt;br /&gt;
|TRAC...&lt;br /&gt;
|both&lt;br /&gt;
|global&lt;br /&gt;
|Used to build a hierarchy of moves ([[#TRAM|TRAMs]]) which form a weighted moveset in combination with any parent TRACs a character&#039;s TRAC inherits from.}}&lt;br /&gt;
{{XMLtype|TRAM|Totoro Animation Sequence&lt;br /&gt;
|some&lt;br /&gt;
|TRAM...&lt;br /&gt;
|both&lt;br /&gt;
|global&lt;br /&gt;
|The core 3D animation data for character moves. Exports to Collada (.dae) + XML. The XML file contains the animation&#039;s Oni-specific flags, links to particles, and so on.}}&lt;br /&gt;
{{XMLtype|TRAS|Totoro Aiming Screen&lt;br /&gt;
|yes&lt;br /&gt;
|TRAS...&lt;br /&gt;
|both&lt;br /&gt;
|global&lt;br /&gt;
|The pose keyframes defined here are interpolated and overlaid on characters when they aim with weapons.}}&lt;br /&gt;
{{XMLtype|TRBS|Totoro Body Set&lt;br /&gt;
|yes&lt;br /&gt;
|TRBS...&lt;br /&gt;
|local&lt;br /&gt;
|global&lt;br /&gt;
|The metadata for the 3D model of a character. Character classes ([[#ONCC|ONCCs]]) link to these. The 3D data can be imported/exported as Collada (.dae) files, but using the ONCC for this might be preferable so that you get all related character data in XML on the side. The structure of the body at each individual detail level is found in the linked TRCM, which links to TRGA for the geometry of each body part, to TRTA for the relative location of each body part, and to TRIA for the hierarchical relationship of the body parts.}}&lt;br /&gt;
{{XMLtype|TRGE|Trigger Emitter&lt;br /&gt;
|yes&lt;br /&gt;
|TRGEtrigger_emitter_0&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|This file links to the one 3D model ([[#M3GM|M3GM]]) used for all laser triggers. Used by [[#TRIG|TRIG]].}}&lt;br /&gt;
{{XMLtype|TRIG|Trigger&lt;br /&gt;
|some&lt;br /&gt;
|TRIG...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|A laser trigger class.}}&lt;br /&gt;
{{XMLtype|TRMA|Texture Map Array&lt;br /&gt;
|yes&lt;br /&gt;
|TRMA...&lt;br /&gt;
|local&lt;br /&gt;
|global&lt;br /&gt;
|The list of textures used for each [[XML:TRBS#Standard_TRIA_hierarchy|body part]] of a certain character.}}&lt;br /&gt;
{{XMLtype|TRSC|(Aiming) Screen Collection&lt;br /&gt;
|yes&lt;br /&gt;
|TRSC...&lt;br /&gt;
|both&lt;br /&gt;
|global&lt;br /&gt;
|Essentially just links to the [[#TRAS|TRAS]] (aiming screen) of a character.}}&lt;br /&gt;
{{XMLtype|TSFF|Font Family&lt;br /&gt;
|yes&lt;br /&gt;
|TSFFTahoma&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|Oni&#039;s single font family, Tahoma, which in turn links to font language settings (TSFL) and the font data itself (TSFT, which links to TSGA for the coordinates of each letter in the TSFT data).}}&lt;br /&gt;
{{XMLtype|TURR|Turret&lt;br /&gt;
|yes&lt;br /&gt;
|TURR...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|A class of turret. The actual 3D geometry is in a linked [[#M3GM|M3GM]].}}&lt;br /&gt;
{{XMLtype|TXCA|Texture Coordinate Array&lt;br /&gt;
|yes&lt;br /&gt;
| --&lt;br /&gt;
|both&lt;br /&gt;
|both&lt;br /&gt;
|This is just a disambiguation page which points to the higher-level types that use TXCA (AKEV, M3GM), because TXCAs do not get exported as standalone files by OniSplit.}}&lt;br /&gt;
{{XMLtype|TXMB|Texture Map Big&lt;br /&gt;
|yes&lt;br /&gt;
|TXMB...&lt;br /&gt;
|both&lt;br /&gt;
|both&lt;br /&gt;
|A series of [[#TXMP|TXMPs]] to join in order to display a splashscreen, like the Main Menu background and the level intro/win/loss screens.}}&lt;br /&gt;
{{XMLtype|TXMP|Texture Map&lt;br /&gt;
|yes&lt;br /&gt;
|TXMP...&lt;br /&gt;
|both&lt;br /&gt;
|global except for textures used by specific levels&lt;br /&gt;
|This type covers all images in Oni (except the ones larger than 256x256, which are built with [[#TXMB|TXMB]]). When a texture is animated, it will have a link to TXAN, which simply contains metadata about the animation; the actual image data is still in the TXMP.}}&lt;br /&gt;
{{XMLtype|TxtC|Text Console&lt;br /&gt;
|yes&lt;br /&gt;
|TxtClevel_...&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|The source of the text for a given console. The actual text is found by following the link to an IGPA (also used by [[#OPge|OPge]]), which is an array of IGPG (also used by [[#DPge|DPge]], [[#HPge|HPge]], [[#IPge|IPge]], and [[#WPge|WPge]]) that contains the actual text.}}&lt;br /&gt;
{{XMLtype|WMCL|Window Manager Cursor List&lt;br /&gt;
|yes&lt;br /&gt;
|WMCLcursor_list&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|Simply links to the [[#PSpc|PSpc]] which links to the image used for the mouse pointer that appears in Oni.}}&lt;br /&gt;
{{XMLtype|WMDD|Window Manager Dialog Data&lt;br /&gt;
|yes&lt;br /&gt;
|WMDD...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|Describes the layout of UI screens like the Main Menu. Uses [[#WMM|WMM_]] for pop-up menus, and links to the desired font family (TSFF, also used by [[#OPge|IGPG]]). Because Oni&#039;s UI is partially hardcoded, adding new buttons would require engine modding.}}&lt;br /&gt;
{{XMLtype|WMM|Window Manager Menu&lt;br /&gt;
|yes&lt;br /&gt;
|WMM...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|Dropdown menus used in [[#WMDD|WMDDs]]. Most of the WMM_s and the sole WMMB in Oni (a menu bar that uses WMM_ for its menus) are development relics.|display=WMM_}}&lt;br /&gt;
{{XMLtype|position=bottom|WPge|Weapon Page&lt;br /&gt;
|yes&lt;br /&gt;
|WPgew...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|This is the source for the text and images that appear in the Weapons tab of the Data Comlink. The actual text and image is found in a linked IGPG (see [[#OPge|OPge]] for more info; also used by [[#DPge|DPge]], [[#HPge|HPge]], and [[#WPge|WPge]]).}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BINA==&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot; style=&amp;quot;background-color:#F9F9F9; border:1px solid #AAA&amp;quot;&lt;br /&gt;
!width=&amp;quot;10px&amp;quot; align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|Tag&lt;br /&gt;
!align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|[[Image:Aqua Dot-Grey.png]]&lt;br /&gt;
!width=&amp;quot;250px&amp;quot; align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|Name&lt;br /&gt;
!width=&amp;quot;200px&amp;quot; align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|File name(s)&lt;br /&gt;
!width=&amp;quot;125px&amp;quot; align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|Location (vanilla)&lt;br /&gt;
!align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|Location (AE)&lt;br /&gt;
{{XMLtype|BINA/ONIE|ImpactEffects&lt;br /&gt;
|some&lt;br /&gt;
|BINAEINOimpact_effects&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|A list of all impact effects which can happen in the game; this includes weapon particles, hand-to-hand combat, and footsteps. The impact effect is selected according the type of impact ([[#Impt|Impt]]) and the material ([[#Mtrl|Mtrl]]) which is hit.}}&lt;br /&gt;
{{XMLtype|BINA/PAR3|Particles&lt;br /&gt;
|some&lt;br /&gt;
|BINA3RAP...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|A type of particle which can be spawned in the game, used by weapons to deal damage, used for lens flares, etc. The list of the specific particles spawned in a certain level is a [[#BINA/OBJC/PART|PART]].}}&lt;br /&gt;
{{XMLtype|BINA/SABD|SoundAnims&lt;br /&gt;
|some&lt;br /&gt;
|BINADBAS...&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|A list of the sounds to be played for an animation type. There is one of these for each character variant ([[#ONCV|ONCV]]).}}&lt;br /&gt;
{{XMLtype|position=bottom|BINA/TMBD|TextureMaterials&lt;br /&gt;
|yes&lt;br /&gt;
|BINADBMTTextureMaterials&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|A list of the materials ([[#Mtrl|Mtrl]]) assigned to each texture map ([[#TXMP|TXMP]]). Used by [[#BINA/ONIE|ONIE]].}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==BINA/OBJC==&lt;br /&gt;
{|width=&amp;quot;100%&amp;quot; style=&amp;quot;background-color:#F9F9F9; border:1px solid #AAA&amp;quot;&lt;br /&gt;
!width=&amp;quot;10px&amp;quot; align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|Tag&lt;br /&gt;
!align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|[[Image:Aqua Dot-Grey.png]]&lt;br /&gt;
!width=&amp;quot;250px&amp;quot; align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|Name&lt;br /&gt;
!width=&amp;quot;200px&amp;quot; align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|File name(s)&lt;br /&gt;
!width=&amp;quot;125px&amp;quot; align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|Location (vanilla)&lt;br /&gt;
!align=&amp;quot;left&amp;quot; style=&amp;quot;background-color:#EEEEEE&amp;quot;|Location (AE)&lt;br /&gt;
{{XMLtype|BINA/OBJC/CHAR|Character&lt;br /&gt;
|some&lt;br /&gt;
|BINACJBOCharacter&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of characters in a specific level, containing their position, script function names, weapon, ammunition, items, team, melee ID, etc.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/CMBT|Combat&lt;br /&gt;
|some&lt;br /&gt;
|BINACJBOCombat&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|List of combat profiles for global use, containing conditions that govern the AI&#039;s melee, weapon combat, and retreat behavior, based on factors like distance and the enemy&#039;s reactions.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/CONS|Console&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBOConsole&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of consoles in a specific level, containing their position, script name (ID), screen images, and script function names. Consoles are used to open doors, trigger alarms, or provide information.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/DOOR|Door&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBODoor&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of doors in a specific level, containing their conditions for when a door opens (e.g., is the action key required?), and what events are triggered when the door is opened.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/FLAG|Flag&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBOFlag&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of flags in a specific level, containing their position. Flags are used by level scripts and patrol paths.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/FURN|Furniture&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBOFurniture&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of pieces of furniture in a specific level. This file type can be used to import level objects.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/MELE|Melee Profile&lt;br /&gt;
|some&lt;br /&gt;
|BINACJBOMelee Profile&lt;br /&gt;
|global&lt;br /&gt;
|global&lt;br /&gt;
|List of melee profiles for global use. A melee profile contains a simple program that determines how the AI uses its combat moves.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/NEUT|Neutral&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBONeutral&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of neutral character behaviors in a specific level. Every character has a melee, combat and neutral behavior ID. It determines whether a non-player character (NPC) talks to you and whether they give you a power-up.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/PART|Particle&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBOParticle&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of particles in a specific level, containing their position, script name and scaling.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/PATR|Patrol Path&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBOPatrol Path&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of patrol paths in a specific level, containing an ID which is used by [[#BINA/OBJC/CHAR|CHAR]] and the scripting command &amp;quot;ai2_dopath&amp;quot;.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/PWRU|PowerUp&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBOPowerUp&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of power-ups (such as ammo, force shields and hypo sprays) in a specific level which are spawned at level load, containing their position.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/SNDG|Sound&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBOSound&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of sound groups in a specific level. Sound groups are the invisible spheres which contain ambient sounds. If you get close to a machine and you hear a sound, that&#039;s because of a sound group.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/TRGV|Trigger Volume&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBOTrigger Volume&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of trigger volumes in a specific level. They are invisible areas which trigger functions in a script when entered.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/TRIG|Trigger&lt;br /&gt;
|yes&lt;br /&gt;
|BINAJCBOTrigger&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of laser triggers in a specific level. There are several forms of triggers, and they can trigger not only turrets ([[#TURR|TURR]]), but also script functions in the level.}}&lt;br /&gt;
{{XMLtype|BINA/OBJC/TURR|Turret&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBOTurret&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of turrets in a specific level. Note that their pods are part of the level geometry. Spawn one manually and it might be located somewhere in the air. Determines their head&#039;s position, the weapon inside the turret head, and the team ID to target.}}&lt;br /&gt;
{{XMLtype|position=bottom|BINA/OBJC/WEAP|Weapon&lt;br /&gt;
|yes&lt;br /&gt;
|BINACJBOWeapon&lt;br /&gt;
|local&lt;br /&gt;
|local&lt;br /&gt;
|List of weapons in a specific level, determining their spawn location at level load.}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:XML data docs]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:TRSC&amp;diff=47079</id>
		<title>OBD:TRSC</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:TRSC&amp;diff=47079"/>
		<updated>2026-04-08T00:58:13Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OBD_File_Header | type=TRSC | prev=TRMA | next=TRTA | name=(Aiming) Screen Collection | family=Character | align=center}}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Some of the TRSC files are 0 byte files. This means that Oni will take the information out of the TRSC files of level 0. Below is an example of a TRSC file in level 0.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Image:trsc_a.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
|- ALIGN=CENTER VALIGN=TOP&lt;br /&gt;
{{OBDtr| 0x00 | res_id   |FF0000| 01 CE 09 00 | 2510 | 02510-konoko_screens.TRSC }}&lt;br /&gt;
{{OBDtr| 0x04 | lev_id   |FFFF00| 01 00 00 00 | 0    | level 0 }}&lt;br /&gt;
{{OBDtr| 0x08 | char[22] |00FF00| AD DE       | dead | unused }}&lt;br /&gt;
{{OBDtr| 0x1E | int16    |00FFFF| 0D 00       | 13   | array size }}&lt;br /&gt;
{{OBDtrBK}}&lt;br /&gt;
{{OBDtr| 0x00 | link     |FFC8C8| 01 C1 09 00 | 2497 | link to 02497-KONPISaim_screen_run.[[OBD:TRAS|TRAS]] }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{OBD_File_Footer | type=TRSC | prev=TRMA | next=TRTA | name=(Aiming) Screen Collection | family=Character}}&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Oni_(folder)&amp;diff=47067</id>
		<title>Oni (folder)</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Oni_(folder)&amp;diff=47067"/>
		<updated>2026-04-06T17:06:09Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: tweaked table until I got everything to fit on a row of a single line height; added trivia about the Windows installer that I learned recently; stopped using Th template&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UpdatedForOniX|1.0.0}}&lt;br /&gt;
This is a browseable representation of an &#039;&#039;&#039;[[Oni]]&#039;&#039;&#039; installation&#039;s file hierarchy under Windows and macOS. You can use it to verify that you have all the needed files; it can also educate you on the details of what each file does and how Oni finds its game data. Click on a folder&#039;s name to go down to that level of the hierarchy; click on a file&#039;s name to read more about that file.&lt;br /&gt;
&lt;br /&gt;
==Installation location==&lt;br /&gt;
The default location for this folder in Windows is &#039;&#039;&#039;C:\Program Files (x86)\Oni\&#039;&#039;&#039; – it was originally &#039;&#039;&#039;C:\Program Files\Oni\&#039;&#039;&#039; on 32-bit systems, but modern Windows has a hack for old program installers which changes Oni&#039;s installer to point to the x86 folder by default. The Russian localization&#039;s installer adds another level with the publisher&#039;s name: &#039;&#039;&#039;C:\Program Files (x86)\Buka\Oni\&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
There is no default location on Macs because modern Macs cannot run the installer on the CD-ROM, and so users must drag the &amp;quot;Oni ƒ&amp;quot; folder manually to their hard drive.&lt;br /&gt;
&lt;br /&gt;
==Warning for non-admins==&lt;br /&gt;
If you are not logged into Windows as an administrator, Oni will save persist.dat, debugger.txt, key_config.txt and startup.txt in &#039;&#039;&#039;C:\Users\&amp;lt;username&amp;gt;\AppData\Local\VirtualStore\Program Files\Oni\&#039;&#039;&#039;. This does not apply to an installation of the [[AE]] or a manual installation of Oni. Right-clicking Oni.exe and choosing &amp;quot;Run as administrator&amp;quot; will cause Oni to save the aforementioned files in the Oni folder itself. However this will mean you have two save-game files, with either one being written to depending on whether you run Oni as admin or not.&lt;br /&gt;
&lt;br /&gt;
==Directory==&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin-left:auto; margin-right:auto;&amp;quot;&lt;br /&gt;
!Legend&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;center&amp;gt;[[Image:Aqua Dot-Red.png]] = needed to run Oni; [[Image:Aqua Dot-Yellow.png]] = created by Oni; [[Image:Aqua Dot-Blue.png]] = unneeded files&amp;lt;/center&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Your initial Oni installation will probably have all the red and blue files. For files marked with yellow, Oni may not have seen a need to create them yet (follow that file name&#039;s link for more info).&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;5&amp;quot; cellspacing=&amp;quot;0&amp;quot; style=&amp;quot;margin-left:auto; margin-right:auto;&amp;quot;&lt;br /&gt;
!&amp;lt;!--aqua dots column--&amp;gt;&lt;br /&gt;
!width=100px|Windows&lt;br /&gt;
!width=85px|macOS&lt;br /&gt;
!width=180px|[[OniX]]&lt;br /&gt;
!width=585px|Description&lt;br /&gt;
|-bgcolor=&amp;quot;#E9E9E9&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;|Folders&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Red.png]]&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;center&amp;gt;[[Oni (folder)/GameDataFolder|GameDataFolder]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|&amp;lt;center&amp;gt;GameDataFolderX&amp;lt;/center&amp;gt;&lt;br /&gt;
|A subfolder with movies, scripts and binary resources&lt;br /&gt;
|-bgcolor=&amp;quot;#E9E9E9&amp;quot;&lt;br /&gt;
!colspan=&amp;quot;5&amp;quot;|Files&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Red.png]]&lt;br /&gt;
|&amp;lt;center&amp;gt;binkw32.dll&amp;lt;/center&amp;gt;&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|&amp;lt;center&amp;gt;bink-ffplay.exe&amp;lt;ref&amp;gt;Name of the player in the OniX build for modern Windows. The player for the legacy OniX build is called binkplay.exe.&amp;lt;/ref&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
|Allows Oni to play Bink movies; [[Daodan DLL]] also poses as binkw32.dll&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Yellow.png]]&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&amp;lt;center&amp;gt;[[Oni (folder)/debugger.txt|debugger.txt]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|Error log; created first time that an error occurs while running Oni&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Yellow.png]]&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&amp;lt;center&amp;gt;[[Oni (folder)/key_config.txt|key_config.txt]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|Key configuration file; if it&#039;s missing, Oni will generate a fresh copy&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Yellow.png]]&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&amp;lt;center&amp;gt;[[XML:CRSA|lvl_*_*_corpse.dat]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|[[Developer Mode]] corpse file; created by BSL command [[make_corpse]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Blue.png]]&lt;br /&gt;
|&amp;lt;center&amp;gt;[[Oni (folder)/license.txt|license.txt]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|Software license and warranty agreement&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Red.png]]&lt;br /&gt;
|&amp;lt;center&amp;gt;Oni.exe&amp;lt;/center&amp;gt;&lt;br /&gt;
|&amp;lt;center&amp;gt;[[History of Mac Oni|Oni(.app)]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|&amp;lt;center&amp;gt;OniX.exe&amp;lt;/center&amp;gt;&lt;br /&gt;
|The game application&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Blue.png]]&lt;br /&gt;
|&amp;lt;center&amp;gt;ONI.url&amp;lt;/center&amp;gt;&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|Points to &amp;lt;nowiki&amp;gt;http://oni.bungie.com&amp;lt;/nowiki&amp;gt; (defunct)&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Yellow.png]]&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&amp;lt;center&amp;gt;[[Oni (folder)/persist.dat|persist.dat]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|Save-game file; created by Oni on first run&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Blue.png]]&lt;br /&gt;
|&amp;lt;center&amp;gt;[[Oni (folder)/readme.txt|readme.txt]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|&amp;lt;center&amp;gt;{{FontSize|95|[[Oni (folder)/Oni ReadMe|Oni ReadMe]]}}&amp;lt;/center&amp;gt;&lt;br /&gt;
|&amp;lt;center&amp;gt;OniX read-me.pdf&amp;lt;/center&amp;gt;&lt;br /&gt;
|Read-me file&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Blue.png]]&lt;br /&gt;
|&amp;lt;center&amp;gt;RegisterOni.url&amp;lt;/center&amp;gt;&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|Points to {{FontSize|85|&amp;lt;nowiki&amp;gt;http://www.godgames.com/main.php?section=support&amp;amp;page=registration&amp;lt;/nowiki&amp;gt;}} (defunct)&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Yellow.png]]&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&amp;lt;center&amp;gt;[[XML:FILM|saved_film*.dat]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|Developer Mode film; created by recording a film with F9 and F10&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Yellow.png]]&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&amp;lt;center&amp;gt;screen_shot*.bmp&amp;lt;/center&amp;gt;&lt;br /&gt;
|Screenshots taken with the [[Customizing/Binding#screenshot|screenshot key]] or with the Ctrl+Shift+L Dev Mode hotkey&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Yellow.png]]&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&amp;lt;center&amp;gt;[[BSL|script_commands.txt]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|List of [[BSL]] commands &amp;amp; variables; created by BSL command [[dump_docs]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Yellow.png]]&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&amp;lt;center&amp;gt;script_debug.txt&amp;lt;/center&amp;gt;&lt;br /&gt;
|Log of BSL functions called during gameplay; dumped if Oni is run with [[Customizing#Command-line arguments|-debugfiles]]&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Yellow.png]]&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot;|&amp;lt;center&amp;gt;[[Oni (folder)/startup.txt|startup.txt]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|Event log; overwritten every time Oni is run&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:Aqua Dot-Blue.png]]&lt;br /&gt;
|&amp;lt;center&amp;gt;Uninst.isu&amp;lt;/center&amp;gt;&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|(or &amp;quot;Uninstal.log&amp;quot;) Record used by Windows to uninstall Oni&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Game directory map]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Introduction_to_modding&amp;diff=47062</id>
		<title>Introduction to modding</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Introduction_to_modding&amp;diff=47062"/>
		<updated>2026-04-06T00:50:25Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: moved Engine terminology link to more logical place; linked to Oni (folder)/GameDataFolder instead of Oni (folder)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{integrate|The tutorials are called &amp;quot;Creating the Lair&amp;quot; and &amp;quot;Adding character classes&amp;quot;.|plural=yes}}&lt;br /&gt;
This page provides an introduction to modding that does not assume that you have prior modding experience or knowledge of the Oni engine. Links to more technical parts of the wiki are interspersed below or can be accessed directly from the wiki&#039;s Main Page.&lt;br /&gt;
{{TOClimit}}&lt;br /&gt;
==What is modding?==&lt;br /&gt;
[[Image:No easy button.png|150px|right]]&lt;br /&gt;
Modifying, or &amp;quot;modding&amp;quot;, a game is generally easier than creating one, because you might only be changing some of the game&#039;s existing elements, or creating a limited amount of new data. Nevertheless, modding can be an intimidating field to get into. Our community does not have the polished modding tools of the big engines like Unreal (but we&#039;re getting better). You should have a [[wikt:DIY|DIY]] personality and a high tolerance for technical details. We do not yet have any modding solutions with a big red button that says &amp;quot;easy&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Modding your first game is always the hardest, but after that you can more easily pick up new ones. If you take things one step at a time, you can learn a lot from Oni about how to make games in general; in fact, many game developers started out as modders. Additionally, there are lots of different ways for someone to mod; whether your interest is in coding, art, sound, 3D modeling, or general game design, there&#039;s something for you to do, and collaborating with others to divide the work according to your abilities can lead to a memorable, rewarding creative experience.&lt;br /&gt;
&lt;br /&gt;
* Go to the {{OMD}} to see what kinds of mods are available, or;&lt;br /&gt;
* Install the [[Anniversary Edition]] to try out the mods, or;&lt;br /&gt;
* Continue reading to get an overview of the game engine.&lt;br /&gt;
&lt;br /&gt;
==What engine does Oni run on?==&lt;br /&gt;
Oni runs on a custom engine that could be built for Windows, the Macintosh and the PlayStation 2 (disc-based console games are not easily modded, so we don&#039;t support modding for the PS2 version of Oni). The engine consists of various subsystems, some of which have colorful animé-related names like Akira (environment), Motoko (graphics) and Totoro (animation).&lt;br /&gt;
&lt;br /&gt;
Unfortunately, the game was rushed to completion during a change of ownership, and it was not possible for the developers to release any tools or information to aid the fans in modding. Thus, fans had to explore the wild jungle of the raw game data and create modding tools through reverse-engineering. It took over seven years to unlock most of the game&#039;s secrets, but we can now mod almost all types of data effectively, allowing us to create entirely new levels and characters.&lt;br /&gt;
&lt;br /&gt;
Altogether, we have identified over 100 types of resources (often called &amp;quot;file types&amp;quot; on this wiki and &amp;quot;tags&amp;quot; in many other game modding communities) in the data, however we only directly edit about half of these. It may sound intimidating at first, but depending on the kind of modding you want to do, you might be able to start working with only a little knowledge of the engine.&lt;br /&gt;
&lt;br /&gt;
* Go to [[Oni]] for the full story on Oni&#039;s development, or;&lt;br /&gt;
* Go to [[History of Oni modding]] to read about the community&#039;s accomplishments up until now, or;&lt;br /&gt;
* Go to [[Engine terminology]] to learn about versions of the engine and its subsystems, or;&lt;br /&gt;
* Continue reading to learn about the game data files.&lt;br /&gt;
&lt;br /&gt;
==How is the game data structured?==&lt;br /&gt;
A game can be compared to a theater play: in both cases, you have &amp;lt;u&amp;gt;stages&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;scripts&amp;lt;/u&amp;gt;, &amp;lt;u&amp;gt;actors&amp;lt;/u&amp;gt;, and &amp;lt;u&amp;gt;music&amp;lt;/u&amp;gt;. A level is built so that when the player performs certain actions or reaches certain locations on the &#039;&#039;&#039;stage&#039;&#039;&#039;, further events are set in motion according to the &#039;&#039;&#039;script&#039;&#039;&#039;. The player interacts with [[wp:Artificial intelligence in video games|AI]] &#039;&#039;&#039;actors&#039;&#039;&#039; along the way. &#039;&#039;&#039;Music&#039;&#039;&#039; will often play dynamically behind all this, changing along with the flow of events.&lt;br /&gt;
&lt;br /&gt;
In Oni&#039;s case, the stages, actors and music (and other sounds) are all packed together into files inside GameDataFolder/ that end in &amp;quot;.dat&amp;quot;, &amp;quot;.raw&amp;quot;, and, on Macs, &amp;quot;.sep&amp;quot;. The level0_Final files provide global resources for all levels, and when you load a Chapter, an additional set of data files provide the level-specific resources for that Chapter (e.g. level12_Final for Chapter 10). The scripts are stored in separate plain-text files ending in &amp;quot;.bsl&amp;quot; inside GameDataFolder/IGMD/. The player&#039;s progress is stored in persist.dat next to the Oni application.&lt;br /&gt;
&lt;br /&gt;
* Go to [[Oni (folder)/GameDataFolder]] to see how the data files correspond to the game&#039;s levels, or;&lt;br /&gt;
* Go to [[Game data terminology]] to learn the community&#039;s terms for the game data, or;&lt;br /&gt;
* Continue reading to learn the general process of modding.&lt;br /&gt;
&lt;br /&gt;
==What is the workflow for modding?==&lt;br /&gt;
The general order of events in creating a mod is (1) unpacking the resources you wish to edit, (2) editing them, and (3) re-packing them as Oni level data. You can rely on the Anniversary Edition Installer to re-pack your data; you simply create the mod package in the format that the AEI requires. If you are only creating a script mod, then you don&#039;t need to unpack any data, but you&#039;ll still need to know how to place your script(s) in a mod package.&lt;br /&gt;
&lt;br /&gt;
===Data unpacking===&lt;br /&gt;
The game data cannot be edited easily until our tools convert it into something more modder-friendly. You will usually start by using OniSplit to break level data files (those .dat/.raw(/.sep) files) into their component resources, which are saved as .oni files. Then you will need to convert those resources into something editable. The editable format you arrive at will depend on the kind of data you&#039;re editing. It might be plain text, XML, PNG, Collada, WAV, etc. The editors which you&#039;ll use on this data will be third-party programs suited for each file format.&lt;br /&gt;
&lt;br /&gt;
===Third-party tools===&lt;br /&gt;
If you are scripting, you might need nothing more than a text editor. For editing textures, you might only need a free bitmap editor. For creating levels or characters, you&#039;ll need a full 3D modeling package. Since Oni doesn&#039;t have modern 3D graphics, you won&#039;t need to know as much about modeling/texturing as you would with a modern game, and there are free modelers available. Our recommendations for tools will be found under the subsections of &amp;quot;Modding resources&amp;quot; below.&lt;br /&gt;
&lt;br /&gt;
===Community tools===&lt;br /&gt;
Besides OniSplit, two of the key fan-made tools are Vago and XmlTools. Vago is a GUI for OniSplit which is much more user-friendly than using OniSplit on the command line. [[XmlTools]] is a technical tool that few modders need to use, but it allows the creation of patches (partial changes to a single resource which can stack on top of each other). Both tools can be installed from within the AE Installer. Once installed, they are found in AE/Tools/ alongside OniSplit.&lt;br /&gt;
&lt;br /&gt;
===Mod creation===&lt;br /&gt;
To see how mods normally look and how they&#039;re distributed and installed, you should download the [[Anniversary Edition]] and install some mods. You can then look at the packages that have been downloaded to AE/AEInstaller/packages/.&lt;br /&gt;
&lt;br /&gt;
* Go to [[OniSplit]]&#039;s page to learn how to unpack and reassemble the game data, or;&lt;br /&gt;
* Go to [[Vago]]&#039;s page to learn how to use this OniSplit GUI, or;&lt;br /&gt;
* Go to [[Making a mod package]] to learn how to assemble a mod, or;&lt;br /&gt;
* Continue reading to learn about the types of modding you can perform.&lt;br /&gt;
&lt;br /&gt;
==Which resources should I be modding?==&lt;br /&gt;
Oni assembles its game world from the scripts in the IGMD folder, the game data in the .dat/.raw(/.sep) files in GameDataFolder, and [[persist.dat]]. It&#039;s easy to read the BSL scripts since they&#039;re plain-text, but how do you find the resource in the game data that you want to edit? Look under &amp;quot;Modding resources&amp;quot; below for a link to the XML database, which explains the function and location of each resource type.&lt;br /&gt;
&lt;br /&gt;
===Editing scripts===&lt;br /&gt;
The easiest kind of modding is scripting. Scripts are written in a unique language called BSL and stored as plain-text files with the suffix .bsl in sub-folders inside GameDataFolder/IGMD/. Scripts take a lifeless level and spawn characters in it, give it a logical flow of events, drive the cutscenes, make the AIs perform certain roles, and alter the level&#039;s appearance.&lt;br /&gt;
&lt;br /&gt;
Scripting is the easiest way to mod because you can modify BSL files using a text editor. It&#039;s quick and easy to see the results of your work (just reload the level), and you have lots of accessible examples to learn from. That being said, scripts sometimes reference game resources in technical ways, so you will have to learn how certain data types work in order to script effectively.&lt;br /&gt;
&lt;br /&gt;
* Go to the [[BSL]] namespace to start learning about scripting, or;&lt;br /&gt;
* Continue reading to learn what&#039;s involved with editing binary resources.&lt;br /&gt;
&lt;br /&gt;
===Modding resources===&lt;br /&gt;
Broadly speaking, Oni&#039;s resources can be broken down as: &#039;&#039;&#039;environments&#039;&#039;&#039; (architecture, triggers, furniture), &#039;&#039;&#039;characters&#039;&#039;&#039; (class data, instance lists, 3D models), &#039;&#039;&#039;weapons&#039;&#039;&#039; (ditto), &#039;&#039;&#039;text&#039;&#039;&#039; (diary pages, objectives, subtitles), and &#039;&#039;&#039;sound&#039;&#039;&#039; (music, voice-overs, and sound effects). However, new levels do not require all this data to be made from scratch. You might decide to re-use a level or some of its resources, or make a new level populated with existing characters, etc.&lt;br /&gt;
&lt;br /&gt;
* Go to the [[XML]] namespace to get a simple introduction to the types of game data and learn the (relatively) user-friendly XML modding technique, or;&lt;br /&gt;
* Go to the [[OBD]] namespace to learn more technical details about the game data, or;&lt;br /&gt;
* Continue reading to start down the path to modding specific kinds of resources.&lt;br /&gt;
&lt;br /&gt;
====Environments====&lt;br /&gt;
Levels are usually built in [[SketchUp tutorials and tips|SketchUp]]. The open-source 3D modeler [[Blender]] can be used for levels, objects, characters and animations. Formerly we preferred to do that work in the discontinued [[Mod Tool]], but the community&#039;s support for Blender has continued to improve and it is now our modeler of choice.&lt;br /&gt;
&lt;br /&gt;
* Tutorial: [[Creating a level]]&lt;br /&gt;
* Tutorial: [[Authoring custom camera animations]]&lt;br /&gt;
&lt;br /&gt;
====Textures====&lt;br /&gt;
Modders have their own preferred bitmap editors for changing/creating textures. On one end of the scale are expensive programs such as Photoshop, and on the other end are free editors like [https://www.gimp.org/ Gimp] and [https://www.getpaint.net/ Paint.NET].&lt;br /&gt;
&lt;br /&gt;
Textures always have dimensions of &amp;quot;power of 2&amp;quot;: typically 32, 64, 128 or 256 pixels on a side. [[FERAL|Mac Oni]] supports a maximum of 1024x1024 textures. Windows Oni (with [[Daodan DLL|fan patch]]) supports textures up to 512x512.&lt;br /&gt;
&lt;br /&gt;
These textures can be static, animated, transparent or have a reflection map (usually used for armor). Splashscreens (chapter start screens), win-level and lose-level screens are actually composite images made up of smaller textures due to Oni&#039;s limitation in texture size.&lt;br /&gt;
&lt;br /&gt;
* Tutorial: [[Modifying textures]]&lt;br /&gt;
&lt;br /&gt;
====Characters====&lt;br /&gt;
[[Image:Female stun.jpg|right|300px]]&lt;br /&gt;
Characters in Oni are built with a 19-part skeleton. This skeleton is the same for all humanoid characters and simply tells Oni how the individual parts with their own geometry and textures are assembled. You cannot really compare this with the modern game industry&#039;s use of the term &amp;quot;skeleton&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
A character&#039;s attributes are defined by their character class file which links also to the animation list that defines their moveset. The high modularity of character data allows Oni to share many resources between characters (especially animation collections and particles).&lt;br /&gt;
&lt;br /&gt;
* Tutorial: [[Importing character models]]&lt;br /&gt;
* Tutorial: [[OBD talk:TRAM|Tweaking an individual animation]]&lt;br /&gt;
* Tutorial: [[XML:Adding spawnable characters|Adding spawnable characters to a level]]&lt;br /&gt;
&lt;br /&gt;
====Weapons====&lt;br /&gt;
* Tutorial: [[Importing weapon models]]&lt;br /&gt;
&lt;br /&gt;
====Text====&lt;br /&gt;
The text-based resource types are fairly easy to edit as long as you don&#039;t get confused by the IDs which they use to link to each other. The main textual resources are the pages you can view in the [[Data Comlink]] and the consoles you read in-game. The textual resource types are listed here: {{SectionLink|OBD:File types/Interface|List}}.&lt;br /&gt;
&lt;br /&gt;
====Sound and music====&lt;br /&gt;
Instructions on importing sounds, and links to conversion tools, can be found [[XML:SNDD|HERE]].&lt;br /&gt;
&lt;br /&gt;
==Need some inspiration?==&lt;br /&gt;
To get ideas, play some existing mods (which you can install with the [[AE]]), or look at the pages below.&lt;br /&gt;
* [[Modding brainstorms]]&lt;br /&gt;
* [[Review criticisms]]&lt;br /&gt;
* [[Animation ideas]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Oni_(folder)/GameDataFolder&amp;diff=47061</id>
		<title>Oni (folder)/GameDataFolder</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Oni_(folder)/GameDataFolder&amp;diff=47061"/>
		<updated>2026-04-06T00:47:13Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: moved one note to IGMD; added notes on the movies and on the level numbering gaps; removed all that unnecessary bold, what an eyesore&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;GameDataFolder&#039;&#039;&#039; (commonly called &amp;quot;GDF&amp;quot;) is a subfolder of the main Oni folder. It holds the following:&lt;br /&gt;
*Oni&#039;s game data, in binary format (see [[OBD]] for more info)&lt;br /&gt;
*the level logic, in plain-text (in the IGMD subfolder; see [[BSL]] for more info)&lt;br /&gt;
*the intro and outro animated sequences, in the Bink video format&lt;br /&gt;
&lt;br /&gt;
First we show the purpose of each file in this folder – but don&#039;t miss our helpful notes below this directory listing.&lt;br /&gt;
&lt;br /&gt;
==Directory listing==&lt;br /&gt;
You should have all the files below in your GameDataFolder, though the movie files are optional (see note at bottom). The &amp;quot;PS2&amp;quot; column shows the numbers assigned to each file name on disc; the .raw and .sep file for each level are in subdirectories titled 20/ and 21/. Beside each set of level files, we list the subfolders of IGMD which hold the corresponding level logic. &#039;&#039;&#039;SPOILER WARNING&#039;&#039;&#039;: The &amp;quot;Chapter&amp;quot; column links to summaries and analyses of Oni&#039;s storyline.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot; style=&amp;quot;margin-left:auto; margin-right:auto;&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;3&amp;quot; align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;File name&#039;&#039;&#039;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;Level logic folder&#039;&#039;&#039;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;[[Chapters|Chapter]]&#039;&#039;&#039;&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot; align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;Location (seen in Load Game dialog)&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;Windows&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;Mac&#039;&#039;&#039;&lt;br /&gt;
|align=&amp;quot;center&amp;quot;|&#039;&#039;&#039;PS2&#039;&#039;&#039;&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;center&amp;gt;[[IGMD|IGMD/]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|valign=top|1&lt;br /&gt;
| &amp;lt;center&amp;gt;--&amp;lt;/center&amp;gt;&lt;br /&gt;
|colspan=2 align=center|Contains all level logic&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;center&amp;gt;[[:Category:Intro sequence|intro.bik]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|valign=top|2&lt;br /&gt;
| &amp;lt;center&amp;gt;--&amp;lt;/center&amp;gt;&lt;br /&gt;
|colspan=2 align=center|Movie plays when Oni is launched&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level0_Final.dat&amp;lt;br&amp;gt;level0_Final.raw&lt;br /&gt;
|level0_Final.dat&amp;lt;br&amp;gt;level0_Final.raw&amp;lt;br&amp;gt;level0_Final.sep&lt;br /&gt;
|3&amp;lt;br&amp;gt;20/1&amp;lt;br&amp;gt;21/1&lt;br /&gt;
|[[IGMD/global]]&lt;br /&gt;
|colspan=2 align=center|Used in all Chapters (see notes below on &amp;quot;level0_Final&amp;quot; and &amp;quot;IGMD/global&amp;quot;)&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level1_Final.dat&amp;lt;br&amp;gt;level1_Final.raw&lt;br /&gt;
|level1_Final.dat&amp;lt;br&amp;gt;level1_Final.raw&amp;lt;br&amp;gt;level1_Final.sep&lt;br /&gt;
|11&amp;lt;br&amp;gt;20/9&amp;lt;br&amp;gt;21/9&lt;br /&gt;
|[[IGMD/EnvWarehouse]]&lt;br /&gt;
|{{C|0|0: COMBAT TRAINING}}&amp;lt;br&amp;gt;{{C|1|1: TRIAL RUN}}&lt;br /&gt;
|TCTF Training&amp;lt;br&amp;gt;Syndicate Warehouse&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level2_Final.dat&amp;lt;br&amp;gt;level2_Final.raw&lt;br /&gt;
|level2_Final.dat&amp;lt;br&amp;gt;level2_Final.raw&amp;lt;br&amp;gt;level2_Final.sep&lt;br /&gt;
|12&amp;lt;br&amp;gt;20/10&amp;lt;br&amp;gt;21/10&lt;br /&gt;
|[[IGMD/manplant]]&lt;br /&gt;
|{{C|2|2: ENGINES OF EVIL}}&lt;br /&gt;
|Manufacturing Plant&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level3_Final.dat&amp;lt;br&amp;gt;level3_Final.raw&lt;br /&gt;
|level3_Final.dat&amp;lt;br&amp;gt;level3_Final.raw&amp;lt;br&amp;gt;level3_Final.sep&lt;br /&gt;
|13&amp;lt;br&amp;gt;20/11&amp;lt;br&amp;gt;21/11&lt;br /&gt;
|[[IGMD/lab]]&lt;br /&gt;
|{{C|3|3: PUZZLE PIECES}}&lt;br /&gt;
|Bio-Research Lab&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level4_Final.dat&amp;lt;br&amp;gt;level4_Final.raw&lt;br /&gt;
|level4_Final.dat&amp;lt;br&amp;gt;level4_Final.raw&amp;lt;br&amp;gt;level4_Final.sep&lt;br /&gt;
|14&amp;lt;br&amp;gt;20/12&amp;lt;br&amp;gt;21/12&lt;br /&gt;
|[[IGMD/Airport]]&lt;br /&gt;
|{{C|4|4: TIGER BY THE TAIL}}&lt;br /&gt;
|Airport Assault&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level6_Final.dat&amp;lt;br&amp;gt;level6_Final.raw&lt;br /&gt;
|level6_Final.dat&amp;lt;br&amp;gt;level6_Final.raw&amp;lt;br&amp;gt;level6_Final.sep&lt;br /&gt;
|15&amp;lt;br&amp;gt;20/13&amp;lt;br&amp;gt;21/13&lt;br /&gt;
|[[IGMD/Airport_III]]&lt;br /&gt;
|{{C|5|5: HOT PURSUIT}}&lt;br /&gt;
|Airport Cargo Hangars&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level8_Final.dat&amp;lt;br&amp;gt;level8_Final.raw&lt;br /&gt;
|level8_Final.dat&amp;lt;br&amp;gt;level8_Final.raw&amp;lt;br&amp;gt;level8_Final.sep&lt;br /&gt;
|16&amp;lt;br&amp;gt;20/14&amp;lt;br&amp;gt;21/14&lt;br /&gt;
|[[IGMD/tctf]]&lt;br /&gt;
|{{C|6|6: COUNTERATTACK}}&lt;br /&gt;
|TCTF Regional HQ&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level9_Final.dat&amp;lt;br&amp;gt;level9_Final.raw&lt;br /&gt;
|level9_Final.dat&amp;lt;br&amp;gt;level9_Final.raw&amp;lt;br&amp;gt;level9_Final.sep&lt;br /&gt;
|17&amp;lt;br&amp;gt;20/15&amp;lt;br&amp;gt;21/15&lt;br /&gt;
|[[IGMD/power]]&lt;br /&gt;
|{{C|7|7: A FRIEND IN NEED}}&lt;br /&gt;
|Atmospheric Conversion Center (exterior)&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level10_Final.dat&amp;lt;br&amp;gt;level10_Final.raw&lt;br /&gt;
|level10_Final.dat&amp;lt;br&amp;gt;level10_Final.raw&amp;lt;br&amp;gt;level10_Final.sep&lt;br /&gt;
|4&amp;lt;br&amp;gt;20/2&amp;lt;br&amp;gt;21/2&lt;br /&gt;
|[[IGMD/power_II]]&lt;br /&gt;
|{{C|8|8: AN INNOCENT LIFE}}&lt;br /&gt;
|Atmospheric Conversion Center (interior)&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level11_Final.dat&amp;lt;br&amp;gt;level11_Final.raw&lt;br /&gt;
|level11_Final.dat&amp;lt;br&amp;gt;level11_Final.raw&amp;lt;br&amp;gt;level11_Final.sep&lt;br /&gt;
|5&amp;lt;br&amp;gt;20/3&amp;lt;br&amp;gt;21/3&lt;br /&gt;
|[[IGMD/state]]&lt;br /&gt;
|{{C|9|9: TRUTH AND CONSEQUENCES}}&lt;br /&gt;
|Regional State Building&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level12_Final.dat&amp;lt;br&amp;gt;level12_Final.raw&lt;br /&gt;
|level12_Final.dat&amp;lt;br&amp;gt;level12_Final.raw&amp;lt;br&amp;gt;level12_Final.sep&lt;br /&gt;
|6&amp;lt;br&amp;gt;20/4&amp;lt;br&amp;gt;21/4&lt;br /&gt;
|[[IGMD/roof]]&lt;br /&gt;
|{{C|10|10: CAT AND MOUSE}}&lt;br /&gt;
|Rooftops&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level13_Final.dat&amp;lt;br&amp;gt;level13_Final.raw&lt;br /&gt;
|level13_Final.dat&amp;lt;br&amp;gt;level13_Final.raw&amp;lt;br&amp;gt;level13_Final.sep&lt;br /&gt;
|7&amp;lt;br&amp;gt;20/5&amp;lt;br&amp;gt;21/5&lt;br /&gt;
|[[IGMD/dream_lab]]&lt;br /&gt;
|{{C|11|11: DREAM DIVER}}&lt;br /&gt;
|Doctor Hasegawa&#039;s Lab&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level14_Final.dat&amp;lt;br&amp;gt;level14_Final.raw&lt;br /&gt;
|level14_Final.dat&amp;lt;br&amp;gt;level14_Final.raw&amp;lt;br&amp;gt;level14_Final.sep&lt;br /&gt;
|8&amp;lt;br&amp;gt;20/6&amp;lt;br&amp;gt;21/6&lt;br /&gt;
|[[IGMD/neuro]]&lt;br /&gt;
|{{C|12|12: SINS OF THE FATHER}}&lt;br /&gt;
|TCTF Science Prison&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level18_Final.dat&amp;lt;br&amp;gt;level18_Final.raw&lt;br /&gt;
|level18_Final.dat&amp;lt;br&amp;gt;level18_Final.raw&amp;lt;br&amp;gt;level18_Final.sep&lt;br /&gt;
|9&amp;lt;br&amp;gt;20/7&amp;lt;br&amp;gt;21/7&lt;br /&gt;
|[[IGMD/tctf_ii]]&lt;br /&gt;
|{{C|13|13: PHOENIX RISING}}&lt;br /&gt;
|TCTF Regional HQ (redux)&lt;br /&gt;
|-&lt;br /&gt;
|valign=top|level19_Final.dat&amp;lt;br&amp;gt;level19_Final.raw&lt;br /&gt;
|level19_Final.dat&amp;lt;br&amp;gt;level19_Final.raw&amp;lt;br&amp;gt;level19_Final.sep&lt;br /&gt;
|10&amp;lt;br&amp;gt;20/8&amp;lt;br&amp;gt;21/8&lt;br /&gt;
|[[IGMD/compound]]&lt;br /&gt;
|{{C|14|14: DAWN OF THE CHRYSALIS}}&lt;br /&gt;
|Syndicate Mountain Compound&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;center&amp;gt;[[:Category:Outro sequence|outro.bik]]&amp;lt;/center&amp;gt;&lt;br /&gt;
|18&lt;br /&gt;
| &amp;lt;center&amp;gt;--&amp;lt;/center&amp;gt;&lt;br /&gt;
|colspan=2 align=center|Movie plays when Oni is beaten&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
===&amp;quot;Missing&amp;quot; levels===&lt;br /&gt;
Players in 2001 were puzzled when they first installed Oni and looked inside GameDataFolder to find that there were strange gaps in the file numbering: specifically there&#039;s no level5, level7, level15, level16 or level17. There isn&#039;t something wrong with your installation: the game&#039;s content was reshuffled late in development and Bungie West apparently felt it would be too dangerous or disruptive to re-number the level files. The existing files tell a complete story from Chapter 1 to Chapter 14.&lt;br /&gt;
&lt;br /&gt;
===level0_Final===&lt;br /&gt;
The level 0 data is only loaded once, when Oni starts.&lt;br /&gt;
&lt;br /&gt;
===intro.bik, outro.bik===&lt;br /&gt;
*The movie files are not needed for Oni to run. You can thus rename or remove intro.bik to avoid the need to click through the movie.&lt;br /&gt;
&lt;br /&gt;
*When the game is beaten and outro finishes playing, the game will quit. Sometimes players think that the game has crashed, but this is by design. Note that if you remove outro.bik, Oni will quit immediately after beating the game.&lt;br /&gt;
&lt;br /&gt;
*A bug currently exists where the ending movie plays only its sound, with the screen remaining black. You will have to play outro.bik by double-clicking it if you want to watch it. See next point.&lt;br /&gt;
&lt;br /&gt;
*Epic Games Tools, the makers of the Bink video format, offer [https://www.radgametools.com/bnkdown.htm standalone apps] for all platforms if you want to watch the .bik files on their own. However ffmpeg also understands the Bink format, meaning that you can use [https://www.videolan.org/vlc/ VLC] or another ffmpeg-based client to watch the movies.&lt;br /&gt;
&lt;br /&gt;
===How Oni finds its GameDataFolder===&lt;br /&gt;
In Windows, Oni&#039;s engine first looks in the [[wp:Working directory|working directory]] (aka &amp;quot;.&amp;quot;). If &amp;quot;.\GameDataFolder&amp;quot; is missing, Oni tries parent folders all the way up to the root (e.g., it looks for &amp;quot;C:\Program Files\Oni\GameDataFolder&amp;quot;, then &amp;quot;C:\Program Files\GameDataFolder&amp;quot;, then &amp;quot;C:\GameDataFolder&amp;quot;). As a last resort, it looks for &amp;quot;.\OniEngine\GameDataFolder&amp;quot; the same way.&lt;br /&gt;
&lt;br /&gt;
The Mac Oni app follows the same search pattern for GameDataFolder/, but does not look for OniEngine/GameDataFolder/.&lt;br /&gt;
&lt;br /&gt;
[[Category:Game directory map]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Oni_(folder)/GameDataFolder/IGMD&amp;diff=47060</id>
		<title>Oni (folder)/GameDataFolder/IGMD</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Oni_(folder)/GameDataFolder/IGMD&amp;diff=47060"/>
		<updated>2026-04-06T00:45:03Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: moved note about global/ here from Oni (folder)/GameDataFolder; tweaked some links&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&#039;&#039;&#039;IGMD&#039;&#039;&#039; is a subfolder of GameDataFolder, where the level logic is defined, chapter by chapter. If the contents of this folder are missing or corrupt, nothing interesting will ever happen :-)  If you think your folder has been corrupted, download a .zip file of the unmodified files for your platform: [http://geyser.oni2.net/OSL/IGMD/IGMD_PC.zip Windows], [http://geyser.oni2.net/OSL/IGMD/IGMD_Mac.zip Mac].&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Notes on this folder&#039;&#039;&#039;&lt;br /&gt;
*The scripts in the subfolders of IGMD are plain-text files with a .bsl extension, written in [[BSL|BFW Scripting Language]].&lt;br /&gt;
*[[IGMD/global]] is not present by default, but if it is created, the functions in any scripts placed inside it will be accessible from all levels; however, the Windows demo engine ignores the global/ folder.&lt;br /&gt;
*Oni treats the level folder names as case-insensitive, so you can rename &amp;quot;EnvWarehouse&amp;quot; to &amp;quot;eNvwArEhOuSe&amp;quot; and you&#039;ll still be able to play Chapter 1.&lt;br /&gt;
*The Mac and Windows scripts are identical except for minor differences in &#039;&#039;&#039;tctf_ii_cutscene.bsl&#039;&#039;&#039; and &#039;&#039;&#039;tctf2.bsl&#039;&#039;&#039; for the boss battle of Chapter 13, shown at {{SectionLink|Windows Oni vs. Mac Oni|Level logic}}.&lt;br /&gt;
*The folders only present in the Euro Mac and PS2 IGMDs are development relics which do not correspond to chapters of the game; there are no level#_Final.dat/.raw(/.sep) files for them and so the script folders are never looked up by the engine. See [[Pre-beta content#Cut levels|HERE]] for an overview of the cut levels.&lt;br /&gt;
*The PS2&#039;s script folders 12/ (EnvWarehouse/) and 15/ (manplant/) each contain a &amp;quot;test&amp;quot; subfolder which is a backup of the unmodified scripts. The scripts in the main folder for each level are typically modified from the PC version in minor ways, documented on [[Oni (PlayStation 2)]].&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable sortable&amp;quot; style=&amp;quot;margin-left:auto; margin-right:auto;&amp;quot;&lt;br /&gt;
!Standard Win/&amp;lt;br&amp;gt;Mac release&lt;br /&gt;
!European Mac&amp;lt;br&amp;gt;non-English&lt;br /&gt;
!Japanese&amp;lt;br&amp;gt;Win/Mac&lt;br /&gt;
!Play-&amp;lt;br&amp;gt;Station 2&lt;br /&gt;
!Chapter&lt;br /&gt;
!Location (seen in Load Game dialog)&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/global|global/]]&#039;&#039;&#039;&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|13/&lt;br /&gt;
|colspan=2|Loads for all levels&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/EnvWarehouse|EnvWarehouse/]]&#039;&#039;&#039;&lt;br /&gt;
|EnvWarehouse/&lt;br /&gt;
|EnvWarehouse/&lt;br /&gt;
|12/&lt;br /&gt;
|data-sort-value=&amp;quot;00&amp;quot;|{{C|0|0: COMBAT TRAINING}}&amp;lt;br&amp;gt;{{C|1|1: TRIAL RUN}}&lt;br /&gt;
|valign=bottom|TCTF Training&amp;lt;br&amp;gt;Syndicate Warehouse&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/manplant|manplant/]]&#039;&#039;&#039;&lt;br /&gt;
|manplant/&lt;br /&gt;
|MANPLANT/&lt;br /&gt;
|15/&lt;br /&gt;
|data-sort-value=&amp;quot;02&amp;quot;|{{C|2|2: ENGINES OF EVIL}}&lt;br /&gt;
|Manufacturing Plant&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/lab|lab/]]&#039;&#039;&#039;&lt;br /&gt;
|lab/&lt;br /&gt;
|LAB/&lt;br /&gt;
|14/&lt;br /&gt;
|data-sort-value=&amp;quot;03&amp;quot;|{{C|3|3: PUZZLE PIECES}}&lt;br /&gt;
|Bio-Research Lab&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/Airport|Airport/]]&#039;&#039;&#039;&lt;br /&gt;
|Airport/&lt;br /&gt;
|Airport/&lt;br /&gt;
|data-sort-value=&amp;quot;01/&amp;quot;|1/&lt;br /&gt;
|data-sort-value=&amp;quot;04&amp;quot;|{{C|4|4: TIGER BY THE TAIL}}&lt;br /&gt;
|Airport Assault&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|Airport_II/&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|data-sort-value=&amp;quot;02/&amp;quot;|2/&lt;br /&gt;
|(cut)&lt;br /&gt;
|Airport Part Deux&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/Airport_III|Airport_III/]]&#039;&#039;&#039;&lt;br /&gt;
|Airport_III/&lt;br /&gt;
|Airport_III/&lt;br /&gt;
|data-sort-value=&amp;quot;03/&amp;quot;|3/&lt;br /&gt;
|data-sort-value=&amp;quot;05&amp;quot;|{{C|5|5: HOT PURSUIT}}&lt;br /&gt;
|Airport Cargo Hangars&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/tctf|tctf/]]&#039;&#039;&#039;&lt;br /&gt;
|tctf/&lt;br /&gt;
|TCTF/&lt;br /&gt;
|23/&lt;br /&gt;
|data-sort-value=&amp;quot;06&amp;quot;|{{C|6|6: COUNTERATTACK}}&lt;br /&gt;
|TCTF Regional HQ&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/power|power/]]&#039;&#039;&#039;&lt;br /&gt;
|power/&lt;br /&gt;
|POWER/&lt;br /&gt;
|18/&lt;br /&gt;
|data-sort-value=&amp;quot;07&amp;quot;|{{C|7|7: A FRIEND IN NEED}}&lt;br /&gt;
|Atmospheric Conversion Center (exterior)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/power_II|power_II/]]&#039;&#039;&#039;&lt;br /&gt;
|power_II/&lt;br /&gt;
|power_II/&lt;br /&gt;
|19/&lt;br /&gt;
|data-sort-value=&amp;quot;08&amp;quot;|{{C|8|8: AN INNOCENT LIFE}}&lt;br /&gt;
|Atmospheric Conversion Center (interior)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/state|state/]]&#039;&#039;&#039;&lt;br /&gt;
|state/&lt;br /&gt;
|STATE/&lt;br /&gt;
|22/&lt;br /&gt;
|data-sort-value=&amp;quot;09&amp;quot;|{{C|9|9: TRUTH AND CONSEQUENCES}}&lt;br /&gt;
|Regional State Building&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/roof|roof/]]&#039;&#039;&#039;&lt;br /&gt;
|roof/&lt;br /&gt;
|ROOF/&lt;br /&gt;
|20/&lt;br /&gt;
|{{C|10|10: CAT AND MOUSE}}&lt;br /&gt;
|Rooftops&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/dream_lab|dream_lab/]]&#039;&#039;&#039;&lt;br /&gt;
|dream_lab/&lt;br /&gt;
|dream_lab/&lt;br /&gt;
|11/&lt;br /&gt;
|{{C|11|11: DREAM DIVER}}&lt;br /&gt;
|Doctor Hasegawa&#039;s Lab&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/neuro|neuro/]]&#039;&#039;&#039;&lt;br /&gt;
|neuro/&lt;br /&gt;
|NEURO/&lt;br /&gt;
|16/&lt;br /&gt;
|{{C|12|12: SINS OF THE FATHER}}&lt;br /&gt;
|TCTF Science Prison&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|BGI/&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|16/&lt;br /&gt;
|(cut)&lt;br /&gt;
|BGI HQ&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/tctf_ii|tctf_ii/]]&#039;&#039;&#039;&lt;br /&gt;
|tctf_ii&lt;br /&gt;
|TCTF_II&lt;br /&gt;
|24/&lt;br /&gt;
|{{C|13|13: PHOENIX RISING}}&lt;br /&gt;
|TCTF Regional HQ (redux)&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;[[Oni (folder)/GameDataFolder/IGMD/compound|compound/]]&#039;&#039;&#039;&lt;br /&gt;
|compound/&lt;br /&gt;
|COMPOUND/&lt;br /&gt;
|data-sort-value=&amp;quot;08/&amp;quot;|8/&lt;br /&gt;
|{{C|14|14: DAWN OF THE CHRYSALIS}}&lt;br /&gt;
|Syndicate Mountain Compound&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|aop/&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|data-sort-value=&amp;quot;04/&amp;quot;|4/&lt;br /&gt;
|(multiplayer)&lt;br /&gt;
|The Arena of Pain&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|CZ/&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|data-sort-value=&amp;quot;09/&amp;quot;|9/&lt;br /&gt;
|(multiplayer)&lt;br /&gt;
|Crossing Zone&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|pit/&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|17/&lt;br /&gt;
|(multiplayer)&lt;br /&gt;
|Pit&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|CZ_II/&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|10/&lt;br /&gt;
|(multiplayer)&lt;br /&gt;
|Crossing Zone Too&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|cap/&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|data-sort-value=&amp;quot;07/&amp;quot;|7/&lt;br /&gt;
|(multiplayer)&lt;br /&gt;
|Capture&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|ats/&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|data-sort-value=&amp;quot;05/&amp;quot;|5/&lt;br /&gt;
|(development)&lt;br /&gt;
|AlexTestSite&lt;br /&gt;
|-&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|SR/&lt;br /&gt;
|bgcolor=lightgray|&lt;br /&gt;
|21/&lt;br /&gt;
|(development)&lt;br /&gt;
|FiringRange&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
[[Category:Game directory map]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:Oni_Binary_Data&amp;diff=47059</id>
		<title>OBD:Oni Binary Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:Oni_Binary_Data&amp;diff=47059"/>
		<updated>2026-04-06T00:21:28Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: hatnote wording&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:OBD.png|right]]&lt;br /&gt;
{{Hatnote|If you are a beginner to modding, you should read [[Introduction to modding]] first.}}&lt;br /&gt;
The &#039;&#039;&#039;OBD&#039;&#039;&#039; namespace is devoted to documenting Oni&#039;s binary data (.dat/.raw[/.sep] files) as reverse-engineered by dedicated members of the fan community. Needless to say, this is a highly technical area of the wiki, and knowledge of topics such as [[wp:Hexadecimal|hexadecimal]], [[wp:Pointer (computer programming)|pointers]], and [[wp:Endianness|endianness]] is a prerequisite. Everything about the game&#039;s file formats is intended to be documented here, but the core of the Oni Binary Database is the information on resource types (&amp;quot;File types&amp;quot; in the directory below). Note that the [[XML|XML namespace]] documents the resource types in a way which is more modding-oriented and modder-friendly.&lt;br /&gt;
&lt;br /&gt;
This database&#039;s information has been used by modders in such [[:Category:Modding projects|projects]] as:&lt;br /&gt;
*The [[Anniversary Edition|Anniversary Edition]]&lt;br /&gt;
*[[AE:ONK|Oni ni Kanabo]]&lt;br /&gt;
*The [[AE:BIP|Binary Improvement Project]]&lt;br /&gt;
*[[OniFly]]&lt;br /&gt;
&lt;br /&gt;
The knowledge documented here was also used to develop [[:Category:Modding tools|modding tools]] such as:&lt;br /&gt;
*[[OniSplit]]&lt;br /&gt;
*[[OniUnPacker|OniUnPacker]]&lt;br /&gt;
*[[OME|Oni Model Extractor]]&lt;br /&gt;
*[[ONI-Trainer|Oni Trainer]]&lt;br /&gt;
&lt;br /&gt;
==Knowledge base==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Instance file format|Instance file format]]&lt;br /&gt;
|About .dat files&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Raw and separate file formats|Raw/separate file format]]&lt;br /&gt;
|About .raw &amp;amp; .sep files&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Persist.dat|persist.dat]]&lt;br /&gt;
|The save-game file&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:File types|File types]]&lt;br /&gt;
|Resource types such as ONCC, TRAM, etc.&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Data types|Data types]]&lt;br /&gt;
|The format of the integers, floats, etc. in the resources&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Globalization|Globalization]]&lt;br /&gt;
|Duplication and false duplicates in the resources&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Localization|Localizations]]&lt;br /&gt;
|Considerations and pitfalls for localizers&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Releases|Releases]]&lt;br /&gt;
|Database of each release&#039;s level file sizes&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Text encoding|Text encoding]]&lt;br /&gt;
|Variant text encodings found in localizations&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Oni2AS|Oni 2 game data]]&lt;br /&gt;
|About the [[Oni2AS|Angel Studios dev build]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===External Links===&lt;br /&gt;
*[http://ssg.oni2.net ssg&#039;s Oni Stuff]&lt;br /&gt;
:Oni Stuff is the original database of Oni&#039;s resource types, source for much of this wiki&#039;s OBD. It also contains information which has never been ported to the wiki such as flag locations and data on every character spawned in each level.&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OniSplit&amp;diff=47058</id>
		<title>OniSplit</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OniSplit&amp;diff=47058"/>
		<updated>2026-04-06T00:19:28Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: tweaked lede wording and some of the typesetting&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{integrate|See {{SectionLink||Levels}}.}}&lt;br /&gt;
{{Hatnote|Before reading this page, it&#039;s a good idea to be familiar with basic Oni [[game data terminology]].}}&lt;br /&gt;
&#039;&#039;&#039;OniSplit&#039;&#039;&#039;, written by [[User talk:Neo|Neo]], is an integral part of the [[Anniversary Edition]] and an essential modding tool on its own. It is a command line tool which can import and export almost all kinds of game data from the Windows and Mac versions of Oni, including textures, sounds, 3D models and animations, and level geometry. Its name comes from its original purpose, which was breaking Oni&#039;s level data files into individual resources. Soon the ability to convert those resources into and from editable standard file formats was added. OniSplit incorporates the knowledge documented at the [[OBD|Oni Binary Database]], and is currently the community&#039;s main modding tool.&lt;br /&gt;
&lt;br /&gt;
:&#039;&#039;Subpages:&#039;&#039; [[/Change_log|Change log]] (past versions), [[/WIP|WIP notes]] (upcoming versions)&lt;br /&gt;
&lt;br /&gt;
==Getting it==&lt;br /&gt;
===Download links===&lt;br /&gt;
* Latest release of OniSplit: [http://mods.oni2.net/node/38 v0.9.99.2] ([https://websvn.illy.bz/browse/Oni2/OniSplit/ source code])&lt;br /&gt;
* The current GUI for OniSplit is [[Vago (tool)|Vago]]. &#039;&#039;&#039;You should try the GUI to see if it does what you need before working with OniSplit on the command line.&#039;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
===Requirements===&lt;br /&gt;
*Windows: [https://dotnet.microsoft.com/en-us/download/dotnet-framework .NET framework]&lt;br /&gt;
*macOS: [https://www.mono-project.com/download/stable/ Mono framework]&lt;br /&gt;
&lt;br /&gt;
==Workflow==&lt;br /&gt;
OniSplit is used in up to four different stages when modding:&lt;br /&gt;
{|&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|&amp;lt;span style=&amp;quot;font-size:150%&amp;quot;&amp;gt;&#039;&#039;&#039;OUT&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
|&#039;&#039;Exporting&#039;&#039; - using the &amp;lt;tt&amp;gt;-export&amp;lt;/tt&amp;gt; command, a [[Dat|level data file]] is broken into its component resources, .oni files.&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;border-style: solid; border-width: 0 0 1px 0&amp;quot;|&#039;&#039;Extracting&#039;&#039; - using the &amp;lt;tt&amp;gt;-extract&amp;lt;/tt&amp;gt; commands, .oni files are converted to standard-format files that can be edited in various third-party programs.&lt;br /&gt;
|-&lt;br /&gt;
|rowspan=&amp;quot;2&amp;quot;|&amp;lt;center&amp;gt;&amp;lt;span style=&amp;quot;font-size:150%&amp;quot;&amp;gt;&#039;&#039;&#039;IN&#039;&#039;&#039;&amp;lt;/span&amp;gt;&amp;lt;/center&amp;gt;&lt;br /&gt;
|&#039;&#039;Creating&#039;&#039; - using the &amp;lt;tt&amp;gt;-create&amp;lt;/tt&amp;gt; commands, standard-format files are converted into .oni files.&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;Importing&#039;&#039; - using the &amp;lt;tt&amp;gt;-import&amp;lt;/tt&amp;gt; command, a folder of .oni files is combined into a level data file.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note that &amp;quot;extracting&amp;quot; refers to a conversion from one format to another, but &amp;quot;exporting&amp;quot; only refers to the creation of .oni files from a .dat file. When exporting, no conversion or re-formatting is taking place; the data is simply being copied out of a .dat (any connected binary data in .raw/.sep files will be concatenated to the data from the .dat when making the .oni).&lt;br /&gt;
&lt;br /&gt;
==Beginner&#039;s tips==&lt;br /&gt;
{{Divhide|show=yes|For users new to the command line or to OniSplit}}&lt;br /&gt;
In Windows, there are several options through which you can use OniSplit - out of which it is recommended to get Vago and CMDer:&lt;br /&gt;
* [[Vago (tool)|Vago]] is a GUI for OniSplit which allows you to handle all general conversions, save your sessions as project files, input manual commands if needed, and more. The two downsides of it is that it doesn&#039;t support Blender yet, forcing the users input commands manually, which in turn are not stored upon ending the session.&lt;br /&gt;
* Command Prompt (cmd.exe). Windows&#039; default command line interpreter; it&#039;s a very simple application that does not preserve a history of your commands from session to session.&lt;br /&gt;
* [https://cmder.app/ CMDer] is an excellent alternative to cmd.exe. It adds a context menu option to open the command line with the current directory set to the folder you right-click in, and it also stores your recently used commands after ending the session.&lt;br /&gt;
&lt;br /&gt;
On Macs, the command line is accessed through /Applications/Utilities/Terminal.app (press Command-Space and type &amp;quot;terminal&amp;quot; to get there faster).&lt;br /&gt;
&lt;br /&gt;
===OniSplit syntax===&lt;br /&gt;
The basic syntax is:&lt;br /&gt;
{|&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Windows&#039;&#039;&#039;||&amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background:rgb(235,235,235); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;OniSplit.exe&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:rgb(175,175,255); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;-create:trbs&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:rgb(255,156,156); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;C:\Games\Oni\SomeFolder&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:rgb(175,175,255); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;-normals&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:rgb(156,255,156); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;C:\Games\Oni\Modding\TRBSMyNewChar.dae&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&#039;&#039;&#039;Mac&#039;&#039;&#039;||&amp;lt;tt&amp;gt;&amp;lt;span style=&amp;quot;background:rgb(235,235,235); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;mono OniSplit.exe&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:rgb(175,175,255); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;-create:trbs&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:rgb(255,156,156); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;/Games/Oni/SomeFolder&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:rgb(175,175,255); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;-normals&amp;lt;/span&amp;gt; &amp;lt;span style=&amp;quot;background:rgb(156,255,156); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;/Games/Oni/Modding/TRBSMyNewChar.dae&amp;lt;/span&amp;gt;&amp;lt;/tt&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Here&#039;s how it breaks down:&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;width:130px&amp;quot;|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;span style=&amp;quot;background:rgb(235,235,235); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;&#039;&#039;&#039;Invocation&#039;&#039;&#039;&amp;lt;/span&amp;gt;&lt;br /&gt;
|Windows can refer to the program directly, but Macs use Mono to run the .NET app; note also that if OniSplit.exe is not in the Command Prompt/Terminal&#039;s current directory, you must provide the full path to it or set the path variable.&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span style=&amp;quot;background:rgb(175,175,255); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;&#039;&#039;&#039;Option&#039;&#039;&#039;&amp;lt;/span&amp;gt;||The command.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;span style=&amp;quot;background:rgb(255,156,156); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;&#039;&#039;&#039;Path to folder&#039;&#039;&#039;&amp;lt;/span&amp;gt;||Whether destination or source, the path which is a folder comes first. &amp;lt;u&amp;gt;Use the full path to the folder (starting from &amp;quot;C:\&amp;quot;, or &amp;quot;/&amp;quot; on Macs).&amp;lt;/u&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;span style=&amp;quot;background:rgb(175,175,255); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;&#039;&#039;&#039;Option flags&#039;&#039;&#039;&amp;lt;/span&amp;gt;||The flags that can optionally go with this command, separated by spaces.&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;span style=&amp;quot;background:rgb(156,255,156); border-radius:0.33em; padding:0.15em&amp;quot;&amp;gt;&#039;&#039;&#039;Path to file&#039;&#039;&#039;&amp;lt;/span&amp;gt;||Whether destination or source, the path of the file comes second. &amp;lt;u&amp;gt;Use the full path to the file (starting from &amp;quot;C:\&amp;quot;, or &amp;quot;/&amp;quot; on Macs).&amp;lt;/u&amp;gt; One exception to this parameter being a file is when using &amp;lt;tt&amp;gt;-create&amp;lt;/tt&amp;gt; to make a level, in which case this is where you supply the source folder.&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===CLI tips===&lt;br /&gt;
*Command line interfaces (CLI) usually supply an auto-complete feature to save on typing. If you&#039;ve typed enough of a file/folder name to identify it, press the Tab key and the rest should fill in. In Windows, you may not get the right path name autocompleted on the first try if there are multiple possible autocompletions based on the names in that directory, so keep pressing Tab to cycle through all possibilities. On Macs, if you have not typed enough of the name to narrow it down to a single autocompletion, you will hear an error sound.  Double-tap Tab to see a list of possible autocompletions, then keep typing until you have narrowed it down to one of those and then hit Tab to fill in the rest of its name.&lt;br /&gt;
&lt;br /&gt;
*Note that you can also drag files/folders into the window and the path will magically appear; in cases where you don&#039;t need to use a wildcard, this is the fastest way to build an OniSplit command.&lt;br /&gt;
&lt;br /&gt;
===Wildcards===&lt;br /&gt;
Wildcards can be used to supply patterns to CLI programs. The wildcard is simply the &amp;lt;tt&amp;gt;*&amp;lt;/tt&amp;gt; character. For instance:&lt;br /&gt;
 OniSplit.exe -export:TRAM* &amp;lt;destination&amp;gt; &amp;lt;source .dat&amp;gt;&lt;br /&gt;
will export all the TRAMs in the source .dat into the destination folder. Using &amp;quot;TRAMKON*&amp;quot; would export all of Konoko&#039;s animations.&lt;br /&gt;
&lt;br /&gt;
===Spaces in paths===&lt;br /&gt;
Command line interfaces (CLI) do not recognize spaces as a possible part of a path name because spaces are what separate the terms in your commands. The best course of action is to not use paths with spaces in their names! But if you must, you can use quotes to tell the CLI that a certain string is a single path:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;C:\Games\Oni\&amp;gt;&#039;&#039;&#039;OniSplit.exe -list &amp;quot;My Mod Folder\level5_Final.dat&amp;quot;&lt;br /&gt;
&lt;br /&gt;
This works in the Mac Terminal too, but you can also use the escape character, &amp;lt;tt&amp;gt;\&amp;lt;/tt&amp;gt;. Also, other characters like &amp;lt;tt&amp;gt;(&amp;lt;/tt&amp;gt; need to be escaped as well if you do not use quotes:&lt;br /&gt;
&lt;br /&gt;
 &#039;&#039;&#039;MyMac%&#039;&#039;&#039; mono OniSplit.exe -list My\ Mods\ \(In\ Progress\)/level5_Final.dat&lt;br /&gt;
&lt;br /&gt;
But as mentioned, the best practice is to not use any characters besides the alphabet and numbers. It makes your life simpler, and if you ask for help on the forum with a command, no one wants to have to read your long path with lots of spaces or escaped characters in it ;-)&lt;br /&gt;
&lt;br /&gt;
===Reading the commands below===&lt;br /&gt;
*The following commands should be complete, but the current list can be obtained by calling OniSplit with the &amp;lt;tt&amp;gt;-help&amp;lt;/tt&amp;gt; option. You should also use &amp;lt;tt&amp;gt;-version&amp;lt;/tt&amp;gt; to make sure you&#039;re using the latest version, the number of which is given in the &amp;quot;Download links&amp;quot; section above.&lt;br /&gt;
&lt;br /&gt;
*Sample usages are given after certain commands. These are in DOS style, so if you are on a Mac, simply flip the &amp;lt;tt&amp;gt;\&amp;lt;/tt&amp;gt;s to &amp;lt;tt&amp;gt;/&amp;lt;/tt&amp;gt;s and make &amp;quot;C:\&amp;quot; into a leading &amp;quot;/&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
*Optional flags are listed in square brackets simply to indicate that they&#039;re optional; don&#039;t enter the brackets when typing a command.&lt;br /&gt;
&lt;br /&gt;
Note that only the .dat file from a level&#039;s data files is mentioned. The .raw and .sep files will be accessed by OniSplit as necessary when working with the .dat file that you gave the name of.&lt;br /&gt;
{{Divhide|end}}&lt;br /&gt;
&lt;br /&gt;
==Commands==&lt;br /&gt;
===Conversion between .dat and .oni===&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;width:430px&amp;quot;|&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-list &amp;lt;file name&amp;gt;&amp;lt;/code&amp;gt;||Lists the named resources contained in a .dat (see [[OBD:File types/Naming|HERE]] for info on unnamed resources)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-export &amp;lt;destination directory&amp;gt; &amp;lt;dat file&amp;gt;&amp;lt;/code&amp;gt;||Breaks .dat file into .oni files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-export:&amp;lt;pattern&amp;gt; &amp;lt;destination directory&amp;gt; &amp;lt;dat file&amp;gt;&amp;lt;/code&amp;gt;||Exports named resource (wildcards also allowed) from .dat file&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;-import &amp;lt;source directory&amp;gt; &amp;lt;new dat file&amp;gt;&amp;lt;/code&amp;gt;||Compiles level files from source directory using the name you supply for the .dat file; tries to get target file format from source SNDD, but it&#039;s better to use the :sep or :nosep variants below&lt;br /&gt;
|-&lt;br /&gt;
|colspan=&amp;quot;2&amp;quot;|&amp;lt;span style=&amp;quot;padding-left:20px&amp;quot;&amp;gt;To create level5_Final.dat/.raw[/.sep] from the files in MyNewLevel\: {{BSLcode|OniSplit.exe -import C:\Oni\MyNewLevel\ C:\Oni\GameDataFolder\level5_Final.dat}}&amp;lt;span&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-import:sep &amp;lt;source directory&amp;gt; &amp;lt;new dat file&amp;gt;&amp;lt;/code&amp;gt;||Imports target file (.dat) from source directory; uses .dat/.raw/.sep format (Mac retail and Windows demo)&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-import:nosep &amp;lt;source directory&amp;gt; &amp;lt;new dat file&amp;gt;&amp;lt;/code&amp;gt;||Imports target file (.dat) from source directory; uses .dat/.raw format (Windows retail)&lt;br /&gt;
|}&lt;br /&gt;
:Note that &amp;lt;tt&amp;gt;-import&amp;lt;/tt&amp;gt; will search subdirectories too. If you find having hundreds or thousand of files .oni in one directory to be unmanageable you can always group them in subdirectories any way you like. The only exception is that a subdirectory named &amp;quot;noimport&amp;quot; or &amp;quot;_noimport&amp;quot; is always ignored.&lt;br /&gt;
&lt;br /&gt;
===Management of .oni files===&lt;br /&gt;
Sometimes you want to move some .oni files out of a larger folder of .onis. You could do this manually, but OniSpit knows which files depend on others. It will also look for those dependencies in subfolders beneath the level of the file you supply the name of. The filename field supports wildcards. This is mostly used by the [[AE]] Installer rather than modders themselves.&lt;br /&gt;
{|&lt;br /&gt;
|&amp;lt;code&amp;gt;-deps &amp;lt;oni file&amp;gt;&amp;lt;/code&amp;gt;||Displays a list of .oni files that the specified .oni file depends on&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-copy &amp;lt;destination directory&amp;gt; &amp;lt;oni file&amp;gt;&amp;lt;/code&amp;gt;||Copies .oni file and its dependencies; skips file if it already exists at destination&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-move &amp;lt;destination directory&amp;gt; &amp;lt;oni file&amp;gt;&amp;lt;/code&amp;gt;||Moves an .oni file and its dependencies; skips file if it already exists at destination&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-move:overwrite &amp;lt;destination directory&amp;gt; &amp;lt;oni file&amp;gt;&amp;lt;/code&amp;gt;||Moves an .oni file and its dependencies; overwrites any existing .oni files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-move:delete &amp;lt;destination directory&amp;gt; &amp;lt;oni file&amp;gt;&amp;lt;/code&amp;gt;||Moves an .oni file and its dependencies; doesn&#039;t overwrite; deletes source files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Conversion between .oni/.dat and 3rd party formats===&lt;br /&gt;
====Textures====&lt;br /&gt;
Unless mentioned otherwise, source filenames support wildcards. See [[Modifying textures|HERE]] for a detailed tutorial. The &amp;lt;tt&amp;gt;-extract&amp;lt;/tt&amp;gt; commands can work with .oni files (a single file or several files if you use the wildcard), or rip all the TXMPs from a .dat file.&lt;br /&gt;
{|&lt;br /&gt;
|&amp;lt;code&amp;gt;-extract:dds &amp;lt;destination directory&amp;gt; &amp;lt;dat/oni file&amp;gt;&amp;lt;/code&amp;gt;||Extracts all textures (TXMP) from a Oni .dat/.oni file into DDS files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-extract:tga &amp;lt;destination directory&amp;gt; &amp;lt;dat/oni file&amp;gt;&amp;lt;/code&amp;gt;||Extracts all textures (TXMP) from a Oni .dat/.oni file into TGA files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-extract:png &amp;lt;destination directory&amp;gt; &amp;lt;dat/oni file&amp;gt;&amp;lt;/code&amp;gt;||Extracts all textures (TXMP) from a Oni .dat/.oni file into PNG files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-create:txmp &amp;lt;destination directory&amp;gt;&amp;lt;br&amp;gt;[-genmipmaps] [-nouwrap] [-novwrap]&amp;lt;br&amp;gt;&amp;lt;nowiki&amp;gt;[-format:bgr32|bgra32|bgr555|bgra5551|bgra4444|dxt1]&amp;lt;/nowiki&amp;gt;&amp;lt;br&amp;gt;[-envmap:texture_name] &amp;lt;image file&amp;gt;&amp;lt;/code&amp;gt;&lt;br /&gt;
|valign=top|Creates .oni file from image file (PNG, TGA, or DDS)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Models====&lt;br /&gt;
[[M3GM]]s, [[ONWC]]s, [[ONCC]]s can be exported to the Wavefront .obj and COLLADA .dae formats. For details see [[Importing character models]] and [[Importing weapon models]]. The generic &amp;lt;tt&amp;gt;-extract&amp;lt;/tt&amp;gt; commands can work with .oni files (a single file, or several files if you use the wildcard), or rip all the TXMP from a .dat file. TRBS and ONCC support additional &amp;lt;tt&amp;gt;-noanim&amp;lt;/tt&amp;gt; and &amp;lt;tt&amp;gt;-anim&amp;lt;/tt&amp;gt; options for &amp;lt;tt&amp;gt;-extract:dae&amp;lt;/tt&amp;gt;; see [[Importing character models]] for details. Imported geometry must only contain triangles.&lt;br /&gt;
{|&lt;br /&gt;
! style=&amp;quot;width:540px&amp;quot;|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;-extract:obj &amp;lt;destination directory&amp;gt; &amp;lt;dat/oni file&amp;gt;&amp;lt;/code&amp;gt;||Extracts 3D data in .oni file (or all M3GM, ONWC and ONCC instances in a .dat) into Wavefront OBJ files&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;-extract:dae &amp;lt;destination directory&amp;gt; [-noanim] &amp;lt;dat/oni file&amp;gt;&amp;lt;/code&amp;gt;||Extracts 3D data in .oni file (or all M3GM, ONWC and ONCC instances in a .dat) into Collada DAE files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-create:m3gm &amp;lt;destination directory&amp;gt; [-tex:texture_name] &amp;lt;OBJ file&amp;gt;&amp;lt;/code&amp;gt;||Creates a M3GM .oni from an .obj file&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-create:trbs &amp;lt;destination directory&amp;gt; [-cel] [-normals] &amp;lt;DAE file&amp;gt;&amp;lt;/code&amp;gt;||Creates a TRBS .oni from a .dae file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Note on -noanim parameter: Normally OniSplit exports the character with an idle animation. If you use -noanim the character is exported in &amp;quot;I&amp;quot; pose, also the pelvis has the coordinates x=0, y=0, z=0.&lt;br /&gt;
&lt;br /&gt;
====Levels====&lt;br /&gt;
OniSplit can convert AKEV files (level geometry) and the associated file types to and from DAE format:&lt;br /&gt;
{|&lt;br /&gt;
|&amp;lt;code&amp;gt;-extract:dae &amp;lt;destination directory&amp;gt; &amp;lt;AKEV.oni file&amp;gt;&amp;lt;/code&amp;gt;||Extracts 3D data in AKEV and related resources from dependencies into Collada file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The next two steps are used on a folder in which you have placed the DAE and XML-formatted instances of the required files, as well as textures in TGA format. See [https://web.archive.org/web/20201127180431/http://oni.bungie.org/forum/viewtopic.php?id=1515 HERE] for details.&lt;br /&gt;
{|&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;-create &amp;lt;destination directory&amp;gt;&amp;lt;br&amp;gt;[-genmipmaps] [-format:dxt1]&amp;lt;br&amp;gt;&amp;lt;source directory&amp;gt;&amp;lt;/code&amp;gt;||Converts all AKEV and related instances to .oni files&lt;br /&gt;
|- valign=&amp;quot;top&amp;quot;&lt;br /&gt;
|&amp;lt;code&amp;gt;-import:nosep &amp;lt;source directory&amp;gt;&amp;lt;br&amp;gt;&amp;lt;target file name&amp;gt;.dat&amp;lt;/code&amp;gt;||The standard command for creating .dat/.raw files from .oni files (remember to use the import:sep option on Mac!)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Sounds====&lt;br /&gt;
The sounds in Windows Oni are stored in WAV format, and on Macs are stored in AIFF format. This also means creating each of your SNDD files in both formats in order to work on both platforms.&lt;br /&gt;
{|&lt;br /&gt;
|&amp;lt;code&amp;gt;-extract:wav &amp;lt;destination directory&amp;gt; &amp;lt;dat/oni file&amp;gt;&amp;lt;/code&amp;gt;||Rips sound data from an SNDD .oni file (or all SNDDs from a .dat) as .wav files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-extract:aif &amp;lt;destination directory&amp;gt; &amp;lt;dat/oni file&amp;gt;&amp;lt;/code&amp;gt;||Rips sound data from an SNDD .oni file (or all SNDDs from a .dat) as .aif files&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Text====&lt;br /&gt;
{|&lt;br /&gt;
|&amp;lt;code&amp;gt;-extract:txt &amp;lt;destination directory&amp;gt; &amp;lt;dat/oni file&amp;gt;&amp;lt;/code&amp;gt;||Rips text data from a SUBT .oni file (or all SUBTs from a .dat) as .txt files&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-create:subt &amp;lt;destination directory&amp;gt; &amp;lt;TXT file&amp;gt;&amp;lt;/code&amp;gt;||Creates a SUBT .oni file from a .txt file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====XML====&lt;br /&gt;
One of the latest features is conversion of .oni files to and from an XML file, or an XML metafile and related 3rd-party format files. XML files are easier to read and edit.&lt;br /&gt;
::Currently XML export/import is limited to files that do not have raw/sep parts. 2-way conversion is known to work for [[BINA]], [[CONS]], [[DOOR]], [[DPge]], [[FILM]], [[HPge]], [[IGHH]], [[IPge]], [[M3GM]], [[OBAN]], [[ONCC]], [[ONCV]], [[ONLD]], [[ONLV]], [[ONGS]], [[ONSK]], [[ONVL]], [[ONWC]], [[OPge]], [[OSBD]], [[PSpc]], [[PSpL]], [[PSUI]], [[TRAC]], [[TRAM]], [[TRIG]], [[TRGE]], [[TRMA]], [[TRSC]], [[TXMB]], [[TXMP]], [[WMCL]], [[WMDD]], [[WMM_]], [[WPge]].&lt;br /&gt;
:::For detailed examples and tutorials, see [[XML|HERE]]&lt;br /&gt;
{|&lt;br /&gt;
|&amp;lt;code&amp;gt;-extract:xml &amp;lt;destination directory&amp;gt; &amp;lt;oni file&amp;gt;&amp;lt;/code&amp;gt;||Extracts .oni file and all related resources to XML files and 3rd-party formats&lt;br /&gt;
|-&lt;br /&gt;
|&amp;lt;code&amp;gt;-create &amp;lt;destination directory&amp;gt; &amp;lt;XML file&amp;gt;&amp;lt;/code&amp;gt;||Creates an .oni file from an XML file&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
====Blender support====&lt;br /&gt;
[[Blender]] by default has a number of issues with Oni&#039;s assets, however, OniSplit allows exporting them to Blender-readable files with the &amp;lt;tt&amp;gt;{{nbhy}}blender&amp;lt;/tt&amp;gt; flag.&lt;br /&gt;
&lt;br /&gt;
For more detailed information on how to use the &amp;lt;tt&amp;gt;-blender&amp;lt;/tt&amp;gt; flag, please see {{SectionLink|Importing character models|Blender-specific OniSplit information}}. &lt;br /&gt;
&lt;br /&gt;
[[Category:Completed modding tools]][[Category:Bi-platform modding tools]][[Category:Modding tutorials]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Engine_terminology&amp;diff=47057</id>
		<title>Engine terminology</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Engine_terminology&amp;diff=47057"/>
		<updated>2026-04-06T00:10:08Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: added lede and linked to companion article; added names of other subsystems&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{UpdatedForOniX|1.0.0}}&lt;br /&gt;
Here is a high-level view of the different versions of the Oni engine and a brief introduction to some of the subsystems in the engine. Also see [[Game data terminology]] to learn more about the game data files.&lt;br /&gt;
&lt;br /&gt;
==Engine versions==&lt;br /&gt;
There are three versions of Oni&#039;s engine found in released versions of the game. They are referred to interchangeably by various names.&lt;br /&gt;
;Windows retail, Windows, PC, v1.0&lt;br /&gt;
This version of the engine can be identified as &#039;&#039;&#039;v1.0&#039;&#039;&#039; from [[Oni (folder)/readme.txt|its read-me]] but is often referred to as the &amp;quot;Windows&amp;quot; or &amp;quot;PC&amp;quot; engine. This version of the engine was used for all localized Windows releases translated into non-English languages as well.&lt;br /&gt;
&lt;br /&gt;
;Mac, Windows demo, v1.1&amp;lt;!--, OniX--&amp;gt;&lt;br /&gt;
This version was used for Mac retail and demo releases and can be identified as &#039;&#039;&#039;v1.1&#039;&#039;&#039; from [[Oni (folder)/Oni ReadMe|the Mac read-me]], and underwent another month of development after v1.0. It was also used for the Windows demo, but is sometimes referred to as the &amp;quot;Mac&amp;quot; engine for simplicity. &amp;lt;!--[[OniX]] is built on this version of the engine.--&amp;gt; Its most obvious difference is the addition of .sep files to the GameDataFolder, but some templates were changed as well.&lt;br /&gt;
&lt;br /&gt;
;PS2&lt;br /&gt;
This version was created by Rockstar North for the PlayStation 2 port. It also uses .sep files but makes additional changes to templates. It went through another 3 weeks to a month of development after the Mac version was completed and could possibly be thought of as v1.2, but is probably best understood as a fork of the v1.1 engine made for PS2 compatibility.&lt;br /&gt;
&lt;br /&gt;
==Subsystems==&lt;br /&gt;
The engine consists of various subsystems, some of which have colorful animé-related names and some of which have boring descriptive names. If an article is devoted to documenting more of that subsystem, it will be linked.&lt;br /&gt;
&lt;br /&gt;
;AI2&lt;br /&gt;
The second iteration of the code for driving the [[AI|AIs]] (NPCs).&lt;br /&gt;
&lt;br /&gt;
;Akira&lt;br /&gt;
The [[Graphics|environment]] code, responsible for holding the game world in memory. Named for the 1988 film [[wp:Akira (1988 film)|Akira]].&lt;br /&gt;
&lt;br /&gt;
;BFW&lt;br /&gt;
A layer rather than a subsystem: stands for &amp;quot;BungieFrameWork&amp;quot;. This is the lower layer of the game engine, consisting of generalized cross-platform engine code. The upper layer is simply called &amp;quot;Oni&amp;quot; and contains specializations needed to implement Oni&#039;s gameplay logic.&lt;br /&gt;
&lt;br /&gt;
;BSL&lt;br /&gt;
Standing for &amp;quot;BFW Scripting Language&amp;quot;, this is the subsystem responsible for running Oni&#039;s [[BSL|scripting language]].&lt;br /&gt;
&lt;br /&gt;
;Motoko&lt;br /&gt;
The renderer code, responsible for drawing Oni&#039;s [[graphics]]. Named for the main character of the 1995 film [[Ghost in the Shell]].&lt;br /&gt;
&lt;br /&gt;
;Totoro&lt;br /&gt;
The code for Oni&#039;s 3D [[Animation|animation system]]. Named for the 1988 film [[wp:My Neighbor Totoro|My Neighbor Totoro]].&lt;br /&gt;
&lt;br /&gt;
;&#039;&#039;Et cetera&#039;&#039;&lt;br /&gt;
There are various other subsystems that we essentially never talk about, such as LocalInput, WindowManager, SoundSystem2 and TemplateManager.&lt;br /&gt;
&lt;br /&gt;
[[Category:Engine docs]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=AE:Plugins&amp;diff=47056</id>
		<title>AE:Plugins</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=AE:Plugins&amp;diff=47056"/>
		<updated>2026-04-06T00:00:15Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: no need for this link&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{fmbox&lt;br /&gt;
  | text = This method of modding was made obsolete by the [[AE]]&#039;s introduction in 2009 of modular modding; many of the mods below are available from within the AE Installer.&lt;br /&gt;
  }}&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
Plugins are .dat/.raw(/.sep) files that do not conform to the &amp;quot;level#_Final&amp;quot; naming convention. The &amp;quot;level ID&amp;quot; field at the beginning of every instance in a .dat file stores a hashed difference between &amp;quot;_Final&amp;quot; and the suffix of the plugin. Instance files can only be used by Oni under the name specified at the time of their creation.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
The retail versions of Oni do not accept plugins as valid &amp;quot;level files&amp;quot;, however, this has been fixed for all major versions of Oni as of May 2008. It is thus possible to generate (with OniSplit) and use (with patched Oni engines) a variety of plugins both for &amp;quot;level 0&amp;quot; and for &amp;quot;chapter&amp;quot; levels. Note, though, that just because a feature is new doesn&#039;t mean it&#039;s as revolutionary/user-friendly/recommendable as you&#039;d like it to be. There&#039;s about the same amount of science to making &#039;&#039;and&#039;&#039; using plugins as there is to [[OBD]] and [[BSL]].&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Below is an overview of the basic functionality of plugins, and a few words of wisdom as for the philosophy.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Oni loads instance files in a certain order. On NTFS partitions of Windows and in macOS that order will be ASCII-based (case-sensitive, &amp;quot;B&amp;quot; before &amp;quot;a&amp;quot;, etc). On Windows 98 and such the order is more random and depends on dates of creation. As for what happens to the &#039;&#039;instances&#039;&#039; in the files being loaded, there is no such thing as &amp;quot;overriding&amp;quot; - more like the first instance registered with a certain name being the only one accessible by that name. Instances without raw parts typically follow the intuitive rule &amp;quot;plugin loaded first - instance registered first&amp;quot;. For things like [[OBJC]], the order is reversed, i.e., in order to &amp;quot;override&amp;quot; a level&#039;s OBJC you have make sure that the overriding plugin&#039;s name comes &#039;&#039;after&#039;&#039; level2_Final or whatever you&#039;re &amp;quot;overriding&amp;quot; (so, e.g., level2_OBJC). Finally, some instance types are stored dynamically in an array, so: 1) if you have, e.g., several instance files containing [[ONCC]]s, they will all end up in the &amp;quot;shapeshifter&amp;quot; array (first the ones from the first loaded instance file, ordered by name, then the ones from the second instance file, also ordered by name, etc); 2) If two of those instance file have an ONCC with the same name, both of them be loaded, at their respective places in the array: both will be accessible with F8 and by ID, but only the one loaded first will be accessible by name.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Now busting a few opinions about how plugins are much cooler than user-side use of OniSplit, shell scripts and delta patches. Of course the fact that you can &amp;quot;just&amp;quot; put the plugin in your [[GameDataFolder]] and play makes it look like it&#039;s user-friendlier than OniSplit and somehow &amp;quot;empowers dummies&amp;quot; to access modded content without the need for complicated installation routines (with or without a GUI). However, &#039;&#039;one&#039;&#039; thing plugins are &#039;&#039;definitely not&#039;&#039; is &#039;&#039;foolproof&#039;&#039;. They are not &amp;quot;just files&amp;quot; that you put into your GameDataFolder &amp;quot;and see what happens&amp;quot; (and then whine about crashes). They all have their compatibility issues, that imply thorough testing and public release notes. Both the modder and the user should be just as careful when working with plugins as when rebuilding &amp;quot;_Final&amp;quot; levels. One should also be careful not to expect too much from plugins in the big scheme of things.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
To create a plugin version of the [[AE|Edition]], for example, is a naive wish. A key feature of the Edition is the &amp;quot;globalization&amp;quot; of virtually every character, sound and texture in Oni. Distributing such a plugin in ready-to-use form would amount to distributing a large part of Oni&#039;s content for free, which is &#039;&#039;very&#039;&#039; &amp;quot;legally challenged&amp;quot;. Also, the download sizes would reach a few hundred megabytes. Last but not least, such a &amp;quot;global&amp;quot; plugin would be redundant of the un-globalized content in the end user&#039;s &amp;quot;chapter levels&amp;quot;, so: 1) Oni will take up more space on the user&#039;s HDD; 2) Oni will load redundant instances simultaneously (thus, in every level, there would be a range of globalized [[ONCC]] from the plugin and then the ONCC originally present in that level), possibly resulting in overflow.&lt;br /&gt;
&lt;br /&gt;
Another issue is that a modder has to provide both a &amp;quot;sep&amp;quot; and a &amp;quot;no-sep&amp;quot; version of every plugin if he wants users of all platforms to enjoy his stuff. Considering all of the above, plugins are not likely to be used on a systematic basis for anything but &amp;quot;100% new&amp;quot; content, and in the scope of projects like the Edition, they hardly make any sense at all, because OniSplit is irreplaceable when it comes to globalization.&lt;br /&gt;
&lt;br /&gt;
Also, plugins suffer from a major limitation on the Mac because of how the engine only allows for 16 instance files to be present in GameDataFolder: that means that if the original 15 .dat files are preserved, only &#039;&#039;one&#039;&#039; plugin is allowed at a time (historically, this used to be level0_Tools). In the absence of a fix, an obvious workaround is to group Oni&#039;s chapters into &amp;quot;acts&amp;quot;, and launch Oni with one &amp;quot;act&amp;quot; at a time.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
One thing plugins &#039;&#039;are&#039;&#039; useful for is testing new content during development. It takes OniSplit much faster to build a small plugin than a chapter level, let alone level0 with full globalization. Note, however, that while working with &amp;quot;hot&amp;quot; file buffers during a modding session, OniSplit can generate a 500-MB level0_Final.dat in about 30 seconds; rebuilding levels &#039;&#039;after a long break&#039;&#039; takes considerably longer.&lt;br /&gt;
&lt;br /&gt;
The only thing you should be careful about when working with such plugins is dependencies. Typically your plugin will be all the smaller as it uses global content, but whoever you give that plugin to should be aware of the globalized resources involved. Otherwise you&#039;ll get pointless crash reports all the time just because you assumed people would only use your plugin in tandem with the Edition, etc.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Examples==&lt;br /&gt;
The plugins provided below are for testing purposes only. Apart from &amp;quot;Babel&amp;quot;, virtually no plugins should be distributed in the long run, especially those with original game content. Most of the plugins will be generated user-side with xdelta and OniSplit.&lt;br /&gt;
===level 0 modules===&lt;br /&gt;
The content of level 0 can easily be split into modules like level0_Characters, level0_Music, level0_Speech, level0_Weapons, level0_Levels, etc. The modules are much smaller than a single level0_Final, so they are faster to navigate and to mod. However, when defining such a partition, it&#039;s important to come up with a sensible layout early on: this, and the Mac limitation, makes it tricky to design an &amp;quot;official&amp;quot; set of modules to be used by the [[AE|Edition]].&lt;br /&gt;
===Babel===&lt;br /&gt;
:http://geyser.oni2.net/edition/plugins/level0_Babel.zip&lt;br /&gt;
;Description&lt;br /&gt;
:Includes a plugin for the PC version. Adds russian versions of menu items, subtitles, text consoles, diary/objective pages and item/weapon descriptions. &lt;br /&gt;
;Limitation&lt;br /&gt;
:Requires an engine fix (available for PC in the latest Daodan, pending for the Mac) that increases the buffer size for font textures. Without the fix, the original level0_Final will fail to load completely, and out-of-game UI will be screwed up. Things that don&#039;t quite work are diary pages and level-specific item descriptions.&lt;br /&gt;
===BGI===&lt;br /&gt;
:http://geyser.oni2.net/edition/plugins/level0_BGI.zip &amp;lt;- UPDATED 02:52, 28 August 2008 (CEST)&lt;br /&gt;
;Description&lt;br /&gt;
:Includes a plugin for both PC and Mac. Adds a set of [[AE:BGI|BGI]] troopers and executives with various fighting styles and a set of new weapons (ballistics only, nothing fancy). Does not replace any existing [[ONCC]] or [[ONWC]].&lt;br /&gt;
;Limitation&lt;br /&gt;
:Only works correctly for a retail version of Oni, with globalized [[TRAC]] and [[TRMA]]. Otherwise, misses [[TXMP]]SUPER_REFLECT (Mukade&#039;s env-map texture) and/or various TRAC, some of them not available in the demo. Missing TRAC cause memory corruption.&lt;br /&gt;
&lt;br /&gt;
===HD Griffin===&lt;br /&gt;
:http://geyser.oni2.net/edition/plugins/level0_Characters.zip&lt;br /&gt;
;Description&lt;br /&gt;
:Includes a plugin for both PC and Mac. Replaces the BlackOps Griffin. The new Griffin has a tentative HD head (4 times as many faces) and fights like a Tanker (more so if you update the MELE link in [[CHAR]]).&lt;br /&gt;
;Limitation&lt;br /&gt;
:Works correctly for a retail version with globalized TRAC and TRMA. Otherwise, misses TRACTanker_animations and BlackOps Griffin&#039;s TRMA. Missing TRAC cause memory corruption.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Shinatama Too===&lt;br /&gt;
:http://geyser.oni2.net/edition/plugins/level0_Shin2.zip&lt;br /&gt;
;Description&lt;br /&gt;
:Includes a plugin for both PC and Mac. Adds new character: a Shinatama who fights like Konoko and no longer hovers above the ground (the TRBS was scaled up and compensated with a body factor in the ONCC). The textures have been color-swapped (meant as placeholders for a more original combat outfit).&lt;br /&gt;
;Limitation&lt;br /&gt;
:Works for any version, with or without the Edition. Indeed, Konoko&#039;s TRAC is global and everything else (TRBS, TRMA, TXMP) is included in the plugin.&lt;br /&gt;
&lt;br /&gt;
===Level 2 CHAR===&lt;br /&gt;
:http://geyser.oni2.net/edition/plugins/level2_OBJC.zip&lt;br /&gt;
;Description&lt;br /&gt;
:Includes a plugin for both PC and Mac. Slightly modifies the [[CHAR]] for {{C|2}}: Barabas takes part in the initial ambush, and Muro appears later on.&lt;br /&gt;
;Limitation&lt;br /&gt;
:Works with any version of Oni, as long as Chapter 2 is available.&lt;br /&gt;
===Dashing===&lt;br /&gt;
:http://geyser.oni2.net/edition/plugins/level0_Animations.zip&lt;br /&gt;
;Description&lt;br /&gt;
:Includes a plugin for both PC and Mac. Makes all males, Ninja and Furies able to dash. Preserves running animations for Konoko. Provides TRAMai_kon_animations to be used by Evil Konoko, female civilians, etc.&lt;br /&gt;
;Limitations&lt;br /&gt;
:Works best with globalized TRAM. Otherwise, Elites, Ninjas and Furies won&#039;t be able to fight. This is typically a thing that will not stay a plugin forever, and is provided purely for testing purposes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
===Camera===&lt;br /&gt;
:http://geyser.oni2.net/edition/plugins/level0_Camera.zip&lt;br /&gt;
;Description&lt;br /&gt;
:Includes a plugin for PC retail only ([[make_corpse]] doesn&#039;t work for OMNI or PC demo; and if you have a Mac beta, plugin-loading hasn&#039;t been fixed for you anyway). Provides a character class for [[authoring custom camera animations]], complete with a set of animations and an aiming screen. Supposed to be used in conjunction with the manual camera and &#039;&#039;&#039;make_corpse&#039;&#039;&#039;: position camera, make corpse, copy pelvis matrix from corpse to OBAN.&lt;br /&gt;
;Limitations&lt;br /&gt;
:None. Works with or without edition/globalization. Without make_corpse it is of little use though, except as an experimental hovering turret... just export/import if you&#039;re interested in toying with that.&lt;br /&gt;
&lt;br /&gt;
[[Category:Obsolete AE mods]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:Oni_Binary_Data&amp;diff=47055</id>
		<title>OBD:Oni Binary Data</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:Oni_Binary_Data&amp;diff=47055"/>
		<updated>2026-04-05T23:57:58Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: doesn&amp;#039;t make sense to link to this terminology page from here, only the Introduction to modding page&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[Image:OBD.png|right]]&lt;br /&gt;
{{Hatnote|If you want an introduction to modding for beginners, you should read [[Introduction to modding]].}}&lt;br /&gt;
The &#039;&#039;&#039;OBD&#039;&#039;&#039; namespace is devoted to documenting Oni&#039;s binary data (.dat/.raw[/.sep] files) as reverse-engineered by dedicated members of the fan community. Needless to say, this is a highly technical area of the wiki, and knowledge of topics such as [[wp:Hexadecimal|hexadecimal]], [[wp:Pointer (computer programming)|pointers]], and [[wp:Endianness|endianness]] is a prerequisite. Everything about the game&#039;s file formats is intended to be documented here, but the core of the Oni Binary Database is the information on resource types (&amp;quot;File types&amp;quot; in the directory below). Note that the [[XML|XML namespace]] documents the resource types in a way which is more modding-oriented and modder-friendly.&lt;br /&gt;
&lt;br /&gt;
This database&#039;s information has been used by modders in such [[:Category:Modding projects|projects]] as:&lt;br /&gt;
*The [[Anniversary Edition|Anniversary Edition]]&lt;br /&gt;
*[[AE:ONK|Oni ni Kanabo]]&lt;br /&gt;
*The [[AE:BIP|Binary Improvement Project]]&lt;br /&gt;
*[[OniFly]]&lt;br /&gt;
&lt;br /&gt;
The knowledge documented here was also used to develop [[:Category:Modding tools|modding tools]] such as:&lt;br /&gt;
*[[OniSplit]]&lt;br /&gt;
*[[OniUnPacker|OniUnPacker]]&lt;br /&gt;
*[[OME|Oni Model Extractor]]&lt;br /&gt;
*[[ONI-Trainer|Oni Trainer]]&lt;br /&gt;
&lt;br /&gt;
==Knowledge base==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Instance file format|Instance file format]]&lt;br /&gt;
|About .dat files&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Raw and separate file formats|Raw/separate file format]]&lt;br /&gt;
|About .raw &amp;amp; .sep files&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Persist.dat|persist.dat]]&lt;br /&gt;
|The save-game file&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:File types|File types]]&lt;br /&gt;
|Resource types such as ONCC, TRAM, etc.&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Data types|Data types]]&lt;br /&gt;
|The format of the integers, floats, etc. in the resources&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Globalization|Globalization]]&lt;br /&gt;
|Duplication and false duplicates in the resources&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Localization|Localizations]]&lt;br /&gt;
|Considerations and pitfalls for localizers&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Releases|Releases]]&lt;br /&gt;
|Database of each release&#039;s level file sizes&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Text encoding|Text encoding]]&lt;br /&gt;
|Variant text encodings found in localizations&lt;br /&gt;
|-&lt;br /&gt;
|[[OBD:Oni2AS|Oni 2 game data]]&lt;br /&gt;
|About the [[Oni2AS|Angel Studios dev build]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===External Links===&lt;br /&gt;
*[http://ssg.oni2.net ssg&#039;s Oni Stuff]&lt;br /&gt;
:Oni Stuff is the original database of Oni&#039;s resource types, source for much of this wiki&#039;s OBD. It also contains information which has never been ported to the wiki such as flag locations and data on every character spawned in each level.&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Talk:OniSplit&amp;diff=47054</id>
		<title>Talk:OniSplit</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Talk:OniSplit&amp;diff=47054"/>
		<updated>2026-04-05T23:50:15Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: reporting a pretty important bug, 18 years late&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;Talk page archives: [[/Archive1|#1]]&lt;br /&gt;
&lt;br /&gt;
==Textures are darkened when extracted from formats with sub-8-bit channels==&lt;br /&gt;
When OniSplit reads the game&#039;s textures in any format with &amp;lt;8-bit channel sizes, namely ARGB4444, RGB555 and ARGB1555, and expands the 4- or 5-bit R, G or B channel to 8 bits in response to the {{nbhy}}extract command, it is simply zero-padding the lower bits which results in an overall darkening of the image. The clearest way to see this is with TXMPDAODAN_SHIELD in level0, where all the pixel data in the original RGB555 format says &amp;quot;FF FF&amp;quot;. That&#039;s meant to be pure white, right? Well when OniSplit extracts this to PNG, etc., it converts the value 11111 found in each channel to 11111000 or 0xF8, resulting in pixels of the color {248, 248, 248} which is a noticeably off-white color. No texture will be able to contain a brighter color than that using OniSplit&#039;s math where 11111 &amp;lt;&amp;lt; 3 = 11111000. Looking at a histogram of any extracted texture should bear this out, but it&#039;s also something the naked eye can see pretty easily if there&#039;s bright colors in the image and you have an accurate reference version of the image being extracted. Apparently the community has been missing this ~3% darkening all these years?&lt;br /&gt;
&lt;br /&gt;
Standard practice in this situation is to use &amp;quot;bit replication&amp;quot; where the most significant bits are copied into the space left behind when a value is left-shifted, e.g. a 5-bit channel value 00101 becomes 00101001, not 00101000. This approach properly spreads out the resulting colors across the entire 0-255 range, allowing the 2-byte pixel value FF FF to become pure white while also preserving 00 00 as pure black. There is another scaling algorithm which is even more accurate but slower.&lt;br /&gt;
&lt;br /&gt;
I believe that any new/edited textures passed in through OniSplit will also experience slight darkening, but only if they are converted to one of the above formats with &amp;lt;8-bit channels. Extracted textures that were darkened by being converted to PNG, etc. will regain their brightness when imported back in with {{nbhy}}create because e.g. 11111000 simply goes back to 11111, and this will be displayed by Oni as full-white on a 32-bit display. This may be why no one noticed the issue before now, but probably the key reason is that modders prefer to create every texture in RGB888. But if a user imports an image using the {{nbhy}}format option to create the TXMP.oni in ARGB4444, RGB555 or ARGB1555, it looks like OniSplit will convert it with a downward bias: 0-7 → 0, 8-15 → 1, and finally 248-255 → 31 because it is simply performing a &amp;quot;&amp;gt;&amp;gt; 3&amp;quot; on the number. This is known to darken the image, so the standard practice is to use &amp;quot;rounded scaling&amp;quot; to create a center bias, which I won&#039;t detail here. Just wanted to make a note that if someone is fixing the 4-/5-bit → 8-bit conversion math for OniSplit, the math for converting 8-bit → 4-/5-bit should be looked at as well. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 23:50, 5 April 2026 (UTC)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Smaller version steps possible==&lt;br /&gt;
AssemblyInfo.cs&lt;br /&gt;
 //overwrite product version with 5 possible numbers&lt;br /&gt;
 [assembly: AssemblyInformationalVersion(&amp;quot;0.9.99.0.1&amp;quot;)]&lt;br /&gt;
&lt;br /&gt;
Utils.cs&lt;br /&gt;
 #if NETCORE&lt;br /&gt;
                    version = typeof(Utils).GetTypeInfo().Assembly.GetName().Version.ToString();&lt;br /&gt;
 #else&lt;br /&gt;
                    //version = typeof(Utils).Assembly.GetName().Version.ToString();&lt;br /&gt;
                    Assembly assembly = Assembly.GetExecutingAssembly();&lt;br /&gt;
                    FileVersionInfo fileVersionInfo = FileVersionInfo.GetVersionInfo(assembly.Location);&lt;br /&gt;
                    version = fileVersionInfo.ProductVersion;&lt;br /&gt;
 #endif&lt;br /&gt;
&lt;br /&gt;
OniSplit -version&lt;br /&gt;
 0.9.99.0.1&lt;br /&gt;
&lt;br /&gt;
--[[User:Paradox-01|Paradox-01]] 09:58, 14 November 2023&lt;br /&gt;
&lt;br /&gt;
==Page improvement==&lt;br /&gt;
Shouldn&#039;t there be an animation section which includes the options -anim-body, -anim-merge and -blender? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 00:24, 16 May 2022 (CEST)&lt;br /&gt;
:Yes, it&#039;s odd that -anim-body and -anim-merge are not documented here, someone should do something about that. &amp;lt;s&amp;gt;-blender arguably does not exist yet (it&#039;s in geyser&#039;s upcoming 1.0 release and is mentioned on the [[OniSplit/WIP]] page).&amp;lt;/s&amp;gt; My bad, -blender was added in 0.9.99.2. --[[User:Iritscen|Iritscen]] ([[User talk:Iritscen|talk]]) 01:05, 16 May 2022 (CEST)&lt;br /&gt;
&lt;br /&gt;
==If OniSplit refuses to be used==&lt;br /&gt;
delete file at AE/Tools/OniSplit.exe.config --[[User:Paradox-01|Paradox-01]] 18:00, 28 June 2020&lt;br /&gt;
&lt;br /&gt;
==OniSplit version control - getting there...==&lt;br /&gt;
The SVN version of OniSplit is currently labeled 0.9.99 (same as the source received from Neo), and at this point it is different from the non-synced 0.9.99.2 that I distributed through EdT.&lt;br /&gt;
*&amp;quot;0.9.99&amp;quot; has only two commits (44.1 kHz SNDD export - affecting only electric spark sounds - and other minor SNDD fixes and features);&lt;br /&gt;
*0.9.99.2 has a few fixes to 0.9.99 (adjustment to XML parsing rules) and new functionality for Blender import/export of animations; also some new bugs, apparently. &lt;br /&gt;
To restore some order, I am going to merge my 0.9.99.2 fixes to SVN, then address the known bugs, and push the version number to 0.9.99.3 - and use SVN-synced development from then onwards.&lt;br /&gt;
&lt;br /&gt;
I am &#039;&#039;not&#039;&#039; going to create a branch for my fixes/improvements, except maybe when it comes to adding something big, like C# FBX support. If you object to this, speak now. --[[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 00:09, 29 May 2020 (CEST)&lt;br /&gt;
&lt;br /&gt;
List of bugfixes and improvements planned for 0.9.99.3 (feel free to add to the list if I forgot something)&lt;br /&gt;
*some running/walking anims end up upside-down after reimported into Oni&lt;br /&gt;
*-extract:dae -noanim -blender used on a TRBS, make sure the output .dae file has a TRBS prefix&lt;br /&gt;
*stairs_markers.dae not imported properly? (and more generally secondary/auxiliary .dae files not imported for levels?)&lt;br /&gt;
*TRAM export: support writing of sparse keyframe data (as in Oni), as opposed to writing rotations for &#039;&#039;every&#039;&#039; frame (interpolated)&lt;br /&gt;
*maybe allow the export of named TRCM (without material)&lt;br /&gt;
*TGA transparency bug? (not-yet-confirmed as a bug; supposedly happens only for SketchUp-made levels; see below)&lt;br /&gt;
*various SNDD glitches (inconsistent handling of ADPCM headers)&lt;br /&gt;
&lt;br /&gt;
----&lt;br /&gt;
When will you update the repo? --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 16:40, 13 April 2023 (CEST)&lt;br /&gt;
&lt;br /&gt;
I couldn&#039;t import FILM via &#039;&#039;&#039;xml master file for level import&#039;&#039;&#039; with current Onisplit compiled from svn. A possible fix is to change &amp;lt;code&amp;gt;ReadElementContentAsString&amp;lt;/code&amp;gt; to &amp;lt;code&amp;gt;ReadContentAsString&amp;lt;/code&amp;gt;.&lt;br /&gt;
        ...&lt;br /&gt;
        &amp;lt;Films&amp;gt;&lt;br /&gt;
              &amp;lt;Import&amp;gt;films/BomberKonRun02.xml&amp;lt;/Import&amp;gt;&lt;br /&gt;
        &amp;lt;/Films&amp;gt;&lt;br /&gt;
        ...&lt;br /&gt;
&lt;br /&gt;
 FilmImporter.cs&lt;br /&gt;
 ...&lt;br /&gt;
 private void ReadFilms(XmlReader xml, string basePath)&lt;br /&gt;
 ...&lt;br /&gt;
 //string filePath = Path.Combine(basePath, xml.ReadElementContentAsString());&lt;br /&gt;
 string filePath = Path.Combine(basePath, xml.ReadContentAsString());&lt;br /&gt;
&lt;br /&gt;
:[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 12:59, 14 November 2023 (CET)&lt;br /&gt;
&lt;br /&gt;
==TGA Transparency bug==&lt;br /&gt;
I extracted HQ_DOUBLED_GLASS as TGA format from vanilla Level8_Final with the OniSplit command -extract:tga. The file was opened in Photoshop and the alpha channel was visible.&lt;br /&gt;
I then added that texture to Sketchup and applied it in a test level, it appeared transparent in Sketchup. I used the command -create:level to create a level in Oni.  In the game Oni, the texture appeared opaque not transparent.  When, the file TXMPHQ_DOUBLED_GLASS.oni was extracted from the test level as TGA, the alpha channel was gone or opaque. &lt;br /&gt;
&lt;br /&gt;
Even if the following code was added to the textures.xml file, the texture still appeared opaque in game.&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;Texture Name=&amp;quot;HQ_DOUBLED_GLASS&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;GunkFlags&amp;gt;Transparent TwoSided&amp;lt;/GunkFlags&amp;gt;&lt;br /&gt;
        &amp;lt;Format&amp;gt;RGBA&amp;lt;/Format&amp;gt;&lt;br /&gt;
        &amp;lt;Image&amp;gt;images/HQ_DOUBLED_GLASS.tga&amp;lt;/Image&amp;gt;&lt;br /&gt;
    &amp;lt;/Texture&amp;gt;&lt;br /&gt;
&lt;br /&gt;
However, if HQ_DOUBLED_GLASS.tga is converted to PNG format with alpha channel, and then the PNG file is used in Sketchup, then the texture will be transparent in game.&lt;br /&gt;
&lt;br /&gt;
This occurs using OniSplit version 0.9.96.0 and previous versions, tested to version 0.9.90.0. (EDIT: Transparency loss is observed for all glass textures, not just HQ_DOUBLED_GLASS.)&lt;br /&gt;
&lt;br /&gt;
[[User:EdT|EdT]] 15:03, 14 May 2020 (PDST)&lt;br /&gt;
&lt;br /&gt;
When you described the issue to me in PM, I didn&#039;t notice/understand the key part about applying the texture in SketchUp and then using -create:level on SketchUp&#039;s output. I thought we were talking about a simple TXMP roundtrip through TGA. Can you confirm that the texture&#039;s alpha goes opaque (or disappears) if you use -extract:tga on TXMPHQ_DOUBLED_GLASS.oni, and then immediately reimport it either with &#039;&#039;&#039;-create&#039;&#039;&#039; (either from XML with extra flags or from TGA)? --[[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 11:44, 15 May 2020 (CEST)&lt;br /&gt;
&lt;br /&gt;
Regarding the TXMP roundtrip, after extracting TXMPHQ_DOUBLED_GLASS.oni as TGA, I used the command -create:txmp -format:bgra32 -large -genmipmaps, the resulting file had the alpha channel.  To confirm, I replaced the file TXMPHQ_DOUBLED_GLASS.oni from the -create:level with the one from -create:txmp in the test level and it was transparent.&lt;br /&gt;
[[User:EdT|EdT]] 12:35, 15 May 2020 (PDST)&lt;br /&gt;
&lt;br /&gt;
This looks like an issue with the SketchUp pipeline, rather than with OniSplit, since it is only &#039;&#039;&#039;-create:level&#039;&#039;&#039; that generates a non-transparent texture, and &#039;&#039;&#039;-create:txmp&#039;&#039;&#039; actually works fine. Can you: a) provide (in PM) the level data that you are using &#039;&#039;&#039;-create:level&#039;&#039;&#039; on (supposedly a .dae file, some texture files, and some XMLs)? b) provide an example of a level that imports with transparent glass as expected (supposedly a level that didn&#039;t come from SketchUp). Thanks. --[[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 16:46, 16 May 2020 (CEST)&lt;br /&gt;
&lt;br /&gt;
==Sound export bug==&lt;br /&gt;
As discussed on Discord there&#039;s a sound export bug for SNDDzap*.oni&lt;br /&gt;
&lt;br /&gt;
One might record the sounds in OBS and compare it with the exported ones to generate further hints on what went wrong. --[[User:Paradox-01|paradox-01]] ([[User talk:Paradox-01|talk]]) 13:29, 21 July 2019 (CEST)&lt;br /&gt;
&lt;br /&gt;
#The zap sounds are randomized in an OSBD group, so recording them from the game in some identifiable way would require some extra work (custom OSBD). It&#039;s much easier to ask Mac folks for AIFF versions of those sounds. &#039;&#039;And actually, there are [[seven]] zap sounds in the PC demo as well.&#039;&#039;  &lt;br /&gt;
#OniSplit slaps a 22.05 kHz header on those files, although they&#039;re 44.1kHz and have a perfectly good 44.1kHz header in Oni. Not sure why they&#039;re getting a 22.05kHz header. Perhaps Neo got confused by the sloppy documentation of the [[OBD:SNDD/wav|WAV header]], which until my edit gave the same hex listing for the three WAV header types. Either that, or he just assumes the sample rate to be 22.05kHz by default and doesn&#039;t update it from the actual file. Will check in the code. &#039;&#039;Actually yeah, he just does as if all the sounds were 22.05kHz.&#039;&#039;&lt;br /&gt;
#Besides SNDDzap*.oni, there is one other 44.1kHz sound in PC Oni, SNDDap_hit_shld.aif; which suffers from the same export problem, although it&#039;s less noticeable.&lt;br /&gt;
#Apparently 22.05 kHz stereo sounds are correctly exported as stereo, it&#039;s just 44.1 kHz mono files that get a wrong WAV header.&lt;br /&gt;
#Will be fixing this in the latest &amp;quot;nightly&amp;quot; OniSplit (haven&#039;t yet decided on a version numbering and source control scheme).&lt;br /&gt;
#:[[User:Geyser|geyser]] ([[User talk:Geyser|talk]]) 07:15, 25 March 2020&lt;br /&gt;
&lt;br /&gt;
[[Category:Completed modding tools]][[Category:Bi-platform modding tools]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Game_data_terminology&amp;diff=47051</id>
		<title>Game data terminology</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Game_data_terminology&amp;diff=47051"/>
		<updated>2026-04-05T21:29:50Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: added lede, improved some wording, mentioned that .oni files do contain subordinate types of the main instance being exported&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OBD Home}}&lt;br /&gt;
{{UpdatedForOniX|1.0.0}}&lt;br /&gt;
A brief introduction to game data-related terms that you will need to know when learning to mod. Also see [[Engine terminology]] to learn more about the engine itself.&lt;br /&gt;
&lt;br /&gt;
;Binary data&lt;br /&gt;
A collective term for all of the game data that Oni runs on. It is mostly distributed among the level data files; though some additional data is found in persist.dat, the term &amp;quot;binary data&amp;quot; tends to refer only to the level data files. Not to be confused with &amp;quot;binary&amp;quot;, which refers to a compiled application.&lt;br /&gt;
&lt;br /&gt;
;Level data files&lt;br /&gt;
The data for each level is found in a pair of files in Windows retail Oni&#039;s [[GameDataFolder]] ending in &amp;quot;.dat&amp;quot; and &amp;quot;.raw&amp;quot;. On Macs and in the Windows demo, a file type ending in &amp;quot;.sep&amp;quot; is also used. [[OniX]] also expects .dat/.raw/.sep files, so the app&#039;s installer converts the user&#039;s game data to the .dat/.raw/.sep format.&lt;br /&gt;
&lt;br /&gt;
;Instance file&lt;br /&gt;
Any .dat file in GameDataFolder. [[Instance file]]s are the main type of level data file, in the sense that Oni reads the instance file first when loading a level, and this file serves as an index that allows it to find resources which are packed into the other types of level data files.&lt;br /&gt;
&lt;br /&gt;
;.dat file&lt;br /&gt;
&amp;quot;.dat&amp;quot; is a generic suffix originally used by Oni for all kinds of data, with file names such as level0_Final.dat, [[persist.dat]], and developer-related files such as saved_film*.dat, level_*_corpse.dat, etc. The proper, specific name for the .dat files containing level data is &amp;quot;instance file&amp;quot;. That being said, &amp;quot;.dat&amp;quot; has only been used by the community historically to refer to instance files, so you can reasonably assume that&#039;s what is meant when you see the suffix by itself. On occasion, &amp;quot;.dat&amp;quot; also refers to the complete set of level data files, .dat/.raw[/.sep].&lt;br /&gt;
&lt;br /&gt;
;Instance, resource, file&lt;br /&gt;
The use of these terms can be confusing. An instance is often called a file on this wiki, but an instance is not the same as an instance &amp;lt;u&amp;gt;file&amp;lt;/u&amp;gt; ending in .dat. An instance is an individual resource such as a texture. They are sometimes called files because they are distinct pieces of data stored and cataloged in a &amp;quot;file system&amp;quot; composed of a set of .dat/.raw[/.sep] files. In at least some cases they were indeed actual, separate files on the developer&#039;s computer before being packed into the level data files.&lt;br /&gt;
&lt;br /&gt;
When OniSplit is used to split level data files into individual files for each resource, in effect it is creating thousands of &amp;quot;single-instance instance files&amp;quot; ending in .oni, at which point &amp;quot;instance&amp;quot;, &amp;quot;resource&amp;quot;, &amp;quot;file&amp;quot;, and &amp;quot;instance file&amp;quot; become basically synonymous.&lt;br /&gt;
&lt;br /&gt;
;Raw file, .raw&lt;br /&gt;
;Separate file, .sep&lt;br /&gt;
During development, these types of level data files were eventually created as companions to instance files. The kinds of resources stored in these files are generally those with larger amounts of data, like textures and sounds.&lt;br /&gt;
&lt;br /&gt;
Raw files are found in all versions of Oni, whereas separate files, in vanilla Oni installations, only occur in Mac Oni and in the Windows demo. As mentioned earlier, when using OniX, Windows retail installations will also use .sep files because that is the level file format that the engine expects. When separate files are present, raw files are much smaller because several resource types have their data stored in the separate file instead.&lt;br /&gt;
&lt;br /&gt;
Raw and separate files have no file header and are simple blobs of data; this is because the instance file serves as the table of contents for them. The only structural rules about raw/separate files are that (1) all data parts are stored 32 byte-aligned and (2) the first 32 bytes of the file are always zero. When a level is loaded into memory, the offsets given for raw/separate data in various resources are converted to pointers to the actual data in the raw/separate files. You can learn the format of raw/separate files [[Raw|HERE]].&lt;br /&gt;
&lt;br /&gt;
;Template, file type, tag&lt;br /&gt;
A template represents a type of resource identified by a four-character code (e.g. &amp;quot;SUBT&amp;quot; for subtitle files); this kind of identifier is generically called a &amp;quot;tag&amp;quot;, so modding communities often use the term &amp;quot;tag&amp;quot; to refer to a resource type as a whole. However, just as instances are often called files on this wiki, templates are often called file types here. All templates are listed on the [[OBD:File types|File types]] page.&lt;br /&gt;
&lt;br /&gt;
;.oni&lt;br /&gt;
Generated by [[OniSplit]], these files are structurally similar to .dat files except that they only contain a single instance, or one parent instance and various supporting instances if the supporting instances could be considered components of the parent instance; for instance an exported M3GM (a 3D model) will contain all of its 3D data even though this data is held in many small instances of several other templates such as PNTA and VCRA. And unlike how .dat files offload some data to .raw and .sep files, in a .oni file any of the data that might have been contained by the .raw/.sep files is simply appended at the end of the .oni file.&lt;br /&gt;
&lt;br /&gt;
[[Category:Engine docs]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=Validate_External_Links/Exceptions&amp;diff=47050</id>
		<title>Validate External Links/Exceptions</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=Validate_External_Links/Exceptions&amp;diff=47050"/>
		<updated>2026-04-05T21:04:55Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;If the Validate External Links script is mis-reporting certain external links as issues when they actually work fine or when the link has to be presented that way for a specific reason, add them here in order to exempt them from ValExtLinks&#039; reports. The list is sorted by wiki page name for convenience. Each line supports four comma-separated fields, the first three required:&lt;br /&gt;
#The response code that ValExtLinks should expect. For NG and RD links, this should be the exact HTTP response code or the &#039;curl&#039; result code, whichever applies. You can also put &amp;quot;IW&amp;quot; or &amp;quot;EI&amp;quot; here to exempt a warning about an interwiki or external internal link.&lt;br /&gt;
#The recurring &amp;quot;problem&amp;quot; link. Place a &#039;*&#039; as a wildcard at the end of a URL to match multiple links.&lt;br /&gt;
#The wiki page that this link is appearing on. Use the proper page name, i.e. underscores where the displayed name has spaces. To exempt this link from Val&#039;s report regardless of what page it appears on, put a &#039;*&#039; here.&lt;br /&gt;
#(optional) A comment explaining the exception. The only requirements are that the comment be separated from the previous field by a space and that you don&#039;t use any commas. The &amp;quot;--&amp;quot;s used below are only for human readability.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
BEGIN LIST&lt;br /&gt;
403,https://dotnet.microsoft.com/en-us/download/dotnet-framework,*&lt;br /&gt;
403,https://dev.epicgames.com/*,*&lt;br /&gt;
403,https://*.blender.org/*,*&lt;br /&gt;
403,https://*.fandom.com/*,*&lt;br /&gt;
403,https://*.gamespot.com/*,*&lt;br /&gt;
403,https://wikis.khronos.org/opengl/History_of_OpenGL,AE:ONK/EXE&lt;br /&gt;
403,https://www.gamefront.com/games/jedi-knight-iii/file/major-kusanagi,AE_talk:BGI&lt;br /&gt;
403,https://www.java.com/en/download/,Anniversary_Edition&lt;br /&gt;
403,https://binarygroup.com/,BGI&lt;br /&gt;
403,https://x.com/craigmullins3/status/1920384911292207363,Category:Art_by_Craig_Mullins&lt;br /&gt;
403,https://x.com/mehvechan,Category:Art_by_Lorraine_Reyes&lt;br /&gt;
403,https://x.com/Quantum_Sheep/status/1473397180535029760,Category:Oni_(WAP)_game_images&lt;br /&gt;
403,https://www.artstation.com/artwork/D9d2o,Duality&lt;br /&gt;
403,https://www.artstation.com/artwork/Jl8YXa,Duality&lt;br /&gt;
403,https://www.artstation.com/artwork/4bNKW4,Duality&lt;br /&gt;
403,https://www.artstation.com/artwork/l9g5V,Duality&lt;br /&gt;
301,http://translate.google.com/#en%7Cja%7CChrysalis,File:Daodan_Chrysalis_in_Chinese.png&lt;br /&gt;
403,https://www.artstation.com/artwork/4bNKW4,File:Duality_concept_art_-_BioCorp_VR_avatar.jpg&lt;br /&gt;
EI,https://wiki.oni2.net/Special:ListFiles?limit=500&amp;amp;ilsearch=Fallen,File:Fallen_Enemies.jpg -- EI link is necessary because this special page can&#039;t take these parameters when linked to internally&lt;br /&gt;
403,https://www.fab.com/listings/a1fe637c-ef4d-45de-9a21-9a377d06dee1,File:KatiaVersusKonokoFront.png&lt;br /&gt;
403,https://x.com/mehvechan/status/556178295612391425,File:Lorraine_Reyes_with_Konoko_Fully_Armed_standup.jpg&lt;br /&gt;
000-92,https://www.adobe.com/products/catalog.html#category=3d-ar,Fuse&lt;br /&gt;
000-92,https://helpx.adobe.com/beta/fuse/faq.html,Fuse&lt;br /&gt;
404,https://www.autodesk.com/products/fbx/overview,Importing_character_models&lt;br /&gt;
000-92,https://www.adobe.com/creativecloud/plans.html,Media_creation_with_artificial_intelligence&lt;br /&gt;
EI,http://wiki.oni2.net/Main_Page,MediaWiki:Vector -- necessary EI link to demonstrate circular arrow&lt;br /&gt;
EI,http://wiki.oni2.net/Main_Page,MediaWiki:Vector-2022 -- necessary EI link to demonstrate circular arrow&lt;br /&gt;
404,https://www.autodesk.com/products/softimage/overview,Mod_Tool&lt;br /&gt;
403,https://www.guru3d.com/download/rtss-rivatuner-statistics-server-download,Mouse_control_issues&lt;br /&gt;
403,https://www.vgmpf.com/Wiki/index.php?title=Brian_Salter,Music&lt;br /&gt;
403,https://www.supreme-network.com/midis/browse/O/3494-oni/13574-konoko-chase,Music/Fanmade&lt;br /&gt;
403,https://wikis.khronos.org/opengl/S3_Texture_Compression,OBD:TXMP&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/0000891554-00-000145.txt,Oni&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/000112528202003845/b320556.htm,Oni&lt;br /&gt;
403,https://www.artelino.com/articles/japanese_mythology.asp,Oni_(myth)&lt;br /&gt;
403,https://pcsx2.net/,Oni_(PlayStation_2)&lt;br /&gt;
000-28,https://mega.nz/#!x9oHxaLZ!-bOo-wwdj1fh925DYv1Qc6ErDSRl2HEgtWC-i2FtxtY,Oni_2_(Angel_Studios) -- Mega doesn&#039;t seem to like &#039;curl&#039;&lt;br /&gt;
403,https://pcsx2.net/,Oni_2_(Angel_Studios)/Running&lt;br /&gt;
000-28,https://www.echeat.com/free-essay/Symbolism-in-Fahrenheit-451-by-Ray-Bradbury-29746.aspx,Oni2:Phoenix&lt;br /&gt;
403,https://www.telegraph.co.uk/news/newstopics/howaboutthat/3328480/Otto-the-octopus-wrecks-havoc.html,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://featuredcreature.com/from-dangerous-fluff-to-bunny-stuff/,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,http://www.conoserver.org/,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.cracked.com/article_19988_the-5-most-nightmarish-worms-planet.html,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.cracked.com/article_20078_5-weird-directions-human-evolution-could-have-taken.html,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.treehugger.com/rare-interspecies-play-observed-between-dolphins-and-whales-4857038,Oni2:Slaves_of_War/Neo-Biology&lt;br /&gt;
403,https://www.viator.com/tours/Rio-de-Janeiro/Niteroi-City-Tour-and-Contemporary-Art-Museum-Admission/d712-8753P7,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.cracked.com/article_17562_5-horrifying-apocalyptic-scenarios-that-have-already-happened.html,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.cracked.com/article_19678_6-abandoned-places-that-will-make-awesome-supervillain-lairs.html,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.peninsula.com/en/newsroom/hong-kong,Oni2:Slaves_of_War/Settings&lt;br /&gt;
403,https://www.nexusmods.com/games/oni,OniGalore:Community_portal&lt;br /&gt;
302,http://www.gnu.org/copyleft/fdl.html,OniGalore:Copyrights&lt;br /&gt;
403,https://www.sfgate.com/entertainment/article/WOMEN-WARRIORS-Forget-Lara-Croft-the-new-3240096.php,Press_coverage&lt;br /&gt;
403,https://x.com/robinalexander_/status/1872960359696376127,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
000-92,https://www.washingtonpost.com/news/wonk/wp/2015/08/27/trump-the-bible-means-a-lot-to-me-but-i-dont-want-to-get-into-specifics/,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://x.com/elonmusk/status/1882406209187409976,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.president.gov.ua/documents/6792022-44249,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.golem.de/news/kritik-an-nasa-musk-will-direkt-zum-mars-fliegen-2501-192128.html,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.axios.com/2025/01/23/elon-musk-nazi-joke-adl,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.axios.com/2022/05/02/mark-esper-book-trump-protesters,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.golem.de/news/kuenstliche-intelligenz-grok-3-veraergert-maga-anhaenger-2505-195906.html,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.luzernerzeitung.ch/kultur/debatte-das-ende-des-westens-ist-da-was-heisst-das-fuer-die-schweiz-und-europa-ld.2751339,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.ndtv.com/world-news/transgender-vs-transgenic-mice-row-over-donald-trumps-animal-experiments-claim-7867258,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
000-92,https://www.washingtonpost.com/archive/politics/1997/04/24/russia-china-sign-new-friendship-pact/896539b8-c583-44f2-8a73-095cbad1e784/,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.economist.com/by-invitation/2022/03/11/john-mearsheimer-on-why-the-west-is-principally-responsible-for-the-ukrainian-crisis,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.nytimes.com/2025/09/18/us/politics/trump-fcc-licenses.html,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
000-92,https://www.washingtonpost.com/national-security/2025/09/18/trump-taiwan-arms-sales-military-aid/,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://x.com/LAGovJeffLandry/status/2002950029494124986,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.derstandard.de/story/3000000301573/putin-gab-sich-bei-seiner-jahrespressekonferenz-wieder-einmal-volksnah,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
403,https://www.politico.com/news/2025/06/02/pentagon-greenland-northern-command-00381223,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
303,https://link.springer.com/article/10.1007/s41748-026-01073-y,Restless_Souls/Glossary/Artifacts&lt;br /&gt;
302,https://www.golem.de/news/abschreckungspolitik-taiwan-will-tsmc-fabriken-nicht-von-usa-bombardieren-lassen-2305-174057.html,Restless_Souls/Glossary/de&lt;br /&gt;
000-92,https://www.washingtonpost.com/archive/politics/1997/04/24/russia-china-sign-new-friendship-pact/896539b8-c583-44f2-8a73-095cbad1e784/,Restless_Souls/Glossary/de&lt;br /&gt;
403,https://www.economist.com/by-invitation/2022/03/11/john-mearsheimer-on-why-the-west-is-principally-responsible-for-the-ukrainian-crisis,Restless_Souls/Glossary/de&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/uwl,Restless_Souls/Reconstruction&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/uwl,Restless_Souls/Reconstruction/Gapfilling&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/SSOB,Restless_Souls/Reconstruction&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/SSOB,Restless_Souls/Reconstruction/Gapfilling&lt;br /&gt;
000-92,https://www.washingtonpost.com/national-security/2025/08/31/trump-gaza-plan-riviera-relocation/,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://x.com/MEMRIReports/status/1721097018062606708,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://x.com/MedvedevRussiaE/status/1821967864947220777,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://www.nytimes.com/2024/07/24/world/middleeast/gaza-war-hepatitis-polio.html,Restless_Souls/Research/Artifacts&lt;br /&gt;
403,https://www.researchgate.net/publication/262485473_The_Russia-China_Security_Partnership_in_the_Asia-Pacific_Region_Conjectural_and_Structural_Dimensions,Restless_Souls/Summary&lt;br /&gt;
403,https://www.forbes.com/sites/wadeshepard/2019/10/03/what-china-is-really-up-to-in-africa/,Restless_Souls/Summary&lt;br /&gt;
404,https://idw-online.de/de/attachmentdata8851.pdf,Restless_Souls/Technology&lt;br /&gt;
403,https://www.unrealengine.com/en-US,Restless_Souls/Wishlist&lt;br /&gt;
301,https://www.bungie.net/,Rights&lt;br /&gt;
403,https://tsdr.uspto.gov/caseviewer/assignments?caseId=75570211&amp;amp;docIndex=1&amp;amp;searchprefix=sn#docIndex=1,Rights&lt;br /&gt;
403,https://acronyms.thefreedictionary.com/WPS,Talk:Hasegawa&lt;br /&gt;
403,https://www.ixbt.com/video2/tech_ss2.shtml,Talk:Oni_Model_Extractor&lt;br /&gt;
301,https://www.welt.de/debatte/kommentare/plus246585502/Niedergang-Deutschland-zeigt-der-Welt-wie-man-es-nicht-macht.html,Talk:Restless_Souls/Summary&lt;br /&gt;
302,https://www.derstandard.at/story/3000000190426/der-nahostkonflikt-in-oesterreichs-klassenzimmer,Talk:Restless_Souls/Summary&lt;br /&gt;
303,https://www.bmjv.de/DE/themen/menschenrechte/menschenrechte_node.html,Talk:Restless_Souls/Summary&lt;br /&gt;
403,https://www.researchgate.net/figure/S-curves-for-the-established-and-disruptive-technology-Performance_fig2_4899992,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://de.statista.com/statistik/daten/studie/1208627/umfrage/ausbreitung-von-corona-mutationen-in-deutschland/,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/haeufiger-als-andere-modelle-chatgpt-sabotiert-bei-tests-eigene-abschaltung-2505-196561.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/microsoft-studie-diese-berufe-veraendert-ki-am-staerksten-2508-198747.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/neue-ki-architektur-was-ist-baby-dragon-hatchling-2510-201047.html,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://www.forbes.com/sites/mattnovak/2023/04/11/elon-musk-working-on-ai-at-twitter-despite-calling-for-6-month-pause-report/,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://www.forbes.com/sites/ronschmelzer/2025/10/09/samsung-ai-research-team-builds-a-tiny-model-with-big-powe/,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.derstandard.de/story/3000000302571/neuralink-will-gehirn-chips-in-serie-fertigen-operationen-bald-automatisiert,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/claude-opus-4-6-ki-findet-ueber-500-zero-day-luecken-in-open-source-software-2602-205139.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/soziales-netzwerk-moltbook-entpuppt-sich-als-ki-trugbild-2602-205141.html,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://medium.com/@aloy.banerjee30/infinite-context-length-in-llms-the-next-big-advantage-in-ai-2550e9e6ce9b,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/hackerbot-claw-ki-agent-kapert-softwareprojekte-auf-github-2603-205990.html,Talk:Restless_Souls/Technology&lt;br /&gt;
302,https://www.golem.de/news/unkontrollierbares-fehlverhalten-ki-agenten-werden-zu-immer-groesserem-insider-risiko-2603-206491.html,Talk:Restless_Souls/Technology&lt;br /&gt;
403,https://www.unrealengine.com/en-US/blog/a-first-look-at-unreal-engine-5,Talk:UnrealOni&lt;br /&gt;
404,https://www.autodesk.com/products/fbx/overview,Template:AutodeskFBX&lt;br /&gt;
000-92,https://www.adobe.com/creativecloud/plans.html,Template:Photoshop&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/0000891554-00-000145.txt,Timeline_of_development&lt;br /&gt;
403,https://www.sec.gov/Archives/edgar/data/946581/000112528202003845/b320556.htm,Timeline_of_development&lt;br /&gt;
403,https://www.fab.com/listings/ef9651a4-fb55-4866-a2d9-1b38b028f9c7,UnrealOni/ALS&lt;br /&gt;
403,https://www.fab.com/listings/ef9651a4-fb55-4866-a2d9-1b38b028f9c7,UnrealOni/Tutorials&lt;br /&gt;
403,https://www.fab.com/listings/a1fe637c-ef4d-45de-9a21-9a377d06dee1,User:Geyser/CharacterTutorialMakeHumanToUE4&lt;br /&gt;
EI,https://wiki.oni2.net/Special:AllMessages?prefix=&amp;amp;filter=modified&amp;amp;lang=en&amp;amp;limit=50,User:Iritscen/WikiMods -- EI link is necessary&lt;br /&gt;
302,https://m.facebook.com/groups/186656799756?refid=27,User:Samer&lt;br /&gt;
403,https://www.speedrun.com/oni,Videos&lt;br /&gt;
403,https://www.computerhope.com/jargon/w/wildcard.htm,XmlTools&lt;br /&gt;
END LIST&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
[[Category:Wiki Support]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OniUnPacker/source&amp;diff=47049</id>
		<title>OniUnPacker/source</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OniUnPacker/source&amp;diff=47049"/>
		<updated>2026-04-05T20:54:07Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: link fixes&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{|align=right&lt;br /&gt;
|[[Image:OBD.png]]&lt;br /&gt;
|}&lt;br /&gt;
== OniUnPacker source code information ==&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Source folder ===&lt;br /&gt;
&lt;br /&gt;
The source folder contains the following files:&lt;br /&gt;
* \DataAccess&lt;br /&gt;
*: Units for accessing different kinds of containers&lt;br /&gt;
** .\ConnectionManager.pas&lt;br /&gt;
*: Handles Connections and keeps track of DataAccess-instances&lt;br /&gt;
** .\DataAccess.pas&lt;br /&gt;
*: (Virtual) Base class for access to data containers&lt;br /&gt;
** .\Access_OniArchive.pas&lt;br /&gt;
*: Access to Oni&#039;s archives (.dat in conjunction with .raw and .sep)&lt;br /&gt;
** .\Access_OUP_ADB.pas&lt;br /&gt;
*: Access to OUP&#039;s databases (AbsoluteDatabase)&lt;br /&gt;
&lt;br /&gt;
* \FileClasses&lt;br /&gt;
*: BLA - DESCRIPTION NEEDED&lt;br /&gt;
&lt;br /&gt;
* \Global&lt;br /&gt;
*: Globally used Units (functions, data, typedefs ...)&lt;br /&gt;
** .\Data.pas&lt;br /&gt;
*: Contains global constants, variables&lt;br /&gt;
** .\DatLinks.pas&lt;br /&gt;
*: Generates .dat-linkById-lists for each filetype&lt;br /&gt;
** .\DatStructureLoader.pas&lt;br /&gt;
*: Loads structure-definition files&lt;br /&gt;
** .\Exporters.pas&lt;br /&gt;
*: Handles exporting of .dat/.raw-content (including converters)&lt;br /&gt;
** .\Functions.pas&lt;br /&gt;
*: Common functions like en-/decoding of data&lt;br /&gt;
** .\Img_DDSTypes.pas&lt;br /&gt;
*: DDS-header-definitions used by OniImageClass&lt;br /&gt;
** .\OniImgClass.pas&lt;br /&gt;
*: Loading/saving/converting of Oni&#039;s texture-data&lt;br /&gt;
** .\RawList.pas&lt;br /&gt;
*: Generates lists of .raw-contents for files&lt;br /&gt;
** .\TypeDefs.pas&lt;br /&gt;
*: Definition of globally used types&lt;br /&gt;
&lt;br /&gt;
* \Helper&lt;br /&gt;
*: Small helpful forms&lt;br /&gt;
** .\LevelDB.dfm/.pas&lt;br /&gt;
*: Converts OniArchives to OUP-DBs and vice versa&lt;br /&gt;
** .\ValueEdit.dfm/.pas&lt;br /&gt;
*: Input form for editing variable contents&lt;br /&gt;
** .\WhatLinksHere.dfm/.pas&lt;br /&gt;
*: Shows links to (only supported in DBs) / from a file&lt;br /&gt;
&lt;br /&gt;
* \icons&lt;br /&gt;
*: Contains icons used in the gui&lt;br /&gt;
&lt;br /&gt;
* \ImportedStuff&lt;br /&gt;
*: Units written by others&lt;br /&gt;
** .\FolderBrowser.pas&lt;br /&gt;
*: Select a folder as you do in any normal windows application.&lt;br /&gt;
** .\FTypeReg.pas&lt;br /&gt;
*: Set/Get registered file types&lt;br /&gt;
** .\OneInst.pas&lt;br /&gt;
*: Makes sure that only one instance of OUP can be run at a time&lt;br /&gt;
&lt;br /&gt;
* \Tools&lt;br /&gt;
*: Contains the basic tools in OUP like Preview, BinEdit ...&lt;br /&gt;
** .\Template.dfm/.pas&lt;br /&gt;
*: Template-form used for most tools&lt;br /&gt;
** .\BinEdit.dfm/.pas&lt;br /&gt;
*: HexEditor for .dat-files with StructureViewer&lt;br /&gt;
** .\RawEdit.dfm/.pas&lt;br /&gt;
*: HexEditor for .raw-contents&lt;br /&gt;
** .\Extractor.dfm/.pas&lt;br /&gt;
*: Mass file extractor&lt;br /&gt;
** .\Preview.dfm/.pas&lt;br /&gt;
*: Preview window (only supports TXMP, TXMB, TXAN, PSpc atm)&lt;br /&gt;
** .\TxmpReplace.dfm/.pas&lt;br /&gt;
*: Replaces TXMP images by image files&lt;br /&gt;
&lt;br /&gt;
* \ExtraIcos.res&lt;br /&gt;
*: Contains the icons used in the gui&lt;br /&gt;
&lt;br /&gt;
* \Main.dfm/.pas&lt;br /&gt;
*: Main window of OUP&lt;br /&gt;
&lt;br /&gt;
* \OniUnPacker.bdsproj&lt;br /&gt;
*: Delphi project file&lt;br /&gt;
&lt;br /&gt;
* \OniUnPacker.dpr&lt;br /&gt;
*: Main unit&lt;br /&gt;
&lt;br /&gt;
* \OniUnPacker.res&lt;br /&gt;
*: Program icon&lt;br /&gt;
&lt;br /&gt;
* \Settings.dfm/.pas&lt;br /&gt;
*: Settings formular&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
Note: Files which have a .dfm version besides the .pas version are units with forms (windows). Files which that are only there as a .pas are code only, sometimes global functions, some are global classes.&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
=== Used third party components ===&lt;br /&gt;
&lt;br /&gt;
*[https://web.archive.org/web/20070217204248/http://www.soft-gems.net/VirtualTreeview/ Virtual TreeView]: Used in binary editors. Really powerful tree view component. (Used v4.4.3, but any newer version should work too). License: Open source (MPL/GPL).&lt;br /&gt;
*[https://web.archive.org/web/20250725025140/https://www.componentace.com/bde_replacement_database_delphi_absolute_database.htm Absolute Database]: Used for storing level data for OUP. SQL database. You just have to give them your eMail address so they can send you an unlock key, you won&#039;t get any spam or newsletters. If you don&#039;t want to give them your normal address you can use a spam address like you can get at [https://www.spamgourmet.com/index.pl spamgourmet]. License: Free for personal use.&lt;br /&gt;
*[https://web.archive.org/web/20071012140913/http://www.mirkes.de/de/delphi/vcls/hexedit.php MPHexEditor]: Hex component for binary editors. License: Freeware with source.&lt;br /&gt;
*[https://chrilly.net/crossedit.rar CrossEdit]: Input component with value validation. Original code from [https://web.archive.org/web/20160804060817/https://www.torry.net/vcl/edits/diffedits/crossedit.zip here]. License: Freeware with source.&lt;br /&gt;
*[https://chrilly.net/twrapgrid.rar WrapGrid]: Used the code from [http://web.archive.org/web/20191108032711/http://www.mindspring.com/~cityzoo/tips/wrapgrid.txt here] and enhanced it for my special purposes. Needed additions are the column colorings, cell hints and images in cells. License: Couldn&#039;t find one. Suppose open source.&lt;br /&gt;
*[https://jrsoftware.org/tb2k.php Toolbar2000]: Toolbar component. License: Freeware with source.&lt;br /&gt;
*[https://www.mitec.cz/Downloads/MDITab.zip]: MDI Tabbar component. License: Freeware with source.&lt;br /&gt;
*[https://imaginglib.sourceforge.io/ ImagingLib]: Image-handling library. License: MPL/LGPL.&lt;br /&gt;
&lt;br /&gt;
[[Category:Outdated modding tools]][[Category:Windows-only modding tools]]&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
	<entry>
		<id>https://wiki.oni2.net/w/index.php?title=OBD:TXMP&amp;diff=47048</id>
		<title>OBD:TXMP</title>
		<link rel="alternate" type="text/html" href="https://wiki.oni2.net/w/index.php?title=OBD:TXMP&amp;diff=47048"/>
		<updated>2026-04-05T19:35:04Z</updated>

		<summary type="html">&lt;p&gt;Iritscen: added detail on effects options and PS2 palette format; added section on pixel byte storage order; made formal subsections out of informal subsections&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;{{OBD_File_Header | type=TXMP | prev=TXMB | next=TxtC | name=Texture Map | family=General | align=center}}&lt;br /&gt;
&lt;br /&gt;
TXMP is the only known instance type that is interpreted differently by the three kinds of Oni engines on the three platforms (Windows, Mac and PS2).&lt;br /&gt;
&lt;br /&gt;
The difference between the format used in v1.0 of the engine (Windows retail) and v1.1 (Windows demo, Mac, [[OniX]]) is minor, at least from the point of view of disk storage (the structural difference is limited to runtime fields grouped at the end of the instance, which is why they haven&#039;t been documented or implemented in OniSplit). A more obvious difference is that v1.0 TXMPs store their pixel data in the .raw file and v1.1 TXMPs use the .sep file, but as far as the .dat is concerned this merely amounts to using a different data pointer field within the TXMP structure. Thus, even though the template checksums for v1.0 and v1.1 are different, both formats can easily be described together.&lt;br /&gt;
&lt;br /&gt;
The PS2 implementation is significantly different from the other two, in that it systematically uses indexed colors: instead of color being stored in the pixel data itself, each pixel is merely an index into a custom 256-color palette. This format is detailed under {{SectionLink||PS2 implementation}}.&lt;br /&gt;
&lt;br /&gt;
==Windows/Mac implementation==&lt;br /&gt;
[[Image:txmp_all.gif]]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
|- ALIGN=CENTER VALIGN=TOP&lt;br /&gt;
{{OBDtr| 0x00 | res_id   |FF0000| 01 1F 00 00 | 31        | 00031-rl_1.TXMP }}&lt;br /&gt;
{{OBDtr| 0x04 | lev_id   |FFFF00| 01 00 00 06 | 3         | level 3 }}&lt;br /&gt;
{{OBDtr2|0x08 | char[128]|FFC8C8| rl_1                    | name of the texture; unused }}&lt;br /&gt;
{{OBDtr| 0x88 | int32    |FFFFC8| 00 10 00 00 | 0x1000    | options; possible option flags (from left to right):&lt;br /&gt;
:0x01 - has mipmaps&lt;br /&gt;
:0x04 - U wrapping disabled&lt;br /&gt;
:0x08 - V wrapping disabled&lt;br /&gt;
:0x10 - ignored&lt;br /&gt;
:0x40 - animation order: play back to back (frames 0 to n then n-1 to 0)&lt;br /&gt;
:0x80 - animation order: play in random order&lt;br /&gt;
:0x100 - animation time: add local (particle) time (see below)&lt;br /&gt;
:0x200 - has environment map texture&lt;br /&gt;
:0x400 - additive alpha blending&lt;br /&gt;
:0x1000 - little-endian data&lt;br /&gt;
:0x4000 - animation time: ignore game time (see below)&lt;br /&gt;
:0x8000 - effect: blue shield&lt;br /&gt;
:0x10000 - effect: invisibility&lt;br /&gt;
:0x20000 - effect: Daodan shield}}&lt;br /&gt;
{{OBDtr| 0x8C | int16    |C8FFC8| 80 00       | 128       | width of the image in pixels }}&lt;br /&gt;
{{OBDtr| 0x8E | int16    |C8FFC8| 80 00       | 128       | height of the image in pixels }}&lt;br /&gt;
{{OBDtr| 0x90 | int32    |C8FFFF| 09 00 00 00 | 9         | texture format; see below for list of available formats.&lt;br /&gt;
:0 - ARGB4444, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Four 4-bit channels, with bitmasks 0x000F (Blue), 0x00F0 (Green), 0x0F00 (Red) and 0xF000 (Alpha).&lt;br /&gt;
:1 - RGB555, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels, with bitmasks 0x001F (Blue), 0x03E0 (Green) and 0x7C00 (Red).&lt;br /&gt;
:::N.B. The high bit (0x8000) is unused, but the convention is to always set it to 1.&lt;br /&gt;
:2 - ARGB1555, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels with bitmasks 0x001F (Blue), 0x03E0 (Green) and 0x7C00 (Red), 1-bit alpha (0x8000).&lt;br /&gt;
:3 (never used in vanilla TXMPs)&amp;lt;ref&amp;gt;[[TSFT]] implicitly uses I8 for storing its glyphs in the PC versions, at least in most languages (the Chinese version has its own font storage system), but TSFT doesn&#039;t use TXMP to store its pixel data so it doesn&#039;t count as a use of this TXMP format type.&amp;lt;/ref&amp;gt; - I8, 8 bits/pixel, stored as a single byte. Monochrome &amp;quot;intensity&amp;quot; (256 levels of gray).&lt;br /&gt;
:4 (never used in vanilla TXMPs) - I1, 8 pixels/byte. Pixel rows, bottom to top. Monochrome &amp;quot;intensity&amp;quot; (black-or-white).&lt;br /&gt;
:5 (never used in vanilla TXMPs) - A8, 8 bits/pixel, stored as a single byte. Standalone alpha (256 levels of opacity).&lt;br /&gt;
:6 (never used in vanilla TXMPs) - A4I4, 8 bits/pixel, stored as a single byte. Intensity (bit mask 0x0F), alpha (0xF0).&lt;br /&gt;
:7 (never used in vanilla TXMPs&amp;lt;ref&amp;gt;Storage format 7 was jointly used by OniSplit, Daodan DLL and the Intel Mac build to allow for 32-bit textures with transparency - most importantly experimental lightmaps, see [[Lightmapping levels|HERE]]. However, the actual storage format used in this case was RGBA_Bytes (type 11), and type 7 was used by mistake.&amp;lt;/ref&amp;gt;) - ARGB8888, 32 bits/pixel (stored as a little-endian int32, swaps to big-endian at runtime on a PowerPC Mac)&lt;br /&gt;
::Four 8-bit channels, with bitmasks 0x000000FF (Blue), 0x0000FF00 (Green), 0x00FF0000 (Red) and 0xFF000000 (Alpha).&lt;br /&gt;
:8 - RGB888, 32 bits/pixel (stored as a little-endian int32, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 8-bit channels, with bitmasks 0x000000FF (Blue), 0x0000FF00 (Green) and 0x00FF0000 (Red).&lt;br /&gt;
:::N.B. The high byte (0xFF000000) is unused, but the convention is to always set it to 0x00.&lt;br /&gt;
:9 - S3TC/DXT1, RGB565 compressed 4 times ([https://wikis.khronos.org/opengl/S3_Texture_Compression GL_COMPRESSED_RGB_S3TC_DXT1_EXT] OpenGL texture format)&lt;br /&gt;
:10 (never used in vanilla TXMPs) - RGB_Bytes, 24 bits/pixel, stored as 3 consecutive bytes: first Red, then Green, then Blue.&lt;br /&gt;
::N.B. Unlike for RGB888 (type 8), the storage is compact, with no unused alpha bit.&lt;br /&gt;
:11 (never used in vanilla TXMPs&amp;lt;ref&amp;gt;Storage format 11 (RGBA_Bytes) was effectively implemented by OniSplit to allow for 32-bit textures with transparency - most importantly experimental lightmaps, see [[Lightmapping levels|HERE]]. However, it was mislabeled as type 7 (ARGB8888) by OniSplit, Daodan DLL and the Intel Mac build, which resulted in byte swapping and the requirement of authoring Windows and Mac versions of TXMPs.&amp;lt;/ref&amp;gt;) - RGBA_Bytes, 32 bits/pixel, stored as 4 consecutive bytes: first Red, then Green, then Blue, then Alpha.&lt;br /&gt;
:12 (never used in vanilla TXMPs) - RGBA5551, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels with bitmasks 0x003E (Blue), 0x07C0 (Green) and 0xF800 (Red), 1-bit alpha (0x0001).&lt;br /&gt;
:13 (never used in vanilla TXMPs) - RGBA4444, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Four 4-bit channels, with bitmasks 0x00F0 (Blue), 0x0F00 (Green), 0xF000 (Red) and 0x000F (Alpha).&lt;br /&gt;
:14 (never used in vanilla TXMPs) - RGB565, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Two 5-bit channels with bitmasks 0x001F (Blue) and 0xF800 (Red), 6-bit Green channel (0x07E0).&lt;br /&gt;
:15 (never used in vanilla TXMPs) - ABGR1555, 16 bits/pixel (stored as a little-endian int16, swaps to big-endian at runtime on Mac)&lt;br /&gt;
::Three 5-bit channels with bitmasks 0x001F (Red), 0x03E0 (Green) and 0x7C00 (Blue), 1-bit alpha (0x8000).&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr| 0x94 | link     |FFC8FF| 00 00 00 00 | unused    | link to a [[OBD:TXAN|TXAN]] file; used if this texture is animated }}&lt;br /&gt;
{{OBDtr| 0x98 | link     |FFC800| 00 00 00 00 | unused    | link to a TXMP file that contain the environment map  }}&lt;br /&gt;
{{OBDtr| 0x9C | offset   |C800C8| 20 00 00 00 |00 00 00 20| offset of pixel data in the raw file (v1.0 engine only) }}&lt;br /&gt;
{{OBDtr| 0xA0 | offset   |C87C64| 00 00 00 00 | unused    | offset of pixel data in the separate file (v1.1 engine only) }}&lt;br /&gt;
{{OBDtr| 0xA4 | char[12] |B0C3D4| AD DE       | dead      | The layout of these 12 bytes is different for the v1.0 and v1.1 versions (i.e. Windows retail vs. Windows demo and Mac):&lt;br /&gt;
*For a v1.1 TXMP, the four bytes at 0xA4-A7 are &amp;quot;00 00 00 00&amp;quot; instead of &amp;quot;AD DE AD DE&amp;quot;, and correspond to a &amp;quot;material type&amp;quot; attributed at runtime (from [[TMBD]]), which is then used for impact/breakability lookup. The Windows retail TXMPs apparently have no such &amp;quot;material type&amp;quot; field.&lt;br /&gt;
*The fields at 0xA8-AF (for v1.1) or 0xA4-AB (for v1.0) are used only at runtime (and somehow obfuscated by &amp;quot;0xDEAD&amp;quot; when written to disk). Judging by the Windows demo and Mac engine, we can assume they are the same in both engines, and serve for rendering optimization (there is a texture name pointer, a &amp;quot;dirty&amp;quot; flag stored as a byte and 3 extra bytes used as flags).&lt;br /&gt;
*For Windows retail, the four bytes at 0xAC-AF are completely unused (not part of the template).&lt;br /&gt;
Since runtime fields are grouped at the end, v1.0 and v1.1 TXMPs are treated by OniSplit under the same template, merely switching between the .raw and .sep links and blanking out everything past 0xA4.&lt;br /&gt;
}}&lt;br /&gt;
{{OBDtr| 0xB0 | char[16] |B0C3D4| AD DE       | dead      | padding bytes (not part of TXMP) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Effect options===&lt;br /&gt;
The &amp;quot;blue shield&amp;quot;, &amp;quot;invisibility&amp;quot; and &amp;quot;Daodan shield&amp;quot; options tell the engine to vary the texture&#039;s Gouraud shading with certain preset colors that vary with time.&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
!Flag name&lt;br /&gt;
!Texture with flag&lt;br /&gt;
!Used for&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;blue shield&amp;quot;&lt;br /&gt;
|TXMPSHIELD&lt;br /&gt;
|force shield&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;invisibility&amp;quot;&lt;br /&gt;
|TXMPINVIS&lt;br /&gt;
|phase cloak&lt;br /&gt;
|-&lt;br /&gt;
|&amp;quot;Daodan shield&amp;quot;&lt;br /&gt;
|TXMPDAODAN_SHIELD&lt;br /&gt;
|red boss shield and [[supershield]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
In the vanilla game data, these flags are only used by the above-named textures. The engine also calls upon these textures by hardcoded name in order to create a character&#039;s shield or phase cloak effect.&lt;br /&gt;
&lt;br /&gt;
===Animation time===&lt;br /&gt;
When using animated textures the image to display is selected using the game time and animation speed. For textures that are used by particles the local (particle) time can be used either to replace or offset the game time.&lt;br /&gt;
&lt;br /&gt;
===Pixel byte storage order===&lt;br /&gt;
As noted above under each format description, the bytes of multibyte texture formats are generally stored &amp;quot;backwards&amp;quot; compared to their names, so if a format is named &amp;quot;RGBA&amp;quot;-something then its bytes will be in ABGR order on disk. This convention was established in the Windows world where PCs were little-endian and loading the bytes AA BB GG RR into a 32-bit int in memory would place them in the correct order, 0xRRGGBBAA. Macintoshes, being big-endian at the time, expected the data to be stored in reverse order and thus Oni would perform a byte swap on most of these types when it loaded them into memory to ensure that they ended up as 0xRRGGBBAA in memory. The sole exceptions to this little-endian storage rule among Oni&#039;s supported texture formats are RGB_Bytes and RGBA_Bytes, which actually store their bytes in the stated order, RGB and RGBA respectively. However these formats were never used by any textures in Oni.&lt;br /&gt;
&lt;br /&gt;
===Pixel storage order===&lt;br /&gt;
Pixels are stored in row-major order, meaning that all the pixels forming a scanline (image row) are grouped together (stored in left-to right order); the rows are stored in bottom-to-top order (see illustration below). In the case of the DXT1 storage format, the row-major, left-to-right, bottom-to-top order applies to the 4x4 blocks composing the image, and also inside each 4x4 block for the storage of 2-bit pixels. In the case of the I1 format (several pixels per byte), the row-major, left-to-right, bottom-to-top order applies to the 1-bit pixels composing the image.&lt;br /&gt;
{|border=0&lt;br /&gt;
|+Pixel arrangement&lt;br /&gt;
!how it&#039;s stored&lt;br /&gt;
!&amp;amp;nbsp;&lt;br /&gt;
!how you&#039;ll see it&lt;br /&gt;
|-&lt;br /&gt;
|[[Image:txmp_ex1.gif]]&lt;br /&gt;
|&amp;amp;nbsp;&lt;br /&gt;
|[[Image:txmp_ex2.gif]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==PS2 implementation==&lt;br /&gt;
The PS2 TXMP layout is similar to PC, with notable differences in the last few bytes due to Rockstar moving to a PS2-standard 32-bit indexed color (&amp;quot;CLUT&amp;quot;) system for optimization purposes. Here are the high-level differences:&lt;br /&gt;
*There are 4 extra bytes of storage as compared to a v1.1 TXMP (which is already 4 bytes larger than a v1.0 TXMP).&lt;br /&gt;
*The extra 4 bytes come from a palette index (int32) inserted at 0x90 before the pixel format (which is pushed down to 0x94 along with everything else that follows).&lt;br /&gt;
*Two new pixel formats were added, and are the only formats used on PS2: type 16 for opaque textures (indexed 32-bit RGB with ignored alpha byte), and type 17 for transparent textures (indexed 32-bit RGBA).&lt;br /&gt;
*The pixel data (color indices) can be stored either in the .raw file (pointer field at 0xA0) or in the .sep file (pointer at 0xA4).&lt;br /&gt;
&lt;br /&gt;
Here is how the end of TXMPrl_1 looks in level3_Final.dat of the English retail PS2 version.&lt;br /&gt;
{{Table}}&lt;br /&gt;
{{OBD_Table_Header}}&lt;br /&gt;
|- ALIGN=CENTER VALIGN=TOP&lt;br /&gt;
{{OBDtr| 0x90 | int32    |C8FFC8| 56 00 00 00 | 86        | index of the 256-color palette used by this texture (starts at 0x15800 in level3_palette.pal) }}&lt;br /&gt;
{{OBDtr| 0x94 | int32    |C8FFFF| 10 00 00 00 | 16        | pixel format 16 (indexed 32-bit RGB with inactive alpha) }}&lt;br /&gt;
{{OBDtr| 0x98 | link     |FFC8FF| 00 00 00 00 | 0         | link to a [[OBD:TXAN|TXAN]] file; used if this texture is animated }}&lt;br /&gt;
{{OBDtr| 0x9C | link     |FFC800| 00 00 00 00 | 0         | link to a TXMP file that contains the environment map  }}&lt;br /&gt;
{{OBDtr| 0xA0 | offset   |C800C8| C0 05 00 00 |00 00 05 C0| offset of pixel data in the .raw file }}&lt;br /&gt;
{{OBDtr| 0xA4 | offset   |C87C64| 00 00 00 00 | 0         | offset of pixel data in the .sep file }}&lt;br /&gt;
{{OBDtr| 0xA8 | int32    |B0C3D4| 00 00 00 00 | 0         | always 0; presumably the same &amp;quot;material type&amp;quot; (set at runtime) as for Windows demo and Mac }}&lt;br /&gt;
{{OBDtr| 0xAC | char[4]  |B0C3D4| AD DE AD DE | dead      | presumably the same texture name pointer (set at runtime) as for Windows demo and Mac }}&lt;br /&gt;
{{OBDtr| 0xB0 | char[4]  |B0C3D4| AD DE AD DE | dead      | presumably the same rendering optimization flags (runtime) as for Windows demo and Mac }}&lt;br /&gt;
{{OBDtr| 0xB4 | char[12] |B0C3D4| AD DE       | dead      | completely unused bytes (not part of the template) }}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===Palette file format===&lt;br /&gt;
*Palettes are stored per-level in level#_palette.pal files in a pal/ subdirectory of GameDataFolder, corresponding to how .raw and .sep files are stored in raw/ and sep/ subdirectories.&lt;br /&gt;
*Each level#_palette.pal file contains between 85 and 179 palettes, not counting the first palette (index 0) at the start of each .pal file which is always blank.&lt;br /&gt;
&lt;br /&gt;
===Palette format===&lt;br /&gt;
*Valid palette indices start at 1 because of palette 0 always being empty.&lt;br /&gt;
*Each color in a palette entry is 4 bytes, stored on disk in RGBA order (byte 0 = red, byte 1 = green, byte 2 = blue, byte 3 = alpha). This is the same layout as RGB_Bytes (type 10) and RGBA_Bytes (type 11), not the reversed BGRA order used by most of the other texture formats.&lt;br /&gt;
*Each palette consists of 256 32-bit color slots and thus takes up 1024 bytes. If a palette does not use all 256 entries then the palette is closed out with a series of {0x00, 0x00, 0x00, 0x80} entries.&lt;br /&gt;
*Each pixel in the .raw or .sep data is stored as a 1-byte index into the image&#039;s chosen color palette.&lt;br /&gt;
&lt;br /&gt;
===Palette CLUT swizzle===&lt;br /&gt;
:The PS2 Graphics Synthesizer (GS) stores CLUT entries in a scrambled order due to its hardware cache line layout. Within every 32-entry block of the palette, entries 8–15 and 16–23 are swapped relative to their logical positions. Software reading the palette must undo this before using it as a palette index.&lt;br /&gt;
&lt;br /&gt;
===Ignored alpha byte for type 16===&lt;br /&gt;
:The fourth byte would represent alpha, but in RGB888 it is merely a padding byte, always set to 0x80.&lt;br /&gt;
&lt;br /&gt;
===Alpha scaling for type 17===&lt;br /&gt;
:The PS2 GS uses a half-range alpha where 0x00 = fully transparent and 0x80 = fully opaque (values above 0x80 are technically possible but indicate &amp;quot;source alpha contribution &amp;gt; 1&amp;quot; in GS blending, which doesn&#039;t arise in Oni).&lt;br /&gt;
&lt;br /&gt;
===Alternating use of .raw or .sep storage===&lt;br /&gt;
Unlike the Win/Mac game data (where pixel data is stored exclusively in .raw or exclusively in .sep for all TXMPs), PS2 TXMPs use .raw and .sep storage alternatingly, depending on the TXMP. The engine apparently uses the .sep pointer if there is no .raw pointer (or vice versa).&lt;br /&gt;
&lt;br /&gt;
Examples of textures using .sep storage are: all [[:Category:Fly-in_portraits|fly-in portraits]]; all [[:Category:Splashscreens|splashscreen]] components; some illustrations in Konoko&#039;s [[Data Comlink]] (namely, [[:File:TXMPLevel02move.png|combat move illustrations]] and [[:File:TXMPhypo.png|item illustrations]]; objectives and weapon illustrations use .raw storage).&lt;br /&gt;
&lt;br /&gt;
Environment/character/particle TXMPs seem to be using .raw storage consistently (not checked beyond level1_Final). As a notable anomaly, .sep storage is used for the following three textures (console screens) in level0_Final: _CON_SAVEGAME (main TXMP only; the animation frames use .raw storage), _CON_SAVEGAME_USED, _CON_USED.&lt;br /&gt;
&lt;br /&gt;
==Oni&#039;s internal storage types==&lt;br /&gt;
Some of Oni&#039;s 18 types of image storage are elaborated on below in order to illustrate exactly how they work. The &amp;quot;Mem view&amp;quot; column shows the bytes in big-endian format and the &amp;quot;Disk view&amp;quot; column shows the bytes as they are actually stored in little-endian order. For example, bytes in memory shown as 0xFC00 are stored as &amp;quot;00 FC&amp;quot; on disk.&lt;br /&gt;
&lt;br /&gt;
===ARGB4444 (type 0)===&lt;br /&gt;
*A 16-bit field is used to store 4 color channels (4 bits each, values from 0 to 15).&lt;br /&gt;
*Bit masks are 0x000F for Blue, 0x00F0 for Green, 0x0F00 for Red, 0xF000 for Alpha.&lt;br /&gt;
*Stored as big-endian in TXMP (first the AAAARRRR byte, then the GGGGBBBB byte).&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A A A A R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=3|&amp;lt;br&amp;gt;Bit values for primary colors (fully opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 00!!00 F0&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF!!FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00!!00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 F0!!F0 F0&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 0F!!0F F0&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0 FF!!FF F0&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 0F!!0F FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF F0!!F0 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGB555 (type 1)===&lt;br /&gt;
*A 16-bit field is used to store 3 color channels (5 bits each, values from 0 to 31).&lt;br /&gt;
*Bit masks are 0x001F for Blue, 0x03E0 for Green, 0x7C00 for Red.&lt;br /&gt;
*The high bit (0x8000) is unused, but is always set to 1 by convention.  &lt;br /&gt;
*Stored in little-endian order in TXMP.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;X R R R R R G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=3|&amp;lt;br&amp;gt;Bit values for primary colors&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 00!!00 80&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF!!FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 00!!00 FC&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 E0!!E0 83&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 1F!!1F 80&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 FF!!FF 83&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 1F!!1F FC&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF E0!!E0 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ARGB1555 (type 2)===&lt;br /&gt;
*A 16-bit field is used to store 3 color channels (5 bits each, values from 0 to 31) and one 1-bit channel.&lt;br /&gt;
*Bit masks are 0x001F for Blue, 0x03E0 for Green, 0x7C00 for Red, and 0x8000 for Alpha.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A R R R R R G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=3|&amp;lt;br&amp;gt;Bit values for primary colors (opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 00!!00 80&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF!!FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 00!!00 FC&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 E0!!E0 83&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!80 1F!!1F 80&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 0 0 0 0 0 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!83 FF!!FF 83&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FC 1F!!1F FC&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF E0!!E0 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===A4I4 (type 6)===&lt;br /&gt;
*An 8-bit field is used to store an intensity and an alpha (4 bits each, values from 0 to 15).&lt;br /&gt;
*Bit masks are 0x0F for Intensity, 0xF0 for Alpha.&lt;br /&gt;
*Endianness is irrelevant for single-byte storage.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!Bits&lt;br /&gt;
!&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A A A A I I I I&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=2|Examples of bit values&lt;br /&gt;
!Mem view&lt;br /&gt;
|-&lt;br /&gt;
|Black, opaque||&amp;lt;code&amp;gt;1 1 1 1 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!F0&lt;br /&gt;
|-&lt;br /&gt;
|White, opaque||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF&lt;br /&gt;
|-&lt;br /&gt;
|Black, transparent||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00&lt;br /&gt;
|-&lt;br /&gt;
|White, transparent||&amp;lt;code&amp;gt;0 0 0 0 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!0F&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===ARGB8888 (type 7)===&lt;br /&gt;
*A 32-bit field is used to store 4 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Bit masks are 0x000000FF for Blue, 0x0000FF00 for Green, 0x00FF0000 for Red, 0xFF000000 for Alpha.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 3 (highest)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (higher)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;A A A A A A A A&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=5|&amp;lt;br&amp;gt;Bit values for primary colors (fully opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00 00!!00 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF FF!!FF FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00 00!!00 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF 00!!00 FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00 FF!!FF 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF FF!!FF FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00 FF!!FF 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF 00!!00 FF FF FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGB888 (type 8)===&lt;br /&gt;
*A 32-bit field is used to store 3 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Bit masks are 0x000000FF for Blue, 0x0000FF00 for Green, 0x00FF0000 for Red.&lt;br /&gt;
*The high byte (0xFF000000) is unused, but is always set to 00 by convention.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 3 (highest)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (higher)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (high)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 0 (low)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;X X X X X X X X&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=5|&amp;lt;br&amp;gt;Bit values for primary colors&lt;br /&gt;
!Mem view&lt;br /&gt;
!Disk view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00 00!!00 00 00 00&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF FF!!FF FF FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00 00!!00 00 FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF 00!!00 FF 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00 FF!!FF 00 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF FF!!FF FF 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00 FF!!FF 00 FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF 00!!00 FF FF 00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGB_Bytes (type 10)===&lt;br /&gt;
*Three consecutive 8-bit fields are used to store 3 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Each channel has its own byte, and there is no &amp;quot;unused&amp;quot; byte (the bytes are packed 3 by 3).&lt;br /&gt;
*Endianness is irrelevant when storing as a sequence of bytes.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 0 (red)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (green)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (blue)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=4|Bit values for primary colors&lt;br /&gt;
!Mem view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
===RGBA_Bytes (type 11)===&lt;br /&gt;
*Four consecutive 8-bit fields are used to store 4 color channels (8 bits each, values from 0 to 255).&lt;br /&gt;
*Each channel has its own byte. Endianness is irrelevant when storing as a sequence of bytes.&lt;br /&gt;
{|border=1 cellpadding=3 cellspacing=0&lt;br /&gt;
!&amp;lt;br&amp;gt;Bits&lt;br /&gt;
!Byte 0 (red)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 1 (green)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 2 (blue)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
!Byte 3 (alpha)&amp;lt;br&amp;gt;&amp;lt;code&amp;gt;7 6 5 4 3 2 1 0&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!Masks||&amp;lt;code&amp;gt;R R R R R R R R&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;G G G G G G G G&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;B B B B B B B B&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;A A A A A A A A&amp;lt;/code&amp;gt;&lt;br /&gt;
|-&lt;br /&gt;
!colspan=5|&amp;lt;br&amp;gt;Bit values for primary colors (fully opaque)&lt;br /&gt;
!Mem view&lt;br /&gt;
|-&lt;br /&gt;
|Black||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|White||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Red||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Green||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF 00 FF&lt;br /&gt;
|-&lt;br /&gt;
|Blue||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Cyan||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!00 FF FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Magenta||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF 00 FF FF&lt;br /&gt;
|-&lt;br /&gt;
|Yellow||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;0 0 0 0 0 0 0 0&amp;lt;/code&amp;gt;||&amp;lt;code&amp;gt;1 1 1 1 1 1 1 1&amp;lt;/code&amp;gt;&lt;br /&gt;
!FF FF 00 FF&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Notes==&lt;br /&gt;
&amp;lt;references/&amp;gt;&lt;br /&gt;
&lt;br /&gt;
{{OBD_File_Footer | type=TXMP | prev=TXMB | next=TxtC | name=Texture Map | family=General}}&lt;br /&gt;
&lt;br /&gt;
{{OBD}}&lt;/div&gt;</summary>
		<author><name>Iritscen</name></author>
	</entry>
</feed>