Dev's Limit Breaking 101 Techniques
-
@ Gibbon
You need to edit the values in the dacom.ini to increase the draw distance of the effects, aswell as the values in the effect_types.ini.
to somthing like this, now these could be wrong i can’t realy remember, it’s been a while.
dacom.ini
; (note: 1000 is default poolsize)
FxBasicAppearance.poolSize = 100000 ; each particle can generate: 4 verts 6, indices
FxRectAppearance.poolSize = 40000 ; each particle can generate: 4 verts 6, indices
FxPerpAppearance.poolSize = 25000 ; each particle can generate: 4 verts 6, indices
FxOrientedAppearance.poolSize = 0 ; each particle can generate: 4 verts 6, indices
FLBeamAppearance.poolSize = 68000 ; custom app from flalchemy.dll: each particle can generate: 5 verts 24 indices
FLDustAppearance.poolSize = 25000 ; custom app from flalchemy.dll: each particle can generate: 4 verts 6 indices
;–-------------------- total = 260000 -------;
;
FxMeshAppearance.poolSize = 50000 ; generates meshes not particles; need enough of these for all tradelane rings in a system.
FxParticleAppearance.poolSize = 10000 ; generates effects not particlesWhat i can remember is, if you set them wrong you will get a buffer overflow error inside flspew and somtimes if there is alot of action going on ingame with alot of effects involved, they go nuts and spread all over the screen.
Then what you need t do is look in he effects.ini ans see what type of effect your neutron star is using.
example
[Effect]
nickname = pi_neutron_03_proj
effect_type = EFT_WEAPON_PROJ <== this ((there may be mor than one))
vis_effect = pi_neutron_03_proj
vis_beam = pi_neutron_03_beamthen go to the effect_types.ini and look for EFT_WEAPON_PROJ or what ever it may be. Then change it to somthing like this.
effect_types.ini
[EffectType]
nickname = EFT_WEAPON_PROJ
priority = 0.500000
generic_priority = 1.000000
lod_type = EFT_LOD_WEAPON
radius = 10000.000000
visibility = EXIST_OFFSCREEN
update = CULL_UPDATE
run_time = -1
pbubble = 10000, 10000Now like i said, it’s been a while for me so if i’m wrong on anything then don’t feal bd about correcting me, but it’s the along these lines, you should be able to see the effect up till around 50k with these setting.
-
All I did was change the effect type of the blackhole effect to that of the effect_types that are hacked. So, using these
eft_damage_large_smoke (infinite duration):
– 20f in freelancer.exe, 0x212DE8, 0x212DE8 = on-screen radius of effects
– -1f in freelancer.exe, 0x212DF0, 0x212DF0 = max run time of effects
– 100f in freelancer.exe, 0x212DF8, 0x212DF8 = unknown, likely the first value of pbubble
– 500f in freelancer.exe, 0x212DFC, 0x212DFC = visual cutoff range of effects (second value of pbubble)I added the eft_damage_large_smoke type to the blackhole effect. With the hack, I increased the size of the on-screen radius, max run time of effects, pubble values to fairly large values. That’s all there is to it, that I know of. If it’s not working for you, I don’t really know why.
-
Thx, i’ll give that a go.
** EDIT **
The edits listed so far only make these fx editable
EFT_EXPLOSION_LARGE
EFT_WEAPON_LARGE_PROJ
EFT_DAMAGE_LARGE_SMOKENow i know for a fact ALL the other effect types are listed in the exe file. After a long drawn out chat with Lancer, he’s having a look through the exe file to locate these fx types. One he found for me has cured my visual fx problem already. When he’s done i’m sure an updated list will be forthcoming. Means we can ALL edit the correct files instead of using the wrong fx types to achieve workarounds. Stunning work indeed
-
**The insanely large fx PBubble max is at 0x00212FDC. I now have the entire list of them now and hopefully will create a list of them soon. If you need a specific one before then just ask.
The actual range of the effect appears to be on-screen radius +pbubble max, thats why it’s been so hard to find. This one was 5k + 500 = 5.5k**
-
Because modifying the entries in effect_types.ini seems to have no effect unless the right value in the exe is changed. It wasn’t until some of the other values that LS found i could edit the view distances on certain effect types from the ones i modified in the EXE file.
As an example LS found this in the 1.1 exe,
EFT_EQUIP_ATTACHED_INSANELY_LARGE
– 500f in freelancer.exe, 0x212FC8 = on-screen radius of effects
– 1000f in freelancer.exe, 0x212FD8 = unknown, likely the first value of pbubble
– 5000f in freelancer.exe, 0x212FDC = visual cutoff range of effects (second value of pbubble)If you don’t edit the values there, especially for the pbubble max setting, it doesn’t matter what you type into the effect_types.ini setting, nothing happens. It was only until i changed the setting in the exe that the effect was visible from 50k away
He’s compiling a list of all the effects addresses so for those that want specific effects to work, they will. Why choose from only 3 fx types to change when you can use all of them?
As an example, suppose i want to see engine fx made viewable from further away, without the corresponding exe address for the relevant engine trail fx, no amount of modifying the effect types file will change that unless i have the address for the that effect type
-
I set a breakpoint on the insane max value and it did indeed get updated from effect_types.ini. You do still have an entry for it in freelancer.ini?
The initial pbubble calculation looks to be:
r = distance? - radius scale = 1 - something // usually 0 or close to it d = min + (max - min) * scale // so it'll be max or close to it if (d >= r) ...
-
Are these EXE entries even used if the appropriate INI settings are changed and existing?
What I’d especially like to know is whether it’s possible to make entirely new effect types without any negative consequences.
-
@ adoxa
Yes, i do have an entry for it in freelancer.ini. Only sense i seem to get with regard to the view values was to edit the exe file at the address LS told me to go for that particular effect type. I modified the pbubble max setting to 50k, now it works. I’m as mystified as you are why it works for me this way but it does lol
@ FF
LS is your man to answer that, all i know is he has a complete list of the fx in the effect types file and one or two unused ones i believe, that he’s located in the exe file with relevant addresses and initial values
-
The types in effect_types.ini are hardcoded into freelancer.exe - the exe offsets are the default values, which are overwritten when the ini is read. It is not possible to create new types - what is in effect_types.ini is all there is, apart from EFT_CUSTOM_EFFECTS. Actually, it’s not used in that many places, so I could probably write a plugin for additional types. Could be some time, though…
-
I’m just baffled by why my effect_types.ini isn’t being read. It has an entry in freelancer ini, no matter what changes i make in effect_types.ini, it has no effect in game for me.
I even ran an experiment and commented the file out in freelancer ini to see if it would have any effect. Game runs fine without it, and used the values from the exe file for those effect types. It even displays my custom effect from 50k away after i modified the exe earlier.
Only changes that seem to work for me are direct modifications on the exe file itself… strange
-
I’m starting to feel enlightened. I’m now of the opinion this is all down to which version of the exe ppl are using. I have the no cd version which i can guarantee reads the values in the exe file and uses those. It ignores the values in ithe effect types file, that’s a given. I was discussing this with Lancer and he had the same problem, especially after i removed that file and the game still ran happily. With the version 1.0 & standard 1.1 exe file, i’m sure values are recognised in the effects type ini, not the case with the no cd exe.
-
After searching for nocd and finding the GameCopyWorld site, my exe was the same as “Freelancer v1.0 [ENGLISH] No-CD/Fixed EXE”. Switching to “Freelancer v1.0 [MULTI] Unprotected EXE” also triggers the breakpoint from the ini. There goes that theory…
Would you be willing to try running a debugger? Go to OllyDbg and get version 2. Run it, open freelancer.exe, add -w to the arguments. After a bit, you’ll be paused at the entry point. Press Shift+Tab twice to get to the data pane and Ctrl+G to goto an address. Type in 612fdc to go to the “insane” pbubble max value. Right-click within the data pane and select Float->32-bit float, now it should show as 5000.000 (or whatever you’ve changed it to). Click it, right-click it, select Breakpoint->Hardware… and press OK - it’ll turn red. Now press F9 to run Freelancer and it shouldn’t be long before it stops at 004FD840, after reading it from effect_types.ini. Press F9 to continue and it shouldn’t stop again (until it actually needs it). (Unfortunately, starting up and loading games are a little slower through the debugger.)
-
Ah, that’s made it quite obvious. Either you’ve gotten a little carried away with editing and changed something you shouldn’t have, or whoever unprotected it got it slightly wrong. Here’s the relevant diff.
-005C8890 456666656374547970.. ASCIIZ "EffectType" +005C8890 036666656374547970.. ASCIIZ "\x03ffectType" ```So jump to file offset 0x1c8890, change 03 back to 45 and your effect_types.ini will be working again.