FF Logo
Hello Guest | Login | Register
Latest reviews
· DM - Cryptic 
Reviewed by Oddball

· DM - Abrupt Decay (RC1) 
Reviewed by Cupid

· DM - Wulf Hunt 
Reviewed by Oddball

· DM - Nuketown2050 
Reviewed by Oddball

· Mod Manager Re-Mars-tered 
Reviewed by nme

· DM - Blunder's Villa 
Reviewed by shark5678

· DM - Blunder's Villa 
Reviewed by Oddball

· DM - How Fast Can You Run? 
Reviewed by Goober

· Play Faction 
Reviewed by nick

· DM - Chapel 
Reviewed by shark5678

· DM - Rail Depot 
Reviewed by Oddball

· DM - Waterlogged (ps2) 
Reviewed by shark5678

· Homer Simpson Hendrix 
Reviewed by Endoran

· RFA First Person Mod 
Reviewed by Cyrus

· Singularity Explosives v0.8... 
Reviewed by nme

Who's online?
1 user and 119 guests
Pages: [1 2 3 4 5]
Users Avatar
Cordite
Posts: 60
Joined: June 5, 2016, 19:21

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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

0
(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]

Pages: [1 2 3 4 5]

© 2009-2019 Faction Files

Page generated in 0.034 seconds