<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mike/sst/src/con_.c, branch v0.18-BETA</title>
<subtitle>Source Speedrun Tools: practice tools and handy features for Source Engine games</subtitle>
<id>https://qdb.woz.blue/mike/sst/atom?h=v0.18-BETA</id>
<link rel='self' href='https://qdb.woz.blue/mike/sst/atom?h=v0.18-BETA'/>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/'/>
<updated>2026-10-10T03:23:05+00:00</updated>
<entry>
<title>Fix cvar value clamping not changing the string</title>
<updated>2026-10-10T03:23:05+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2026-07-27T20:38:26+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=b31df092583c1bfb9399b51fa04733955f73c230'/>
<id>urn:sha1:b31df092583c1bfb9399b51fa04733955f73c230</id>
<content type='text'>
I believe this was a regression in the OE support added in 0.15, so it's
been here a while. We don't have a lot of clamped cvars so I guess maybe
nobody noticed for a while. I just happened to find it while testing
other stuff. Quite a silly mistake but an easy fix.
</content>
</entry>
<entry>
<title>Size-optimise cvar value cleanup</title>
<updated>2026-04-04T00:37:54+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2026-04-03T20:45:17+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=2ee93c3f46f8e948d2331eab46c95322a88874ee'/>
<id>urn:sha1:2ee93c3f46f8e948d2331eab46c95322a88874ee</id>
<content type='text'>
Put all the cvars together contiguously; then we don't need to generate
lots of individual calls to extfree() and can instead simply iterate a
fixed-sized array.
</content>
</entry>
<entry>
<title>Fix autojump on 4104 (Portal and HL2 episodes)</title>
<updated>2026-04-04T00:37:54+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2026-01-14T18:30:46+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=aff3bd1fa58cf82b18fde505ef14d71fc9ca54e5'/>
<id>urn:sha1:aff3bd1fa58cf82b18fde505ef14d71fc9ca54e5</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Size-optimise a little more, and tweak minor stuff</title>
<updated>2026-04-04T00:37:54+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2025-12-30T20:29:48+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=0fdf9b3ed716a8baf048e7e302c4d9e727999df2'/>
<id>urn:sha1:0fdf9b3ed716a8baf048e7e302c4d9e727999df2</id>
<content type='text'>
This isn't really making a difference right now but maybe it will in
future builds with different section padding or LTO optimiser
interactions or whatever.
</content>
</entry>
<entry>
<title>Do away with memcpy/memset/memcmp</title>
<updated>2026-02-16T19:11:24+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2025-12-27T03:05:05+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=8d4b47298b6c9eeb9a3f79a5b80d894f80ed4a45'/>
<id>urn:sha1:8d4b47298b6c9eeb9a3f79a5b80d894f80ed4a45</id>
<content type='text'>
Now everything is either explicitly a rep thing, or explicitly some
other small run of reasonably efficient instructions. No library calls
or function call overhead of any kind. Code size remains nice and small.

Ban a few other bad libc functions while we're at it. More can be added
later if we decide that's a useful idea.

This will require some discipline and workarounds to cope with Clang's
tendency to shove mem* calls in places you don't want them even when you
tell it not to. Well, c'est la vie.

I'm a little nervous that the __builtin_memmove() usage in shuntvars()
could still one day emit actual library calls. It appears we're not
importing memmove() from anywhere at the moment, though. So I guess it's
good enough for now.

Also I had to get rid of alloca() in con_.c but that was kind of bad
anyway, so that's fine.
</content>
</entry>
<entry>
<title>Move to a shared static RWX section</title>
<updated>2026-02-16T19:11:24+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2025-12-18T21:35:50+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=7a07c08abe46f97f2412f06c77204e9015f97a47'/>
<id>urn:sha1:7a07c08abe46f97f2412f06c77204e9015f97a47</id>
<content type='text'>
Does away with the need to mark a region as executable on load.
Also allows the self-modified stuff and hook trampolines to fit in the
same page, so we take up ever-so-slightly less memory.

Unfortunately I had issues getting the test binary to build correctly
and eventually decided to give up as it wasn't testing much of value
anyway.

Also note that the build now allows for .c and .S files with the same
basename, which required renaming the .o files, so you might want to
clean out your .build/ directory before building this one.
</content>
</entry>
<entry>
<title>Use the correct rdata section name</title>
<updated>2025-12-13T18:28:44+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2025-12-13T18:28:44+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=186aea515dd773bb11464714886ca5203d2be2ab'/>
<id>urn:sha1:186aea515dd773bb11464714886ca5203d2be2ab</id>
<content type='text'>
Saves 512 bytes of useless padding. Oops!
</content>
</entry>
<entry>
<title>Allow mutating argv in command callbacks and hooks</title>
<updated>2025-12-01T21:37:31+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2025-12-01T21:37:31+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=99f7bb3d39043f74d03b29dc7d6a3f08570c544c'/>
<id>urn:sha1:99f7bb3d39043f74d03b29dc7d6a3f08570c544c</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Turn x86 stuff into a chunklet to help out SPT</title>
<updated>2025-11-24T03:23:22+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2025-11-24T03:19:49+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=508878ff0a9e4cd8528727c41819bc2d70b33dd0'/>
<id>urn:sha1:508878ff0a9e4cd8528727c41819bc2d70b33dd0</id>
<content type='text'>
Quick unused header cleanup pass while we're at it.
</content>
</entry>
<entry>
<title>Mark hidden stuff as unsupported in help text</title>
<updated>2025-11-15T20:42:55+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2025-11-15T20:33:33+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=13ddf47d80893eb4d09ca31f5469b835f24170c7'/>
<id>urn:sha1:13ddf47d80893eb4d09ca31f5469b835f24170c7</id>
<content type='text'>
</content>
</entry>
</feed>
