Skip to content

Releases: nosoop/SMExt-SourceScramble

0.8.1.1

28 Apr 11:19

Choose a tag to compare

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

28 Apr 11:01

Choose a tag to compare

Fixed

  • MemoryBlock.StoreToOffset now actually uses the size param for determining the size of the write, instead of using the value itself. (#28)

0.8.0

04 Apr 13:14

Choose a tag to compare

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 Address values 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, and GetAddressOfString.
    • 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 working Address representation).
  • sourcescramble is now registered as a shared library. (#24)

Changed

  • MemoryBlock.LoadFromOffset and MemoryBlock.StoreToOffset are now native functions instead of being wrappers around SourceMod's LoadFromAddress and StoreToAddress, 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, MemoryBlock instances are now instantiated with +rwx to maintain existing intent (#7).
  • The built-in patch manager was modified to not use MemoryPatch.Address as part of its output so it continues to work on both 32- and 64-bit platforms.

0.8.0-pre2

01 Aug 14:31

Choose a tag to compare

0.8.0-pre2 Pre-release
Pre-release

Fixed

  • MemoryBlock.StoreToOffset no 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

16 Jul 11:10

Choose a tag to compare

0.8.0-pre1 Pre-release
Pre-release

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 Address values 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, and GetAddressOfString.
    • 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.

Changed

  • MemoryBlock.LoadFromOffset and MemoryBlock.StoreToOffset are now native functions instead of being wrappers around SourceMod's LoadFromAddress and StoreToAddress, 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, MemoryBlock instances are now instantiated with +rwx to maintain existing intent (#7).
  • The built-in patch manager was modified to not use MemoryPatch.Address as part of its output so it continues to work on both 32- and 64-bit platforms.

0.7.1.4

20 Apr 22:06

Choose a tag to compare

d9555c75-880b-4dde-8f07-4795484d667b

Another sub-patch release; this is functionally identical to 0.7.1.

Changed

  • The automated builds now targets SM 1.11 with Ubuntu 20.04. 0.7.1.3 was using 22.04 runners, which caused the extension to not load on servers with older glibc releases. (#20)

0.7.1.3

20 Apr 07:22

Choose a tag to compare

Another sub-patch release; this is functionally identical to 0.7.1.

Changed

  • The automated build now targets SM 1.11.
  • The extension now uses standard containers in place of AMTL, matching their deprecation from SM.

0.7.1.2 😂

19 Apr 09:48

Choose a tag to compare

Wow, it's (practically) nothing!
This is a sub-patch release; this is effectively the same as 0.7.1 and 0.7.1.1.

Added

  • Source Scramble Manager plugin source now included in release packages.

0.7.1.1

04 May 11:50

Choose a tag to compare

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.

0.7.1

28 Sep 06:06

Choose a tag to compare

Fixed

  • Invalid signatures no longer cause a segfault.