diff --git a/interlace_demo/Makefile b/interlace_demo/Makefile index 34352e54..4b5aebf6 100644 --- a/interlace_demo/Makefile +++ b/interlace_demo/Makefile @@ -33,7 +33,7 @@ RASTERBARS: rasterbars.o ld65 -o RASTERBARS rasterbars.o -C ../linker_scripts/apple2_1000.inc rasterbars.o: rasterbars.s gr_copy.s \ - rasterbars_screen.s rasterbars_table.s k_40_48d.inc + rasterbars_screen.s rasterbars_table.s movement_table.s k_40_48d.inc ca65 -o rasterbars.o rasterbars.s -l rasterbars.lst diff --git a/interlace_demo/make_mt.c b/interlace_demo/make_mt.c new file mode 100644 index 00000000..ff810e37 --- /dev/null +++ b/interlace_demo/make_mt.c @@ -0,0 +1,22 @@ +#include + +int main(int argc, char **argv) { + + int i,j; + + printf("movement_table:\n"); + for(i=0;i<123;i++) { + printf("\t.byte\t$%02X\t; %d -> %d\n",i+1,i,i+1); + } + printf("\t.byte\t$%02X\t; %d -> %d\n",123+0x80,123,123+0x80); + for(i=124;i<128;i++) { + printf("\t.byte\t$%02X\t; %d -> %d\n",123,i,123); + } + + printf("\t.byte\t$%02X\t; %d -> %d\n",0,128,0); + for(i=129;i<256;i++) { + printf("\t.byte\t$%02X\t; %d -> %d\n",i-1,i,i-1); + } + + return 0; +} diff --git a/interlace_demo/movement_table.s b/interlace_demo/movement_table.s new file mode 100644 index 00000000..1d2b2574 --- /dev/null +++ b/interlace_demo/movement_table.s @@ -0,0 +1,257 @@ +movement_table: + .byte $01 ; 0 -> 1 + .byte $02 ; 1 -> 2 + .byte $03 ; 2 -> 3 + .byte $04 ; 3 -> 4 + .byte $05 ; 4 -> 5 + .byte $06 ; 5 -> 6 + .byte $07 ; 6 -> 7 + .byte $08 ; 7 -> 8 + .byte $09 ; 8 -> 9 + .byte $0A ; 9 -> 10 + .byte $0B ; 10 -> 11 + .byte $0C ; 11 -> 12 + .byte $0D ; 12 -> 13 + .byte $0E ; 13 -> 14 + .byte $0F ; 14 -> 15 + .byte $10 ; 15 -> 16 + .byte $11 ; 16 -> 17 + .byte $12 ; 17 -> 18 + .byte $13 ; 18 -> 19 + .byte $14 ; 19 -> 20 + .byte $15 ; 20 -> 21 + .byte $16 ; 21 -> 22 + .byte $17 ; 22 -> 23 + .byte $18 ; 23 -> 24 + .byte $19 ; 24 -> 25 + .byte $1A ; 25 -> 26 + .byte $1B ; 26 -> 27 + .byte $1C ; 27 -> 28 + .byte $1D ; 28 -> 29 + .byte $1E ; 29 -> 30 + .byte $1F ; 30 -> 31 + .byte $20 ; 31 -> 32 + .byte $21 ; 32 -> 33 + .byte $22 ; 33 -> 34 + .byte $23 ; 34 -> 35 + .byte $24 ; 35 -> 36 + .byte $25 ; 36 -> 37 + .byte $26 ; 37 -> 38 + .byte $27 ; 38 -> 39 + .byte $28 ; 39 -> 40 + .byte $29 ; 40 -> 41 + .byte $2A ; 41 -> 42 + .byte $2B ; 42 -> 43 + .byte $2C ; 43 -> 44 + .byte $2D ; 44 -> 45 + .byte $2E ; 45 -> 46 + .byte $2F ; 46 -> 47 + .byte $30 ; 47 -> 48 + .byte $31 ; 48 -> 49 + .byte $32 ; 49 -> 50 + .byte $33 ; 50 -> 51 + .byte $34 ; 51 -> 52 + .byte $35 ; 52 -> 53 + .byte $36 ; 53 -> 54 + .byte $37 ; 54 -> 55 + .byte $38 ; 55 -> 56 + .byte $39 ; 56 -> 57 + .byte $3A ; 57 -> 58 + .byte $3B ; 58 -> 59 + .byte $3C ; 59 -> 60 + .byte $3D ; 60 -> 61 + .byte $3E ; 61 -> 62 + .byte $3F ; 62 -> 63 + .byte $40 ; 63 -> 64 + .byte $41 ; 64 -> 65 + .byte $42 ; 65 -> 66 + .byte $43 ; 66 -> 67 + .byte $44 ; 67 -> 68 + .byte $45 ; 68 -> 69 + .byte $46 ; 69 -> 70 + .byte $47 ; 70 -> 71 + .byte $48 ; 71 -> 72 + .byte $49 ; 72 -> 73 + .byte $4A ; 73 -> 74 + .byte $4B ; 74 -> 75 + .byte $4C ; 75 -> 76 + .byte $4D ; 76 -> 77 + .byte $4E ; 77 -> 78 + .byte $4F ; 78 -> 79 + .byte $50 ; 79 -> 80 + .byte $51 ; 80 -> 81 + .byte $52 ; 81 -> 82 + .byte $53 ; 82 -> 83 + .byte $54 ; 83 -> 84 + .byte $55 ; 84 -> 85 + .byte $56 ; 85 -> 86 + .byte $57 ; 86 -> 87 + .byte $58 ; 87 -> 88 + .byte $59 ; 88 -> 89 + .byte $5A ; 89 -> 90 + .byte $5B ; 90 -> 91 + .byte $5C ; 91 -> 92 + .byte $5D ; 92 -> 93 + .byte $5E ; 93 -> 94 + .byte $5F ; 94 -> 95 + .byte $60 ; 95 -> 96 + .byte $61 ; 96 -> 97 + .byte $62 ; 97 -> 98 + .byte $63 ; 98 -> 99 + .byte $64 ; 99 -> 100 + .byte $65 ; 100 -> 101 + .byte $66 ; 101 -> 102 + .byte $67 ; 102 -> 103 + .byte $68 ; 103 -> 104 + .byte $69 ; 104 -> 105 + .byte $6A ; 105 -> 106 + .byte $6B ; 106 -> 107 + .byte $6C ; 107 -> 108 + .byte $6D ; 108 -> 109 + .byte $6E ; 109 -> 110 + .byte $6F ; 110 -> 111 + .byte $70 ; 111 -> 112 + .byte $71 ; 112 -> 113 + .byte $72 ; 113 -> 114 + .byte $73 ; 114 -> 115 + .byte $74 ; 115 -> 116 + .byte $75 ; 116 -> 117 + .byte $76 ; 117 -> 118 + .byte $77 ; 118 -> 119 + .byte $78 ; 119 -> 120 + .byte $79 ; 120 -> 121 + .byte $7A ; 121 -> 122 + .byte $7B ; 122 -> 123 + .byte $FB ; 123 -> 251 + .byte $7B ; 124 -> 123 + .byte $7B ; 125 -> 123 + .byte $7B ; 126 -> 123 + .byte $7B ; 127 -> 123 + .byte $00 ; 128 -> 0 + .byte $80 ; 129 -> 128 + .byte $81 ; 130 -> 129 + .byte $82 ; 131 -> 130 + .byte $83 ; 132 -> 131 + .byte $84 ; 133 -> 132 + .byte $85 ; 134 -> 133 + .byte $86 ; 135 -> 134 + .byte $87 ; 136 -> 135 + .byte $88 ; 137 -> 136 + .byte $89 ; 138 -> 137 + .byte $8A ; 139 -> 138 + .byte $8B ; 140 -> 139 + .byte $8C ; 141 -> 140 + .byte $8D ; 142 -> 141 + .byte $8E ; 143 -> 142 + .byte $8F ; 144 -> 143 + .byte $90 ; 145 -> 144 + .byte $91 ; 146 -> 145 + .byte $92 ; 147 -> 146 + .byte $93 ; 148 -> 147 + .byte $94 ; 149 -> 148 + .byte $95 ; 150 -> 149 + .byte $96 ; 151 -> 150 + .byte $97 ; 152 -> 151 + .byte $98 ; 153 -> 152 + .byte $99 ; 154 -> 153 + .byte $9A ; 155 -> 154 + .byte $9B ; 156 -> 155 + .byte $9C ; 157 -> 156 + .byte $9D ; 158 -> 157 + .byte $9E ; 159 -> 158 + .byte $9F ; 160 -> 159 + .byte $A0 ; 161 -> 160 + .byte $A1 ; 162 -> 161 + .byte $A2 ; 163 -> 162 + .byte $A3 ; 164 -> 163 + .byte $A4 ; 165 -> 164 + .byte $A5 ; 166 -> 165 + .byte $A6 ; 167 -> 166 + .byte $A7 ; 168 -> 167 + .byte $A8 ; 169 -> 168 + .byte $A9 ; 170 -> 169 + .byte $AA ; 171 -> 170 + .byte $AB ; 172 -> 171 + .byte $AC ; 173 -> 172 + .byte $AD ; 174 -> 173 + .byte $AE ; 175 -> 174 + .byte $AF ; 176 -> 175 + .byte $B0 ; 177 -> 176 + .byte $B1 ; 178 -> 177 + .byte $B2 ; 179 -> 178 + .byte $B3 ; 180 -> 179 + .byte $B4 ; 181 -> 180 + .byte $B5 ; 182 -> 181 + .byte $B6 ; 183 -> 182 + .byte $B7 ; 184 -> 183 + .byte $B8 ; 185 -> 184 + .byte $B9 ; 186 -> 185 + .byte $BA ; 187 -> 186 + .byte $BB ; 188 -> 187 + .byte $BC ; 189 -> 188 + .byte $BD ; 190 -> 189 + .byte $BE ; 191 -> 190 + .byte $BF ; 192 -> 191 + .byte $C0 ; 193 -> 192 + .byte $C1 ; 194 -> 193 + .byte $C2 ; 195 -> 194 + .byte $C3 ; 196 -> 195 + .byte $C4 ; 197 -> 196 + .byte $C5 ; 198 -> 197 + .byte $C6 ; 199 -> 198 + .byte $C7 ; 200 -> 199 + .byte $C8 ; 201 -> 200 + .byte $C9 ; 202 -> 201 + .byte $CA ; 203 -> 202 + .byte $CB ; 204 -> 203 + .byte $CC ; 205 -> 204 + .byte $CD ; 206 -> 205 + .byte $CE ; 207 -> 206 + .byte $CF ; 208 -> 207 + .byte $D0 ; 209 -> 208 + .byte $D1 ; 210 -> 209 + .byte $D2 ; 211 -> 210 + .byte $D3 ; 212 -> 211 + .byte $D4 ; 213 -> 212 + .byte $D5 ; 214 -> 213 + .byte $D6 ; 215 -> 214 + .byte $D7 ; 216 -> 215 + .byte $D8 ; 217 -> 216 + .byte $D9 ; 218 -> 217 + .byte $DA ; 219 -> 218 + .byte $DB ; 220 -> 219 + .byte $DC ; 221 -> 220 + .byte $DD ; 222 -> 221 + .byte $DE ; 223 -> 222 + .byte $DF ; 224 -> 223 + .byte $E0 ; 225 -> 224 + .byte $E1 ; 226 -> 225 + .byte $E2 ; 227 -> 226 + .byte $E3 ; 228 -> 227 + .byte $E4 ; 229 -> 228 + .byte $E5 ; 230 -> 229 + .byte $E6 ; 231 -> 230 + .byte $E7 ; 232 -> 231 + .byte $E8 ; 233 -> 232 + .byte $E9 ; 234 -> 233 + .byte $EA ; 235 -> 234 + .byte $EB ; 236 -> 235 + .byte $EC ; 237 -> 236 + .byte $ED ; 238 -> 237 + .byte $EE ; 239 -> 238 + .byte $EF ; 240 -> 239 + .byte $F0 ; 241 -> 240 + .byte $F1 ; 242 -> 241 + .byte $F2 ; 243 -> 242 + .byte $F3 ; 244 -> 243 + .byte $F4 ; 245 -> 244 + .byte $F5 ; 246 -> 245 + .byte $F6 ; 247 -> 246 + .byte $F7 ; 248 -> 247 + .byte $F8 ; 249 -> 248 + .byte $F9 ; 250 -> 249 + .byte $FA ; 251 -> 250 + .byte $FB ; 252 -> 251 + .byte $FC ; 253 -> 252 + .byte $FD ; 254 -> 253 + .byte $FE ; 255 -> 254 diff --git a/interlace_demo/rasterbars.s b/interlace_demo/rasterbars.s index 72f3d007..a2102bc3 100644 --- a/interlace_demo/rasterbars.s +++ b/interlace_demo/rasterbars.s @@ -183,25 +183,33 @@ display_loop: ;====================================================== ; 4550 -- VBLANK - ; -134 -- raster + ; -148 -- raster 16+6+126 = 148 ; -10 -- keypress ;======= - ; 4406 + ; 4392 pad_time: ; we erase, then draw ; doing a blanket erase of all 128 lines would cost 3459 cycles! + ; move red + + ldy red_x ; 4 + lda movement_table,Y ; 4 + sta red_x ; 4 + and #$7f ; 2 + tax ; 2 - ldx #10 ; 2 jsr draw_rasterbar ; 6+126 - ; Try X=175 Y=5 cycles=4406 + ; Try X=3 Y=209 cycles=4390 R2 - ldy #5 ; 2 -loop1: ldx #175 ; 2 + nop + + ldy #209 ; 2 +loop1: ldx #3 ; 2 loop2: dex ; 2 bne loop2 ; 2nt/3 dey ; 2 @@ -330,6 +338,7 @@ gr_offsets: .include "../asm_routines/keypress.s" .align $100 .include "rasterbars_table.s" +.include "movement_table.s" .include "gr_copy.s" .include "vapor_lock.s" .include "delay_a.s"