OBD:ONCC

From OniGalore
Revision as of 07:35, 27 May 2007 by Loser (talk | contribs) (correction of mistakes 2nd part)
Jump to navigation Jump to search
ONI BINARY DATA
OFGA << Other file types >> ONCP
ONCC : Oni Character Class
Character file
Struct def for OUP
Overview @ Oni Stuff
TXT overviews (672 kB each) :
"," decimals or "." decimals

0x00 - 0x27

The examples provided are konoko_generic.ONCC from level3_Final

Offset Hex Translation Meaning
0x00 01 DF 03 00 991 00991-konoko_generic.ONCC
0x04 01 00 00 06 3 level 3
0x08 CD CC 0C 3F 0.550000 downwards velocity? (unknown, always 0.55)
0x0C 8F C2 75 3D 0.060000 downward gravity acceleration
0x10 CD CC 8C 3F 1.100000 starting velocity for a simple (tap) JUMP
0x14 00 00 80 C0 -4.000000 limit velocity for jumping and gravity flight
0x18 8F C2 F5 3C 0.030000 upward acceleration (jetpack) if you hold JUMP
0x1C 07 00 7 gravity timer? (unknown, always 7)
0x1E 14 00 20 jetpack timer; time during which you can use the jetpack
0x20 00 00 34 42 45.000000 maximal falling height without damage
0x24 00 00 07 43 135.000000 maximal falling height with damage
Units
times are in frames
heights are in world units
velocities are in world units per frames
accelerations are in world units per frames squared
Downwards velocity
could correspond to the steady push experienced when neither jumping nor falling
would be roughly equivalent to the starting velocity of a fall
although the value .55 seems right, the "sinking" seems to be hardcoded now
Gravity timer
Seems to be hardcoded now (could be the time until gravity switches on)
Jetpack timer
You can press JUMP multiple times during the time window (quite fun!)
Falling height
let FH1 be the height at 0x20
let FH2 be the height at 0x24
let BH be the base health of the character
let FH be the actual falling height
then, if FH > FH2, the character is killed
if FH < FH1, the character takes no damage
if FH1 < FH < FH2, the character takes damage (FH - FH1) / (FH2 - FH1) * BH

0x28-0x4B

0x28 01 F8 03 00 1016 link to 01016-shadow1.TXMP
0x2C 00 00 40 41 12.000000 height where the shadow fades out completely
0x30 00 00 00 41 8.000000 height where the diameter of the shadow decreases and the shadow fades out half
0x34 00 00 C0 40 6.000000 height where the diameter of the shadow decreases
0x38 00 00 90 40 4.500000 height where the diameter of the shadow decreases
0x3C 00 00 40 40 3.000000 height where the diameter of the shadow decreases
0x40 30 00 48 transparency of the shadow for the first part of a jump
0x42 30 00 48 transparency of the shadow for the second part of a jump
0x44 00 00 C8 41 25.000000 unknown; always the same
0x48 16 22 unknown
0x49 06 6 unknown; always the same
0x4A AD DE dead blank filler (always there)

0x4C-0x67

0x4C 00 00 20 42 40.000000 unknown; always the same
0x50 00 00 96 43 300.000000 unknown; always the same
0x54 35 FA 8E 3C 0.017453 unknown; always the same
0x58 DB 0F C9 3F 1.570796 unknown; always the same
0x5C 00 00 A0 40 5.000000 unknown; always the same
0x60 00 00 80 3F 1.000000 unknown; always the same
0x64 06 00 6 (inverse) hypo regeneration rate in frames per hitpoint
0x66 AD DE dead blank filler (always there)
Hypo regeneration
1 hitpoint per 6 frames is 10 hitpoints per second
(same setting for all characters)

0x68-0x91

0x68 00 10 3D 48 193600.000000 unknown; always the same
0x6C 00 10 3D 47 48400.000000 unknown; always the same
0x70 00 10 3D 46 12100.000000 unknown; always the same
0x74 00 00 00 00 0.000000 unknown; always the same
0x78 00 00 00 00 0.000000 unknown; always the same
0x7C 23 00 35 unknown; always the same
0x7E 5A 00 90 unknown; always the same
0x80 0F 00 15 unknown; always the same
0x82 78 00 120 unknown; always the same
0x84 23 00 35 unknown; always the same
0x86 01 00 1 unknown; always the same
0x88 02 00 2 unknown; always the same
0x8A 64 00 100 unknown; always the same
0x8C 0A 00 10 unknown; always the same
0x8E 0C 00 12 unknown; always the same
0x90 16 00 22 unknown; always the same

0x92-0x127

0x92 00 0 runtime only: if 1 sound pointers have been set
0x93 DE dead blank filler (always there)
0x94 00 00 00 3F 0.500000 unknown; always the same (sound volume?)
0x98 konoko_hurt_light
+ null char + blank filler
hurt light sound
(08121-konoko_hurt_light.imp.OSBD of level 0)
0xB8 konoko_hurt_medium
+ null char + blank filler
hurt medium sound
(08123-konoko_hurt_medium.imp.OSBD of level 0)
0xD8 konoko_hurt_heavy
+ null char + blank filler
hurt heavy sound
(08119-konoko_hurt_heavy.imp.OSBD of level 0)
0xF8 konoko_death
+ null char + blank filler
death sound
(08115-konoko_death.imp.OSBD of level 0)
0x118 00 00 00 00 0 runtime only: pointer to hurt light sound
0x11C 00 00 00 00 0 runtime only: pointer to hurt medium sound
0x120 00 00 00 00 0 runtime only: pointer to hurt heavy sound
0x124 00 00 00 00 0 runtime only: pointer to death sound

0x128-0x137

0x128 17 00 00 00 23 general AI options; see below
0x12C 00 00 80 3F 1.000000 AI rotation speed factor
0x130 06 00 6 minimal fallen time; (???number of frames???time in miliseconds???) for which AI remains in *fallen* position when it is knockdowned
0x132 18 00 24 maximal fallen time; (???number of frames???time in miliseconds???) for which AI remains in *fallen* position when it is knockdowned
0x134 0F 00 15 minimal realize firingspread time; (???number of frames???time in miliseconds???) after which AI realizes that it is in the firing spread (and it starts dodging)
0x136 00 00 0 maximal realize firingspread time; (???number of frames???time in miliseconds???)
AI rotation speed factor
reference rotation speed is about 1 turn (360�) per second
the setting is only effective if the AI is in control
so it's a bit like the AI's mouse sensitivity :)
General AI options

maybe it affects more things but I know only these: startle animation play (yes/no), gunfire dodge (of yourse there has to be firing spread) when melee (yes/no) or when armed (yes/no), ability of backfire when dodging and have weapon (I knew it was somewhere mwhaha ^_^), maybe affects if AI tends to run TO firing enemy while dodging or AWAY from firing enemy (not sure).

none unknown
01 unknown
02 civmale, civfemale - startle anim is played, gunfire dodge when melee, low chance to go for gun, no running gun pickup
03
04
05
06 mad_bomber -
07 TCTF_swat_blackops -
08
09
0a thugs, security_guard, striker_easy/med, tanker_easy/med/hard, elite_easy/med/hard, Copmale, TCTF_swat_1 -
0b sniper_generic -
0c
0d
0e
0f
10 barabus -
11
12
13
14
15
16 comguy, TCTF_lite_blackops, red_easy/med/hard -
17 Konokos, griffin_generic, griffin_swat, super_ninja -
18
19
1a TCTF_lite_1, Copfem, striker_hard -
1b ninja_easy/med/hard -

0x138 - 0x15B

0x138 00 00 80 3F 1.000000 minimal firingspread dodge amount; IMO similar to maneouvre variable, it tells AI how long it should perform dodging/hiding in response to some time spent inside firing spread (so setting this very high means that once enemy starts dodging/hiding, he will perform it even after firing spread disappears)
0x13C 00 00 80 3F 1.000000 maximal firingspread dodge amount; IMO similar to maneouvre variable
0x140 00 00 00 3F 0.500000 unknown; always the same
0x144 00 00 C8 41 25.000000 unknown; always the same
0x148 00 00 80 3F 1.000000 unknown;
0x14C 00 00 00 00 0 unknown
0x150 05 00 00 00 5 unknown
0x154 0F 00 00 00 15 unknown
0x158 3C 00 00 00 60 unknown

0x15C - 0x293

SHOOTING SKILLS

These can be reviewed with e.g. ai2_skill_select konoko_generic w1_tap and then either ai2_skill_show (prints to console) or ai2_skill_save (prints to file)

Fields
recoil compensation amount, between 0 and 1 (float)
best aiming angle, in radians (float)
shot grouping error (float)
shot grouping decay (float)
shooting inaccuracy multiplier (float)
minimum delay between shots, in frames (short)
maximum delay between shots, in frames (short)

The first weapon (weapon 0) is not in the game anymore, whatever that was. Muro's thunderbolt is handled as animation-bound particles, although it used to be handled as a weapon (same for Mukade's ball, except w10_sni is still available) (w12_ba2 and w11_ba1 are a bit mixed up : the beam is made of w12_ba2 particles, and the grenade is a w11_ba1 particle...)

See screenshot for the raw hex (example is konoko_generic from level3_Final)

Weapon Offset recoil bestangle error decay inaccuracy delays
w0_sec 0x15C/0x173 0.0 0.000000 0.00 1.0 1.0 0 - 0
w1_tap 0x174/0x18B 0.0 0.000000 0.40 0.4 0.0 30 - 45
w2_sap 0x18C/0x193 0.3 0.013962 0.13 1.0 1.0 0 - 0
w3_phr 0x194/0x20B 0.3 0.010472 0.05 0.5 1.0 0 - 0
w4_psm 0x20C/0x213 0.3 0.015707 0.03 0.2 1.0 0 - 0
w5_sbg 0x214/0x22B 0.3 0.001745 0.00 0.1 1.0 0 - 0
w6_vdg 0x22C/0x233 0.3 0.001745 0.13 0.9 1.0 0 - 0
w7_scc 0x234/0x24B 0.3 0.001745 0.05 0.1 1.0 0 - 0
w8_mbo 0x24C/0x253 0.3 0.005236 0.01 0.5 1.0 0 - 0
w9_scr 0x254/0x26B 0.3 0.010472 0.04 0.5 1.0 0 - 0
w10_sni 0x26C/0x273 0.0 0.000000 0.00 1.00 1.00 0 - 0
w11_ba1 0x274/0x28B 0.0 0.000000 0.00 1.0 1.0 0 - 0
w12_ba2 0x28B/0x293 0.0 0.000000 0.00 1.0 1.0 0 - 0

0x294 - 0x2AF

0x294 5A 00 00 00 90 unknown; always the same
0x298 F0 00 00 00 240 unknown; always the same
0x29C B4 00 00 00 180 unknown; always the same
0x2A0 28 00 00 00 40 unknown; always the same
0x2A4 37 00 00 00 55 go for gun chance (55%); determines possibility that AI will run to some weapon and take it; can be checked in devmode by *debug_gun_behavior* command
0x2A8 3C 00 00 00 60 running pickup chance (60%); this value is possibility of AI running weapon pickup (acrobatics, slides) instead of normal "stop->pickup";this is calculated AFTER engine decides that AI should run for weapon
0x2AC 00 00 0 CMBT profile ID; for example it is *0D* for Mutant Muro
0x2AE 16 00 22 MELE profile ID;

0x2B0-0x3FB

0x2B0 64 100 "taunt" sound slot is used
0x2B1 00 0 "alert" sound slot is empty
0x2B2 00 0 "startle" sound slot is empty
0x2B3 00 0 "checkbody" sound slot is empty
0x2B4 00 0 "pursue" sound slot is empty
0x2B5 00 0 "cower" sound slot is empty
0x2B6 64 100 "superpunch" sound slot is used
0x2B7 64 100 "superkick" sound slot is used
0x2B8 00 0 "super3" sound slot is empty
0x2B9 00 0 "super4" sound slot is empty (always the same)
0x2BA 00 00 0 probably a blank filler (always the same)
0x2BC c17_99_28konoko "taunt" sound (04760-c17_99_28konoko.aif.SNDD of level 0)
0x2DC not used "alert" sound
0x2FC not used "startle" sound
0x31C not used "checkbody" sound
0x33C not used "pursue" sound
0x35C not used "cower" sound
0x37C c18_79_14konoko "superpunch" sound (04766-c18_79_14konoko.aif.SNDD of level 0)
0x39C c18_79_15konoko "superkick" sound (04767-c18_79_15konoko.aif.SNDD of level 0)
0x3BC not used "super3" sound (only the superninja uses this slot)
0x3DC not used "super4" sound (never used in Oni)

0x3FC

00 80 ED 43 475.000000 central vision field range; you can make it visible with the script command ai2_showvision = 1 (light blue one)
00 00 16 43 150.000000 peripheral vision field range; you can make it visible with the script command ai2_showvision = 1 (dark blue one)
7D 1B 44 3F 0.766044 horizontal angle between two couples of "eye-rays" (one couple is left, one if right eye). Works for both vision fields.
F3 B3 51 3F 0.819152 vision field curve for central vision field; vision field looks like something between cone and cylinder. This value affect central angle of that. The higher this value is, the more is this field wrapped in order to achieve shaper angle. When set lower, vision field unwraps totally and it looks like radar antenna ^_^, attached to character by two couples of straight strings(one couple left, one right).
E8 D5 12 3F 0.573576 vertical angle between eye-rays in one couple; this is for central vision field
D5 D0 31 3E 0.173648 vision field curve for peripheral vision field
6B 61 D8 BE 0.422618 vertical angle between eye-rays in one couple; this is for peripheral vision field
B4 00 00 00 180 hostilethreat definite timer; how long will AI know exactly where its enemy is even if it can't see him with central vision-field; AI attacks him; can be checked by *ai2_report_verbose* command (this command causes random crashes, beware)
84 03 00 00 900 hostilethreat strong timer; how long will AI remain in strong feeling that there is the enemy, but will not attack him but investigate; can be checked by *ai2_report_verbose* command
10 0E 00 00 3600 hostilethreat weak timer; how long will AI remain in weak feeling of an enemy, just looking around aimlessly (Glance pursue mode); can be checked by *ai2_report_verbose* command
10 0E 00 00 3600 definite timer; how long will AI remain in definite mode overall; AI can be in definite mode but have definite, strong or weak hostilethreat for some enemy; it seems to determine pursue mode; can be checked by *ai2_report_verbose* command
50 46 00 00 18000 strong timer; how long will AI remain in strong mode overall; can be checked by *ai2_report_verbose* command
A0 8C 00 00 36000 weak timer; how long will AI remain in weak mode overall; can be checked by *ai2_report_verbose* command
00 00 80 3F 1.000000 earshot radius; defines size of the sound-collision sphere around AI
01 FB 03 00 1019 link to 01019-konoko.ONCV : defines variants and upgrades
01 F9 03 00 1017 link to 01017-.ONCP : lists the particles available for this character (trails, flashes, etc)
01 FA 03 00 1018 link to 01018-.ONIA : lists the special impact sounds (used for special combat moves)
00 00 00 00 0 unknown; always the same
Light modifier; either hardcoded or defunct (only visible in pm_mod_type.WMM_, level 0)
edit: WMDD says: Effects found for Impact x on Material y with Modifier: pm_mod_types
Footstep_Walk walk impact (04124-Footstep_Walk.Impt of level 0); always the same;
without the impacts you can't hear the steps of a character
FF FF 65535 unknown; always the same
Footstep_RunMain run impact (04129-Footstep_RunMain.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Footstep_Crouch crouch impact (04123-Footstep_Crouch.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Fall_Slide fall slide impact (04122-Fall_Slide.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Fall_Land fall land impact (04119-Fall_Land.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Fall_LandHard land hard impact (04120-Fall_LandHard.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Fall_Knockdown fall knockdown impact (04118-Fall_Knockdown.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Fall_Knockdown fall knockdown impact (04118-Fall_Knockdown.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Fall_Knockdown fall knockdown impact (04118-Fall_Knockdown.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Footstep_Turn turn impact (04135-Footstep_Turn.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Footstep_RunStart run start impact (04131-Footstep_RunStart.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Footstep_SingleStep single step impact (04134-Footstep_SingleStep.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Footstep_RunStop run stop impact (04133-Footstep_RunStop.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Footstep_WalkStop walk stop impact (04137-Footstep_WalkStop.Impt of level 0); always the same
FF FF 65535 unknown; always the same
Footstep_RunSprint run fast impact (04130-Footstep_RunSprint.Impt of level 0); always the same
FF FF 65535 unknown; always the same
00 00 0 unknown; always the same
not used special death particles; only the mad bomber use it
00 00 00 00 0 unknown; always the same
00 00 00 00 0 unknown; always the same
01 E6 03 00 998 link to 00998-konoko_body_high.TRBS
01 E7 03 00 999 link to 00999-konoko002_high_texture_generic.TRMA
01 E8 03 00 1000 link to 01000-.CBPM
01 EC 03 00 1004 link to 01004-.CBPI
2C 01 00 00 300 fight mode timer in 1/60 seconds
30 75 00 00 30000 1st idle animation timer in 1/60 seconds (Thanks to Loser for this info.)
30 75 00 00 30000 2nd idle animation timer in 1/60 seconds (Thanks to Loser for this info.)
C8 00 00 00 200 basic health of the character model; extra health informations for every unique character you'll find in the Character.BINA file
48 00 00 00 72 unknown; always the same
00 00 80 3F 1.000000 minimal body size factor (Thanks to geyser for this info.)
00 00 80 3F 1.000000 maximal body size factor (Thanks to geyser for this info.)
00 00 00 00 0.000000 unknown; always the same
00 00 00 00 0.000000 unknown; always the same
00 00 00 3F 0.500000 unknown
00 00 80 3E 0.250000 unknown
00 00 00 00 0.000000 unknown; always the same
00 00 00 00 0.000000 unknown; always the same
00 00 00 00 0.000000 unknown; always the same
00 00 00 3F 0.500000 unknown
01 F6 03 00 1014 link to 01014-konoko_animations.TRAC
01 F7 03 00 1015 link to 01015-konoko_screens.TRSC
1E 00 30 unknown; always the same
00 00 0 time between death and deletion, in frames (about 3 seconds for mad bomber)
00 0 unknown
01 1 unknown
00 0 unknown
00 0 unknown
AD DE AD DE dead not used; always the same
Last 4 bytes before the blank filler
Something to do with left-hand/right-hand aiming (must be consistent with TRSC link)



Overview table

Maybe split it up and insert the pieces after every section's header.

oncc_a.gif


oncc_m.gif


oncc_e.gif




ONI BINARY DATA
OFGA << Other file types >> ONCP
ONCC : Oni Character Class