mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-27 02:31:00 +00:00
sa: ending: falling core
This commit is contained in:
parent
635821ea4f
commit
4eed8a1ff2
@ -1,6 +1,6 @@
|
|||||||
MEMORY {
|
MEMORY {
|
||||||
ZP: start = $00, size = $1A, type = rw;
|
ZP: start = $00, size = $1A, type = rw;
|
||||||
RAM: start = $1C00, size = $7E00, file = %O;
|
RAM: start = $1800, size = $7E00, file = %O;
|
||||||
}
|
}
|
||||||
|
|
||||||
SEGMENTS {
|
SEGMENTS {
|
@ -7,7 +7,7 @@ all: still_alive.dsk
|
|||||||
|
|
||||||
still_alive.dsk: STILL_ALIVE TITLE.BAS ENDING
|
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 0x0C00 STILL_ALIVE
|
||||||
$(DOS33) -y still_alive.dsk BSAVE -a 0x1C00 ENDING
|
$(DOS33) -y still_alive.dsk BSAVE -a 0x1800 ENDING
|
||||||
$(DOS33) -y still_alive.dsk SAVE A TITLE.BAS
|
$(DOS33) -y still_alive.dsk SAVE A TITLE.BAS
|
||||||
# $(DOS33) -y still_alive.dsk SAVE B GLADOS.HGR
|
# $(DOS33) -y still_alive.dsk SAVE B GLADOS.HGR
|
||||||
|
|
||||||
@ -25,7 +25,7 @@ still_alive.o: still_alive.s \
|
|||||||
ca65 -o still_alive.o still_alive.s -l still_alive.lst
|
ca65 -o still_alive.o still_alive.s -l still_alive.lst
|
||||||
|
|
||||||
ENDING: ending.o
|
ENDING: ending.o
|
||||||
ld65 -o ENDING ending.o -C ../linker_scripts/apple2_1c00.inc
|
ld65 -o ENDING ending.o -C ../linker_scripts/apple2_1800.inc
|
||||||
|
|
||||||
ending.o: ending.s \
|
ending.o: ending.s \
|
||||||
GLADOS.HGR
|
GLADOS.HGR
|
||||||
|
@ -21,6 +21,9 @@ PR EQU $11
|
|||||||
SXH EQU $12
|
SXH EQU $12
|
||||||
SXL EQU $13
|
SXL EQU $13
|
||||||
SY EQU $14
|
SY EQU $14
|
||||||
|
UXL EQU $15
|
||||||
|
UXH EQU $16
|
||||||
|
UY EQU $17
|
||||||
|
|
||||||
HGR_SHAPE EQU $1A
|
HGR_SHAPE EQU $1A
|
||||||
HGR_SHAPEH EQU $1B
|
HGR_SHAPEH EQU $1B
|
||||||
@ -64,6 +67,7 @@ ending:
|
|||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
sta JO ; jam out
|
sta JO ; jam out
|
||||||
|
sta KO ; core out
|
||||||
|
|
||||||
lda #1
|
lda #1
|
||||||
sta PR ; portals horizontal
|
sta PR ; portals horizontal
|
||||||
@ -157,14 +161,24 @@ ending:
|
|||||||
|
|
||||||
|
|
||||||
game_loop:
|
game_loop:
|
||||||
|
lda KXL
|
||||||
|
sta UXL
|
||||||
|
lda KY
|
||||||
|
sta UY
|
||||||
|
lda KXH
|
||||||
|
sta UXH
|
||||||
|
|
||||||
;===================
|
;===================
|
||||||
; Physics Engine
|
; Physics Engine
|
||||||
;===================
|
;===================
|
||||||
|
|
||||||
; Draw/Move Fireball
|
; Draw/Move Fireball
|
||||||
|
|
||||||
lda JO
|
ldx JO
|
||||||
bne jo_out
|
beq jo_not_out
|
||||||
|
dex
|
||||||
|
beq jo_out
|
||||||
|
jmp done_jo
|
||||||
|
|
||||||
jo_not_out:
|
jo_not_out:
|
||||||
lda #1 ; If JO=0 THEN JO=1
|
lda #1 ; If JO=0 THEN JO=1
|
||||||
@ -193,16 +207,31 @@ jo_out:
|
|||||||
jo_draw:
|
jo_draw:
|
||||||
jsr draw_j ; draw new jo
|
jsr draw_j ; draw new jo
|
||||||
|
|
||||||
|
done_jo:
|
||||||
|
|
||||||
; Move Blue Core
|
; Move Blue Core
|
||||||
|
|
||||||
|
lda KO
|
||||||
|
beq done_move
|
||||||
; IF KO=1 THEN KY=KY-KV:KV=KV-4.5
|
; IF KO=1 THEN KY=KY-KV:KV=KV-4.5
|
||||||
|
|
||||||
|
sec
|
||||||
|
lda KY
|
||||||
|
sbc KV
|
||||||
|
sta KY
|
||||||
|
|
||||||
|
sec
|
||||||
|
lda KV
|
||||||
|
sbc #4
|
||||||
|
sta KV
|
||||||
|
|
||||||
|
done_move:
|
||||||
;====================================
|
;====================================
|
||||||
; Portal Collision Detection
|
; Portal Collision Detection
|
||||||
;====================================
|
;====================================
|
||||||
|
|
||||||
|
; Portal/Core
|
||||||
|
|
||||||
; 203 IF KO=0 GOTO 206
|
; 203 IF KO=0 GOTO 206
|
||||||
; 204 IF KX>BX-12 AND KX<BX+12 AND KY<BY+6 AND KY>BY-6 THEN SCALE=1:KX=GX:KY=GY+6
|
; 204 IF KX>BX-12 AND KX<BX+12 AND KY<BY+6 AND KY>BY-6 THEN SCALE=1:KX=GX:KY=GY+6
|
||||||
; 205 IF KX>GX-12 AND KX<GX+12 AND KY<GY+6 AND KY>GY-6 THEN SCALE=1:KX=BX:KY=BY+6
|
; 205 IF KX>GX-12 AND KX<GX+12 AND KY<GY+6 AND KY>GY-6 THEN SCALE=1:KX=BX:KY=BY+6
|
||||||
@ -315,7 +344,7 @@ jo_not_up:
|
|||||||
cmp #85
|
cmp #85
|
||||||
bcs jo_no_hit
|
bcs jo_no_hit
|
||||||
|
|
||||||
jmp hit_glados
|
jsr hit_glados
|
||||||
|
|
||||||
jo_no_hit:
|
jo_no_hit:
|
||||||
|
|
||||||
@ -323,15 +352,37 @@ jo_no_hit:
|
|||||||
|
|
||||||
|
|
||||||
collide_object:
|
collide_object:
|
||||||
|
; Object and floor
|
||||||
|
lda KO
|
||||||
|
beq done_collide
|
||||||
|
|
||||||
;' Object
|
lda KY
|
||||||
;229 IF KO=1 AND KY>115 THEN KY=115:KV=0
|
cmp #115
|
||||||
;' Object in Incinerator
|
bcc check_incinerator
|
||||||
;230 IF KO=1 AND KX>240 AND KY>100 THEN GOSUB 4000
|
; IF KY>115 THEN KY=115:KV=0
|
||||||
;231 GOTO 240
|
lda #115
|
||||||
|
sta KY
|
||||||
|
lda #0
|
||||||
|
sta KV
|
||||||
|
|
||||||
|
check_incinerator:
|
||||||
|
; Object in Incinerator
|
||||||
|
|
||||||
|
lda KY
|
||||||
|
cmp #100
|
||||||
|
bcc done_collide
|
||||||
|
|
||||||
|
lda KXH
|
||||||
|
bne incinerated
|
||||||
|
lda KXL
|
||||||
|
cmp #240
|
||||||
|
bcc done_collide
|
||||||
|
incinerated:
|
||||||
|
jmp explosion ; IF KX>240 AND KY>100 THEN GOSUB 4000
|
||||||
|
|
||||||
|
|
||||||
|
done_collide:
|
||||||
|
|
||||||
lda #128
|
|
||||||
jsr WAIT
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -339,8 +390,27 @@ collide_object:
|
|||||||
; Draw Objects
|
; Draw Objects
|
||||||
;===============================
|
;===============================
|
||||||
|
|
||||||
|
; Core
|
||||||
|
|
||||||
|
lda UXH
|
||||||
|
cmp KXH
|
||||||
|
bne blah
|
||||||
|
|
||||||
|
lda UXL
|
||||||
|
cmp KXL
|
||||||
|
bne blah
|
||||||
|
|
||||||
|
lda UY
|
||||||
|
cmp KY
|
||||||
|
beq done_draw_objects ; IF UX=KX AND UY=KY GOTO 300
|
||||||
|
|
||||||
|
blah:
|
||||||
|
jsr erase_core ; SCALE=1:XDRAW 7 AT UX,UY:XDRAW 7 AT KX,KY
|
||||||
|
|
||||||
|
done_draw_objects:
|
||||||
|
|
||||||
|
lda #128
|
||||||
|
jsr WAIT
|
||||||
|
|
||||||
jmp game_loop
|
jmp game_loop
|
||||||
|
|
||||||
@ -378,6 +448,30 @@ draw_j:
|
|||||||
;======================
|
;======================
|
||||||
; Draw Blue Core
|
; Draw Blue Core
|
||||||
;======================
|
;======================
|
||||||
|
erase_core:
|
||||||
|
lda #<blue_core
|
||||||
|
sta HGR_SHAPE
|
||||||
|
lda #>blue_core
|
||||||
|
sta HGR_SHAPE+1
|
||||||
|
|
||||||
|
; HFNS puts X-coord in Y,X, Y-coord in A
|
||||||
|
; HPOSN sets up GBASL/GBASH
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
sta HGR_SCALE
|
||||||
|
|
||||||
|
; 2005 SCALE=1:KX=150:KY=65:XDRAW 7 AT KX,KY:KO=0
|
||||||
|
|
||||||
|
ldy UXH
|
||||||
|
ldx UXL
|
||||||
|
lda UY
|
||||||
|
|
||||||
|
jsr HPOSN
|
||||||
|
|
||||||
|
lda #0 ; rotation
|
||||||
|
|
||||||
|
jsr XDRAW1
|
||||||
|
|
||||||
draw_core:
|
draw_core:
|
||||||
lda #<blue_core
|
lda #<blue_core
|
||||||
sta HGR_SHAPE
|
sta HGR_SHAPE
|
||||||
@ -387,6 +481,9 @@ draw_core:
|
|||||||
; HFNS puts X-coord in Y,X, Y-coord in A
|
; HFNS puts X-coord in Y,X, Y-coord in A
|
||||||
; HPOSN sets up GBASL/GBASH
|
; HPOSN sets up GBASL/GBASH
|
||||||
|
|
||||||
|
lda #1
|
||||||
|
sta HGR_SCALE
|
||||||
|
|
||||||
; 2005 SCALE=1:KX=150:KY=65:XDRAW 7 AT KX,KY:KO=0
|
; 2005 SCALE=1:KX=150:KY=65:XDRAW 7 AT KX,KY:KO=0
|
||||||
|
|
||||||
ldy KXH
|
ldy KXH
|
||||||
@ -399,6 +496,7 @@ draw_core:
|
|||||||
|
|
||||||
jsr XDRAW1
|
jsr XDRAW1
|
||||||
|
|
||||||
|
|
||||||
rts
|
rts
|
||||||
|
|
||||||
;==============================
|
;==============================
|
||||||
|
Loading…
Reference in New Issue
Block a user