;############## Calcuzap by Patrick Davidson - hits with enemies hit_enemy: ld hl,enemies ld b,e_count loop_scan_enemies: ld a,(hl) and 63 jp z,no_enemy_to_hit cp 15 ; exploding jp z,no_enemy_to_hit cp 60 ; exploding jp z,no_enemy_to_hit cp 33 ; pattern follower waiting jp z,no_enemy_to_hit cp 39 jp z,no_enemy_to_hit cp 54 jp z,no_enemy_to_hit push bc push hl inc hl call set_collision_check_object ld hl,bullets ld bc,b_count*256 loop_scan_bullets: ld a,(hl) or a jr z,no_hit_bullet push bc push hl inc hl call collision_check pop hl pop bc jr nc,no_hit_bullet ld (hl),6 ; bullet being removed inc c cp 19 jr c,no_hit_bullet inc c no_hit_bullet: ld de,b_size add hl,de djnz loop_scan_bullets pop hl push hl ld de,e_dmg add hl,de ld a,(hl) sub c ld (hl),a pop hl push af ld a,c or a jr z,not_hit_at_all set 7,(hl) set 6,(hl) not_hit_at_all: pop af jr nc,no_hit_enemy ld a,(hl) ld (hl),15 ; enemy being removed and 63 cp 18 ; boss doesn't have an escape pod jr z,no_escape cp 21 jr z,no_escape cp 63 ; escape pods don't have their own escape pods either jr z,no_escape ld a,(escape_flag) or a jr z,no_escape ld (hl),60 ; special explosion -> escape pod later no_escape: push hl call erase_object pop hl push hl inc hl inc hl inc hl ld de,img_enemy_explode #ifdef TI84CE ld (hl),de inc hl inc hl #else ld (hl),e inc hl ld (hl),d #endif inc hl ld (hl),2 pop hl push hl call boost_score ld a,(hard_flag) ; no bonus in easy mode or a jr z,no_boost_score ld hl,bonus_countdown ld a,(hl) ld (hl),30 or a call nz,boost_score no_boost_score: pop hl no_hit_enemy: pop bc no_enemy_to_hit ld de,e_size add hl,de dec b jp nz,loop_scan_enemies ret boost_score: ld hl,score+6 ; and increment the score ld de,score_increment+4 ld a,'0' ld (score_changed),a ld (de),a inc de ld a,(score_inc) ld (de),a inc de Add_6_Digits_BCD: ld b,6 loop_add_nocarry: xor a loop_add: dec hl dec de ld a,(de) adc a,(hl) sub '0' ; '0' was added twice because both ASCII cp '0'+10 jr c,loop_add_nocarry_end sub 10 ccf ld (hl),a djnz loop_add ret loop_add_nocarry_end: ld (hl),a djnz loop_add_nocarry ret score_increment: .db "000001"