From bc106806ab0cce0551c6e03fc2d4f6dbfe821a72 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Fri, 7 Jan 2022 23:24:33 -0500 Subject: [PATCH] peasant: be sure not to mess with state if loading from savegame --- games/peasant/cliff.s | 5 ++++- games/peasant/inn.s | 2 ++ games/peasant/inside.s | 5 +++++ games/peasant/loadsave_menu.s | 2 +- games/peasant/peasant1.s | 7 ++++--- games/peasant/peasant2.s | 2 ++ games/peasant/peasant3.s | 7 +++++-- games/peasant/peasant4.s | 6 ++++-- 8 files changed, 27 insertions(+), 9 deletions(-) diff --git a/games/peasant/cliff.s b/games/peasant/cliff.s index d2c565d7..50acd27d 100644 --- a/games/peasant/cliff.s +++ b/games/peasant/cliff.s @@ -216,6 +216,9 @@ just_go_there: ;************************ level_over: + cmp #NEW_FROM_LOAD ; see if loading save game + beq exiting_cliff + ; new location ; in theory this can only be TROGDOR @@ -227,7 +230,7 @@ level_over: lda #0 sta PEASANT_XADD sta PEASANT_YADD - +exiting_cliff: rts diff --git a/games/peasant/inn.s b/games/peasant/inn.s index 053b0eb5..6b1ecb8b 100644 --- a/games/peasant/inn.s +++ b/games/peasant/inn.s @@ -256,6 +256,8 @@ oops_new_location: ;======================== level_over: + ; NOTE: check for load from savegame if modify game state + rts diff --git a/games/peasant/inside.s b/games/peasant/inside.s index 199ab060..a5dd5a96 100644 --- a/games/peasant/inside.s +++ b/games/peasant/inside.s @@ -329,6 +329,11 @@ oops_new_location: ; exit level ;======================== level_over: + + cmp #NEW_FROM_LOAD ; skip ahead if load from disk + beq really_level_over + + lda MAP_LOCATION cmp #LOCATION_OUTSIDE_INN bne really_level_over diff --git a/games/peasant/loadsave_menu.s b/games/peasant/loadsave_menu.s index 24b7a35e..fbc6944b 100644 --- a/games/peasant/loadsave_menu.s +++ b/games/peasant/loadsave_menu.s @@ -491,7 +491,7 @@ load_loop: cpx #(END_OF_SAVE-WHICH_LOAD+1) bne load_loop - lda #NEW_FROM_DISK ; load whole level from disk + lda #NEW_FROM_LOAD ; load whole level from disk sta LEVEL_OVER done_load: diff --git a/games/peasant/peasant1.s b/games/peasant/peasant1.s index dbfb1aa8..3842f2d4 100644 --- a/games/peasant/peasant1.s +++ b/games/peasant/peasant1.s @@ -423,7 +423,7 @@ no_draw_gary_flies: lda LEVEL_OVER bmi oops_new_location - bne game_over + bne level_over ; delay @@ -459,7 +459,7 @@ at_old_well: lda #NEW_FROM_DISK ; needed? sta LEVEL_OVER - jmp game_over + jmp level_over skip_level_specific: @@ -470,7 +470,8 @@ skip_level_specific: ;************************ ; exit level ;************************ -game_over: +level_over: + ; note: check reason for load if changing gamestate rts diff --git a/games/peasant/peasant2.s b/games/peasant/peasant2.s index f3a24d72..fc8c448a 100644 --- a/games/peasant/peasant2.s +++ b/games/peasant/peasant2.s @@ -353,6 +353,8 @@ oops_new_location: ; exit level ;======================== level_over: + cmp #NEW_FROM_LOAD ; skip to end if loading save game + bne really_level_over ; specical case if going outside inn ; we don't want to end up behind inn diff --git a/games/peasant/peasant3.s b/games/peasant/peasant3.s index bbb8c820..da852176 100644 --- a/games/peasant/peasant3.s +++ b/games/peasant/peasant3.s @@ -226,7 +226,7 @@ game_loop: lda LEVEL_OVER bmi oops_new_location - bne game_over + bne level_over ;===================== ; always draw peasant @@ -279,7 +279,10 @@ oops_new_location: ;************************ ; exit level ;************************ -game_over: +level_over: + + ; FIXME: check for load from savegame if modifying game state + rts diff --git a/games/peasant/peasant4.s b/games/peasant/peasant4.s index 921a5b0f..ae51210a 100644 --- a/games/peasant/peasant4.s +++ b/games/peasant/peasant4.s @@ -333,7 +333,7 @@ not_ned_cottage: lda LEVEL_OVER bmi oops_new_location - bne game_over + bne level_over ; delay @@ -351,7 +351,9 @@ oops_new_location: ;************************ ; exit level ;************************ -game_over: +level_over: + + ; note: check for load from savegame if change state rts