Jump to content
Heaven/TQA

ST-NICCC 2000 "demake" from ST to Atari 8bit

Recommended Posts

Compo: Atari 800 VBXE
Platform: Atari Ultimate stereo VBXE $d6xx
Fileformat: Atarimax 8mbit flashcart format!
(Please use Sound Mixer as Song is played back in MONO!)
Desire & Oxyron present a new compo at Silly Venture 2018
Idea: Axis & Heaven
Code of Atari 8bit VBXE Version: Heaven
Music: X-Ray pimped by Miker
Vector data by Atari ST Crew Oxygene
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
polyon stream as fast as it can. The time counter shows the actual time
spent for complete rendering and stops when it restarts the flight.
More infos on the file format and the data file itself is available at
www.arsantica.com
Heaven, 1st November 2018
Compo: Atari 800 VBXE
Platform: Atari Ultimate stereo VBXE $d6xx
Fileformat: Atarimax 8mbit flashcart format!
(Please use Sound Mixer as Song is played back in MONO!)
Desire & Oxyron present a new compo at Silly Venture 2018
Idea: Axis & Heaven
Code of Atari 8bit VBXE Version: Heaven
Music: X-Ray pimped by Miker
Vector data by Atari ST Crew Oxygene
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
polyon stream as fast as it can. The time counter shows the actual time
spent for complete rendering and stops when it restarts the flight.
More infos on the file format and the data file itself is available at
www.arsantica.com
Heaven, 1st November 2018
Atari ST:
Atari 800 with VBXE and 8mbit AtariMax flashcard:

 

desiron_st_niccc_cart_vbxe.zip

  • Like 20

Share this post


Link to post
Share on other sites

Wow, I'd say it's faster than the ST!

 

is the CPU still a stock unacellerated 6502?

 

Is the VBXE CPU being used to accellerate calculations?

Share this post


Link to post
Share on other sites

Hello Karolj

 

Why $d6xx? $d6xx is used/reserved for the PBI.

 

Sincerely

 

Mathy

Edited by Mathy

Share this post


Link to post
Share on other sites

Mathy what is honestly standard? Mine is d6xx? And compo machine, too? Will prepare a NTSC and d7xx one.

  • Like 2

Share this post


Link to post
Share on other sites

Nice. What was that other 3D space flight demo that was redone on an accelerated A8 CPU? It reminds me of that.

 

I'm curious though as to how the rendering is done - my guess is just lots of horizontal line blits?

 

It's work like this that says to me "Where's the Carrier Command conversion?"

Share this post


Link to post
Share on other sites

Nice. What was that other 3D space flight demo that was redone on an accelerated A8 CPU? It reminds me of that.

 

I'm curious though as to how the rendering is done - my guess is just lots of horizontal line blits?

 

It's work like this that says to me "Where's the Carrier Command conversion?"

Actually initial data was rendered in Maya with a custom

Exporter with additional converter by Leonard to provide a clipped polygon stream for the ST version in 64k chunks.

 

The data file is based on bytes and 256x200 screen resolution. Has 2 modes, so called index and non index mode.

 

In index mode it loads all frame vertices into xy arrays and then renders one frame using those cached polygons. In non-indexed frames it just dumbs those polygons on screen.

 

In meantime additional palette entries per frame can be set so at starts eg it loads 15 rgb palette entries of the ST and when needed colors are exchanged.

 

I took exactly that ST data into Atari8max flash card (81 banks) and parse that data and do the same like

The ST version. Decide on command bytes what to do.

 

Why it is faster? Can not tell too much details at it is a compo with other platforms but the VBXE is used to calculate the polygon line slopes and using my flat shader to draw a polygon stripe. Compared to my 3D engine its not Tris but here up to 15 vertices per polygons, and yes scanedge filler is done with vbxe, too. Dynamic blitlist from y1 to maxy per polygon :).

Share this post


Link to post
Share on other sites

First of all (and do keep that in mind while reading the rest of this post), great work Heaven and Axis!

 

Wow, I'd say it's faster than the ST!

Atari 800 with VBXE and 8mbit AtariMax flashcard

Its faster than ST on a 1,77 MHz 6502.

;)

 

A few facts about the STF version:

 

- It's playing a .mod soundtrack at 14.985kHz on the YM2149 (unless I fumbled up my calculations), this is VERY CPU intensive

- It's streaming polygon data from floppy while running the demo, also does not help on CPU usage!

 

Just as a test I disabled the .mod player while the demo was running - and only the player part mind you, not the mixer. The frame rate then skyrocketed :)

 

So IMHO the comparison was a bit apples vs oranges. Other than that, again: great work!

  • Like 3

Share this post


Link to post
Share on other sites

Ggn thanks for the insight. Of course Leonard told me, too, that the poly drawer on ST is not maxed out of course.

 

;) but it was released so... up to the ST guys to beat my version ;).

 

How about the STE?

  • Like 2

Share this post


Link to post
Share on other sites

VBXE to calculate line slope ?

 

On a stock core that sounds sort of amazing to me. I looked into possible calculating options for VBXE, I think I even started a thread about it nearly 10 years ago.

With only 8 bit maths and no carry my finding was that the options are somewhat limited.

Though of course with multiple blit passes and a bit of thinking outside the box, stuff that's thought impossible might be done.

  • Like 1

Share this post


Link to post
Share on other sites

ok... Little bit more insight into slope calc...

 

More precise would be blitter filling the poly edges start values. The cpu makes the m=dx*1/dy = stepy value

 

Now I take a 64k count table so to say and copy that into the edge buffer. Basicly its an 8.8 table (0*256, 1*256, ...)

 

After polygon edges were filled in blitter calculates the span length by right edge minus left edge which is basicly

 

Span length = left edge + (right edge eor ff+1)

 

The 12bit limit of stepy is a limitation though and needs to be treated though.

 

So actually blitter does the 12bit add with help of that 8.8 table which holds basicly the accu ;)

Edited by Heaven/TQA

Share this post


Link to post
Share on other sites

But what about following idea... dedicate 128k dx/dv table for 16bit results?

Edited by Heaven/TQA

Share this post


Link to post
Share on other sites

That came to mind minutes after I posted... yeah, lookup tables I think was discussed before, I even thought of using a huge one just to take care of the missing carry thing.

 

Re real vs Altirra - I believe in the docs there's mention of timing accuracy. I think for VBXE blit operations, isn't it rounded to the scanline? So you'll end up with some discrepancies there. It's probably only ever going to be noticed in time critical stuff, or programs such as this where rendering is to be expected to exceed what can be done in a frame.

Share this post


Link to post
Share on other sites

Taking a different approach to skin the cat... substituting the VBXE for an UNO-Cart, leaving the 800 XL a stock machine.

This is a work-in-progress, e.g. plenty of scope for optimisation and should have a tune added, but does demonstrate that recent talk of folks falling out of favour with their UNO's is premature ;)

 

Here the original ST data file is being streamed from the SD-Card which doesn't really have a performance hit.

 

 

Remember too folks - work by the likes of Heaven also uncover emulation bugs (VBXE) that were shared with Avery and fixed and hence benefits the community :)

  • Like 10

Share this post


Link to post
Share on other sites

Hello Karolj

 

Mathy what is honestly standard? Mine is d6xx? And compo machine, too? Will prepare a NTSC and d7xx one.

 

Not a lot, but most PBI devices use $d6xx (and $d1xx), even those that don't really follow the standard, like MIO and BlackBox.

 

Sincerely

 

Mathy

Share this post


Link to post
Share on other sites

Its faster than ST on a 1,77 MHz 6502.

Really great job Heaven!

 

A few facts about the STF version:

 

- It's playing a .mod soundtrack at 14.985kHz on the YM2149 (unless I fumbled up my calculations), this is VERY CPU intensive

- It's streaming polygon data from floppy while running the demo, also does not help on CPU usage!

 

Just as a test I disabled the .mod player while the demo was running - and only the player part mind you, not the mixer. The frame rate then skyrocketed :)

 

So IMHO the comparison was a bit apples vs oranges. Other than that, again: great work!

Also worth to mention demo benefits from VBXE chunky mode (vs ST's bitplanes) and blitter (vs CPU in ST)

 

 

As I have no VBXE yet, would be cool to have demo working on stock graphics XL/XE, + working with Rapidus :)

Edited by Cyprian_K

Share this post


Link to post
Share on other sites

As part of the preparation of the SillyPack 2k18 ( which usually gets totally out of my control once I try and start fixing other people's demos :-) , I have collaborated with Heaven to create a final version for the VBXE.

 

The original version of the demo was a cartridge-only release with VBXE fixed at $d600.

I have reworked that version to include automatic detection of the VBXE board and base address ($d600 or $d700).

For those who do not have cartridges, but 1MB or larger PORTB based memory expansions, I have not also created a DOS compatible XEX version.

Additional fixes included:

- OPTION disables the cartridge int he ROM/CAR version

- No crash anymore when pressing keys while the demo is running,

 

Before I put this officially out in the wild, I'd be very happy to receive feedback from testers who can test the currently build on their machines.

Here's the temporary download which contains all 4 versions (ROM/CAR/XEX/ATR) and a readme.

 

https://www.wudsn.com/tmp/heaven/st-niccc.zip

 

- Peter/JAC!

 

post-17404-0-32485600-1546986849.png

  • Like 2

Share this post


Link to post
Share on other sites

That Atari version just makes me think of Stun Runner working like a dream on the 8 bit...

  • Like 1

Share this post


Link to post
Share on other sites

Thanks Peter for ironing out my bugs :D. I guess it took longer me finding the original source on my hdd... ;).

 

And we should release it on tape with audio while loading.... reminiscing the long loading times.

  • Like 1

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...

  • Recently Browsing   0 members

    No registered users viewing this page.

×
×
  • Create New...