ST-NICCC Competition

category: code [glöplog]
Hi Folks!

The idea came up to held an interesting scene compo when Axis reengineered
the data file format of the famous Atari ST demo „STNICCC 2000“ by Oxygene

Aim is to port that demo on as many platforms as possible. The Atari
8bit version parses the original Atari ST data file (640kb) and renders the
polygon stream as fast as it can. The time counter shows the actual time
spent for complete rendering and stops when it restarts the flight.

Heaven, 1st November 2018

Deadline for Compo... Revision 2019!

Data file and file format desciption here at

sneak peek:
BB Image
BB Image

ps: I had trouble with colors and "non-indexed mode". It is time to fix them now :)
added on the 2018-11-13 16:57:08 by pohar pohar
quick ~1h hack
BB Image
colors are still wrong (does it's really 3-bit per component? sometimes it looks like additional MSB of each component is also used), plus it's running in 32bpp because it's made from (unreleased) demo leftovers :D
added on the 2018-11-13 20:30:02 by wbcbz7 wbcbz7
Atari ST palette format ;)
ok. we found a bug in the description for the colors.

i have updated the file description on

Hey guys, looks like there sneaked in a little mistake in the palette part of the file format description.

The colors are right, but they are stored at the wrong index of the palette. The bitmask is stored backwards. So bit 0 goes to palette index 15 and vice versa.

File-format description will be updated soon.
added on the 2018-11-14 09:33:06 by axis^oxy axis^oxy
On my side, I also have color issues. But they are different than the one of wbc\\bz7 and pohar. I need to learn to code properly ...
added on the 2018-11-14 21:21:44 by krusty krusty
ok, in fact I just to learn to count.. maximum value of a byte is 255 not 256...
added on the 2018-11-14 21:31:26 by krusty krusty
My colors are wrong !!!
added on the 2018-11-14 21:41:45 by pohar pohar
pohar if you have read the color on intel you need to swap the bytes:
Code: uint16_t col9 = bswap_16( short_from_file ); int blu3 = (col9 & 0x007); int gre3 = (col9 & 0x070)>>4; int red3 = (col9 & 0x700)>>8; uint32_t col24 = red3<<21 | gre3<<13 | blu3<<5;
added on the 2018-11-14 22:44:53 by the_Ye-Ti the_Ye-Ti
I have already fixed it, thx
added on the 2018-11-15 00:22:27 by pohar pohar
another quick hack in c#.. works a treat :)

BB Image

BB Image
added on the 2018-11-15 20:09:10 by frenzy frenzy
anyone knows what is up with those self-intersecting polygons?

is there a standard way on howto render those? i assume only the front-facing part should be used?

BB Image
added on the 2018-11-16 19:43:57 by the_Ye-Ti the_Ye-Ti
I'm getting problems with frame #77, from my parser it's the first frame with non-indexed polygons, the first two polygons has 14 vertices, then 3 polygons with 0 vertices...
added on the 2018-11-16 20:49:43 by swapd0 swapd0
fixed... stupid mask values.
added on the 2018-11-16 21:10:32 by swapd0 swapd0
hint: if you think you have a rendering bug... double check with the ST demo .... ;)
BB Image
added on the 2018-11-17 20:04:11 by swapd0 swapd0
Why the image is not shown?
added on the 2018-11-17 20:07:55 by swapd0 swapd0
BB Image
added on the 2018-11-17 20:27:56 by swapd0 swapd0
Cool... Jaguar!
Working on the web version...

added on the 2018-11-18 12:47:12 by friol friol
I'm having problems with the palette.
The palette itself seems to be correct, but the palette associated to each polygon seems wrong.

See the 1st frame, where the front facing polygons should be yellow (in the ST demo), while they are red-ish in my implementation.

Can anyone help?
Updated web version is here:

added on the 2018-11-18 17:42:30 by friol friol
I think you might be masking wrong here:

var blu3=((curcolor&0x007))&0xff;
var gre3=((curcolor&0x070)>>4)&0xff;
var red3=((curcolor&0x700)>>8)&0xff;

Should be &0x07 I'm guessing.
added on the 2018-11-18 17:44:49 by Sdw Sdw