Compare commits

..
34 Commits
Author SHA1 Message Date
NovaRain 1fb58e3aa4 Updated version number and changelog 2025-07-26 19:03:22 +08:00
NovaRain 54bd7149fa Bump nokogiri from 1.18.8 to 1.18.9 in /docs 2025-07-22 13:08:40 +08:00
NovaRain 2c0a1e1e99 Updated sslc readme
Recompiled gl_npcarmor due to sslc fixes.
2025-07-14 10:21:50 +08:00
NovaRain d839bd697d Updated GitHub Actions setup
- Switch to Windows 2022 runner
- Install v140 toolset via Chocolatey (for some reasons trying to add
related components to VS2022 would hang the workflow.)
2025-07-07 11:12:31 +08:00
NovaRain 13c3ac8db5 Removed unnecessary code in SingleCore option
* GetCurrentProcess returns a pseudo handle, with which calling the
CloseHandle function has no effect.
2025-07-05 19:31:16 +08:00
NovaRain 03af7b193d Updated readme about using VS build tools 2025-06-25 10:29:17 +08:00
NovaRain 0e2317fd4c Fixed slightly misaligned buttons in the barter screen
(ref. fallout2-ce/fallout2-ce#204)
2025-06-11 21:42:56 +08:00
NovaRain 71ecec3d40 Updated use.frm/use_e.frm
(use invbox.frm as the base instead of loot.frm)
2025-06-02 10:01:04 +08:00
NovaRain 930d1e8a03 Improved the error handling for missing main .dat files
(ref. fallout2-ce/fallout2-ce#172)
2025-05-31 08:52:33 +08:00
NovaRain 3a9dcc1945 Fixed slightly misaligned buttons in the character screen
(ref. fallout2-ce/fallout2-ce#154)
2025-05-26 21:44:28 +08:00
NovaRain 089a1831f1 Fixed slightly misaligned buttons in the pipboy
(ref. fallout2-ce/fallout2-ce#147)
2025-05-24 08:05:00 +08:00
NovaRain 2f7d8a6db9 Removed glass glare from use.frm/use_e.frm
* Now they look the same as all other interfaces that have the inventory
list and character portrait (ref. fallout2-ce/fallout2-ce#148)

Updated resource files.
2025-05-24 00:25:02 +08:00
NovaRain b65024f039 Added lowercase 'a' as a hotkey for the 'Take All' button
(previously only uppercase 'A')
2025-05-22 08:43:22 +08:00
NovaRain da47ee5134 Improved the clearing of floating text messages after map change
(ref. fallout2-ce/fallout2-ce#115)
2025-05-13 22:00:54 +08:00
NovaRain 17afecf5ca Added a safeguard to stat_level engine function
(ref. fallout2-ce/fallout2-ce#76)

Unified the naming style of return addr variables for some ASM code.
2025-05-11 12:07:10 +08:00
NovaRain 74dca891a1 Minor code edits to Stats.cpp 2025-05-11 09:32:16 +08:00
NovaRain aa3ac70949 Fixed potential undefined behavior in FullItemDescInBarter
* due to obj_examine_func_hack_objdesc, item description is coped to
messageBuffer already (max 354 chars), so in most cases desc is the same
as messageBuffer, which should be UB to strncpy_s. MSVC's implementation
seems treating self-copy as no-op, but we shouldn't rely on this
behavior.
2025-05-04 08:53:48 +08:00
NovaRain 8622917e12 Fixed duplicate sound in the "Move Items" and "Set Timer" windows
* happens when clicking the "Done" button.

Fixed crash when a critter with a powered melee/unarmed weapon runs out
of ammo and there is ammo nearby.

Minor code optimization to Interface.cpp, use spare ecx register instead
of the stack for eax value.
2025-05-03 21:38:33 +08:00
NovaRain b2ccf26bd5 Improved the previous commit
* now the buttons have proper press/release sfx.
2025-05-02 21:23:55 +08:00
NovaRain 3b33131280 Added missing click sound to the buttons in the combat control panel
Updated version number.
2025-04-29 10:19:27 +08:00
NovaRainandGitHub b1ab93c8c0 Merge pull request #592 from sfall-team/dependabot/bundler/docs/nokogiri-1.18.8
Bump nokogiri from 1.18.4 to 1.18.8 in /docs
2025-04-22 12:51:52 +08:00
dependabot[bot]andGitHub 656a8e2e39 Bump nokogiri from 1.18.4 to 1.18.8 in /docs
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.18.4 to 1.18.8.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.18.4...v1.18.8)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-version: 1.18.8
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-04-22 04:50:37 +00:00
NovaRain d16f1bc60c Correction to the previous commit
* shouldn't modify the string in-place.
2025-04-13 16:39:09 +08:00
NovaRain 3b9348dd69 Removed visible newline chars when examining items in the barter screen
(ref. #401, #591)

Minor code edits to BugFixes.cpp.
Updated changelog.
2025-04-13 01:07:09 +08:00
NovaRain d95780aa7c Updated changelog 2025-04-09 09:23:23 +08:00
NovaRain a1a130a44d Minor code edits to Movies.cpp 2025-04-06 12:33:38 +08:00
NovaRain 8323cbd092 Code edit to the previous commit 2025-04-05 22:12:30 +08:00
NovaRain 503e25a92a Changed the implementation of ProcessorIdle
* now the same as CPU_USAGE_FIX in Mash's HRP, with a simpler toggle
setting.

* also avoids slowdowns if the player happens to enable both of them.
2025-04-05 17:37:57 +08:00
NovaRain 114e9d8ae6 Tightened the compatibility mode check (again)
(OS check is now limited to unsupported Windows versions.)
2025-04-04 15:22:36 +08:00
NovaRain 3476a27a54 Reverted commit 1a69eaf
(found another way to fix freezing issues in Win11 24H2.)
2025-04-03 01:20:32 +08:00
NovaRain d112a6ec09 Fixed out-of-bounds selection in the file list when loading a GCD file 2025-04-02 13:59:52 +08:00
NovaRain 1a69eaf39a Reverted part of the optimization for the save/load game screens
(commit 81912b47, as it could cause the cursor to become unresponsive.)

Updated version number.
2025-03-31 21:53:57 +08:00
NovaRainandGitHub 194a736a06 Merge pull request #588 from sfall-team/dependabot/bundler/docs/nokogiri-1.18.4
Bump nokogiri from 1.18.3 to 1.18.4 in /docs
2025-03-22 08:10:18 +08:00
dependabot[bot]andGitHub 7131879776 Bump nokogiri from 1.18.3 to 1.18.4 in /docs
Bumps [nokogiri](https://github.com/sparklemotion/nokogiri) from 1.18.3 to 1.18.4.
- [Release notes](https://github.com/sparklemotion/nokogiri/releases)
- [Changelog](https://github.com/sparklemotion/nokogiri/blob/main/CHANGELOG.md)
- [Commits](https://github.com/sparklemotion/nokogiri/compare/v1.18.3...v1.18.4)

---
updated-dependencies:
- dependency-name: nokogiri
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
2025-03-22 00:00:43 +00:00
40 changed files with 311 additions and 105 deletions
+1 -1
View File
@@ -22,7 +22,7 @@ on:
jobs:
Build:
name: sfall
runs-on: windows-2019
runs-on: windows-2022
steps:
- name: Clone sfall
+24 -5
View File
@@ -1,5 +1,24 @@
# Changelog
## 4.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`)
## 4.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
## 4.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
@@ -10,7 +29,7 @@
* 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 the duplicate 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
@@ -190,7 +209,7 @@
* Removed **ComputeSprayMod** from `ddraw.ini`. Now **ComputeSpray_\*** options no longer require a master switch
* Added a fix for a crash when the player equips a weapon overloaded with ammo
* Added a fix for being able to use the **'Push'** action on members of the player's team in combat when they are knocked down
* Added missing sounds for the markers on the world map interface (similar to Fallout 1, from Ghosthack)
* Added missing sounds to the markers on the world map interface (similar to Fallout 1, from Ghosthack)
## 4.3.4
* HRP: Fixed a few issues with the main menu
@@ -267,7 +286,7 @@
* Added support for using the newline control character `\n` in the object description in `pro_*.msg` files
* Added support for the new **'Healing Item'** flag to item protos. Now AI will also use items with this flag for healing in combat
* Added support for the new **'Cannot Use'** flag to the misc flags of item objects. This flag makes a weapon object unusable in combat
* Added missing sounds for the buttons on the world map interface (similar to Fallout 1 behavior)
* Added missing sounds to the buttons on the world map interface (similar to Fallout 1 behavior)
* Added 5 `metarule3` macros for controlling the save slot with scripts to `sfall.h` in the **modders pack**
* New script functions: `set_scr_name`, `obj_is_openable`
* Updated **NPC armor appearance mod** in the **modders pack** to prevent NPCs from equipping **unusable** weapons
@@ -949,7 +968,7 @@ Original engine bug fixes and various features based on the work by Crafty:
Original engine bug fixes and various features based on the work by Crafty:
* Added a fix for a crash when clicking on empty space in the inventory list opened by **'Use Inventory Item On'** (backpack) action icon
* Added a fix for negative SPECIAL values in character creation
* Added a fix for negative SPECIAL values in the character creation
* Added a fix for the game hanging in an endless loop in combat mode when calling `anim` script functions inside `damage_p_proc`
* Added 3 new arguments to `HOOK_BARTERPRICE` hook script
@@ -1060,7 +1079,7 @@ Original engine bug fixes and various features based on the work by Crafty:
* Added a fix for the original engine issue that caused party members to have incorrect stats when they level up while on drugs
* Added a fix for the unlimited ammo exploit
* Added a fix for negative values in Skilldex window
* Added a fix for the clickability issue in the pipboy and an exploit that allows resting in places where you shouldn't be able to
* Added a fix for the clickability issue in the pipboy and an exploit that allows resting in restricted areas
* Added a fix to prevent **'Too Many Items'** bug from corrupting save files
* Added a fix for the exploit that you can gain stats from more than two doses of a specific chem after save/load
* Added a fix for the original engine issues with reverse order of items in memory relative to visual order in the inventory list
+16 -3
View File
@@ -1,8 +1,8 @@
# sfall
[![License](https://img.shields.io/badge/License-GPL--3.0-blue.svg)](https://www.gnu.org/licenses/gpl-3.0)
[![Dev Build](https://github.com/phobos2077/sfall/actions/workflows/build.yml/badge.svg?branch=develop)](https://github.com/phobos2077/sfall/actions/workflows/build.yml)
[![GitHub Pages](https://github.com/phobos2077/sfall/actions/workflows/gh-pages.yml/badge.svg)](https://github.com/phobos2077/sfall/actions/workflows/gh-pages.yml)
[![Dev Build](https://github.com/sfall-team/sfall/actions/workflows/build.yml/badge.svg?branch=master)](https://github.com/phobos2077/sfall/actions/workflows/build.yml)
[![GitHub Pages](https://github.com/sfall-team/sfall/actions/workflows/gh-pages.yml/badge.svg)](https://github.com/phobos2077/sfall/actions/workflows/gh-pages.yml)
A set of engine modifications for the classic game Fallout 2 in the form of a DLL, which modifies executable in memory without changing anything in EXE file itself.
@@ -46,7 +46,7 @@ You need to set DLL overrides for `ddraw.dll` to __"native, builtin"__ in `winec
### Prerequisites:
* Visual Studio 2015 with **Windows XP support for C++** component. If you're using Visual Studio 2017/2019/2022, make sure to install **VS 2015 C++ build tools (v140)**.
* Visual Studio 2015 with **"Windows XP support for C++"** component. If you're using Visual Studio 2017/2019/2022, make sure to install **"VC++ 2015.3 v14.00 (v140) toolset for desktop"** component as well.
* [DirectX SDK (June 2010)](https://www.microsoft.com/en-us/download/details.aspx?id=6812). You will also need `ddraw.lib` from DXSDK February 2010 and `dinput.lib` from DXSDK August 2007. Both files can be found in the [DirectX SDK Collection repo](https://github.com/NovaRain/DXSDK_Collection).
* [DirectX Runtime (June 2010)](https://www.microsoft.com/en-us/download/details.aspx?id=8109). You can also install it from DirectX SDK installer.
@@ -56,6 +56,19 @@ You need to set DLL overrides for `ddraw.dll` to __"native, builtin"__ in `winec
2. Open the solution file and build with the **ReleaseXP** configuration (this is the one used for sfall releases).
3. If everything is set up correctly, you should have a new sfall `ddraw.dll` in your Fallout 2 directory.
### Minimalist Setup:
If you don't need a full-fledged IDE, you can use Visual Studio Build Tools instead. Taking [Visual Studio 2017 Build Tools](https://aka.ms/vs/15/release/vs_buildtools.exe) for example:
1. Install using the command line:
```
vs_BuildTools.exe --add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.140 --add Microsoft.VisualStudio.Component.WinXP --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP --passive
```
2. Set up a `postbuild.cmd` using the template from the repo.
3. Use MSBuild in **x86 Native Tools Command Prompt** to build sfall:
```
MSBuild.exe ddraw.sln /t:Clean;Build /p:Configuration=ReleaseXP /p:Platform=Win32
```
## Additional info
* [Changelog](CHANGELOG.md)
+11
View File
@@ -85,6 +85,17 @@ runs:
echo "dir=$(cygpath --windows "$DXSDK_DIR/DXSDK_Jun2010/")" >> $GITHUB_OUTPUT
shell: bash
# Install VS 2015 C++ build tools and WinXP Support components via Chocolatey
- name: Prepare VS 2015 C++ build tools
id: vs2015_tools
run: |
echo "::group::Prepare VS 2015 C++ build tools"
choco install visualstudio2017buildtools --package-parameters "--add Microsoft.VisualStudio.Workload.VCTools --add Microsoft.VisualStudio.Workload.MSBuildTools --add Microsoft.VisualStudio.Component.VC.140 --add Microsoft.VisualStudio.Component.WinXP --add Microsoft.VisualStudio.ComponentGroup.NativeDesktop.WinXP --passive"
echo "::endgroup::"
shell: bash
# MSBuild is not in PATH on Windows machines
# Using $GITHUB_OUTPUT to make sure workflow environment remains unchanged
- name: Prepare MSBuild
+3 -6
View File
@@ -1,5 +1,5 @@
;sfall configuration settings
;v4.4.6
;v4.4.7
[Main]
;Set to 1 to enable the built-in High Resolution Patch mode that is similar to the hi-res patch by Mash
@@ -455,11 +455,8 @@ PlayIdleAnimOnReload=0
;Default is 6. Set to 0 for a 12-hour timer
CorpseDeleteTime=6
;Set a number of milliseconds to idle each input loop
;Set to -1 to disable
;Set to 0 to idle only if other processes are waiting for processor time (WinXP/2000: if processes have equal priority)
;Set to 1 (or some higher number if needed) to prevent 100% CPU use. The maximum is 50
ProcessorIdle=-1
;Set to 1 to allow the game to go idle during each input loop, preventing 100% CPU usage
ProcessorIdle=0
;Set to 1 if using the hero appearance mod
;Set to 2 for backward compatibility with scripts that manually fix obj_art_fid/art_change_fid_num script functions for dude_obj
Binary file not shown.
@@ -348,6 +348,10 @@ There are several changes in this version of sslc which may result in problems f
### Changelog
**sfall 4.4.7:**
- fixed leftover stack data caused by the `break` statement
- added Linux & WebAssembly builds
**sfall 4.4.4:**
- fixed stringified procedure names shifting when the same name is called more than once
- syntax improvements:
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More