From 74b1003ab8abad2f8220de4f2f18a3b118f23f01 Mon Sep 17 00:00:00 2001 From: Miquel Sabaté Solà Date: Wed, 10 Dec 2025 14:41:35 +0100 Subject: Adapt the code to play well with nasm's asan MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit The address sanitizer from nasm provides quite a few goodies, so let's adapt the code more to it to benefit from those. Signed-off-by: Miquel Sabaté Solà --- src/player.s | 68 ++++++++++++++++++++++++++++++------------------------------ 1 file changed, 34 insertions(+), 34 deletions(-) (limited to 'src/player.s') diff --git a/src/player.s b/src/player.s index c7b65af..2a87b85 100644 --- a/src/player.s +++ b/src/player.s @@ -7,9 +7,9 @@ .macro FIXED_POINT_POSITION_TO_SCREEN POS_ADDR ;; We save the high byte into a temporary value, and we load the low byte ;; into the accumulator. - lda POS_ADDR + 1 + lda POS_ADDR + 1 ; asan:ignore sta Globals::zp_tmp0 - lda POS_ADDR + lda POS_ADDR ; asan:ignore ;; And now it's a matter of rotating the high byte into the low one to ;; match a full byte. @@ -73,12 +73,12 @@ .include "../config/values/player.s" zp_screen_y = $40 - zp_position_y = $41 ; NOTE: 16-bit. + zp_position_y = $41 ; asan:reserve $02 zp_target_velocity_y = $43 ; TODO: needed? zp_velocity_y = $44 zp_screen_x = $45 - zp_position_x = $46 ; NOTE: 16-bit. + zp_position_x = $46 ; asan:reserve $02 zp_target_velocity_x = $48 ; TODO: needed? zp_velocity_x = $49 @@ -760,40 +760,40 @@ bvs @right lda #$01 - sta $201 + sta OAM::m_sprites + $01 lda #$00 - sta $205 + sta OAM::m_sprites + $05 lda #$11 - sta $209 + sta OAM::m_sprites + $09 lda #$10 - sta $20D - stx $211 - sty $215 + sta OAM::m_sprites + $0D + stx OAM::m_sprites + $11 + sty OAM::m_sprites + $15 ldx #%01000000 bne @set_attributes @right: lda #$00 - sta $201 + sta OAM::m_sprites + $01 lda #$01 - sta $205 + sta OAM::m_sprites + $05 lda #$10 - sta $209 + sta OAM::m_sprites + $09 lda #$11 - sta $20D - stx $215 - sty $211 + sta OAM::m_sprites + $0D + stx OAM::m_sprites + $15 + sty OAM::m_sprites + $11 ldx #$00 ;; The `x` register contains the tile attributes. @set_attributes: - stx $202 - stx $206 - stx $20A - stx $20E - stx $212 - stx $216 + stx OAM::m_sprites + $02 + stx OAM::m_sprites + $06 + stx OAM::m_sprites + $0A + stx OAM::m_sprites + $0E + stx OAM::m_sprites + $12 + stx OAM::m_sprites + $16 rts .endproc @@ -802,27 +802,27 @@ .proc update_sprites_coordinates ;; Y axis. lda zp_screen_y - sta $0200 - sta $0204 + sta OAM::m_sprites + sta OAM::m_sprites + $04 clc adc #8 - sta $0208 - sta $020C + sta OAM::m_sprites + $08 + sta OAM::m_sprites + $0C clc adc #8 - sta $0210 - sta $0214 + sta OAM::m_sprites + $10 + sta OAM::m_sprites + $14 ;; X axis. lda zp_screen_x - sta $0203 - sta $020B - sta $0213 + sta OAM::m_sprites + $03 + sta OAM::m_sprites + $0B + sta OAM::m_sprites + $13 clc adc #8 - sta $0207 - sta $020F - sta $0217 + sta OAM::m_sprites + $07 + sta OAM::m_sprites + $0F + sta OAM::m_sprites + $17 rts .endproc -- cgit v1.2.3