Age | Commit message (Collapse) | Author |
|
A lot of this is random WIP from a while back, at least a month ago, and
is being committed now to get it out of the way so that other patches
can be brought in and integrated against it without causing headaches.
Also rolled into this commit is a way to distinguish plugin_unload from
exiting the game. This is required for another soon-to-be-integrated
feature to avoid crashing on exit, and could in theory also be used to
speed up unloading on exit in future. While we're at it, this also
avoids the need to linearly scan through the plugin list to do the
old branch unloading fix, because we can.
Rough summary of the other smaller stuff I can remember doing:
- Rework bitbuf a bit
- Add some cryptographic nonsense in ac.c (not final at all)
- Introduce the first couple of "chunklets" libraries as a sort-of
subproject of this one
- Tidy up random small bits and bobs
- Add source for a small keypair generation tool
- Rework democustom to be very marginally more useful
|
|
Absolutely no idea how long this has been broken for!
|
|
|
|
This also tidies up library handle grabbing with more os.h stuff, and
improves the VDF creation logic - since we no longer store a couple of
paths which makes it necessary to change that a bit anyway.
|
|
The zip date is tomorrow as that's the expected release date pending
some testing and hearing back from Portal people re official approval
for use in runs. With any luck it won't need to be bumped further.
|
|
|
|
This is kind of a breaking change but the other code was obviously never
released or relied on by anyone - it will be pushed at the same time as
this in fact. It still seems worth having the original committed
separately to show the progression of development of the feature,
however. Technically the standalone vote cooldown resetting could also
be added back if ever desired however there doesn't seem to be that much
of a use case for that at the moment.
This feature ought to be a lot more convenient now as it allows for
resetting back to a set starting point no matter where the player is in
a run. It isn't universally useful as All Campaigns Legacy solo runs
require switching to a different type of server and Main Campaigns co-op
runs require restarting the game after Swamp Fever to work around the
god mode bug, however it is still useful in a good few situations.
Unfortunately this turned out to be pretty complex to implement, first
requiring a bunch of interop with valve's rather wacky KeyValues stuff,
and then requiring a bunch of especially difficult reverse engineering
of L4D1 v1.0.0.5 because it doesn't use said KeyValues stuff and does
something else completely different instead.
A side effect of all this work is that the nag removal hack is now part
of the KeyValues stuff in kvsys.c, which is kind of a comfier place for
it than just kind of dumped in the middle of sst.c.
|
|
Might as well return the length since we have it anyway. Also this maybe
fixes the totally busted Linux code but it's still untested and probably
doesn't work for reasons that will be discovered later on.
|
|
|
|
- Use const in more places where it makes sense - not absolutely
everywhere because it can get a bit annoying
- Make all the instruction search loops a bit more readable by casting
the function pointer into a temporary variable to loop over
- Add a few more doc comments and fix a typo or two
- Make that RTTI thing flexibly-sized, finally
- Don't include gamedata.h in vcall.h for no reason; consequently
include gamedata.h in a bunch of places where it was implictly pulled
in before
- Fix dbg_toghidra() and ent_getedict() having mismatched return types
between their headers and respective source files
- Remove that one broken, hacky, secret Portal non-feature that probably
nobody even ended up using; it can be implemented properly later if
required
|
|
In both the engine and SST it's used in more places than just console
printing, so it makes more sense to give it a more appropriate nanme and
location.
|
|
Thanks Bill for figuring out what the problem was.
|
|
|
|
Thanks Aciidz for pointing out the strings with no newline in them, and
thanks Clang for warning me I wasn't using a function for ages while I
was too lazy to delete it.
|
|
Another big one. Here's a list of things:
- Since the upcoming C23 standardises typeof(), use it as an extension
for the time being in order to allow passing arbitrary types as
macro/codegen parameters. It wouldn't have been a big leap to do this
even without standardisation since it's apparently an easy extension
to implement - and also, to be honest, this project is essentially glued
to Clang anyway so who cares.
- Likewise, bool, true and false are becoming pre-defined, so
pre-pre-define them now in order to get the benefit of not having to
remember one header everywhere.
- Really ungodly/amazing vcall macro stuff now allows us to call C++
virtual functions like regular C functions. It's pretty cool!
- Events can now take arbitrary parameters and come in two types:
regular events and predicates.
All this makes the base code even uglier but makes the feature
implementation nicer. In other words, it places more of the cognitive
burden on myself and less on other people who might want to contribute.
This is a good tradeoff, because I'm a genius.
|
|
|
|
|
|
Copyright note: the stuff Bill wrote is all still in the other file.
|
|
Committer's note: this is somewhat adapted from Bill's original code,
written a while back, but he gets full credit for actually doing the
hard part.
|
|
Also centralise NEXT_INSN macro, into its own header at least for now.
|
|
Some of the alias stuff was kind of stolen from earlier figuring-out
Bill did. More Bill code is also on the way. :^)
|
|
|
|
|
|
Currently only works in 3420 and 5135 and uses hardcoded offsets with a
byte pattern sanity check. Future work includes making it more widely
compatible, and also doing the crazy thing I wanted to do but gave up on
wherein the actual textures and stuff get patched in memory to sync up
all the colours.
Oh also, a couple of vtables were erroneously made executable, so I went
ahead and fixed that while I was at it.
|
|
|
|
A stupid, stupid bug I'd probably never have caught for years and years.
Thanks Evan Lin in the Portal Discord for pointing it out!
|
|
|
|
People want to be able to write a scheduled-release passphrase to demos
to prove that said demos were recorded during a timeboxed event. Ideally
this is something that'd be part of the custom demo data and general RTA
run management stuff that's planned, but of course that doesn't exist
yet. When it does exist, we'd probably want rid of this nonsense, so
it's marked hidden and I don't plan to document it anywhere "official."
It's just here for people who really need it in the short term.
|
|
This was the simplest way I could think of to solve this issue. Thanks
again Aciidz for pointing the issue out, and thanks Turtle Rock for
shipping such a broken game.
|
|
|
|
This was a lot more code than expected, but it might be finally close to
time to release the next beta...
We'll see if any more rabbit holes present themselves to jump into,
though.
|
|
- A bunch of stuff is now defined in one header, engineapi.h
- engineapi.c is responsible for setting up any interfaces/stuff that's
used in more than one place
- mkgamedata is pretty much rewritten and now supports nested
conditionals
- gamedata variables no longer have the gamedata_ prefix because it was
just annoyingly long all the time
- vcall macros are somewhat revamped and support dynamic (gamedata)
indices
- Portal 1 FOV can be set anywhere from 75-120 using fov_desired -
tested in both the main versions currently used by runners
- A few typos were also fixed ("intput," "writeable," "indexes")
|
|
|
|
Default gamedata values actually work the way they're supposed to now.
|
|
Thanks Aciidz and Bill for spotting these.
Lesson (ostensibly) learned: Don't program while sleep-deprived!
|
|
Breaks the Linux build because I can't file paths brain I need sleeping
|
|
- Just ask the engine for the game directory instead of doing the stupid
argv sniffing hacks from the early days of trying to get the damn
thing working.
- Also add some other path variables, functions and whatnot, and do some
other minor tidying up.
- Also also, another damn copyright year, somebody please help me.
Unfortunate negative effect off this change: con_init() no longer
reports the game name, because it has to happen before gameinfo_init().
I've decided I don't really care, though.
|
|
This also introduces some stuff for interacting with the current plugin
list. Other plugin management utilies are Coming Soon...
|
|
It's archive so you can set m_rawinput 1, load SST via VDF and then
never think about it again.
|
|
Sometimes, you just want to Unicode.
|
|
This was a smaller oversight in the crash fix commit. I'd thought about
it, but forgotten to do it.
|
|
Important note: it doesn't WORK on Linux, and there's tons of warnings
and stuff, but it's easier to work on when all the compiler output and
whatnot is there.
|
|
Preparing for the January beta release.
|
|
This is more old code that wasn't part of the initial release. Figure I
might as well throw it in for later.
|
|
|
|
|
|
This is done through a new "fixes" file which will probably become one
of those silly dumping grounds that every project has to have somewhere
to put random miscellaneous crap in.
These are mainly hidden in L4D2 but they just get unilaterally unhidden
if they exist, just to be sure they're accessible.
As a bonus, it turns out that unhiding a single cvar also allows us to
set sv_cheats 1 in Left 4 Dead 2, bringing an end to the need to port-
forward a listen server for co-op practice.
|
|
With code from Bill. Thanks Bill!
|