Begin Procedure "EntryPoint"
Begin with little endian 0xd4bada55
The next byte represents a version. For whatever reason this must be between 0x28 and 0xc8
The next 23 bytes are a mystery.
Result of "GetText" is the map name.
The next 2 bytes should be 0, mystery.
Result of "GetTextArray" (0) is the list of textures needed in this map.
Result of "GetTextArray" (1) is the list of character models in this map?
Discard result of "ConsumePadding"
Result of "GetTextArray" (2) is the list of animations or animatable models in this map.
Discard result of "ConsumePadding"
Result of "GetTextArray" (3) is the list of static models in this map.
Discard result of "ConsumePadding"
Result of "GetTextArray" (4) is the list of effects used in this map.
Discard remainder, currently a mystery.
End Procedure
Begin Procedure "GetText"
Take little endian word 16, this is the "length" of the text / string.
Take N bytes, where N is the "length".
Return Bytes as string.
End Procedure
Begin Procedure "GetTextArray" with parameter "position"
The next byte should be equal to "position"
The next byte should be 0x70.
The next 6 bytes are a mystery.
Take little endian word 16, this is the "count" of elements in the array.
Let "results" be "GetText" replicated "count" times.
Return "results"
End Procedure
Begin Procedure "ConsumePadding"
Note: I don't know what this padding seems to be for, but between some of the text arrays, there seems to be variable
Note: padding that I cannot yet see a reason for.
Note: Usually the data looks like 0x0100 0000 0100 0000 0300 0000 ...
Peek at the next little endian word 16, as "test"
If "test" is < 16 Then
consume word16
The next word 16 should be 0.
Recurse "ConsumePadding"
End If
End Procedure
RedMap {mapName = "No Level Name", mapVersion = 200, mapTextures = ["glowball.tga"], mapBodyModels = ["miner.vcm"], mapAnimations = ["miner_corpse_carry.mvf","miner_dead.mvf","miner_talk.mvf","miner_talk_short.mvf","park_Death_crouch.mvf","park_Death_head_backwards.mvf","park_HG_crouch_walk.mvf","park_jeep_driver.mvf","park_jeep_gunner.mvf","park_run.mvf","park_run_flail.mvf","park_swim_stand.mvf","park_swim_walk.mvf","ult2_attack_crouch01.mvf","ult2_attack_run.mvf","ult2_attack_stand.mvf","ult2_attack_walk.mvf","ult2_corpse_drop.mvf","ult2_corpsecarry_stand.mvf","ult2_corpsecarry_walk.mvf","ult2_cower.mvf","ult2_crouch.mvf","ult2_Death_blast_forwards.mvf","ult2_Death_chest_backward.mvf","ult2_Death_chest_forward.mvf","ult2_Death_Generic.mvf","ult2_Death_head_forwards.mvf","ult2_Death_leg_Left.mvf","ult2_Death_leg_Right.mvf","ult2_draw.mvf","ult2_firing_crouch.mvf","ult2_firing_stand.mvf","Ult2_flee_run.mvf","ult2_flinch_astand.mvf","Ult2_Flinch_ChestB.mvf","Ult2_Flinch_ChestF.mvf","Ult2_Flinch_LegL.mvf","Ult2_Flinch_LegR.mvf","ult2_flinch_stand.mvf","ult2_idle_HitHead.mvf","ult2_jump.mvf","ult2_reload.mvf","ult2_silencer.mvf","ult2_stand.mvf","ult2_walk.mvf"], mapStaticModels = ["powerup_flamecan.V3D","Weapon_Aslt_Rifle2.V3D","weapon_fthrower.v3d","weapon_grenade.v3d","weapon_heavymgun.v3d","weapon_machinep.v3d","weapon_railrifle.v3d","weapon_riotshield.v3d","weapon_riotstick.v3d","Weapon_RocketLauncher.v3d","weapon_shotgun.v3d","Weapon_shoulder.v3d","Weapon_SniperRifle.v3d","weapon_ultorgun.v3d"], mapEffects = ["DrillMissile01.VFX","ShellTest.vfx"]}
RFL
{rflHeader = RFLHeader {rflVersion = 200, rflUnixTimestamp = 3698, rflOffsetPlayerStart = 2614, rflOffsetLevelInfo = 2694, rflSectionsCount = 13, rflUnknown = 3698, rflLevelName = "No Level NameX", rflModName = ""}
, rflSections =
[RFLSectionHeader {rflSectionType = RFLTGAList, rflSectionLength = 18}
,RFLSectionHeader {rflSectionType = RFLVCMList, rflSectionLength = 19}
,RFLSectionHeader {rflSectionType = RFLMVFList, rflSectionLength = 1184}
,RFLSectionHeader {rflSectionType = RFLV3DList, rflSectionLength = 370}
,RFLSectionHeader {rflSectionType = RFLVFXList, rflSectionLength = 47}
,RFLSectionHeader {rflSectionType = RFLLevelProperties, rflSectionLength = 33}
,RFLSectionHeader {rflSectionType = RFLStaticGeo, rflSectionLength = 829}
,RFLSectionHeader {rflSectionType = RFLUnknown, rflSectionLength = 4}
,RFLSectionHeader {rflSectionType = RFLPlayerStart, rflSectionLength = 48}
,RFLSectionHeader {rflSectionType = RFLUnknown, rflSectionLength = 4}
,RFLSectionHeader {rflSectionType = RFLNavPoints, rflSectionLength = 4}
,RFLSectionHeader {rflSectionType = RFLLevelInfo, rflSectionLength = 291}
,RFLSectionHeader {rflSectionType = RFLBrushes, rflSectionLength = 847}
,RFLSectionHeader {rflSectionType = RFLEnd, rflSectionLength = 0}
]
}
(RFLSectionHeader{
rflSectionType = RFLStaticGeo,
rflSectionLength = 829
},
RFLSectSG (RFLSectionRooms{
rflSectRoomUnknownArr2A = "\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL",
rflSectRoomTextureCount = 1,
rflSectRoomTextures = [
"Rck_Defaula"
],
rflSectRoomScrollCount = 0,
rflSectRoomScrolls =[],
rflSectRoomRoomCount = 1,
rflSectRoomRooms = [
RF
rflRoomID = 2147483646,
rflRoomAABB = RFAABB {
rfaabbMin = RFV3 {
rfV3x = -2.0001,
rfV3y = -2.0001,
rfV3z = -2.0001
},
rfaabbMax = RFV3 {
rfV3x = 2.0001,
rfV3y = 2.0001,
rfV3z = 2.0001
}
},
rflRoomIsSkyRoom = 0,
rflRoomIsCold = 0,
rflRoomIsOutside = 0,
rflRoomIsAirlock = 0,
rflRoomIsLiquid = 0,
rflRoomIsAmbientLight = 0,
rflRoomIsSubroom = 0,
rflRoomUnknown = 0,
rflRoomLife = -1.0,
rflRoomEaxEffect = "",
rflRoomProperties = RFLRoomPropertiesNone
}
],
rflSectRoomMeshCount = 1,
rflSectRoomMeshes = [
RFLSectionRMeshLi{
rflSectRoomMeshID = 0,
rflSectRoomMeshLinkCount = 0,
rflSectRoomMeshLinks = [
]
}
],
rflSectRoomUnknownCount2 = 0,
rflSectRoomUnknownArr2B = "",
rflSectRoomVertexCount = 8,
rflSectRoomVertexes = [
rfV3x = -2.0,
rfV3y = 2.0,
rfV3z = 2.0
},
RF{
rfV3x = -2.0,
rfV3y = -2.0,
rfV3z = 2.0
},
RF{
rfV3x = -2.0,
rfV3y = -2.0,
rfV3z = -2.0
},
RF{
rfV3x = -2.0,
rfV3y = 2.0,
rfV3z = -2.0
},
RF{
rfV3x = 2.0,
rfV3y = -2.0,
rfV3z = 2.0
},
RF{
rfV3x = 2.0,
rfV3y = 2.0,
rfV3z = 2.0
},
RF{
rfV3x = 2.0,
rfV3y = -2.0,
rfV3z = -2.0
},
RF{
rfV3x = 2.0,
rfV3y = 2.0,
rfV3z = -2.0
}
],
rflSectRoomFaceCount = 6,
rflSectRoomFaces = [
RF
rflFaceNormal = RFV4 {
rfV4x = 0.0,
rfV4y = 1.0,
rfV4z = 0.0,
rfV4w = 2.0
},
rflFaceTextureID = 0,
rflFaceUnknown1 = 4294967295,
rflFaceUnknown2 = 0,
rflFaceUnknownArr8 = "\255\255\255\255\255\255\255\255",
rflFaceUnknown3 = 0,
rflFaceFlags = RFLFFNone,
rflFaceLightRes = 1,
rflFaceUnknownArr6 = "\NUL\NUL\NUL\NUL\NUL\NUL",
rflFaceRoomIndex = 0,
rflFaceVertexCount = 4,
rflFaceVertexes = [
RFLVertex {
rflVIndex = 2,
rflTexUV = RFUV {
rflu = -2.0,
rflv = -2.0
},
rflLightUV = Nothing
},
RFLVertex {
rflVIndex = 1,
rflTexUV = RFUV {
rflu = -2.0,
rflv = 2.0
},
rflLightUV = Nothing
},
RFLVertex {
rflVIndex = 4,
rflTexUV = RFUV {
rflu = 2.0,
rflv = 2.0
},
rflLightUV = Nothing
},
RFLVertex {
rflVIndex = 6,
rflTexUV = RFUV {
rflu = 2.0,
rflv = -2.0
},
rflLightUV = Nothing
}
]
},
<TRUNCATED>
rflSectRoomLightmapCount = 0,
rflSectRoomLightmaps = [],
rflSectRoomUnknown3 = Nothing
}))
Rooms have 16 textures
There are 54 rooms
There are 54 meshes
There are 859953487 vertexes
Returning
*** Exception: endOfInput
© 2009-2024 FactionFiles