From 4a8832176b8ea78c8f586e00cd29bf04363f22c5 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Tue, 9 Jul 2019 15:02:18 -0400 Subject: [PATCH] ootw: level2: can walk around now more or less --- ootw/TODO | 2 +- ootw/ootw_c2.s | 8 +- ootw/ootw_c2_elevator.s | 44 ++-- ootw/ootw_c2_jail.s | 245 ++++++++++++++------- ootw/ootw_graphics/l2jail/Makefile | 2 + ootw/ootw_graphics/l2jail/jail3_bg.png | Bin 458 -> 8800 bytes ootw/ootw_graphics/l2jail/ootw_c2_jail.inc | 115 ++++++++++ ootw/ootw_rope.s | 2 +- 8 files changed, 314 insertions(+), 104 deletions(-) diff --git a/ootw/TODO b/ootw/TODO index 5c531d39..922a15fd 100644 --- a/ootw/TODO +++ b/ootw/TODO @@ -55,6 +55,7 @@ cage room: + Ability to pick up gun, with all that entails + Animation of friend? + animated miners in background ++ 1-bit audio recording of friend talking Jail: + Foreground animations @@ -62,5 +63,4 @@ Jail: Elevator: + Elevator ride, view of city? -+ 1-bit audio recording of friend talking + music play when viewing city diff --git a/ootw/ootw_c2.s b/ootw/ootw_c2.s index b085fdaa..70710a4b 100644 --- a/ootw/ootw_c2.s +++ b/ootw/ootw_c2.s @@ -36,7 +36,7 @@ ootw_c2: jsr ootw_cage ;======================= - ; Start Levels + ; Start Level After Cage ;======================= lda #1 @@ -55,6 +55,8 @@ ootw_c2: ; enter new room on level2 c2_new_room: + lda #0 + sta GAME_OVER lda WHICH_JAIL cmp #4 @@ -75,6 +77,10 @@ multilevel_room: c2_check_done: + lda GAME_OVER + cmp #$ff + beq quit_level + ; only exit if done level ; FIXME: or quit pressed? diff --git a/ootw/ootw_c2_elevator.s b/ootw/ootw_c2_elevator.s index 97ac6c34..45d3e4f4 100644 --- a/ootw/ootw_c2_elevator.s +++ b/ootw/ootw_c2_elevator.s @@ -19,7 +19,7 @@ ootw_elevator: ;============================= ; load background image - jsr jail_load_background + jsr elevator_load_background ;============================== @@ -171,24 +171,30 @@ done_elevator: elevator_load_background: - lda WHICH_JAIL - bne elevator_bg1 +; Line 0 + lda #$88 + ldx #0 +line0_left_loop: + sta $c00,X + inx + cpx #16 + bne line0_left_loop + + lda #$00 +line0_center_loop: + sta $c00,X + inx + cpx #25 + bne line0_center_loop + + lda #$88 +line0_right_loop: + sta $c00,X + inx + cpx #39 + bne line0_right_loop + + -elevator_bg0: - ; load background - lda #>(cage_fell_rle) - sta GBASH - lda #<(cage_fell_rle) - sta GBASL - jmp elevator_bg_done -elevator_bg1: - ; load background - lda #>(jail2_rle) - sta GBASH - lda #<(jail2_rle) - sta GBASL -elevator_bg_done: - lda #$c ; load to page $c00 - jmp load_rle_gr ; tail call diff --git a/ootw/ootw_c2_jail.s b/ootw/ootw_c2_jail.s index 3fd3bf26..c4f4ea32 100644 --- a/ootw/ootw_c2_jail.s +++ b/ootw/ootw_c2_jail.s @@ -1,6 +1,127 @@ ; Ootw Checkpoint2 -- Running around the Jail ootw_jail: + + ;============================== + ; setup per-room variables + + lda WHICH_JAIL + bne jail1 + +jail0: + lda #(18+128) + sta LEFT_LIMIT + lda #(39+128) + sta RIGHT_LIMIT + + ; set right exit + lda #1 + sta jer_smc+1 + + ; set left exit + lda #0 + sta jel_smc+1 + + lda #22 + sta PHYSICIST_Y + + ; load background + lda #>(cage_fell_rle) + sta GBASH + lda #<(cage_fell_rle) + sta GBASL + lda #$c ; load to page $c00 + jsr load_rle_gr ; tail call + + + jmp jail_setup_done + +jail1: + lda WHICH_JAIL + cmp #1 + bne jail2 + + lda #(-4+128) + sta LEFT_LIMIT + lda #(39+128) + sta RIGHT_LIMIT + + ; set right exit + lda #2 + sta jer_smc+1 + + ; set left exit + lda #0 + sta jel_smc+1 + + lda #30 + sta PHYSICIST_Y + + ; load background + lda #>(jail2_rle) + sta GBASH + lda #<(jail2_rle) + sta GBASL + lda #$c ; load to page $c00 + jsr load_rle_gr ; tail call + + jmp jail_setup_done + +jail2: + lda WHICH_JAIL + cmp #2 + bne jail3 + + lda #(-4+128) + sta LEFT_LIMIT + lda #(39+128) + sta RIGHT_LIMIT + + ; set right exit + lda #3 + sta jer_smc+1 + + ; set left exit + lda #1 + sta jel_smc+1 + + ; load background + lda #>(jail3_rle) + sta GBASH + lda #<(jail3_rle) + sta GBASL + lda #$c ; load to page $c00 + jsr load_rle_gr ; tail call + + jmp jail_setup_done + +jail3: + + lda #(-4+128) + sta LEFT_LIMIT + lda #(39+128) + sta RIGHT_LIMIT + + ; set right exit + lda #4 + sta jer_smc+1 + + ; set left exit + lda #2 + sta jel_smc+1 + + ; load background + lda #>(jail4_rle) + sta GBASH + lda #<(jail4_rle) + sta GBASL + lda #$c ; load to page $c00 + jsr load_rle_gr ; tail call + + +jail_setup_done: + +ootw_jail_already_set: ;=========================== ; Enable graphics @@ -16,52 +137,6 @@ ootw_jail: lda #1 sta DISP_PAGE - ;============================= - ; load background image - - jsr jail_load_background - - - ;============================== - ; setup per-room variables - - lda WHICH_JAIL - bne jail1 - -jail0: - lda #(20+128) - sta LEFT_LIMIT - lda #(39+128) - 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 #(-4+128) - sta LEFT_LIMIT - lda #(39+128) - sta RIGHT_LIMIT - -jail_setup_done: - - ;================================= ; copy to screen @@ -85,8 +160,9 @@ jail_loop: jsr gr_copy_to_current - ;======================= - ; draw miners mining + ;================================== + ; draw background action + ; FIXME ;=============================== ; check keyboard @@ -110,8 +186,9 @@ jail_loop: jsr draw_physicist - ;================ - ; draw foreground + ;======================== + ; draw foreground action + ; FIXME ;=============== ; page flip @@ -124,9 +201,9 @@ jail_loop: inc FRAMEL bne jail_frame_no_oflo inc FRAMEH - jail_frame_no_oflo: + ;========================== ; check if done this level lda GAME_OVER @@ -140,26 +217,56 @@ jail_frame_no_oflo: cmp #1 beq jail_exit_left + ;================= ; exit to right jail_exit_right: + lda PHYSICIST_X + cmp #35 + bcs jail_right_yes_exit ; bge + +jail_right_stop_not_exit: + lda #0 + sta PHYSICIST_STATE + jmp still_in_jail + +jail_right_yes_exit: + lda #0 sta PHYSICIST_X jer_smc: - lda #$0 + lda #$0 ; smc+1 = exit location sta WHICH_CAVE - jmp ootw_jail + jmp done_jail + + ;===================== + ; exit to left jail_exit_left: + lda PHYSICIST_X + bmi jail_left_yes_exit ; off screen so negative + +jail_left_stop_not_exit: + lda #0 + sta PHYSICIST_STATE + lda LEFT_LIMIT + sec + sbc #$7f + sta PHYSICIST_X + jmp still_in_jail + +jail_left_yes_exit: lda #37 sta PHYSICIST_X jel_smc: - lda #0 + lda #0 ; smc+1 sta WHICH_CAVE - jmp ootw_jail - + jmp done_jail ; loop forever still_in_jail: + lda #0 + sta GAME_OVER + jmp jail_loop done_jail: @@ -168,30 +275,4 @@ done_jail: - ;=============================== - ; 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/l2jail/Makefile b/ootw/ootw_graphics/l2jail/Makefile index efeeb63c..47e70a13 100644 --- a/ootw/ootw_graphics/l2jail/Makefile +++ b/ootw/ootw_graphics/l2jail/Makefile @@ -11,6 +11,8 @@ 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 + $(PNG2RLE) asm jail3_bg.png jail3_rle >> ootw_c2_jail.inc + $(PNG2RLE) asm jail4_bg.png jail4_rle >> ootw_c2_jail.inc ##### diff --git a/ootw/ootw_graphics/l2jail/jail3_bg.png b/ootw/ootw_graphics/l2jail/jail3_bg.png index de13ed8bd5ac09bd91b8270e42e236e4f0339225..9ce5471695becb6828b9b58d221e9b4bee7cc4b8 100644 GIT binary patch delta 8707 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 delta 348 zcmV-i0i*ulM9Kq@7YZ>50{{R3dS~8Xlf@uHG67;sM??UK1szBL000SaNLh0L028kO z028kPW9E*-00007bV*G`2jc@34;lt8aRwrjEFma=_(?=TR7l6|m)j1)FbIa5CDdN| z{*P{_0~FVffcqf@Kr9=2YZk~> z=?65<62Advsfe(JGpkwRw?K22Wg>BhT)+{|V!bclbQJ()3bLy_&_=8-55hy9Zfp;< u!$&v1;sLn-V|eXC!%`yL8D#l;xdALlC3Mga+%a4L0000