aboutsummaryrefslogtreecommitdiff
path: root/draw_lorcha.s
diff options
context:
space:
mode:
authorB. Watson <yalhcru@gmail.com>2021-05-31 23:30:54 -0400
committerB. Watson <yalhcru@gmail.com>2021-05-31 23:30:54 -0400
commit847087affbcf2fb5c18b47ae1ee7b5471fc32378 (patch)
treeee33432fe02c0b2d20367815accfc64b1d655011 /draw_lorcha.s
parent5a38a9e53fc1b6ebb95e9fcee4beeec471355745 (diff)
downloadtaipan-master.tar.gz
Semi-random ship damageHEADmaster
Diffstat (limited to 'draw_lorcha.s')
-rw-r--r--draw_lorcha.s22
1 files changed, 20 insertions, 2 deletions
diff --git a/draw_lorcha.s b/draw_lorcha.s
index 07c4afe..b08fa50 100644
--- a/draw_lorcha.s
+++ b/draw_lorcha.s
@@ -44,6 +44,10 @@ lorcha_data:
damaged_data:
.incbin "DAMAGED.DAT"
+; fully-damaged version of the lorcha, damaged_shipshape2[] in convfont.c
+damaged_data2:
+ .incbin "DAMAGED2.DAT"
+
.ifdef CART_TARGET
.segment "HIGHCODE"
.else
@@ -176,7 +180,7 @@ _damage_lorcha:
xrand:
; get random number 0-48 in X:
- lda 53770 ; RANDOM
+ lda RANDOM
lsr
lsr
cmp #49
@@ -184,7 +188,15 @@ xrand:
tax
getpiece:
+ bit RANDOM
+ bpl @used2
lda damaged_data,x
+ jmp @can_dmg
+
+@used2:
+ lda damaged_data2,x
+
+@can_dmg:
cmp lorcha_data,x
beq xrand ; if it's a piece that can't show damage,
; ditch it and start over
@@ -204,10 +216,16 @@ calcrow:
bcc calcrow
rowdone:
- lda temp ; the piece
ldy temp+1
+
+ lda (destptr),y
+ cmp lorcha_data,x ; if it's already damaged,
+ bne @ret ; leave it alone.
+
+ lda temp ; the piece
sta (destptr),y
+@ret:
rts ; end of _damage_lorcha
; a couple of utility functions for dealing with destptr: