From cda248e40c85d3c3bf49bb0e795f51af92ee3f01 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Sun, 6 Jun 2021 00:37:31 -0400 Subject: [PATCH] gr: tunnel: always wanted a tunnel effect still not working --- basic/appleiibot/Makefile | 8 +- basic/appleiibot/weird.bas | 2 + graphics/gr/tunnel/Makefile | 55 +++++++++++++ graphics/gr/tunnel/tunnel.bas | 8 ++ graphics/gr/tunnel/tunnel.s | 143 +++++++++++++++++++++++++++++++++ graphics/gr/tunnel/weird.s | 144 ++++++++++++++++++++++++++++++++++ linker_scripts/apple2_37c.inc | 12 +++ linker_scripts/apple2_37f.inc | 12 +++ linker_scripts/apple2_382.inc | 12 +++ 9 files changed, 395 insertions(+), 1 deletion(-) create mode 100644 basic/appleiibot/weird.bas create mode 100644 graphics/gr/tunnel/Makefile create mode 100644 graphics/gr/tunnel/tunnel.bas create mode 100644 graphics/gr/tunnel/tunnel.s create mode 100644 graphics/gr/tunnel/weird.s create mode 100644 linker_scripts/apple2_37c.inc create mode 100644 linker_scripts/apple2_37f.inc create mode 100644 linker_scripts/apple2_382.inc diff --git a/basic/appleiibot/Makefile b/basic/appleiibot/Makefile index 63ba91b9..57a1272b 100644 --- a/basic/appleiibot/Makefile +++ b/basic/appleiibot/Makefile @@ -16,7 +16,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \ C64.BAS SIERPINSKI.BAS FAKES.BAS SIER.BAS DROPS.BAS RR.BAS RR_HGR.BAS \ COMBO.BAS WIRES.BAS PATTERN.BAS BALL.BAS LINES.BAS MOD9.BAS \ XOR_ZOOM.BAS MOD9_HGR.BAS SIER_HGR.BAS MOVE.BAS SINE.BAS XDRAW128.BAS \ - GATOR.BAS CURSOR.BAS + GATOR.BAS CURSOR.BAS WEIRD.BAS # cp $(EMPTY_DISK)/empty.dsk appleiibot.dsk cp empty.dsk appleiibot.dsk @@ -83,6 +83,7 @@ appleiibot.dsk: E2.BAS FLAME.BAS FLAME2.BAS HELLO \ $(DOS33) -y appleiibot.dsk SAVE A XDRAW128.BAS $(DOS33) -y appleiibot.dsk SAVE A GATOR.BAS $(DOS33) -y appleiibot.dsk SAVE A CURSOR.BAS + $(DOS33) -y appleiibot.dsk SAVE A WEIRD.BAS #### @@ -256,6 +257,11 @@ GATOR.BAS: gator.bas CURSOR.BAS: cursor.bas $(TOKENIZE) < cursor.bas > CURSOR.BAS +#### + +WEIRD.BAS: weird.bas + $(TOKENIZE) < weird.bas > WEIRD.BAS + #### diff --git a/basic/appleiibot/weird.bas b/basic/appleiibot/weird.bas new file mode 100644 index 00000000..d756a2dc --- /dev/null +++ b/basic/appleiibot/weird.bas @@ -0,0 +1,2 @@ +1FORI=0TO123:POKE892+I,4*PEEK(2125+I)-192+(PEEK(2249+I/3)-35)/4^(I-INT(I/3)*3):NEXT +2&",=n9D`S0QnZ0Oo6F3QeWoV/Q6QBk=J8QoM:Q9a;X9R1I0NnYlR86nYmYo76nVo8InYaVn76nRmY776`foWB8RmR1I1VhoR]>Rnj$NocnYnb1[Waod1V2Qc@S0CO0S+@*,4L4;6*4,I70.$*'0#Z'?3[0C75+@W=)G&4V&& diff --git a/graphics/gr/tunnel/Makefile b/graphics/gr/tunnel/Makefile new file mode 100644 index 00000000..cd0ba720 --- /dev/null +++ b/graphics/gr/tunnel/Makefile @@ -0,0 +1,55 @@ +include ../../../Makefile.inc + +DOS33 = ../../../utils/dos33fs-utils/dos33 +PNG2GR = ../../../utils/gr-utils/png2gr +PNG2RLE = ../../../utils/gr-utils/png2rle +TOKENIZE = ../../../utils/asoft_basic-utils/tokenize_asoft +LINKERSCRIPTS = ../../../linker_scripts +EMPTYDISK = ../../../empty_disk + +all: tunnel.dsk + +$(DOS33): + cd ../../utils/dos33fs-utils && make + +tunnel.dsk: $(DOS33) HELLO TUNNEL.BAS TUNNEL WEIRD + cp $(EMPTYDISK)/empty.dsk tunnel.dsk + $(DOS33) -y tunnel.dsk SAVE A HELLO + $(DOS33) -y tunnel.dsk SAVE A TUNNEL.BAS + $(DOS33) -y tunnel.dsk BSAVE -a 0xc00 TUNNEL + $(DOS33) -y tunnel.dsk BSAVE -a 0x37c WEIRD + +### + +HELLO: hello.bas + $(TOKENIZE) < hello.bas > HELLO + +### + +TUNNEL.BAS: tunnel.bas + $(TOKENIZE) < tunnel.bas > TUNNEL.BAS + + +### + +TUNNEL: tunnel.o + ld65 -o TUNNEL tunnel.o -C $(LINKERSCRIPTS)/apple2_c00.inc + +tunnel.o: tunnel.s + ca65 -o tunnel.o tunnel.s -l tunnel.lst + +### + +WEIRD: weird.o + ld65 -o WEIRD weird.o -C $(LINKERSCRIPTS)/apple2_37c.inc + +weird.o: weird.s + ca65 -o weird.o weird.s -l weird.lst + + +### + + +clean: + rm -f *~ *.o HELLO TUNNEL.BAS TUNNEL WEIRD *.lst + diff --git a/graphics/gr/tunnel/tunnel.bas b/graphics/gr/tunnel/tunnel.bas new file mode 100644 index 00000000..eb4ed117 --- /dev/null +++ b/graphics/gr/tunnel/tunnel.bas @@ -0,0 +1,8 @@ +5 REM BY @hisham_hm Mar 7 @AppleIIBot +10 GR:N=7 +20 FOR X=0 TO 4 +30 FOR I=X TO 15+X STEP 5:COLOR=0 +40 Z=39-I:J=I+1:W=Z-1:HLIN J,W AT I:HLIN J,W AT Z:VLIN J,W AT I:VLIN J,W AT Z: COLOR=N:HLIN J,W AT J:HLIN J,W AT W:VLIN J,W AT J:VLIN J,W AT W:N=N+1 +50 NEXT:N=N-4 +60 NEXT:N=N-1:IF N=0 THEN N=12 +70 GOTO 20 diff --git a/graphics/gr/tunnel/tunnel.s b/graphics/gr/tunnel/tunnel.s new file mode 100644 index 00000000..203f74ea --- /dev/null +++ b/graphics/gr/tunnel/tunnel.s @@ -0,0 +1,143 @@ +; based roughly on 5 REM BY @hisham_hm Mar 7 @AppleIIBot + +; this one was an accident due to bug trying to get tunnel code working +; very striking, but *warning flashing lights* + + +H2 = $2C +V2 = $2D +COLOR = $30 +J = $FB +Z = $FC +COUNTMAX = $FD +COUNT = $FE +NEWCOLOR = $FF + +FULLGR = $C052 + + + +HLINE = $F819 ;; HLINE Y,$2C at A +VLINE = $F828 ;; VLINE A,$2D at Y +SETCOL = $F864 ; COLOR=A +SETGR = $FB40 +WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us + +tunnel: + ; 10 GR:N=7 + + jsr SETGR + bit FULLGR + + lda #$7 + sta NEWCOLOR + + + ; 20 FOR X=0 TO 4 + + lda #0 + sta COUNT + + clc + adc #16 + sta COUNTMAX +cycle: + + ; 30 FOR I=X TO 15+X STEP 5:COLOR=0 + + ldx COUNT +iloop: + lda #0 + sta COLOR + + ; 40 Z=39-I:J=I+1:W=Z-1 + + txa + eor #$ff + sec + adc #39 + sta Z + sta H2 + sta V2 + dec H2 + dec V2 + + txa + clc + adc #1 + sta J + + ; HLIN J,W AT I ; HLINE Y,$2C at A + + ldy J + txa + jsr HLINE + + ; HLIN J,W AT Z ; HLINE Y,$2C at A + + ldy J + lda Z + jsr HLINE + + ; VLIN J,W AT I ; VLINE A,$2D at Y + ; VLIN J,W AT Z ; VLINE A,$2D at Y + + + ; COLOR=N + lda NEWCOLOR + jsr SETCOL + + ; HLIN J,W AT J ; HLINE Y,$2C at A + + ldy J + lda J + jsr HLINE + + ; HLIN J,W AT W ; HLINE Y,$2C at A + ldy J + lda H2 + jsr HLINE + + ; VLIN J,W AT J ; VLINE A,$2D at Y + ; VLIN J,W AT W ; VLINE A,$2D at Y + + ; N=N+1 + + inc NEWCOLOR + + + lda #75 + jsr WAIT + + ; 50 NEXT:N=N-4 + + txa + clc + adc #5 + tax + + cpx COUNTMAX + bcc iloop + + sec + lda NEWCOLOR + sbc #4 + sta NEWCOLOR + + ; 60 NEXT:N=N-1:IF N=0 THEN N=12 + + inc COUNT + lda COUNT + cmp #4 + bne cycle + + dec NEWCOLOR + bne end + + lda #12 + sta NEWCOLOR + +end: + ; 70 GOTO 20 + + jmp cycle diff --git a/graphics/gr/tunnel/weird.s b/graphics/gr/tunnel/weird.s new file mode 100644 index 00000000..cd364612 --- /dev/null +++ b/graphics/gr/tunnel/weird.s @@ -0,0 +1,144 @@ +; 5 REM BY @hisham_hm Mar 7 @AppleIIBot + +H2 = $2C +V2 = $2D +COLOR = $30 +J = $FB +Z = $FC +COUNTMAX = $FD +COUNT = $FE +NEWCOLOR = $FF + +FULLGR = $C052 + + + +HLINE = $F819 ;; HLINE Y,$2C at A +VLINE = $F828 ;; VLINE A,$2D at Y +SETCOL = $F864 ; COLOR=A +SETGR = $FB40 +WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us + +tunnel: + ; 10 GR:N=7 + + jsr SETGR + bit FULLGR + + lda #$7 + sta NEWCOLOR + + + ; 20 FOR X=0 TO 4 + + lda #0 + sta COUNT + + clc + adc #16 + sta COUNTMAX +cycle: + + ; 30 FOR I=X TO 15+X STEP 5:COLOR=0 + + ldx COUNT +iloop: + lda #0 + sta COLOR + + ; 40 Z=39-I:J=I+1:W=Z-1 + + txa + eor #$ff + sec + adc #39 + sta Z + sta H2 + sta V2 + dec H2 + dec V2 + + txa + clc + adc #1 + sta J + + ; HLIN J,W AT I ; HLINE Y,$2C at A + + ldy J + txa + jsr HLINE + + ; HLIN J,W AT Z ; HLINE Y,$2C at A + + ldy J + lda Z + jsr HLINE + + ; VLIN J,W AT I ; VLINE A,$2D at Y + ; VLIN J,W AT Z ; VLINE A,$2D at Y + + + ; COLOR=N + lda NEWCOLOR + jsr SETCOL + + ; HLIN J,W AT J ; HLINE Y,$2C at A + + ldy J + lda J + jsr HLINE + + ; HLIN J,W AT W ; HLINE Y,$2C at A + ldy J + lda H2 + jsr HLINE + + ; VLIN J,W AT J ; VLINE A,$2D at Y + ; VLIN J,W AT W ; VLINE A,$2D at Y + + ; N=N+1 + + inc NEWCOLOR + + + lda #75 + jsr WAIT + + ; 50 NEXT:N=N-4 + + txa + clc + adc #5 + tax + + cpx COUNTMAX + bcc iloop + + sec + lda NEWCOLOR + sbc #4 + sta NEWCOLOR + + ; 60 NEXT:N=N-1:IF N=0 THEN N=12 + + inc COUNT + lda COUNT + cmp #4 + bne cycle + + dec NEWCOLOR + bne end + + lda #12 + sta NEWCOLOR + +end: + ; 70 GOTO 20 + + jmp cycle + + ; want to load at $3f5, this originally at 379 + ; so load at $37c + + jmp tunnel diff --git a/linker_scripts/apple2_37c.inc b/linker_scripts/apple2_37c.inc new file mode 100644 index 00000000..a405e87b --- /dev/null +++ b/linker_scripts/apple2_37c.inc @@ -0,0 +1,12 @@ +MEMORY { + ZP: start = $00, size = $1A, type = rw; + RAM: start = $37c, size = $8E00, file = %O; +} + +SEGMENTS { +CODE: load = RAM, type = ro; +RODATA: load = RAM, type = ro; +DATA: load = RAM, type = rw; +BSS: load = RAM, type = bss, define = yes; +ZEROPAGE: load = ZP, type = zp; +} diff --git a/linker_scripts/apple2_37f.inc b/linker_scripts/apple2_37f.inc new file mode 100644 index 00000000..9d3e7f28 --- /dev/null +++ b/linker_scripts/apple2_37f.inc @@ -0,0 +1,12 @@ +MEMORY { + ZP: start = $00, size = $1A, type = rw; + RAM: start = $37f, size = $8E00, file = %O; +} + +SEGMENTS { +CODE: load = RAM, type = ro; +RODATA: load = RAM, type = ro; +DATA: load = RAM, type = rw; +BSS: load = RAM, type = bss, define = yes; +ZEROPAGE: load = ZP, type = zp; +} diff --git a/linker_scripts/apple2_382.inc b/linker_scripts/apple2_382.inc new file mode 100644 index 00000000..77129e7a --- /dev/null +++ b/linker_scripts/apple2_382.inc @@ -0,0 +1,12 @@ +MEMORY { + ZP: start = $00, size = $1A, type = rw; + RAM: start = $382, size = $8E00, file = %O; +} + +SEGMENTS { +CODE: load = RAM, type = ro; +RODATA: load = RAM, type = ro; +DATA: load = RAM, type = rw; +BSS: load = RAM, type = bss, define = yes; +ZEROPAGE: load = ZP, type = zp; +}