castleraider

changeset 285:2f0e1ac0c9d0

Ensured that the lives counter is reset before drawing the lives at the start of play. Extended the vertical collision check to take half rows into account and reintroduced an explicit comparison to ensure that horizontal collision checks work when bank 2 is being shown. Adjusted the levels a bit.
author David Boddie <david@boddie.org.uk>
date Sun Mar 23 00:46:29 2014 +0100
parents 7091d0eab594
children 2b0aad2b03a3
files code.oph levels/default.txt monsters.oph
diffstat 3 files changed, 41 insertions(+), 25 deletions(-) [+]
line diff
     1.1 --- a/code.oph	Sat Mar 22 01:44:43 2014 +0100
     1.2 +++ b/code.oph	Sun Mar 23 00:46:29 2014 +0100
     1.3 @@ -72,6 +72,7 @@
     1.4      sta player_moving
     1.5      sta player_falling
     1.6      sta player_lost
     1.7 +    sta player_lives
     1.8      sta check_monster_tile
     1.9      sta monster_movement_offset
    1.10  
    1.11 @@ -181,8 +182,6 @@
    1.12          main_loop_check_monsters:
    1.13          jsr check_player_monsters
    1.14  
    1.15 -        main_loop_next:
    1.16 -
    1.17          lda scrolled
    1.18          bne main_loop_after_monsters
    1.19  
     2.1 --- a/levels/default.txt	Sat Mar 22 01:44:43 2014 +0100
     2.2 +++ b/levels/default.txt	Sun Mar 23 00:46:29 2014 +0100
     2.3 @@ -43,9 +43,9 @@
     2.4  ................@@@@@@@@@@@@@@..................................................................................................................@@@@..............@@@@.............................................................................................................@@@@@@+++++++++++++++++++++@@@@@@++++++++++++++++++++@@@@@@@@@@@@@@@@@@@@@@@............@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......
     2.5  .................@@@@@@@@@@@@...................................................................................................................@@@@..............@@@@....................?..?.....................................................................................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.............@@@@@@@@@@@@@@@@@@@@@@@@@@@@......
     2.6  .................@@@............................................................................................................................@@@@...........<..@@@@....................@@@@.....................................................................................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......<...@@@@@@@@@@@@@@@@@@@@@@@@@@@@......
     2.7 -..................I.......................................................................................................................................................................@@@@.....<..........@@............>.........>...@@..................................@@@@@@/..\@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/\@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@............@@@@@@@@@@@@@@@@@@@@@@@@@@@@......
     2.8 -..................I.............................................++++++++++++................................................................................................................................@@@@--------------------------@@@@.................@@@@@@@@@@@@@@@@@@.......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..@@@@@@@@@@@@@@@@@@@@@@@@@@@/.\@@@@@@@@@@..............2............@@@@@@@@@@@@@@......
     2.9 -..................I..........................................+++############++++..........................................................................................................................@@@@@@..........................@@@@@@........................................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..@@@@@@@@@@@@@@@@@@@@@@@@@@@...........................2..........n.@@@@@@@@@@@@@@@@....
    2.10 +..................I.......................................................................................................................................................................@@@@.....<..........@@............>.........>...@@..................................@@@@@@/..\@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@/\@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@............@@@@@@@@@@@@@@@@@@@@@@@@@@@@......
    2.11 +..................I.............................................++++++++++++................................................................................................................................@@@@--------------------------@@@@.................@@@@@@@@@@@@@@@@@@.......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..@@@@@@@@@@@@@@@@@@@@@@@@/.\@@@@@@@@@@..............2............@@@@@@@@@@@@@@......
    2.12 +..................I..........................................+++############++++..........................................................................................................................@@@@@@..........................@@@@@@........................................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..@@@@@@@@@@@@@@@@@@@@@@@@...........................2..........n.@@@@@@@@@@@@@@@@....
    2.13  ..................I.......................................+++###################++........................+++++.....................+++++++.............................................................@@@@@@@@..........................@@@@@@@@..................................ZZZZ@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...........................2............@@@@@@@@@@@@@@@@@@..
    2.14  .................@@@@@@@@@@@@..................>.....+++++########################++++............>.....++#####++......>.......+++++#######+++++@@........>.........@@++++++++++++++++++++++++++++++++@@@@@@@@@@..........................@@@@@@@@@@..................>.............@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@SSS.......................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    2.15  +++@@------------@@@@@@@@@@@@++++++++++++++++++++++++#################################++++++++++++++++++#########++++++++++++++#################@@@@@@@@@@@@@@@@@@@@@@################################@@@@@@@@@@..........................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
    2.16 @@ -98,27 +98,27 @@
    2.17  ................................................................................V..........................................===..........................V..........................................................=
    2.18  ...................@@@@@.....................................................................................==..............{.....................................................................................=
    2.19  ...................@/.\@........................................................................................................................................................................................HHH=
    2.20 -...................=...........................................===....................................==......................................................................................................@@====
    2.21 +...................=...........................................====...................................==......................................................................................................@@====
    2.22  ...................=............................................................===........................................................................................................................@@.......
    2.23  ...................=LLL...........................===.................................................................................................................................................=====.........
    2.24  ...................=@@@===................====..............<...........====............===.........................==................................======.......................===......=====...................
    2.25  ................................=====..................=====....................................=====.......====..........=====....======....====...............===.....=====.......................................
    2.26  
    2.27  Wasteland
    2.28 -.........................................................................@@..@@..@@............................................................................................................@@..@@..@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@...................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..........<........--..............@@@@@@@@@@@@@@@@@@@@@@@@@@.....................................................................................................................................................+++++++++++..................................................................................
    2.29 -.........................................................................@@@@@@@@@@...............................................@@..@@.......................................................@@@@@@@@@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@.......--..........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.............--..........--........@@@@@@@@@@@@@@@@@@@@@@@@@@...............................................................................................................................................++++++###########+++++.............................................................................
    2.30 -.........................................................................@@@@@@@@@@...............................................@@@@@@.......................................................@@@@@@@@@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@........................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@....................................3...................................................................................................................................................................++++######################+++..........................................................................
    2.31 -.........................................................................@@..@@..@@...............................................@@@@@@.......................................................@@..@@..@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@......................o.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.m..................................3...............................................................................................................................................................++++#############################++........................................................................
    2.32 -.........................................................................@@@@@@@@@@............................................................................................................@@@@@@@@@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@@@.......<..............@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...........--.......................3............................................................................................................................................................+++###################################+.......................................................................
    2.33 -.........................................................................@@@....@@@............................................................................................................@@@@@@@@@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@............................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.............@@@@@@@@@@@........................................................................................................++#######################################++.....................................................................
    2.34 -...............................................................................................................................................................................................@@......@@....................................................................................................@@@@................3........---.........@@@@@@@@@@@@@@@....@@@@@@@@@@@@@@@@@@@@@@@@@...........--................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.............@@@@@@@@@@@......................................................................++++++++++++....................++###########################################++...................................................................
    2.35 -.............................................................................V.........................................................................................................................1.....................................................................................................@@@@.wx.............3....................@@@@@@@@@@@@@........@@@@@@@@@@@@@@@@@@@@@@@....<.................--.....@@@@/.\@@@@@@@@@@@@@@@@@@@@@@@@@@.............@@@@@@@@@..................................................................++++############++++++...........+++###############################################+++................................................................
    2.36 -.......................................................................................................................................................................................................1.....................................................................................................@@@@................3....................@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@@@@@..................--................@@@@@@@@@@@@@@@@@@@@@@@@@@........<....@@@@@@@@@............................................................++++++######################++......+++#####################################################++++............................................................
    2.37 -.....................................@@..@@............................................................................................................................................................1.....................................................................................................@@@@@@@@@@@@@@@@@@@@@@...................@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@@@@@....................................@@@@@@@@@@@@@@@@@@@@@@@@@@@@..................4.........................................................++++##############################++++++############################################################++++........................................................
    2.38 -.....................................@@@@@@..............................@@......@@.............................................@@@@@@@@@@@@..............<....................................@@@@@@@@@@................................................................................@@@@................@@@@@@@@@@@@@@@@@@@@@@@@@................@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@@@@@@@@..............................JJJ@@@@@@@@@@@@@@@@@@@@@@@@@@@@..................4.................................................++++++++########################################################################################################+++.....................................................
    2.39 -.....................................@/..\@...........................XXXXXX@@@@@@@.................................<......XXXXXXXXXX@@@@@@@................XXXXXXX..........................@@@@@@@@@@@@@........>.........>.....++++++++.............................................../..\................@@@@@@@@@@@@@@@@@@@@@@...................@@@@@@@@@@@@..........@@@/.\@@@@@@@@@@@@@@@@@@@..........--............@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................4............................................+++++###################################################################################################################++++.................................................
    2.40 -.....................................@..............................XXXXXXXXXX@@@@@............XXXXXXXX.................XXXXXXXXXXXXXXXX@@@@.............XXXXXXXXXXXXXXX...>.........XXXXXXXXXXXXXXXXXXXXX------------------------########+++...>.....++......XXXX...........................................@@@@@@@@@@@@@@@@@@@@@@...................................V...........@@@@@@@@@@@@@@@@@@@..........................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@................4.......................................+++++############################################################################################################################+++++............................................
    2.41 -.....................................@...........................XXXXXXXXXXXXXXX@@@.....>.....XXXXXXXXX...............XXXXXXXXXXXXXXXXXXXXXX....>.....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................############+++++++++##.......XXX........<......====........................@@@@@@@@@@@@@@@@@@@@@@...............................................@@@@@@@@@@@@@@@@@@@..........................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.......@@@@.....4.................................++++++######################################################################################################################################+++.........................................
    2.42 -.....................................@KKKK..........>.....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....>.....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................######################........XX.....XXXX.....=======...QQQQ................@@@@@@@@@@@@@@@@@@@@@@......----..................................NNN@@@@@@@@@@@@@@@@@@@.......>..................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..>....@@@@@@...4.......>........+++++++++++++++++###############################################################################################################################################++++++++++...............................
    2.43 +.........................................................................@@..@@..@@............................................................................................................@@..@@..@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@...................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..........<........--..............@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.......................................................................................................................+++++++++++..................................................................................
    2.44 +.........................................................................@@@@@@@@@@...............................................@@..@@.......................................................@@@@@@@@@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@.......--..........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.............--..........--........@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.................................................................................................................++++++###########+++++.............................................................................
    2.45 +.........................................................................@@@@@@@@@@...............................................@@@@@@.......................................................@@@@@@@@@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@........................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@....................................3.............................................@@@@@@@@@.............................................................................................................++++######################+++..........................................................................
    2.46 +.........................................................................@@..@@..@@...............................................@@@@@@.......................................................@@..@@..@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@......................o.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.m..................................3.............................................@@@@@@@@@.........................................................................................................++++#############################++........................................................................
    2.47 +.........................................................................@@@@@@@@@@............................................................................................................@@@@@@@@@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@@@.......<..............@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...........--.......................3................................................4...........................................................................................................+++###################################+.......................................................................
    2.48 +.........................................................................@@@....@@@............................................................................................................@@@@@@@@@@....................................................................................................@@@@@@@@@@@@@@@@@@@@@@................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@............................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@......................4.........................................................................................................++#######################################++.....................................................................
    2.49 +...............................................................................................................................................................................................@@......@@....................................................................................................@@@@................3........---.........@@@@@@@@@@@@@@@....@@@@@@@@@@@@@@@@@@@@@@@@@...........--................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@...............V......4.......................................................................++++++++++++....................++###########################################++...................................................................
    2.50 +.............................................................................V.........................................................................................................................1.....................................................................................................@@@@.wx.............3....................@@@@@@@@@@@@@........@@@@@@@@@@@@@@@@@@@@@@@....<.................--.....@@@@/.\@@@@@@@@@@@@@@@@@@@@@@@@@@....................4...................................................................++++############++++++...........+++###############################################+++................................................................
    2.51 +.......................................................................................................................................................................................................1.....................................................................................................@@@@................3....................@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@@@@@..................--................@@@@@@@@@@@@@@@@@@@@@@@@@@....................4.............................................................++++++######################++......+++#####################################################++++............................................................
    2.52 +.....................................@@..@@............................................................................................................................................................1.....................................................................................................@@@@@@@@@@@@@@@@@@@@@@...................@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@@@@@....................................@@@@@@@@@@@@@@@@@@@@@@@@@@@@.............@@@@@@@@@@@....................................................++++##############################++++++############################################################++++........................................................
    2.53 +.....................................@@@@@@..............................@@......@@.............................................@@@@@@@@@@@@..............<....................................@@@@@@@@@@................................................................................@@@@................@@@@@@@@@@@@@@@@@@@@@@@@@................@@@@@@@@@@@@..........@@@@@@@@@@@@@@@@@@@@@@@@@..............................JJJ@@@@@@@@@@@@@@@@@@@@@@@@@@@@.............@@@@@@@@@@@............................................++++++++########################################################################################################+++.....................................................
    2.54 +.....................................@/..\@...........................XXXXXX@@@@@@@.................................<......XXXXXXXXXX@@@@@@@................XXXXXXX..........................@@@@@@@@@@@@@........>.........>.....++++++++.............................................../..\................@@@@@@@@@@@@@@@@@@@@@@...................@@@@@@@@@@@@..........@@@/.\@@@@@@@@@@@@@@@@@@@..........--............@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@.......................................+++++###################################################################################################################++++.................................................
    2.55 +.....................................@..............................XXXXXXXXXX@@@@@............XXXXXXXX.................XXXXXXXXXXXXXXXX@@@@.............XXXXXXXXXXXXXXX...>.........XXXXXXXXXXXXXXXXXXXXX------------------------########+++...>.....++......XXXX...........................................@@@@@@@@@@@@@@@@@@@@@@...................................V...........@@@@@@@@@@@@@@@@@@@..........................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@..................................+++++############################################################################################################################+++++............................................
    2.56 +.....................................@...........................XXXXXXXXXXXXXXX@@@.....>.....XXXXXXXXX...............XXXXXXXXXXXXXXXXXXXXXX....>.....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................############+++++++++##.......XXX........<......====........................@@@@@@@@@@@@@@@@@@@@@@...............................................@@@@@@@@@@@@@@@@@@@..........................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.........@@@@@@@@@@@@@............................++++++######################################################################################################################################+++.........................................
    2.57 +.....................................@KKKK..........>.....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX....>.....XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX.......................######################........XX.....XXXX.....=======...QQQQ................@@@@@@@@@@@@@@@@@@@@@@......----..................................NNN@@@@@@@@@@@@@@@@@@@.......>..................@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@..>......@@@@@@@@@@@@@..>........+++++++++++++++++###############################################################################################################################################++++++++++...............................
    2.58  ...................XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX......................######################........XX......XX.......==============...............@@@@@@@@@@@@@@@@@@@@@@...............@@@@@@@@@@@@@@@@@@......@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##########################################################################################################################################################################+++++++++++++++++++++++++++++++
    2.59  
     3.1 --- a/monsters.oph	Sat Mar 22 01:44:43 2014 +0100
     3.2 +++ b/monsters.oph	Sun Mar 23 00:46:29 2014 +0100
     3.3 @@ -721,17 +721,34 @@
     3.4  
     3.5      check_monster_player_bank2:
     3.6      lda bank_number                 ; x = 17,20 is only a potential hit if
     3.7 +    cmp #1
     3.8      beq check_monster_common_exit   ; bank 2 is showing.
     3.9  
    3.10      check_monster_player_vertical:
    3.11  
    3.12 +    lda player_y                    ; Check for the top of the character.
    3.13 +    asl
    3.14 +    adc player_ys                   ; Store the y position in terms of half
    3.15 +    sta $81                         ; rows.
    3.16 +
    3.17      iny
    3.18      lda ($86),y                     ; Load monster y offset.
    3.19 -    cmp player_y
    3.20 -    bcc check_monster_common_exit
    3.21 -    sbc #3
    3.22 +    asl                             ; Convert it to half rows.
    3.23 +    iny
    3.24 +    adc ($86),y                     ; Add it to the monster's ys value.
    3.25 +
    3.26 +    adc #1                          ; Add haly the monster's height to the
    3.27 +                                    ; offset to help with comparison using
    3.28 +                                    ; its bottom edge.
    3.29 +
    3.30 +    cmp $81                         ; Compare to the character's top edge.
    3.31 +    bcc check_monster_common_exit   ; Exit if above the character. This means
    3.32 +                                    ; that the bottom edge could be aligned
    3.33 +                                    ; with the character's top edge.
    3.34 +
    3.35 +    sbc #8                          ; Check for the character's bottom edge.
    3.36      clc
    3.37 -    cmp player_y
    3.38 +    cmp $81
    3.39      bcs check_monster_common_exit
    3.40  
    3.41      jmp player_demise               ; Decrease the number of lives and exit.