Dev's Limit Breaking 101 Techniques
-
Hi again,
When making a veritcally oriented trade lane (so it also travels vertically) and setting proper [c]rotate[/c] settings for the rings, travelling in the [c]next[/c] direction works just fine, but in the [c]prev[/c] direction the vertical component is not swapped, causing weird behavior. The following patch fixes it.
common.dll 06191E DD 05 D0 E2 39 06 D9 FF -> D9 E8 D9 E0 D9 EE D9 C1 = swap vertical component of trade lane travel in prev direction (fixes issues with vertically oriented trade lanes) PART 1 ~Gold_Sear common.dll 061941 C7 44 24 24 00 00 00 00 D9 54 24 20 D9 5C 24 30 C7 44 24 2C 00 00 00 00 D9 54 24 24 D9 54 24 28 C7 44 24 30 00 00 80 3F D9 54 24 2C D9 54 24 34 C7 44 24 34 00 00 00 00 -> D9 54 24 3C D9 44 24 54 = swap vertical component of trade lane travel in prev direction (fixes issues with vertically oriented trade lanes) PART 2 ~Gold_Sear C7 44 24 3C 00 00 00 00 D9 E0 D9 5C 24 54 D9 44 DD 05 D0 E2 39 06 D9 FE 24 60 D9 E0 D9 5C 24 60 D9 C1 D9 5C 24 20 D9 54 D9 44 24 48 D9 E0 D9 5C 24 28 24 48
EDIT: indexed to wiki. Also indexed formation leader independency patch to wiki.
-
I’m probably doing this wrong but I am trying to add the FPS limit via the hack.
I went to the part 1 offset and changed 200 to 60 (I guess I am misunderstanding this part).
I went to the offset and changed the values as described in part 2.I loaded up fraps for it’s overlay and it shows a fluctuating range up to around 170s range.
Am I doing this wrong?
Should the max FPS now be 60? -
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