2015-04-13 21:30:51 -07:00
|
|
|
INCLUDE "macros/enum.asm"
|
2015-06-29 22:24:45 -04:00
|
|
|
INCLUDE "macros/basestats.asm"
|
2015-04-13 21:30:51 -07:00
|
|
|
|
2015-01-20 00:01:23 -08:00
|
|
|
INCLUDE "macros/event.asm"
|
|
|
|
INCLUDE "macros/sound.asm"
|
|
|
|
INCLUDE "macros/text.asm"
|
|
|
|
INCLUDE "macros/charmap.asm"
|
|
|
|
INCLUDE "macros/move_effect.asm"
|
|
|
|
INCLUDE "macros/move_anim.asm"
|
|
|
|
INCLUDE "macros/movement.asm"
|
|
|
|
INCLUDE "macros/map.asm"
|
2015-03-03 17:19:27 -05:00
|
|
|
INCLUDE "macros/pic.asm"
|
2015-01-20 14:26:16 -08:00
|
|
|
INCLUDE "macros/predef.asm"
|
|
|
|
INCLUDE "macros/rst.asm"
|
2015-01-27 15:03:14 -08:00
|
|
|
INCLUDE "macros/mobile.asm"
|
2015-07-16 18:10:10 -04:00
|
|
|
INCLUDE "macros/trainer.asm"
|
2015-11-23 00:21:21 -05:00
|
|
|
INCLUDE "macros/trade_anim.asm"
|
2016-01-20 19:16:25 -05:00
|
|
|
INCLUDE "macros/pals.asm"
|
2015-01-20 00:01:23 -08:00
|
|
|
|
2015-01-20 14:10:55 -08:00
|
|
|
RGB: MACRO
|
|
|
|
dw ((\3) << 10) + ((\2) << 5) + (\1)
|
|
|
|
ENDM
|
2013-09-03 18:22:26 -04:00
|
|
|
|
2014-02-02 16:13:23 -05:00
|
|
|
|
2014-06-10 23:03:21 -07:00
|
|
|
percent EQUS "* $ff / 100"
|
|
|
|
|
2014-02-02 17:12:04 -05:00
|
|
|
|
2013-09-03 18:22:26 -04:00
|
|
|
dwb: MACRO
|
|
|
|
dw \1
|
|
|
|
db \2
|
|
|
|
ENDM
|
|
|
|
|
|
|
|
dbw: MACRO
|
|
|
|
db \1
|
|
|
|
dw \2
|
|
|
|
ENDM
|
|
|
|
|
2014-03-03 05:28:53 -05:00
|
|
|
dbbw: MACRO
|
|
|
|
db \1, \2
|
|
|
|
dw \3
|
|
|
|
ENDM
|
|
|
|
|
2015-07-20 03:51:52 -04:00
|
|
|
dbww: MACRO
|
|
|
|
db \1
|
|
|
|
dw \2, \3
|
|
|
|
ENDM
|
|
|
|
|
2015-01-01 20:59:08 -08:00
|
|
|
dbwww: MACRO
|
|
|
|
db \1
|
|
|
|
dw \2, \3, \4
|
|
|
|
ENDM
|
|
|
|
|
2013-09-03 18:22:26 -04:00
|
|
|
dn: MACRO
|
2015-01-20 14:10:55 -08:00
|
|
|
rept _NARG / 2
|
2014-08-14 23:43:41 -07:00
|
|
|
db (\1) << 4 + (\2)
|
2015-01-20 14:10:55 -08:00
|
|
|
shift
|
|
|
|
shift
|
|
|
|
endr
|
2013-09-03 18:22:26 -04:00
|
|
|
ENDM
|
|
|
|
|
2015-01-27 15:03:14 -08:00
|
|
|
dx: MACRO
|
|
|
|
x = 8 * ((\1) - 1)
|
|
|
|
rept \1
|
|
|
|
db ((\2) >> x) & $ff
|
|
|
|
x = x + -8
|
|
|
|
endr
|
|
|
|
ENDM
|
|
|
|
|
2013-09-03 18:22:26 -04:00
|
|
|
dt: MACRO ; three-byte (big-endian)
|
2015-01-27 15:03:14 -08:00
|
|
|
dx 3, \1
|
|
|
|
ENDM
|
|
|
|
|
|
|
|
dd: MACRO ; four-byte (big-endian)
|
|
|
|
dx 4, \1
|
2013-09-03 18:22:26 -04:00
|
|
|
ENDM
|
|
|
|
|
|
|
|
bigdw: MACRO ; big-endian word
|
2015-01-27 15:03:14 -08:00
|
|
|
dx 2, \1
|
2013-09-03 18:22:26 -04:00
|
|
|
ENDM
|
|
|
|
|
2015-10-17 17:18:52 -04:00
|
|
|
dba: MACRO ; dbw bank, address
|
2015-11-01 09:38:48 -05:00
|
|
|
rept _NARG
|
2015-10-17 17:18:52 -04:00
|
|
|
dbw BANK(\1), \1
|
2015-11-01 09:38:48 -05:00
|
|
|
shift
|
|
|
|
endr
|
2015-10-17 17:18:52 -04:00
|
|
|
ENDM
|
|
|
|
|
|
|
|
dab: MACRO ; dwb address, bank
|
2015-11-01 09:38:48 -05:00
|
|
|
rept _NARG
|
2015-10-17 17:18:52 -04:00
|
|
|
dwb \1, BANK(\1)
|
2015-11-01 09:38:48 -05:00
|
|
|
shift
|
|
|
|
endr
|
2015-10-17 17:18:52 -04:00
|
|
|
ENDM
|
2015-01-20 14:10:55 -08:00
|
|
|
|
|
|
|
lb: MACRO ; r, hi, lo
|
2015-12-18 20:07:09 -05:00
|
|
|
ld \1, (\2 & $ff) << 8 + (\3 & $ff)
|
2013-09-03 18:22:26 -04:00
|
|
|
ENDM
|
|
|
|
|
2015-10-24 10:34:19 -04:00
|
|
|
ln: MACRO ; r, hi, lo
|
2015-12-18 20:07:09 -05:00
|
|
|
ld \1, (\2 & $f) << 4 + (\3 & $f)
|
2015-10-24 10:34:19 -04:00
|
|
|
ENDM
|
2015-01-20 14:26:16 -08:00
|
|
|
|
2015-02-08 00:03:32 -08:00
|
|
|
bccoord equs "coord bc,"
|
|
|
|
decoord equs "coord de,"
|
|
|
|
hlcoord equs "coord hl,"
|
2013-11-24 04:06:37 -05:00
|
|
|
|
2015-01-20 14:10:55 -08:00
|
|
|
coord: MACRO
|
2015-10-24 10:34:19 -04:00
|
|
|
; register, x, y[, origin]
|
2015-02-08 00:03:32 -08:00
|
|
|
if _NARG < 4
|
2015-01-20 14:10:55 -08:00
|
|
|
ld \1, TileMap + SCREEN_WIDTH * (\3) + (\2)
|
2015-02-08 00:03:32 -08:00
|
|
|
else
|
|
|
|
ld \1, \4 + SCREEN_WIDTH * (\3) + (\2)
|
|
|
|
endc
|
2015-01-20 14:10:55 -08:00
|
|
|
ENDM
|
|
|
|
|
2015-02-02 15:46:06 -08:00
|
|
|
dwcoord: MACRO
|
|
|
|
rept _NARG / 2
|
|
|
|
dw TileMap + SCREEN_WIDTH * (\2) + (\1)
|
|
|
|
shift
|
|
|
|
shift
|
|
|
|
endr
|
|
|
|
ENDM
|
|
|
|
|
2015-10-19 10:23:58 -04:00
|
|
|
ldcoord_a: MACRO
|
2015-10-04 14:14:51 -04:00
|
|
|
if _NARG < 3
|
|
|
|
ld [TileMap + SCREEN_WIDTH * (\2) + (\1)], a
|
|
|
|
else
|
|
|
|
ld [\3 + SCREEN_WIDTH * (\2) + (\1)], a
|
|
|
|
endc
|
|
|
|
ENDM
|
2015-01-20 14:10:55 -08:00
|
|
|
|
2015-10-19 10:23:58 -04:00
|
|
|
lda_coord: MACRO
|
|
|
|
if _NARG < 3
|
|
|
|
ld a, [TileMap + SCREEN_WIDTH * (\2) + (\1)]
|
|
|
|
else
|
|
|
|
ld a, [\3 + SCREEN_WIDTH * (\2) + (\1)]
|
|
|
|
endc
|
|
|
|
ENDM
|
|
|
|
|
2015-01-20 14:10:55 -08:00
|
|
|
; pic animations
|
|
|
|
frame: MACRO
|
|
|
|
db \1
|
2016-05-15 23:05:41 -04:00
|
|
|
x = \2
|
|
|
|
IF _NARG > 2
|
|
|
|
rept _NARG +- 2
|
|
|
|
x = x | (1 << (\3 + 1))
|
|
|
|
shift
|
|
|
|
endr
|
|
|
|
endc
|
|
|
|
db x
|
2015-01-20 14:10:55 -08:00
|
|
|
ENDM
|
|
|
|
setrepeat: MACRO
|
|
|
|
db $fe
|
|
|
|
db \1
|
|
|
|
ENDM
|
|
|
|
dorepeat: MACRO
|
|
|
|
db $fd
|
|
|
|
db \1
|
|
|
|
ENDM
|
|
|
|
endanim: MACRO
|
|
|
|
db $ff
|
2013-11-24 04:06:37 -05:00
|
|
|
ENDM
|
|
|
|
|
|
|
|
|
2016-05-15 22:33:51 -04:00
|
|
|
delanim: MACRO
|
|
|
|
db $fc
|
|
|
|
ENDM
|
|
|
|
dorestart: MACRO
|
|
|
|
db $fe
|
|
|
|
ENDM
|
2013-11-27 05:39:52 -05:00
|
|
|
|
2014-05-05 15:58:43 -04:00
|
|
|
sine_wave: MACRO
|
|
|
|
; \1: amplitude
|
|
|
|
|
|
|
|
x = 0
|
|
|
|
rept $20
|
|
|
|
; Round up.
|
|
|
|
dw (sin(x) + (sin(x) & $ff)) >> 8
|
2014-08-14 23:43:41 -07:00
|
|
|
x = x + (\1) * $40000
|
2014-05-05 15:58:43 -04:00
|
|
|
endr
|
|
|
|
ENDM
|
2015-02-04 01:10:59 -08:00
|
|
|
|
|
|
|
|
|
|
|
bcd: MACRO
|
|
|
|
rept _NARG
|
|
|
|
dn ((\1) % 100) / 10, (\1) % 10
|
|
|
|
shift
|
|
|
|
endr
|
|
|
|
ENDM
|
2015-10-12 12:33:24 -04:00
|
|
|
|
2015-11-03 12:36:33 -05:00
|
|
|
tiles EQUS "* $10"
|
2015-10-14 09:29:15 -04:00
|
|
|
tile EQUS "+ $10 *"
|
2015-11-03 15:05:19 -05:00
|
|
|
|
|
|
|
partymon: MACRO
|
|
|
|
db \1
|
|
|
|
db \2
|
|
|
|
db \3, \4, \5, \6
|
|
|
|
dw \7
|
|
|
|
dt \8
|
|
|
|
rept 8
|
|
|
|
shift
|
|
|
|
endr
|
|
|
|
rept 5
|
|
|
|
bigdw \1
|
|
|
|
shift
|
|
|
|
endr
|
|
|
|
db \1, \2
|
|
|
|
db \3, \4, \5, \6
|
|
|
|
rept 6
|
|
|
|
shift
|
|
|
|
endr
|
|
|
|
db \1
|
|
|
|
db \2, \3, \4
|
|
|
|
db \5
|
|
|
|
db \6, \7
|
|
|
|
rept 7
|
|
|
|
shift
|
|
|
|
endr
|
|
|
|
rept 7
|
|
|
|
bigdw \1
|
|
|
|
shift
|
|
|
|
endr
|
|
|
|
db \1
|
|
|
|
ENDM
|
2015-11-12 11:10:19 -05:00
|
|
|
|
|
|
|
palettes EQUS "* 8"
|
2015-11-18 13:01:55 -05:00
|
|
|
|
|
|
|
ldpixel: MACRO
|
2015-12-11 08:17:38 -05:00
|
|
|
if _NARG >= 5
|
2015-11-18 13:01:55 -05:00
|
|
|
lb \1, \2 * 8 + \4, \3 * 8 + \5
|
|
|
|
else
|
|
|
|
lb \1, \2 * 8, \3 * 8
|
|
|
|
endc
|
2015-12-01 15:35:28 -05:00
|
|
|
endm
|
2015-11-18 13:01:55 -05:00
|
|
|
|
|
|
|
depixel EQUS "ldpixel de,"
|
2015-12-11 16:59:40 -05:00
|
|
|
bcpixel EQUS "ldpixel bc,"
|
2015-11-20 11:47:52 -05:00
|
|
|
|
2015-12-01 15:35:28 -05:00
|
|
|
dbpixel: MACRO
|
2015-12-11 08:17:38 -05:00
|
|
|
if _NARG >= 4
|
2015-12-01 15:35:28 -05:00
|
|
|
db \1 * 8 + \3, \2 * 8 + \4
|
|
|
|
else
|
|
|
|
db \1 * 8, \2 * 8
|
|
|
|
endc
|
|
|
|
endm
|
|
|
|
|
2015-11-20 11:47:52 -05:00
|
|
|
bgcoord: MACRO
|
2015-12-11 08:17:38 -05:00
|
|
|
IF _NARG >= 4
|
2015-11-20 11:47:52 -05:00
|
|
|
ld \1, \3 * $20 + \2 + \4
|
|
|
|
ELSE
|
|
|
|
ld \1, \3 * $20 + \2 + VBGMap0
|
|
|
|
ENDC
|
|
|
|
ENDM
|
|
|
|
|
|
|
|
hlbgcoord EQUS "bgcoord hl,"
|
|
|
|
debgcoord EQUS "bgcoord de,"
|
|
|
|
bcbgcoord EQUS "bgcoord bc,"
|
|
|
|
bgrows EQUS "* $20"
|
2015-11-26 21:05:32 -05:00
|
|
|
|
2016-05-17 08:40:42 -04:00
|
|
|
palred EQUS "$0001 *"
|
2015-11-26 21:05:32 -05:00
|
|
|
palgreen EQUS "$0020 *"
|
2016-05-17 08:40:42 -04:00
|
|
|
palblue EQUS "$0400 *"
|
2015-11-28 15:13:40 -05:00
|
|
|
|
|
|
|
dsprite: MACRO
|
2015-12-10 22:26:31 -05:00
|
|
|
; conditional segment is there because not every instance of
|
|
|
|
; this macro is directly OAM
|
2015-12-11 08:17:38 -05:00
|
|
|
if _NARG >= 7 ; y tile, y pxl, x tile, x pxl, vtile offset, flags, palette
|
2015-12-10 22:26:31 -05:00
|
|
|
db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, (\6 << 3) + (\7 & 7)
|
|
|
|
else
|
2015-12-02 13:24:18 -05:00
|
|
|
db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, \6
|
2015-12-10 22:26:31 -05:00
|
|
|
endc
|
|
|
|
endm
|
|
|
|
|
|
|
|
jumptable: MACRO
|
2015-12-26 21:59:03 -05:00
|
|
|
ld a, [\2]
|
|
|
|
ld e, a
|
|
|
|
ld d, 0
|
|
|
|
ld hl, \1
|
|
|
|
add hl, de
|
|
|
|
add hl, de
|
|
|
|
ld a, [hli]
|
|
|
|
ld h, [hl]
|
|
|
|
ld l, a
|
2017-06-09 22:01:10 +01:00
|
|
|
jp hl
|
2015-11-28 15:13:40 -05:00
|
|
|
endm
|
2016-05-15 21:50:31 -04:00
|
|
|
|
|
|
|
maskbits: macro
|
|
|
|
; returns to x
|
|
|
|
; usage in rejection sampling
|
|
|
|
; .loop
|
|
|
|
; call Random
|
|
|
|
; maskbits 30
|
|
|
|
; and x
|
|
|
|
; cp 30
|
|
|
|
; jr nc, .loop
|
|
|
|
|
|
|
|
x = 1
|
|
|
|
rept 8
|
|
|
|
IF \1 > x
|
|
|
|
x = (x + 1) * 2 +- 1
|
|
|
|
ENDC
|
|
|
|
endr
|
|
|
|
endm
|
|
|
|
|
2016-05-27 10:41:59 -04:00
|
|
|
homecall: MACRO
|
|
|
|
ld a, [hROMBank]
|
|
|
|
push af
|
|
|
|
ld a, BANK(\1)
|
|
|
|
rst Bankswitch
|
|
|
|
|
|
|
|
call \1
|
|
|
|
|
|
|
|
pop af
|
|
|
|
rst Bankswitch
|
|
|
|
ENDM
|
|
|
|
|