User Tools

Site Tools


base:demo_programming

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
base:demo_programming [2018-11-10 23:45]
bepp [Horizontal Rastersplits]
base:demo_programming [2019-01-22 16:07] (current)
fstarred [Starfields]
Line 1: Line 1:
 ====== Demo Coding ====== ====== Demo Coding ======
  
-This section contain material related to demo coding. General VIC programming is not available on this page. Instead it is devoted to coding specific ​demo effects and tutorials on how to make demos specifically (rather than coding in general). General drawing, non-specific to demo codingis also on the general ​VIC page instead.  +This page is devoted ​specifically ​to demo effects and tutorials on how to make demos. More general ​graphics ​coding is instead covered in the [[base:​vic|General ​VIC programming ​page]].
- +
-To give an example: Opening the border is commonly made in demo parts, but simply opening the border does not constitute a demo effect in itself (at least not during the last 20 years).+
  
 +To provide an example: Opening the border is commonly made in demo parts, but simply opening the border does not constitute a demo effect in itself (at least not during the last 20 years). Therefore you would find that on the General VIC programming page instead.
 ===== General Information and Tutorials ===== ===== General Information and Tutorials =====
  
   * [[demo coding introduction|An Introduction to Programming C-64 Demos]] - Puterman/​FLT. Extensive and easy to read tutorial aimed at beginners.   * [[demo coding introduction|An Introduction to Programming C-64 Demos]] - Puterman/​FLT. Extensive and easy to read tutorial aimed at beginners.
   * [[Demo world records and world firsts]] - Who broke what record? Who invented effect X first? When? In what demo?   * [[Demo world records and world firsts]] - Who broke what record? Who invented effect X first? When? In what demo?
-  * [[Speeding up and optimising demo routines]] - by conrad+
  
 ====== Effects ====== ====== Effects ======
 Many demo effects depend on precise timing. Therefore it might be useful to have a look on the [[base:​interrupts|Interrupts and Timing]] page. Many demo effects depend on precise timing. Therefore it might be useful to have a look on the [[base:​interrupts|Interrupts and Timing]] page.
- 
-==== Horizontal Rastersplits ==== 
-Very basic rastersplitting can be done by waiting for a certain rasterline an then switch some VIC register. 
-The display has 312 rasterlines at max but the VIC rasterline register ($d012) has only a range of 0 to 255. 
-Therefore bit 7 of $d011 indicates if the rasterline is <256 or >255. Now the questions arises how to wait for a certain rasterline in the whole range without the preassumption of beeing in rasterline x when the wait routine is called. 
-Here is a diagram which examples the situation: 
- 
-{{{{:​base:​rect11618.png?​400| waiting for a rasterline}} 
- 
-Dependent of which rasterline you're currently in, you can simply compare $d012 with the desired rasterline or you must first wait for bit 7 of $d011 to attain the right value and then wait again for the desired line. Even more, retrace has to be taken into account, too. 
- 
-In total you have to consider 6 different cases: 
- 
-//being in rasterline 0-255 and// 
-  * waiting for a rasterline < $d012 -> wait for bit 7 of $d011 to switch to 1 and back to 0 and then wait for lowbyte 
-  * waiting for rasterline > $d012 but < 256 -> simply wait on lowbyte to match 
-  * waiting for a rasterline > $d012 but > 255 -> wait for set bit 7 of $d011 and then wait for lowbyte to match 
- 
-//being in rasterline 256+ and// 
-  * waiting for a rasterline < $d012 and < 256 -> wait for unset bit 7 of $d011 and then wait for lowb 
-  * waiting for rasterline < $d012 but > 256 -> wait for unset bit 7 of $d011, then set bit7 of $d011 and then on lowbyte 
-  * waiting for a rasterline > $d012 -> simply wait for lowbyte to match 
- 
-<​code>​ 
- 
-waitrasterline:​ 
-    cpx #0 
-    beq wait0To255 
-    ;from here on we wait for a rasterline > 255 
-    bit $d011 
-    bpl *-3 
-    ;​inRasterLineGT255 
-    cmp $d012 
-    bcs waitMatchingD012 
-    bit $d011 
-    bmi *-3 
-    bit $d011 
-    bpl *-3 
-    bmi waitMatchingD012 
-wait0To255: 
-    bit $d011 
-    bmi *-3 
-    ;​inRasterlineLT256 
-    cmp $d012 
-    bcs waitMatchingD012 
-    bit $d011 
-    bpl *-3 
-    bit $d011 
-    bmi *-3 
-waitMatchingD012:​ 
-    cmp $d012 
-    bne waitMatchingD012 
-    rts 
-</​code>​ 
  
  
Line 77: Line 22:
   * [[Rasterbars small source|Rasterbars 3 source]] - by Graham   * [[Rasterbars small source|Rasterbars 3 source]] - by Graham
   * [[Rasterbars Flash screen effect|Rasterbar Flasher source]] - Flash Screen effect by Wozza/​CygnusOz   * [[Rasterbars Flash screen effect|Rasterbar Flasher source]] - Flash Screen effect by Wozza/​CygnusOz
 +  * [[Horizontal Raster Split|Horizontal Raster Split]] - Monte Carlos
  
 ===== Scrolling text ===== ===== Scrolling text =====
Line 146: Line 92:
   * [[8 Sprite starfield]] - by Richard Bayliss   * [[8 Sprite starfield]] - by Richard Bayliss
   * [[ROL Starfield using $d018]] - by Richard Bayliss   * [[ROL Starfield using $d018]] - by Richard Bayliss
 +  * [[base:​Starfield|Starfield]] - by Fabrizio Stellato
 ===== 2nd Line FLI ===== ===== 2nd Line FLI =====
   * [[Twisters, x-rotators and waving carpets]] - Bitbreaker/​Oxyron^Arsenic^Nuance   * [[Twisters, x-rotators and waving carpets]] - Bitbreaker/​Oxyron^Arsenic^Nuance
base/demo_programming.1541889924.txt.gz · Last modified: 2018-11-10 23:45 by bepp