dos33fsprogs/games/peasant/new_map_location.s
2021-10-19 23:56:02 -04:00

86 lines
912 B
ArmAsm

;=====================
; new map location
;=====================
new_map_location:
lda #NEW_LOCATION
sta GAME_OVER
; fall through
update_map_location:
;==================
; setup verb table
jsr setup_verb_table
;==================
; update map
; on main map, it's (MAP_Y*5)+MAP_X
; put in map
map_wrap_x:
; wrap X (0..4)
lda MAP_X
bmi map_x_went_negative
cmp #5
bcc map_wrap_y ; blt
lda #NEW_FROM_DISK
sta GAME_OVER
lda #LOAD_CLIFF
sta WHICH_LOAD
rts
map_x_went_negative:
lda #0 ; don't wrap anymore
update_map_x:
sta MAP_X
map_wrap_y:
; wrap Y (0..3)
lda MAP_Y
and #$3
sta MAP_Y
clc
lda MAP_Y
asl
asl
adc MAP_Y
adc MAP_X
sta MAP_LOCATION
; see if we need to change disk
lda MAP_Y
cmp #WHICH_PEASANTRY
beq were_good
must_load_from_disk:
lda #NEW_FROM_DISK
sta GAME_OVER
lda MAP_Y
clc
adc #LOAD_PEASANT1
sta WHICH_LOAD
were_good:
rts