aboutsummaryrefslogtreecommitdiff
path: root/src/player.s
diff options
context:
space:
mode:
authorMiquel Sabaté Solà <mssola@mssola.com>2025-12-10 14:41:35 +0100
committerMiquel Sabaté Solà <mssola@mssola.com>2025-12-15 15:31:06 +0100
commit74b1003ab8abad2f8220de4f2f18a3b118f23f01 (patch)
treeb7f2d491d708fa900d4dd9649eb5bd7fab3e8686 /src/player.s
parente6d9bd9f7acfd0e40025b2d579a7faff0d04ef0a (diff)
downloadjetpac.nes-74b1003ab8abad2f8220de4f2f18a3b118f23f01.tar.gz
jetpac.nes-74b1003ab8abad2f8220de4f2f18a3b118f23f01.zip
Adapt the code to play well with nasm's asan
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à <mssola@mssola.com>
Diffstat (limited to 'src/player.s')
-rw-r--r--src/player.s68
1 files changed, 34 insertions, 34 deletions
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