@@ -20,84 +20,84 @@
|
||||
; - 180 = 71 percent - 1 = 70 percent + 2
|
||||
; - 200 = 79 percent - 1
|
||||
; - 230 = 90 percent + 1
|
||||
percent EQUS "* $ff / 100"
|
||||
DEF percent EQUS "* $ff / 100"
|
||||
|
||||
; e.g. 1 out_of 2 == 50 percent + 1 == $80
|
||||
out_of EQUS "* $100 /"
|
||||
DEF out_of EQUS "* $100 /"
|
||||
|
||||
assert_power_of_2: MACRO
|
||||
MACRO assert_power_of_2
|
||||
assert (\1) & ((\1) - 1) == 0, "\1 must be a power of 2"
|
||||
ENDM
|
||||
|
||||
; Constant data (db, dw, dl) macros
|
||||
|
||||
dwb: MACRO
|
||||
MACRO dwb
|
||||
dw \1
|
||||
db \2
|
||||
ENDM
|
||||
|
||||
dbw: MACRO
|
||||
MACRO dbw
|
||||
db \1
|
||||
dw \2
|
||||
ENDM
|
||||
|
||||
dn: MACRO ; nybbles
|
||||
rept _NARG / 2
|
||||
db ((\1) << 4) | (\2)
|
||||
shift 2
|
||||
endr
|
||||
MACRO dn ; nybbles
|
||||
rept _NARG / 2
|
||||
db ((\1) << 4) | (\2)
|
||||
shift 2
|
||||
endr
|
||||
ENDM
|
||||
|
||||
dc: MACRO ; "crumbs"
|
||||
rept _NARG / 4
|
||||
db ((\1) << 6) | ((\2) << 4) | ((\3) << 2) | (\4)
|
||||
shift 4
|
||||
endr
|
||||
MACRO dc ; "crumbs"
|
||||
rept _NARG / 4
|
||||
db ((\1) << 6) | ((\2) << 4) | ((\3) << 2) | (\4)
|
||||
shift 4
|
||||
endr
|
||||
ENDM
|
||||
|
||||
dt: MACRO ; three-byte (big-endian)
|
||||
MACRO dt ; three-byte (big-endian)
|
||||
db LOW((\1) >> 16), HIGH(\1), LOW(\1)
|
||||
ENDM
|
||||
|
||||
dd: MACRO ; four-byte (big-endian)
|
||||
MACRO dd ; four-byte (big-endian)
|
||||
db HIGH((\1) >> 16), LOW((\1) >> 16), HIGH(\1), LOW(\1)
|
||||
ENDM
|
||||
|
||||
bigdw: MACRO ; big-endian word
|
||||
MACRO bigdw ; big-endian word
|
||||
db HIGH(\1), LOW(\1)
|
||||
ENDM
|
||||
|
||||
dba: MACRO ; dbw bank, address
|
||||
rept _NARG
|
||||
dbw BANK(\1), \1
|
||||
shift
|
||||
endr
|
||||
MACRO dba ; dbw bank, address
|
||||
rept _NARG
|
||||
dbw BANK(\1), \1
|
||||
shift
|
||||
endr
|
||||
ENDM
|
||||
|
||||
dab: MACRO ; dwb address, bank
|
||||
rept _NARG
|
||||
dwb \1, BANK(\1)
|
||||
shift
|
||||
endr
|
||||
MACRO dab ; dwb address, bank
|
||||
rept _NARG
|
||||
dwb \1, BANK(\1)
|
||||
shift
|
||||
endr
|
||||
ENDM
|
||||
|
||||
dba_pic: MACRO ; dbw bank, address
|
||||
MACRO dba_pic ; dbw bank, address
|
||||
db BANK(\1) - PICS_FIX
|
||||
dw \1
|
||||
ENDM
|
||||
|
||||
bcd: MACRO
|
||||
rept _NARG
|
||||
dn ((\1) % 100) / 10, (\1) % 10
|
||||
shift
|
||||
endr
|
||||
MACRO bcd
|
||||
rept _NARG
|
||||
dn ((\1) % 100) / 10, (\1) % 10
|
||||
shift
|
||||
endr
|
||||
ENDM
|
||||
|
||||
sine_table: MACRO
|
||||
MACRO sine_table
|
||||
; \1 samples of sin(x) from x=0 to x<32768 (pi radians)
|
||||
x = 0
|
||||
rept \1
|
||||
dw (sin(x) + (sin(x) & $ff)) >> 8 ; round up
|
||||
x += DIV(32768, \1) ; a circle has 65536 "degrees"
|
||||
endr
|
||||
DEF x = 0
|
||||
rept \1
|
||||
dw (sin(x) + (sin(x) & $ff)) >> 8 ; round up
|
||||
DEF x += DIV(32768, \1) ; a circle has 65536 "degrees"
|
||||
endr
|
||||
ENDM
|
||||
|
Reference in New Issue
Block a user