From 1836502a673ec820b771ea2f167a9ded8836a409 Mon Sep 17 00:00:00 2001 From: Vince Weaver Date: Fri, 11 Mar 2022 00:53:18 -0500 Subject: [PATCH] lemm: digging vaguely works --- games/lemm/hello.bas | 12 ++++--- games/lemm/intro_level1.s | 2 +- games/lemm/keyboard.s | 46 +++--------------------- games/lemm/move_lemming.s | 73 +++++++++++++++++++++++++++++++++++++-- 4 files changed, 83 insertions(+), 50 deletions(-) diff --git a/games/lemm/hello.bas b/games/lemm/hello.bas index 208c6fa6..46e3c53a 100644 --- a/games/lemm/hello.bas +++ b/games/lemm/hello.bas @@ -8,8 +8,10 @@ 90 PRINT "DISK CODE : QKUMBA" 94 PRINT "LZSA CODE : EMMANUEL MARTY" 95 PRINT -100 PRINT " ______" -110 PRINT " A \/\/\/ SOFTWARE PRODUCTION" -115 PRINT -120 PRINT " HTTP://WWW.DEATER.NET/WEAVE/VMWPROD" -130 PRINT CHR$(4)"BRUN LEMM" +100 PRINT "WASD/ARROWS MOVE, ENTER ACTION" +105 PRINT "J TOGGLE JOYSTICK" +125 PRINT " ______" +130 PRINT " A \/\/\/ SOFTWARE PRODUCTION" +135 PRINT +140 PRINT " HTTP://WWW.DEATER.NET/WEAVE/VMWPROD" +150 PRINT CHR$(4)"BRUN LEMM" diff --git a/games/lemm/intro_level1.s b/games/lemm/intro_level1.s index 9d76219e..e6a4b754 100644 --- a/games/lemm/intro_level1.s +++ b/games/lemm/intro_level1.s @@ -112,7 +112,7 @@ level1_win_text: .byte 2, 6,"SUPERB! YOU RESCUED EVERY LEMMING ON",0 .byte 2, 7,"THAT LEVEL. CAN YOU DO IT AGAIN...",0 .byte 6,15,"YOUR ACCESS CODE FOR LEVEL 2",0 -.byte 12,16,"IS PLZNOTATARI",0 +.byte 14,16,"IS WEH8ATARI",0 .byte 6,20,"PRESS RETURN FOR NEXT LEVEL",0 .byte 9,21,"PRESS ESCAPE FOR MENU",0 diff --git a/games/lemm/keyboard.s b/games/lemm/keyboard.s index 9e65c91c..062ac23a 100644 --- a/games/lemm/keyboard.s +++ b/games/lemm/keyboard.s @@ -190,50 +190,12 @@ check_return: return_pressed: -; lda IN_SPECIAL -; beq not_special_return + ; TODO: actually check if over -special_return: -; jsr handle_special + lda #LEMMING_DIGGING + sta lemming_status - ; special case, don't make cursor visible -; jmp no_keypress - -;not_special_return: -; -; lda IN_RIGHT -; beq not_right_return - -; cmp #1 -; beq right_return - -;right_uturn: -; jsr uturn -; jmp no_keypress - -;right_return: -; jsr turn_right -; jmp no_keypress - -;not_right_return: - -; lda IN_LEFT -; beq not_left_return - -; cmp #1 -; beq left_return -;left_uturn: -; jsr uturn -; jmp no_keypress - -;left_return: -; jsr turn_left -; jmp no_keypress - -;not_left_return: - -; jsr go_forward - jmp no_keypress + jmp done_keypress done_keypress: diff --git a/games/lemm/move_lemming.s b/games/lemm/move_lemming.s index 94050516..1658a235 100644 --- a/games/lemm/move_lemming.s +++ b/games/lemm/move_lemming.s @@ -1,9 +1,13 @@ move_lemmings: - lda lemming_out - beq done_move_lemming + ldy #0 + lda lemming_out,Y + bne really_move_lemming + jmp done_move_lemming + +really_move_lemming: lda lemming_status cmp #LEMMING_FALLING beq do_lemming_falling @@ -21,14 +25,79 @@ do_lemming_falling: jmp done_move_lemming do_lemming_walking: + + + lda lemming_y + clc + adc #3 ; waist-high? + tay + + lda hposn_high,Y + sta GBASH + lda hposn_low,Y + sta GBASL + clc lda lemming_x adc lemming_direction + tay + + lda (GBASL),Y + and #$7f + beq walking_no_wall + +walking_yes_wall: + + lda lemming_direction + eor #$ff + clc + adc #1 + sta lemming_direction + + lda lemming_x + +walking_no_wall: + tya + +walking_done: sta lemming_x jsr collision_check_ground + jmp done_move_lemming + do_lemming_digging: + lda lemming_y + clc + adc #9 + tay + + lda hposn_high,Y + sta GBASH + lda hposn_low,Y + sta GBASL + + ldy lemming_x + lda (GBASL),Y + and #$7f + beq digging_falling +digging_digging: + lda #$0 + sta (GBASL),Y + lda GBASH + adc #$20 + sta GBASH + lda #$0 + sta (GBASL),Y + + inc lemming_y + + jmp done_digging +digging_falling: + lda #LEMMING_FALLING + sta lemming_status +done_digging: + done_move_lemming: rts