> Did you ever wonder why explosions and other effects looked so much cooler on the original PlayStation than they did on the Nintendo 64?
Begging the question, aren't we?! Of the examples displayed, I much prefer Star Fox's fx to Silent Bomber's. They fit the game's style well, and the explosions when killing an enemy are just the right amount of rewarding, while not being so ostentatious as to be distracting. SF64 nailed the game feel of destroying enemies, those small little intangibles that make the game satisfying on a visceral level, as Nintendo is so good at doing.
> However, it is possible to implement saturating addition and subtraction in software without branches, using only modular arithmetic and bitwise logical operations that are available on all modern CPUs and their predecessors, including all x86 CPUs (back to the original Intel 8086) and some popular 8-bit CPUs (some of which implement the Z80 instruction set) are still in production.
Does anyone know what the implementation of this is, without conditional moves?
move.b #200,d0
move.b #100,d1
add.b d0,d1 ; 8th bit goes to X flag
subx.b d0,d0 ; d0 = $00 or $ff depending on X flag
or.b d0,d1 ; d1 = 255 if there was saturation
You can do the same with all others that somehow store
the 8th bit carry somewhere then allow using it for substraction.
It's the same issue you encounter with audio mixing. You have to clamp out-of-range values, even though they don't occur a lot. If you don't you get awful artifacts, and have to lower everything so that it can never overflow your range.
This is of course why we have audio compressors that lower everything while it’s loud and bring it back up when it’s quiet and try to do it quickly but without anyone noticing too much. It’s theoretically possible the same trick could work on the N64, except it would require & cost extra math ops that weren’t there.
You know what else didnt support additive blending? S3 ViRGE decelerator, Matrox Mystique mistake, nor NEC PowerVR PCX 1/2, afaik not even Permedia 1/2.
Another pain point was multiplicative blending missing in even more early 3d accelerators.
Then came 3dfx Voodoo doing all the blending modes for free.
15 comments
[ 365 ms ] story [ 246 ms ] threadSo the 'good explosions' were possible on N64 if you did the blending+clamp by hand?
Begging the question, aren't we?! Of the examples displayed, I much prefer Star Fox's fx to Silent Bomber's. They fit the game's style well, and the explosions when killing an enemy are just the right amount of rewarding, while not being so ostentatious as to be distracting. SF64 nailed the game feel of destroying enemies, those small little intangibles that make the game satisfying on a visceral level, as Nintendo is so good at doing.
https://en.wikipedia.org/wiki/Saturation_arithmetic
> However, it is possible to implement saturating addition and subtraction in software without branches, using only modular arithmetic and bitwise logical operations that are available on all modern CPUs and their predecessors, including all x86 CPUs (back to the original Intel 8086) and some popular 8-bit CPUs (some of which implement the Z80 instruction set) are still in production.
Does anyone know what the implementation of this is, without conditional moves?
Another pain point was multiplicative blending missing in even more early 3d accelerators.
Then came 3dfx Voodoo doing all the blending modes for free.