Skip to content

WIP: BO6 Dump#2979

Draft
hohle wants to merge 35 commits intoXeeynamo:masterfrom
hohle:bo6
Draft

WIP: BO6 Dump#2979
hohle wants to merge 35 commits intoXeeynamo:masterfrom
hohle:bo6

Conversation

@hohle
Copy link
Contributor

@hohle hohle commented Nov 8, 2025

BO6 functions. Not up today with master.

hohle added 30 commits October 28, 2025 20:56
Changes the default target of `make` and `tools/builds/gen.py` to build
all decomped versions of the game together in one bulid graph.

There are two parts to this change: making assets writes atomic to
allowing assets to be shared across versions, and updating the build
graph to not duplicate shared targets.

Different versions of the game are currently configured to write to the
same asset paths. I think this is a good thing™ since it makes differing
assets obvious. The work to separate these assets was done in cdda8fc
but running multiple versions of `sotn-assets` in parallel resulted in
race conditions that prevented multiple versions of the game from
building together (whether in the same graph or not). This change
updates `sotn-assets` to write files atomically which avoid partial
reads while allowing multiple instances of `sotn-assets` to run
concurrently. An alternative to this approach would be to put
`sotn-assets` rules in the same ninja pool, but that would force them to
be serialized, which seems unnecessary, but possibly simpler.

The second area is merging all three build graphs into a single
monolithic graph. This is primarily meant eliminating duplicate asset
steps for shared assets.

`make` will now build `us`, `hd`, and `pspeu`. using the `VERSION` env
var still works and will only build that version. `make clean` cleans
all versions.

picci builds are out of scope for this change.
Import BO6 and dedup most of the shared code.

There are a lot of implementation similiarities between boss Richter and
player Richter, but also both Dopplegangers.
Import BO6 and dedup most of the shared code.

Had some trouble importing `e_collect` and have not determined the cause
yet. Currently this is using the old
`e_collect`/`blit_char`/`e_collect2` boundaries.

There are a lot of implementation similiarities between boss Richter and
player Richter, but also both Dopplegangers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant