From 4174221b4eb3ce0f6d6346e807ce3a0c7398bf1f Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Thu, 22 Aug 2019 10:38:51 -0400 Subject: [PATCH] ootw: l2: more fine tuning, fixing some bugs doesn't crash when you shoot aliens anymore --- ootw/TODO | 22 +++++++++++++++------- ootw/alien.s | 40 +++++++++++++++++++++++++++++----------- ootw/ootw_c2_jail.s | 18 +++++++++--------- 3 files changed, 53 insertions(+), 27 deletions(-) diff --git a/ootw/TODO b/ootw/TODO index c5c2f4dd..fbcce07d 100644 --- a/ootw/TODO +++ b/ootw/TODO @@ -1,6 +1,20 @@ TODO Before release: ==================== + l2 -- picking up gun collision box isn't quite right + when coming in from the right + + l2 -- fix collision with alien on same level + l2 -- adjust door trigger in break room + l2 -- move doors to final behavior (break room one needs to + be locked) + + l2/l4 -- have aliens shoot + + L2 vent -- we fall behind the vent + No easy way to fix that unless we split if off from + the friend drawing code, or change the Z order of the friend + l2 -- alien behavior @@ -14,13 +28,6 @@ TODO Before release: L2 -- disable door/powerline by shooting wall L2 -- add aliens - L2 -- add minimal friend AI - -- on cart screen, cart is still there at edge of screen? - - L5 -- add ending scenes? - Show some pictures - Do ending - Play music? intro -- add music? @@ -48,6 +55,7 @@ BEHAVIOR DIFFERENCES: * alien guard behavior: - will punch you if you get too close + - become alert if they hear an explosion - l4, if you draw gun (but not fire) guard won't shoot you, but instead will yell at you a bit diff --git a/ootw/alien.s b/ootw/alien.s index 7dfdb18b..25639dde 100644 --- a/ootw/alien.s +++ b/ootw/alien.s @@ -59,6 +59,7 @@ move_alien: ; FIXME: loop through all alieans ldx #0 +move_alien_loop: lda alien_room,X cmp WHICH_ROOM bne done_move_alien @@ -73,14 +74,20 @@ move_alien: beq move_alien_yelling cmp #A_SHOOTING_UP beq move_alien_yelling + done_move_alien: + + inx + cpx #MAX_ALIENS + bne move_alien_loop + rts ;====================== ; yelling move_alien_yelling: inc alien_gait,X ; cycle through animation - rts + jmp done_move_alien ;====================== ; walking @@ -97,11 +104,11 @@ move_alien_walking: beq a_walk_left inc alien_x,X ; walk right - rts + jmp done_move_alien a_walk_left: dec alien_x,X ; walk left alien_no_move_walk: - rts + jmp done_move_alien ;====================== ; running @@ -117,11 +124,11 @@ move_alien_running: beq a_run_left inc alien_x,X ; run right - rts + jmp done_move_alien a_run_left: dec alien_x,X ; run left alien_no_move_run: - rts + jmp done_move_alien ;====================== ; standing @@ -169,13 +176,16 @@ ajump: ;====================================== draw_alien: - ; FIXME - ldx #0 + ldx #0 +draw_alien_loop: lda alien_room,X cmp WHICH_ROOM bne no_alien + txa + pha + lda alien_state,X tay lda astate_table_lo,y @@ -183,8 +193,15 @@ draw_alien: lda astate_table_hi,y sta ajump+1 jmp (ajump) +done_draw_alien_loop: + pla + tax no_alien: + inx + cpx #MAX_ALIENS + bne draw_alien_loop + rts ;================================== @@ -367,7 +384,7 @@ alien_disintegrating: dec ALIEN_OUT - rts + jmp done_draw_alien_loop alien_keep_disintegrating: @@ -449,11 +466,12 @@ finally_draw_alien: bne alien_facing_right alien_facing_left: - jmp put_sprite_crop + jsr put_sprite_crop + jmp done_draw_alien_loop alien_facing_right: - jmp put_sprite_flipped_crop - + jsr put_sprite_flipped_crop + jmp done_draw_alien_loop ;================== ;================== diff --git a/ootw/ootw_c2_jail.s b/ootw/ootw_c2_jail.s index 1a55edde..c0408a7e 100644 --- a/ootw/ootw_c2_jail.s +++ b/ootw/ootw_c2_jail.s @@ -87,9 +87,9 @@ ootw_jail_init: lda #4 sta alien2_room - lda #20 + lda #25 sta alien2_x - lda #20 + lda #30 sta alien2_y lda #A_STANDING sta alien2_state @@ -288,7 +288,7 @@ jail4: jail4_bottom: lda #(-4+128) sta LEFT_LIMIT - lda #(28+128) + lda #(30+128) sta RIGHT_LIMIT jmp jail4_ok @@ -315,7 +315,7 @@ jail4_ok: lda #(-4+128) sta td_left_smc1+1 - lda #(28+128) + lda #(30+128) sta td_right_smc1+1 lda #(10+128) @@ -593,9 +593,9 @@ c2_done_draw_friend: ; draw alien ;=============== - lda ALIEN_OUT - beq no_draw_alien - jsr draw_alien + lda ALIEN_OUT + beq no_draw_alien + jsr draw_alien no_draw_alien: ;================ @@ -1247,8 +1247,8 @@ door_c2_r4_y: door_c2_r4_xmin: c2_r4_door0_xmin: .byte 9 ; 18-4-5 - c2_r4_door1_xmin: .byte 11 ; 20-4-5 - c2_r4_door2_xmin: .byte 13 ; 22-4-5 + c2_r4_door1_xmin: .byte 9 ; 20-4-5 + c2_r4_door2_xmin: .byte 9 ; 22-4-5 c2_r4_door3_xmin: .byte 23 ; 32-4-5 door_c2_r4_xmax: