From 5f023220bda0bbf67479fa79db0d841d046e7cbe Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Mon, 20 Sep 2021 00:08:16 -0400 Subject: [PATCH] peasant: more work on load/save support --- games/peasant/Makefile | 31 ++++++++++++++++++++-- games/peasant/save1.s | 29 +++++++++++++++++++++ games/peasant/save2.s | 29 +++++++++++++++++++++ games/peasant/save3.s | 29 +++++++++++++++++++++ games/peasant/zp.inc | 59 +++++++++++++++++++++--------------------- 5 files changed, 146 insertions(+), 31 deletions(-) create mode 100644 games/peasant/save1.s create mode 100644 games/peasant/save2.s create mode 100644 games/peasant/save3.s diff --git a/games/peasant/Makefile b/games/peasant/Makefile index 48b0eafe..ddf652b5 100644 --- a/games/peasant/Makefile +++ b/games/peasant/Makefile @@ -9,12 +9,15 @@ EMPTY_DISK = ../../empty_disk all: peasant.dsk peasant_side2.dsk peasant.dsk: QBOOT QLOAD VID_LOGO TITLE INTRO COPY_CHECK \ - PEASANT1 PEASANT2 PEASANT3 PEASANT4 ENDING TROGDOR + PEASANT1 PEASANT2 PEASANT3 PEASANT4 ENDING TROGDOR \ + SAVE1 SAVE2 SAVE3 cp $(EMPTY_DISK)/empty.dsk peasant.dsk -# $(DOS33) -y peasant.dsk BSAVE -a 0x6000 INTRO $(DOS33_RAW) peasant.dsk 0 0 QBOOT 0 1 $(DOS33_RAW) peasant.dsk 0 2 QBOOT 1 1 $(DOS33_RAW) peasant.dsk 0 4 QBOOT 2 1 + $(DOS33_RAW) peasant.dsk 0 11 SAVE1 0 1 + $(DOS33_RAW) peasant.dsk 0 12 SAVE2 0 1 + $(DOS33_RAW) peasant.dsk 0 13 SAVE3 0 1 $(DOS33_RAW) peasant.dsk 1 0 QLOAD 0 0 $(DOS33_RAW) peasant.dsk 3 0 VID_LOGO 0 0 $(DOS33_RAW) peasant.dsk 5 0 TITLE 0 0 @@ -220,6 +223,30 @@ font_test.o: font_test.s hgr_font.s hgr_1x8_sprite.s ca65 -o font_test.o font_test.s -l font_test.lst +### + +SAVE1: save1.o + ld65 -o SAVE1 save1.o -C ../../linker_scripts/apple2_e00.inc + +save1.o: save1.s + ca65 -o save1.o save1.s -l save1.lst + +### + +SAVE2: save2.o + ld65 -o SAVE2 save2.o -C ../../linker_scripts/apple2_e00.inc + +save2.o: save2.s + ca65 -o save2.o save2.s -l save2.lst + +### + +SAVE3: save3.o + ld65 -o SAVE3 save3.o -C ../../linker_scripts/apple2_e00.inc + +save3.o: save3.s + ca65 -o save3.o save3.s -l save3.lst + #### graphics_vid/vid_graphics.inc: diff --git a/games/peasant/save1.s b/games/peasant/save1.s new file mode 100644 index 00000000..d31ab05d --- /dev/null +++ b/games/peasant/save1.s @@ -0,0 +1,29 @@ +; SAVE1 -- ?? + +.include "zp.inc" + +; want to load this to address $90 + +; +.byte LOAD_PEASANT2 ; WHICH_LOAD = $90 +.byte 10 ; PEASANT_X = $91 +.byte 100 ; PEASANT_Y = $92 +.byte PEASANT_DIR_UP ; PEASANT_DIR = $93 +.byte 0 ; MAP_X = $94 +.byte 1 ; MAP_Y = $95 +.byte 5 ; MAP_LOCATION = $96 +.byte $ff ; GAME_STATE_0 = $97 +.byte $00 ; GAME_STATE_1 = $98 +.byte $00 ; GAME_STATE_2 = $99 +.byte $00 ; NED_STATUS = $9A +.byte $00 ; BUSH_STATUS = $9B +.byte $00 ; KERREK_STATE = $9C +.byte $00 ; ARROW_SCORE = $9D +.byte $01 ; SCORE_HUNDREDS= $9E +.byte $09 ; SCORE_TENSONES= $9F +.byte $FF ; INVENTORY_1 = $A0 +.byte $FF ; INVENTORY_2 = $A1 +.byte $FF ; INVENTORY_3 = $A2 +.byte $00 ; INVENTORY_1_GONE = $A3 +.byte $00 ; INVENTORY_2_GONE_= $A4 +.byte $00 ; INVENTORY_3_GONE = $A5 diff --git a/games/peasant/save2.s b/games/peasant/save2.s new file mode 100644 index 00000000..d31ab05d --- /dev/null +++ b/games/peasant/save2.s @@ -0,0 +1,29 @@ +; SAVE1 -- ?? + +.include "zp.inc" + +; want to load this to address $90 + +; +.byte LOAD_PEASANT2 ; WHICH_LOAD = $90 +.byte 10 ; PEASANT_X = $91 +.byte 100 ; PEASANT_Y = $92 +.byte PEASANT_DIR_UP ; PEASANT_DIR = $93 +.byte 0 ; MAP_X = $94 +.byte 1 ; MAP_Y = $95 +.byte 5 ; MAP_LOCATION = $96 +.byte $ff ; GAME_STATE_0 = $97 +.byte $00 ; GAME_STATE_1 = $98 +.byte $00 ; GAME_STATE_2 = $99 +.byte $00 ; NED_STATUS = $9A +.byte $00 ; BUSH_STATUS = $9B +.byte $00 ; KERREK_STATE = $9C +.byte $00 ; ARROW_SCORE = $9D +.byte $01 ; SCORE_HUNDREDS= $9E +.byte $09 ; SCORE_TENSONES= $9F +.byte $FF ; INVENTORY_1 = $A0 +.byte $FF ; INVENTORY_2 = $A1 +.byte $FF ; INVENTORY_3 = $A2 +.byte $00 ; INVENTORY_1_GONE = $A3 +.byte $00 ; INVENTORY_2_GONE_= $A4 +.byte $00 ; INVENTORY_3_GONE = $A5 diff --git a/games/peasant/save3.s b/games/peasant/save3.s new file mode 100644 index 00000000..d31ab05d --- /dev/null +++ b/games/peasant/save3.s @@ -0,0 +1,29 @@ +; SAVE1 -- ?? + +.include "zp.inc" + +; want to load this to address $90 + +; +.byte LOAD_PEASANT2 ; WHICH_LOAD = $90 +.byte 10 ; PEASANT_X = $91 +.byte 100 ; PEASANT_Y = $92 +.byte PEASANT_DIR_UP ; PEASANT_DIR = $93 +.byte 0 ; MAP_X = $94 +.byte 1 ; MAP_Y = $95 +.byte 5 ; MAP_LOCATION = $96 +.byte $ff ; GAME_STATE_0 = $97 +.byte $00 ; GAME_STATE_1 = $98 +.byte $00 ; GAME_STATE_2 = $99 +.byte $00 ; NED_STATUS = $9A +.byte $00 ; BUSH_STATUS = $9B +.byte $00 ; KERREK_STATE = $9C +.byte $00 ; ARROW_SCORE = $9D +.byte $01 ; SCORE_HUNDREDS= $9E +.byte $09 ; SCORE_TENSONES= $9F +.byte $FF ; INVENTORY_1 = $A0 +.byte $FF ; INVENTORY_2 = $A1 +.byte $FF ; INVENTORY_3 = $A2 +.byte $00 ; INVENTORY_1_GONE = $A3 +.byte $00 ; INVENTORY_2_GONE_= $A4 +.byte $00 ; INVENTORY_3_GONE = $A5 diff --git a/games/peasant/zp.inc b/games/peasant/zp.inc index 2a2b79a7..cb812d4d 100644 --- a/games/peasant/zp.inc +++ b/games/peasant/zp.inc @@ -58,38 +58,39 @@ ENVELOPE_SHAPE = $7D PATTERN_L = $7E PATTERN_H = $7F -WHICH_LOAD = $80 ; rest of pt3_player -PT3_TEMP = $81 -ORNAMENT_L = $82 -ORNAMENT_H = $83 -SAMPLE_L = $84 -SAMPLE_H = $85 -LOOP = $86 -MB_VALUE = $87 -MB_ADDR_L = $88 -MB_ADDR_H = $89 -DONE_PLAYING = $8A -DONE_SONG = $8B -APPLEII_MODEL = $8C -ESC_PRESSED = $8D +PT3_TEMP = $80 +ORNAMENT_L = $81 +ORNAMENT_H = $82 +SAMPLE_L = $83 +SAMPLE_H = $84 +LOOP = $85 +MB_VALUE = $86 +MB_ADDR_L = $87 +MB_ADDR_H = $88 +DONE_PLAYING = $89 +DONE_SONG = $8A +APPLEII_MODEL = $8B +ESC_PRESSED = $8C ;======================= ; savegame state ;======================= -PEASANT_X = $90 -PEASANT_Y = $91 -PEASANT_DIR = $92 + +WHICH_LOAD = $90 +PEASANT_X = $91 +PEASANT_Y = $92 +PEASANT_DIR = $93 PEASANT_DIR_UP = 0 PEASANT_DIR_RIGHT = 1 PEASANT_DIR_LEFT = 2 PEASANT_DIR_DOWN = 3 -MAP_X = $93 -MAP_Y = $94 -MAP_LOCATION = $95 +MAP_X = $94 +MAP_Y = $95 +MAP_LOCATION = $96 -GAME_STATE_0 = $96 +GAME_STATE_0 = $97 BABY_IN_WELL=$00 TURN_WELL_CRANK=$00 TALK_TO_MENDELEV=$00 @@ -98,6 +99,7 @@ GAME_STATE_0 = $96 GARY_SCARED=$00 LADY_GONE=$00 TRINKET_GIVEN=$00 +GAME_STATE_1 = $98 FISH_FED=$00 ; also implies man gone and inn open PUDDLE_WET=$00 HAY_BALE=$00 @@ -106,25 +108,24 @@ GAME_STATE_0 = $96 NIGHT=$00 POT_ON_HEAD=$00 WEARING_ROBE=$00 +GAME_STATE_2 = $99 ON_FIRE = $00 COTTAGE_ROCK_MOVED=$00 KNUCKLES_BLEED=$00 DRESSER_OPEN=$00 - -NED_STATUS = $99 -BUSH_STATUS = $9A ; status of bush search +NED_STATUS = $9A +BUSH_STATUS = $9B ; status of bush search -KERREK_STATE = $9B +KERREK_STATE = $9C KERREK_ALIVE = $00 KERREK_DEAD = $01 KERREK_DECOMPOSING = $02 KERREK_SKELETON = $03 -ARROW_SCORE = $9C ; bottom=score, top=random num needed 3-5? - -SCORE_HUNDREDS = $9D -SCORE_TENSONES = $9E +ARROW_SCORE = $9D ; bottom=score, top=random num needed 3-5? +SCORE_HUNDREDS = $9E +SCORE_TENSONES = $9F INVENTORY_1 = $A0 INV1_ARROW = $01