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 revisionPrevious revision
Next revision
Previous revision
Next revisionBoth sides next revision
base:demo_programming [2018-11-10 23:45] – [Horizontal Rastersplits] beppbase:demo_programming [2018-12-18 17:01] – [General Information and Tutorials] ftc
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 =====
base/demo_programming.txt · Last modified: 2022-03-15 19:00 by erhan