Re: ares and n64 support

David James <[email protected]> Sun, 18 Jan 2026 18:10:23 +0000
Newsgroups gmane.linux.debian.devel.games
Message-ID <CLah92oan5qANt2XKPxiXiyok7DH5p1gClcDg7UHEZ9jp0R9zpnCVRrmHFOZ23hOh5cLRsGdIDKUrCQVA2XNc9J8XHuXGhb4ug78rW8dSnc=@proton.me>
Dear Games Team,

(This is going to be another long one, sorry)

I have been playing around with the build system and I have made it
so both v1 and v2 versions get built on amd64.

Looking at the source, I notice that only amd64 and arm64 get the
SIMD instructions for n64. If we have a package with n64 disabled
just for amd64, it will be the case that people on x86-64-v1 won't
have the n64 core, but someone with an old i386 will, performance be
damned.

So, the options are:
* Disable the n64 on all architectures that cannot have the SIMD
instructions for the n64 core (any architecture that isn't amd64
with v2 or arm64)
* Enable the n64 core on all architectures. Have a separate package
for x86-64-v2/arm64 (SIMD) and all other archs (SISD) and have a
note in the description of the SISD package that performance of the
n64 core may be affected.

I'm suggesting both options because, while I can assume that an i386
system won't run n64 games full speed, modern archs like riscv64
don't get n64 with SIMD and I simply don't know what the performance
would be like.

As for the names, instead of ares-legacy and ares-full, which I came
up with having only amd64 in mind, I propose ares-baseline and
ares-performance if we go with option 1, or ares-no-n64-simd and
ares-n64-simd if we go with option 2.

I have tried to implement a solution that provides a smooth upgrade
path for anyone using ares. Ideally, most users on amd64 would
upgrade to ares-performance/ares-n64-simd, and users with only
baseline v1 support would get the "x86-64-v2-support is
uninstallable" message from, say, aptitude but aptitude would
suggest installing ares-baseline/ares-no-n64-simd as a solution.
Meanwhile arm64 users would just upgrade to ares-performance
(arm64's baseline is high enough to always get n64 SIMD) and all
other archs would get ares-baseline.

I have gone as far in implementing the above as my inexperience will
allow. I have pushed what I've got so far to a new
wip-split-packages branch for your perusal. Any advice on how to
implement the above in d/control, or if the current d/rules is the
best way to handle the double build, would be appreciated.

Regards,

David James