shithub: pokecrystal

Download patch

ref: ed0a0f71591dd802d6491d57a52040a360cfb406
parent: b1dbadbdd397cb8c9e85fa48d9184949c921a8f3
author: Rangi <[email protected]>
date: Sun May 30 11:51:49 EDT 2021

Move the dbbw, dbww, and dbwww macros to legacy

--- a/constants/sprite_anim_constants.asm
+++ b/constants/sprite_anim_constants.asm
@@ -28,6 +28,7 @@
 	const SPRITE_ANIM_DICT_GS_SPLASH    ; 6
 	const SPRITE_ANIM_DICT_SLOTS        ; 7
 	const SPRITE_ANIM_DICT_ARROW_CURSOR ; 8
+NUM_SPRITE_ANIM_GFX EQU const_value
 
 ; wSpriteAnimDict size (see wram.asm)
 NUM_SPRITEANIMDICT_ENTRIES EQU 10
--- a/data/battle_anims/oam.asm
+++ b/data/battle_anims/oam.asm
@@ -1,223 +1,228 @@
+battleanimoam: MACRO
+; vtile offset, data length, data pointer
+	db \1, \2
+	dw \3
+ENDM
+
 BattleAnimOAMData:
 ; entries correspond to BATTLEANIMOAMSET_* constants
 	table_width 4, BattleAnimOAMData
-	; vtile offset, data length, data pointer
-	dbbw $00, 16, .OAMData_00 ; BATTLEANIMOAMSET_00
-	dbbw $04,  9, .OAMData_01 ; BATTLEANIMOAMSET_01
-	dbbw $08,  4, .OAMData_02 ; BATTLEANIMOAMSET_02
-	dbbw $09,  4, .OAMData_03 ; BATTLEANIMOAMSET_03
-	dbbw $0d,  4, .OAMData_04 ; BATTLEANIMOAMSET_04
-	dbbw $0f,  4, .OAMData_03 ; BATTLEANIMOAMSET_05
-	dbbw $13,  4, .OAMData_04 ; BATTLEANIMOAMSET_06
-	dbbw $04, 16, .OAMData_00 ; BATTLEANIMOAMSET_07
-	dbbw $08, 16, .OAMData_00 ; BATTLEANIMOAMSET_08
-	dbbw $08, 16, .OAMData_09 ; BATTLEANIMOAMSET_09
-	dbbw $00,  4, .OAMData_04 ; BATTLEANIMOAMSET_0A
-	dbbw $02,  4, .OAMData_03 ; BATTLEANIMOAMSET_0B
-	dbbw $06,  2, .OAMData_0c ; BATTLEANIMOAMSET_0C
-	dbbw $07,  2, .OAMData_0c ; BATTLEANIMOAMSET_0D
-	dbbw $02,  4, .OAMData_04 ; BATTLEANIMOAMSET_0E
-	dbbw $04,  1, .OAMData_0f ; BATTLEANIMOAMSET_0F
-	dbbw $05,  1, .OAMData_0f ; BATTLEANIMOAMSET_10
-	dbbw $00,  2, .OAMData_11 ; BATTLEANIMOAMSET_11
-	dbbw $02,  2, .OAMData_11 ; BATTLEANIMOAMSET_12
-	dbbw $00,  4, .OAMData_13 ; BATTLEANIMOAMSET_13
-	dbbw $00,  1, .OAMData_0f ; BATTLEANIMOAMSET_14
-	dbbw $01,  1, .OAMData_0f ; BATTLEANIMOAMSET_15
-	dbbw $02,  1, .OAMData_0f ; BATTLEANIMOAMSET_16
-	dbbw $03,  1, .OAMData_0f ; BATTLEANIMOAMSET_17
-	dbbw $00,  4, .OAMData_02 ; BATTLEANIMOAMSET_18
-	dbbw $01, 16, .OAMData_00 ; BATTLEANIMOAMSET_19
-	dbbw $05, 16, .OAMData_00 ; BATTLEANIMOAMSET_1A
-	dbbw $00,  4, .OAMData_03 ; BATTLEANIMOAMSET_1B
-	dbbw $05, 12, .OAMData_1c ; BATTLEANIMOAMSET_1C
-	dbbw $02,  4, .OAMData_02 ; BATTLEANIMOAMSET_1D
-	dbbw $06,  1, .OAMData_0f ; BATTLEANIMOAMSET_1E
-	dbbw $07,  1, .OAMData_0f ; BATTLEANIMOAMSET_1F
-	dbbw $08,  1, .OAMData_0f ; BATTLEANIMOAMSET_20
-	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_21
-	dbbw $09, 22, .OAMData_22 ; BATTLEANIMOAMSET_22
-	dbbw $04,  2, .OAMData_11 ; BATTLEANIMOAMSET_23
-	dbbw $06,  2, .OAMData_11 ; BATTLEANIMOAMSET_24
-	dbbw $0c,  1, .OAMData_0f ; BATTLEANIMOAMSET_25
-	dbbw $0a,  1, .OAMData_0f ; BATTLEANIMOAMSET_26
-	dbbw $0b,  4, .OAMData_02 ; BATTLEANIMOAMSET_27
-	dbbw $08,  4, .OAMData_04 ; BATTLEANIMOAMSET_28
-	dbbw $06,  4, .OAMData_04 ; BATTLEANIMOAMSET_29
-	dbbw $00,  5, .OAMData_2a ; BATTLEANIMOAMSET_2A
-	dbbw $03,  6, .OAMData_2b ; BATTLEANIMOAMSET_2B
-	dbbw $00,  7, .OAMData_2c ; BATTLEANIMOAMSET_2C
-	dbbw $03,  8, .OAMData_2d ; BATTLEANIMOAMSET_2D
-	dbbw $00,  9, .OAMData_2e ; BATTLEANIMOAMSET_2E
-	dbbw $00,  4, .OAMData_2f ; BATTLEANIMOAMSET_2F
-	dbbw $02,  4, .OAMData_30 ; BATTLEANIMOAMSET_30
-	dbbw $04,  6, .OAMData_31 ; BATTLEANIMOAMSET_31
-	dbbw $00,  2, .OAMData_32 ; BATTLEANIMOAMSET_32
-	dbbw $00,  7, .OAMData_33 ; BATTLEANIMOAMSET_33
-	dbbw $00, 14, .OAMData_32 ; BATTLEANIMOAMSET_34
-	dbbw $00, 21, .OAMData_33 ; BATTLEANIMOAMSET_35
-	dbbw $00,  2, .OAMData_36 ; BATTLEANIMOAMSET_36
-	dbbw $00,  6, .OAMData_36 ; BATTLEANIMOAMSET_37
-	dbbw $00, 10, .OAMData_36 ; BATTLEANIMOAMSET_38
-	dbbw $00, 14, .OAMData_36 ; BATTLEANIMOAMSET_39
-	dbbw $00,  2, .OAMData_3a ; BATTLEANIMOAMSET_3A
-	dbbw $00,  6, .OAMData_3a ; BATTLEANIMOAMSET_3B
-	dbbw $00, 10, .OAMData_3a ; BATTLEANIMOAMSET_3C
-	dbbw $00, 14, .OAMData_3a ; BATTLEANIMOAMSET_3D
-	dbbw $00,  4, .OAMData_3e ; BATTLEANIMOAMSET_3E
-	dbbw $00, 16, .OAMData_3e ; BATTLEANIMOAMSET_3F
-	dbbw $00, 26, .OAMData_3e ; BATTLEANIMOAMSET_40
-	dbbw $00, 26, .OAMData_41 ; BATTLEANIMOAMSET_41
-	dbbw $0e,  4, .OAMData_42 ; BATTLEANIMOAMSET_42
-	dbbw $0e,  8, .OAMData_42 ; BATTLEANIMOAMSET_43
-	dbbw $0e,  4, .OAMData_44 ; BATTLEANIMOAMSET_44
-	dbbw $0e,  8, .OAMData_44 ; BATTLEANIMOAMSET_45
-	dbbw $0e,  4, .OAMData_46 ; BATTLEANIMOAMSET_46
-	dbbw $0e,  4, .OAMData_47 ; BATTLEANIMOAMSET_47
-	dbbw $00,  6, .OAMData_48 ; BATTLEANIMOAMSET_48
-	dbbw $03,  4, .OAMData_49 ; BATTLEANIMOAMSET_49
-	dbbw $03,  2, .OAMData_4a ; BATTLEANIMOAMSET_4A
-	dbbw $01,  5, .OAMData_0f ; BATTLEANIMOAMSET_4B
-	dbbw $01,  6, .OAMData_4c ; BATTLEANIMOAMSET_4C
-	dbbw $01,  7, .OAMData_4d ; BATTLEANIMOAMSET_4D
-	dbbw $01,  3, .OAMData_4d ; BATTLEANIMOAMSET_4E
-	dbbw $01,  8, .OAMData_4f ; BATTLEANIMOAMSET_4F
-	dbbw $01,  9, .OAMData_50 ; BATTLEANIMOAMSET_50
-	dbbw $01, 10, .OAMData_51 ; BATTLEANIMOAMSET_51
-	dbbw $01,  6, .OAMData_51 ; BATTLEANIMOAMSET_52
-	dbbw $00,  9, .OAMData_01 ; BATTLEANIMOAMSET_53
-	dbbw $04,  4, .OAMData_02 ; BATTLEANIMOAMSET_54
-	dbbw $05,  4, .OAMData_02 ; BATTLEANIMOAMSET_55
-	dbbw $00,  2, .OAMData_56 ; BATTLEANIMOAMSET_56
-	dbbw $02,  2, .OAMData_56 ; BATTLEANIMOAMSET_57
-	dbbw $04,  2, .OAMData_56 ; BATTLEANIMOAMSET_58
-	dbbw $02,  4, .OAMData_59 ; BATTLEANIMOAMSET_59
-	dbbw $02,  4, .OAMData_5a ; BATTLEANIMOAMSET_5A
-	dbbw $02,  2, .OAMData_0c ; BATTLEANIMOAMSET_5B
-	dbbw $04,  2, .OAMData_0c ; BATTLEANIMOAMSET_5C
-	dbbw $06,  4, .OAMData_5d ; BATTLEANIMOAMSET_5D
-	dbbw $08,  2, .OAMData_0c ; BATTLEANIMOAMSET_5E
-	dbbw $09,  2, .OAMData_0c ; BATTLEANIMOAMSET_5F
-	dbbw $05,  2, .OAMData_60 ; BATTLEANIMOAMSET_60
-	dbbw $00,  2, .OAMData_61 ; BATTLEANIMOAMSET_61
-	dbbw $00,  5, .OAMData_61 ; BATTLEANIMOAMSET_62
-	dbbw $00,  9, .OAMData_61 ; BATTLEANIMOAMSET_63
-	dbbw $09,  9, .OAMData_61 ; BATTLEANIMOAMSET_64
-	dbbw $00,  4, .OAMData_65 ; BATTLEANIMOAMSET_65
-	dbbw $00,  7, .OAMData_65 ; BATTLEANIMOAMSET_66
-	dbbw $00,  9, .OAMData_65 ; BATTLEANIMOAMSET_67
-	dbbw $09,  9, .OAMData_65 ; BATTLEANIMOAMSET_68
-	dbbw $04,  1, .OAMData_69 ; BATTLEANIMOAMSET_69
-	dbbw $05,  2, .OAMData_6a ; BATTLEANIMOAMSET_6A
-	dbbw $06,  4, .OAMData_03 ; BATTLEANIMOAMSET_6B
-	dbbw $0a,  4, .OAMData_03 ; BATTLEANIMOAMSET_6C
-	dbbw $0e,  4, .OAMData_03 ; BATTLEANIMOAMSET_6D
-	dbbw $08,  5, .OAMData_6e ; BATTLEANIMOAMSET_6E
-	dbbw $0d,  3, .OAMData_6f ; BATTLEANIMOAMSET_6F
-	dbbw $01,  8, .OAMData_70 ; BATTLEANIMOAMSET_70
-	dbbw $03,  8, .OAMData_70 ; BATTLEANIMOAMSET_71
-	dbbw $05,  8, .OAMData_70 ; BATTLEANIMOAMSET_72
-	dbbw $07,  8, .OAMData_70 ; BATTLEANIMOAMSET_73
-	dbbw $06,  4, .OAMData_02 ; BATTLEANIMOAMSET_74
-	dbbw $07,  4, .OAMData_02 ; BATTLEANIMOAMSET_75
-	dbbw $0a,  2, .OAMData_76 ; BATTLEANIMOAMSET_76
-	dbbw $00,  1, .OAMData_77 ; BATTLEANIMOAMSET_77
-	dbbw $00,  3, .OAMData_78 ; BATTLEANIMOAMSET_78
-	dbbw $00,  6, .OAMData_79 ; BATTLEANIMOAMSET_79
-	dbbw $00,  9, .OAMData_7a ; BATTLEANIMOAMSET_7A
-	dbbw $00, 12, .OAMData_7b ; BATTLEANIMOAMSET_7B
-	dbbw $00, 14, .OAMData_7c ; BATTLEANIMOAMSET_7C
-	dbbw $00, 15, .OAMData_7d ; BATTLEANIMOAMSET_7D
-	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_7E
-	dbbw $08,  4, .OAMData_03 ; BATTLEANIMOAMSET_7F
-	dbbw $0d,  1, .OAMData_0f ; BATTLEANIMOAMSET_80
-	dbbw $0e,  4, .OAMData_81 ; BATTLEANIMOAMSET_81
-	dbbw $10,  1, .OAMData_0f ; BATTLEANIMOAMSET_82
-	dbbw $11,  1, .OAMData_0f ; BATTLEANIMOAMSET_83
-	dbbw $04,  2, .OAMData_6a ; BATTLEANIMOAMSET_84
-	dbbw $05,  2, .OAMData_6a ; BATTLEANIMOAMSET_85
-	dbbw $0a,  4, .OAMData_04 ; BATTLEANIMOAMSET_86
-	dbbw $00,  8, .OAMData_87 ; BATTLEANIMOAMSET_87
-	dbbw $00, 12, .OAMData_88 ; BATTLEANIMOAMSET_88
-	dbbw $00, 16, .OAMData_87 ; BATTLEANIMOAMSET_89
-	dbbw $09,  2, .OAMData_8a ; BATTLEANIMOAMSET_8A
-	dbbw $09,  4, .OAMData_8a ; BATTLEANIMOAMSET_8B
-	dbbw $09,  6, .OAMData_8a ; BATTLEANIMOAMSET_8C
-	dbbw $09,  8, .OAMData_8a ; BATTLEANIMOAMSET_8D
-	dbbw $12,  5, .OAMData_8e ; BATTLEANIMOAMSET_8E
-	dbbw $00,  4, .OAMData_8f ; BATTLEANIMOAMSET_8F
-	dbbw $04,  4, .OAMData_8f ; BATTLEANIMOAMSET_90
-	dbbw $08,  4, .OAMData_8f ; BATTLEANIMOAMSET_91
-	dbbw $0c,  4, .OAMData_8f ; BATTLEANIMOAMSET_92
-	dbbw $00,  6, .OAMData_93 ; BATTLEANIMOAMSET_93
-	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_94
-	dbbw $0a,  4, .OAMData_04 ; BATTLEANIMOAMSET_95
-	dbbw $15,  4, .OAMData_30 ; BATTLEANIMOAMSET_96
-	dbbw $04,  4, .OAMData_30 ; BATTLEANIMOAMSET_97
-	dbbw $0c,  4, .OAMData_04 ; BATTLEANIMOAMSET_98
-	dbbw $0a,  4, .OAMData_99 ; BATTLEANIMOAMSET_99
-	dbbw $0c,  4, .OAMData_03 ; BATTLEANIMOAMSET_9A
-	dbbw $00, 36, .OAMData_9b ; BATTLEANIMOAMSET_9B
-	dbbw $0d,  2, .OAMData_9c ; BATTLEANIMOAMSET_9C
-	dbbw $0d,  4, .OAMData_9c ; BATTLEANIMOAMSET_9D
-	dbbw $0d,  6, .OAMData_9c ; BATTLEANIMOAMSET_9E
-	dbbw $02,  8, .OAMData_9f ; BATTLEANIMOAMSET_9F
-	dbbw $08,  7, .OAMData_a0 ; BATTLEANIMOAMSET_A0
-	dbbw $08,  5, .OAMData_a0 ; BATTLEANIMOAMSET_A1
-	dbbw $08,  3, .OAMData_a0 ; BATTLEANIMOAMSET_A2
-	dbbw $00, 16, .OAMData_1c ; BATTLEANIMOAMSET_A3
-	dbbw $00,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A4
-	dbbw $06,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A5
-	dbbw $0c,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A6
-	dbbw $12,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A7
-	dbbw $18,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A8
-	dbbw $1e,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A9
-	dbbw $24,  9, .OAMData_a4 ; BATTLEANIMOAMSET_AA
-	dbbw $2a,  9, .OAMData_a4 ; BATTLEANIMOAMSET_AB
-	dbbw $03,  4, .OAMData_ac ; BATTLEANIMOAMSET_AC
-	dbbw $12,  4, .OAMData_03 ; BATTLEANIMOAMSET_AD
-	dbbw $10,  4, .OAMData_04 ; BATTLEANIMOAMSET_AE
-	dbbw $16,  1, .OAMData_0f ; BATTLEANIMOAMSET_AF
-	dbbw $17,  4, .OAMData_02 ; BATTLEANIMOAMSET_B0
-	dbbw $18,  4, .OAMData_03 ; BATTLEANIMOAMSET_B1
-	dbbw $1c,  4, .OAMData_03 ; BATTLEANIMOAMSET_B2
-	dbbw $20,  3, .OAMData_03 ; BATTLEANIMOAMSET_B3
-	dbbw $23,  4, .OAMData_04 ; BATTLEANIMOAMSET_B4
-	dbbw $25,  3, .OAMData_03 ; BATTLEANIMOAMSET_B5
-	dbbw $17,  4, .OAMData_03 ; BATTLEANIMOAMSET_B6
-	dbbw $0a, 16, .OAMData_00 ; BATTLEANIMOAMSET_B7
-	dbbw $10, 16, .OAMData_1c ; BATTLEANIMOAMSET_B8
-	dbbw $00, 16, .OAMData_1c ; BATTLEANIMOAMSET_B9
-	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_BA
-	dbbw $08,  2, .OAMData_11 ; BATTLEANIMOAMSET_BB
-	dbbw $20,  6, .OAMData_bc ; BATTLEANIMOAMSET_BC
-	dbbw $08,  1, .OAMData_0f ; BATTLEANIMOAMSET_BD
-	dbbw $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_BE
-	dbbw $1a,  4, .OAMData_30 ; BATTLEANIMOAMSET_BF
-	dbbw $16,  9, .OAMData_01 ; BATTLEANIMOAMSET_C0
-	dbbw $10, 16, .OAMData_c1 ; BATTLEANIMOAMSET_C1
-	dbbw $09,  6, .OAMData_c2 ; BATTLEANIMOAMSET_C2
-	dbbw $11,  9, .OAMData_c3 ; BATTLEANIMOAMSET_C3
-	dbbw $0e,  4, .OAMData_03 ; BATTLEANIMOAMSET_C4
-	dbbw $0b,  4, .OAMData_30 ; BATTLEANIMOAMSET_C5
-	dbbw $1c,  6, .OAMData_02 ; BATTLEANIMOAMSET_C6
-	dbbw $20, 16, .OAMData_c1 ; BATTLEANIMOAMSET_C7
-	dbbw $05,  6, .OAMData_c8 ; BATTLEANIMOAMSET_C8
-	dbbw $0b,  4, .OAMData_03 ; BATTLEANIMOAMSET_C9
-	dbbw $09,  4, .OAMData_ca ; BATTLEANIMOAMSET_CA
-	dbbw $0b,  4, .OAMData_04 ; BATTLEANIMOAMSET_CB
-	dbbw $11, 13, .OAMData_cc ; BATTLEANIMOAMSET_CC
-	dbbw $00,  9, .OAMData_c3 ; BATTLEANIMOAMSET_CD
-	dbbw $09,  9, .OAMData_c3 ; BATTLEANIMOAMSET_CE
-	dbbw $00, 12, .OAMData_cf ; BATTLEANIMOAMSET_CF
-	dbbw $06, 12, .OAMData_cf ; BATTLEANIMOAMSET_D0
-	dbbw $0c, 12, .OAMData_cf ; BATTLEANIMOAMSET_D1
-	dbbw $12, 12, .OAMData_cf ; BATTLEANIMOAMSET_D2
-	dbbw $00, 13, .OAMData_cc ; BATTLEANIMOAMSET_D3
-	dbbw $00,  7, .OAMData_d4 ; BATTLEANIMOAMSET_D4
-	dbbw $00,  6, .OAMData_d5 ; BATTLEANIMOAMSET_D5
-	dbbw $00, 14, .OAMData_d6 ; BATTLEANIMOAMSET_D6
-	dbbw $00, 12, .OAMData_d7 ; BATTLEANIMOAMSET_D7
+	battleanimoam $00, 16, .OAMData_00 ; BATTLEANIMOAMSET_00
+	battleanimoam $04,  9, .OAMData_01 ; BATTLEANIMOAMSET_01
+	battleanimoam $08,  4, .OAMData_02 ; BATTLEANIMOAMSET_02
+	battleanimoam $09,  4, .OAMData_03 ; BATTLEANIMOAMSET_03
+	battleanimoam $0d,  4, .OAMData_04 ; BATTLEANIMOAMSET_04
+	battleanimoam $0f,  4, .OAMData_03 ; BATTLEANIMOAMSET_05
+	battleanimoam $13,  4, .OAMData_04 ; BATTLEANIMOAMSET_06
+	battleanimoam $04, 16, .OAMData_00 ; BATTLEANIMOAMSET_07
+	battleanimoam $08, 16, .OAMData_00 ; BATTLEANIMOAMSET_08
+	battleanimoam $08, 16, .OAMData_09 ; BATTLEANIMOAMSET_09
+	battleanimoam $00,  4, .OAMData_04 ; BATTLEANIMOAMSET_0A
+	battleanimoam $02,  4, .OAMData_03 ; BATTLEANIMOAMSET_0B
+	battleanimoam $06,  2, .OAMData_0c ; BATTLEANIMOAMSET_0C
+	battleanimoam $07,  2, .OAMData_0c ; BATTLEANIMOAMSET_0D
+	battleanimoam $02,  4, .OAMData_04 ; BATTLEANIMOAMSET_0E
+	battleanimoam $04,  1, .OAMData_0f ; BATTLEANIMOAMSET_0F
+	battleanimoam $05,  1, .OAMData_0f ; BATTLEANIMOAMSET_10
+	battleanimoam $00,  2, .OAMData_11 ; BATTLEANIMOAMSET_11
+	battleanimoam $02,  2, .OAMData_11 ; BATTLEANIMOAMSET_12
+	battleanimoam $00,  4, .OAMData_13 ; BATTLEANIMOAMSET_13
+	battleanimoam $00,  1, .OAMData_0f ; BATTLEANIMOAMSET_14
+	battleanimoam $01,  1, .OAMData_0f ; BATTLEANIMOAMSET_15
+	battleanimoam $02,  1, .OAMData_0f ; BATTLEANIMOAMSET_16
+	battleanimoam $03,  1, .OAMData_0f ; BATTLEANIMOAMSET_17
+	battleanimoam $00,  4, .OAMData_02 ; BATTLEANIMOAMSET_18
+	battleanimoam $01, 16, .OAMData_00 ; BATTLEANIMOAMSET_19
+	battleanimoam $05, 16, .OAMData_00 ; BATTLEANIMOAMSET_1A
+	battleanimoam $00,  4, .OAMData_03 ; BATTLEANIMOAMSET_1B
+	battleanimoam $05, 12, .OAMData_1c ; BATTLEANIMOAMSET_1C
+	battleanimoam $02,  4, .OAMData_02 ; BATTLEANIMOAMSET_1D
+	battleanimoam $06,  1, .OAMData_0f ; BATTLEANIMOAMSET_1E
+	battleanimoam $07,  1, .OAMData_0f ; BATTLEANIMOAMSET_1F
+	battleanimoam $08,  1, .OAMData_0f ; BATTLEANIMOAMSET_20
+	battleanimoam $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_21
+	battleanimoam $09, 22, .OAMData_22 ; BATTLEANIMOAMSET_22
+	battleanimoam $04,  2, .OAMData_11 ; BATTLEANIMOAMSET_23
+	battleanimoam $06,  2, .OAMData_11 ; BATTLEANIMOAMSET_24
+	battleanimoam $0c,  1, .OAMData_0f ; BATTLEANIMOAMSET_25
+	battleanimoam $0a,  1, .OAMData_0f ; BATTLEANIMOAMSET_26
+	battleanimoam $0b,  4, .OAMData_02 ; BATTLEANIMOAMSET_27
+	battleanimoam $08,  4, .OAMData_04 ; BATTLEANIMOAMSET_28
+	battleanimoam $06,  4, .OAMData_04 ; BATTLEANIMOAMSET_29
+	battleanimoam $00,  5, .OAMData_2a ; BATTLEANIMOAMSET_2A
+	battleanimoam $03,  6, .OAMData_2b ; BATTLEANIMOAMSET_2B
+	battleanimoam $00,  7, .OAMData_2c ; BATTLEANIMOAMSET_2C
+	battleanimoam $03,  8, .OAMData_2d ; BATTLEANIMOAMSET_2D
+	battleanimoam $00,  9, .OAMData_2e ; BATTLEANIMOAMSET_2E
+	battleanimoam $00,  4, .OAMData_2f ; BATTLEANIMOAMSET_2F
+	battleanimoam $02,  4, .OAMData_30 ; BATTLEANIMOAMSET_30
+	battleanimoam $04,  6, .OAMData_31 ; BATTLEANIMOAMSET_31
+	battleanimoam $00,  2, .OAMData_32 ; BATTLEANIMOAMSET_32
+	battleanimoam $00,  7, .OAMData_33 ; BATTLEANIMOAMSET_33
+	battleanimoam $00, 14, .OAMData_32 ; BATTLEANIMOAMSET_34
+	battleanimoam $00, 21, .OAMData_33 ; BATTLEANIMOAMSET_35
+	battleanimoam $00,  2, .OAMData_36 ; BATTLEANIMOAMSET_36
+	battleanimoam $00,  6, .OAMData_36 ; BATTLEANIMOAMSET_37
+	battleanimoam $00, 10, .OAMData_36 ; BATTLEANIMOAMSET_38
+	battleanimoam $00, 14, .OAMData_36 ; BATTLEANIMOAMSET_39
+	battleanimoam $00,  2, .OAMData_3a ; BATTLEANIMOAMSET_3A
+	battleanimoam $00,  6, .OAMData_3a ; BATTLEANIMOAMSET_3B
+	battleanimoam $00, 10, .OAMData_3a ; BATTLEANIMOAMSET_3C
+	battleanimoam $00, 14, .OAMData_3a ; BATTLEANIMOAMSET_3D
+	battleanimoam $00,  4, .OAMData_3e ; BATTLEANIMOAMSET_3E
+	battleanimoam $00, 16, .OAMData_3e ; BATTLEANIMOAMSET_3F
+	battleanimoam $00, 26, .OAMData_3e ; BATTLEANIMOAMSET_40
+	battleanimoam $00, 26, .OAMData_41 ; BATTLEANIMOAMSET_41
+	battleanimoam $0e,  4, .OAMData_42 ; BATTLEANIMOAMSET_42
+	battleanimoam $0e,  8, .OAMData_42 ; BATTLEANIMOAMSET_43
+	battleanimoam $0e,  4, .OAMData_44 ; BATTLEANIMOAMSET_44
+	battleanimoam $0e,  8, .OAMData_44 ; BATTLEANIMOAMSET_45
+	battleanimoam $0e,  4, .OAMData_46 ; BATTLEANIMOAMSET_46
+	battleanimoam $0e,  4, .OAMData_47 ; BATTLEANIMOAMSET_47
+	battleanimoam $00,  6, .OAMData_48 ; BATTLEANIMOAMSET_48
+	battleanimoam $03,  4, .OAMData_49 ; BATTLEANIMOAMSET_49
+	battleanimoam $03,  2, .OAMData_4a ; BATTLEANIMOAMSET_4A
+	battleanimoam $01,  5, .OAMData_0f ; BATTLEANIMOAMSET_4B
+	battleanimoam $01,  6, .OAMData_4c ; BATTLEANIMOAMSET_4C
+	battleanimoam $01,  7, .OAMData_4d ; BATTLEANIMOAMSET_4D
+	battleanimoam $01,  3, .OAMData_4d ; BATTLEANIMOAMSET_4E
+	battleanimoam $01,  8, .OAMData_4f ; BATTLEANIMOAMSET_4F
+	battleanimoam $01,  9, .OAMData_50 ; BATTLEANIMOAMSET_50
+	battleanimoam $01, 10, .OAMData_51 ; BATTLEANIMOAMSET_51
+	battleanimoam $01,  6, .OAMData_51 ; BATTLEANIMOAMSET_52
+	battleanimoam $00,  9, .OAMData_01 ; BATTLEANIMOAMSET_53
+	battleanimoam $04,  4, .OAMData_02 ; BATTLEANIMOAMSET_54
+	battleanimoam $05,  4, .OAMData_02 ; BATTLEANIMOAMSET_55
+	battleanimoam $00,  2, .OAMData_56 ; BATTLEANIMOAMSET_56
+	battleanimoam $02,  2, .OAMData_56 ; BATTLEANIMOAMSET_57
+	battleanimoam $04,  2, .OAMData_56 ; BATTLEANIMOAMSET_58
+	battleanimoam $02,  4, .OAMData_59 ; BATTLEANIMOAMSET_59
+	battleanimoam $02,  4, .OAMData_5a ; BATTLEANIMOAMSET_5A
+	battleanimoam $02,  2, .OAMData_0c ; BATTLEANIMOAMSET_5B
+	battleanimoam $04,  2, .OAMData_0c ; BATTLEANIMOAMSET_5C
+	battleanimoam $06,  4, .OAMData_5d ; BATTLEANIMOAMSET_5D
+	battleanimoam $08,  2, .OAMData_0c ; BATTLEANIMOAMSET_5E
+	battleanimoam $09,  2, .OAMData_0c ; BATTLEANIMOAMSET_5F
+	battleanimoam $05,  2, .OAMData_60 ; BATTLEANIMOAMSET_60
+	battleanimoam $00,  2, .OAMData_61 ; BATTLEANIMOAMSET_61
+	battleanimoam $00,  5, .OAMData_61 ; BATTLEANIMOAMSET_62
+	battleanimoam $00,  9, .OAMData_61 ; BATTLEANIMOAMSET_63
+	battleanimoam $09,  9, .OAMData_61 ; BATTLEANIMOAMSET_64
+	battleanimoam $00,  4, .OAMData_65 ; BATTLEANIMOAMSET_65
+	battleanimoam $00,  7, .OAMData_65 ; BATTLEANIMOAMSET_66
+	battleanimoam $00,  9, .OAMData_65 ; BATTLEANIMOAMSET_67
+	battleanimoam $09,  9, .OAMData_65 ; BATTLEANIMOAMSET_68
+	battleanimoam $04,  1, .OAMData_69 ; BATTLEANIMOAMSET_69
+	battleanimoam $05,  2, .OAMData_6a ; BATTLEANIMOAMSET_6A
+	battleanimoam $06,  4, .OAMData_03 ; BATTLEANIMOAMSET_6B
+	battleanimoam $0a,  4, .OAMData_03 ; BATTLEANIMOAMSET_6C
+	battleanimoam $0e,  4, .OAMData_03 ; BATTLEANIMOAMSET_6D
+	battleanimoam $08,  5, .OAMData_6e ; BATTLEANIMOAMSET_6E
+	battleanimoam $0d,  3, .OAMData_6f ; BATTLEANIMOAMSET_6F
+	battleanimoam $01,  8, .OAMData_70 ; BATTLEANIMOAMSET_70
+	battleanimoam $03,  8, .OAMData_70 ; BATTLEANIMOAMSET_71
+	battleanimoam $05,  8, .OAMData_70 ; BATTLEANIMOAMSET_72
+	battleanimoam $07,  8, .OAMData_70 ; BATTLEANIMOAMSET_73
+	battleanimoam $06,  4, .OAMData_02 ; BATTLEANIMOAMSET_74
+	battleanimoam $07,  4, .OAMData_02 ; BATTLEANIMOAMSET_75
+	battleanimoam $0a,  2, .OAMData_76 ; BATTLEANIMOAMSET_76
+	battleanimoam $00,  1, .OAMData_77 ; BATTLEANIMOAMSET_77
+	battleanimoam $00,  3, .OAMData_78 ; BATTLEANIMOAMSET_78
+	battleanimoam $00,  6, .OAMData_79 ; BATTLEANIMOAMSET_79
+	battleanimoam $00,  9, .OAMData_7a ; BATTLEANIMOAMSET_7A
+	battleanimoam $00, 12, .OAMData_7b ; BATTLEANIMOAMSET_7B
+	battleanimoam $00, 14, .OAMData_7c ; BATTLEANIMOAMSET_7C
+	battleanimoam $00, 15, .OAMData_7d ; BATTLEANIMOAMSET_7D
+	battleanimoam $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_7E
+	battleanimoam $08,  4, .OAMData_03 ; BATTLEANIMOAMSET_7F
+	battleanimoam $0d,  1, .OAMData_0f ; BATTLEANIMOAMSET_80
+	battleanimoam $0e,  4, .OAMData_81 ; BATTLEANIMOAMSET_81
+	battleanimoam $10,  1, .OAMData_0f ; BATTLEANIMOAMSET_82
+	battleanimoam $11,  1, .OAMData_0f ; BATTLEANIMOAMSET_83
+	battleanimoam $04,  2, .OAMData_6a ; BATTLEANIMOAMSET_84
+	battleanimoam $05,  2, .OAMData_6a ; BATTLEANIMOAMSET_85
+	battleanimoam $0a,  4, .OAMData_04 ; BATTLEANIMOAMSET_86
+	battleanimoam $00,  8, .OAMData_87 ; BATTLEANIMOAMSET_87
+	battleanimoam $00, 12, .OAMData_88 ; BATTLEANIMOAMSET_88
+	battleanimoam $00, 16, .OAMData_87 ; BATTLEANIMOAMSET_89
+	battleanimoam $09,  2, .OAMData_8a ; BATTLEANIMOAMSET_8A
+	battleanimoam $09,  4, .OAMData_8a ; BATTLEANIMOAMSET_8B
+	battleanimoam $09,  6, .OAMData_8a ; BATTLEANIMOAMSET_8C
+	battleanimoam $09,  8, .OAMData_8a ; BATTLEANIMOAMSET_8D
+	battleanimoam $12,  5, .OAMData_8e ; BATTLEANIMOAMSET_8E
+	battleanimoam $00,  4, .OAMData_8f ; BATTLEANIMOAMSET_8F
+	battleanimoam $04,  4, .OAMData_8f ; BATTLEANIMOAMSET_90
+	battleanimoam $08,  4, .OAMData_8f ; BATTLEANIMOAMSET_91
+	battleanimoam $0c,  4, .OAMData_8f ; BATTLEANIMOAMSET_92
+	battleanimoam $00,  6, .OAMData_93 ; BATTLEANIMOAMSET_93
+	battleanimoam $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_94
+	battleanimoam $0a,  4, .OAMData_04 ; BATTLEANIMOAMSET_95
+	battleanimoam $15,  4, .OAMData_30 ; BATTLEANIMOAMSET_96
+	battleanimoam $04,  4, .OAMData_30 ; BATTLEANIMOAMSET_97
+	battleanimoam $0c,  4, .OAMData_04 ; BATTLEANIMOAMSET_98
+	battleanimoam $0a,  4, .OAMData_99 ; BATTLEANIMOAMSET_99
+	battleanimoam $0c,  4, .OAMData_03 ; BATTLEANIMOAMSET_9A
+	battleanimoam $00, 36, .OAMData_9b ; BATTLEANIMOAMSET_9B
+	battleanimoam $0d,  2, .OAMData_9c ; BATTLEANIMOAMSET_9C
+	battleanimoam $0d,  4, .OAMData_9c ; BATTLEANIMOAMSET_9D
+	battleanimoam $0d,  6, .OAMData_9c ; BATTLEANIMOAMSET_9E
+	battleanimoam $02,  8, .OAMData_9f ; BATTLEANIMOAMSET_9F
+	battleanimoam $08,  7, .OAMData_a0 ; BATTLEANIMOAMSET_A0
+	battleanimoam $08,  5, .OAMData_a0 ; BATTLEANIMOAMSET_A1
+	battleanimoam $08,  3, .OAMData_a0 ; BATTLEANIMOAMSET_A2
+	battleanimoam $00, 16, .OAMData_1c ; BATTLEANIMOAMSET_A3
+	battleanimoam $00,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A4
+	battleanimoam $06,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A5
+	battleanimoam $0c,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A6
+	battleanimoam $12,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A7
+	battleanimoam $18,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A8
+	battleanimoam $1e,  9, .OAMData_a4 ; BATTLEANIMOAMSET_A9
+	battleanimoam $24,  9, .OAMData_a4 ; BATTLEANIMOAMSET_AA
+	battleanimoam $2a,  9, .OAMData_a4 ; BATTLEANIMOAMSET_AB
+	battleanimoam $03,  4, .OAMData_ac ; BATTLEANIMOAMSET_AC
+	battleanimoam $12,  4, .OAMData_03 ; BATTLEANIMOAMSET_AD
+	battleanimoam $10,  4, .OAMData_04 ; BATTLEANIMOAMSET_AE
+	battleanimoam $16,  1, .OAMData_0f ; BATTLEANIMOAMSET_AF
+	battleanimoam $17,  4, .OAMData_02 ; BATTLEANIMOAMSET_B0
+	battleanimoam $18,  4, .OAMData_03 ; BATTLEANIMOAMSET_B1
+	battleanimoam $1c,  4, .OAMData_03 ; BATTLEANIMOAMSET_B2
+	battleanimoam $20,  3, .OAMData_03 ; BATTLEANIMOAMSET_B3
+	battleanimoam $23,  4, .OAMData_04 ; BATTLEANIMOAMSET_B4
+	battleanimoam $25,  3, .OAMData_03 ; BATTLEANIMOAMSET_B5
+	battleanimoam $17,  4, .OAMData_03 ; BATTLEANIMOAMSET_B6
+	battleanimoam $0a, 16, .OAMData_00 ; BATTLEANIMOAMSET_B7
+	battleanimoam $10, 16, .OAMData_1c ; BATTLEANIMOAMSET_B8
+	battleanimoam $00, 16, .OAMData_1c ; BATTLEANIMOAMSET_B9
+	battleanimoam $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_BA
+	battleanimoam $08,  2, .OAMData_11 ; BATTLEANIMOAMSET_BB
+	battleanimoam $20,  6, .OAMData_bc ; BATTLEANIMOAMSET_BC
+	battleanimoam $08,  1, .OAMData_0f ; BATTLEANIMOAMSET_BD
+	battleanimoam $04,  4, .OAMData_03 ; BATTLEANIMOAMSET_BE
+	battleanimoam $1a,  4, .OAMData_30 ; BATTLEANIMOAMSET_BF
+	battleanimoam $16,  9, .OAMData_01 ; BATTLEANIMOAMSET_C0
+	battleanimoam $10, 16, .OAMData_c1 ; BATTLEANIMOAMSET_C1
+	battleanimoam $09,  6, .OAMData_c2 ; BATTLEANIMOAMSET_C2
+	battleanimoam $11,  9, .OAMData_c3 ; BATTLEANIMOAMSET_C3
+	battleanimoam $0e,  4, .OAMData_03 ; BATTLEANIMOAMSET_C4
+	battleanimoam $0b,  4, .OAMData_30 ; BATTLEANIMOAMSET_C5
+	battleanimoam $1c,  6, .OAMData_02 ; BATTLEANIMOAMSET_C6
+	battleanimoam $20, 16, .OAMData_c1 ; BATTLEANIMOAMSET_C7
+	battleanimoam $05,  6, .OAMData_c8 ; BATTLEANIMOAMSET_C8
+	battleanimoam $0b,  4, .OAMData_03 ; BATTLEANIMOAMSET_C9
+	battleanimoam $09,  4, .OAMData_ca ; BATTLEANIMOAMSET_CA
+	battleanimoam $0b,  4, .OAMData_04 ; BATTLEANIMOAMSET_CB
+	battleanimoam $11, 13, .OAMData_cc ; BATTLEANIMOAMSET_CC
+	battleanimoam $00,  9, .OAMData_c3 ; BATTLEANIMOAMSET_CD
+	battleanimoam $09,  9, .OAMData_c3 ; BATTLEANIMOAMSET_CE
+	battleanimoam $00, 12, .OAMData_cf ; BATTLEANIMOAMSET_CF
+	battleanimoam $06, 12, .OAMData_cf ; BATTLEANIMOAMSET_D0
+	battleanimoam $0c, 12, .OAMData_cf ; BATTLEANIMOAMSET_D1
+	battleanimoam $12, 12, .OAMData_cf ; BATTLEANIMOAMSET_D2
+	battleanimoam $00, 13, .OAMData_cc ; BATTLEANIMOAMSET_D3
+	battleanimoam $00,  7, .OAMData_d4 ; BATTLEANIMOAMSET_D4
+	battleanimoam $00,  6, .OAMData_d5 ; BATTLEANIMOAMSET_D5
+	battleanimoam $00, 14, .OAMData_d6 ; BATTLEANIMOAMSET_D6
+	battleanimoam $00, 12, .OAMData_d7 ; BATTLEANIMOAMSET_D7
 	assert_table_length NUM_BATTLEANIMOAMSETS
 
 .OAMData_11:
--- a/data/events/pokedex_ratings.asm
+++ b/data/events/pokedex_ratings.asm
@@ -1,6 +1,7 @@
 rating: MACRO
 ; count, sfx, text
-	dbww \1, \2, \3
+	db \1
+	dw \2, \3
 ENDM
 
 OakRatings:
--- a/data/maps/landmarks.asm
+++ b/data/maps/landmarks.asm
@@ -7,7 +7,7 @@
 Landmarks:
 ; entries correspond to constants/landmark_constants.asm
 	table_width 4, Landmarks
-	dbbw       0,   0, SpecialMapName
+	landmark  -8, -16, SpecialMapName
 	landmark 140, 100, NewBarkTownName
 	landmark 128, 100, Route29Name
 	landmark 100, 100, CherrygroveCityName
--- a/data/sprite_anims/unused_gfx.asm
+++ b/data/sprite_anims/unused_gfx.asm
@@ -1,15 +1,23 @@
+sprite_anim_obj_gfx: MACRO
+; # tiles, gfx pointer
+	db \1
+	dbw \2, \3
+ENDM
+
 UnusedSpriteAnimGFX:
 ; entries correspond to SPRITE_ANIM_DICT_* constants
+	table_width 4, UnusedSpriteAnimGFX
 	; # tiles, gfx bank, gfx pointer
 	; (all pointers were dummied out to .DeletedGFX)
-	dbbw 128, $01, .DeletedGFX ; SPRITE_ANIM_DICT_DEFAULT
-	dbbw 128, $01, .DeletedGFX ; unused
-	dbbw 128, $01, .DeletedGFX ; unused
-	dbbw 128, $01, .DeletedGFX ; unused
-	dbbw  16, $37, .DeletedGFX ; unused
-	dbbw  16, $11, .DeletedGFX ; SPRITE_ANIM_DICT_TEXT_CURSOR
-	dbbw  16, $39, .DeletedGFX ; SPRITE_ANIM_DICT_GS_SPLASH (the bank includes engine/movie/splash.asm)
-	dbbw  16, $24, .DeletedGFX ; SPRITE_ANIM_DICT_SLOTS (the bank includes engine/games/slot_machine.asm)
-	dbbw  16, $21, .DeletedGFX ; SPRITE_ANIM_DICT_ARROW_CURSOR
+	sprite_anim_obj_gfx 128, $01, .DeletedGFX ; SPRITE_ANIM_DICT_DEFAULT
+	sprite_anim_obj_gfx 128, $01, .DeletedGFX ; unused
+	sprite_anim_obj_gfx 128, $01, .DeletedGFX ; unused
+	sprite_anim_obj_gfx 128, $01, .DeletedGFX ; unused
+	sprite_anim_obj_gfx  16, $37, .DeletedGFX ; unused
+	sprite_anim_obj_gfx  16, $11, .DeletedGFX ; SPRITE_ANIM_DICT_TEXT_CURSOR
+	sprite_anim_obj_gfx  16, $39, .DeletedGFX ; SPRITE_ANIM_DICT_GS_SPLASH (the bank includes engine/movie/splash.asm)
+	sprite_anim_obj_gfx  16, $24, .DeletedGFX ; SPRITE_ANIM_DICT_SLOTS (the bank includes engine/games/slot_machine.asm)
+	sprite_anim_obj_gfx  16, $21, .DeletedGFX ; SPRITE_ANIM_DICT_ARROW_CURSOR
+	assert_table_length NUM_SPRITE_ANIM_GFX
 
 .DeletedGFX
--- a/engine/menus/save.asm
+++ b/engine/menus/save.asm
@@ -1057,22 +1057,29 @@
 	jr nz, .next
 	ret
 
+box_address: MACRO
+	assert BANK(\1) == BANK(\2)
+	db BANK(\1)
+	dw \1, \2
+ENDM
+
 BoxAddresses:
-; dbww bank, address, address
-	dbww BANK(sBox1),  sBox1,  sBox1End
-	dbww BANK(sBox2),  sBox2,  sBox2End
-	dbww BANK(sBox3),  sBox3,  sBox3End
-	dbww BANK(sBox4),  sBox4,  sBox4End
-	dbww BANK(sBox5),  sBox5,  sBox5End
-	dbww BANK(sBox6),  sBox6,  sBox6End
-	dbww BANK(sBox7),  sBox7,  sBox7End
-	dbww BANK(sBox8),  sBox8,  sBox8End
-	dbww BANK(sBox9),  sBox9,  sBox9End
-	dbww BANK(sBox10), sBox10, sBox10End
-	dbww BANK(sBox11), sBox11, sBox11End
-	dbww BANK(sBox12), sBox12, sBox12End
-	dbww BANK(sBox13), sBox13, sBox13End
-	dbww BANK(sBox14), sBox14, sBox14End
+	table_width 5, BoxAddresses
+	box_address sBox1,  sBox1End
+	box_address sBox2,  sBox2End
+	box_address sBox3,  sBox3End
+	box_address sBox4,  sBox4End
+	box_address sBox5,  sBox5End
+	box_address sBox6,  sBox6End
+	box_address sBox7,  sBox7End
+	box_address sBox8,  sBox8End
+	box_address sBox9,  sBox9End
+	box_address sBox10, sBox10End
+	box_address sBox11, sBox11End
+	box_address sBox12, sBox12End
+	box_address sBox13, sBox13End
+	box_address sBox14, sBox14End
+	assert_table_length NUM_BOXES
 
 Checksum:
 	ld de, 0
--- a/macros/data.asm
+++ b/macros/data.asm
@@ -41,21 +41,6 @@
 	dw \2
 ENDM
 
-dbbw: MACRO
-	db \1, \2
-	dw \3
-ENDM
-
-dbww: MACRO
-	db \1
-	dw \2, \3
-ENDM
-
-dbwww: MACRO
-	db \1
-	dw \2, \3, \4
-ENDM
-
 dn: MACRO ; nybbles
 rept _NARG / 2
 	db ((\1) << 4) | (\2)
--- a/macros/legacy.asm
+++ b/macros/legacy.asm
@@ -11,6 +11,23 @@
 	dbsprite \2, \4, \1, \3, \5, \6
 ENDM
 
+; macros/data.asm
+
+dbbw: MACRO
+	db \1, \2
+	dw \3
+ENDM
+
+dbww: MACRO
+	db \1
+	dw \2, \3
+ENDM
+
+dbwww: MACRO
+	db \1
+	dw \2, \3, \4
+ENDM
+
 ; macros/scripts/audio.asm
 __ EQU 0
 CC EQU 13
--- a/macros/scripts/maps.asm
+++ b/macros/scripts/maps.asm
@@ -172,5 +172,6 @@
 ;\1: warp id
 ;\2: object_event id
 ;\3: script pointer
-	dbbw \1, \2, \3
+	db \1, \2
+	dw \3
 ENDM
--- a/mobile/mobile_40.asm
+++ b/mobile/mobile_40.asm
@@ -2379,41 +2379,51 @@
 	call CloseSRAM
 	ret
 
-Unknown_100fc0:
+macro_100fc0: MACRO
 	; first byte:
 	;     Bit 7 set: Not SRAM
-	;     Lower 7 bits: Bank
-	; Address, size (dw), address
-	dbwww $80, wPlayerName, NAME_LENGTH, wOTPlayerName
-	dbwww $80, wPartyCount, 1 + PARTY_LENGTH + 1, wOTPartyCount
-	dbwww $80, wPlayerID, 2, wOTPlayerID
-	dbwww $80, wPartyMons, PARTYMON_STRUCT_LENGTH * PARTY_LENGTH, wOTPartyMons
-	dbwww $80, wPartyMonOTs, NAME_LENGTH * PARTY_LENGTH, wOTPartyMonOTs
-	dbwww $80, wPartyMonNicknames, MON_NAME_LENGTH * PARTY_LENGTH, wOTPartyMonNicknames
-	db -1
+	;     Lower 7 bits: Bank if SRAM
+	; address, size[, OT address]
+	db ($80 * (\1 >= SRAM_End)) | (BANK(\1) * (\1 < SRAM_End))
+	dw \1, \2
+	if _NARG == 3
+		dw \3
+	else
+		dw NULL
+	endc
+ENDM
 
+Unknown_100fc0:
+	macro_100fc0 wPlayerName,          NAME_LENGTH,                           wOTPlayerName
+	macro_100fc0 wPartyCount,          1 + PARTY_LENGTH + 1,                  wOTPartyCount
+	macro_100fc0 wPlayerID,            2,                                     wOTPlayerID
+	macro_100fc0 wPartyMons,           PARTYMON_STRUCT_LENGTH * PARTY_LENGTH, wOTPartyMons
+	macro_100fc0 wPartyMonOTs,         NAME_LENGTH * PARTY_LENGTH,            wOTPartyMonOTs
+	macro_100fc0 wPartyMonNicknames,   MON_NAME_LENGTH * PARTY_LENGTH,        wOTPartyMonNicknames
+	db -1 ; end
+
 Unknown_100feb:
-	dbwww $00, sPartyMail, MAIL_STRUCT_LENGTH * PARTY_LENGTH, NULL
-	db -1
+	macro_100fc0 sPartyMail,           MAIL_STRUCT_LENGTH * PARTY_LENGTH
+	db -1 ; end
 
 Unknown_100ff3:
-	dbwww $80, wdc41, 1, NULL
-	dbwww $80, wPlayerName, NAME_LENGTH, NULL
-	dbwww $80, wPlayerName, NAME_LENGTH, NULL
-	dbwww $80, wPlayerID, 2, NULL
-	dbwww $80, wSecretID, 2, NULL
-	dbwww $80, wPlayerGender, 1, NULL
-	dbwww $04, $a603, 8, NULL
-	dbwww $04, $a007, PARTYMON_STRUCT_LENGTH, NULL
-	db -1
+	macro_100fc0 wdc41,                1
+	macro_100fc0 wPlayerName,          NAME_LENGTH
+	macro_100fc0 wPlayerName,          NAME_LENGTH
+	macro_100fc0 wPlayerID,            2
+	macro_100fc0 wSecretID,            2
+	macro_100fc0 wPlayerGender,        1
+	macro_100fc0 s4_a603,              8
+	macro_100fc0 s4_a007,              PARTYMON_STRUCT_LENGTH
+	db -1 ; end
 
 Unknown_10102c:
-	dbwww $80, wOTPlayerName, NAME_LENGTH, NULL
-	dbwww $80, wOTPlayerID, 2, NULL
-	dbwww $80, wOTPartyMonNicknames, MON_NAME_LENGTH * PARTY_LENGTH, NULL
-	dbwww $80, wOTPartyMonOTs, NAME_LENGTH * PARTY_LENGTH, NULL
-	dbwww $80, wOTPartyMons, PARTYMON_STRUCT_LENGTH * PARTY_LENGTH, NULL
-	db -1
+	macro_100fc0 wOTPlayerName,        NAME_LENGTH
+	macro_100fc0 wOTPlayerID,          2
+	macro_100fc0 wOTPartyMonNicknames, MON_NAME_LENGTH * PARTY_LENGTH
+	macro_100fc0 wOTPartyMonOTs,       NAME_LENGTH * PARTY_LENGTH
+	macro_100fc0 wOTPartyMons,         PARTYMON_STRUCT_LENGTH * PARTY_LENGTH
+	db -1 ; end
 
 Function101050:
 	call Function10107d