Dev's Limit Breaking 101 Techniques
-
Gold_Sear wrote:
[…]a veritcally oriented trade lane (so it also travels vertically) and setting proper [c]rotate[/c] settings for the rings […] The following patch fixes it.
Nice one!!
Making vertical (or at least, ‘climbing’, under a 45° angle) tradelanes was one of the first things I tried in modding. But I essentially only had (and still have) insight to the extent of what I could see in the .ini files so I couldn’t fix it. They worked btw, but traveling downwards the ship was weirdly positioned (nose up, its bottom pointing to the traveling direction).
-
@adoxa:
I think so:
changed value to 2 million -> draw limit increased to ~2800K
changed value to 1e38 -> Manhattan (and Pittsburgh) remains visibleThanks!
-
Are there similar hacks for msg_id_prefix in universe.ini (don’t append dash)
At the following locations in [c]content.dll[/c], replace [c]64[/c] with [c]65[/c]: 037148, 039684, 039AA3, 039CE1, 03AA92, 03AE02, 03BA22, 03F0A6, 03BA220, 03F0A6, 041A74, 041C75. This effects the same items as the previous patch (which would jump over the append code; this makes it append an empty string). I don’t know what effect it would have elsewhere (meaning if you explicitly add the dash to [c]universe.ini[/c], there are occasions where you’ll end up with two dashes).
gcs_refer_faction in faction_prop (don’t append _short)?
Didn’t look into this, but at 116324 in [c]content.dll[/c] is the string for [c]_short[/c], so change that to 00 and see what happens…
-
Right, I should have thought of that. Okay, at 036F5F, 0385B1, 03948E, 03A123, 03A42B, 03D8DF, 03E547, 03EB48, 03EC5C, 0401C8, 040C3B, 04172C, 045DB0 and 045EC4 replace [c]2C[/c] with [c]28[/c]; then at 116328, write in [c]gcs_refer_faction_player_short[/c].
-
I should mention another two findings by adoxa:
1:
adoxa wrote:
Ah, I should have done another search with underscores. You’ll find the defaults as two ints at [c]18C754[/c] in [c]common.dll[/c]. The function is only used by [c]Act_PlayerEnemyClamp[/c].Alternative:
common.dll 08E86A 7E31->EB39 = disable PlayerEnemyClamp, instead making NPC target selection random ~adoxa ```I don't recall if it completely deactivates the scripted [c]Act_PlayerEnemyClamp[/c] function, but it has the desired effect when not in a mission. **2:** [Making npcs global, not local to base](https://the-starport.net/freelancer/forum/viewtopic.php?post_id=37919#forumpost37919), found by adoxa; makes a visited NPC at a bar also visited at other bases. Indexed (to Misc section). **3:**: [Removes exclusion zone clipping](https://the-starport.net/freelancer/forum/viewtopic.php?post_id=39612#forumpost39612), prevents far clipping of exclusion zones. I should also **warn** that [adoxa's solution to the 130k asteroid rendering limit](https://the-starport.net/freelancer/forum/viewtopic.php?post_id=25444#forumpost25444) has serious side effects: change of 7 to A results in the asteroids mostly not being rendered and even if so, then spawned in a regular pattern instead of pseudorandomly. I'd suggest we'd have another, closer look there. EDIT: this last statement is **not true** :oops: I used [c]hispania_debris_field[/c] to test, but apparently that one isn't representative. My mistake…. EDIT2: looking more closely, it is still partially true, using F instead of A; now the asteroids do get spawned, but in a very regular pattern. Conclusion: careful raising these two bytes
-
w0dk4 wrote:
The problem with asteroids not being able to be rendered is due to how FL computes unique IDs.
Because after a certain size of the position vector the unique id computation function fails, asteroids will no longer be spawned.At Freeworlds, we simply made the function always return “some” id, no matter if its a broken ID.
Maybe adoxa can fix the code for larger vectors, the function responsible is:
unsigned long __cdecl CmnAsteroid::compute_cube_id(class Vector const &)
in common.dll (062A6010)
@w0dk4: did you apply this patch?
common.dll 460B6 77 3B -> 90 90 = always render static asteroids PART 1 common.dll 460BE 77 33 -> 90 90 = always render static asteroids PART 2 common.dll 460C5 77 2C -> 90 90 = always render static asteroids PART 3 ```Or something similar? I'm asking because adoxa's patch on this subject has side-effects (see above post).
-
Gold_Sear wrote:
w0dk4 wrote:
The problem with asteroids not being able to be rendered is due to how FL computes unique IDs.
Because after a certain size of the position vector the unique id computation function fails, asteroids will no longer be spawned.At Freeworlds, we simply made the function always return “some” id, no matter if its a broken ID.
Maybe adoxa can fix the code for larger vectors, the function responsible is:
unsigned long __cdecl CmnAsteroid::compute_cube_id(class Vector const &)
in common.dll (062A6010)
@w0dk4: did you apply this patch?
common.dll 460B6 77 3B -> 90 90 = always render static asteroids PART 1 common.dll 460BE 77 33 -> 90 90 = always render static asteroids PART 2 common.dll 460C5 77 2C -> 90 90 = always render static asteroids PART 3 ```Or something similar? I'm asking because adoxa's patch on this subject has side-effects (see above post).
I just applied the above patch to my mod as i was having issues with asteroids not rendering after a certain distance. This has cured it with no side effects i can see, which isn’t saying much to be fair. That said, the rocks render now and stop when they should do at the edge of the field. Nice find.
-
Kuze wrote [many years ago]:
From all the fancy new stuff being made, I want to see just one: the ability to use the mouse wheel to scroll up and down in menus. Or it is hard coded and not possible to implement?This must have been when I was offline and missed it. I had an email a few years later that requested wheel scrolling in the equipment dealer, which I wrote (and put on my site, but never posted here, apparently). Just had another email that wanted it to work in space and pointed out a few places where it didn’t work. Somewhat belated, here’s Wheel Scroll.
-
Good work as always Adoxa!
-
common.dll 139964 905332->C0DE26 = using thruster hp_type for [Light] ~HeIIoween common.dll 139A40 905332->C0DE26 = using thruster hp_type for [AttachedFX] ~HeIIoween
-
common.dll 139A40 905332->C0DE26 = using thruster hp_type for [AttachedFX] ~HeIIoween
-
starworld wrote:
I use this hack
http://the-starport.net/freelancer/forum/viewtopic.php?post_id=58738#forumpost58738
and
http://the-starport.net/freelancer/forum/viewtopic.php?post_id=60591#forumpost60591But there is a problem when zoom in and move.
The player icon and the waypoint icon are outside of the map :
http://nsa37.casimages.com/img/2016/09/20/160920072300115764.jpgSomeone have a solution ?
Happy 20th birthday Freelancer!
So this is going to be a long post.
In honour of Freelancer’s 20th anniversary, I tried to fix the above problem. As you can read in my original reply, I thought it was easy to fix, but it turned out to be damn tricky to track down. No luck so far, but in my hunt I stumbled upon dozens of other related things, which I will sum up now and index to wiki:related to NavMap size:
Freelancer.exe 917CC 112000f = size of system map; beware, affects size of player ship icon aswell ~Gold_Sear Freelancer.exe 1D2EEC 33333f = size of sectors in F9 info screen; needs to keep ratio with variable above ~Gold_Sear Freelancer.exe 1D2EF0 -99999f = starting point of sector calculation in F9 info screen, needs to be -3*variable above ~Gold_Sear
In addition to WhiskasTM’s original post about the size of system diamonds:
Freelancer.exe 915C8 1.0f = bunch scale of all system diamonds on Universe Map (method 4) ~Gold_Sear ```This one really only scales the diamonds, not also move them. The following offsets can be used to clear the NavMap of names inside of the map (other than labels):
Freelancer.exe 8F007 -0.274f = NavMap system/universe name x-displacement ~Gold_Sear
Freelancer.exe 8F00F -0.252f = NavMap system/universe name y-displacement ~Gold_Sear
Freelancer.exe 90582,9FD83 -0.294f = NavMap letter alignment perpendicular to grid ~Gold_Sear
Freelancer.exe 90620,9FE33 -0.309f = NavMap number alignment perpendicular to grid PART 1 ~Gold_SearOf course, I also looked into zooming, and found the following:
Freelancer.exe 1D3F30 -0.257f = NavMap number lower limit when zoomed ~Gold_Sear
Freelancer.exe 1D3F34 0.274f = NavMap number upper limit when zoomed ~Gold_Sear
Freelancer.exe 1D3F38 0.31f = NavMap letter left limit when zoomed ~Gold_Sear
Freelancer.exe 1D3F3C -0.23f = NavMap letter right limit when zoomed ~Gold_Sear
Freelancer.exe 9FCF6,9FC9B 8.6f = NavMap letter/number zoom factor ~Gold_SearFreelancer.exe 9F2B4 DC 0D 28 3F 5D --> D8 35 F6 FC 49 = align NavMap zoom factor to letter/number zoom factor; redundants adoxa’s NavMap zoom factor, now controlled by the NavMap letter/number zoom factor ~Gold_Sear
For those of you (including me) who find this 'PHYSICAL MAP' label on the top of the NavMap annoying, the following might help:
Freelancer.exe 211C94 1360i = MAP LEGEND identifier ~Gold_Sear
Freelancer.exe 211CA0 968i = BASE LIST identifier ~Gold_Sear
Freelancer.exe 211C84 1338i = PHYSICAL MAP identifier ~Gold_Sear
Freelancer.exe 211C88 1339i = POLITICAL MAP identifier ~Gold_Sear
Freelancer.exe 211C8C 1340i = PATROL PATH identifier ~Gold_Sear
Freelancer.exe 211C98 1361i = MINEABLE ZONES MAP identifier ~Gold_SearWhen having cleared the NavMap of these texts inside of the map, the labels can be moved further from the center:
Freelancer.exe 1D3EF0 -0.198f = upper limit for labels on NavMap ~Gold_Sear
Freelancer.exe 1D3EF4 0.192f = lower limit for labels on NavMap ~Gold_SearEDIT: forgot to mention: I updated [this patch](https://the-starport.net/freelancer/forum/viewtopic.php?post_id=63559#forumpost63559):
common.dll 460B0 81 F9 --> EB 15 = always render static asteroids ~w0dk4,Gold_Sear
-
Update: FOUND IT! A solution to starworld’s original problem:
Freelancer.exe 95900 E0 75 5C --> 9C 63 49 = NavMap zoom move limit PART 1 ~Gold_Sear Freelancer.exe 95916 E0 75 5C --> 9C 63 49 = NavMap zoom move limit PART 2 ~Gold_Sear Freelancer.exe 9639C 90 90 90 90 -> 0.5f = NavMap zoom move limit PART 3 ~Gold_Sear ```To explain: at [c]95900[/c] and [c]95916[/c], the limiting variables are multiplied by a [c]0.5f[/c] located at [c]1C75E0[/c], but that offset is used by a _lot_ of other things, so I used unused padding bytes at [c]9639B[/c] (**EDIT**:[c]9639C[/c]) instead. @adoxa: when I set [c]9639B[/c] to [c]0.6f[/c], my disassembler shows altered code at the beginning of the next function. Is this a problem? EDIT: used [c]9639C[/c] now instead of [c]9639B[/c], this affects part 1 and 2 too.
-
Hi folks, with the TSP forum upgrade on the horizon, we’re shifting stuff from the wiki over to a new system, this includes Limit Breaking 101!
I’ve ported the tsp-wiki page over to the new format, and will be doing a pass of this thread to add any offsets that haven’t been included yet.
The new page can be found here: https://wiki.the-starport.net/FL Binaries/limit-breaking-101 It pulls from this repository: https://github.com/TheStarport/KnowledgeBase, and auto-updates when there’s a change.
If you’d like to contribute to the page, feel free to either make a PR or give someone on the Galactic community discord a shout for direct access. We’re still ironing out a few issues, and are in the process of porting the wiki content as a whole over.