| |
Burglar
Registered: Dec 2004 Posts: 1085 |
Release id #225094 : Skybox
ok, I need to know before I cast my vote :P
https://youtu.be/yFWPWbhGrvA?t=89
that almost 3d like effect (brown background), how did u do it :)
is it full anim, how did u generate it? if it's not, or hybrid, do tell. probably my fav effect of the compo :) |
|
| |
Krill
Registered: Apr 2002 Posts: 2968 |
If this is "full anim", worth a downvote! =) |
| |
mankeli
Registered: Oct 2010 Posts: 138 |
Thanks. It's no animation at all! But still lots of precalc. :) "Filterplotter" is it's name. Totally underused in the demo, because it is probably one of the oldest effects and mangled so many times I couldn't touch the code any more :)
Anyway:
Zooming/rotating Starfield stars / triangle vertices are calculated with some adhoc product-to-sum trigonometric lookups.
Triangles were originally meant to be "filled" with more delicate patterns. Basically building on the idea from Mixeri's Sierpinski plotter: Calculate averages between edge points by using carry bit as 9th bit (LDA ADC ROR), store the intermediate values and do this intelligently to build "textures". Iirc I may have got disappointed about the performance initially, left it for "fix it later" and then never got back to it. And there's also a problem that even with 9 bits there's not enough room for guard bands so I would have resort to clipping and detecting overflows.
The plotter itself has 64 (8x8) 256 long tables. Each basically containing "if I have petscii character A, and it would have a pixel plotted in coords X,Y, what character would best represent the resulting bitmap". (Some ad-hoc magic is required to calculate this, as for example $20 + single pixel plot is usually best represented by $20)
The clearing of the screen was also fun: No time to clear the whole screen, so what to do? Generated a custom charset from petscii that has chars $00 and $20 swapped. This meant that after I LDX'd the existing char from memory, I could just BEQ AddToClearList. The clearlist is just a prefilled LDA #0 STA STA STA STA STA routine, and then RTS gets patched in the end after all the plots were done. |
| |
Oswald
Registered: Apr 2002 Posts: 5086 |
thats one of the coolest fx from the demo, I'm impressed how smooth it looks when the plots leave trails. would like to see it longer, annyoing its so short and interrupted with the logo screen.
A table for each pixel inside a char ? how does that work ? and I assume you plot bigger virtual pixels than 1x1, otherwise you would always get an empty char. |
| |
Flotsam
Registered: Jan 2004 Posts: 84 |
I'm guessing the scrolling logos are needed for the pre-calc. Personally I dig the switching between the two. Both views look fab, even tough only one is ultimate code porn. |
| |
Burglar
Registered: Dec 2004 Posts: 1085 |
@Mankeli, thanks for your elaborate answer and I'm impressed it's not an anim :D
now that I've read your approach a couple of times, I think I understand most of it.
also interesting to read your clearscreen approach, I've done similar things (injecting dynamic rts in generated speedcode and reverting back for next frame) when there were just not enough cycles.
I have now cast my vote ;) |
| |
ChristopherJam
Registered: Aug 2004 Posts: 1408 |
Very very cool. Thanks for the explainer! |
| |
mankeli
Registered: Oct 2010 Posts: 138 |
@Flotsam, nah they are needed for dezing ;) And they are also easy on the rastertime and memory usage so it's possible to load during them.
@Burglar, no problem. Thanks for asking! I love reading demo writeups myself, but I never got around to write them after releasing something even if I always mean to do so.
@Oswald, Kolmiolaeaeke is actually older version of the effect that was shown at Zoo 2019. It doesn't have the cuts. |