View Single Post
Old 28-01-13, 22:45   #1
Lwmte's Avatar
Join Date: Aug 2010
Posts: 1,074
Default FLEP custom patches: updates, testing and discussion

FLEP (FLExible Patcher) is a revamped and updated derivative of TREP's custom patches module. It is compatible with TRNG version of tomb4.exe (excluding

As it was said earlier, FLEP development is now halted, because Paolone is active again with TRNG updates. Development will remain stopped at least until open-source TRNG version is released. Even if FLEP could be made fully compatible with, there is no point in it - because if another closed-source TRNG update will come out, most likely it will break compatibility again.

Latest FLEP version: 1.1.44 (1 Feb 2013)
Custom patch set updated: 5 Feb 2013.

Installation instructions:

1. Download zip archive with FLEP program itself (red button above).
2. Download zip archive with custom patch set update (green button above).
3. Unpack them and put both flep.exe and patches.flp in the same folder with tomb4.exe.
4. Launch FLEP.
5. Do all the changes you want, then press "Modify" button.

P.S.: Unlike TREP, you don't need to manually save preset to store your patch settings, as FLEP automatically saves it to flep.cfg file on exit. However, it's recommended to use presets as a back-up of your settings, in case you accidentally erase or reset flep.cfg to default.

IMPORTANT: custom patch set file (green one) updates more frequently than patcher executable.

Originally Posted by HeinzFritz View Post
I think you all know it already, but just in case you don't here is the link to LWMTE's site where all his Flep and other patches are waiting to be downloaded:

Additional info and patches

Delta's patches

Smoke-emitter patch stuff:
Originally Posted by Lwmte View Post
I've released particle testing ground some time ago - it's basically test level with two utilities that can change emitter properties on the fly. You can play with all parameters and find the effect you want; then simply write down parameters into corresponding emitter OCB patch in FLEP, and you should get same result!
Originally Posted by Lwmte View Post
Classic, unmodified TR4 engine, for both PlayStation and PC, uses 8 rendering subtypes (0 to 7) for transparent faces. Here is the full description of them:

0 - Opaque: Used for bars. I haven't yet encountered another references to it in executable. Note that this subtype IS NOT the same as standard opaque texture type, despite the same index.
1 - Transparent: "Solid" transparency only, specified by magenta colour.
2 - Translucent: Classic translucent face, additive operation.
3 - [broken]: Has to be translucent face with inversion operation (darkness). Was workable on PSX, but on PC it produces the same result as subtype 1. Still, it is used for shadow and fadein/fadeout effect, maybe for something else too.
4 - Font & skybox: Bypasses Z test, so either it will be rendered above or behind anything else.
5 - [unused]: Rendering code for this subtype is missing. I suppose it also was used somewhere in PSX version, but in PC version it simply gets ignored.
6 - Wireframe: Says for itself.
7 - "Forced" alpha: Most complicated one. It's standard opaque face with alpha (translucency) value that is taken from global variable. It works like this: if you send opaque/transparent face to renderer with global alpha variable set to 255 (opaque), it will be treated as subtype 1. But if you will simultaneously set global alpha variable to something else, face type will be converted to 7 and transparency will be calculated with global alpha variable treated as second argument.

So what I did is re-used type 5 for new "inversion aka darkness" blending mode. I had some problems with shadow rendering beforehand, so I set 5 for shadows and 10 for anything else, but this bug is now (at least I hope so) fixed.
Originally Posted by Lwmte View Post
Yes, you can fully customize a bunch of parameters for each smoke emitter's OCB. I'm doing 10 OCBs for both smoke emitter white and black objects, so effectively you will have 20 different smoke emitter objects to customize.

Here's a list of parameters you can edit for each OCB:

1. Start colour (the one that is used when particle is spawned)
2. End colour (used when particle is fading out)
3. Lifetime (how long particle will stay in gameworld)
3. Fade threshold (when particle begins to fade from start colour to end)
4. Fade-out time (how long it will take the particle to fade-out completely)
5. Blending mode
6. Various flags (damage, setting on fire, react to wind, line or sprite, perspective correction)
7. Size (can only be multiplied by 2, i. e. you basically can have only 4 usable sizes)
8. Vertical speed and acceleration
9. Horizontal speed
10. Dispersion

Also, I'm working on implementing horizontal direction depending on nullmesh orientation - this way, you will be able to create all kinds of super-complicated particle emitters, like fountains, local snow/rainfalls, sparkle streams, gas rings, etc. Only thing I'm afraid is that you all will eventually run out of OCB capacity! We are very limited with this. If only we had a flexible script mechanism to load it... Do you remember this miraclous project called T4Mod by Larson? Almost everyone forgot about it, but it was much more advanced patcher than TREP or TRNG. It allowed you to do even more complicated and beautiful particle setups, much more advanced than TREP or TRNG ever provided - because it relied on external Lua scripting engine (good to note that Lua is a REAL script language, not "pseudo-script" that is used in TR4 engine, because it basically contains only bunch of static parameters for engine to feed).

Blending modes:
Originally Posted by Lwmte View Post
So, here is the test level and engine, with which you can test new blending modes 8-10 (mode 5 is set to the same as 10 and used for shadows only, because I faced serious bugs with rendering extra blending modes with fog bulb nearby). Also mode 8 results in missing faces at certain angles, I think there's another switch case or "if...then" branch somewhere to find. Unfortunately, today my whole .udd database for OllyDbg with partially deciphered graphics calls got corrupted, it's a bit demotivating!

For those who didn't forgot how to use TREP, there's also test custom patches set.
Originally Posted by meta2tr View Post
More good news, the blend modes all work on moveables, and the shine effect works on all of them too.

In the image below, the top row is newly added moveable. Without shine, it looks the same as the other two rows. When shine is activated, it is visible over all of the face.

Sorry if this is taking a while, but I still have a few things to test, such as animated texture ranges and mapmerge.
Originally Posted by Lwmte View Post
Sorry, I have lot of things to do, can't answer to everyone right now! Just another thing I have found out regarding fog bugs with translucent faces.

It seems that TR4 engine can't properly render translucent faces in combination with fog. It affects not only new blending modes, but also classic "add" blending mode. Core programmers did a bypass for translucent faces, so they are not affected by fog, perhaps it was too difficult for them to do it properly. When it's OK for sprites, on room faces it looks very awkward:
I think I will leave this behaviour as it is for a moment. Maybe later I will fix this bug.
Originally Posted by Titak View Post
When I look at the spidersweb through the window, parts of the spidersweb disappear.
I checked and this has nothing to do with bent faces because all faces of the spidersweb have been triangulated.
It happens because blending subtype 7 which is used for all "forced transparency" faces in game (like look transparency, vanishing enemies etc., and also TRNG's transparency OCBs) discards rendering of all translucent (alpha-blended) surfaces behind the most closer one. It is needed to prevent bugs like this:
It's a pity that this subtype can't render anything translucent behind itself, I think that it is not applicable for room geometry because of this behaviour, and also it's very complicated and fuzzy in code (seems like Core programmers used global variable for alpha value), so I doubt that it can be changed. In simple words, no subtype 7 for room geometry, sorry!
Originally Posted by meta2tr View Post
I think there's a problem with the latest (second) patch. The problem I see is that the frame rate for animated textures, instead of being the usual 10fps, has dropped to 2fps.
Don't worry, I just changed framerate for tests, blending has nothing to do with it! It is native TREP setting in GFX Customizer 2 called "frame change interval" that does the trick.
Originally Posted by meta2tr View Post
In my case it is faces that disappear and reappear depending on the view angle.
I see, it should be fixed in latest version. The reason for these disappearing faces (it happens mostly on the edge of the viewport, am I right?) is Core Design used very complicated rendering procedure which was divided into two parts -first one rendered faces in front of you, and second one rendered faces that are on the edge of viewport. I think they did it to produce proper shading and lighting.

Also, with this version we don't need two seperate subtypes for shadows/black smoke and black room faces, so I only left type 5 for shadows, 8 was replaced with funny "intensity=inversion" blend type, check it out! It may come in handy when creating something like X-Ray vision effects or so.
Moreover, latest version fixes corrupted explosion smoke puffs that Heinz pointed to. It happened because certain particles in TR4 engine still refer to missing blending types (which were available in PSX), and by enabling extra blending modes all this hell broke loose...

Originally Posted by ChocolateFan View Post
Latest patches are here:

I added some patches to:
  • Change hardcoded healing values of Small and Large Medipack, as well as hotkeys 0 and 9;
  • Fix a small bug in using hotkeys 0 and 9; and
  • Disable those keys.
The most important patch, however, is to restore compatibility between TRNG and FLEP by resizing the infamous icon. I made this patch a dependency of all patches that have to extend tomb4.exe size.
In other words, there will be no more need to use an old tomb4.exe executable.

A small caveat is that NG Center is very smart (not) and will try to bring back the unpatched version on every startup. To fool it, rename NG Center\TRNG\tomb4.exe to something else. NG Center will display an error on initialisation, but it is not to be cared about. Another option is to copy the patched executable into NG Center\TRNG, but this must be done every time tomb4.exe is patched.

Thanks to A_De and CourierNumber6 for testing!
Originally Posted by ChocolateFan View Post
Caustics and reflections
There is only one new patch, the vertex shader patch.

Last edited by Titak; 28-03-20 at 17:26.
Lwmte is offline   Reply With Quote