gta-worldmods.de/forum (http://www.gta-worldmods.de/forum/index.php)
- Grand Theft Auto - San Andreas (http://www.gta-worldmods.de/forum/board.php?boardid=3)
-- Modding Showrooms & Editing Fragen (http://www.gta-worldmods.de/forum/board.php?boardid=7)
--- IDE Flagvalue Decoding Project (http://www.gta-worldmods.de/forum/thread.php?threadid=3382)


Geschrieben von Aschratt am 22.04.2007 um 16:48:

Lampe IDE Flagvalue Decoding Project

GERMAN VERSION
(scroll down for the english version)


Aus dem Grund, dass es in der IDE jede Menge unbekannte Flagwerte gibt haben AMD und Ich uns entschlossen diese zu entschlüsseln.

Dazu habe ich ein kleines Tool geschrieben, was die Flagwerte umrechnet und somit kann man versuchen herauszufinden, wozu bestimmte neue Flagwerte (Die in SA nicht verwendet wurden) da sind.

Einige konnten wir schon definitiv festlegen.

1. Generelles Verständniss

Flag IDs in San Andreas sind meistens Unsigned Integers.
Also vorzeichenlose Ganzkommazahlen (1, 2, 3, 4, ...)

Bei einer Anzahl von über 16 Flags kann man von einem UInt32 ausgehen, also einer vorzeichenlosen Ganzkommazahl, welche in Dualschreibweiße 32 Stellen hat.

Um das zu verstehen empfehle ich folgende Links:

http://de.wikipedia.org/wiki/Dualsystem
http://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm

Ihr müsst jetzt nicht erschrecken, aber um zu verstehen wie das Ganze funktioniert ist es wichtig, dass ihr wisst wie San Andreas das interpretiert.

Kurzes Beispiel:
Die Zahl 2 (Windowstaschenrechner => Umrechnen) in Dualcode 10.

Wir gehen aber von 32 Stellen aus, also werden vorne 30 0en hinzugefügt

00000000000000000000000000000010

1 = Flag gesetzt,
0 = Flag nicht gesetzt.

So behandelt San Andreas die Flags. Umrechnen (Intern, also nich mit dem Taschenrechner ^^), und kucken wo eine 1 steht.

Flagwerte lassen sich also überlagern, wenn man mehrere Bits (Stellen der Dualzahl) 1 setzt.

(In dem beispiel haben wir das Flag TOBJ Night Flag aktiviert.)

Bisher sind alle Flags von der Stelle 21 bis 32 bekannt oder zumindestens in ihrer Bedeutung annähernd entschlüsselt.

Aber demzufolge fehlt ein Großteil der Flags, und um allen Moddern zu helfen wollen wir den Anstoß geben ein wenig selbst in der "GTA-Forschung" tätig zu werden.

2. Von uns bereits Entschlüsseltes

Es ist allerdings auch bekannt, dass Garagentore, um sich zu bewegen einen Flagwert von 2048 haben müssen.

2048 in Dual = 00000000000000000000100000000000

Das heißt also es gibt Flagwerte außerhalb des bekannten Bereichs (Bäume und Laternen sind auch interessant)

Bis jetzt haben wir folgendes Endeckt:

2048 = Garade Door Flag
2097152 = Disable Backface Culling (0000000001000000000000000000000)

und schließlich

1048576 = Graffity Flag (0000000000100000000000000000000)

Pics Vorher:


Pics Nachher:


(By AMD)

Spätestens bei den letzten beiden Flags scheint klar zu werden, dass alles einfacher zu verstehen ist, wenn man die zahl in Binärcode (= Dualcode) umrechnet.

3. Tabelle der Flagwerte:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
0000000000000000000000000000001 = 1 - Objekt wird dunkler (Nass-Effekt/Regen-Effekt)
0000000000000000000000000000010 = 2 - Time Object Night Flag
0000000000000000000000000000100 = 4 - ALPHA Transparency 1
0000000000000000000000000001000 = 8 - ALPHA Transparency 2 *
0000000000000000000000000010000 = 16 - Time Object Day Flag
0000000000000000000000000100000 = 32 - Interior-Objekt **
0000000000000000000000001000000 = 64 - Deaktivert Shadow Mesh der Coll (?)
0000000000000000000000010000000 = 128 - Deaktiviert Collision-Mesh (?)
0000000000000000000000100000000 = 256 - Disable Draw Distance (?)
0000000000000000000001000000000 = 512 - Zerstörbares Glas **
0000000000000000000010000000000 = 1024 - Zerstörbares Glas mit vorherigem knacken **
0000000000000000000100000000000 = 2048 - Garagentor ** 
0000000000000000001000000000000 = 4096 - Dual-Clump ** (Ändert Clump von 2 zu 1 nach Kollision) 
0000000000000000010000000000000 = 8192 - Small Vegetation (?)
0000000000000000100000000000000 = 16384 - Standart Vegetation ** (Topfpflanzen) (?)
0000000000000001000000000000000 = 32768 - Beachte Timecyc.dat PoleShadow Flag
0000000000000010000000000000000 = 65536 - Objekt ist Explosiv **
...
0000000000100000000000000000000 = 1048576 - Grafitty Flag 
0000000001000000000000000000000 = 2097152 - Disable Backface Culling  
...
1000000000000000000000000000000 = 1073741824 - Unbekannt

* Textur wird schwarz, wenn kein Interior (=> IPL | Interior-wert)
** Objekte müssen in der Objects.dat definiert werden, damit Flags wirken.
(?) Vermutetes Flag
... Alle Flags in dem Intervall unbekannt


Modder, die Flags endeckt haben:
- AMD (Texturdeaktivierung, Garagentor)
- oCain (2-Seiten Textur)
- Aschratt (2Clump-Object, Graffity Flag, Explosive-Flag, Vegetationsflags 1 + 2, Generical Flag, Use timecyc PoleShadow Flag)

4. Das Vorhaben:

Es ist klar, dass viele Flagwerte für spezifische Fälle eingebaut worden sind, und evtl. im Spiel nie genutzt wurden. Aber das hindert uns nicht daran deren evtl. fantastische Wirkung herauszufinden. klar ist auch, dass wir es nicht Alleine schaffen werden, und darum ist jeder Modder aufgerufen mitzuhelfen.
Bitte postet einen screen und den Flagwert solltet ihr etwas herausgefunden haben.

Ich habe mein kleines Tool dazu unten angehangen und werde versuchen es auf dem neusten Stand zu halten.

Bitte gebt den Link des Threads auch weiter, damit wirklich ein paar gute Modder mitmachen. Denn dieses Projekt dient der ganzen Moddingszene!

5. Tools:



In dem Sinne... Happy Modding (Ich würde mich über Beteiligung freuen!) victory

6. Addys:

[22.04.2007]ID Calculator Updatet
[23.04.2007]Modderlist added
[24.04.2007]Aschratt descovered 2-Clump Objects
[24.04.2007]No Texture => Graffity
[24.04.2007]Added Vegetationsflags 1 + 2, Generic Flag, Explosive Flag
[20.10.2007]Update LOG: 2-Sifde Texture => Disable Backface Culling | Error Correction


ENGLISH VERSION



Because of the reason that there are many unknown IDE Flagvalues AMD and I decide to start a project to discover the unknowns.

For that I codet a little tool, which calculates binary Flagvalues in to decimal ones. So you are able to find out for what flagvalues (even those never used in SA) are standing for.

For some we can 100 percently which effect they got.

1. General Stuff

Flag ID`s in San Andreas are nearly allways unsigned integers (1, 2, 3, 4,...)

If you got more that 16 Flags you can say that thfe flags are from type UInt32. That means its an unsigned integer which has 32 zeros and ones as binary code.

To understand the Dualcode I suggest you have a look at those pages: (German, but usefull xD)

http://de.wikipedia.org/wiki/Dualsystem
http://www.arndt-bruenner.de/mathe/scripts/Zahlensysteme.htm

You don`t need to know all mathmatical rules of that, but to understand how San Andreas interprets this stuff you need to know how it works in general.

Small Example:
The number 2 (Windows calculator => calculate to dual) as binary is 10.

But UInt32 needs to have 32 bits, so we add 30 zeros at the front.

00000000000000000000000000000010

1 = Flag set,
0 = Flag not set.

This is how SA knows about the used Flags. Calculate it to dualcode and look where a 1 is locatet. (With number 2 you activate TOBJ Night Flag)

More than one flagvalue(s) can be added if you set more bits to 1.

Till today nearly all Flagvalues from bit 21 - 32 are known.

But this means that Bits 1 - 20 are missing. To change this we will give you the possibillity to do something for the whole scene, by coding the little calculator (Added at the end of the page)

2. What we already found out.

But it`s also known that Garagedoors needs a Flagvalue of 2048 to move.

2048 in Dual = 00000000000000000000100000000000

That means that there MUST be flagvalues over 2048.

For now we could discover those values:

2048 = Garade Door Flag
2097152 = Disable Backface Culling (0000000001000000000000000000000)

and at least:

1048576 = Graffity Flag (0000000000100000000000000000000)

Pics: (Standart)


Pics: (With new Flags)


(By AMD)

Now you should understand that it is easier to see the Flags as binary numbers.

3. Table of Flags:

code:
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
27:
0000000000000000000000000000001 = 1 - Wet Effect
0000000000000000000000000000010 = 2 - Time Object Night Flag
0000000000000000000000000000100 = 4 - ALPHA Transparency 1
0000000000000000000000000001000 = 8 - ALPHA Transparency 2 *
0000000000000000000000000010000 = 16 - Time Object Day Flag
0000000000000000000000000100000 = 32 - Interior-Objekt **
0000000000000000000000001000000 = 64 - Disable Shadow Mesh (?)
0000000000000000000000010000000 = 128 - Disables Collision Mesh (?)
0000000000000000000000100000000 = 256 - Disable Draw Distance (?)
0000000000000000000001000000000 = 512 - Breakable Glas **
0000000000000000000010000000000 = 1024 - Breakable Glas with crack **
0000000000000000000100000000000 = 2048 - Garagedoor ** 
0000000000000000001000000000000 = 4096 - 2-Clump-Object ** (Switches from Clump 2 to 1 after Collision)
0000000000000000010000000000000 = 8192 - Small Vegetation (?)
0000000000000000100000000000000 = 16384 - Standart Vegetation **  (Palms in Hotels, etc.) (?)
0000000000000001000000000000000 = 32768 - Use timecyc PoleShadow Flag
0000000000000010000000000000000 = 65536 - Explosive-Flag **
...
0000000000100000000000000000000 = 1048576 - Graffity Flag 
0000000001000000000000000000000 = 2097152 - Disable Backface Culling 
...
1000000000000000000000000000000 = 1073741824 - Unknown

* If theres no Interior the Texture behind the object changes to black (=> IPL | Interior-value)
** Objects needs to be activatet using Object.dat
(?) Not 100 % known
... All Flags in a special intervall are unknown


Modder, who discovered Flags:
- AMD (Disable Texture, Garagedoor)
- oCain (2-Site Texture)
- Aschratt (2Clump-Object, Graffity Flag, Explosive-Flag, Vegetationsflags 1 + 2, Generical Flag, Use timcyc PoleShadow Flag)

4. The Project:

We know that there are Values, which are just there for special things, which are never used in the game. But this wont stop us discovering their fantastic effects. But we also know that we are not able to manage this alone, And thats why we want as much modders to help us!
Please post your new found flagvalues if you got new ones.

Ive added my tool for this and try to keep it up to date!

Please send this link to good modders, cause its a project for the whole scene!

5. Tools:



Happy Modding... Yours Aschratt! victory

6. Addys:

[22.04.2007]ID Calculator Updatet
[23.04.2007]Modderlist added
[24.04.2007]Aschratt descovered 2-Clump Objects
[24.04.2007]No Texture => Graffity
[24.04.2007]Added Vegetationsflags 1 + 2, Generic Flag, Explosive Flag
[20.10.2007]Update LOG: 2-Side Texture => Disable Backface Culling | Error Correction
[01.06.2007]Added "Use timecyc PoleShadow Flag"



Geschrieben von -Ironfist- am 22.04.2007 um 20:11:

 

man auf sowas hab ich gewartet endlich kann ich n normales plane also von 2 seiten texturieren,wenn ich das damit richtig interpretiere,oder?



Geschrieben von Aschratt am 22.04.2007 um 20:39:

 

Du texturierst dein Plane auf einer seite und wenn du dem Objekt in GTA den Flagparam gibst, dann is die tex auch auf der anderen seite. Wenn ALPHA Transparenz an ist, wird die auch gespiegelt.

In VC ging das automatisch! Aber in SA mit dem Parameter! victory

//EDIT: Beispiel:

Standart: (Ohne neuen param)



Mit Param:



(by Chris Benoit)



Geschrieben von -Ironfist- am 22.04.2007 um 20:42:

 

danke noml fürs tut,jetz kann isch vlt endlich n ordentlichen baum modeln,ohne das die polys enormin die höhe schießen^^



Geschrieben von JKM am 23.04.2007 um 22:31:

 

Hm ich habe was interessantes herausgefunden^^

2097156 habe ich gerade entdeckt und dieser flag ist auch für das 2 seitige Rendern verantwortlich! Konntet ihr bei eurem eine Bewegung feststellen, wenn ein Hubschrauber in der Nähe war?



Geschrieben von Sonny-Black am 24.04.2007 um 13:44:

 

kurze Frage:

Gibts sowas auch für die Fahrzeuge, also, dass z.B. eine Textur beidseitig angezeigt wird.
Denn bei Fahrzeugen ist es z.B. immer so, dass wenn die Light-Dummys leuchten, manche Sachen nur noch einseitig angezeigt werden.
Bei den Scheiben und Fenstern kann man das am besten sehen.



Geschrieben von Aschratt am 24.04.2007 um 15:02:

 

Wie es bei Fahrzeugen geht weiß ich nicht.
(Hab noch nie n car konvertiert lachen )
Die vehicle.ide ist hat so was nicht (dachte ich). Bin mir da nich ganz sicher. Ich hab aber auch manchmal den Bug, dass bei einer NRG-500 von innen die kleine Scheibe vorn durchsichtig (ohne tex) und manchmal mit ist!

@JKM... dein Flag hab ich mal untersucht.

Es ist der selbe 2-Seiten Flag wie oben schon genannt, nur dass dazu halt noch die ALPHA Transparenz an ist, also so:

ALPHA: 0000000000000000000000000000100 = 4
2SideTex: 0000000001000000000000000000000 = 2097152

Dein Flag (Kombi): 0000000001000000000000000000100 = 2097156

Das sich bäume im Wind bewegen kann man in der Object.dat festlegen.
(Könnte man auch mit Hochhäußern machen, sieht bestimmt lustig aus ^^ )

//EDIT: yahoo Grad nen neuen Flagwert endeckt...

DestroyableObject: 0000000000000000001000000000000 = 4096

Zusammenhang mit Object.Dat muss noch geprüft werden, aber es hat den anschein, als ob dieser Flag bewirken würde, dass Standartmäßig Clump-Modell 2 geladen wird, aber wenn man dagegenfährt Clump-Modell 1 geladen wird.

Beispiele: bar_barrier12, bar_barriergate1, bar_barrier10b, bar_barrier10, lhouse_barrier2, bar_barrier16, lhouse_barrier1, lhouse_barrier3, Gdyn_barrier17

Außerdem stimmen die Flags TOBJ D und N doch.

//EDIT2:
hab nen Unbekannten Flag an dem objekt "pleasure-DL" endeckt, aber kA was der bezwecken soll... what

262144 Das is der zaun in Jizzys Puff (und die lampen sind auch mit dran)

4194304 sind irgendwelche statuenteile (In der mission wo man das drive by mit Sweet macht, wo die schieserei am anfang ist, in diesem haus)

131072 hat die Ammobox, die man Ryder in der einen Mission vom Zug zuwerfen kann, oder die man aus dem Haus des einen Alten typen klauen muss, und ein Lüftungsgitter.

Und dann hab ich grad noch endeckt dass der polizist denn man ins wasser werfen muss auch so n ding hat. Scheint als wäre es wirklich n SCM Flag!



Geschrieben von Ganbada am 07.03.2008 um 19:29:

 

kann das sei das dieses flag bewirgt das man das object aufheben kann?



Geschrieben von Aschratt am 09.03.2008 um 10:50:

 

nein, das macht ein OpCode und, wenn ich mich nicht ganz täusche ein object.dat Eintrag.

code:
1:
08E9: set_object $MY_SCRIPTED_OBJECT liftable 1



Geschrieben von Ganbada am 09.03.2008 um 11:51:

 

aha k ^^ gut zu wissen ^^



Geschrieben von PARADOXON am 17.08.2008 um 14:55:

 

Ich hab mal den FlagRechner nachgebastelt,
aber mit ein Zusatz, denn ich wollte auch gern wissen
was das Objekt hat und in KartenEditor sind ja nicht alle Flags drinn die es geben koennte.
Deshalb hab ich noch ein Flag-RueckRechner eingebaut, der den kompletten FlagWert wieder in Sichtbares umwandelt...
Gebe bei Dezimale Eingabe den Flagwert des Objekts ein,
denn auf Berechnen und denn siehst du was alles angeklickt wurde.


Mirror#1
Objekt-IDE KennzeichenRechner

Mirror#2
Objekt-IDE KennzeichenRechner

...Gruesse°°°°°°°°°


Forensoftware: Burning Board, entwickelt von WoltLab GmbH