OBD:ONCC
Main Page >> Oni Binary Data >> File types >> ONCC
| ONCC : Oni Character Class | 
|---|
| Character file | 
| The example provided is konoko_generic.ONCC from level3_Final | 
0x00-0x27
| 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 | unknown; always the same (affects midair control? probably not) | 
| 0x0C | 8F C2 75 3D | 0.060000 | downward gravity acceleration | 
| 0x10 | CD CC 8C 3F | 1.100000 | height prefactor for the simple jump (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 during a jump (hold JUMP) | 
| 0x1C | 07 00 | 7 | unknown; always the same (similar to 0x1E ?) | 
| 0x1E | 14 00 | 20 | affects the length of the dashing jump | 
| 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
 - heights are in world units
 - velocities are in world units per frames
 - accelerations are in world units per frames squared
 - 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-0x93
| 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 | 00 | 0 | unknown; always the same | 
| 0x93 | DE | dead | blank filler (always there) | 
0x94-0x117
| 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-0x137
| 0x118 | 00 00 00 00 | 0 | unknown; always the same | 
| 0x11C | 00 00 00 00 | 0 | unknown; always the same | 
| 0x120 | 00 00 00 00 | 0 | unknown; always the same | 
| 0x124 | 00 00 00 00 | 0 | unknown; always the same | 
| 0x128 | 17 00 00 00 | 23 | unknown | 
| 0x12C | 00 00 80 3F | 1.000000 | AI rotation speed factor | 
| 0x130 | 06 00 | 6 | unknown | 
| 0x132 | 18 00 | 24 | unknown | 
| 0x134 | 0F 00 | 15 | unknown | 
| 0x136 | 00 00 | 0 | unknown; always the same | 
- 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 :)
 - (thanks to Loser)
 
0x138 - 0x15B
| 00 00 80 3F | 1.000000 | unknown | 
| 00 00 80 3F | 1.000000 | unknown | 
| 00 00 00 3F | 0.500000 | unknown; always the same | 
| 00 00 C8 41 | 25.000000 | unknown; always the same | 
| 00 00 80 3F | 1.000000 | unknown; always the same | 
| 00 00 00 00 | 0 | unknown | 
| 05 00 00 00 | 5 | unknown | 
| 0F 00 00 00 | 15 | unknown | 
| 3C 00 00 00 | 60 | unknown | 
0x15C - 0x293
- Weapon 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) (I'm not sure about what w12_ba2 used to be)
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
| 5A 00 00 00 | 90 | unknown; always the same | 
| F0 00 00 00 | 240 | unknown; always the same | 
| B4 00 00 00 | 180 | unknown; always the same | 
| 28 00 00 00 | 40 | unknown; always the same | 
| 37 00 00 00 | 55 | unknown | 
| 3C 00 00 00 | 60 | unknown | 
| 00 00 | 0 | unknown | 
| 16 00 | 22 | unknown | 
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 | eyeshot; you can make it visible with the script command ai2_showvision = 1 | 
| 00 00 16 43 | 150.000000 | earshot; you can make it visible with the script command ai2_showvision = 1 | 
| 7D 1B 44 3F | 0.766044 | unknown | 
| F3 B3 51 3F | 0.819152 | unknown | 
| E8 D5 12 3F | 0.573576 | unknown | 
| D5 D0 31 3E | 0.173648 | unknown; always the same | 
| 6B 61 D8 BE | 0.422618 | unknown; always the same | 
| B4 00 00 00 | 180 | unknown; always the same | 
| 84 03 00 00 | 900 | unknown; always the same | 
| 10 0E 00 00 | 3600 | unknown; always the same | 
| 10 0E 00 00 | 3600 | unknown; always the same | 
| 50 46 00 00 | 18000 | unknown; always the same | 
| A0 8C 00 00 | 36000 | unknown; always the same | 
| 00 00 80 3F | 1.000000 | unknown; always the same | 
| 01 FB 03 00 | 1019 | link to 01019-konoko.ONCV | 
| 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; you can set all to zero, Oni doesn't need it | 
| 00 00 00 00 | 0 | unknown; always the same | 
| Light | unknown; maybe the weight | |
| 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 | unknown; only the mad bomber use it | 
| 00 | 0 | unknown | 
| 01 | 1 | unknown | 
| 00 | 0 | unknown | 
| 00 | 0 | unknown | 
| AD DE AD DE | dead | not used; always the same | 
Overview table
Maybe split it up and insert the pieces after every section's header.
Copy it to a spreadsheet calculation program like Excel.
Main Page >> Oni Binary Data >> File types >> ONCC File