gr: tunnel: managed to get it to fit
had to RLE compress the division lookup table
This commit is contained in:
parent
fa8995df4e
commit
a04cc7824f
|
@ -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 WEIRD.BAS
|
||||
GATOR.BAS CURSOR.BAS STARGATE.BAS TUNNEL.BAS
|
||||
|
||||
# cp $(EMPTY_DISK)/empty.dsk appleiibot.dsk
|
||||
cp empty.dsk appleiibot.dsk
|
||||
|
@ -83,7 +83,8 @@ 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
|
||||
$(DOS33) -y appleiibot.dsk SAVE A STARGATE.BAS
|
||||
$(DOS33) -y appleiibot.dsk SAVE A TUNNEL.BAS
|
||||
|
||||
####
|
||||
|
||||
|
@ -259,8 +260,13 @@ CURSOR.BAS: cursor.bas
|
|||
|
||||
####
|
||||
|
||||
WEIRD.BAS: weird.bas
|
||||
$(TOKENIZE) < weird.bas > WEIRD.BAS
|
||||
STARGATE.BAS: stargate.bas
|
||||
$(TOKENIZE) < stargate.bas > STARGATE.BAS
|
||||
|
||||
####
|
||||
|
||||
TUNNEL.BAS: tunnel.bas
|
||||
$(TOKENIZE) < tunnel.bas > TUNNEL.BAS
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -0,0 +1,2 @@
|
|||
1FORI=0TO140:POKE875+I,4*PEEK(2125+I)-192+(PEEK(2266+I/3)-35)/4^(I-INT(I/3)*3):NEXT
|
||||
2&",=nQYh$i4571RHB<AU\jRZlkI0d\foT0QmZ0HlZPl2,11fXR?o>F4fP0\6hnC3QoZRQ;Q-NnbmYaFo8InNlR76nRmYk76lRZVn8:nYbVn8:n^e4Z[aj3[7XXQSRKML@FFDCA0:;8904G0SIVWC=#K/[<)HH=E04#=@##\AX#O'?3+0#W#SK5788M&a0_
|
|
@ -17,7 +17,7 @@ tunnel.dsk: $(DOS33) HELLO TUNNEL.BAS TUNNEL TUNNEL2 STARGATE T.BAS T
|
|||
$(DOS33) -y tunnel.dsk SAVE A HELLO
|
||||
$(DOS33) -y tunnel.dsk SAVE A TUNNEL.BAS
|
||||
$(DOS33) -y tunnel.dsk SAVE A T.BAS
|
||||
$(DOS33) -y tunnel.dsk BSAVE -a 0xc00 T
|
||||
$(DOS33) -y tunnel.dsk BSAVE -a 0x36B T
|
||||
$(DOS33) -y tunnel.dsk BSAVE -a 0xc00 TUNNEL
|
||||
$(DOS33) -y tunnel.dsk BSAVE -a 0xc00 TUNNEL2
|
||||
$(DOS33) -y tunnel.dsk BSAVE -a 0x37c STARGATE
|
||||
|
@ -50,7 +50,7 @@ tunnel.o: tunnel.s
|
|||
###
|
||||
|
||||
T: t.o
|
||||
ld65 -o T t.o -C $(LINKERSCRIPTS)/apple2_c00.inc
|
||||
ld65 -o T t.o -C $(LINKERSCRIPTS)/apple2_36b.inc
|
||||
|
||||
t.o: t.s
|
||||
ca65 -o t.o t.s -l t.lst
|
||||
|
|
|
@ -5,6 +5,9 @@
|
|||
; 167 bytes -- unnecessary clc
|
||||
; 163 bytes -- no need to init color at beginning
|
||||
; 154 bytes -- optimize some calculations
|
||||
; 144 bytes -- compress lookup table
|
||||
; 142 bytes -- convert jmp to bne/bmi
|
||||
; 141 bytes -- start X at $D0
|
||||
|
||||
H2 = $2C
|
||||
V2 = $2D
|
||||
|
@ -29,11 +32,41 @@ SETCOL = $F864 ; COLOR=A
|
|||
SETGR = $FB40
|
||||
WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
|
||||
|
||||
lookup = $80
|
||||
|
||||
tunnel:
|
||||
; 1 GR:N=23
|
||||
|
||||
jsr SETGR
|
||||
|
||||
; A is now $D0
|
||||
|
||||
uncompress_table:
|
||||
|
||||
tax
|
||||
|
||||
; ldx #0
|
||||
uncompress_loop:
|
||||
lda lookup_compressed
|
||||
beq uncompress_done
|
||||
pha
|
||||
and #$7
|
||||
tay
|
||||
pla
|
||||
lsr
|
||||
lsr
|
||||
lsr
|
||||
store_loop:
|
||||
sta <(lookup-$D0),X ; horrible hack to save a byte
|
||||
inx
|
||||
dey
|
||||
bne store_loop
|
||||
inc uncompress_loop+1 ; assume doesn't cross page boundary
|
||||
bne uncompress_loop ; assume it was never 0
|
||||
|
||||
|
||||
uncompress_done:
|
||||
|
||||
.if 0
|
||||
make_table:
|
||||
lda #$2
|
||||
|
@ -77,6 +110,10 @@ qqloop:
|
|||
|
||||
forq:
|
||||
|
||||
; wrapping 255 to 0 is OK
|
||||
inc NEWCOLOR ; moved from end to improve looping
|
||||
|
||||
|
||||
lda #6
|
||||
sta Q
|
||||
|
||||
|
@ -91,11 +128,11 @@ fori:
|
|||
tax ; X is 0
|
||||
|
||||
iloop:
|
||||
lda Q
|
||||
lda P
|
||||
asl
|
||||
asl
|
||||
asl
|
||||
ora P
|
||||
ora Q
|
||||
tay
|
||||
|
||||
txa
|
||||
|
@ -168,28 +205,30 @@ blah:
|
|||
dec Q
|
||||
bpl qloop
|
||||
|
||||
inc NEWCOLOR
|
||||
|
||||
; wrapping 255 to 0 is OK
|
||||
|
||||
end:
|
||||
; 8 GOTO 2
|
||||
|
||||
jmp forq
|
||||
bmi forq
|
||||
|
||||
|
||||
|
||||
|
||||
lookup_compressed:
|
||||
.byte 20<<3+1,19<<3+1,18<<3+1,17<<3+1,16<<3+1,15<<3+1,14<<3+1
|
||||
.byte 13<<3+2,12<<3+2,11<<3+2,10<<3+3, 9<<3+4, 8<<3+4, 7<<3+6
|
||||
.byte 6<<3+7, 5<<3+7, 5<<3+5, 4<<3+7, 0
|
||||
|
||||
|
||||
; 0 DIM A(9,9):FOR I=0 TO 8:FOR J=0 TO 8:A(I,J)=40/(2+I+J/7):NEXTJ,I
|
||||
lookup:
|
||||
;lookup:
|
||||
|
||||
|
||||
|
||||
.byte 20,13,10,8,7,6,5,4 ; 2.0 3.0 4,0 5,0 6.0 7.0 8.0 9.0
|
||||
.byte 19,13,10,8,7,6,5,4 ; 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1
|
||||
.byte 18,12,9,8,6,5,5,4
|
||||
.byte 17,12,9,7,6,5,5,4
|
||||
.byte 16,11,9,7,6,5,5,4
|
||||
.byte 15,11,9,7,6,5,5,4
|
||||
.byte 14,10,8,7,6,5,5,4
|
||||
;.byte 20,13,10,8,7,6,5,4 ; 2.0 3.0 4,0 5,0 6.0 7.0 8.0 9.0
|
||||
;.byte 19,13,10,8,7,6,5,4 ; 2.1 3.1 4.1 5.1 6.1 7.1 8.1 9.1
|
||||
;.byte 18,12,9,8,6,5,5,4
|
||||
;.byte 17,12,9,7,6,5,5,4
|
||||
;.byte 16,11,9,7,6,5,5,4
|
||||
;.byte 15,11,9,7,6,5,5,4
|
||||
;.byte 14,10,8,7,6,5,5,4
|
||||
|
||||
|
||||
|
||||
|
@ -214,4 +253,8 @@ lookup:
|
|||
|
||||
; need for bot
|
||||
|
||||
; want this to live at $3F5
|
||||
; originally at 38A, so load at $36B
|
||||
|
||||
jmp tunnel
|
||||
|
||||
|
|
|
@ -0,0 +1,12 @@
|
|||
MEMORY {
|
||||
ZP: start = $00, size = $1A, type = rw;
|
||||
RAM: start = $36b, 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;
|
||||
}
|
Loading…
Reference in New Issue