From 8100ab783e3f825990e855d5c485bbc1ba4ad443 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 22 Mar 2022 18:50:06 -0400 Subject: [PATCH] lemm: percentage checking mostly working not sure if it's worth all the bytes --- games/lemm/intro_level.s | 28 ++++++++++++++++------------ games/lemm/level1.s | 2 +- games/lemm/level2.s | 1 + games/lemm/level3.s | 3 +++ games/lemm/level4.s | 3 +++ games/lemm/level5.s | 2 ++ games/lemm/move_lemming.s | 11 +++++++++++ games/lemm/zp.inc | 1 + 8 files changed, 38 insertions(+), 13 deletions(-) diff --git a/games/lemm/intro_level.s b/games/lemm/intro_level.s index 3829844d..025ce297 100644 --- a/games/lemm/intro_level.s +++ b/games/lemm/intro_level.s @@ -184,21 +184,25 @@ upr_out_tens: lda PERCENT_RESCUED_H bne print_the_message ; 100%, was a win -blip: inx ; (1) NEEDED+20% < T < 100% lda PERCENT_NEEDED - clc - adc #$20 ; FIXME: only if < 80% + cmp #$79 + bcs percent_too_high + + clc ; not needed? + adc #$20 cmp PERCENT_RESCUED_L - bcs print_the_message + bcc print_the_message + +percent_too_high: inx ; (2) NEEDED < T < NEEDED+20% - lda PERCENT_RESCUED_L - cmp PERCENT_NEEDED + lda PERCENT_NEEDED + cmp PERCENT_RESCUED_L bcc print_the_message inx ; (3) NEEDED == T - cmp PERCENT_NEEDED + cmp PERCENT_RESCUED_L beq print_the_message inx ; (4) T = NEEDED - 1 @@ -213,7 +217,7 @@ blip: sec sbc #5 cmp PERCENT_NEEDED - bcs print_the_message + bcc print_the_message inx ; (6) NEEDED/2 < T < NEEDED-5 lda PERCENT_RESCUED_L @@ -299,14 +303,14 @@ level_message1_text: ; NEEDED < T < NEEDED+20% level_message2_text: -.byte 2, 6,"THAT LEVEL SEEMED NO PROBLEM TO YOU ON",0 -.byte 3, 7,"THAT ATTEMPT. ONTO THE NEXT...",0 +.byte 2, 6,"THAT LEVEL SEEMED NO PROBLEM TO YOU",0 +.byte 3, 7,"ON THAT ATTEMPT. ONTO THE NEXT...",0 .byte $FF ; NEEDED == T level_message3_text: -.byte 2, 6,"RIGHT ON. YOU CAN'T GET MUCH CLOSER THAN",0 -.byte 3, 7,"THAT. LET'S TRY THE NEXT...",0 +.byte 2, 6,"RIGHT ON. YOU CAN'T GET MUCH CLOSER",0 +.byte 3, 7,"THAN THAT. LET'S TRY THE NEXT...",0 .byte $FF ; T = NEEDED - 1 diff --git a/games/lemm/level1.s b/games/lemm/level1.s index eb1c2683..d3033f00 100644 --- a/games/lemm/level1.s +++ b/games/lemm/level1.s @@ -48,7 +48,7 @@ do_level1: lda #$10 ; BCD sta PERCENT_NEEDED - + sta PERCENT_ADD ;============== ; set up intro diff --git a/games/lemm/level2.s b/games/lemm/level2.s index 1d3c2e57..4cb02fd5 100644 --- a/games/lemm/level2.s +++ b/games/lemm/level2.s @@ -48,6 +48,7 @@ do_level2: lda #$10 ; BCD sta PERCENT_NEEDED + sta PERCENT_ADD ;============== ; set up intro diff --git a/games/lemm/level3.s b/games/lemm/level3.s index 56aafd4a..6b20bd4f 100644 --- a/games/lemm/level3.s +++ b/games/lemm/level3.s @@ -48,6 +48,9 @@ do_level3: lda #$10 ; BCD sta PERCENT_NEEDED + lda #$2 + sta PERCENT_ADD + ;============== ; set up intro ;============== diff --git a/games/lemm/level4.s b/games/lemm/level4.s index 7915305f..dc8acbb4 100644 --- a/games/lemm/level4.s +++ b/games/lemm/level4.s @@ -62,6 +62,9 @@ do_level4: lda #$00 ; BCD sta PERCENT_NEEDED ; means 100% + lda #$10 + sta PERCENT_ADD + ;============== ; set up music diff --git a/games/lemm/level5.s b/games/lemm/level5.s index 9353e5e7..3cc71bd4 100644 --- a/games/lemm/level5.s +++ b/games/lemm/level5.s @@ -31,6 +31,8 @@ do_level5: lda #$10 ; BCD sta PERCENT_NEEDED + lda #$2 + sta PERCENT_ADD ;============== ; set up intro diff --git a/games/lemm/move_lemming.s b/games/lemm/move_lemming.s index 77208338..d93f477f 100644 --- a/games/lemm/move_lemming.s +++ b/games/lemm/move_lemming.s @@ -213,6 +213,17 @@ remove_lemming: sec sbc #1 sta LEMMINGS_OUT + + lda PERCENT_RESCUED_L + clc + adc PERCENT_ADD + sta PERCENT_RESCUED_L + bcc no_percent_oflo + + inc PERCENT_RESCUED_H + +no_percent_oflo: + cld jsr update_lemmings_out diff --git a/games/lemm/zp.inc b/games/lemm/zp.inc index ceb5d008..a5dabba6 100644 --- a/games/lemm/zp.inc +++ b/games/lemm/zp.inc @@ -78,6 +78,7 @@ APPLEII_MODEL = $8B PERCENT_RESCUED_L = $8C PERCENT_RESCUED_H = $8D PERCENT_NEEDED = $8E +PERCENT_ADD = $8F DOOR_X = $90 ; location of door DOOR_Y = $91