Whenever I try to generate a pipe normally, the last two pixels of pipe don't transfer anything. if I delete those last two pixels then the particles in the pipe will be able to exit, but otherwise it just doesn't work
here's an example
This is an undiscovered bug, likely caused by the somewhat huge update on PIPE.
Let's call the leftest PIPE with water as Selfish PIPE(tmp = 0x80600) and
the rightest PIPE without water as Poor PIPE(tmp = 0xDA100).
The Selfish PIPE is using the "predefined 1 pixel thick pipe movement(line 476)"
so it simply try to push its content to the direction pointed by
DIRECTION_THAT_IT_READS_FROM(value=6[Right]) (line 478).
But this is wrong! It should be pushing to DIRECTION_THAT_IT_SENDS_TO(value=7-6=1[Left])
Therefore the Selfish PIPE never even check if the Poor PIPE is empty or not, it does not care.
It could be the fault of line 478, which try to use DIRECTION_THAT_IT_READS_FROM,
but it could also be the fault of line 164-165, which defines the position storing DIRECTION_THAT_IT_READS_FROM and DIRECTION_THAT_IT_SENDS_TO
yet giving strange values to each of them as if the coder mix them up after dealing with a lot of bit representations with no obvious meaning.
But I am still quite busy so the analysis must ends here.
Should raise a issue in github and be fixed.
Not only there are problems with exit, but with PIPE and PPiP in general. Now 1 pixel width pipe is the slowest type of pipe again - just like in pre-Cracker64 era. It basically undoes all the work done with pipe.
EDIT: Oh, it doesn't even hold quartz colors anymore (clay is still ok).