From 06ae65e64317e5a3fe8707d14e632caba6b43f95 Mon Sep 17 00:00:00 2001 From: Forest Belton <65484+forestbelton@users.noreply.github.com> Date: Wed, 7 Jul 2021 22:48:36 -0400 Subject: [PATCH] Optimize collision routines --- src/collision.s | 30 +++++++++++------------------- 1 file changed, 11 insertions(+), 19 deletions(-) diff --git a/src/collision.s b/src/collision.s index d135080..2280bbb 100644 --- a/src/collision.s +++ b/src/collision.s @@ -1,13 +1,12 @@ INCLUDE "oam.inc" -SECTION "Collision", ROMX +SECTION "Collision", ROM0 ; Determines if player has hit the background ; @return NZ = false, Z = true player_bg_collides:: ; c = x % 8 == 0 ? x/8 : x/8 + 1 - ld hl, PLAYER_X - ld a, [hl] + ld a, [PLAYER_X] ld c, a and %111 jr z, .skip_inc_c @@ -20,8 +19,7 @@ player_bg_collides:: srl c ; b = y % 8 == 0 ? y/8 : y/8 + 1 - inc hl - ld a, [hl] + ld a, [PLAYER_Y] ld b, a and %111 jr z, .skip_inc_b @@ -58,8 +56,7 @@ player_bg_collides:: ; @note NZ = false, Z = true player_in_air:: ; c = x % 8 == 0 ? x/8 : x/8 + 1 - ld hl, PLAYER_X - ld a, [hl] + ld a, [PLAYER_X] ld c, a and %111 jr z, .skip_inc_c @@ -72,8 +69,7 @@ player_in_air:: srl c ; b = y % 8 == 0 ? y/8 : y/8 + 1 - inc hl - ld a, [hl] + ld a, [PLAYER_Y] ld b, a and %111 jr z, .skip_inc_b @@ -107,18 +103,14 @@ can_move_to: push bc push hl - ; hl = bg_collision_data - ld hl, BG_COLLISION_DATA - ld d, [hl] - inc hl - ld e, [hl] - push de + ld a, [BG_COLLISION_DATA] + ld h, a + ld a, [BG_COLLISION_DATA + 1] + ld l, a - ; de = map width - ld hl, BG_MAP_WIDTH + ld a, [BG_MAP_WIDTH] ld d, 0 - ld e, [hl] - pop hl + ld e, a ; compute map index (HL + B * (BG_MAP_WIDTH + 1) + C) .mul_y_width: