<feed xmlns='http://www.w3.org/2005/Atom'>
<title>mike/sst/src/portalisg.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-02-16T19:11:24+00:00</updated>
<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>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>Add an abstraction for hooking v1 and v2 commands</title>
<updated>2025-08-02T19:43:12+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2025-08-02T15:15:15+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=3cce0e5621dc118b32c4143b42ced51c5328f7c7'/>
<id>urn:sha1:3cce0e5621dc118b32c4143b42ced51c5328f7c7</id>
<content type='text'>
This is a step towards making command hooks work in OE, once OE is
supported.

Not the most ideal or efficient thing in the world, but it works okay
until we come up with something better, I suppose. Not a fan of the argv
copying but avoiding that would make the API a lot less ergonomic.

Not the easiest problem to solve, really...
</content>
</entry>
<entry>
<title>Make additional use of untyped command callbacks</title>
<updated>2025-08-02T13:43:19+00:00</updated>
<author>
<name>Michael Smith</name>
<email>mikesmiffy128@gmail.com</email>
</author>
<published>2025-08-02T13:43:19+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=0d905d7998a031c2d7a1cdc5d0d1148b55b610a2'/>
<id>urn:sha1:0d905d7998a031c2d7a1cdc5d0d1148b55b610a2</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Add a way to cancel "ISG" in Portal runs</title>
<updated>2025-06-27T21:58:54+00:00</updated>
<author>
<name>Willian Henrique</name>
<email>wsimanbrazil@yahoo.com.br</email>
</author>
<published>2025-06-20T00:28:10+00:00</published>
<link rel='alternate' type='text/html' href='https://qdb.woz.blue/mike/sst/commit/?id=35a3e0871c5a98110847765f10a3c2c604323ee6'/>
<id>urn:sha1:35a3e0871c5a98110847765f10a3c2c604323ee6</id>
<content type='text'>
This is a stopgap solution approved by the Portal moderators until we
have a better way to handle timing and verifying closing/restarting the
game mid-run.

Essentially, the agreed-upon short-term solution is to somewhat emulate
restarting the game by simply turning off the glitch and sending the
player back to the main menu.

Committer's note: this wasn't added to the Linux compile script since it
doesn't work and I honestly just couldn't be bothered adding in the
usual ifdef-errors. And in fact I'm starting to wonder if we should just
be leaving out features that don't work on Linux to avoid all the
ifdefs, but that can happen later because the main goal of committing
this is to get a release out, so I don't want to faff about with that
right now.
</content>
</entry>
</feed>
