SpriteGen/macros.s
Quinn Dunki 9a4c4b7b85 Initial commit
The sprite generator basically works for the four primary hires colors. The included sample program renders all the sample sprites in various places on screen.
2016-09-10 10:53:34 -07:00

166 lines
2.2 KiB
ArmAsm

;
; macros.s
; Generally useful macros for 6502 code
;
; Created by Quinn Dunki on 8/15/14.
; Copyright (c) 2014 One Girl, One Laptop Productions. All rights reserved.
;
; Macros
.macro SETSWITCH name ; Sets the named softswitch (assumes write method)
sta name
.endmacro
.macro SAVE_AXY ; Saves all registers
pha
phx
phy
.endmacro
.macro RESTORE_AXY ; Restores all registers
ply
plx
pla
.endmacro
.macro SAVE_AY ; Saves accumulator and Y index
pha
phy
.endmacro
.macro RESTORE_AY ; Restores accumulator and Y index
ply
pla
.endmacro
.macro SAVE_AX ; Saves accumulator and X index
pha
phx
.endmacro
.macro RESTORE_AX ; Restores accumulator and X index
plx
pla
.endmacro
.macro SAVE_XY ; Saves X and Y index
phx
phy
.endmacro
.macro RESTORE_XY ; Restores X and Y index
ply
plx
.endmacro
.macro SAVE_ZPP ; Saves Zero Page locations we use for parameters
lda PARAM0
pha
lda PARAM1
pha
lda PARAM2
pha
lda PARAM3
pha
.endmacro
.macro RESTORE_ZPP ; Restores Zero Page locations we use for parameters
pla
sta PARAM3
pla
sta PARAM2
pla
sta PARAM1
pla
sta PARAM0
.endmacro
.macro SAVE_ZPS ; Saves Zero Page locations we use for scratch
lda SCRATCH0
pha
lda SCRATCH1
pha
.endmacro
.macro RESTORE_ZPS ; Restores Zero Page locations we use for scratch
pla
sta SCRATCH1
pla
sta SCRATCH0
.endmacro
.macro PARAM16 addr
lda #<addr
sta PARAM0
lda #>addr
sta PARAM1
.endmacro
.macro CALL16 func,addr
PARAM16 addr
jsr func
.endmacro
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; Rendering macros
;
.macro LDY_AVIEW
asl ; Find our new view record
asl
asl
asl ; Records are 16 bytes wide
tay
.endmacro
.macro LDY_ACTIVEVIEW
lda WG_ACTIVEVIEW ; Find our new view record
LDY_AVIEW
.endmacro
.macro LDX_ACTIVEVIEW
lda WG_ACTIVEVIEW ; Find our new view record
asl
asl
asl
asl ; Records are 16 bytes wide
tax
.endmacro
.macro LDY_FOCUSVIEW
lda WG_FOCUSVIEW ; Find our new view record
LDY_AVIEW
.endmacro
.macro VBL_SYNC ; Synchronize with vertical blanking
lda #$80
;macroWaitVBLToFinish:
; bit RDVBLBAR
; bmi macroWaitVBLToFinish
@macroWaitVBLToStart:
; bit RDVBLBAR
; bpl @macroWaitVBLToStart
.endmacro