PRF info

#1
Here's some of the information I've deciphered about PRF files for various parts.
Hopefully, we'll get a PRF generating program put together that uses this info some day,
but you can play around with things manually for now.

ITEMS:
$4c = Sets "linked pedestal" for this Symbol Item (ie $09 here means
‎  ‎  ‎ this Item is key for Pedestal with $09 at $6a in its PRF)


OBJECTS:
$40-$4B - Collision shape size
$40-$44= height
$45-$47= width (or radius)
$48-$4b= length
Common Sizes:
00000000=none
cdcccc3d=.1
0000803f=1
00004040=3
0000a040=5
0000e040=7

$4c-$4f = probably unused.

$50 = Toggle collision data shape - 00= square 01= round
$51 = Toggle moving 2nd texture (like Fountain) - 00= normal, 01= 2nd texture moves

$52 = Object Type
$00 = normal
$0a = Light Source
$14 = Box
$15 = Chest
$16 = Corpse
$28 = Switch

$54-55 = Loads Flame type animation (no motion)=
FFFF= normal (no flame)
0B00= Wall lamp2 flame
oC00= Floor lamp2 flame
3200= wall of light2
3300= wall of light2
3400= Fountain splash
3700= wall of light3
3800= wall of light4
c401= Floor lamp3 flame

$57 = Controls Flame Type Animation speed
(seems to indicate speed? lower value= slower cycle)
00= Off (Normal)
1E= Flame animation normal speed

$6a = Sets Pedestals Symbol Item (ie $09 here means
‎  ‎  ‎ 'Item with $09 at $4c in its PRF is key)

$6B = XY Adjust setting
‎  ‎  ‎  ‎ 00 = disabled
‎  ‎  ‎  ‎ 01 = enabled

Enemy PRFs:
$00-1d = Enemy's name for Parameter Editor
$1f- 3e = Name of enemy's MDL model
$40 = External texture file setting
‎  ‎  ‎  ‎  00= No external texture
‎  ‎  ‎  ‎  01= Has external texture
$41-4e = External texture's name

Enemy's Behavior:
$60 = A split digit code
First digit= movement mode
0= normal movement (falls to floor)
1= Flying, no walk, turn when idle
2= Flying, normal movement
5= Flying, no walk, no turn when idle (Stone face)

Second Digit= enable editor behavior options
0= normal? (Mantis, Slime, Dragon, Goblin1-2)
1= normal? (Zombie1,kobalt,minotaur etc)
2= normal? (Jellyfish, pixie, Phantom)
3= normal? (Worm, Gremlin, StomeFace)
4= enable avoid (Demon1-2)
5= enable avoid (GillMan,Griffon,Lizardman2 etc)
9= enable defend (Golem4-5,Guardian1-3, LizardMan etc))
‎  ‎  ‎  ‎  ‎  ‎ Example: $22 is a flying enemy that walks and turns when standing idle

$61 = 'Trigger' setting - 00= disable, 01= allow

Enemy's Shape:
$64-6f = collision shape
$64-$67 = Collision/hit cylinder height
$68-$6b = Shadow cylinder radius (forces collision shape to enlarge with it)
$6c-$6f = Collision/hit cylinder radius
Common Sizes:
00000000=none
cdcccc3d=.1
0000803f=1
00000040=2
00008040=4
0000c040=6

Enemy Attack Information:
$80 = Direct attack1 1st hit damage timing
$81 = Direct attack1 2nd hit damage timing
$82 = Direct attack1 3rd hit damage timing

$83 = Direct attack2 1st hit damage timing
$84 = Direct attack2 2nd hit damage timing
$85 = Direct attack2 3rd hit damage timing

$86 = Direct attack3 1st hit damage timing
$87 = Direct attack3 2nd hit damage timing
$88 = Direct attack3 3rd hit damage timing
(Note: Need significant time between hits or won't register ie $5)

$90= Number of Direct Attacks available for this model 00= none, 03=three etc
$91= Number of Indirect Attacks available for this model 00= none, 03=three etc
$92-a5 = 1st direct attack name
$a7-ba = 2nd direct attack name
$bc-cf = 3rd direct attack name
$d1-e4 = 1st indirect attack name
$e6-f9 = 2nd indirect attack name
$fb-10d = 3rd indirect attack name


SND file Sounds in Enemy PRFs:
The bytes toward the end of the file select which sound effects are played during an animation. They are listed in the order of their associated animation's number-name. So listed first would be the 'Idle' sound effect (animation set #00) and lastly would be their 'Getting Hit' sound effect (animation set #20).

Some animation sets use multiple sound effects which are listed in sequence. For example, walking uses two separate 'step' sounds and some indirect attacks (spells) play multiple sounds in a row.

The sound effects are listed in 2 bytes that correspond to the SND file's number-name, but the hex number is reversed so '0A 01' in PRF should be read '01 0A' aka $10A = 266 = 0266.snd

There are two bytes of unknown purpose (maybe playback duration) in between each listed SND.

In the attached picture, some of the SND file references are highlighted. The yellow "d5 00" at the very end is the "animation set #20" 'Getting Hit' sound.
Since this enemy only has 2 indirect attacks, the second-to-last SND (pink "37 03") lists the sound for "animation set #16" which is Indirect Attack #2 and so on.

SoM only recognizes SND files numbered 1023 or lower- which is hex value "FF 03" as it would appear when reversed in a PRF file.


Attached Files Thumbnail(s)
   
Reply

#2
Can you alter the collision data in mdls the same way as adjusting hitboxes for enemies?
Reply

#3
Yes, it looks like the collision shape is used for the hit box in SoM.

Attached is a tool that can help figure the numbers used for editing collision size.
To use, enter a number in 'decimal' field. You would enter a 2 for '2 meter collision size' in SoM.
Go to 'data type > real type > float'.
Lastly, push the the 'Mot' button and you'll see the number to enter in the PRF in the 'HEX' field. (Pictures attached).

Also attached is an example using the Spider enemy's PRF. The example shows the collision height, radius and shadow size being changed to 2 meters.

Notes:
If you make the collision too big, the enemy's attack won't reach the player and/or the player won't be able to get close enough to use the truth mirror.
If shadow is bigger than the collision shape, it forces the collision to match its size. So keeping the shadow equal or smaller in size than the collision is a good idea.


Attached Files Thumbnail(s)
       

.zip   HexitTool.zip (Size: 156.79 KB / Downloads: 173)
Reply

#4
Thanks alot for this! I'm thinking to create a set of bars for my gatehouse.
Reply

#5
Wolf, which hex editor do ya use?
Reply

#6
I use HxD hex editor for most everything. It's the best free editor I know of.

Because translating requires Japanese text support, I broke down and got a copy of UltraEdit a while back. It has a lot of spiffy features, but I prefer HxD's simplicity for most jobs.
Reply





Users browsing this thread:
3 Guest(s)