From a7526226711d51aba788ad2305afac51e1a23511 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Fri, 1 Jun 2018 00:46:54 -0400 Subject: [PATCH] sa: more work on ending --- linker_scripts/apple2_2000.inc | 2 +- still_alive/Makefile | 6 +- still_alive/README.still_alive | 2 +- still_alive/ending.s | 217 +++++++++++++++++++++++++++++---- still_alive/objects_shape.inc | 1 + still_alive/still_alive.dsk | Bin 143360 -> 143360 bytes 6 files changed, 196 insertions(+), 32 deletions(-) diff --git a/linker_scripts/apple2_2000.inc b/linker_scripts/apple2_2000.inc index 45689b1b..5881498a 100644 --- a/linker_scripts/apple2_2000.inc +++ b/linker_scripts/apple2_2000.inc @@ -4,7 +4,7 @@ MEMORY { } SEGMENTS { -CODE: load = RAM, type = ro; +CODE: load = RAM, type = ro, align=$1000; RODATA: load = RAM, type = ro; DATA: load = RAM, type = rw; BSS: load = RAM, type = bss, define = yes; diff --git a/still_alive/Makefile b/still_alive/Makefile index e57da80a..7b9da314 100644 --- a/still_alive/Makefile +++ b/still_alive/Makefile @@ -7,9 +7,9 @@ all: still_alive.dsk still_alive.dsk: STILL_ALIVE TITLE.BAS ENDING $(DOS33) -y still_alive.dsk BSAVE -a 0x0C00 STILL_ALIVE - $(DOS33) -y still_alive.dsk BSAVE -a 0x4000 ENDING + $(DOS33) -y still_alive.dsk BSAVE -a 0x2000 ENDING $(DOS33) -y still_alive.dsk SAVE A TITLE.BAS - +# $(DOS33) -y still_alive.dsk SAVE B GLADOS.HGR STILL_ALIVE: still_alive.o ld65 -o STILL_ALIVE still_alive.o -C ../linker_scripts/apple2_c00.inc @@ -23,7 +23,7 @@ still_alive.o: still_alive.s \ ca65 -o still_alive.o still_alive.s -l still_alive.lst ENDING: ending.o - ld65 -o ENDING ending.o -C ../linker_scripts/apple2_4000.inc + ld65 -o ENDING ending.o -C ../linker_scripts/apple2_2000.inc ending.o: ending.s \ GLADOS.HGR diff --git a/still_alive/README.still_alive b/still_alive/README.still_alive index bf65d4e1..e5f9a80d 100644 --- a/still_alive/README.still_alive +++ b/still_alive/README.still_alive @@ -45,7 +45,7 @@ Memory Map 0400: Text Page 0 (AUX 0400: 80 column text) 2000: HGR Page0 -4000: HGP Page1 +4000: HGR Page1 9600: DOS 37.5k C000: I/O Space D000: ROM diff --git a/still_alive/ending.s b/still_alive/ending.s index c8667178..12c2c803 100644 --- a/still_alive/ending.s +++ b/still_alive/ending.s @@ -19,6 +19,10 @@ HGR_SCALE EQU $E7 HGR_COLLISIONS EQU $EA HGR_ROTATION EQU $F9 +X1 EQU $FD +X2 EQU $FE +Y1 EQU $FF + HCLR EQU $F3F2 HPOSN EQU $F411 HPLOT0 EQU $F457 @@ -35,59 +39,216 @@ COLORTBL EQU $F6F6 bit TEXTGR ; mixed text/graphics bit PAGE0 ; first graphics page jsr HOME + bit PAGE1 ; first graphics page - lda #$20 + lda #$40 sta HGR_PAGE - jsr HCLR +; jsr HCLR - - -; lda #0 -; sta HGR_ROTATION -; lda #1 -; sta HGR_SCALE + lda #0 + sta HGR_ROTATION + lda #1 + sta HGR_SCALE ; jsr hgr_clear -; lda #chell_right -; sta HGR_SHAPE+1 + ;====================== + ; Draw Chell + ;====================== + + lda #chell_right + sta HGR_SHAPE+1 ; HFNS puts X-coord in Y,X, Y-coord in A ; HPOSN sets up GBASL/GBASH -; ldy #0 -; lda #100 -; tax -; jsr HPOSN + ldy #0 + lda #112 + ldx #69 + jsr HPOSN -; lda HGR_ROTATION ; rotation + lda HGR_ROTATION ; rotation -; jsr XDRAW1 + jsr XDRAW1 - ; HCOLOR=3 - ldx #3 + ;====================== + ; Draw Blue Core + ;====================== + + lda #blue_core + sta HGR_SHAPE+1 + + ; HFNS puts X-coord in Y,X, Y-coord in A + ; HPOSN sets up GBASL/GBASH + + ; 2005 SCALE=1:KX=150:KY=65:XDRAW 7 AT KX,KY:KO=0 + + ldy #0 + lda #65 + ldx #150 + jsr HPOSN + + lda HGR_ROTATION ; rotation + + jsr XDRAW1 + + ;===================================== + ; Draw Explosion + ;===================================== + + + + + ; HCOLOR=5 + ldx #5 lda COLORTBL,X ; get color pattern from table sta HGR_COLOR - ; HPLOT 100,100 to 150,150 + + + + + + +;4010 FOR X=0 TO 278 STEP 5:HPLOT X,0 TO 120,85:V=PEEK(-16336):NEXT X + lda #0 + sta X1 + sta X2 +loop1: + + bit $C030 + + ; HPLOT X,0 to 120,85 ; X= (y,x), Y=a - ldy #0 - lda #100 - ldx #100 + ldy X2 + ldx X1 + lda #0 + jsr HPLOT0 ; X=(x,a), y=Y - lda #150 + lda #120 ldx #0 - ldy #150 + ldy #85 jsr HGLIN + clc + lda X1 + adc #5 + sta X1 + lda X2 + adc #0 + sta X2 + cmp #1 + bne loop1 + lda X1 + cmp #22 + bcc loop1 + +;4015 FOR Y=0 TO 159 STEP 5:HPLOT 278,Y TO 120,85:V=PEEK(-16336):NEXT Y + + lda #0 + sta Y1 +loop2: + + bit $C030 + + ; HPLOT 278,Y to 120,85 + ; X= (y,x), Y=a + ldy #1 + ldx #22 + lda Y1 + + jsr HPLOT0 + + ; X=(x,a), y=Y + lda #120 + ldx #0 + ldy #85 + jsr HGLIN + + clc + lda Y1 + adc #5 + sta Y1 + + cmp #159 + bcc loop2 + +;4020 FOR X=278 TO 0 STEP -5:HPLOT X,159 TO 120,85:V=PEEK(-16336):NEXT X + lda #22 + sta X1 + lda #1 + sta X2 +loop3: + + bit $C030 + + ; HPLOT X,159 to 120,85 + ; X= (y,x), Y=a + ldy X2 + ldx X1 + lda #159 + + jsr HPLOT0 + + ; X=(x,a), y=Y + lda #120 + ldx #0 + ldy #85 + jsr HGLIN + + sec + lda X1 + sbc #5 + sta X1 + lda X2 + sbc #0 + sta X2 + + cmp #0 + bne loop3 + lda X1 + cmp #5 + bcs loop3 + +;4025 FOR Y=159 TO 0 STEP -5:HPLOT 0,Y TO 120,85:V=PEEK(-16336):NEXT Y + + lda #159 + sta Y1 +loop4: + + bit $C030 + + ; HPLOT 0,Y to 120,85 + ; X= (y,x), Y=a + ldy #0 + ldx #0 + lda Y1 + + jsr HPLOT0 + + ; X=(x,a), y=Y + lda #120 + ldx #0 + ldy #85 + jsr HGLIN + + sec + lda Y1 + sbc #5 + sta Y1 + + cmp #5 + bcs loop4 infinite_loop: jmp infinite_loop @@ -101,5 +262,7 @@ infinite_loop: ; Shape Table .include "objects_shape.inc" +.align 8192 + ; Graphics Background -.incbin "GLADOS.HGR" +.incbin "GLADOS.HGR",4 diff --git a/still_alive/objects_shape.inc b/still_alive/objects_shape.inc index c7382c59..e63e339d 100644 --- a/still_alive/objects_shape.inc +++ b/still_alive/objects_shape.inc @@ -158,5 +158,6 @@ chell_right: ; RT DN RT DN LT DN RT DN NLT LT DN LT LT LT ; STOP +blue_core: .byte $fa,$24,$0d,$0d,$36,$9f,$3a,$3f, $3c,$3c,$2c,$3c,$0c,$25,$2d,$2d .byte $2d,$2e,$2e,$3e,$2e,$1e,$37,$3f, $07,$00 diff --git a/still_alive/still_alive.dsk b/still_alive/still_alive.dsk index 3e477fbe17d35594dd7ced4089afa0985348e39b..8996a039ca062cdf088d6f91e1e96e0847058f8e 100644 GIT binary patch delta 2139 zcmeHIUuYaf7@u!%cW?J@W_ELz4R@Q}xeHv;hr1Z1+0+uUZBzt}rD#k11A?|M0b5%9 z6CVnRfA-0j!itLzn&a>S`y#c$914XiRMM-G7VSgS2lG%WsStcY#~+Q-xF#bRWI>L}qAYR2 z=jPyW6t7(v0jkd}ooInfVnihEt<}@N;Fxc%?&05`*S;PEqSlrk*=o~l$CBhfvZNe< z4i7*+cu7LHVJB#hzSUwUwR|2fSs7@0!NiijqQjH+e7WyYG;r>qXzr7_K>!AOtCA@r>Tf*3n_iVM_&P_Z2 E1bD_3m;e9( delta 1429 zcmdUuO=uHA6vyZ7ZYIfo#!Xh6HPo4;V#OfwgCe35iy}m;0R%~@VZN-npiXJTr^&-Wui*3!iTkFA6sfZT`-VBd<4D){f|1%~+ z#zd%)DV~K$@stG?uGDHKc}BUKLbPm7*vLQ6|b-z#px_0dR$| z;janTHLbpF+iT~Z!4=tx@GTf444Cl>rxupngS$%g3W$<*q}J*cR64WwNjg86K0KH{ zIG8>(NRG^sbheDlsq!v!wwyJ;m3i~C7hlNP?7p@BO}$J^w~VgVN1d;eZjU>bbw0L3 z;KIei#S4fS1W|*cq>)4^Bh^ewq?wjzbF!3bPL)!5;*dObXg=vA^C>4)$f3SjvuV`Z zR*&|4F=x7_duDREQqRoVAkUkh2KHtfIzF5AfqmJIPaRXH+dW-u>YE+ynl5-B=$@Xe zKXN`y&Wx;fM%w#dwLsDEP@aZ}bv_=e#oFP$Qp|hV&diER+mj)tBHyaxIYhD`i?ZY+ z@~KB;MM4rtjKoTu6p%drFSCpgw8UD@=WW3q*Lx&hJFpqvDb;HrhU~4B`7OaSKL}o4 zKrrnSEG*IS_4$tNr8}MzBlqvr@Cf4T5y(Ko-VlMq0oO%{wTB|G5)6B%cT_r4+n}n# zdWq3^JF^O?m=Ks3V=o>L_ud~G_o!qRN%P4+4?%zsKn%$q9F}5Mq@Qjvz9%-y_iLNe*jJ|0DQs+{I^#8oi4d~D{h(> zX7e8kvxqLmw?I7mwPG!(g|zTb``JzVp{pS-#pSr7BOP=`XLU{w=vWWxA>V-hzzh5B zrW?>|t7~A_q4f@ZN!biMxVx1^)*PWz48rg z*g;srkpRIYNJ1n`cp?yyNJJ(IMHDDQS<2A>#WYAmG)#FaP?1Vhrb-ee!4@f#{>j(f F{T&F*G|2z}