Releases: nosoop/SMExt-SourceScramble
0.8.1.1
Codebase is identical to 0.8.1, except we now use Ubuntu 22.04 runners for the Linux build since those are the oldest ones currently offered by Github as of two weeks ago.
Outside of lacking extrinsic motivation to build it out myself, I'd be open to supporting 20.04 builds.
If you'd like to tackle it, stepchowfun/toast seems like a nice way to set up an environment.
A chroot is probably fine too.
Opaque remote-only CI is a miserable dumpster fire
0.8.1
0.8.0
This release adds 64-bit support to some extent.
package.tar.gz includes both 32- and 64-bit versions of the extension for Linux servers, while package.zip includes the same for Windows servers.
This release is compiled against SourceMod and Metamod:Source 1.12.
It may be backwards compatible with SourceMod 1.11 as the 0.8.0-pre1 release could be used with it, but I make no guarantees on that since I no longer have a server running 1.11 due to SDK changes.
Most of the release is unchanged from the prerelease builds, except it now tracks the stable 1.12 branches of dependencies instead of master, plus the merge of a feature PR.
Added
- Preliminary 64-bit support. This is 'preliminary' because upstream SourceMod currently doesn't define support for 64-bit addressing.
- Because SourceMod's scripting interface only supports a one-to-one mapping of
Addressvalues on 32-bit platforms and is outright broken on 64-bit (no, the pseudoaddress system is not a working solution), the following properties and natives will currently throw errors when accessed on a 64-bit server:MemoryPatch.Address,MemoryBlock.Address,GetAddressOfCell, andGetAddressOfString. - This behavior is expected to change in the future once SourceMod has finalized on how to properly handle 64-bit addresses. If SourceMod doesn't make a decision, I may introduce my own type for this extension, but for now I'm opting not to so we can save potential compatibility headaches down the line.
- For 64-bit servers, statically defined patches will work; anything that requires a plugin to write on top of the patch at runtime will not work at this time (since that requires
StoreToAddress, which relies on a workingAddressrepresentation).
- Because SourceMod's scripting interface only supports a one-to-one mapping of
sourcescrambleis now registered as a shared library. (#24)
Changed
MemoryBlock.LoadFromOffsetandMemoryBlock.StoreToOffsetare now native functions instead of being wrappers around SourceMod'sLoadFromAddressandStoreToAddress, to allow for in-block memory accesses on 64-bit servers.- Plugins will need to be recompiled against the new version if they want to target 64-bit servers, otherwise they will continue to function as they did on 32-bit platforms.
- Recompiled plugins will not work on Source Scramble versions prior to 0.8.0.
- As we no longer use
StoreToAddress,MemoryBlockinstances are now instantiated with+rwxto maintain existing intent (#7). - The built-in patch manager was modified to not use
MemoryPatch.Addressas part of its output so it continues to work on both 32- and 64-bit platforms.
0.8.0-pre2
Fixed
MemoryBlock.StoreToOffsetno longer erroneously falls through on the switch case that identifies the size of the write. This was a regression introduced in 0.8.0-pre1.
0.8.0-pre1
Prerelease build for 64-bit support.
package.tar.gz includes both 32- and 64-bit versions of the extension for Linux servers, while package.zip includes the same for Windows servers. It looks like the extensions work fine for SM 1.11 even though they're currently compiled against the latest commit, so plugins that are built against the latest version of the extension can run without issue there.
Added
- Preliminary 64-bit support.
- Because SourceMod's scripting interface only supports a one-to-one mapping of
Addressvalues on 32-bit platforms and is outright broken on 64-bit (no, the pseudoaddress system is not a working solution), the following properties and natives will currently throw errors when accessed on a 64-bit server:MemoryPatch.Address,MemoryBlock.Address,GetAddressOfCell, andGetAddressOfString. - This behavior is expected to change in the future once SourceMod decides to properly handle 64-bit addresses. If SourceMod doesn't make a decision, I may introduce my own type for this extension, but for now I'm opting not to so we can save potential compatibility headaches down the line.
- Statically defined patches will work; anything that requires a plugin to write on top of the patch at runtime will not work at this time.
- Because SourceMod's scripting interface only supports a one-to-one mapping of
Changed
MemoryBlock.LoadFromOffsetandMemoryBlock.StoreToOffsetare now native functions instead of being wrappers around SourceMod'sLoadFromAddressandStoreToAddress, to allow for in-block memory accesses on 64-bit servers.- Plugins will need to be recompiled against the new version if they want to target 64-bit servers, otherwise they will continue to function as they did on 32-bit platforms.
- Recompiled plugins will not work on Source Scramble versions prior to 0.8.0.
- As we no longer use
StoreToAddress,MemoryBlockinstances are now instantiated with+rwxto maintain existing intent (#7). - The built-in patch manager was modified to not use
MemoryPatch.Addressas part of its output so it continues to work on both 32- and 64-bit platforms.
0.7.1.4
0.7.1.3
0.7.1.2 😂
0.7.1.1
This is a sub-patch release; this is effectively the same as 0.7.1.
Added
- GitHub workflow integration for releases and pull requests.
- The automated builds have optimizations enabled.
- Source Scramble Manager now included in release packages and enabled by default.
