base:4_ways_scroll_part_2
no way to compare when less than two revisions
Differences
This shows you the differences between two versions of the page.
— | base:4_ways_scroll_part_2 [2015-04-17 04:30] (current) – created - external edit 127.0.0.1 | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | ====== 4 ways scroll part 2 ====== | ||
+ | < | ||
+ | ; 4 Ways Scroll | ||
+ | ; by malcolm bamber | ||
+ | ; http:// | ||
+ | ; Assembler Used C64ASM.EXE | ||
+ | ; part 2 | ||
+ | ; | ||
+ | ;** SETUP ** | ||
+ | ; | ||
+ | setup | ||
+ | lda #< | ||
+ | sta Ptrcolour | ||
+ | lda #>55296 | ||
+ | sta Ptrcolour+1 | ||
+ | |||
+ | lda #< | ||
+ | sta PtrSparecolour | ||
+ | lda #> | ||
+ | sta PtrSparecolour+1 | ||
+ | |||
+ | lda #< | ||
+ | sta Ptrmap | ||
+ | lda #> | ||
+ | sta Ptrmap+1 | ||
+ | |||
+ | lda #< | ||
+ | sta Ptrmapcolour | ||
+ | lda #> | ||
+ | sta Ptrmapcolour+1 | ||
+ | |||
+ | lda #255 ; turn cursor off | ||
+ | sta 204 | ||
+ | lda #1 | ||
+ | sta 649 ; POKE 649,1 disable keyboard buffering | ||
+ | lda $D018 ; set the computer to were the new chars set are and use them | ||
+ | and #240 ; 11110000 | ||
+ | ora #12 ; 00001100 | ||
+ | sta $D018 | ||
+ | |||
+ | ; | ||
+ | ;| VALUE | BITS | BANK | STARTING | VIC-II CHIP RANGE | | ||
+ | ;| OF A | | | LOCATION | | | ||
+ | ; | ||
+ | ;| | ||
+ | ;| | ||
+ | ;| | ||
+ | ;| | ||
+ | ; | ||
+ | |||
+ | LDA $01 ; switch off basic | ||
+ | AND #$FE | ||
+ | STA $01 | ||
+ | |||
+ | lda #7 | ||
+ | sta $D020 ; border colour | ||
+ | lda #0 | ||
+ | sta $D021 ; screen background colour | ||
+ | |||
+ | lda #11 ; Brown | ||
+ | sta $D022 ; background colour 1 | ||
+ | |||
+ | lda #15 ; Lt Red | ||
+ | sta $D023 ; background colour 1 | ||
+ | |||
+ | ; D011 VIC Control Register | ||
+ | ; 7 Raster Compare: (Bit 8) See 53266 | ||
+ | ; 6 Extended Color Text Mode 1 = Enable | ||
+ | ; 5 Bit Map Mode. 1 = Enable | ||
+ | ; 4 Blank Screen to Border Color: 0 = Blank | ||
+ | ; 3 Select 24/25 Row Text Display: 1 = 25 Rows | ||
+ | ; 2 Smooth Scroll to Y Dot-Position (0-7) | ||
+ | ; 1 Smooth Scroll to Y Dot-Position (0-7) | ||
+ | ; 0 Smooth Scroll to Y Dot-Position (0-7) | ||
+ | |||
+ | lda # | ||
+ | sta $d011 | ||
+ | lda $d011 ; set screen scroll position | ||
+ | and #%01111000 | ||
+ | ora yscroll ; Smooth Scroll to Y Dot-Position (0-7) | ||
+ | sta $d011 | ||
+ | |||
+ | |||
+ | ; bit 0 1 2 of $d016 scroll screen left or right | ||
+ | ; 0 = all the way to the right | ||
+ | ; 7 = all the way to the left | ||
+ | ; 3 = middle | ||
+ | ; bit 4 of $d016 Select 38/40 Column Text Display: 1 = 40 Cols | ||
+ | ; bit 5 of $d016 switch on mult colour | ||
+ | |||
+ | ; | ||
+ | ;| Bits 7-6 | Unused | ||
+ | ;| Bit 5 | ||
+ | ;| | refresh, no bus access) | ||
+ | ;| Bit 4 | ||
+ | ;| Bit 3 | ||
+ | ;| Bits 2-0 | Smooth Scroll to X Dot-Position (0-7) | | ||
+ | ; | ||
+ | |||
+ | lda # | ||
+ | sta $d016 | ||
+ | lda $d016 ; set screen scroll position | ||
+ | and #%11111000 | ||
+ | ora xscroll ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d016 | ||
+ | rts | ||
+ | |||
+ | ; | ||
+ | ;* set up the irq * | ||
+ | ; | ||
+ | setupirq | ||
+ | SEI | ||
+ | LDA #$01 | ||
+ | STA $D01A ; VIC Interrupt Mask Register (IMR) | ||
+ | LDA #<vblank | ||
+ | LDX #>vblank | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 ; irq address | ||
+ | LDY # | ||
+ | STY $D012 | ||
+ | LDA #$7F | ||
+ | STA $DC0D | ||
+ | LDA $DC0D | ||
+ | CLI | ||
+ | rts | ||
+ | |||
+ | |||
+ | ; | ||
+ | ;* SWAP THE HIDDEN SCREEN FOR THE CURRENT SCREEN * | ||
+ | ; | ||
+ | swapscreen | ||
+ | lda whichscreen | ||
+ | cmp #0 ; screen address 3072 is not beening shown | ||
+ | bne _buf | ||
+ | lda $D018 ; current screen | ||
+ | and # | ||
+ | ora #16 ; set current screen that you can see to 1024 | ||
+ | sta $D018 | ||
+ | lda # | ||
+ | sta 648 | ||
+ | lda #< | ||
+ | sta Ptrscreen ; | ||
+ | lda #>1024 | ||
+ | sta Ptrscreen+1 | ||
+ | lda #< | ||
+ | sta Ptrhiddenscreen ; | ||
+ | lda #>3072 | ||
+ | sta Ptrhiddenscreen+1 ; | ||
+ | lda #1 | ||
+ | sta whichscreen | ||
+ | ;inc $d020 | ||
+ | rts | ||
+ | _buf | ||
+ | lda $D018 ; set default screeh | ||
+ | and #%00001111 | ||
+ | ora # | ||
+ | sta $D018 | ||
+ | lda # | ||
+ | sta 648 | ||
+ | lda #< | ||
+ | sta Ptrscreen ; | ||
+ | lda #>3072 | ||
+ | sta Ptrscreen+1 ; | ||
+ | lda #< | ||
+ | sta Ptrhiddenscreen ; | ||
+ | lda #>1024 | ||
+ | sta Ptrhiddenscreen+1 ; | ||
+ | lda #0 | ||
+ | sta whichscreen | ||
+ | ;inc $d020 | ||
+ | _swapquit | ||
+ | rts | ||
+ | |||
+ | ; | ||
+ | ;* SET CURSOR * | ||
+ | ; | ||
+ | setcursor | ||
+ | clc | ||
+ | ldy xcursor ; across horizontal column number in the .Y register | ||
+ | ldx ycursor ; down the vertical row number in the .X register | ||
+ | jsr 65520 | ||
+ | rts | ||
+ | ; | ||
+ | ;* GET CURSOR * | ||
+ | ; | ||
+ | getcursor | ||
+ | sec | ||
+ | jsr 65520 | ||
+ | sty xcursor ; across horizontal column number in the .Y register | ||
+ | stx ycursor ; down the vertical row number in the .X register | ||
+ | rts | ||
+ | |||
+ | xcursor | ||
+ | .byte 8 ; cursor position were any printing will be done on screen | ||
+ | ycursor | ||
+ | .byte 2 | ||
+ | |||
+ | ; | ||
+ | ;* PRINT A 16 BIT NUMBER TO THE SCREEN * | ||
+ | ;* X = low byte = temp0 * | ||
+ | ;* Y = high byte =temp1 | ||
+ | ; | ||
+ | printnum | ||
+ | stx temp20 | ||
+ | sty temp21 | ||
+ | jsr clearbuffer | ||
+ | ldy #5 ; were in buffer to store number image | ||
+ | _LOOP | ||
+ | lda #00 ; **** DO 16 bit divide **** | ||
+ | ldx #16 ; 16-bit number (in temp16..temp16+1 count | ||
+ | ; how many number we have done | ||
+ | _loop0 | ||
+ | asl temp20 ; shift one bit position towards the " | ||
+ | ; Shift least significant byte | ||
+ | rol temp21 ; Shift next-to-least-significant byte with carry | ||
+ | rol ; Shift next-to-least-significant byte with carry | ||
+ | cmp #10 ; 8-bit number must be 10 to show a 16 bit number | ||
+ | bcc _loop2 ; 10>a | ||
+ | sbc #10 ; 8-bit number must be 10 to show a 16 bit number | ||
+ | inc temp20 | ||
+ | _loop2 | ||
+ | dex ; | ||
+ | bne _loop0 ; IF NOT ZERO **** STOP 16 bit divide **** | ||
+ | |||
+ | clc ; move left one position for next number to be save | ||
+ | adc # | ||
+ | sta stringbuffer, | ||
+ | dey ; next memory address in buffer | ||
+ | cpy #0 | ||
+ | bne _LOOP ; no more number to convert | ||
+ | |||
+ | | ||
+ | | ||
+ | ldy #1 ; first number position in buffer | ||
+ | _donext | ||
+ | lda stringbuffer, | ||
+ | cmp #48 ; look for zero | ||
+ | bne _print ; yes | ||
+ | iny ; move to next number | ||
+ | cpy #5 ; are we on the last number position | ||
+ | bne _donext ; jump out and print what ever is there | ||
+ | |||
+ | _print | ||
+ | lda #28 ; text colour red | ||
+ | jsr $ffd2 | ||
+ | |||
+ | _getnextchar | ||
+ | lda stringbuffer, | ||
+ | jsr $ffd2 ; call CHROUT | ||
+ | iny ; move to next letter | ||
+ | cpy #6 ; 5 numbers in 16 bit address last letter to print | ||
+ | bne _getnextchar ; | ||
+ | rts | ||
+ | |||
+ | stringbuffer | ||
+ | .byte 0, | ||
+ | |||
+ | ; | ||
+ | ; SET THE PRINTNUM TO MOVE TO THE NEXT LINE AFTER PRINTING * | ||
+ | ; | ||
+ | carryagereturn | ||
+ | lda #13 | ||
+ | jsr $ffd2 | ||
+ | lda #10 | ||
+ | jsr $ffd2 | ||
+ | lda #0 | ||
+ | jsr $ffd2 | ||
+ | rts | ||
+ | clearbuffer | ||
+ | ldy #0 | ||
+ | _clearbuffer0 | ||
+ | lda #48 ; this clear the buffer we use to print a 16 bit number | ||
+ | sta stringbuffer, | ||
+ | iny | ||
+ | cpy #5 | ||
+ | bne _clearbuffer0 | ||
+ | rts | ||
+ | |||
+ | ; | ||
+ | ;* MULTIPLIY | ||
+ | ;* temp0 - temp7 * | ||
+ | ;* temp0 = low byte of number | ||
+ | ;* temp1 = high byte of number | ||
+ | ;* temp2 = low byte of multiplicand | ||
+ | ;* temp3 = high byte of multiplicand * | ||
+ | ;* temp4 = low byte of result | ||
+ | ;* temp5 = high byte of result | ||
+ | ; | ||
+ | mult16 | ||
+ | lda #0 ; product | ||
+ | sta temp4 | ||
+ | lda #0 | ||
+ | sta temp5 | ||
+ | lda #$00 | ||
+ | sta temp6 ; clear upper bits of product | ||
+ | sta temp7 | ||
+ | ldx #$10 ; set binary count to 16 | ||
+ | shift_r | ||
+ | lsr temp1 ; divide multiplier by 2 | ||
+ | ror temp0 | ||
+ | bcc rotate_r | ||
+ | lda temp6 ; get upper half of product and add multiplicand | ||
+ | clc | ||
+ | adc temp2 | ||
+ | sta temp6 | ||
+ | lda temp7 | ||
+ | adc temp3 | ||
+ | rotate_r | ||
+ | ror ; rotate partial product | ||
+ | sta temp7 | ||
+ | ror temp6 | ||
+ | ror temp5 | ||
+ | ror temp4 | ||
+ | dex | ||
+ | bne shift_r | ||
+ | rts | ||
+ | |||
+ | ; | ||
+ | ;* DO SCREEN SCROLL * | ||
+ | ; | ||
+ | vblank | ||
+ | lda #1 | ||
+ | sta sync | ||
+ | |||
+ | lda scrollstop ; | ||
+ | ; THE SCREEN | ||
+ | cmp #0 ; STILL WAITING FOR JOYSTICK | ||
+ | beq vblankquit | ||
+ | lda scrollstop | ||
+ | cmp #2 | ||
+ | beq updownscroll ; | ||
+ | jmp leftrightscroll ; | ||
+ | |||
+ | vblankquit | ||
+ | lda #$ff ; QUIT OUT AND WAIT | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 ; quit out | ||
+ | |||
+ | ; | ||
+ | ;** SCROLL THE SCREEN UP OR DOWN USING YSCROLL AND MAPY ** | ||
+ | ; | ||
+ | |||
+ | updownscroll | ||
+ | lda yscroll ; CURRENT YSCROLL VALUE | ||
+ | ;dec $d020 | ||
+ | _ck7 | ||
+ | cmp #7 ; DOING NOUT | ||
+ | bne _ck6 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | |||
+ | lda #1 ; SET NEW FLAG VALUE | ||
+ | sta yscroll | ||
+ | |||
+ | lda $d011 ; set screen scroll position | ||
+ | and #%01111000 | ||
+ | ora #7 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d011 | ||
+ | |||
+ | lda udflag ; WE SCROLL EACH WAY TWO TIMES | ||
+ | cmp #1 | ||
+ | bne _not7next | ||
+ | LDA #< | ||
+ | LDX #> | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 ; irq address | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _not7next | ||
+ | LDA #< | ||
+ | LDX #> | ||
+ | STA $0314 | ||
+ | STX $0315 | ||
+ | _ck7quit | ||
+ | lda #$ff | ||
+ | sta $D019 | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck6 | ||
+ | cmp #6 ; CARRY ON TO FOUR | ||
+ | bne _ck5 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | lda #4 ; SET NEW FLAG VALUE | ||
+ | sta yscroll | ||
+ | | ||
+ | _ck6quit | ||
+ | lda #$ff | ||
+ | sta $D019 | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck5 | ||
+ | cmp #5 ; CONTINUE SCROLL UP | ||
+ | bne _ck4 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | |||
+ | lda Ptrhiddenscreen ; | ||
+ | sta temp1 | ||
+ | lda Ptrhiddenscreen+1 | ||
+ | sta temp2 | ||
+ | lda PtrSparecolour ; | ||
+ | sta temp3 | ||
+ | lda PtrSparecolour+1 | ||
+ | sta temp4 | ||
+ | jsr filltop ; CALL FILLTOP | ||
+ | |||
+ | lda #7 ; SET SCREEN SCROLL POSITION | ||
+ | sta yscroll ; SAVE NEW SCROLL POSITION | ||
+ | |||
+ | lda $d011 ; set screen scroll position | ||
+ | and #%01111000 | ||
+ | ora #5 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d011 | ||
+ | |||
+ | _ck5quit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck4 | ||
+ | cmp #4 ; START SCROLL DOWN | ||
+ | bne _ck3 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | |||
+ | inc udflag ; WE SCROLL EACH WAY TWO TIMES | ||
+ | lda udflag | ||
+ | cmp #1 ; DO WE NEED TO SCROLL AGAIN | ||
+ | beq _ckcontinuey4b ; | ||
+ | cmp #2 ; DO WE NEED TO SCROLL AGAIN | ||
+ | beq _ckcontinuey4a ; | ||
+ | lda #0 ; STOP SCROLLING | ||
+ | sta scrollstop ; | ||
+ | sta udflag | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ckcontinuey4a | ||
+ | lda mapy ; GET VALUE OF MAP POINTER | ||
+ | cmp # | ||
+ | beq _ckcontinuey4b ; | ||
+ | inc mapy ; MOVE MAP POINTER DOWN ONE LINE | ||
+ | _ckcontinuey4b | ||
+ | ldx #1 ; COPY SCREEN UP ONE POSITION | ||
+ | jsr copyscreenlu ; | ||
+ | |||
+ | lda #2 ; SET NEW FLAG VALUE | ||
+ | sta yscroll | ||
+ | |||
+ | lda $d011 | ||
+ | and #%01111000 | ||
+ | ora #4 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d011 | ||
+ | |||
+ | _ck4quit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck3 | ||
+ | cmp #3 ; START SCROLL UP | ||
+ | bne _ck2 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | |||
+ | inc udflag | ||
+ | |||
+ | lda udflag ; WE SCROLL EACH WAY TWO TIMES | ||
+ | cmp #1 ; DO WE NEED TO SCROLL AGAIN | ||
+ | beq _ckcontinuey3a ; | ||
+ | cmp #2 ; DO WE NEED TO SCROLL AGAIN | ||
+ | beq _ckcontinuey3b ; | ||
+ | lda #0 ; STOP SCROLLIMG | ||
+ | sta scrollstop ; | ||
+ | sta udflag | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ckcontinuey3a | ||
+ | lda mapy ; GET VALUE OF MAP POINTER | ||
+ | cmp #0 ; MAKE SURE WE CAN STILL MOVE DOWN | ||
+ | beq _ckcontinuey3b ; | ||
+ | dec mapy ; MOVE MAP POINTER DOWN ONE LINE | ||
+ | _ckcontinuey3b | ||
+ | ldx #1 ; SET COPY SCREEN DOWN | ||
+ | jsr copyscreenrd ; | ||
+ | |||
+ | lda $d011 ; set screen scroll position | ||
+ | and #%01111000 | ||
+ | ora #3 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d011 | ||
+ | |||
+ | lda #5 ; NEW VALUE FOR YSCROLL | ||
+ | sta yscroll ; SET NEW YSCROLL VALUE | ||
+ | | ||
+ | _ck3quit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck2 | ||
+ | cmp #2 ; CONTINUE SCROLL DOWN | ||
+ | bne _ck1 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | | ||
+ | ; SET UP POINTER FOR BOTTOM ROW | ||
+ | clc ; POSITION ROW BOTTOM OF SCREEN | ||
+ | lda Ptrhiddenscreen ; | ||
+ | adc #<960 | ||
+ | sta temp1 | ||
+ | lda Ptrhiddenscreen+1 | ||
+ | adc #>960 | ||
+ | sta temp2 | ||
+ | |||
+ | clc | ||
+ | lda PtrSparecolour ; | ||
+ | adc #<960 | ||
+ | sta temp3 | ||
+ | lda PtrSparecolour+1 | ||
+ | adc #>960 | ||
+ | sta temp4 | ||
+ | jsr fillbottom | ||
+ | |||
+ | lda #0 ; SET SCREEN SCROLL POSITION FLAG | ||
+ | sta yscroll | ||
+ | |||
+ | _ck2quit | ||
+ | lda $d011 ; set screen scroll position | ||
+ | and #%01111000 | ||
+ | ora #2 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d011 | ||
+ | |||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck1 | ||
+ | cmp #1 ; DOING NOUT | ||
+ | bne _ck0 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | lda #3 ; SET NEW FLAG VALUE | ||
+ | sta yscroll | ||
+ | | ||
+ | _ck1quit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck0 | ||
+ | cmp #0 ; DOING NOUT | ||
+ | bne ckyquit ; NO MATCH SO GO TO RESET | ||
+ | |||
+ | lda #6 ; SET NEW FLAG VALUE | ||
+ | sta yscroll | ||
+ | |||
+ | lda $d011 | ||
+ | and #%01111000 | ||
+ | ora #0 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d011 | ||
+ | |||
+ | lda udflag ; WE SCROLL EACH WAY TWO TIMES | ||
+ | cmp #1 | ||
+ | bne _not0next | ||
+ | LDA #< | ||
+ | LDX #> | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 ; irq address | ||
+ | lda #$ff | ||
+ | sta $D019 | ||
+ | jmp $ea31 | ||
+ | |||
+ | _not0next | ||
+ | LDA #< | ||
+ | LDX #> | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 ; irq address | ||
+ | ckyquit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | ; | ||
+ | ;** SCROLL THE SCREEN LEFT OR RIGHT USING XSCROLL AND MAPX ** | ||
+ | ; | ||
+ | leftrightscroll | ||
+ | lda xscroll ; CURRENT XSCROLL VALUE | ||
+ | |||
+ | _ck7 | ||
+ | cmp #7 ; DOING NOUT | ||
+ | bne _ck6 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | |||
+ | lda #1 ; SET SCREEN SCROLL POSITION | ||
+ | sta xscroll ; SAVE NEW SCROLL POSITION | ||
+ | |||
+ | lda $d016 ; set screen scroll position | ||
+ | and #%11111000 | ||
+ | ora #7 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d016 | ||
+ | |||
+ | lda lrflag ; WE SCROLL EACH WAY TWO TIMES | ||
+ | cmp #1 | ||
+ | bne _not7next | ||
+ | LDA #< | ||
+ | LDX #> | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 ; irq address | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _not7next | ||
+ | LDA #< | ||
+ | LDX #> | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 ; irq address | ||
+ | _ck7quit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck6 | ||
+ | cmp #6 ; DOING NOUT | ||
+ | bne _ck5 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | |||
+ | lda #4 ; SET SCREEN SCROLL POSITION | ||
+ | sta xscroll ; SAVE NEW SCROLL POSITION | ||
+ | |||
+ | _ck6quit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck5 | ||
+ | cmp #5 ; CONTINUE SCROLL LEFT | ||
+ | bne _ck4 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | lda Ptrhiddenscreen | ||
+ | sta temp1 | ||
+ | lda Ptrhiddenscreen+1 | ||
+ | sta temp2 | ||
+ | |||
+ | lda PtrSparecolour ; | ||
+ | sta temp3 | ||
+ | lda PtrSparecolour+1 | ||
+ | sta temp4 | ||
+ | jsr fillleftside ; | ||
+ | |||
+ | lda #7 ; SET SCREEN SCROLL POSITION | ||
+ | sta xscroll ; SAVE NEW SCROLL POSITION | ||
+ | lda $d016 ; set screen scroll position | ||
+ | and #%11111000 | ||
+ | ora #5 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d016 | ||
+ | |||
+ | _ck5quit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | _ck4 | ||
+ | cmp #4 ; START SCROLL RIGHT | ||
+ | bne _ck3 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | |||
+ | inc lrflag | ||
+ | |||
+ | lda lrflag ; WE SCROLL EACH WAY TWO TIMES | ||
+ | cmp #1 ; DO WE NEED TO SCROLL AGAIN | ||
+ | beq _ckcontinue4b ; | ||
+ | cmp #2 ; DO WE NEED TO SCROLL AGAIN | ||
+ | beq _ckcontinue4a ; | ||
+ | lda #0 ; STOP SCROLLIMG | ||
+ | sta scrollstop ; | ||
+ | sta lrflag | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ckcontinue4a | ||
+ | lda mapx ; GET VALUE OF MAP POINTER | ||
+ | cmp # | ||
+ | beq _ckcontinue4b ; | ||
+ | inc mapx ; MOVE MAP POINTER RIGHT ONE TILE | ||
+ | |||
+ | _ckcontinue4b | ||
+ | ldx #0 ; COPY SCREEN LEFT ONE POSITION | ||
+ | jsr copyscreenlu ; | ||
+ | |||
+ | lda #2 ; SET NEW FLAG VALUE | ||
+ | sta xscroll ; SET XSCROLL FOR NEXT IRQ CALL | ||
+ | lda $d016 ; set screen scroll position | ||
+ | and #%11111000 | ||
+ | ora #4 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d016 | ||
+ | _ck4quit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck3 | ||
+ | cmp #3 ; START SCROLL LEFT | ||
+ | bne _ck2 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | |||
+ | inc lrflag | ||
+ | |||
+ | lda lrflag ; WE SCROLL EACH WAY TWO TIMES | ||
+ | cmp #1 ; DO WE NEED TO SCROLL AGAIN | ||
+ | beq _ckcontinuex3a | ||
+ | cmp #2 ; DO WE NEED TO SCROLL AGAIN | ||
+ | beq _ckcontinuex3b ; | ||
+ | lda #0 ; STOP SCROLLIMG | ||
+ | sta scrollstop ; | ||
+ | sta lrflag | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ckcontinuex3a | ||
+ | lda mapx | ||
+ | cmp #0 ; MAKE SURE WE CAN STILL MOVE LEFT | ||
+ | beq _ckcontinuex3b | ||
+ | dec mapx ; MOVE MAP POINTER LEFT ONE LINE | ||
+ | |||
+ | _ckcontinuex3b | ||
+ | ldx #0 ; SET COPY SCREEN LEFT | ||
+ | jsr copyscreenrd ; | ||
+ | |||
+ | lda #5 ; NEW VALUE FOR XSCROLL | ||
+ | sta xscroll ; SET NEW XSCROLL VALUE | ||
+ | |||
+ | lda $d016 ; set screen scroll position | ||
+ | and #%11111000 | ||
+ | ora #3 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d016 | ||
+ | | ||
+ | _ck3quit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck2 | ||
+ | cmp #2 ; CONTINUE SCROLL RIGHT | ||
+ | bne _ck1 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | |||
+ | lda Ptrhiddenscreen ; | ||
+ | sta temp1 | ||
+ | lda Ptrhiddenscreen+1 | ||
+ | sta temp2 | ||
+ | lda PtrSparecolour ; | ||
+ | sta temp3 | ||
+ | lda PtrSparecolour+1 | ||
+ | sta temp4 | ||
+ | jsr fillrightside ; | ||
+ | |||
+ | lda #0 ; SET SCREEN SCROLL POSITION | ||
+ | sta xscroll ; SAVE NEW SCROLL POSITION | ||
+ | |||
+ | lda $d016 | ||
+ | and #%11111000 | ||
+ | ora #2 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d016 | ||
+ | |||
+ | _ck2quit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck1 | ||
+ | cmp #1 ; DOING NOUT | ||
+ | bne _ck0 ; NO MATCH SO CHECK NEXT VALUE | ||
+ | |||
+ | lda #3 ; SET SCREEN SCROLL POSITION | ||
+ | sta xscroll ; SAVE NEW SCROLL POSITION | ||
+ | |||
+ | _ck1quit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _ck0 | ||
+ | cmp #0 ; DOING NOUT | ||
+ | bne ckxquit ; NO MATCH SO QUIT OUT | ||
+ | |||
+ | lda #6 ; SET SCREEN SCROLL POSITION | ||
+ | sta xscroll | ||
+ | lda $d016 ; set screen scroll position | ||
+ | and #%11111000 | ||
+ | ora #0 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d016 | ||
+ | |||
+ | lda lrflag ; WE SCROLL EACH WAY TWO TIMES | ||
+ | cmp #1 | ||
+ | bne _not0next | ||
+ | LDA #< | ||
+ | LDX #> | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 ; irq address | ||
+ | lda #$ff | ||
+ | sta $D019 | ||
+ | jmp $ea31 | ||
+ | |||
+ | _not0next | ||
+ | LDA #< | ||
+ | LDX #> | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 ; irq address | ||
+ | ckxquit | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | IRQUPDOWN | ||
+ | ;inc $d020 | ||
+ | ldy #0 ; COPY COLOUR FOR SCROLL DOWN OR UP | ||
+ | _loop | ||
+ | lda sparecolour, | ||
+ | sta 55296,y ; 0 | ||
+ | sta 55297,y | ||
+ | lda sparecolour+40, | ||
+ | sta 55296+40,y | ||
+ | sta 55296+41,y | ||
+ | lda sparecolour+120, | ||
+ | sta 55296+120, | ||
+ | sta 55296+121, | ||
+ | lda sparecolour+200, | ||
+ | sta 55296+200,y | ||
+ | sta 55296+201, | ||
+ | lda sparecolour+280, | ||
+ | sta 55296+280,y | ||
+ | sta 55296+281, | ||
+ | lda sparecolour+360, | ||
+ | sta 55296+360, | ||
+ | sta 55296+361,y | ||
+ | lda sparecolour+440, | ||
+ | sta 55296+440, | ||
+ | sta 55296+441, | ||
+ | lda sparecolour+520, | ||
+ | sta 55296+520, | ||
+ | sta 55296+521,y | ||
+ | lda sparecolour+600, | ||
+ | sta 55296+600, | ||
+ | sta 55296+601,y | ||
+ | lda sparecolour+680, | ||
+ | sta 55296+680, | ||
+ | sta 55296+681, | ||
+ | lda sparecolour+760, | ||
+ | sta 55296+760, | ||
+ | sta 55296+761,y | ||
+ | lda sparecolour+840, | ||
+ | sta 55296+840, | ||
+ | sta 55296+841,y | ||
+ | lda sparecolour+920, | ||
+ | sta 55296+920, | ||
+ | sta 55296+921, | ||
+ | lda sparecolour+960, | ||
+ | sta 55296+960, | ||
+ | sta 55296+961,y | ||
+ | iny | ||
+ | iny ; move to next line | ||
+ | cpy #40 ; 40 across count | ||
+ | beq _irq1quit | ||
+ | jmp _loop | ||
+ | _irq1quit | ||
+ | ;dec $d020 | ||
+ | jmp IRQSWAPSCREEN | ||
+ | |||
+ | ; | ||
+ | IRQUPDOWN2 | ||
+ | ;inc $d020 | ||
+ | ldy #0 | ||
+ | _loop | ||
+ | lda sparecolour, | ||
+ | sta 55296,y | ||
+ | sta 55297,y | ||
+ | lda sparecolour+80, | ||
+ | sta 55296+80,y | ||
+ | sta 55296+81,y | ||
+ | lda sparecolour+160, | ||
+ | sta 55296+160, | ||
+ | sta 55296+161,y | ||
+ | lda sparecolour+240, | ||
+ | sta 55296+240, | ||
+ | sta 55296+241, | ||
+ | lda sparecolour+320, | ||
+ | sta 55296+320, | ||
+ | sta 55296+321, | ||
+ | lda sparecolour+400, | ||
+ | sta 55296+400, | ||
+ | sta 55296+401, | ||
+ | lda sparecolour+480, | ||
+ | sta 55296+480, | ||
+ | sta 55296+481,y | ||
+ | lda sparecolour+560, | ||
+ | sta 55296+560, | ||
+ | sta 55296+561, | ||
+ | lda sparecolour+640, | ||
+ | sta 55296+640, | ||
+ | sta 55296+641, | ||
+ | lda sparecolour+720, | ||
+ | sta 55296+720, | ||
+ | sta 55296+721, | ||
+ | lda sparecolour+800, | ||
+ | sta 55296+800,y | ||
+ | sta 55296+801, | ||
+ | lda sparecolour+880, | ||
+ | sta 55296+880, | ||
+ | sta 55296+881, | ||
+ | lda sparecolour+960, | ||
+ | sta 55296+960, | ||
+ | sta 55296+961, | ||
+ | iny ; move to next line | ||
+ | iny | ||
+ | cpy #40 ; 40 across count | ||
+ | beq irq2quit | ||
+ | jmp _loop | ||
+ | |||
+ | irq2quit | ||
+ | IRQSWAPSCREEN | ||
+ | lda whichscreen ; | ||
+ | cmp #0 ; screen address 3072 is not beening shown | ||
+ | bne _buf | ||
+ | lda $D018 ; current screen | ||
+ | and # | ||
+ | ora #16 ; set current screen that you can see to 1024 | ||
+ | sta $D018 | ||
+ | lda # | ||
+ | sta 648 | ||
+ | lda #< | ||
+ | sta Ptrscreen ; | ||
+ | lda #>1024 | ||
+ | sta Ptrscreen+1 ; | ||
+ | lda #< | ||
+ | sta Ptrhiddenscreen ; | ||
+ | lda #>3072 | ||
+ | sta Ptrhiddenscreen+1 ; | ||
+ | lda #1 | ||
+ | sta whichscreen | ||
+ | lda $d011 | ||
+ | and #%01111000 | ||
+ | ora #3 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d011 | ||
+ | |||
+ | LDA #< | ||
+ | LDX #>vblank | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 ; irq address | ||
+ | |||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | _buf | ||
+ | lda $D018 ; set default screen | ||
+ | and #%00001111 | ||
+ | ora #48 ; set current screen that you can see to 3072 | ||
+ | sta $D018 | ||
+ | lda # | ||
+ | sta 648 | ||
+ | lda #< | ||
+ | sta Ptrscreen ; | ||
+ | lda #>3072 | ||
+ | sta Ptrscreen+1 ; | ||
+ | lda #< | ||
+ | sta Ptrhiddenscreen ; | ||
+ | lda #>1024 | ||
+ | sta Ptrhiddenscreen+1 ; | ||
+ | lda #0 | ||
+ | sta whichscreen | ||
+ | |||
+ | lda $d011 ; set screen scroll position | ||
+ | and #%01111000 | ||
+ | ora #3 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d011 | ||
+ | |||
+ | LDA #< | ||
+ | LDX #>vblank | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 | ||
+ | |||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | ; | ||
+ | |||
+ | irqleftright | ||
+ | ;inc $d020 | ||
+ | ldy #1 ; COPY ODD NUMBERS | ||
+ | _loop | ||
+ | lda sparecolour+0, | ||
+ | sta 55296,y | ||
+ | lda sparecolour+40, | ||
+ | sta 55296+40,y | ||
+ | lda sparecolour+80, | ||
+ | sta 55296+80,y | ||
+ | lda sparecolour+120, | ||
+ | sta 55296+120, | ||
+ | lda sparecolour+160, | ||
+ | sta 55296+160, | ||
+ | lda sparecolour+200, | ||
+ | sta 55296+200, | ||
+ | lda sparecolour+240, | ||
+ | sta 55296+240, | ||
+ | lda sparecolour+280, | ||
+ | sta 55296+280, | ||
+ | lda sparecolour+320, | ||
+ | sta 55296+320, | ||
+ | lda sparecolour+360, | ||
+ | sta 55296+360, | ||
+ | lda sparecolour+400, | ||
+ | sta 55296+400, | ||
+ | lda sparecolour+440, | ||
+ | sta 55296+440, | ||
+ | lda sparecolour+480, | ||
+ | sta 55296+480, | ||
+ | lda sparecolour+520, | ||
+ | sta 55296+520, | ||
+ | lda sparecolour+560, | ||
+ | sta 55296+560, | ||
+ | lda sparecolour+600, | ||
+ | sta 55296+600, | ||
+ | lda sparecolour+640, | ||
+ | sta 55296+640, | ||
+ | lda sparecolour+680, | ||
+ | sta 55296+680, | ||
+ | lda sparecolour+720, | ||
+ | sta 55296+720, | ||
+ | lda sparecolour+760, | ||
+ | sta 55296+760, | ||
+ | lda sparecolour+800, | ||
+ | sta 55296+800, | ||
+ | lda sparecolour+840, | ||
+ | sta 55296+840, | ||
+ | lda sparecolour+880, | ||
+ | sta 55296+880, | ||
+ | lda sparecolour+920, | ||
+ | sta 55296+920, | ||
+ | lda sparecolour+960, | ||
+ | sta 55296+960, | ||
+ | iny | ||
+ | iny ; move to next line | ||
+ | ;dec $d020 | ||
+ | cpy #39 ; 40 across count | ||
+ | beq _irq1quit | ||
+ | jmp _loop | ||
+ | |||
+ | _irq1quit | ||
+ | ;dec $d020 | ||
+ | jmp IRQSWAPSCREEN2 | ||
+ | |||
+ | ; | ||
+ | irqleftright2 | ||
+ | ;inc $d020 | ||
+ | ldy #0 ; COPY EVEN NUMBERS | ||
+ | _loop | ||
+ | |||
+ | lda sparecolour+0, | ||
+ | sta 55296,y | ||
+ | lda sparecolour+40, | ||
+ | sta 55296+40,y | ||
+ | lda sparecolour+80, | ||
+ | sta 55296+80,y | ||
+ | lda sparecolour+120, | ||
+ | sta 55296+120, | ||
+ | lda sparecolour+160, | ||
+ | sta 55296+160, | ||
+ | lda sparecolour+200, | ||
+ | sta 55296+200, | ||
+ | lda sparecolour+240, | ||
+ | sta 55296+240, | ||
+ | lda sparecolour+280, | ||
+ | sta 55296+280, | ||
+ | lda sparecolour+320, | ||
+ | sta 55296+320, | ||
+ | lda sparecolour+360, | ||
+ | sta 55296+360, | ||
+ | lda sparecolour+400, | ||
+ | sta 55296+400, | ||
+ | lda sparecolour+440, | ||
+ | sta 55296+440, | ||
+ | lda sparecolour+480, | ||
+ | sta 55296+480, | ||
+ | lda sparecolour+520, | ||
+ | sta 55296+520, | ||
+ | lda sparecolour+560, | ||
+ | sta 55296+560, | ||
+ | lda sparecolour+600, | ||
+ | sta 55296+600, | ||
+ | lda sparecolour+640, | ||
+ | sta 55296+640, | ||
+ | lda sparecolour+680, | ||
+ | sta 55296+680, | ||
+ | lda sparecolour+720, | ||
+ | sta 55296+720, | ||
+ | lda sparecolour+760, | ||
+ | sta 55296+760, | ||
+ | lda sparecolour+800, | ||
+ | sta 55296+800, | ||
+ | lda sparecolour+840, | ||
+ | sta 55296+840, | ||
+ | lda sparecolour+880, | ||
+ | sta 55296+880, | ||
+ | lda sparecolour+920, | ||
+ | sta 55296+920, | ||
+ | lda sparecolour+960, | ||
+ | sta 55296+960, | ||
+ | ;inc $d020 | ||
+ | iny | ||
+ | iny ; move to next line | ||
+ | cpy #40 ; 40 across count | ||
+ | beq irq1quit | ||
+ | jmp _loop | ||
+ | |||
+ | irq1quit | ||
+ | ;dec $d020 | ||
+ | |||
+ | IRQSWAPSCREEN2 | ||
+ | |||
+ | lda whichscreen | ||
+ | cmp #0 ; screen address 3072 is not beening shown | ||
+ | bne _buf | ||
+ | lda $D018 ; current screen | ||
+ | and # | ||
+ | ora #16 ; set current screen that you can see to 1024 | ||
+ | sta $D018 | ||
+ | lda # | ||
+ | sta 648 | ||
+ | lda #< | ||
+ | sta Ptrscreen ; | ||
+ | lda #>1024 | ||
+ | sta Ptrscreen+1 ; | ||
+ | lda #< | ||
+ | sta Ptrhiddenscreen ; | ||
+ | lda #>3072 | ||
+ | sta Ptrhiddenscreen+1 ; | ||
+ | lda #1 | ||
+ | sta whichscreen | ||
+ | lda $d016 | ||
+ | and #%11111000 | ||
+ | ora #3 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d016 | ||
+ | LDA #< | ||
+ | LDX #>vblank | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 ; irq address | ||
+ | lda #$ff | ||
+ | sta $D019 | ||
+ | jmp $ea31 | ||
+ | |||
+ | _buf | ||
+ | lda $D018 ; set default screeh | ||
+ | and #%00001111 | ||
+ | ora #48 ; set current screen that you can see to 3072 | ||
+ | sta $D018 | ||
+ | lda # | ||
+ | sta 648 | ||
+ | lda #< | ||
+ | sta Ptrscreen ; | ||
+ | lda #>3072 | ||
+ | sta Ptrscreen+1 ; | ||
+ | lda #< | ||
+ | sta Ptrhiddenscreen ; | ||
+ | lda #>1024 | ||
+ | sta Ptrhiddenscreen+1 ; | ||
+ | lda #0 | ||
+ | sta whichscreen | ||
+ | lda $d016 ; set screen scroll position | ||
+ | and #%11111000 | ||
+ | ora #3 ; Smooth Scroll to x Dot-Position (0-7) | ||
+ | sta $d016 | ||
+ | LDA #< | ||
+ | LDX #>vblank | ||
+ | STA $0314 ; irq address | ||
+ | STX $0315 ; irq address | ||
+ | lda #$ff | ||
+ | sta $D019 ; VIC Interrupt Request Register (IRR) | ||
+ | jmp $ea31 | ||
+ | |||
+ | ; | ||
+ | ;* RANDOM NUMBER MAKER * | ||
+ | ; | ||
+ | random | ||
+ | lda $DC04 ; CIA#1 Timer A Lo byte | ||
+ | eor $DC05 ; CIA#1 Timer A Hi byte | ||
+ | eor $DD04 ; CIA#2 Timer A Lo byte | ||
+ | adc $DD05 ; CIA#2 Timer A Hi byte | ||
+ | eor $DD06 ; CIA#2 Timer B Lo byte | ||
+ | eor $DD07 ; CIA#2 Timer B Hi byte | ||
+ | rts | ||
+ | |||
+ | |||
+ | ; level char and colour data loaded here | ||
+ | ; Map Size X 59 | ||
+ | ; Map Size Y 36 | ||
+ | ; Mult Colour Flag 1 | ||
+ | ; Back Ground Colour 0 | ||
+ | ; Mult Colour 1 11 | ||
+ | ; Mult Colour 2 15 | ||
+ | ; Tile Size 2 | ||
+ | ; Clear Value 27 tile used to clear a space | ||
+ | |||
+ | level | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | .byte 31, | ||
+ | |||
+ | |||
+ | levelcolour | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | .byte 6, | ||
+ | |||
+ | |||
+ | |||
+ | sparecolour | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | |||
+ | ; where the begining address of the map lines is stored | ||
+ | mapyaddress | ||
+ | .word 0, | ||
+ | .word 0, | ||
+ | .word 0, | ||
+ | .word 0, | ||
+ | .word 0, | ||
+ | |||
+ | * = 12288 ; $3000 12288 Address were char image are being loaded | ||
+ | charrom | ||
+ | .byte 60, | ||
+ | .byte 24, | ||
+ | .byte 124, | ||
+ | .byte 60, | ||
+ | .byte 120, | ||
+ | .byte 126, | ||
+ | .byte 126, | ||
+ | .byte 60, | ||
+ | .byte 102, | ||
+ | .byte 60, | ||
+ | .byte 30, | ||
+ | .byte 102, | ||
+ | .byte 96, | ||
+ | .byte 99, | ||
+ | .byte 102, | ||
+ | .byte 60, | ||
+ | .byte 124, | ||
+ | .byte 60, | ||
+ | .byte 124, | ||
+ | .byte 60, | ||
+ | .byte 126, | ||
+ | .byte 102, | ||
+ | .byte 102, | ||
+ | .byte 99, | ||
+ | .byte 102, | ||
+ | .byte 102, | ||
+ | .byte 126, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 126, | ||
+ | .byte 62, | ||
+ | .byte 63, | ||
+ | .byte 252, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 170, | ||
+ | .byte 170, | ||
+ | .byte 126, | ||
+ | .byte 126, | ||
+ | .byte 0, | ||
+ | .byte 60, | ||
+ | .byte 24, | ||
+ | .byte 60, | ||
+ | .byte 60, | ||
+ | .byte 6, | ||
+ | .byte 126, | ||
+ | .byte 60, | ||
+ | .byte 126, | ||
+ | .byte 60, | ||
+ | .byte 60, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 47, | ||
+ | .byte 216, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 47, | ||
+ | .byte 248, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 23, | ||
+ | .byte 212, | ||
+ | .byte 23, | ||
+ | .byte 212, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 47, | ||
+ | .byte 248, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 52, | ||
+ | .byte 204, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 157, | ||
+ | .byte 216, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 37, | ||
+ | .byte 88, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 23, | ||
+ | .byte 212, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 55, | ||
+ | .byte 220, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 238, | ||
+ | .byte 236, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 240, | ||
+ | .byte 240, | ||
+ | .byte 20, | ||
+ | .byte 20, | ||
+ | .byte 237, | ||
+ | .byte 187, | ||
+ | .byte 63, | ||
+ | .byte 20, | ||
+ | .byte 213, | ||
+ | .byte 216, | ||
+ | .byte 3, | ||
+ | .byte 212, | ||
+ | .byte 55, | ||
+ | .byte 220, | ||
+ | .byte 36, | ||
+ | .byte 252, | ||
+ | .byte 39, | ||
+ | .byte 87, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 129, | ||
+ | .byte 153, | ||
+ | .byte 153, | ||
+ | .byte 156, | ||
+ | .byte 153, | ||
+ | .byte 153, | ||
+ | .byte 129, | ||
+ | .byte 195, | ||
+ | .byte 243, | ||
+ | .byte 195, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 231, | ||
+ | .byte 153, | ||
+ | .byte 153, | ||
+ | .byte 231, | ||
+ | .byte 157, | ||
+ | .byte 195, | ||
+ | .byte 249, | ||
+ | .byte 243, | ||
+ | .byte 207, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 195, | ||
+ | .byte 231, | ||
+ | .byte 195, | ||
+ | .byte 195, | ||
+ | .byte 249, | ||
+ | .byte 129, | ||
+ | .byte 195, | ||
+ | .byte 129, | ||
+ | .byte 195, | ||
+ | .byte 195, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 241, | ||
+ | .byte 255, | ||
+ | .byte 143, | ||
+ | .byte 195, | ||
+ | .byte 255, | ||
+ | .byte 247, | ||
+ | .byte 231, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 207, | ||
+ | .byte 243, | ||
+ | .byte 255, | ||
+ | .byte 231, | ||
+ | .byte 231, | ||
+ | .byte 63, | ||
+ | .byte 63, | ||
+ | .byte 252, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 201, | ||
+ | .byte 159, | ||
+ | .byte 255, | ||
+ | .byte 60, | ||
+ | .byte 255, | ||
+ | .byte 231, | ||
+ | .byte 249, | ||
+ | .byte 247, | ||
+ | .byte 231, | ||
+ | .byte 63, | ||
+ | .byte 231, | ||
+ | .byte 255, | ||
+ | .byte 0, | ||
+ | .byte 255, | ||
+ | .byte 15, | ||
+ | .byte 255, | ||
+ | .byte 0, | ||
+ | .byte 255, | ||
+ | .byte 63, | ||
+ | .byte 51, | ||
+ | .byte 252, | ||
+ | .byte 255, | ||
+ | .byte 0, | ||
+ | .byte 252, | ||
+ | .byte 231, | ||
+ | .byte 255, | ||
+ | .byte 231, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 255, | ||
+ | .byte 231, | ||
+ | .byte 255, | ||
+ | .byte 231, | ||
+ | .byte 63, | ||
+ | .byte 31, | ||
+ | .byte 248, | ||
+ | .byte 0, | ||
+ | .byte 0, | ||
+ | .byte 255, | ||
+ | .byte 252, | ||
+ | .byte 255, | ||
+ | .byte 240, | ||
+ | .byte 231, | ||
+ | .byte 15, | ||
+ | |||
+ | charromend | ||
+ | |||
+ | *=3072 ; | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | .byte 32, | ||
+ | ; sprite pointer part of the screen | ||
+ | .byte 32, | ||
+ | |||
+ | |||
+ | </ |
base/4_ways_scroll_part_2.txt · Last modified: 2015-04-17 04:30 by 127.0.0.1