Log inRegister an accountBrowse CSDbHelp & documentationFacts & StatisticsThe forumsAvailable RSS-feeds on CSDbSupport CSDb Commodore 64 Scene Database
You are not logged in - nap
CSDb User Forums


Forums > C64 Coding > 'HCL-plasma' - how does it work?
2008-11-02 23:16
Shadow
Account closed

Registered: Apr 2002
Posts: 355
'HCL-plasma' - how does it work?

That fullscreen-fast-plasma-thing that we saw quite a few versions of in Edge Of Disgrace (with sprite zoomer on top, in sideborder, with techtech etc.) - what's the theory?
It is pretty obvious from speed and size that it is not done using per-pixel-code...
My theory was that it was done using FPP-technique, ie. we have a base-plasma-picture, and then by displaying cleverly chosen lines from this base-picture we get the plasma.
I did some prototyping on PC to test this theory, but I can't get anything that looks correct. Am I barking up the wrong tree here?
2008-11-02 23:44
chatGPZ

Registered: Dec 2001
Posts: 11386
you got the theory alright :)
2008-11-02 23:45
Krill

Registered: Apr 2002
Posts: 2980
Only that it's been done long before EoD already. :D
2008-11-03 03:45
A Life in Hell
Account closed

Registered: May 2002
Posts: 204
How a simple version works:

step 1: have an FPP routine of your choice. It's gonna need to be sprite FPP if you're in the borders, natch, charfpp if you don't, bitmap fpp if you want more colours, or some crazy assed fun combination.

step 2: for each possible FPP line (you need as many of these for maximum smoothness) calculate a sinus line for finalY=yval for this line. You can do this each frame, or once and just move the y sinus.

step 3: calculate each y line in your raster IRQ, and set the FPP display list appropraitely from a table based on the y output.

step 4: display fpp according to display table.

maybe i'll upload one appropriatly commented and commentated to codebase later this week, if people are interested in such things.
2008-11-03 07:33
HCL

Registered: Feb 2003
Posts: 728
Who came up with the name HCL-plasma?

..and if Mr.Krill would be so kind to show us a *link* to where this has been done long before.. Funny, i don't remember any full-screen-side-border-FPP-plasma, will be most interesting to see.
2008-11-03 08:27
JackAsser

Registered: Jun 2002
Posts: 2014
Quote: Who came up with the name HCL-plasma?

..and if Mr.Krill would be so kind to show us a *link* to where this has been done long before.. Funny, i don't remember any full-screen-side-border-FPP-plasma, will be most interesting to see.


Wasn't the end part of Cycle some kind of full screen sideborder FPP-plasma?
2008-11-03 08:37
HCL

Registered: Feb 2003
Posts: 728
Hmm, i don't really get what you're discussing here. It's mostly talk about the FPP-routine.. The're nothing fancy about that, except possibly for the plasma with the sprite-stretcher on top. The tricky thing in this plasma (compared to what we have already seen) is how the x-shit works. But i'll leave that if noone is really interested ;).

<edit>
@JA: That's exactly what's the difference. Those all-border "plasmas" only contain some kind of FPP-routuine and thus only a y-plasma (typically double sinus indexed plasma), the x-"plasma" is just some static graphics that has been generated once. The plasma we have here has an x-component also updated every frame, also typically a double sinus indexed plasma.
</edit>
2008-11-03 09:00
Shadow
Account closed

Registered: Apr 2002
Posts: 355
I didn't intend to step on any toes by calling it 'HCL-plasma', I just thought that everyone would know what I meant then, since the type of plasma I'm talking about has appeared in a few BD demos now (Royal Arte, Cycle, Edge Of Disgrace).

Seems like I have the technical theory correct then.

I have a precalced picture that looks about what a single frame from a normal per-pixel-double-sine-plasma looks like.

Then in the displayer I pick y-lines from that above plasma indexed on a double-sine.

However somehow it don't get that 'plasma'-feeling in it.

But now we hear that HCL has added some kind of extra X-component magic to it, which would explain why it looks even better in EoD. I'll have to start Cycle again and compare the last-part-plasma there.

2008-11-03 09:09
Oswald

Registered: Apr 2002
Posts: 5094
Quote: That fullscreen-fast-plasma-thing that we saw quite a few versions of in Edge Of Disgrace (with sprite zoomer on top, in sideborder, with techtech etc.) - what's the theory?
It is pretty obvious from speed and size that it is not done using per-pixel-code...
My theory was that it was done using FPP-technique, ie. we have a base-plasma-picture, and then by displaying cleverly chosen lines from this base-picture we get the plasma.
I did some prototyping on PC to test this theory, but I can't get anything that looks correct. Am I barking up the wrong tree here?


it's Graham's invention. I think the mod's should change the topic title if possible, before the credit will go to HCL in the scene's mind. :P
2008-11-03 09:14
Oswald

Registered: Apr 2002
Posts: 5094
Quote: I didn't intend to step on any toes by calling it 'HCL-plasma', I just thought that everyone would know what I meant then, since the type of plasma I'm talking about has appeared in a few BD demos now (Royal Arte, Cycle, Edge Of Disgrace).

Seems like I have the technical theory correct then.

I have a precalced picture that looks about what a single frame from a normal per-pixel-double-sine-plasma looks like.

Then in the displayer I pick y-lines from that above plasma indexed on a double-sine.

However somehow it don't get that 'plasma'-feeling in it.

But now we hear that HCL has added some kind of extra X-component magic to it, which would explain why it looks even better in EoD. I'll have to start Cycle again and compare the last-part-plasma there.



how do you calculate a plasma?

mix 2 sines to get a "verticalsine"
mix other 2 sines to get a "horizontalsine"

then each pixel: pixel(x,y)=palette(vertsine(y)+horsine(x))

note that on a horizontal line vertsine(y) is constant. so if we reduce the vertsine values to smth like 0-16, then we may precalculate 16 gfx lines (horsine still changes each frame, thats where you got it wrong!) and choose from them along the line as dictated by adding up 2 sines where the result is 0-16.
2008-11-03 09:20
HCL

Registered: Feb 2003
Posts: 728
Well, maybe i mis-interpreted the term "base-plasma-picture".. I thought of this as a static picture, but in the case of EoD, this base-plasma-picture is always calculated and updated each frame.

This effect is so over-used ever since Krestyron, so i thought everyone knows the difference between this and the static FPP-plasma in e.g. Coma Job.

With a faster calculation of the base-plasma-picture, i managed to squeeze out a little bit more of this poor plasma-effect, but then again it felt a bit old in 2004 already when i coded it..
2008-11-03 09:28
HCL

Registered: Feb 2003
Posts: 728
Quote: it's Graham's invention. I think the mod's should change the topic title if possible, before the credit will go to HCL in the scene's mind. :P

Yepp, shit like that always happens. When you reach a certain level of popularity, people will start giving you credit for stuff that others made.. That also happens to Graham. e.g. the all-border sprite-zoomer from ComaJob, which ppl think is Graham's invention, but just look at this.. Fierce Creations or was it Design Overdose. And many more examples in *real life*(tm).
2008-11-03 09:30
Oswald

Registered: Apr 2002
Posts: 5094
Quote: I didn't intend to step on any toes by calling it 'HCL-plasma', I just thought that everyone would know what I meant then, since the type of plasma I'm talking about has appeared in a few BD demos now (Royal Arte, Cycle, Edge Of Disgrace).

Seems like I have the technical theory correct then.

I have a precalced picture that looks about what a single frame from a normal per-pixel-double-sine-plasma looks like.

Then in the displayer I pick y-lines from that above plasma indexed on a double-sine.

However somehow it don't get that 'plasma'-feeling in it.

But now we hear that HCL has added some kind of extra X-component magic to it, which would explain why it looks even better in EoD. I'll have to start Cycle again and compare the last-part-plasma there.



better calling it FPP plasma, as the technique (*drums*) was invented by Graham. :)
2008-11-03 09:31
Oswald

Registered: Apr 2002
Posts: 5094
Quote: Yepp, shit like that always happens. When you reach a certain level of popularity, people will start giving you credit for stuff that others made.. That also happens to Graham. e.g. the all-border sprite-zoomer from ComaJob, which ppl think is Graham's invention, but just look at this.. Fierce Creations or was it Design Overdose. And many more examples in *real life*(tm).


was there an fpp plasma before graham's one ?
2008-11-03 09:37
Cruzer

Registered: Dec 2001
Posts: 1048
Shadow: You also might wanna "cycle" the colors, i.e. have a constant that you add to the sine values, which is incremented for every line in the generated pattern. Anyway, experimentation is the way to go for getting the plasmatic feel. It usually takes a lot of trial & error before it looks good.
2008-11-03 09:40
HCL

Registered: Feb 2003
Posts: 728
Quote: was there an fpp plasma before graham's one ?

No, but a sprite-zoomer.
2008-11-03 09:50
Shadow
Account closed

Registered: Apr 2002
Posts: 355
Aha! So the base-picture IS recalculated each frame, no wonder I couldn't get it to look right!
2008-11-03 15:10
Testa
Account closed

Registered: Oct 2004
Posts: 197
Quote: How a simple version works:

step 1: have an FPP routine of your choice. It's gonna need to be sprite FPP if you're in the borders, natch, charfpp if you don't, bitmap fpp if you want more colours, or some crazy assed fun combination.

step 2: for each possible FPP line (you need as many of these for maximum smoothness) calculate a sinus line for finalY=yval for this line. You can do this each frame, or once and just move the y sinus.

step 3: calculate each y line in your raster IRQ, and set the FPP display list appropraitely from a table based on the y output.

step 4: display fpp according to display table.

maybe i'll upload one appropriatly commented and commentated to codebase later this week, if people are interested in such things.


sad panda, what do you mean with bitmap fpp, i understand sprite fpp and char fpp but never heard of bitmap fpp...
i am just curious.....
2008-11-03 15:24
HCL

Registered: Feb 2003
Posts: 728
You can do bitmap-fpp just like char-fpp, at least the 20-cycle timing will allow fpp-behaviour.
2008-11-03 15:43
Testa
Account closed

Registered: Oct 2004
Posts: 197
Hcl: Nice i didn't know ,do you know a demo with this effect ?or do you mean the already mentioned plasma fpp?.
and what about fli fpp?.. works fli fpp the same as bitmap fpp? or am i totally wrong once again.....

2008-11-03 20:50
QuasaR

Registered: Dec 2001
Posts: 145
Quote: No, but a sprite-zoomer.

But I think, Graham was first with this kind of zoomer, presented in Parts.
2008-11-03 22:12
HCL

Registered: Feb 2003
Posts: 728
Quote: But I think, Graham was first with this kind of zoomer, presented in Parts.

That's a char-based zoomer. But yes, that's his invention.

Oh, and bitmap-fpp.. Yes you get some FLI-like stuff there.
2008-11-04 09:13
WVL

Registered: Mar 2002
Posts: 902
Quote: That's a char-based zoomer. But yes, that's his invention.

Oh, and bitmap-fpp.. Yes you get some FLI-like stuff there.


I'm not sure I invented the all-border sprite zoomer.. there might have been some before. The first that comes to mind is the one by Glasnost in The Unnamed Demo ofcourse :) even when that one is a rather different technique (only a few pixels high..)

Might be interesting to tell you the difference between the zoomers in Design Overdose, Comajob and Pearls for Pigs.

Design Overdose and comajobs are basically the same, they're based on a stretched sprite routine, with $d018 switches to get extra lines. For every 21 pixels in the sprite, there are 3 d018 options, to give a 63 pixel high picture (so if you stretch the sprite 3x, you can display the picture at 1x zoom). If you dont stretch the sprite, you're at minimum height, at 1/3 zoom.

I think this 'shrinking' trick was invented by Pernod btw ;) just to give some credits ;)

The difference between the comajob one and the one is design overdose is that graham worked hard to make it more flexible, especially by rearranging the sprites when it moves into the borders..

The one in Pearls for Pigs is different. It uses sprite-fpp to shrink and expand in y, basically this allows you to shrink down to 1 single pixel, or to display the picture upside-down. You can also move the picture completely in the upper border (meaning it's possible to only show the bottom pixelrow at the complete top of the screen). With the $d018 technique, you can only move the first 2 pixelrows out of the topborder.. Basically this one is a lot more flexible :)
RefreshSubscribe to this thread:

You need to be logged in to post in the forum.

Search the forum:
Search   for   in  
All times are CET.
Search CSDb
Advanced
Users Online
rexbeng
Brataccas/HF
Peacemaker/CENSOR/Hi..
Chesser/Blazon
Courage
CA$H/TRiAD
t0m3000/hf^boom!^ibx
lA-sTYLe/Quantum
marley
Technotron/I-I F
Fungus/Nostalgia
WVL/Xenon
Matt
ged/Samar
Guests online: 135
Top Demos
1 Next Level  (9.7)
2 13:37  (9.7)
3 Mojo  (9.7)
4 Coma Light 13  (9.6)
5 Edge of Disgrace  (9.6)
6 What Is The Matrix 2  (9.6)
7 The Demo Coder  (9.6)
8 Uncensored  (9.6)
9 Comaland 100%  (9.6)
10 Wonderland XIV  (9.6)
Top onefile Demos
1 No Listen  (9.6)
2 Layers  (9.6)
3 Cubic Dream  (9.6)
4 Party Elk 2  (9.6)
5 Copper Booze  (9.6)
6 Dawnfall V1.1  (9.5)
7 Rainbow Connection  (9.5)
8 Onscreen 5k  (9.5)
9 Morph  (9.5)
10 Libertongo  (9.5)
Top Groups
1 Performers  (9.3)
2 Booze Design  (9.3)
3 Oxyron  (9.3)
4 Censor Design  (9.3)
5 Triad  (9.3)
Top Coders
1 Axis  (9.8)
2 Graham  (9.8)
3 Lft  (9.8)
4 Crossbow  (9.8)
5 HCL  (9.8)

Home - Disclaimer
Copyright © No Name 2001-2024
Page generated in: 0.076 sec.