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 16:54] – [Horizontal Rastersplits] - Moved to separate page ftc
Line 13: Line 13:
 ====== 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 23:
   * [[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