FF Logo
Hello Guest | Login | Register
Join us on Discord!
Latest reviews
· RF1 Russian Translation Pac... 
Reviewed by Uzbek

· Crook$ And C@stles 
Reviewed by MysticaL-AceR

· RFU5 - Midwich V5 
Reviewed by dvl_iac

· Br@in$can 
Reviewed by dvl_iac

· DM_C@nnonBaLLzZz 
Reviewed by dvl_iac

· Halloween Pumpkins 1.1 
Reviewed by dvl_iac

· RF Manor 
Reviewed by kerpal

· WMP-Rocky Horror 
Reviewed by kerpal

· RFU5 - Midwich V5 
Reviewed by kerpal

· Catacomb 
Reviewed by Mikelice

· Cyrus Cio Park 2 
Reviewed by Mikelice

· SWA Ghost House 
Reviewed by Mikelice

· WMP-Rocky Horror 
Reviewed by Mikelice

· RFU5 - Midwich V5 
Reviewed by Mikelice

· Ascension Reg 
Reviewed by Mikelice

Who's online?
1 user and 139 guests
The FactionFiles forums are archived. Please join the community on our Discord for all Red Faction discussions.
Pages: [1 2 3 4 5]
Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 19, 2016, 23:12 Post #52
Quoting 2kool4skool

dude you're insane, me and digi know the functions that decode the map, even that poor fool rafalh did

just torrent it and save time a la :124:


I'd rather stay fresh, if you know what I mean.

But, if you'd be willing to show the section relevant to 0x0C00 (room effects) and 0x0100 (static geo) that'd be nice ;dd
Edited by Cordite at June 19, 2016, 23:13

Users Avatar
[Deleted User]
Posts: N/A
Joined: N/A

likes this
(Y)

Posted: June 19, 2016, 23:57 Post #53
Quoting Cordite
Quoting 2kool4skool

dude you're insane, me and digi know the functions that decode the map, even that poor fool rafalh did

just torrent it and save time a la :124:


I'd rather stay fresh, if you know what I mean.

But, if you'd be willing to show the section relevant to 0x0C00 (room effects) and 0x0100 (static geo) that'd be nice ;dd


Posted Image

ida is as fresh as you can get

they funcs are way too complex, and way too many subcalls, you can't get anything without slowly debugging, and 0xC00 seems to be almost buffered and then parsed somewhere else, it's odd for some reason idk

but i wrote a parser for static geo once, i thought it was one of the most simple sections; didn't rafalh get it down pretty much perfect? my client and his client rendered static geo perfect, i thought
Edited by N/A at June 20, 2016, 0:02

Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 20, 2016, 0:49 Post #54
You appear to have things named, how did you get that?

Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 20, 2016, 1:18 Post #55
What the Flipping Bananas, the reason why I couldn't parse pdm01.rfl was because a room was BOTH ambient AND liquid.
How the flying jack did someone save it like that?

When I re-save it after importing it, it only allows one as a drop down.

Anyway.. Now I have things parsing again.

Users Avatar
[Deleted User]
Posts: N/A
Joined: N/A

likes this
(Y)

Posted: June 20, 2016, 2:12 Post #56
Quoting Cordite
You appear to have things named, how did you get that?


by reverse engineering lol, I am the creator of the patches crystal faction, demorec, and pfaddon

i was the first coder to release a patch that added first person spectate to the game (it's not built in, it has to be completely patched into the game's code etc)

Edited by N/A at June 20, 2016, 2:15

Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 20, 2016, 2:41 Post #57
Crystal looks interesting.

It doesn't seem like Ida gets me any further than Hopper out of the box, no-name-subs everywhere D:

Just when I thought I got things right for pdm01.rfl, now my room effects parser for everything else is broken.

Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 20, 2016, 3:12 Post #58
Quoting Cordite
Just when I thought I got things right for pdm01.rfl, now my room effects parser for everything else is broken.

Shame on me for using dumb hacks.

Turns out, even if you don't have a room effect object, you can still set eaxeffects.
So, skipping over absurdly high ID sections is bad.

Users Avatar
[Deleted User]
Posts: N/A
Joined: N/A

likes this
(Y)

Posted: June 20, 2016, 7:10 Post #59
Quoting Cordite
Quoting Cordite
Just when I thought I got things right for pdm01.rfl, now my room effects parser for everything else is broken.

Shame on me for using dumb hacks.

Turns out, even if you don't have a room effect object, you can still set eaxeffects.
So, skipping over absurdly high ID sections is bad.


are you really doing all this work for some dialogs

Posted Image


Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 20, 2016, 12:00 Post #60
Quoting 2kool4skool

are you really doing all this work for some dialogs


I already have that info now, at this point, it's more of a matter of getting things perfect.

Users Avatar
[Deleted User]
Posts: N/A
Joined: N/A

likes this
(Y)

Posted: June 20, 2016, 13:15 Post #61
Quoting Cordite
Quoting 2kool4skool

are you really doing all this work for some dialogs


I already have that info now, at this point, it's more of a matter of getting things perfect.


Posted Image

Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 20, 2016, 14:46 Post #62
Next up, entities and multiplayer spawn points

Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 21, 2016, 2:43 Post #63
Quoting Cordite
Next up, entities and multiplayer spawn points

That was surprisingly non-frustrating.

Only had an extra 4 unaccounted bytes in the multiplayer respawn stuff than open faction documented in its commented out structs.

Entities, despite having over 50 things to load, worked right the first time.

What remains:
RFLSectionHeader {rflSectionType = RFLGeoRegions, rflSectionLength = 820}
RFLSectionHeader {rflSectionType = RFLCutsceneCameras, rflSectionLength = 178}
RFLSectionHeader {rflSectionType = RFLUnknown, rflSectionLength = 4}
RFLSectionHeader {rflSectionType = RFLDecals, rflSectionLength = 896}
RFLSectionHeader {rflSectionType = RFLRoomEffects, rflSectionLength = 90}
RFLSectionHeader {rflSectionType = RFLEAXEffects, rflSectionLength = 1917}
RFLSectionHeader {rflSectionType = RFLPlayerStart, rflSectionLength = 48}
RFLSectionHeader {rflSectionType = RFLUnknown, rflSectionLength = 69}
RFLSectionHeader {rflSectionType = RFLNavPoints, rflSectionLength = 4}
RFLSectionHeader {rflSectionType = RFLGroups, rflSectionLength = 333}


I seem to be having some unread bytes in the static geo on some of these, though my fallback for it is reading ahead for sanity reasons. Will look into it later.

Will probably go after room effects and EAX effects next.

Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 22, 2016, 4:00 Post #64
Had to make up my own structure for the separate room effects stuff, and for EAX. They don't seem to be terribly interesting.
Parsing worked on first try.

data RFLEAXEffect = RFLEAXEffect
{ rflEAXEffectType :: B.ByteString
, rflEAXEffectUnknownArr1 :: B.ByteString
, rflEAXEffectUnknownName1 :: B.ByteString
, rflEAXEffectParams :: [Float]
, rflEAXEffectUnknownName2 :: B.ByteString
, rflEAXEffectUnknownArr2 :: B.ByteString
} deriving (Show)

data RFLRoomEffect = RFLRoomEffect
{ rflRoomEffectID :: Word32
, rflRoomEffectUnknownArr1 :: B.ByteString
, rflRoomEffectClassName :: B.ByteString
, rflRoomEffectPosition :: RFV3
, rflRoomEffectTransform :: RFMatrix3
, rflRoomEffectScriptName :: B.ByteString
, rflRoomEffectUnknownArr2 :: B.ByteString
} deriving (Show)

Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 24, 2016, 2:53 Post #65
Turns out the magical magic room effects are more magical than I expected.

So, it seems there are multiple modes here, making it a sum type.

For now I'll just skip trying to figure out what's inside. I at least got the sizes.

Mode 1: [7 bytes, text, 48 bytes, text, 1 byte]
Mode 2: [8 bytes, text, 40 bytes, text, 48 bytes, text, 1 byte]
Mode 3: [11 bytes, text, 48 bytes, text, 1 byte]
Mode 4: [7 bytes, text, 48 bytes, text, 1 byte]

It looks like the nav points aren't quite what is documented on open faction. So now I'm messing with those.

Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 25, 2016, 1:37 Post #66
Yeah, nav points are a clusterduck.

data RFLSectNavPoints = RFLSectNavPoints 
{ rflSectNavPointsCount :: Word32
, rflSectNavPoints :: V.Vector RFLNavPoint
, rflSectNavPointExtra :: V.Vector (V.Vector Word32)
} deriving (Show)

data RFLNavPoint = RFLNavPoint
{ rflNavPointID :: Word32
, rflNavPointFloats :: V.Vector Float
, rflNavPointFlags :: V.Vector Word8
, rflNavPointUnknownArr1 :: Maybe B.ByteString
, rflNavPointUnknownArr2 :: B.ByteString
, rflNavPointLinksCount :: Word32
, rflNavPointLinks :: V.Vector Word32
} deriving (Show)


It freaking has a vector of vectors, after the nav points, where the count of sub vectors is a word8 and each sub vector element is a word32

Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 25, 2016, 15:40 Post #67
Decals was straight forward.

data RFLDecal = RFLDecal
{ rflDecalID :: Word32
, rflDecalUnknownText1 :: B.ByteString
, rflDecalFloats :: V.Vector Float
, rflDecalUnknownText2 :: B.ByteString
, rflDecalUnknownArr1 :: B.ByteString
, rflDecalTexture :: B.ByteString
, rflDecalUnknownArr2 :: B.ByteString
} deriving (Show)

Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

likes this
(Y)

Posted: June 25, 2016, 20:36 Post #68
Ambient sounds was also trivial.

data RFLAmbientSound = RFLAmbientSound
{ rflAmbientSoundID :: Word32
, rflAmbientSoundVec1 :: RFV3
, rflAmbientSoundUnknown1 :: B.ByteString
, rflAmbientSoundWave :: B.ByteString
, rflAmbientSoundVec3 :: RFV3
, rflAmbientSoundUnknown2 :: B.ByteString
} deriving (Show)


[ID,V3,1 byte,file,V3, 4 bytes]

The FactionFiles forums are archived. Please join the community on our Discord for all Red Faction discussions.
Pages: [1 2 3 4 5]

© 2009-2024 FactionFiles