Jump to content

Looney tunes dash


Recommended Posts

2 hours ago, Daniel said:

I need Full análisis of looney tunes dash

High expectations you have. It needs more than just providing a link to attract attention, imho.

Anyways, here's the blocks auf Forest_level2

<RunList name="" fusion="Forest_Level2" player="hi_BugsBunny" chaser="hi_elmerfud" mode="run" speed="66">
<blocks>
<block name="hi_For_Start"/>
<block name="hi_For_Straight_500"/>
<block name="hi_For_Straight_500"/>
<block name="hi_For_Straight_500"/>
<block name="hi_Forest_Temp1"/>
<block name="hi_For_Cap"/>
<block name="hi_For_Straight_250"/>
<block name="hi_Forest_Chasm"/>
<block name="hi_For_Cap"/>
<block name="hi_For_Alt_Long"/>
<block name="hi_For_Straight_500"/>
<block name="hi_For_Gap_Start"/>
<block name="hi_For_Gap_Mid_Quarter"/>
<block name="hi_For_Gap_End"/>
<block name="hi_Forest_Meadow1"/>
<block name="hi_Forest_Chasm"/>
<block name="hi_For_Line"/>
<block name="hi_For_Cap"/>
<block name="hi_For_PreFinish"/>
<block name="hi_For_Finish"/>
</blocks>
</RunList>

The model format is fmlb. I guess there was a solution on former Xentax, Search in the xentax archives given by id-daemon or in a wayback machine.

carrot runner, uncomplete

Edited by shak-otay
Link to comment
Share on other sites

7 hours ago, shak-otay said:

The model format is fmlb. I guess there was a solution on former Xentax, Search in the xentax archives given by id-daemon or in a wayback machine.

and can also use my backup xentax themes (locally or online), there is a primitive search that returns 4 topics🙂

Of course, all these topics were created by the same person. and of course, Shak-otay answered there, and my plugin is also there which is also added to github fmt_fmlb.py.

*(in fact, if you search by the author’s name, then it’s 8 + 1 (from another account))

Spoiler

xjKAVAo.png

 

Edited by Durik256
  • Like 1
Link to comment
Share on other sites

I re-researched the structure of the fmlb archive. but also there is also an interesting observation that in the game itself there are raw fml files (in text form). some correspond to their fmlb binary versions. This will be very useful for those who want to tinker with this.

  • Like 1
Link to comment
Share on other sites

full research (pseudocode structure):

Spoiler
#FMLB:
    4 bytes magic (_FML)
    uint unk (0)
    uint unk (8)
    uint unk (3)
    uint numFiles
    uint dataOfs
    uint dataSize(+4)
    4 bytes ender (END>)
    16 bytes zeros

    for x in range(numFiles):
        uint type (0)
        uint zero (0)
        uint zero (0)
        64 bytes name (wiyh trash)
        uint data_ofs
        uint size
        ushort index
        ushort ender (>>)

#types indside FMLB:
    102 - hier
    103 - txload
    104 - material
    107 - geo
    108 - prim
    113 - clip
    114 - aniplug
    123 - colorset
    ... - other

#### all 16 byte alignment

# hier 
    64 bytes, nameHier
    uint numNodes
    vec3(float) bscenter
    float bsrad
    140 bytes, unkLabel (trash?)

    for x in range(numNodes):
        uint node_type
        64 bytes, nameNode
        vec4(float) unk
        28 bytes, unk (trash?)
        vec4(float) rgba
        uint zero
        ushort index
        ushort dep
        ushort strLen
        ushort strLen2
        uint unk

	if node_type == 1:
	    mat4(float) trfm
	    vec4(float) scl?
	    bytes[strLen] label

	elif node_type == 2:
	    mat4(float) trfm
	    vec4(float) scl?
	    64 bytes, zeros

	elif node_type == 3:
	    64 bytes, prim_name
	    144 bytes, trash
	    bytes[strLen] label

	elif node_type == 4:
	    bytes[strLen] label

	elif node_type == 5:
	    float unk
	    float numCurve

	    for x in range(numCurve):
	        vec4(float) curv

	elif node_type == 6:
	    64 bytes, label
	    bytes[strLen2] label2

	elif node_type == 7:
	    bytes[strLen] label

	elif node_type == 8:
	    bytes[strLen] label
	    mat4(float) trfm
	    vec4(float) scl?
	    64 bytes, zeros

	elif node_type == 9:
	    vec4(float) unk
	    24 bytes, trash

	elif node_type == 10:
	    mat4(float) trfm
	    vec4(float) scl?
	    mat4(float) unk0
	    mat4(float) unk1
	    16 bytes, trash

	elif node_type == 12:
	    bytes[strLen] label

	elif node_type == 13:
	    64 bytes, label
	    64 bytes, zeros
	    uint unk0
	    uint unk1

	elif node_type == 14:
	    bytes[strLen] label
	    mat4(float) trfm
	    vec4(float) scl?

# prim [860 bytes]
    64 bytes, name
    64 bytes, geo_name [~geo]
    64 bytes, mat_name [~mat]
    640 bytes, colorSet_name [~set]
    32 bytes

# txload [193 bytes]
    64 bytes, name
    128 bytes, nameFile [~map]
    uint ~allowcompression

# material [332 bytes]
    64 bytes, name
    64 bytes, ~texa
    64 bytes, ~texb
    64 bytes, ~texnm
    64 bytes, ~texdiffuseramp
    3 uint, 3 param
	~basis (default,vertex,particle)

#geo
    70 bytes, name (64+6)
    uint ~icount
    uint ~vcount
    uint ~unk(1)
    64 bytes trash(?)
    11 ushort (0-Vert; 1-Norm; 2-?; 3-?; 4-?; 5-uvs1; 6-?; 7-wi; 8-weight; 9-?; 10-trash)
    11 uint (0-iofs; 1-vofs; 2-nofs; 3-?,4-?,5-?; 6-uv1ofs; 7-?; 8-wi; 9-weight; 10-?)
    DATA[...] buf>(vert-vec3(float);norm-vec3(halffloat);uv1-vec2(halffloat);wi-vec4(ubyte);weight-vec3(halffloat);

# sound
    64 bytes, name
    64 bytes, path [~file]
    64 bytes, banks_name [~banks]
    3 uint, 3 param
	unk0 = 1
	~pan = 0
	~gain = 0.75
	
# soundbank
    64 bytes, name
    uint, ~channels

# clip
    64 bytes, BankName
    64 bytes, AnimName
    64 bytes, HierName
    ushort, frame
    ushort, numBones
    16 bytes, unk (trash IfII)

    for range(numBones):
        68 bytes, BoneName
        uint, numElem
        uint, trash
        for range(numElem):
            uint, fmt (1000-pos; 1002-rot; 1003-scl; 1010-uv1; 1011-color)
            uint, type (41-uint; 37-vec2(float); 38-vec3(float); 40-quat(float))
            ushort, numKeys
            ushort, unk (trash)
            array[keys]

 

and bonus, plugin as unpacker arc_fmlb.py

QbSkeZh.gif

 

Без имени-1.jpg

Edited by Durik256
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...