
 1000  *SAVE S.SIMPLE ANIMATION
 1010  *--------------------------------
 1020  * SIMPLE ANIMATION
 1030  *--------------------------------
 1040  MON.WAIT    .EQ $FCA8    MONITOR DELAY ROUTINE
 1050  *--------------------------------
 1060  T1          .EQ $0,1
 1070  T2          .EQ $2,3
 1080  T3          .EQ $4,5
 1090  Y.INDEX     .EQ $6,7
 1100  *--------------------------------
 1110  * ANIMATION PLAYBACK LOCATIONS
 1120  *--------------------------------
 1130  HIRES.PAGE  .EQ $20      $20 = PAGE 1, $40 = PAGE 2
 1140  Y.COORD     .EQ 100      WHERE TO PUT ANIMATION
 1150  X.COORD     .EQ 20       WHERE TO PUT ANIMATION
 1160  *--------------------------------
 1170         .OR $803
 1180         .TF B.ANIMATE
 1190  *--------------------------------
 1200  START  JSR HIRES.INIT    INITIALIZE HIRES SCREEN
 1210  .1     JSR PLAY.FRAMES   PLAY 1 SET OF FRAMES
 1220         JMP .1            GO DO IT AGAIN
 1230  *--------------------------------
 1240  PLAY.FRAMES LDA #0       INIT FRAME INDEX
 1250         STA FRAME.INDEX
 1260  .1     LDA FRAME.INDEX   GET FRAME INDEX POINTER
 1270         CMP #NUM.FRAMES   HAVE ALL FRMES BEEN DONE
 1280         BEQ .3            YES, SO RETURN
 1290         LDY $C000    HAS A KEY BEEN PRESSED
 1300         BPL .2       NO, SO KEY PLAYING THE FRAMES
 1310         LDA $C051    RESTORE TEXT SCREEN
 1320         LDA $C054    PRIMARY PAGE
 1330         JMP $3D0     EXIT ON ANY KEY
 1340  .2     ASL          DOUBLE INDEX
 1350         TAY
 1360         LDA FRAME.TABLE,Y  GET TABLE ADDRESS
 1370         STA T1       SAVE ADRS IN T1
 1380         INY          NEXT BYTE OF ADRS
 1390         LDA FRAME.TABLE,Y
 1400         STA T1+1
 1410         JSR ANIMATE  MOVE FRAME DATA TO SCREEN
 1420         INC FRAME.INDEX NEXT FRAME
 1430         BNE .1       ...ALWAYS
 1440  .3     RTS
 1450  *--------------------------------
 1460  HIRES.INIT LDA #HIRES.PAGE
 1470         STA T1+1
 1480         LDY #0
 1490         STY T1
 1500  .0     TYA          ZERO A REG
 1510  .1     STA (T1),Y   CLEAR SCREEN PAGE
 1520         INY
 1530         BNE .1
 1540         INC T1+1     NEXT PAGE
 1550         LDA T1+1     CHECK FOR
 1560         AND #$1F     END OF HIRES PAGE
 1570         BNE .0       NO, CLEAR MORE
 1580         LDA $C050    ENABLE GRAPHICS
 1590         LDA $C057    ENABLE HIRES
 1600         LDA $C054    ENABLE PAGE 1 (C055 IS PAGE 2)
 1610         LDA $C052    NOMIX
 1620         RTS
 1630  *--------------------------------
 1640  INTER.FRAME.DELAY    .DA #20
 1650  XSIZE  .DA #4        X FRAME SIZE IN BYTES
 1660  YSIZE  .DA #24       Y FRAME SIZE IN BYTES
 1670  FRAME.TABLE
 1680         .DA FRAME1
 1690         .DA FRAME2
 1700         .DA FRAME3
 1710         .DA FRAME4
 1720         .DA FRAME5
 1730         .DA FRAME6
 1740         .DA FRAME7
 1750         .DA FRAME8
 1760         .DA FRAME9
 1770  NUM.FRAMES .EQ 9
 1780  FRAME.INDEX .DA #0
 1790  *--------------------------------
 1800  ANIMATE LDA #Y.COORD     THIS IS THE STARTING ROW
 1810         STA Y.INDEX       FOR THE ANIMATION
 1820         LDY YSIZE    NUMBER OF ROWS TO PUT ON SCREEN
 1830         STY T2
 1840  .1     LDY Y.INDEX
 1850         LDA YTBL.LO,Y     COMPUTE THE ROW ADRS
 1860         CLC
 1870         ADC #X.COORD      ADD THE X OFFSET
 1880         STA T3
 1890         LDA YTBL.HI,Y
 1900         ADC #HIRES.PAGE   ADD THE HIRES PAGE BITS
 1910         STA T3+1          T3 POINTS TO ROW POSITION
 1920         LDY XSIZE         NUMBER OF BYTES TO PUT INTO ROW
 1930         DEY               INDEX BEGINS AT ZERO TO XSIZE-1
 1940  .3     LDA (T1),Y        GET FRAME DATA
 1950         STA (T3),Y        PUT ONTO SCREEN
 1960         DEY               FOR ALL BYTES IN THE ROW
 1970         BPL .3
 1980  .4     INC Y.INDEX       NEXT ROW INDEX
 1990         LDA T1
 2000         CLC
 2010         ADC XSIZE         STEP FRAME ADRS AHEAD
 2020         STA T1            TO NEXT ROW OF DATA
 2030         LDA T1+1
 2040         ADC #0
 2050         STA T1+1
 2060         DEC T2            COUNT DOW THE ROWS
 2070         BNE .1            GO MOVE REST OF FRAME ROWS
 2080         LDY INTER.FRAME.DELAY
 2090         BEQ .6            NO DELAY BETWEEN FRAMES
 2100         STY T2            SAVE DELAY
 2110  .5     LDA #30           REPEAT THIS SMALL DELAY
 2120         JSR MON.WAIT
 2130         DEC T2            FOR COUNT IN 'T2'
 2140         BNE .5            MORE DELAY
 2150  .6     RTS               FRAME IS ALL DONE
 2160  *--------------------------------
 2170  * HIRES Y OFFSET TABLES
 2180  * OFFSET FROM $2000 OR $4000
 2190  * HIRES PAGE DISPLAYS
 2200  * USING THESE TABLES SPEEDS UP
 2210  * HIRES SCREEN ADRS COMPUTATION
 2220  * A GREAT DEAL!
 2230  *
 2240  * FOR EVERY Y VALUE FROM 0-191
 2250  * THERE IS AN ENTRY IN THIS TABLE
 2260  * TO COMPUTE THE ADRS OF FIRST
 2270  * BYTE IN THE ROW.
 2280  *--------------------------------
 2290  YTBL.LO   .EQ *
 2300   .HS 00000000000000008080808080808080
 2310   .HS 00000000000000008080808080808080
 2320   .HS 00000000000000008080808080808080
 2330   .HS 00000000000000008080808080808080
 2340   .HS 2828282828282828A8A8A8A8A8A8A8A8
 2350   .HS 2828282828282828A8A8A8A8A8A8A8A8
 2360   .HS 2828282828282828A8A8A8A8A8A8A8A8
 2370   .HS 2828282828282828A8A8A8A8A8A8A8A8
 2380   .HS 5050505050505050D0D0D0D0D0D0D0D0
 2390   .HS 5050505050505050D0D0D0D0D0D0D0D0
 2400   .HS 5050505050505050D0D0D0D0D0D0D0D0
 2410   .HS 5050505050505050D0D0D0D0D0D0D0D0
 2420  YTBL.HI   .EQ *
 2430   .HS 0004080C1014181C0004080C1014181C
 2440   .HS 0105090D1115191D0105090D1115191D
 2450   .HS 02060A0E12161A1E02060A0E12161A1E
 2460   .HS 03070B0F13171B1F03070B0F13171B1F
 2470   .HS 0004080C1014181C0004080C1014181C
 2480   .HS 0105090D1115191D0105090D1115191D
 2490   .HS 02060A0E12161A1E02060A0E12161A1E
 2500   .HS 03070B0F13171B1F03070B0F13171B1F
 2510   .HS 0004080C1014181C0004080C1014181C
 2520   .HS 0105090D1115191D0105090D1115191D
 2530   .HS 02060A0E12161A1E02060A0E12161A1E
 2540   .HS 03070B0F13171B1F03070B0F13171B1F
 2550  *--------------------------------
 2560  * ANIMATION DATA
 2570  *--------------------------------
 2580  FRAME1
 2590    .HS 000000000000000000600300
 2600    .HS 0070070000580D0000780F00
 2610    .HS 00380E000070070000600300
 2620    .HS 004001000040010000780F00
 2630    .HS 007C1F000066330000436100
 2640    .HS 006363000073670040714701
 2650    .HS 40394E0100180C0000180C00
 2660    .HS 00180C0000180C0000180C00
 2670  FRAME2
 2680    .HS 000000000060030000700700
 2690    .HS 00580D0000780F0000380E00
 2700    .HS 007007000060030000400100
 2710    .HS 0040010000780F00007C1F00
 2720    .HS 00663300404141016C60031B
 2730    .HS 3C70071E0070070000380E00
 2740    .HS 00180C00000C1800000C1800
 2750    .HS 000C1800000C180000000000
 2760  FRAME3
 2770    .HS 006003000070070000580D00
 2780    .HS 00780F0000380E0000700700
 2790    .HS 06600330064001300C400118
 2800    .HS 78780F0E607F7F0740677301
 2810    .HS 004001000060030000700700
 2820    .HS 00700700001C1C00000C1800
 2830    .HS 000C1800000C180000063000
 2840    .HS 000630000000000000000000
 2850  FRAME4
 2860    .HS 000000004061430140714701
 2870    .HS 60580D0320780F0220380E02
 2880    .HS 607007034061430100414100
 2890    .HS 00463100007E3F0000780F00
 2900    .HS 006003000040010000600300
 2910    .HS 0070070000700700001C1C00
 2920    .HS 000630000003600000036000
 2930    .HS 400140014001400100000000
 2940  FRAME5
 2950    .HS 000000000000000040610303
 2960    .HS 4071070320580D0220780F02
 2970    .HS 60380E036070070340614301
 2980    .HS 0043610000463100007E3F00
 2990    .HS 00780F000060030000400100
 3000    .HS 006003000070070000700700
 3010    .HS 001C1C000006300000036000
 3020    .HS 000360004001400140014001
 3030  FRAME6
 3040    .HS 000000004061430140714701
 3050    .HS 60580D0320780F0260380E03
 3060    .HS 607007034061430100436100
 3070    .HS 00463100007E3F0000780F00
 3080    .HS 006003000040010000600300
 3090    .HS 0070070000700700001C1C00
 3100    .HS 000630000003600000036000
 3110    .HS 400140014001400100000000
 3120  FRAME7
 3130    .HS 406143014071470160580D03
 3140    .HS 20780F0220380E0260700703
 3150    .HS 406143010043610000463100
 3160    .HS 007E3F0000780F0000600300
 3170    .HS 004001000060030000700700
 3180    .HS 00700700001C1C0000063000
 3190    .HS 000360000003600040014001
 3200    .HS 400140010000000000000000
 3210  FRAME8
 3220    .HS 006003000070070000580D00
 3230    .HS 00780F0000380E0000700700
 3240    .HS 06600330064001300C400118
 3250    .HS 78780F0E607F7F0740677301
 3260    .HS 004001000060030000700700
 3270    .HS 00700700001C1C00000C1800
 3280    .HS 000C1800000C180000063000
 3290    .HS 000630000000000000000000
 3300  FRAME9
 3310    .HS 000000000060030000700700
 3320    .HS 00580D0000780F0000380E00
 3330    .HS 007007000060030000400100
 3340    .HS 0040010000780F00007C1F00
 3350    .HS 00663300404141016C60031B
 3360    .HS 3C70071E0070070000380E00
 3370    .HS 00180C00000C1800000C1800
 3380    .HS 000C1800000C180000000000

