dos33fsprogs/games/peasant/new_map_location.s
2021-10-26 00:01:39 -04:00

264 lines
8.1 KiB
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
exits_north:
.byte LOCATION_OUTSIDE_NN ; LOCATION_POOR_GARY = 0
.byte LOCATION_WAVY_TREE ; LOCATION_KERREK_1 = 1
.byte LOCATION_KERREK_2 ; LOCATION_OLD_WELL = 2
.byte LOCATION_OUTSIDE_LADY ; LOCATION_YELLOW_TREE = 3
.byte LOCATION_BURN_TREES ; LOCATION_WATERFALL = 4
.byte LOCATION_POOR_GARY ; LOCATION_HAY_BALE = 5
.byte LOCATION_KERREK_1 ; LOCATION_MUD_PUDDLE = 6
.byte LOCATION_OLD_WELL ; LOCATION_ARCHERY = 7
.byte LOCATION_YELLOW_TREE ; LOCATION_RIVER_STONE = 8
.byte LOCATION_WATERFALL ; LOCATION_MOUNTAIN_PASS= 9
.byte LOCATION_HAY_BALE ; LOCATION_JHONKA_CAVE = 10
.byte LOCATION_MUD_PUDDLE ; LOCATION_YOUR_COTTAGE = 11
.byte LOCATION_ARCHERY ; LOCATION_LAKE_WEST = 12
.byte LOCATION_RIVER_STONE ; LOCATION_LAKE_EAST = 13
.byte LOCATION_MOUNTAIN_PASS ; LOCATION_OUTSIDE_INN = 14
.byte LOCATION_JHONKA_CAVE ; LOCATION_OUTSIDE_NN = 15
.byte LOCATION_YOUR_COTTAGE ; LOCATION_WAVY_TREE = 16
.byte LOCATION_LAKE_WEST ; LOCATION_KERREK_2 = 17
.byte LOCATION_LAKE_EAST ; LOCATION_OUTSIDE_LADY = 18
.byte LOCATION_OUTSIDE_INN ; LOCATION_BURN_TREES = 19
.byte LOCATION_EMPTY ; LOCATION_HIDDEN_GLEN = 20
.byte LOCATION_CLIFF_HEIGHTS ; LOCATION_CLIFF_BASE = 21
.byte LOCATION_EMPTY ; LOCATION_CLIFF_HEIGHTS= 22
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_OUTER= 23
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 24
.byte LOCATION_EMPTY ; LOCATION_INSIDE_LADY = 25
.byte LOCATION_EMPTY ; LOCATION_INSIDE_INN = 26
.byte LOCATION_EMPTY ; LOCATION_INSIDE_NN = 27
.byte LOCATION_EMPTY ; LOCATION_EMPTY = 28
exits_south:
.byte LOCATION_HAY_BALE ; LOCATION_POOR_GARY = 0
.byte LOCATION_MUD_PUDDLE ; LOCATION_KERREK_1 = 1
.byte LOCATION_ARCHERY ; LOCATION_OLD_WELL = 2
.byte LOCATION_RIVER_STONE ; LOCATION_YELLOW_TREE = 3
.byte LOCATION_MOUNTAIN_PASS ; LOCATION_WATERFALL = 4
.byte LOCATION_JHONKA_CAVE ; LOCATION_HAY_BALE = 5
.byte LOCATION_YOUR_COTTAGE ; LOCATION_MUD_PUDDLE = 6
.byte LOCATION_LAKE_WEST ; LOCATION_ARCHERY = 7
.byte LOCATION_LAKE_EAST ; LOCATION_RIVER_STONE = 8
.byte LOCATION_OUTSIDE_INN ; LOCATION_MOUNTAIN_PASS= 9
.byte LOCATION_OUTSIDE_NN ; LOCATION_JHONKA_CAVE = 10
.byte LOCATION_WAVY_TREE ; LOCATION_YOUR_COTTAGE = 11
.byte LOCATION_KERREK_2 ; LOCATION_LAKE_WEST = 12
.byte LOCATION_OUTSIDE_LADY ; LOCATION_LAKE_EAST = 13
.byte LOCATION_BURN_TREES ; LOCATION_OUTSIDE_INN = 14
.byte LOCATION_POOR_GARY ; LOCATION_OUTSIDE_NN = 15
.byte LOCATION_KERREK_1 ; LOCATION_WAVY_TREE = 16
.byte LOCATION_OLD_WELL ; LOCATION_KERREK_2 = 17
.byte LOCATION_YELLOW_TREE ; LOCATION_OUTSIDE_LADY = 18
.byte LOCATION_WATERFALL ; LOCATION_BURN_TREES = 19
.byte LOCATION_EMPTY ; LOCATION_HIDDEN_GLEN = 20
.byte LOCATION_EMPTY ; LOCATION_CLIFF_BASE = 21
.byte LOCATION_EMPTY ; LOCATION_CLIFF_HEIGHTS= 22
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_OUTER= 23
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 24
.byte LOCATION_OUTSIDE_LADY ; LOCATION_INSIDE_LADY = 25
.byte LOCATION_OUTSIDE_INN ; LOCATION_INSIDE_INN = 26
.byte LOCATION_OUTSIDE_NN ; LOCATION_INSIDE_NN = 27
.byte LOCATION_EMPTY ; LOCATION_EMPTY = 28
exits_east:
.byte LOCATION_KERREK_1 ; LOCATION_POOR_GARY = 0
.byte LOCATION_OLD_WELL ; LOCATION_KERREK_1 = 1
.byte LOCATION_YELLOW_TREE ; LOCATION_OLD_WELL = 2
.byte LOCATION_WATERFALL ; LOCATION_YELLOW_TREE = 3
.byte LOCATION_EMPTY ; LOCATION_WATERFALL = 4
.byte LOCATION_MUD_PUDDLE ; LOCATION_HAY_BALE = 5
.byte LOCATION_ARCHERY ; LOCATION_MUD_PUDDLE = 6
.byte LOCATION_RIVER_STONE ; LOCATION_ARCHERY = 7
.byte LOCATION_MOUNTAIN_PASS ; LOCATION_RIVER_STONE = 8
.byte LOCATION_CLIFF_BASE ; LOCATION_MOUNTAIN_PASS= 9
.byte LOCATION_YOUR_COTTAGE ; LOCATION_JHONKA_CAVE = 10
.byte LOCATION_LAKE_WEST ; LOCATION_YOUR_COTTAGE = 11
.byte LOCATION_LAKE_EAST ; LOCATION_LAKE_WEST = 12
.byte LOCATION_OUTSIDE_INN ; LOCATION_LAKE_EAST = 13
.byte LOCATION_EMPTY ; LOCATION_OUTSIDE_INN = 14
.byte LOCATION_WAVY_TREE ; LOCATION_OUTSIDE_NN = 15
.byte LOCATION_KERREK_2 ; LOCATION_WAVY_TREE = 16
.byte LOCATION_OUTSIDE_LADY ; LOCATION_KERREK_2 = 17
.byte LOCATION_BURN_TREES ; LOCATION_OUTSIDE_LADY = 18
.byte LOCATION_EMPTY ; LOCATION_BURN_TREES = 19
.byte LOCATION_POOR_GARY ; LOCATION_HIDDEN_GLEN = 20
.byte LOCATION_EMPTY ; LOCATION_CLIFF_BASE = 21
.byte LOCATION_TROGDOR_OUTER ; LOCATION_CLIFF_HEIGHTS= 22
.byte LOCATION_TROGDOR_LAIR ; LOCATION_TROGDOR_OUTER= 23
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 24
.byte LOCATION_EMPTY ; LOCATION_INSIDE_LADY = 25
.byte LOCATION_EMPTY ; LOCATION_INSIDE_INN = 26
.byte LOCATION_EMPTY ; LOCATION_INSIDE_NN = 27
.byte LOCATION_EMPTY ; LOCATION_EMPTY = 28
exits_west:
.byte LOCATION_HIDDEN_GLEN ; LOCATION_POOR_GARY = 0
.byte LOCATION_POOR_GARY ; LOCATION_KERREK_1 = 1
.byte LOCATION_KERREK_1 ; LOCATION_OLD_WELL = 2
.byte LOCATION_OLD_WELL ; LOCATION_YELLOW_TREE = 3
.byte LOCATION_YELLOW_TREE ; LOCATION_WATERFALL = 4
.byte LOCATION_EMPTY ; LOCATION_HAY_BALE = 5
.byte LOCATION_HAY_BALE ; LOCATION_MUD_PUDDLE = 6
.byte LOCATION_MUD_PUDDLE ; LOCATION_ARCHERY = 7
.byte LOCATION_ARCHERY ; LOCATION_RIVER_STONE = 8
.byte LOCATION_RIVER_STONE ; LOCATION_MOUNTAIN_PASS= 9
.byte LOCATION_EMPTY ; LOCATION_JHONKA_CAVE = 10
.byte LOCATION_JHONKA_CAVE ; LOCATION_YOUR_COTTAGE = 11
.byte LOCATION_YOUR_COTTAGE ; LOCATION_LAKE_WEST = 12
.byte LOCATION_LAKE_WEST ; LOCATION_LAKE_EAST = 13
.byte LOCATION_LAKE_EAST ; LOCATION_OUTSIDE_INN = 14
.byte LOCATION_EMPTY ; LOCATION_OUTSIDE_NN = 15
.byte LOCATION_OUTSIDE_NN ; LOCATION_WAVY_TREE = 16
.byte LOCATION_WAVY_TREE ; LOCATION_KERREK_2 = 17
.byte LOCATION_KERREK_2 ; LOCATION_OUTSIDE_LADY = 18
.byte LOCATION_OUTSIDE_LADY ; LOCATION_BURN_TREES = 19
.byte LOCATION_EMPTY ; LOCATION_HIDDEN_GLEN = 20
.byte LOCATION_EMPTY ; LOCATION_CLIFF_BASE = 21
.byte LOCATION_EMPTY ; LOCATION_CLIFF_HEIGHTS= 22
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_OUTER= 23
.byte LOCATION_EMPTY ; LOCATION_TROGDOR_LAIR = 24
.byte LOCATION_EMPTY ; LOCATION_INSIDE_LADY = 25
.byte LOCATION_EMPTY ; LOCATION_INSIDE_INN = 26
.byte LOCATION_EMPTY ; LOCATION_INSIDE_NN = 27
.byte LOCATION_EMPTY ; LOCATION_EMPTY = 28
location_to_file:
.byte LOAD_PEASANT1 ; LOCATION_POOR_GARY = 0
.byte LOAD_PEASANT1 ; LOCATION_KERREK_1 = 1
.byte LOAD_PEASANT1 ; LOCATION_OLD_WELL = 2
.byte LOAD_PEASANT1 ; LOCATION_YELLOW_TREE = 3
.byte LOAD_PEASANT1 ; LOCATION_WATERFALL = 4
.byte LOAD_PEASANT2 ; LOCATION_HAY_BALE = 5
.byte LOAD_PEASANT2 ; LOCATION_MUD_PUDDLE = 6
.byte LOAD_PEASANT2 ; LOCATION_ARCHERY = 7
.byte LOAD_PEASANT2 ; LOCATION_RIVER_STONE = 8
.byte LOAD_PEASANT2 ; LOCATION_MOUNTAIN_PASS= 9
.byte LOAD_PEASANT3 ; LOCATION_JHONKA_CAVE = 10
.byte LOAD_PEASANT3 ; LOCATION_YOUR_COTTAGE = 11
.byte LOAD_PEASANT3 ; LOCATION_LAKE_WEST = 12
.byte LOAD_PEASANT3 ; LOCATION_LAKE_EAST = 13
.byte LOAD_PEASANT3 ; LOCATION_OUTSIDE_INN = 14
.byte LOAD_PEASANT4 ; LOCATION_OUTSIDE_NN = 15
.byte LOAD_PEASANT4 ; LOCATION_WAVY_TREE = 16
.byte LOAD_PEASANT4 ; LOCATION_KERREK_2 = 17
.byte LOAD_PEASANT4 ; LOCATION_OUTSIDE_LADY = 18
.byte LOAD_PEASANT4 ; LOCATION_BURN_TREES = 19
.byte LOAD_INSIDE ; LOCATION_HIDDEN_GLEN = 20
.byte LOAD_CLIFF ; LOCATION_CLIFF_BASE = 21
.byte LOAD_CLIFF ; LOCATION_CLIFF_HEIGHTS= 22
.byte LOAD_CLIFF ; LOCATION_TROGDOR_OUTER= 23
.byte LOAD_TROGDOR ; LOCATION_TROGDOR_LAIR = 24
.byte LOAD_INSIDE ; LOCATION_INSIDE_LADY = 25
.byte LOAD_INN ; LOCATION_INSIDE_INN = 26
.byte LOAD_INSIDE ; LOCATION_INSIDE_NN = 27
.byte LOCATION_EMPTY ; LOCATION_EMPTY = 28