Fallout 2 mod FO2 Engine Tweaks (Sfall)

The hexagonal cursors are labeled MSEF*.frm in data/art/interface (found in the master.dat). I'm sure making variations and scripting them is possible, but the easiest personal fix is to export the file as a .bmp in Frame Animator, change the color and make it bolder in paint, and import it back into the .frm files
 
So I'm trying out Et Tu for the first time and I've tried everything I can think of to get the speed tweak working but to no avail. In the ddraw.ini I have Enable=1 in the speed section, I tried a handful of different keys for SpeedToggleKey, and I manually added SpeedMultiChange because it wasn't present before and tried various different values on that. I checked the debug log and no errors appear. if I change the SpeedMultiInitial, the overall speed of the game does change, so I'm really not sure why I'm not able to just toggle it myself. Any suggestions on what I should try next would be appreciated.
 
Last edited:
Have you tried turning off Num Lock before using numpad keys?
sfall-readme.txt said:
Holding Ctrl and hitting numpad keys 0 to 6 (with Num Lock off) will adjust the game speed.
 
sfall 4.4.6 and 3.8.46 are released on SourceForge, along with their respective modders packs.
Changelog said:
v4.4.6
>Fixed a bug introduced in 4.3.1 that broke the debug message about a missing critter art file
>Fixed an issue where an item with a unique ID in the inventory had its ID reset by a non-unique item
>Restored the position of the ammo bar when ALTERNATE_AMMO_METRE=0 in f2_res.ini
>Improved the fix for the display issue in the pipboy when the automap list is too long
>Improved the compatibility mode check for newer Windows
>Changed PipBoyAvailableAtGameStart option and set_pipboy_available script function to no longer modify the vault suit movie state
>Added a fix for the main menu music not stopping when replaying the intro
>Added a fix for display issues when highlighting a multiline dialogue option
>Added a fix for the incorrect message being displayed when attempting to repair a dead robot
>Added a fix for the double click sound when selecting a location in the Status section of the pipboy
>Added a fix for extra hidden buttons below the location list in the Status section of the pipboy
>Added a fix for map lighting from Night Vision perk not updating when loading a saved game
>Added a fix for an animation glitch when death animations and combat start simultaneously
>Added a fix to prevent the game from hanging when reloading a weapon overloaded with ammo via the interface bar
>Added a few fixes for issues related to weapons with negative ammo
>Added a tweak to replace death animations on critters with single-frame variants on map load
>Added more options for tweaking some engine perks to the perks ini file
>Reduced the green tone of the message window on the interface bar for text clarity


EDIT 2025-04-13:

sfall 4.4.6.1 and 3.8.46.1 are released on SourceForge. They are maintenance releases for the previous version.
Changelog said:
v4.4.6.1
>The compatibility mode check now targets only unsupported Windows versions
>Changed the way ProcessorIdle works to prevent conflicts with CPU_USAGE_FIX option in f2_res.ini
>Added a fix to prevent out-of-bounds selection in the file list when loading a character file
>Added a fix to remove visible newline control characters '\n' when examining items in the barter screen

NOTE: If you're experiencing mouse cursor freezing on the save/load screens or the world map in Windows 11, try setting ProcessorIdle=1 in ddraw.ini or CPU_USAGE_FIX=1 in f2_res.ini.
 
Last edited:
sfall 4.4.7 and 3.8.47 are released on SourceForge, along with their respective modders packs.
Changelog said:
v4.4.7
>Fixed potential undefined behavior in FullItemDescInBarter
>Fixed the behavior of 'break' statement in script compiler and decompiler (compile.exe and int2ssl.exe in the modders pack)
>Improved the fix for removing floating text messages on the map when moving to another map or elevation
>Improved the error handling for missing main .dat files
>Removed glass glare from the 'Use Inventory Item On' window to match other game interfaces
>Added a fix for a crash when a critter with a powered melee/unarmed weapon ran out of ammo and there was ammo nearby
>Added a fix to prevent a potential crash when using skills on non-critter objects
>Added a fix for the duplicate click sound for the 'Done' button in the 'Move Items' and 'Set Timer' windows
>Added a few fixes for slightly misaligned buttons in the pipboy, character screen, and barter screen
>Added missing sounds to the 'Done' and 'Cancel' buttons in the 'Custom' disposition of the combat control panel
>Added lowercase 'a' as a hotkey for the 'Take All' button (previously only uppercase 'A')
 
sfall 4.4.7 and 3.8.47 are released on SourceForge, along with their respective modders packs.
During my overnight preparation to play EtTu 1.14 i narrowed down the subtitle display bug from built in sfall

made an issue o git hub for it..

turns out only the videos that are before main menu have issues displaying subs for upscales if such a video is set to display in game ( post starting a new game from main menu or from pipboy video archives, the subtitles do play for built in hrp.. yet majority of subs still roll out in the second video post starting the engine ( a.k.a after starting fallout2.exe & before reaching main menu)..

hope you manage to reproduce this one.. and fix it, as i know of no bettr way of explaining this issue than what i stated today..

good luck tackling this one... i guess.
 
Is there a list of #define's for HOOK_GAMEMODECHANGE ?

I'm specifically trying to see when dialog closes, and which critter the player had a dialog opened with.
 
I keep getting a weird entry for previous game mode whenever I exit dialogue with a critter.
Here's my base script:
C-like:
procedure start begin
   if game_loaded then begin
      register_hook_proc(HOOK_GAMEMODECHANGE, check_mode_change);
   end
end

procedure check_mode_change begin
   // GameModeChange
   // HOOK_GAMEMODECHANGE (hs_gamemodechange.int)
   // Runs once every time when the game mode was changed, like opening/closing the inventory, character screen, pipboy, etc.
   variable arg0 := get_sfall_arg;  // int - event type: 1 - when the player exits the game, 0 - otherwise
   variable arg1 := get_sfall_arg;  // int - the previous game mode
   debug_msg("gamemode sfall_arg #0 : " + arg0);
   debug_msg("gamemode sfall_arg #1 : " + arg1);

   if (arg1 == DIALOG) then
      debug_msg("Exiting Dialogue");
   else debug_msg("");
end
but it produces this result when exiting dialogue:
Code:
Dialogue Reaction: Said Neutral
gamemode sfall_arg #0 : 0
gamemode sfall_arg #1 : 4
Exiting Dialogue
gamemode sfall_arg #0 : 0
gamemode sfall_arg #1 : -2147483648

When I convert -2147483648 to hex it looks like 0xFFFFFFFF80000000 .
Which looks remarkably similar to
Code:
 #define SPECIAL     (0x80000000)
Is that what its supposed to be?
I'm using sfall v4.3.8

(also, is it possible to print numbers in hex format from ssl script?)
 
Last edited:
sfall uses 32bit integers in most cases, so it's 0x80000000.
The "SPECIAL" mode flag is set when exiting dialogue, switching from dialogue to barter, or a party member joins/leaves in dialogue.
 
I'm not sure what you mean by incorrectly.
C-like:
procedure start begin
   if game_loaded then begin
      register_hook_proc(HOOK_GAMEMODECHANGE, hook_test);
   end
end

procedure hook_test begin
   variable
      event := get_sfall_arg,
      pMode := get_sfall_arg;

   debug_msg("GAMEMODECHANGE: Curr: " + get_game_mode + ", Prev: " + pMode + ", event: " + event);
end
Talking to an NPC then just exiting dialogue:
Code:
GAMEMODECHANGE: Curr: 4, Prev: 0, event: 0
Dialogue Reaction: Said Neutral
GAMEMODECHANGE: Curr: -2147483648, Prev: 4, event: 0 // panel animation
GAMEMODECHANGE: Curr: 0, Prev: -2147483648, event: 0
 
I just meant for -2147483648, I don't know of a way to truncate it to 32 bits (maybe a bwand?)
I'm not using it, but a simple (var == SPECIAL) check wouldn't return true, so I was wondering if I was storing the variable incorrectly or logging it out incorrectly
 
-2147483648 is already within 32bit integer range. I don't know why you'd assume you need to "truncate" it.
"if (pMode == SPECIAL) then debug_msg("SPECIAL mode flag unset!");" works just fine for me when exting dialogue.

EDIT: if you mean cases when it's mixed with other flags (e.g. entering barter), yes, use bwand SPECIAL. Just like how the game does for checking various bit flags in scripts.
 
Last edited:
Back
Top