From 57fb810d81195a43cc884e6c21e2caa8c1f81794 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Wed, 20 Mar 2019 22:46:18 -0400 Subject: [PATCH] ootw: can sorta walk around level2 now --- ootw/Makefile | 2 +- ootw/ootw_c2.s | 2 + ootw/ootw_c2_cage.s | 34 ++- ootw/ootw_c2_jail.s | 195 ++++++++++++++++++ ootw/ootw_graphics/cage/Makefile | 3 +- ootw/ootw_graphics/l2jail/Makefile | 19 ++ ootw/ootw_graphics/l2jail/jail2_bg.png | Bin 921 -> 10008 bytes .../l2jail/ootw_c2_cage_fell.png | Bin 0 -> 532 bytes ootw/ootw_graphics/l2jail/ootw_c2_jail.inc | 130 ++++++++++++ ootw/zp.inc | 1 + 10 files changed, 374 insertions(+), 12 deletions(-) create mode 100644 ootw/ootw_c2_jail.s create mode 100644 ootw/ootw_graphics/l2jail/Makefile create mode 100644 ootw/ootw_graphics/l2jail/ootw_c2_cage_fell.png create mode 100644 ootw/ootw_graphics/l2jail/ootw_c2_jail.inc diff --git a/ootw/Makefile b/ootw/Makefile index c690e06c..6007d644 100644 --- a/ootw/Makefile +++ b/ootw/Makefile @@ -50,7 +50,7 @@ ootw_c2.o: ootw_c2.s \ gr_copy.s gr_fast_clear.s gr_pageflip.s gr_unrle.s gr_putsprite.s \ keyboard.s gr_run_sequence.s \ ootw_graphics/sprites/sprites_physicist.inc \ - ootw_c2_cage.s ootw_c2_intro.s \ + ootw_c2_cage.s ootw_c2_jail.s ootw_c2_intro.s \ ootw_graphics/cage/ootw_c2_cage.inc \ ootw_graphics/l2intro/ootw_l2intro.inc ca65 -o ootw_c2.o ootw_c2.s -l ootw_c2.lst diff --git a/ootw/ootw_c2.s b/ootw/ootw_c2.s index 3f8dbf1d..28493200 100644 --- a/ootw/ootw_c2.s +++ b/ootw/ootw_c2.s @@ -69,6 +69,7 @@ end_message: .byte 11,20,"ACCESS CODE: RAGE",0 .include "ootw_c2_cage.s" +.include "ootw_c2_jail.s" .include "ootw_c2_intro.s" .include "physicist.s" .include "text_print.s" @@ -86,6 +87,7 @@ end_message: ; room backgrounds .include "ootw_graphics/cage/ootw_c2_cage.inc" +.include "ootw_graphics/l2jail/ootw_c2_jail.inc" ; sprites .include "ootw_graphics/sprites/sprites_physicist.inc" ; intro diff --git a/ootw/ootw_c2_cage.s b/ootw/ootw_c2_cage.s index 2f097d00..13ea592d 100644 --- a/ootw/ootw_c2_cage.s +++ b/ootw/ootw_c2_cage.s @@ -16,14 +16,6 @@ ootw_cage: lda #1 sta DISP_PAGE - ;=========================== - ; Setup right/left exit paramaters - - lda #37 - sta RIGHT_LIMIT - lda #0 - sta LEFT_LIMIT - ;============================= ; Load background to $c00 @@ -44,9 +36,10 @@ ootw_cage: ; setup vars lda #0 - sta GAIT sta GAME_OVER + bit KEYRESET ; clear keypress + ;============================ ; Cage Loop ;============================ @@ -64,7 +57,28 @@ cage_loop: ;=============================== ; check keyboard - jsr handle_keypress + lda KEYPRESS + bpl cage_no_keypress + + ;=========================== + ; Done with cage, enter jail + + + bit KEYRESET ; clear keyboard + + lda #1 + sta DIRECTION + lda #22 + sta PHYSICIST_Y + lda #24 + sta PHYSICIST_X + lda #0 + sta PHYSICIST_STATE + sta WHICH_JAIL + + jmp ootw_jail + +cage_no_keypress: ;=============== diff --git a/ootw/ootw_c2_jail.s b/ootw/ootw_c2_jail.s new file mode 100644 index 00000000..9c93ffef --- /dev/null +++ b/ootw/ootw_c2_jail.s @@ -0,0 +1,195 @@ +; Ootw Checkpoint2 -- Running around the Jail + +ootw_jail: + ;=========================== + ; Enable graphics + + bit LORES + bit SET_GR + bit FULLGR + + ;=========================== + ; Setup pages (is this necessary?) + + lda #0 + sta DRAW_PAGE + lda #1 + sta DISP_PAGE + + + + ;============================= + ; load background image + + jsr jail_load_background + + + ;============================== + ; setup per-room variables + + lda WHICH_JAIL + bne jail1 + +jail0: + lda #20 + sta LEFT_LIMIT + lda #37 + sta RIGHT_LIMIT + + ; set right exit + lda #1 + sta jer_smc+1 + lda #ootw_jail + sta jer_smc+6 + + ; set left exit + lda #0 + sta jel_smc+1 + lda #ootw_jail + sta jel_smc+6 + + + jmp jail_setup_done + +jail1: + lda #0 + sta LEFT_LIMIT + lda #37 + sta RIGHT_LIMIT + +jail_setup_done: + + + ;================================= + ; copy to screen + + jsr gr_copy_to_current + jsr page_flip + + ;================================= + ; setup vars + + lda #0 + sta GAIT + sta GAME_OVER + + ;============================ + ; Cage Loop + ;============================ +jail_loop: + + ;================================ + ; copy background to current page + + jsr gr_copy_to_current + + + ;======================= + ; draw miners mining + + ;=============================== + ; check keyboard + + jsr handle_keypress + + ;=============== + ; check room limits + + jsr check_screen_limit + + + ;=============== + ; draw physicist + + jsr draw_physicist + + + ;================ + ; draw foreground + + ;=============== + ; page flip + + jsr page_flip + + ;================ + ; inc frame count + + inc FRAMEL + bne jail_frame_no_oflo + inc FRAMEH + +jail_frame_no_oflo: + + ; check if done this level + + lda GAME_OVER + beq still_in_jail + + cmp #$ff ; if $ff, we died + beq done_jail + + ;=============================== + ; check if exited room to right + cmp #1 + beq jail_exit_left + + ; exit to right +jail_exit_right: + lda #0 + sta PHYSICIST_X +jer_smc: + lda #$0 + sta WHICH_CAVE + jmp ootw_jail + +jail_exit_left: + lda #37 + sta PHYSICIST_X +jel_smc: + lda #0 + sta WHICH_CAVE + jmp ootw_jail + + + ; loop forever +still_in_jail: + jmp jail_loop + +done_jail: + rts + + + + + ;=============================== + ; load proper background to $c00 + ;=============================== + +jail_load_background: + + lda WHICH_JAIL + bne jail_bg1 + +jail_bg0: + ; load background + lda #>(cage_fell_rle) + sta GBASH + lda #<(cage_fell_rle) + sta GBASL + jmp jail_bg_done + +jail_bg1: + ; load background + lda #>(jail2_rle) + sta GBASH + lda #<(jail2_rle) + sta GBASL +jail_bg_done: + lda #$c ; load to page $c00 + jmp load_rle_gr ; tail call + diff --git a/ootw/ootw_graphics/cage/Makefile b/ootw/ootw_graphics/cage/Makefile index a6409514..e99fbe07 100644 --- a/ootw/ootw_graphics/cage/Makefile +++ b/ootw/ootw_graphics/cage/Makefile @@ -7,7 +7,8 @@ all: ootw_c2_cage.inc ##### -ootw_c2_cage.inc: $(PNG2RLE) ootw_c2_cage.png +ootw_c2_cage.inc: $(PNG2RLE) \ + ootw_c2_cage.png $(PNG2RLE) asm ootw_c2_cage.png cage_rle > ootw_c2_cage.inc ##### diff --git a/ootw/ootw_graphics/l2jail/Makefile b/ootw/ootw_graphics/l2jail/Makefile new file mode 100644 index 00000000..efeeb63c --- /dev/null +++ b/ootw/ootw_graphics/l2jail/Makefile @@ -0,0 +1,19 @@ +include ../../../Makefile.inc + +PNG2RLE = ../../../gr-utils/png2rle +PNG2LZ4 = ../../../gr-utils/png2lz4 + +all: ootw_c2_jail.inc + +##### + +ootw_c2_jail.inc: $(PNG2RLE) \ + ootw_c2_cage_fell.png jail2_bg.png + $(PNG2RLE) asm ootw_c2_cage_fell.png cage_fell_rle > ootw_c2_jail.inc + $(PNG2RLE) asm jail2_bg.png jail2_rle >> ootw_c2_jail.inc + +##### + +clean: + rm -f *~ *.o *.lst *.lzz *.inc + diff --git a/ootw/ootw_graphics/l2jail/jail2_bg.png b/ootw/ootw_graphics/l2jail/jail2_bg.png index e865714d4414069b4e1425961c05dd6844da8506..e08730c920aa480849889b28eb46e653f3238450 100644 GIT binary patch literal 10008 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

?xyxB@5DPq3#nGPgwd_>lv9Y`&KW-vF@r=s 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 W&LDKAS8hiD0000