Jump to content
IGNORED

Nostalgic-Trip Demo for VBXE


Heaven/TQA

Recommended Posts

I finally released our little contribution to Silly Venture.

 

Music by maze^desire (100 hz player)

code by me

data file by Leonard^Oxygene (Atari ST format)

 

it is an AtariMax 8mbit Cart

 

I spend week to get the LZZ16 data stream into the production but I could not fix the issue with VBXE vs banking in music data so I took the classic RMT player... some of you might realise the LZZ16 player at the Competition took 1:04 to render the flight while the RMT version 1:07...


hacked together source code of the VBXE renderer is included and data file if you want to play around.

 

https://www.youtube.com/watch?v=7K19hstUbLU

 

nostalgic_trip.gif

desire_oxygene_nostalgic_trip-Atarimax.zip

  • Like 11
  • Thanks 4
Link to comment
Share on other sites

1 hour ago, Rybags said:

Looks good - so I assume here it's doing a screen clear then calculating and blitting a bunch of triangles per frame?

Well… most is done on the blitter… 

 

the 6502 does the music and parses the stream data with encoded polygons with up to 15 vertices. Scanedge and span length calculated with the blitter ( eor ff adc 1) and fed into next edge list and spans blittet into one of the 3 (or 4?) screen buffers. I am sure I am using triple or even quadruple buffering.

 

bottle neck is the slow 6502.

 

more info on Arsantica.com

Link to comment
Share on other sites

8 hours ago, rensoup said:

ouch, that should have been painless in theory... did you get it to work without VBXE ?

it is not the player itself but the memory layout I have choosen... so the song data was reaching into the $4000-$7fff window of the VBXE... and I got the span buffers for the blitter resisting at $7e00-$7fff there and when calling the player via DLI i banked out the VBXE memory window which the blitter doesnt liked as I had most rendering task dedicated to the blitter itself. so they interfer while blitter was running I was banking out. I might have a solution now.

 

I am using btw. the PLAYLZZ16 on github but that's the basic player which has noise at the pokey init e.g.... but haven't looked far into the other players.


just for the records... classic RMT renders in 1:07 seconds 1 round of the flight while the LZZ16 version 1:04 ;-)

Link to comment
Share on other sites

On 8/28/2021 at 6:53 AM, Heaven/TQA said:

Well… most is done on the blitter… 

 

the 6502 does the music and parses the stream data with encoded polygons with up to 15 vertices. Scanedge and span length calculated with the blitter ( eor ff adc 1) and fed into next edge list and spans blittet into one of the 3 (or 4?) screen buffers. I am sure I am using triple or even quadruple buffering.

 

bottle neck is the slow 6502.

 

more info on Arsantica.com

How do you use the blitter to do calculations?  I have heard it can be used for fast line drawing as well.  Do you set up a blit list and have it render to a buffer the same as you would to have it draw3 to the screen?

Link to comment
Share on other sites

 

15 hours ago, Heaven/TQA said:

just for the records... classic RMT renders in 1:07 seconds 1 round of the flight while the LZZ16 version 1:04 ;-)


My version of the player is about 30% faster so that may save you an extra second or so ?

 

If memory is a problem you could use the 50hz version and get even more speed back.

 

If you want to stick to 100hz, you could split your tune (if it's repetitive). Pattern playback is a feature that's missing from RMT2LZSS but you could manually emulate it by splitting the tune into subtunes and use the "output all subtunes" option.

Then in your code, you just play the subtunes back to back in the order you want... big potential memory savings!

 

(Thanks to @VinsCool for the idea!)

  • Like 1
Link to comment
Share on other sites

9 hours ago, Stephen said:

How do you use the blitter to do calculations?  I have heard it can be used for fast line drawing as well.  Do you set up a blit list and have it render to a buffer the same as you would to have it draw3 to the screen?

well... CPU calcs slope and the DDA of edge scan is done via Blitter (having a 64kb 8.8 fixed point lookup table or so called count table). Calculating the span length (x2-x1) of a span is done with 3 pass blit... EOR #$ff +1 to make it negative and then ADD pass to do a SUB. unfortunatly not more is possible. Amiga Blitter can handle more due to several DMA channels and 256 min terms. 

 

so drawing a polygon is simple a blit of the left edge into a blitlist as starting points while the span lengths were blitted into the "destination" (X2) coordination. and so forth. with some clever thinking (and me not clever enough) you can handle more with the VBXE than just "plot sprites".

  • Thanks 1
Link to comment
Share on other sites

5 hours ago, DrVenkman said:

Since we're requesting versions, any chance we can get an XEX to load from FujiNet or CF card? The only machine I have with a VBXE in it is a PAL 1088XLD with no externally-accessible cartridge port. 

no. it was done for Atarimax8mbit cart for the party only. I am afraid. so to say. fire and forget. ;-)

Link to comment
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.
Note: Your post will require moderator approval before it will be visible.

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...