Twinsanity Editor Reference

User avatar
Neo_Kesha
Site Admin
Posts: 23
Joined: Sat Sep 24, 2016 8:48 am

Twinsanity Editor Reference

Postby Neo_Kesha » Fri Jan 27, 2017 3:55 pm

Main Interface
Wellcome to the Twinsanity Editor Reference!
Image
Glad to see you here, because, if you are here, that means, that you are interested in Twinsanity Modding! Let me introduce you into basics of Twisanity Editor. Twinsanity Editor have four main GUI parts: Structure tree on the right, Summary window on the right-middle, menu on the top and frequently used tools on the right.
  • HEX Viewer - badly made HEX Viewer for emergency use
  • Export - Smartly Exports asset. For example, exports Game Object as packet of files, including all linked GO, Models, Sounds, Scripts and etc. Also smartly exports Sound Description with sound stream. Extract will only extract Game Object Asset and Sound Description without audio stream.
  • Search - Search asset by ID, Name or something else.
  • Replace - replaces asset with external asset
  • Extract - extracts asset as it is
  • Add - adds new external asset
  • Delete - deletes selected asset
  • New - makes new asset with default settings. Please, avoid using that feature
  • Import - imports Game Object with all connections in packet. Same with exported Sound Description - adds Sound Description asset and adds audio stream to Sound bank.
  • Replace Local - replaces ID2 item ID1 within one section
  • Randomize - just for fun, randomize items
  • (Instance) Scripting

File
Image
FIle menu has common features. Use Open to open your level file. Save and Save As functions works as it works everywhere. New RM2 and New SM2 are experimental and are not recommended for use.
Utilities
Image
Utilities menu contains useful utilities for Twinsanity assets work.
Elf Patcher - used when you need to patch your elf file
E3 Converter - Vice verse Release <=> E3 converter
Refresh Library - if you did some changes in Library.txt, you have to use this option.
GeoData
Image
Utilities section for GeoData tools.
GeoData Visualizer - 3D View of level collision grid, triggers and instances on it.
Clear GeoData - ERASES all GeoData (not Instance Info section)
Add Layer SB ID: Converts Obj model to GeoData and adds it to collision grid with entered below Surface Behavior ID.
Export OBJ - Converts all GeoData to single OBJ model
Export OBJ Layered - Converts GeoData to separate OBJ models for every Surface Behavior.
TriggerTree - debug feature.
Graphics
Image
Graphics Utilities.
View Selected - views selected item from Graphics Section. Hotkey: Ctrl+V
PSM Worker - Utilitie, that allows to view and both ways convert PSM, PTC and PSF images.
Import Texture - Converts png image to Twinsanity Texture file
Export Model - Converts Model or Graphics Compilation asset to OBJ Model
Import Model - Converts OBJ Model to Twinsanity Model.
Sound
Image
Sound utilities.
Play - plays selected sound file. Hotkey: Ctrl+P
Convert to WAV - converts Twinsanity Sound to WAV Audio
WAV to TwinSND - converts WAV Audio file to Twinsanity Sound stream.
MH Worker - tool for working with MH Music Archives
About
Image
Version of Twinsanity Editor, Creator and peoples, who helped much. Thank you all!
Open Level
Image
First of all, you have to open Twinsanity Level - RM2 (Game logic) SM2(Terrain and scenery) file. You can get them by unpacking CRASH.BH Archive from game disc with BH Extractor form Additional Utilities archive.
Press Files->Open
Level Type
Image
Note: You can change type of level you want to load here.

"Level Structure"
Root
Image
RM2 Level consists of few main sections - Graphics Section, Code Section, GeoData Section, Instance Info Section and some unknown element.
Graphics Section
Image
Textures - Twinsanity textures for models
Materials - Have names. Have some additional info and reference to Texture.
Model - vertex data, without texture
Graphics Compilation (GC) - Have reference to Material and Model
ID4Models - Some models of unknown format.
ID5Models - Some models of unknown format. Rigged.
GC - GC from SM2 file
Unk Section 7 - Some SM2 Scenery data
Unk Section 8 - Some SM2 Scenery data
Code Section
Image
Game Objects - heart of a level, if GeoData is liver. Or bones, whatever you want. Basically they are collection of OGI, Animations, Scripts, Sounds and links to other objects. OGI and Animations are paired. Every Script slot has it's own event - in which case script will trigger.
Scripts - the rules, which determines, how objects will behave.
Animations - name says all about it.
Object Graphic Info - contains info about collision box, GC Lists, ID4 and ID5, etc.
Unknown Section - some scripts, on which projectiles refer, foe example
Sound Description - has info about length of audio, offset in Sound Bank, frequency and etc.
Sound Effect Bank - stream of sound effects.
NTSC\PAL Voice - Sound Descriptions and Streams for voice
Instance Info Section
Image
Game Object is template, scenario, description. Like blueprint of chair. Existing, placed chair is Instance.
Unknown Section - encounters only in Default.rm2
Behavior - Responsible for navigation
Fucking Shit - Responsible for navigation
Position - simple Vector3 position
Path - collection of 3D Positions
Surface Behavior - Determines properties of GeoData surfaces. Only encounters in Defualt.rm2
Instance - Instance of Game Object, with position, rotations, connections and etc
Trigger - zone which will call trigger event in Instance
Unknown Section - presumably camera settings

"Utilities"
PSM Worker
Image
PSM Worker is a great utility, that allows you to WORK WITH PSM SUDDENLY! It allows you to view Twinsanity files, save it as PNG and convert PNG files to PSM.
Open PSM
Image
First of all, open PSM you are interested in. They are lying in CRASH.BD Archive.
PSM Worker Interface
Image
Open - opens a PSM file.
Demo flag - check it, if you are opening images from E3 demo.
<< and >> used, if you have selected few PSM files
Save - saves Image as PNG
BW Flag - Disables colors, BlackWhite filter
Replace Segment - PSM consists of few Textures, that we call Segments. With that button you can replace it. USE 8-BIT PNG FOR THE QUALITY SAKE. Use images with power-of-two sizes, like 64x32.
Replace 512x512 - if your PSM is 512x512 image, you can automatically replace whole PSM with 512x512 PNG
Multiple Select
Image
Just select multiple PSMs in Open dialog
Multiple Select Switching
Image
And then navigate with << and >> buttons
Segment Replacement
Image
Select segment you want to replace, open 8-bit PNG with power-of-two sizes and see result.
512x512 image replacement
Image
If you work with most common 512x512 PSM, you can automatically replace all segments using 512x512 8-bit PNG.
Note: you can use 16, 24, 32 bit PNG too, but my method of color reducion to 256 colors is kinda bad, so just save your image as 8-bit PNG in external editor
GeoData Visualizer
Image
Useful for you thing is GeoData Visualizer.
Loading
Image
Wait a little, Editor needs a time to process all collision data
Movement
Image
Use QWEASD buttons to move, mouse to rotate your camera
Points, Pathes and Triggers
Image
Press T Button to show Triggers, Positions and paths.
Patching ELF
Image
If you want to patch game's ELF, select your region and then open game's ELF
ELF Patcher settings
Image
For now there are two useful options: change startup level and chage name of archive to load. Don't forget to check boxes, if you want to apply your changes.
E3 Convertor
Image
Select in type Combo Box, what you want to convert and then open file you need.
Texture Importer
Image
In Combo Box select type of image you want to convert and then open mathing PNG Image. Texture will be saved in same folder where input Image is.
Opening Music MH
Image
Open Music archive from Disk contents. I'd recommend you to not use Music archive you are going to pack into ISO Image, because you can't overwrite opened in MH Worker archive, due to technical side. Best solution - mount game's Image and open Music archive from virtual drive, then save it in your project folder.
MH Worker
Image
MH Worker has simple interface. On the left side of window placed list of tracks. Some of them is named - mono tracks with voice. Stereo tracks doesn't have names. Reserved is beep-beep sound placeholder, that you can replace by anything you want. Still, you can just add new track, without replacing reserved slot.
To listen press "Load" button first of all. When "Loaded" indicator say "yes", you can press "Play" button. No need to explain "Pause" and "Stop"?
You can add new track by pressing "Add" button. Then select WAV Audio file you want to convert, wait a little and job's done! Same does "Replace", but it replaces existing track. Delete will delete selected track. To save selected track as WAV Audio, press "Convert".
When you're done, press "Repack MB Archive".
Texture Viewer
Image
To view selected texture use Ctrl+V hotkey of Utilities->Graphics->View Selected. You can navigate between textures by "<<" and ">>" buttons. To convert Twinsanity Texture to PNG, use "Save" button
Material Viewer
Image
Material is just a reference to Texture, at least yet, so it does same things. Materials has names and few materials can refer to one texture.
GC and Model Viewer
Image
To view Model or GC use Ctrl+V hotkey of Utilities->Graphics->View Selected.
Main difference between Model and GC is that Model just plain vertex data, when GC has links to Model and Materials.
Navigation is same, as it was in GeoData Viz.

"Editors"
Behavior
Image
Behavior is simple Vector4 with some number, presumably used for AI Navigation.
When you done with changes, press "Apply". If you did something wrong, press "Revert".
Fucking Shit
Image
FS is collection of five IDs. Purpose is unknown.
When you done with changes, press "Apply". If you did something wrong, press "Revert".
Position
Image
Just Vector3 item.
When you done with changes, press "Apply". If you did something wrong, press "Revert".
Instance: General
Image
ID - ID of instance
Object ID - ID of Game Object, instance of which will be created.
Flags - some flags, responsible for behavior.
SatanVariable - 666
X,Y,Z - coordinates in level
RotX, RotY, RotZ - rotations. In game files are 0 to 65535 values.
When you done with changes, press "Apply". If you did something wrong, press "Revert".
Instance: Collections
Image
Collections of references and values are very important.
They are separated in two sections - variables on the left and links on the right.
Something - some unknown collection
Float - collection of float variables for Game Object's purposes. For example, friction of character.
Integer - collection of integer variables for Game Object's purposes. For example, Mask state or track ID.
Position - collection of Positions, that used, for example, by Worms. They refer to order number of Position, not ID!
Path - collection of Paths, that used, for example, by Birds in the sky. They refer to order number of Path, not ID!
Instance - collection of Instances, that used, for example, by Detonator crate. They refer to order number of Instance, not ID!
When you done with changes, press "Apply". If you did something wrong, press "Revert".
Game Object
Image
Game Object mostly consists of Unknown purpose data, unknown format data and collections.
ID - ID of Game Object.
Name - Name of Game Object.
Class1, Class2, Class3 and Param are unknown purpose variables.
Unknown Shit - COLLECTION OF UNKNOWN PURPOSE DATA, SUDDENLY! Maybe if i named it so, then it mean, than i don't know?
OGI - collection of OGI IDs.
Animation - collection of Animation IDs.
OGI and Animations in order represents Graphical State. For example, if we have OGI List 1, 4, 5 and Animation list 4, 13, 1488, then it means, that Game Object has three Graphical States. First is With OGI 1 and Animation 4, Second is OGI 4 and Animation 13, and etc.
Script - collection of scripts. Order is important, because event, when script will trigger, depends on it's order number.
Game Object - collection of Game Objects. Used by scripts.
Sounds - collection of Sounds. Used by scripts.
SomeValues - IDFN
Floats - collection of Floats
Integers - collection of Integers.
When you done with changes, press "Apply". If you did something wrong, press "Revert".
Path
Image
Collection of Vector 3 variables and Some numbers, somehow connected with Path points.
When you done with changes, press "Apply". If you did something wrong, press "Revert".
Trigger
Image
Trigger is an 3D area, that will trigger some object, when Player reaches Trigger area.
ID - ID of Trigger.
Flags - some Flags.
Number - GUESS FUCKING WHAT, OH HOW I'M FUCKING TIRED WITH THAT REFERENCE, NOBODY EVER WILL READ IT! NOBODY EVER WILL MAKE SOME MODS FOR TWINSANITY! HYPE IS ALREADY GONE AND TWINSANITY EDITOR IS STILL NOT ADVANCED ENOUGH TO MAKE YOUR FULLY CUSTOM LEVELS!
Sorry.
SomeValue1, SomeValue2, SomeValue3, SomeValue4, SomeNumber - i know, that they are exist, please, believe me, and they do something important, i don't know WHAT.
Trigger has collection of instances to trigger. It refers to it's Order Number, not ID.
Position Vector3 - position of bottom corner of area.
Size Vector3 - size of trigger area.
Vector3 - :rofl: :rofl: :rofl: :crashhappens: :fuq:
When you done with changes, press "Apply". If you did something wrong, press "Revert".
Surface Behavior
Image
Surface Behavior determines, how your character will behave on collision with surface. It have named flags (Thanks to BetaM).
Other data are unknown, except that one group of variables is responsible for Physics behavior of player.
When you done with changes, press "Apply". If you did something wrong, press "Revert".
Object Graphics Info
Image
Note: all changes made here instantly applies.
ID - ID of OGI.
Flags - Flags of OGI.
Vector1 and Vector2 - some Vectors =D
T1 and T2 some 3D info. Second window of T1 and T2 are matrixes.

Return to “Tutorials”

Who is online

Users browsing this forum: No registered users and 1 guest


  • You do not have permission to post in chat.
@ Neo_Kesha « Tue 8:27 am »
I said i’ll poop on you!
@ BloxXor « Sat 8:30 am »
.
@ BloxXor « Sat 8:30 am »
oh shiit
@ BloxXor « Sat 8:29 am »
oh man
@ Neo_Kesha « Sat 2:48 pm »
Happy Crash 20th anniversary
@ Neo_Kesha « Fri 10:06 am »
Haven’t got a look on Viewer code for a long time. I’ll see, what i can do, after exams. After 23th, if i pass it.
@ b100n « Sun 9:32 pm »
i have another game that suddenly has this slowdown issue and it seems to be because it’s using software vertex processing
@ b100n « Sun 9:30 pm »
kesha do you use software vertex processing for the collision viewer?
@ b100n « Sat 5:56 pm »
also if you go to an instance of an object that is loaded in default.rm but not in the RM that you’re in you get an error
@ b100n « Sat 5:52 pm »
actually 1FPS is an overstatement. it’s downright unusable. I don’t know what’s wrong. task manager isn’t very useful, all I know is that it’s using 15% cpu
@ b100n « Sat 5:49 pm »
and yes this happens to all versions both old and new
@ b100n « Sat 5:48 pm »
still haven’t figured out why the collision viewer is at 1FPS for me. can you use opentk to render it instead if that’s not too much trouble? i feel like a windows update fucked me up and I can’t fix it.
@ Neo_Kesha « Tue 3:17 pm »
Why do fucking spambots love my site so much and users dont?
@ vandalo « Thu 7:37 am »
I’m new here, I’m a game developer and I started a new crash, inspired in crash bandicoot 3, I’m here to look for some environment assets, and you guid me a little bit
@ vandalo « Thu 7:36 am »
Hi
@ Neo_Kesha « Tue 4:00 pm »
I know that nobody cares, yup
@ Neo_Kesha « Tue 4:00 pm »
NOW
@ Neo_Kesha « Tue 4:00 pm »
RELEASE
@ Neo_Kesha « Tue 4:00 pm »
So...
@ Neo_Kesha « Tue 4:00 pm »
And i want to research scripts finally
@ Neo_Kesha « Tue 3:59 pm »
Why should i make texture converter rebuild, when i have big and important part of release done?
@ Neo_Kesha « Tue 3:59 pm »
SCREW IT!
@ Neo_Kesha « Tue 3:59 pm »
You know what?
@ Neo_Kesha « Sun 3:08 pm »
That’s why I kill spambots very rare
@ Neo_Kesha « Sun 3:08 pm »
Site is half dead, because Twinsanity modding isn’t so popular and I don’t have much time to release new versions. And administrating Russian CBN takes time too
@ Neo_Kesha « Sun 3:07 pm »
What exactly that disk is? We have E3 from pal and ntsc
@ RatcheT2497 « Sat 3:07 pm »
There’s a lot of spamming going on on this site tbh
@ MrShasoft « Fri 9:49 am »
Someone buy this Crash twinsanity beta over at
http://www.ebay.com.au/itm/CRASH-BANDIC ... SwcLxYJ45Z
then make a iso
@ MrShasoft « Fri 9:47 am »
Hello
@ Neo_Kesha « Fri 6:25 am »
#saveb100n
@ Neo_Kesha « Mon 5:38 pm »
You can ask me in threads or on my skype: neo_kesha
@ Neo_Kesha « Mon 5:37 pm »
Sure I can.
@ RedPhoenix « Sun 11:46 am »
Plz
@ RedPhoenix « Sat 8:46 pm »
Hello. I am passionate about Crash Twinsanity and I would begin to know the modding on it. Do you think you could give me a hand? I am in the first weapons
@ Neo_Kesha « Fri 4:22 pm »
Download Twisanity Editor and additional utilities and go on. There are some videos on my channel, that could help you https://www.youtube.com/playlist?list=P ... 65D8311A22
@ hyagogow « Mon 2:03 pm »
How can I do a modification?
@ Neo_Kesha « Sun 4:57 pm »
If your messages won’t post, just wait or refresh page
@ Neo_Kesha « Sun 4:57 pm »
Chat is not broken, it’s slow
@ Neo_Kesha « Fri 7:55 am »
:chick: :chick: :chick:
@ BloxXor « Mon 5:08 pm »
yeah
@ BloxXor « Mon 5:07 pm »
Looking good
@ b100n « Sun 12:52 am »
wumpa
@ Neo_Kesha « Sat 10:56 am »
And i just realized, that CMForums is CBF now too, lol
@ Neo_Kesha « Sat 10:56 am »
Because CBF was first russian biggest community and BIZ another first russian biggest community, that had some holywars
@ Neo_Kesha « Sat 10:55 am »
If some discord users reads this, lol. Funny misunderstoodment
@ Neo_Kesha « Sat 10:55 am »
"CBF - feces, BIZ - excrements"
@ b100n « Fri 6:47 pm »
I’m coming here everyday just for the aku aku widget.
@ Neo_Kesha « Fri 5:49 pm »
Hail Satan
@ b100n « Fri 1:18 pm »
This looks cool on mobile.
@ b100n « Fri 9:39 am »
Babokenji
@ b100n « Fri 9:38 am »
it lives
@ b100n « Fri 9:38 am »
test
@ Neo_Kesha « Sun 4:55 pm »
It means "Nice day today!"
@ DarkSamurai « Sun 12:22 pm »
What does it means?
@ DarkSamurai « Sun 12:22 pm »
I have heard "Yob tvou mat’ " from character in Metal Gear Rising
@ tengg « Sun 12:21 pm »
sukablyat and babushka are the only words foreigners do really know in Russian :geek:
@ tengg « Sun 12:20 pm »
babushka
@ DarkSamurai « Sun 12:20 pm »
lol
@ DarkSamurai « Sun 12:20 pm »
Sake katana sakura
@ tengg « Sun 12:20 pm »
SUKABLYAT

Who is chatting