Reorganize macros

This commit is contained in:
Remy Oukaour 2017-12-14 00:36:24 -05:00
parent 8745915dbd
commit e48a401290
48 changed files with 1637 additions and 2030 deletions

View File

@ -1,4 +1,3 @@
Moves: ; 41afb
; Characteristics of each move. ; Characteristics of each move.
move: MACRO move: MACRO
@ -11,6 +10,8 @@ move: MACRO
db \7 percent ; effect chance db \7 percent ; effect chance
ENDM ENDM
Moves: ; 41afb
; entries correspond to constants/move_constants.asm
move POUND, EFFECT_NORMAL_HIT, 40, NORMAL, 100, 35, 0 move POUND, EFFECT_NORMAL_HIT, 40, NORMAL, 100, 35, 0
move KARATE_CHOP, EFFECT_NORMAL_HIT, 50, FIGHTING, 100, 25, 0 move KARATE_CHOP, EFFECT_NORMAL_HIT, 50, FIGHTING, 100, 25, 0
move DOUBLESLAP, EFFECT_MULTI_HIT, 15, NORMAL, 85, 10, 0 move DOUBLESLAP, EFFECT_MULTI_HIT, 15, NORMAL, 85, 10, 0

View File

@ -1,4 +1,6 @@
BattleAnimObjects: ; ccb56 ABSOLUTE_X EQU $00
RELATIVE_X EQU $01
battleanimobj: MACRO battleanimobj: MACRO
db \1 ; flags db \1 ; flags
; bit 7: priority ; bit 7: priority
@ -14,572 +16,194 @@ battleanimobj: MACRO
db \6 ; tile offset db \6 ; tile offset
endm endm
ABSOLUTE_X EQU $00 BattleAnimObjects: ; ccb56
RELATIVE_X EQU $01 ; entries correspond to ANIM_OBJ_* constants
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_00
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_01
; ANIM_OBJ_00 battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_02
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_03
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_04
; ANIM_OBJ_01 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_05
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_06
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_07
; ANIM_OBJ_02 battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_08
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_09
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_0A
; ANIM_OBJ_03 battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0B
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_00, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0C
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0D
; ANIM_OBJ_04 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0E
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_01, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_0F
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_BURNED
; ANIM_OBJ_05 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_BLIZZARD
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_02, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_12
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_ICE_BEAM
; ANIM_OBJ_06 battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_RAZOR_LEAF, PAL_BATTLE_OB_GREEN, $06 ; ANIM_OBJ_RAZOR_LEAF
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_03, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, PAL_BATTLE_OB_RED, $0b ; ANIM_OBJ_POKE_BALL
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, PAL_BATTLE_OB_RED, $0b ; ANIM_OBJ_POKE_BALL_BLOCKED
; ANIM_OBJ_07 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08 ; ANIM_OBJ_17
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_04, BATTLEANIMFUNC_1B, PAL_BATTLE_OB_GRAY, $01 battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08 ; ANIM_OBJ_18
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_19
; ANIM_OBJ_08 battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_1A
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 ; ANIM_OBJ_1B
battleanimobj RELATIVE_X, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 ; ANIM_OBJ_BALL_POOF
; ANIM_OBJ_09 battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1D
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_06, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1E
battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_1F
; ANIM_OBJ_0A battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BLUE, $21 ; ANIM_OBJ_20
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_07, BATTLEANIMFUNC_09, PAL_BATTLE_OB_GRAY, $01 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_BUBBLE
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_22
; ANIM_OBJ_0B battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_23
battleanimobj RELATIVE_X, $aa, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_10, PAL_BATTLE_OB_RED, $03 battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_24
battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $04 ; ANIM_OBJ_25
; ANIM_OBJ_0C battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GREEN, $0f ; ANIM_OBJ_26
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0E, BATTLEANIMFUNC_04, PAL_BATTLE_OB_RED, $03 battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_27
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_28
; ANIM_OBJ_0D battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_ICE_BUILDUP
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a ; ANIM_OBJ_FROZEN
battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, PAL_BATTLE_OB_BROWN, $11 ; ANIM_OBJ_MASTER_BALL_SPARKLE
; ANIM_OBJ_0E battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_OB_YELLOW, $0d ; ANIM_OBJ_2C
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $03 battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2D
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2E
; ANIM_OBJ_0F battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_2F
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_0A, PAL_BATTLE_OB_RED, $03 battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_30
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_31
; ANIM_OBJ_BURNED battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_LIGHTNING_BOLT
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_03, PAL_BATTLE_OB_RED, $03 battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_33
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_34
; ANIM_OBJ_BLIZZARD battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_35
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_12, BATTLEANIMFUNC_08, PAL_BATTLE_OB_BLUE, $0a battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_36
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_37
; ANIM_OBJ_12 battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_38
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_13, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_39
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_3A
; ANIM_OBJ_ICE_BEAM battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_3B
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_14, BATTLEANIMFUNC_01, PAL_BATTLE_OB_BLUE, $0a battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_3C
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_3D
; ANIM_OBJ_RAZOR_LEAF battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_GUST
battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_16, BATTLEANIMFUNC_RAZOR_LEAF, PAL_BATTLE_OB_GREEN, $06 battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_3F
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_40
; ANIM_OBJ_POKE_BALL battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_41
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_12, PAL_BATTLE_OB_RED, $0b battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_42
battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_43
; ANIM_OBJ_POKE_BALL_BLOCKED battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_44
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_09, BATTLEANIMFUNC_13, PAL_BATTLE_OB_RED, $0b battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, PAL_BATTLE_OB_GREEN, $12 ; ANIM_OBJ_ABSORB
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_46
; ANIM_OBJ_17 battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_47
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08 battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16 ; ANIM_OBJ_48
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16 ; ANIM_OBJ_49
; ANIM_OBJ_18 battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, PAL_BATTLE_OB_GREEN, $06 ; ANIM_OBJ_LEECH_SEED
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_18, BATTLEANIMFUNC_00, PAL_BATTLE_OB_RED, $08 battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_4B
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $17 ; ANIM_OBJ_4C
; ANIM_OBJ_19 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_4D
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_1D, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $0c battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_4E
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10 ; ANIM_OBJ_4F
; ANIM_OBJ_1A battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $18 ; ANIM_OBJ_50
battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_1F, BATTLEANIMFUNC_38, PAL_BATTLE_OB_GRAY, $0c battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18 ; ANIM_OBJ_51
battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, PAL_BATTLE_OB_YELLOW, $19 ; ANIM_OBJ_CHICK
; ANIM_OBJ_1B battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_53
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_54
battleanimobj RELATIVE_X, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $0c ; ANIM_OBJ_SKULL
; ANIM_OBJ_BALL_POOF battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, PAL_BATTLE_OB_BROWN, $1a ; ANIM_OBJ_56
battleanimobj RELATIVE_X, $a0, BATTLEANIMFRAMESET_08, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $07 battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BROWN, $1a ; ANIM_OBJ_57
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $1a ; ANIM_OBJ_58
; ANIM_OBJ_1D battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, PAL_BATTLE_OB_YELLOW, $19 ; ANIM_OBJ_PARALYZED
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_5A
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_HAZE
; ANIM_OBJ_1E battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_MIST
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_1A, BATTLEANIMFUNC_07, PAL_BATTLE_OB_BROWN, $09 battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_SMOG
battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_POISON_GAS
; ANIM_OBJ_1F battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, PAL_BATTLE_OB_GRAY, $1d ; ANIM_OBJ_HORN
battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_1B, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BROWN, $09 battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, PAL_BATTLE_OB_GRAY, $1d ; ANIM_OBJ_60
battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_OB_RED, $1e ; ANIM_OBJ_61
; ANIM_OBJ_20 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_62
battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_84, BATTLEANIMFUNC_36, PAL_BATTLE_OB_BLUE, $21 battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_BROWN, $19 ; ANIM_OBJ_63
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_64
; ANIM_OBJ_BUBBLE battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_65
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_0C, PAL_BATTLE_OB_BLUE, $0d battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_66
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_67
; ANIM_OBJ_22 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_68
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_23, BATTLEANIMFUNC_0D, PAL_BATTLE_OB_BLUE, $0d battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_69
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_6A
; ANIM_OBJ_23 battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_6B
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_0E, PAL_BATTLE_OB_GRAY, $0e battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_6C
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_6D
; ANIM_OBJ_24 battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_OB_GRAY, $20 ; ANIM_OBJ_SKY_ATTACK_FEAROW
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_27, BATTLEANIMFUNC_0F, PAL_BATTLE_OB_BLUE, $04 battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $04 ; ANIM_OBJ_LICK
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18 ; ANIM_OBJ_WITHDRAW
; ANIM_OBJ_25 battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_BLUE, $0d ; ANIM_OBJ_71
battleanimobj RELATIVE_X, $b4, BATTLEANIMFRAMESET_2A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $04 battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_OB_YELLOW, $12 ; ANIM_OBJ_72
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_73
; ANIM_OBJ_26 battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_OB_GRAY, $1c ; ANIM_OBJ_74
battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_2B, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GREEN, $0f battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_75
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_OB_GRAY, $14 ; ANIM_OBJ_76
; ANIM_OBJ_27 battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_OB_GRAY, $11 ; ANIM_OBJ_77
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10 battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_78
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22 ; ANIM_OBJ_79
; ANIM_OBJ_28 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_7A
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10 battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_7B
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_7C
; ANIM_OBJ_ICE_BUILDUP battleanimobj RELATIVE_X | X_FLIP | BEHIND_BG, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_OB_BLUE, $13 ; ANIM_OBJ_7D
battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_HEART
battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_7F
; ANIM_OBJ_FROZEN battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_80
battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_2F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $0a battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_COTTON_SPORE
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_82
; ANIM_OBJ_MASTER_BALL_SPARKLE battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_83
battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_14, PAL_BATTLE_OB_BROWN, $11 battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $1f ; ANIM_OBJ_84
battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_85
; ANIM_OBJ_2C battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_OB_RED, $1f ; ANIM_OBJ_86
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_14, PAL_BATTLE_OB_YELLOW, $0d battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_87
battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_88
; ANIM_OBJ_2D battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_89
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_31, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_8A
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_8B
; ANIM_OBJ_2E battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $15 ; ANIM_OBJ_8C
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_32, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $19 ; ANIM_OBJ_8D
battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, PAL_BATTLE_OB_GRAY, $1f ; ANIM_OBJ_SPIKES
; ANIM_OBJ_2F battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_OB_GRAY, $0a ; ANIM_OBJ_8F
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_33, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_OB_RED, $03 ; ANIM_OBJ_90
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_OB_GRAY, $08 ; ANIM_OBJ_91
; ANIM_OBJ_30 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1b ; ANIM_OBJ_92
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_15, PAL_BATTLE_OB_YELLOW, $05 battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $23 ; ANIM_OBJ_93
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_94
; ANIM_OBJ_31 battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_95
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_36, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_96
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $25 ; ANIM_OBJ_97
; ANIM_OBJ_LIGHTNING_BOLT battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_GREEN, $23 ; ANIM_OBJ_98
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_37, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $23 ; ANIM_OBJ_99
battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, PAL_BATTLE_OB_YELLOW, $23 ; ANIM_OBJ_9A
; ANIM_OBJ_33 battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_9B
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_38, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05 battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_9C
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_9D
; ANIM_OBJ_34 battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $24 ; ANIM_OBJ_9E
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_39, BATTLEANIMFUNC_03, PAL_BATTLE_OB_GRAY, $08 battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_OB_RED, $12 ; ANIM_OBJ_9F
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_A0
; ANIM_OBJ_35 battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 ; ANIM_OBJ_A1
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_3A, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $02 battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_BROWN, $0f ; ANIM_OBJ_A2
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_OB_YELLOW, $05 ; ANIM_OBJ_A3
; ANIM_OBJ_36 battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GRAY, $25 ; ANIM_OBJ_A4
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_3C, BATTLEANIMFUNC_17, PAL_BATTLE_OB_GRAY, $02 battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_OB_GRAY, $23 ; ANIM_OBJ_A5
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_PERISH_SONG
; ANIM_OBJ_37 battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24 ; ANIM_OBJ_A7
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_A8
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_OB_GRAY, $13 ; ANIM_OBJ_A9
; ANIM_OBJ_38 battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_AA
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_3F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, PAL_BATTLE_OB_GRAY, $0e ; ANIM_OBJ_AB
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $17 ; ANIM_OBJ_AC
; ANIM_OBJ_39 battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, PAL_BATTLE_OB_GRAY, $01 ; ANIM_OBJ_AD
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_40, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, PAL_BATTLE_OB_YELLOW, $11 ; ANIM_OBJ_AE
battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_GRAY, $04 ; ANIM_OBJ_AF
; ANIM_OBJ_3A battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, PAL_BATTLE_OB_RED, $1c ; ANIM_OBJ_B0
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_41, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_OB_GRAY, $19 ; ANIM_OBJ_B1
battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_B2
; ANIM_OBJ_3B battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $27 ; ANIM_OBJ_B3
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_42, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02 battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_OB_BLUE, $15 ; ANIM_OBJ_B4
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_OB_BROWN, $09 ; ANIM_OBJ_B5
; ANIM_OBJ_3C battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $1e ; ANIM_OBJ_FLOWER
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_18, PAL_BATTLE_OB_GREEN, $12 battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, PAL_BATTLE_OB_RED, $1f ; ANIM_OBJ_COTTON
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28 ; ANIM_OBJ_PLAYERFEETFOLLOW
; ANIM_OBJ_3D battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29 ; ANIM_OBJ_ENEMYFEETFOLLOW
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_44, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GREEN, $12 battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28 ; ANIM_OBJ_BA
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29 ; ANIM_OBJ_BB
; ANIM_OBJ_GUST
battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_45, BATTLEANIMFUNC_19, PAL_BATTLE_OB_GRAY, $13
; ANIM_OBJ_3F
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_46, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14
; ANIM_OBJ_40
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_47, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $14
; ANIM_OBJ_41
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_48, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14
; ANIM_OBJ_42
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_49, BATTLEANIMFUNC_1A, PAL_BATTLE_OB_GRAY, $14
; ANIM_OBJ_43
battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $14
; ANIM_OBJ_44
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_4B, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $11
; ANIM_OBJ_ABSORB
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_4C, BATTLEANIMFUNC_1C, PAL_BATTLE_OB_GREEN, $12
; ANIM_OBJ_46
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_4D, BATTLEANIMFUNC_1D, PAL_BATTLE_OB_GRAY, $15
; ANIM_OBJ_47
battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_51, BATTLEANIMFUNC_1E, PAL_BATTLE_OB_YELLOW, $11
; ANIM_OBJ_48
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_52, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16
; ANIM_OBJ_49
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_54, BATTLEANIMFUNC_1F, PAL_BATTLE_OB_GREEN, $16
; ANIM_OBJ_LEECH_SEED
battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_56, BATTLEANIMFUNC_LEECH_SEED, PAL_BATTLE_OB_GREEN, $06
; ANIM_OBJ_4B
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_59, BATTLEANIMFUNC_21, PAL_BATTLE_OB_GRAY, $0e
; ANIM_OBJ_4C
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_5C, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $17
; ANIM_OBJ_4D
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_5D, BATTLEANIMFUNC_22, PAL_BATTLE_OB_YELLOW, $11
; ANIM_OBJ_4E
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_5F, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $10
; ANIM_OBJ_4F
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $88, BATTLEANIMFRAMESET_2D, BATTLEANIMFUNC_09, PAL_BATTLE_OB_YELLOW, $10
; ANIM_OBJ_50
battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $18
; ANIM_OBJ_51
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_60, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18
; ANIM_OBJ_CHICK
battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_61, BATTLEANIMFUNC_23, PAL_BATTLE_OB_YELLOW, $19
; ANIM_OBJ_53
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_63, BATTLEANIMFUNC_24, PAL_BATTLE_OB_GRAY, $19
; ANIM_OBJ_54
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_66, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $19
; ANIM_OBJ_SKULL
battleanimobj RELATIVE_X, $50, BATTLEANIMFRAMESET_1C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $0c
; ANIM_OBJ_56
battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_67, BATTLEANIMFUNC_26, PAL_BATTLE_OB_BROWN, $1a
; ANIM_OBJ_57
battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_68, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BROWN, $1a
; ANIM_OBJ_58
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_69, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $1a
; ANIM_OBJ_PARALYZED
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6D, BATTLEANIMFUNC_28, PAL_BATTLE_OB_YELLOW, $19
; ANIM_OBJ_5A
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_6A, BATTLEANIMFUNC_27, PAL_BATTLE_OB_GRAY, $1b
; ANIM_OBJ_HAZE
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c
; ANIM_OBJ_MIST
battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c
; ANIM_OBJ_SMOG
battleanimobj RELATIVE_X | X_FLIP, $48, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1c
; ANIM_OBJ_POISON_GAS
battleanimobj RELATIVE_X | X_FLIP, $78, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_GRAY, $1c
; ANIM_OBJ_HORN
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_71, BATTLEANIMFUNC_HORN, PAL_BATTLE_OB_GRAY, $1d
; ANIM_OBJ_60
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_72, BATTLEANIMFUNC_2C, PAL_BATTLE_OB_GRAY, $1d
; ANIM_OBJ_61
battleanimobj RELATIVE_X, $48, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_2D, PAL_BATTLE_OB_RED, $1e
; ANIM_OBJ_62
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_06, PAL_BATTLE_OB_GRAY, $15
; ANIM_OBJ_63
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_75, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_BROWN, $19
; ANIM_OBJ_64
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_4A, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $14
; ANIM_OBJ_65
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $11
; ANIM_OBJ_66
battleanimobj RELATIVE_X, $78, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_POISON_GAS, PAL_BATTLE_OB_RED, $23
; ANIM_OBJ_67
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_30, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_68
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_69
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_77, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_6A
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_08, PAL_BATTLE_OB_YELLOW, $23
; ANIM_OBJ_6B
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_79, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_6C
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11
; ANIM_OBJ_6D
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_7A, BATTLEANIMFUNC_31, PAL_BATTLE_OB_YELLOW, $11
; ANIM_OBJ_SKY_ATTACK_FEAROW
battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_7B, BATTLEANIMFUNC_32, PAL_BATTLE_OB_GRAY, $20
; ANIM_OBJ_LICK
battleanimobj RELATIVE_X | X_FLIP, $98, BATTLEANIMFRAMESET_7C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $04
; ANIM_OBJ_WITHDRAW
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_7D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $18
; ANIM_OBJ_71
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_21, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_BLUE, $0d
; ANIM_OBJ_72
battleanimobj RELATIVE_X, $b0, BATTLEANIMFRAMESET_7E, BATTLEANIMFUNC_33, PAL_BATTLE_OB_YELLOW, $12
; ANIM_OBJ_73
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_2F, PAL_BATTLE_OB_GRAY, $08
; ANIM_OBJ_74
battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_6F, BATTLEANIMFUNC_34, PAL_BATTLE_OB_GRAY, $1c
; ANIM_OBJ_75
battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_35, PAL_BATTLE_OB_GRAY, $15
; ANIM_OBJ_76
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_80, BATTLEANIMFUNC_33, PAL_BATTLE_OB_GRAY, $14
; ANIM_OBJ_77
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_81, BATTLEANIMFUNC_37, PAL_BATTLE_OB_GRAY, $11
; ANIM_OBJ_78
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_85, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22
; ANIM_OBJ_79
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_86, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $22
; ANIM_OBJ_7A
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_87, BATTLEANIMFUNC_39, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_7B
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_30, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_YELLOW, $11
; ANIM_OBJ_7C
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_34, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $05
; ANIM_OBJ_7D
battleanimobj RELATIVE_X | X_FLIP | BEHIND_BG, $88, BATTLEANIMFRAMESET_88, BATTLEANIMFUNC_3B, PAL_BATTLE_OB_BLUE, $13
; ANIM_OBJ_HEART
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_76, BATTLEANIMFUNC_25, PAL_BATTLE_OB_RED, $23
; ANIM_OBJ_7F
battleanimobj RELATIVE_X, $98, BATTLEANIMFRAMESET_10, BATTLEANIMFUNC_34, PAL_BATTLE_OB_RED, $03
; ANIM_OBJ_80
battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_0F, BATTLEANIMFUNC_3C, PAL_BATTLE_OB_RED, $03
; ANIM_OBJ_COTTON_SPORE
battleanimobj RELATIVE_X | X_FLIP, $68, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_SPRIAL_DESCENT, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_82
battleanimobj RELATIVE_X | X_FLIP, $b0, BATTLEANIMFRAMESET_8A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_83
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_8C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_84
battleanimobj RELATIVE_X | X_FLIP, $50, BATTLEANIMFRAMESET_8D, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $1f
; ANIM_OBJ_85
battleanimobj RELATIVE_X, $40, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_40, PAL_BATTLE_OB_GRAY, $0e
; ANIM_OBJ_86
battleanimobj RELATIVE_X | X_FLIP, $a8, BATTLEANIMFRAMESET_8E, BATTLEANIMFUNC_41, PAL_BATTLE_OB_RED, $1f
; ANIM_OBJ_87
battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_8F, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_88
battleanimobj RELATIVE_X | X_FLIP, $88, BATTLEANIMFRAMESET_93, BATTLEANIMFUNC_3E, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_89
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_97, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_8A
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_3D, PAL_BATTLE_OB_YELLOW, $23
; ANIM_OBJ_8B
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_2E, PAL_BATTLE_OB_GRAY, $19
; ANIM_OBJ_8C
battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_02, PAL_BATTLE_OB_GRAY, $15
; ANIM_OBJ_8D
battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_99, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $19
; ANIM_OBJ_SPIKES
battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_8B, BATTLEANIMFUNC_3F, PAL_BATTLE_OB_GRAY, $1f
; ANIM_OBJ_8F
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_15, BATTLEANIMFUNC_08, PAL_BATTLE_OB_GRAY, $0a
; ANIM_OBJ_90
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_11, BATTLEANIMFUNC_02, PAL_BATTLE_OB_RED, $03
; ANIM_OBJ_91
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_7F, BATTLEANIMFUNC_42, PAL_BATTLE_OB_GRAY, $08
; ANIM_OBJ_92
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_9A, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $1b
; ANIM_OBJ_93
battleanimobj RELATIVE_X | X_FLIP, $a0, BATTLEANIMFRAMESET_9B, BATTLEANIMFUNC_35, PAL_BATTLE_OB_RED, $23
; ANIM_OBJ_94
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_23, PAL_BATTLE_OB_GRAY, $25
; ANIM_OBJ_95
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9D, BATTLEANIMFUNC_25, PAL_BATTLE_OB_GRAY, $25
; ANIM_OBJ_96
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $25
; ANIM_OBJ_97
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_9E, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $25
; ANIM_OBJ_98
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $80, BATTLEANIMFRAMESET_9F, BATTLEANIMFUNC_3A, PAL_BATTLE_OB_GREEN, $23
; ANIM_OBJ_99
battleanimobj RELATIVE_X | X_FLIP, $80, BATTLEANIMFRAMESET_A0, BATTLEANIMFUNC_16, PAL_BATTLE_OB_GRAY, $23
; ANIM_OBJ_9A
battleanimobj RELATIVE_X | X_FLIP, $70, BATTLEANIMFRAMESET_78, BATTLEANIMFUNC_43, PAL_BATTLE_OB_YELLOW, $23
; ANIM_OBJ_9B
battleanimobj RELATIVE_X | X_FLIP, $c0, BATTLEANIMFRAMESET_A2, BATTLEANIMFUNC_01, PAL_BATTLE_OB_GRAY, $25
; ANIM_OBJ_9C
battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_A3, BATTLEANIMFUNC_44, PAL_BATTLE_OB_YELLOW, $24
; ANIM_OBJ_9D
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A4, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24
; ANIM_OBJ_9E
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_A5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $24
; ANIM_OBJ_9F
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_43, BATTLEANIMFUNC_45, PAL_BATTLE_OB_RED, $12
; ANIM_OBJ_A0
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02
; ANIM_OBJ_A1
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_A7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $02
; ANIM_OBJ_A2
battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B4, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_BROWN, $0f
; ANIM_OBJ_A3
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_A8, BATTLEANIMFUNC_02, PAL_BATTLE_OB_YELLOW, $05
; ANIM_OBJ_A4
battleanimobj RELATIVE_X | X_FLIP, $40, BATTLEANIMFRAMESET_9C, BATTLEANIMFUNC_11, PAL_BATTLE_OB_GRAY, $25
; ANIM_OBJ_A5
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $90, BATTLEANIMFRAMESET_A9, BATTLEANIMFUNC_46, PAL_BATTLE_OB_GRAY, $23
; ANIM_OBJ_PERISH_SONG
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_47, PAL_BATTLE_OB_GRAY, $0e
; ANIM_OBJ_A7
battleanimobj RELATIVE_X, $80, BATTLEANIMFRAMESET_AA, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $24
; ANIM_OBJ_A8
battleanimobj RELATIVE_X | X_FLIP, $b8, BATTLEANIMFRAMESET_AB, BATTLEANIMFUNC_48, PAL_BATTLE_OB_GRAY, $13
; ANIM_OBJ_A9
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AC, BATTLEANIMFUNC_44, PAL_BATTLE_OB_GRAY, $13
; ANIM_OBJ_AA
battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_05, BATTLEANIMFUNC_00, PAL_BATTLE_OB_GRAY, $01
; ANIM_OBJ_AB
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_24, BATTLEANIMFUNC_43, PAL_BATTLE_OB_GRAY, $0e
; ANIM_OBJ_AC
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_AD, BATTLEANIMFUNC_00, PAL_BATTLE_OB_BLUE, $17
; ANIM_OBJ_AD
battleanimobj RELATIVE_X, $a8, BATTLEANIMFRAMESET_AE, BATTLEANIMFUNC_49, PAL_BATTLE_OB_GRAY, $01
; ANIM_OBJ_AE
battleanimobj RELATIVE_X | X_FLIP, $90, BATTLEANIMFRAMESET_AF, BATTLEANIMFUNC_01, PAL_BATTLE_OB_YELLOW, $11
; ANIM_OBJ_AF
battleanimobj RELATIVE_X | X_FLIP, $00, BATTLEANIMFRAMESET_B0, BATTLEANIMFUNC_4A, PAL_BATTLE_OB_GRAY, $04
; ANIM_OBJ_B0
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_70, BATTLEANIMFUNC_4B, PAL_BATTLE_OB_RED, $1c
; ANIM_OBJ_B1
battleanimobj RELATIVE_X, $88, BATTLEANIMFRAMESET_B1, BATTLEANIMFUNC_4C, PAL_BATTLE_OB_GRAY, $19
; ANIM_OBJ_B2
battleanimobj RELATIVE_X, $b8, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4D, PAL_BATTLE_OB_BROWN, $09
; ANIM_OBJ_B3
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_B3, BATTLEANIMFUNC_00, PAL_BATTLE_OB_YELLOW, $27
; ANIM_OBJ_B4
battleanimobj RELATIVE_X | X_FLIP | Y_FLIP, $98, BATTLEANIMFRAMESET_74, BATTLEANIMFUNC_04, PAL_BATTLE_OB_BLUE, $15
; ANIM_OBJ_B5
battleanimobj RELATIVE_X | X_FLIP, $ff, BATTLEANIMFRAMESET_19, BATTLEANIMFUNC_4E, PAL_BATTLE_OB_BROWN, $09
; ANIM_OBJ_FLOWER
battleanimobj RELATIVE_X, $90, BATTLEANIMFRAMESET_73, BATTLEANIMFUNC_08, PAL_BATTLE_OB_RED, $1e
; ANIM_OBJ_COTTON
battleanimobj RELATIVE_X, $ff, BATTLEANIMFRAMESET_89, BATTLEANIMFUNC_4F, PAL_BATTLE_OB_RED, $1f
; ANIM_OBJ_PLAYERFEETFOLLOW
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B5, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28
; ANIM_OBJ_ENEMYFEETFOLLOW
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B6, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29
; ANIM_OBJ_BA
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B7, BATTLEANIMFUNC_00, PAL_BATTLE_OB_ENEMY, $28
; ANIM_OBJ_BB
battleanimobj ABSOLUTE_X, $00, BATTLEANIMFRAMESET_B8, BATTLEANIMFUNC_00, PAL_BATTLE_OB_PLAYER, $29
; ccfbe ; ccfbe

View File

@ -1,12 +1,11 @@
AnimObjGFX: ; cfcf6
object_gfx: MACRO object_gfx: MACRO
; # tiles, label ; # tiles, label
db \1 db \1
dba \2 dba \2
ENDM ENDM
AnimObjGFX: ; cfcf6
; entries correspond to ANIM_GFX_* constants
object_gfx 0, AnimObj00GFX object_gfx 0, AnimObj00GFX
object_gfx 21, AnimObjHitGFX object_gfx 21, AnimObjHitGFX
object_gfx 6, AnimObjCutGFX object_gfx 6, AnimObjCutGFX

View File

@ -1,10 +1,9 @@
; BattleCommandPointers indexes (see battle/effect_commands.asm)
command: macro command: macro
enum \1_command enum \1_command
\1 equs "db \1_command" \1 equs "db \1_command"
endm endm
; BattleCommandPointers indexes (see battle/effect_commands.asm)
enum_start 1 enum_start 1
command checkturn ; 01 command checkturn ; 01
command checkobedience ; 02 command checkobedience ; 02

View File

@ -1,3 +1,18 @@
newgroup: macro
const_value = const_value + 1
enum_start 1
endm
mapgroup: macro
;\1: map id
;\2: height: in blocks
;\3: width: in blocks
GROUP_\1 EQU const_value
enum MAP_\1
\1_HEIGHT EQU \2
\1_WIDTH EQU \3
endm
; map group ids ; map group ids
; `newgroup` indexes are for: ; `newgroup` indexes are for:
; - MapGroupPointers (see maps/map_headers.asm) ; - MapGroupPointers (see maps/map_headers.asm)

View File

@ -1,3 +1,8 @@
trainerclass: MACRO
enum \1
const_value = 1
ENDM
; trainer class ids ; trainer class ids
; `trainerclass` indexes are for: ; `trainerclass` indexes are for:
; - TrainerClassAttributes (see trainers/attributes.asm) ; - TrainerClassAttributes (see trainers/attributes.asm)

67
data/unown_words.asm Normal file
View File

@ -0,0 +1,67 @@
unownword: macro
x = 1
rept STRLEN(\1)
db STRSUB(\1, x, 1) - $40
x = x + 1
endr
db -1
endm
UnownWords: ; fba5a
; entries correspond to Unown forms
dw UnownWord1
dw UnownWord1
dw UnownWord2
dw UnownWord3
dw UnownWord4
dw UnownWord5
dw UnownWord6
dw UnownWord7
dw UnownWord8
dw UnownWord9
dw UnownWord10
dw UnownWord11
dw UnownWord12
dw UnownWord13
dw UnownWord14
dw UnownWord15
dw UnownWord16
dw UnownWord17
dw UnownWord18
dw UnownWord19
dw UnownWord20
dw UnownWord21
dw UnownWord22
dw UnownWord23
dw UnownWord24
dw UnownWord25
dw UnownWord26
; fba90
UnownWord1: unownword "ANGRY"
UnownWord2: unownword "BEAR"
UnownWord3: unownword "CHASE"
UnownWord4: unownword "DIRECT"
UnownWord5: unownword "ENGAGE"
UnownWord6: unownword "FIND"
UnownWord7: unownword "GIVE"
UnownWord8: unownword "HELP"
UnownWord9: unownword "INCREASE"
UnownWord10: unownword "JOIN"
UnownWord11: unownword "KEEP"
UnownWord12: unownword "LAUGH"
UnownWord13: unownword "MAKE"
UnownWord14: unownword "NUZZLE"
UnownWord15: unownword "OBSERVE"
UnownWord16: unownword "PERFORM"
UnownWord17: unownword "QUICKEN"
UnownWord18: unownword "REASSURE"
UnownWord19: unownword "SEARCH"
UnownWord20: unownword "TELL"
UnownWord21: unownword "UNDO"
UnownWord22: unownword "VANISH"
UnownWord23: unownword "WANT"
UnownWord24: unownword "XXXXX"
UnownWord25: unownword "YIELD"
UnownWord26: unownword "ZOOM"
; fbb32

View File

@ -363,19 +363,6 @@ StartTrainerBattle_SetUpForSpinOutro: ; 8c43d (23:443d)
ld [wcf64], a ld [wcf64], a
ret ret
spintable_entry: MACRO
db \1
dw .wedge\2
dwcoord \3, \4
ENDM
; quadrants
const_def
const UPPER_LEFT
const UPPER_RIGHT
const LOWER_LEFT
const LOWER_RIGHT
StartTrainerBattle_SpinToBlack: ; 8c44f (23:444f) StartTrainerBattle_SpinToBlack: ; 8c44f (23:444f)
xor a xor a
ld [hBGMapMode], a ld [hBGMapMode], a
@ -412,7 +399,19 @@ endr
ret ret
; 8c490 (23:4490) ; 8c490 (23:4490)
; quadrants
const_def
const UPPER_LEFT
const UPPER_RIGHT
const LOWER_LEFT
const LOWER_RIGHT
.spintable ; 8c490 .spintable ; 8c490
spintable_entry: MACRO
db \1
dw .wedge\2
dwcoord \3, \4
ENDM
spintable_entry UPPER_LEFT, 1, 1, 6 spintable_entry UPPER_LEFT, 1, 1, 6
spintable_entry UPPER_LEFT, 2, 0, 3 spintable_entry UPPER_LEFT, 2, 0, 3
spintable_entry UPPER_LEFT, 3, 1, 0 spintable_entry UPPER_LEFT, 3, 1, 0
@ -797,12 +796,6 @@ StartTrainerBattle_DrawSineWave: ; 8c6f7 (23:46f7)
sine_wave $100 sine_wave $100
; 8c768 ; 8c768
zoombox: macro
; width, height, start y, start x
db \1, \2
dwcoord \3, \4
endm
StartTrainerBattle_ZoomToBlack: ; 8c768 (23:4768) StartTrainerBattle_ZoomToBlack: ; 8c768 (23:4768)
callba Function5602 callba Function5602
ld de, .boxes ld de, .boxes
@ -835,6 +828,11 @@ StartTrainerBattle_ZoomToBlack: ; 8c768 (23:4768)
; 8c792 (23:4792) ; 8c792 (23:4792)
.boxes ; 8c792 .boxes ; 8c792
zoombox: macro
; width, height, start y, start x
db \1, \2
dwcoord \3, \4
endm
zoombox 4, 2, 8, 8 zoombox 4, 2, 8, 8
zoombox 6, 4, 7, 7 zoombox 6, 4, 7, 7
zoombox 8, 6, 6, 6 zoombox 8, 6, 6, 6

View File

@ -1415,7 +1415,6 @@ else
endc endc
endm endm
cardflip_cursor 11, 2, .Impossible cardflip_cursor 11, 2, .Impossible
cardflip_cursor 12, 2, .Impossible cardflip_cursor 12, 2, .Impossible
cardflip_cursor 13, 2, .PokeGroupPair cardflip_cursor 13, 2, .PokeGroupPair

View File

@ -2340,11 +2340,11 @@ HasVisitedSpawn: ; 91c50
Flypoints: ; 91c5e Flypoints: ; 91c5e
; landmark, spawn point ; landmark, spawn point
const_def
flypoint: MACRO flypoint: MACRO
const FLY_\1 const FLY_\1
db \2, SPAWN_\1 db \2, SPAWN_\1
ENDM ENDM
const_def
; Johto ; Johto
flypoint NEW_BARK, NEW_BARK_TOWN flypoint NEW_BARK, NEW_BARK_TOWN
flypoint CHERRYGROVE, CHERRYGROVE_CITY flypoint CHERRYGROVE, CHERRYGROVE_CITY

View File

@ -1,4 +1,3 @@
ProfOaksPC: ; 0x265d3 ProfOaksPC: ; 0x265d3
ld hl, OakPCText1 ld hl, OakPCText1
call MenuTextBox call MenuTextBox
@ -100,31 +99,26 @@ endr
ret ret
OakRatings: ; 0x2667f OakRatings: ; 0x2667f
oakrating: MACRO
db \1
dw \2, \3
endm
; if you caught at most this many, play this sound, load this text ; if you caught at most this many, play this sound, load this text
oakrating 9, SFX_DEX_FANFARE_LESS_THAN_20, OakRating01 dbww 9, SFX_DEX_FANFARE_LESS_THAN_20, OakRating01
oakrating 19, SFX_DEX_FANFARE_LESS_THAN_20, OakRating02 dbww 19, SFX_DEX_FANFARE_LESS_THAN_20, OakRating02
oakrating 34, SFX_DEX_FANFARE_20_49, OakRating03 dbww 34, SFX_DEX_FANFARE_20_49, OakRating03
oakrating 49, SFX_DEX_FANFARE_20_49, OakRating04 dbww 49, SFX_DEX_FANFARE_20_49, OakRating04
oakrating 64, SFX_DEX_FANFARE_50_79, OakRating05 dbww 64, SFX_DEX_FANFARE_50_79, OakRating05
oakrating 79, SFX_DEX_FANFARE_50_79, OakRating06 dbww 79, SFX_DEX_FANFARE_50_79, OakRating06
oakrating 94, SFX_DEX_FANFARE_80_109, OakRating07 dbww 94, SFX_DEX_FANFARE_80_109, OakRating07
oakrating 109, SFX_DEX_FANFARE_80_109, OakRating08 dbww 109, SFX_DEX_FANFARE_80_109, OakRating08
oakrating 124, SFX_CAUGHT_MON, OakRating09 dbww 124, SFX_CAUGHT_MON, OakRating09
oakrating 139, SFX_CAUGHT_MON, OakRating10 dbww 139, SFX_CAUGHT_MON, OakRating10
oakrating 154, SFX_DEX_FANFARE_140_169, OakRating11 dbww 154, SFX_DEX_FANFARE_140_169, OakRating11
oakrating 169, SFX_DEX_FANFARE_140_169, OakRating12 dbww 169, SFX_DEX_FANFARE_140_169, OakRating12
oakrating 184, SFX_DEX_FANFARE_170_199, OakRating13 dbww 184, SFX_DEX_FANFARE_170_199, OakRating13
oakrating 199, SFX_DEX_FANFARE_170_199, OakRating14 dbww 199, SFX_DEX_FANFARE_170_199, OakRating14
oakrating 214, SFX_DEX_FANFARE_200_229, OakRating15 dbww 214, SFX_DEX_FANFARE_200_229, OakRating15
oakrating 229, SFX_DEX_FANFARE_200_229, OakRating16 dbww 229, SFX_DEX_FANFARE_200_229, OakRating16
oakrating 239, SFX_DEX_FANFARE_230_PLUS, OakRating17 dbww 239, SFX_DEX_FANFARE_230_PLUS, OakRating17
oakrating 248, SFX_DEX_FANFARE_230_PLUS, OakRating18 dbww 248, SFX_DEX_FANFARE_230_PLUS, OakRating18
oakrating 255, SFX_DEX_FANFARE_230_PLUS, OakRating19 dbww 255, SFX_DEX_FANFARE_230_PLUS, OakRating19
OakPCText1: ; 0x266de OakPCText1: ; 0x266de
text_jump _OakPCText1 text_jump _OakPCText1

View File

@ -1578,7 +1578,6 @@ BuenasPassword4:
.greater_than_11 .greater_than_11
call Random call Random
maskbits NUM_PASSWORD_CATEGORIES maskbits NUM_PASSWORD_CATEGORIES
and x
cp NUM_PASSWORD_CATEGORIES cp NUM_PASSWORD_CATEGORIES
jr nc, .greater_than_11 jr nc, .greater_than_11
; Store it in the high nybble of e. ; Store it in the high nybble of e.

View File

@ -196,10 +196,6 @@ endr
ret ret
; 8c0e5 ; 8c0e5
brightlevel: MACRO
db (\1 << 6) | (\2 << 4) | (\3 << 2) | \4
ENDM
ReplaceTimeOfDayPals: ; 8c0e5 ReplaceTimeOfDayPals: ; 8c0e5
ld hl, .BrightnessLevels ld hl, .BrightnessLevels
ld a, [wMapTimeOfDay] ld a, [wMapTimeOfDay]
@ -230,14 +226,14 @@ ReplaceTimeOfDayPals: ; 8c0e5
; 8c10f (23:410f) ; 8c10f (23:410f)
.BrightnessLevels: ; 8c10f .BrightnessLevels: ; 8c10f
brightlevel 3, 2, 1, 0 dc 3, 2, 1, 0
brightlevel 1, 1, 1, 1 dc 1, 1, 1, 1
brightlevel 2, 2, 2, 2 dc 2, 2, 2, 2
brightlevel 0, 0, 0, 0 dc 0, 0, 0, 0
brightlevel 3, 3, 3, 3 dc 3, 3, 3, 3
brightlevel 3, 2, 1, 0 dc 3, 2, 1, 0
brightlevel 3, 2, 1, 0 dc 3, 2, 1, 0
brightlevel 3, 2, 1, 0 dc 3, 2, 1, 0
; 8c117 ; 8c117
GetTimePalette: ; 8c117 GetTimePalette: ; 8c117

View File

@ -1,7 +1,8 @@
puzcoord EQUS "* 6 +"
PUZZLE_BORDER EQU $ee PUZZLE_BORDER EQU $ee
PUZZLE_VOID EQU $ef PUZZLE_VOID EQU $ef
puzcoord EQUS "* 6 +"
UnownPuzzle: ; e1190 UnownPuzzle: ; e1190
ld a, [hInMenu] ld a, [hInMenu]
push af push af

View File

@ -19,7 +19,6 @@ UpdateUnownDex: ; fba18
ret ret
; fba2e ; fba2e
PrintUnownWord: ; fba2e (3e:7a2e) PrintUnownWord: ; fba2e (3e:7a2e)
hlcoord 4, 15 hlcoord 4, 15
ld bc, 12 ld bc, 12
@ -49,70 +48,4 @@ PrintUnownWord: ; fba2e (3e:7a2e)
jr .loop jr .loop
; fba5a (3e:7a5a) ; fba5a (3e:7a5a)
UnownWords: ; fba5a INCLUDE "data/unown_words.asm"
dw UnownWord1
dw UnownWord1
dw UnownWord2
dw UnownWord3
dw UnownWord4
dw UnownWord5
dw UnownWord6
dw UnownWord7
dw UnownWord8
dw UnownWord9
dw UnownWord10
dw UnownWord11
dw UnownWord12
dw UnownWord13
dw UnownWord14
dw UnownWord15
dw UnownWord16
dw UnownWord17
dw UnownWord18
dw UnownWord19
dw UnownWord20
dw UnownWord21
dw UnownWord22
dw UnownWord23
dw UnownWord24
dw UnownWord25
dw UnownWord26
; fba90
unownword: macro
x = 1
rept STRLEN(\1)
db STRSUB(\1, x, 1) - $40
x = x + 1
endr
db -1
endm
UnownWord1: unownword "ANGRY"
UnownWord2: unownword "BEAR"
UnownWord3: unownword "CHASE"
UnownWord4: unownword "DIRECT"
UnownWord5: unownword "ENGAGE"
UnownWord6: unownword "FIND"
UnownWord7: unownword "GIVE"
UnownWord8: unownword "HELP"
UnownWord9: unownword "INCREASE"
UnownWord10: unownword "JOIN"
UnownWord11: unownword "KEEP"
UnownWord12: unownword "LAUGH"
UnownWord13: unownword "MAKE"
UnownWord14: unownword "NUZZLE"
UnownWord15: unownword "OBSERVE"
UnownWord16: unownword "PERFORM"
UnownWord17: unownword "QUICKEN"
UnownWord18: unownword "REASSURE"
UnownWord19: unownword "SEARCH"
UnownWord20: unownword "TELL"
UnownWord21: unownword "UNDO"
UnownWord22: unownword "VANISH"
UnownWord23: unownword "WANT"
UnownWord24: unownword "XXXXX"
UnownWord25: unownword "YIELD"
UnownWord26: unownword "ZOOM"
; fbb32

View File

@ -1,5 +1,3 @@
SpecialHoOhChamber: ; 0x8addb SpecialHoOhChamber: ; 0x8addb
ld hl, PartySpecies ld hl, PartySpecies
ld a, [hl] ld a, [hl]

View File

@ -1,6 +1,5 @@
; Pic animation arrangement. ; Pic animation arrangement.
AnimateMon_Slow_Normal: ; d0000 AnimateMon_Slow_Normal: ; d0000
hlcoord 12, 0 hlcoord 12, 0
ld a, [wBattleMode] ld a, [wBattleMode]
@ -53,23 +52,18 @@ AnimateMon_Unused: ; d003a
ret ret
; d0042 ; d0042
pokeanim: MACRO
POKEANIM: MACRO
rept _NARG rept _NARG
; Workaround for a bug where macro args can't come after the start of a symbol ; Workaround for a bug where macro args can't come after the start of a symbol
if !def(\1_POKEANIM) if !def(\1_POKEANIM)
\1_POKEANIM equs "PokeAnim_\1_" \1_POKEANIM equs "PokeAnim_\1_"
endc endc
db (\1_POKEANIM - PokeAnim_SetupCommands) / 2 db (\1_POKEANIM - PokeAnim_SetupCommands) / 2
shift shift
endr endr
db (PokeAnim_Finish_ - PokeAnim_SetupCommands) / 2 db (PokeAnim_Finish_ - PokeAnim_SetupCommands) / 2
ENDM ENDM
PokeAnims: ; d0042 PokeAnims: ; d0042
dw .Slow dw .Slow
dw .Normal dw .Normal
@ -81,15 +75,15 @@ PokeAnims: ; d0042
dw .Egg1 dw .Egg1
dw .Egg2 dw .Egg2
.Slow: POKEANIM StereoCry, Setup2, Play .Slow: pokeanim StereoCry, Setup2, Play
.Normal: POKEANIM StereoCry, Setup, Play .Normal: pokeanim StereoCry, Setup, Play
.Menu: POKEANIM CryNoWait, Setup, Play, SetWait, Wait, Extra, Play .Menu: pokeanim CryNoWait, Setup, Play, SetWait, Wait, Extra, Play
.Trade: POKEANIM Extra, Play2, Extra, Play, SetWait, Wait, Cry, Setup, Play .Trade: pokeanim Extra, Play2, Extra, Play, SetWait, Wait, Cry, Setup, Play
.Evolve: POKEANIM Extra, Play, SetWait, Wait, CryNoWait, Setup, Play .Evolve: pokeanim Extra, Play, SetWait, Wait, CryNoWait, Setup, Play
.Hatch: POKEANIM Extra, Play, CryNoWait, Setup, Play, SetWait, Wait, Extra, Play .Hatch: pokeanim Extra, Play, CryNoWait, Setup, Play, SetWait, Wait, Extra, Play
.Unused: POKEANIM CryNoWait, Setup, Play, SetWait, Wait, Extra, Play .Unused: pokeanim CryNoWait, Setup, Play, SetWait, Wait, Extra, Play
.Egg1: POKEANIM Setup, Play .Egg1: pokeanim Setup, Play
.Egg2: POKEANIM Extra, Play .Egg2: pokeanim Extra, Play
AnimateFrontpic: ; d008e AnimateFrontpic: ; d008e

File diff suppressed because it is too large Load Diff

View File

@ -1,54 +1,54 @@
UnownPicPointers:: UnownPicPointers::
; entries correspond to Unown letters, two apiece ; entries correspond to Unown letters, two apiece
add_pic UnownAFrontpic dba_pic UnownAFrontpic
add_pic UnownABackpic dba_pic UnownABackpic
add_pic UnownBFrontpic dba_pic UnownBFrontpic
add_pic UnownBBackpic dba_pic UnownBBackpic
add_pic UnownCFrontpic dba_pic UnownCFrontpic
add_pic UnownCBackpic dba_pic UnownCBackpic
add_pic UnownDFrontpic dba_pic UnownDFrontpic
add_pic UnownDBackpic dba_pic UnownDBackpic
add_pic UnownEFrontpic dba_pic UnownEFrontpic
add_pic UnownEBackpic dba_pic UnownEBackpic
add_pic UnownFFrontpic dba_pic UnownFFrontpic
add_pic UnownFBackpic dba_pic UnownFBackpic
add_pic UnownGFrontpic dba_pic UnownGFrontpic
add_pic UnownGBackpic dba_pic UnownGBackpic
add_pic UnownHFrontpic dba_pic UnownHFrontpic
add_pic UnownHBackpic dba_pic UnownHBackpic
add_pic UnownIFrontpic dba_pic UnownIFrontpic
add_pic UnownIBackpic dba_pic UnownIBackpic
add_pic UnownJFrontpic dba_pic UnownJFrontpic
add_pic UnownJBackpic dba_pic UnownJBackpic
add_pic UnownKFrontpic dba_pic UnownKFrontpic
add_pic UnownKBackpic dba_pic UnownKBackpic
add_pic UnownLFrontpic dba_pic UnownLFrontpic
add_pic UnownLBackpic dba_pic UnownLBackpic
add_pic UnownMFrontpic dba_pic UnownMFrontpic
add_pic UnownMBackpic dba_pic UnownMBackpic
add_pic UnownNFrontpic dba_pic UnownNFrontpic
add_pic UnownNBackpic dba_pic UnownNBackpic
add_pic UnownOFrontpic dba_pic UnownOFrontpic
add_pic UnownOBackpic dba_pic UnownOBackpic
add_pic UnownPFrontpic dba_pic UnownPFrontpic
add_pic UnownPBackpic dba_pic UnownPBackpic
add_pic UnownQFrontpic dba_pic UnownQFrontpic
add_pic UnownQBackpic dba_pic UnownQBackpic
add_pic UnownRFrontpic dba_pic UnownRFrontpic
add_pic UnownRBackpic dba_pic UnownRBackpic
add_pic UnownSFrontpic dba_pic UnownSFrontpic
add_pic UnownSBackpic dba_pic UnownSBackpic
add_pic UnownTFrontpic dba_pic UnownTFrontpic
add_pic UnownTBackpic dba_pic UnownTBackpic
add_pic UnownUFrontpic dba_pic UnownUFrontpic
add_pic UnownUBackpic dba_pic UnownUBackpic
add_pic UnownVFrontpic dba_pic UnownVFrontpic
add_pic UnownVBackpic dba_pic UnownVBackpic
add_pic UnownWFrontpic dba_pic UnownWFrontpic
add_pic UnownWBackpic dba_pic UnownWBackpic
add_pic UnownXFrontpic dba_pic UnownXFrontpic
add_pic UnownXBackpic dba_pic UnownXBackpic
add_pic UnownYFrontpic dba_pic UnownYFrontpic
add_pic UnownYBackpic dba_pic UnownYBackpic
add_pic UnownZFrontpic dba_pic UnownZFrontpic
add_pic UnownZBackpic dba_pic UnownZBackpic

View File

@ -1,69 +1,69 @@
TrainerPicPointers:: TrainerPicPointers::
; entries correspond to trainer classes (see constants/trainer_constants.asm) ; entries correspond to trainer classes (see constants/trainer_constants.asm)
add_pic FalknerPic dba_pic FalknerPic
add_pic WhitneyPic dba_pic WhitneyPic
add_pic BugsyPic dba_pic BugsyPic
add_pic MortyPic dba_pic MortyPic
add_pic PrycePic dba_pic PrycePic
add_pic JasminePic dba_pic JasminePic
add_pic ChuckPic dba_pic ChuckPic
add_pic ClairPic dba_pic ClairPic
add_pic Rival1Pic dba_pic Rival1Pic
add_pic PokemonProfPic dba_pic PokemonProfPic
add_pic WillPic dba_pic WillPic
add_pic CalPic dba_pic CalPic
add_pic BrunoPic dba_pic BrunoPic
add_pic KarenPic dba_pic KarenPic
add_pic KogaPic dba_pic KogaPic
add_pic ChampionPic dba_pic ChampionPic
add_pic BrockPic dba_pic BrockPic
add_pic MistyPic dba_pic MistyPic
add_pic LtSurgePic dba_pic LtSurgePic
add_pic ScientistPic dba_pic ScientistPic
add_pic ErikaPic dba_pic ErikaPic
add_pic YoungsterPic dba_pic YoungsterPic
add_pic SchoolboyPic dba_pic SchoolboyPic
add_pic BirdKeeperPic dba_pic BirdKeeperPic
add_pic LassPic dba_pic LassPic
add_pic JaninePic dba_pic JaninePic
add_pic CooltrainermPic dba_pic CooltrainermPic
add_pic CooltrainerfPic dba_pic CooltrainerfPic
add_pic BeautyPic dba_pic BeautyPic
add_pic PokemaniacPic dba_pic PokemaniacPic
add_pic GruntmPic dba_pic GruntmPic
add_pic GentlemanPic dba_pic GentlemanPic
add_pic SkierPic dba_pic SkierPic
add_pic TeacherPic dba_pic TeacherPic
add_pic SabrinaPic dba_pic SabrinaPic
add_pic BugCatcherPic dba_pic BugCatcherPic
add_pic FisherPic dba_pic FisherPic
add_pic SwimmermPic dba_pic SwimmermPic
add_pic SwimmerfPic dba_pic SwimmerfPic
add_pic SailorPic dba_pic SailorPic
add_pic SuperNerdPic dba_pic SuperNerdPic
add_pic Rival2Pic dba_pic Rival2Pic
add_pic GuitaristPic dba_pic GuitaristPic
add_pic HikerPic dba_pic HikerPic
add_pic BikerPic dba_pic BikerPic
add_pic BlainePic dba_pic BlainePic
add_pic BurglarPic dba_pic BurglarPic
add_pic FirebreatherPic dba_pic FirebreatherPic
add_pic JugglerPic dba_pic JugglerPic
add_pic BlackbeltTPic dba_pic BlackbeltTPic
add_pic ExecutivemPic dba_pic ExecutivemPic
add_pic PsychicTPic dba_pic PsychicTPic
add_pic PicnickerPic dba_pic PicnickerPic
add_pic CamperPic dba_pic CamperPic
add_pic ExecutivefPic dba_pic ExecutivefPic
add_pic SagePic dba_pic SagePic
add_pic MediumPic dba_pic MediumPic
add_pic BoarderPic dba_pic BoarderPic
add_pic PokefanmPic dba_pic PokefanmPic
add_pic KimonoGirlPic dba_pic KimonoGirlPic
add_pic TwinsPic dba_pic TwinsPic
add_pic PokefanfPic dba_pic PokefanfPic
add_pic RedPic dba_pic RedPic
add_pic BluePic dba_pic BluePic
add_pic OfficerPic dba_pic OfficerPic
add_pic GruntfPic dba_pic GruntfPic
add_pic MysticalmanPic dba_pic MysticalmanPic

View File

@ -1035,13 +1035,8 @@ IsHM:: ; 34df
ret ret
; 34e7 ; 34e7
IsHMMove:: ; 34e7
ld hl, HMMoves
ld de, 1
jp IsInArray
INCLUDE "home/hm_moves.asm"
INCLUDE "data/hm_moves.asm"
GetMoveName:: ; 34f8 GetMoveName:: ; 34f8

View File

@ -1,6 +1,11 @@
; HM moves can't be forgotten ; HM moves can't be forgotten
HMMoves: ; 34f0 IsHMMove:: ; 34e7
ld hl, .HMMoves
ld de, 1
jp IsInArray
.HMMoves: ; 34f0
db CUT db CUT
db FLY db FLY
db SURF db SURF

View File

@ -8,9 +8,6 @@ TEXTBOX_INNERX EQU TEXTBOX_X + 1
TEXTBOX_Y EQU SCREEN_HEIGHT - TEXTBOX_HEIGHT TEXTBOX_Y EQU SCREEN_HEIGHT - TEXTBOX_HEIGHT
TEXTBOX_INNERY EQU TEXTBOX_Y + 2 TEXTBOX_INNERY EQU TEXTBOX_Y + 2
TEXTBOX_PAL EQU 7
ClearBox:: ; fb6 ClearBox:: ; fb6
; Fill a c*b box at hl with blank tiles. ; Fill a c*b box at hl with blank tiles.
@ -51,7 +48,7 @@ ClearTileMap:: ; fc8
ClearScreen:: ; fdb ClearScreen:: ; fdb
ld a, TEXTBOX_PAL ld a, PAL_BG_TEXT
hlcoord 0, 0, AttrMap hlcoord 0, 0, AttrMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call ByteFill call ByteFill
@ -133,7 +130,7 @@ TextBoxPalette:: ; 1024
inc b inc b
inc c inc c
inc c inc c
ld a, TEXTBOX_PAL ld a, PAL_BG_TEXT
.col .col
push bc push bc
push hl push hl

View File

@ -49,19 +49,16 @@ GetClock:: ; 5b7
ld [hl], RTC_S ld [hl], RTC_S
ld a, [de] ld a, [de]
maskbits 60 maskbits 60
and x
ld [hRTCSeconds], a ld [hRTCSeconds], a
ld [hl], RTC_M ld [hl], RTC_M
ld a, [de] ld a, [de]
maskbits 60 maskbits 60
and x
ld [hRTCMinutes], a ld [hRTCMinutes], a
ld [hl], RTC_H ld [hl], RTC_H
ld a, [de] ld a, [de]
maskbits 24 maskbits 24
and x
ld [hRTCHours], a ld [hRTCHours], a
ld [hl], RTC_DL ld [hl], RTC_DL

View File

@ -1,320 +1,25 @@
INCLUDE "macros/enum.asm" INCLUDE "macros/enum.asm"
INCLUDE "macros/basestats.asm"
INCLUDE "macros/event.asm"
INCLUDE "macros/sound.asm"
INCLUDE "macros/text.asm"
INCLUDE "macros/charmap.asm" INCLUDE "macros/charmap.asm"
INCLUDE "macros/move_anim.asm"
INCLUDE "macros/movement.asm"
INCLUDE "macros/map.asm"
INCLUDE "macros/pic.asm"
INCLUDE "macros/predef.asm" INCLUDE "macros/predef.asm"
INCLUDE "macros/rst.asm" INCLUDE "macros/rst.asm"
INCLUDE "macros/mobile.asm" INCLUDE "macros/data.asm"
INCLUDE "macros/trainer.asm" INCLUDE "macros/code.asm"
INCLUDE "macros/trade_anim.asm" INCLUDE "macros/coords.asm"
INCLUDE "macros/color.asm"
INCLUDE "macros/basestats.asm"
INCLUDE "macros/tilesets.asm" INCLUDE "macros/tilesets.asm"
RGB: MACRO INCLUDE "macros/scripts/audio.asm"
rept _NARG / 3 INCLUDE "macros/scripts/maps.asm"
dw ((\3) << 10) + ((\2) << 5) + (\1) INCLUDE "macros/scripts/event.asm"
shift INCLUDE "macros/scripts/text.asm"
shift INCLUDE "macros/scripts/movement.asm"
shift INCLUDE "macros/scripts/move_anim.asm"
endr INCLUDE "macros/scripts/trade_anim.asm"
ENDM INCLUDE "macros/scripts/gfx_anim.asm"
percent EQUS "* $ff / 100" percent EQUS "* $ff / 100"
dwb: MACRO
dw \1
db \2
ENDM
dbw: MACRO
db \1
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
rept _NARG / 2
db (\1) << 4 + (\2)
shift
shift
endr
ENDM
dx: MACRO
x = 8 * ((\1) - 1)
rept \1
db ((\2) >> x) & $ff
x = x + -8
endr
ENDM
dt: MACRO ; three-byte (big-endian)
dx 3, \1
ENDM
dd: MACRO ; four-byte (big-endian)
dx 4, \1
ENDM
bigdw: MACRO ; big-endian word
dx 2, \1
ENDM
dba: MACRO ; 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
ENDM
lb: MACRO ; r, hi, lo
ld \1, (\2 & $ff) << 8 + (\3 & $ff)
ENDM
ln: MACRO ; r, hi, lo
ld \1, (\2 & $f) << 4 + (\3 & $f)
ENDM
bccoord equs "coord bc,"
decoord equs "coord de,"
hlcoord equs "coord hl,"
coord: MACRO
; register, x, y[, origin]
if _NARG < 4
ld \1, TileMap + SCREEN_WIDTH * (\3) + (\2)
else
ld \1, \4 + SCREEN_WIDTH * (\3) + (\2)
endc
ENDM
dwcoord: MACRO
rept _NARG / 2
dw TileMap + SCREEN_WIDTH * (\2) + (\1)
shift
shift
endr
ENDM
ldcoord_a: MACRO
if _NARG < 3
ld [TileMap + SCREEN_WIDTH * (\2) + (\1)], a
else
ld [\3 + SCREEN_WIDTH * (\2) + (\1)], a
endc
ENDM
lda_coord: MACRO
if _NARG < 3
ld a, [TileMap + SCREEN_WIDTH * (\2) + (\1)]
else
ld a, [\3 + SCREEN_WIDTH * (\2) + (\1)]
endc
ENDM
; pic animations
frame: MACRO
db \1
x = \2
IF _NARG > 2
rept _NARG +- 2
x = x | (1 << (\3 + 1))
shift
endr
endc
db x
ENDM
setrepeat: MACRO
db $fe
db \1
ENDM
dorepeat: MACRO
db $fd
db \1
ENDM
endanim: MACRO
db $ff
ENDM
delanim: MACRO
db $fc
ENDM
dorestart: MACRO
db $fe
ENDM
sine_wave: MACRO
; \1: amplitude
x = 0
rept $20
; Round up.
dw (sin(x) + (sin(x) & $ff)) >> 8
x = x + (\1) * $40000
endr
ENDM
bcd: MACRO
rept _NARG
dn ((\1) % 100) / 10, (\1) % 10
shift
endr
ENDM
tiles EQUS "* $10" tiles EQUS "* $10"
tile EQUS "+ $10 *" tile EQUS "+ $10 *"
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
palettes EQUS "* 8"
palette EQUS "+ 8 *"
ldpixel: MACRO
if _NARG >= 5
lb \1, \2 * 8 + \4, \3 * 8 + \5
else
lb \1, \2 * 8, \3 * 8
endc
endm
depixel EQUS "ldpixel de,"
bcpixel EQUS "ldpixel bc,"
dbpixel: MACRO
if _NARG >= 4
db \1 * 8 + \3, \2 * 8 + \4
else
db \1 * 8, \2 * 8
endc
endm
bgcoord: MACRO
IF _NARG >= 4
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"
palred EQUS "$0001 *"
palgreen EQUS "$0020 *"
palblue EQUS "$0400 *"
dsprite: MACRO
; conditional segment is there because not every instance of
; this macro is directly OAM
if _NARG >= 7 ; y tile, y pxl, x tile, x pxl, vtile offset, flags, palette
db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, (\6 << 3) + (\7 & 7)
else
db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, \6
endc
endm
jumptable: MACRO
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
jp hl
endm
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
homecall: MACRO
ld a, [hROMBank]
push af
ld a, BANK(\1)
rst Bankswitch
call \1
pop af
rst Bankswitch
ENDM

View File

@ -1,3 +1,5 @@
; Used in data/base_stats/*.asm
define: macro define: macro
if !def(\1) if !def(\1)
\1 equs \2 \1 equs \2

55
macros/code.asm Normal file
View File

@ -0,0 +1,55 @@
; Syntactic sugar macros
lb: MACRO ; r, hi, lo
ld \1, (\2 & $ff) << 8 + (\3 & $ff)
ENDM
ln: MACRO ; r, hi, lo
ld \1, (\2 & $f) << 4 + (\3 & $f)
ENDM
ldpixel: MACRO
if _NARG >= 5
lb \1, \2 * 8 + \4, \3 * 8 + \5
else
lb \1, \2 * 8, \3 * 8
endc
endm
depixel EQUS "ldpixel de,"
bcpixel EQUS "ldpixel bc,"
; Design patterns
jumptable: MACRO
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
jp hl
endm
; Many mobile functions were dummied out in localization.
mobile EQUS "ret"
maskbits: macro
; example usage in rejection sampling:
; .loop
; call Random
; maskbits 30
; cp 30
; jr nc, .loop
x = 1
rept 8
IF \1 > x
x = (x + 1) * 2 +- 1
ENDC
endr
and x
endm

15
macros/color.asm Normal file
View File

@ -0,0 +1,15 @@
RGB: MACRO
rept _NARG / 3
dw ((\3) << 10) + ((\2) << 5) + (\1)
shift
shift
shift
endr
ENDM
palettes EQUS "* 8"
palette EQUS "+ 8 *"
palred EQUS "$0001 *"
palgreen EQUS "$0020 *"
palblue EQUS "$0400 *"

51
macros/coords.asm Normal file
View File

@ -0,0 +1,51 @@
bccoord equs "coord bc,"
decoord equs "coord de,"
hlcoord equs "coord hl,"
coord: MACRO
; register, x, y[, origin]
if _NARG < 4
ld \1, TileMap + SCREEN_WIDTH * (\3) + (\2)
else
ld \1, \4 + SCREEN_WIDTH * (\3) + (\2)
endc
ENDM
dwcoord: MACRO
rept _NARG / 2
dw TileMap + SCREEN_WIDTH * (\2) + (\1)
shift
shift
endr
ENDM
ldcoord_a: MACRO
if _NARG < 3
ld [TileMap + SCREEN_WIDTH * (\2) + (\1)], a
else
ld [\3 + SCREEN_WIDTH * (\2) + (\1)], a
endc
ENDM
lda_coord: MACRO
if _NARG < 3
ld a, [TileMap + SCREEN_WIDTH * (\2) + (\1)]
else
ld a, [\3 + SCREEN_WIDTH * (\2) + (\1)]
endc
ENDM
bgrows EQUS "* $20" ; SCREEN_WIDTH
hlbgcoord EQUS "bgcoord hl,"
debgcoord EQUS "bgcoord de,"
bcbgcoord EQUS "bgcoord bc,"
bgcoord: MACRO
IF _NARG >= 4
ld \1, \3 bgrows + \2 + \4
ELSE
ld \1, \3 bgrows + \2 + VBGMap0
ENDC
ENDM

121
macros/data.asm Normal file
View File

@ -0,0 +1,121 @@
; Constant data (db, dw, dl) macros
dwb: MACRO
dw \1
db \2
ENDM
dbw: MACRO
db \1
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)
shift
shift
endr
ENDM
dc: MACRO ; "crumbs"
rept _NARG / 4
db ((\1) << 6) | ((\2) << 4) | ((\3) << 2) | (\4)
shift
shift
shift
shift
endr
ENDM
dx: MACRO
x = 8 * ((\1) - 1)
rept \1
db ((\2) >> x) & $ff
x = x + -8
endr
ENDM
dt: MACRO ; three-byte (big-endian)
dx 3, \1
ENDM
dd: MACRO ; four-byte (big-endian)
dx 4, \1
ENDM
bigdw: MACRO ; big-endian word
dx 2, \1
ENDM
dba: MACRO ; 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
ENDM
dba_pic: MACRO ; dbw bank, address
db BANK(\1) - PICS_FIX
dw \1
ENDM
dbpixel: MACRO
if _NARG >= 4
db \1 * 8 + \3, \2 * 8 + \4
else
db \1 * 8, \2 * 8
endc
endm
dsprite: MACRO
; conditional segment is there because not every instance of
; this macro is directly OAM
if _NARG >= 7 ; y tile, y pxl, x tile, x pxl, vtile offset, flags, palette
db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, (\6 << 3) + (\7 & 7)
else
db (\1 * 8) % $100 + \2, (\3 * 8) % $100 + \4, \5, \6
endc
endm
sine_wave: MACRO
; \1: amplitude
x = 0
rept $20
; Round up.
dw (sin(x) + (sin(x) & $ff)) >> 8
x = x + (\1) * $40000
endr
ENDM
bcd: MACRO
rept _NARG
dn ((\1) % 100) / 10, (\1) % 10
shift
endr
ENDM

View File

@ -1,211 +0,0 @@
map: macro
;\1: map id
db GROUP_\1, MAP_\1
endm
maptrigger: macro
;\1: script pointer
dw \1, 0
endm
warp_def: macro
;\1: y: top to bottom, starts at 0
;\2: x: left to right, starts at 0
;\3: warp destination: starts at 1
;\4: map id: from constants/map_constants.asm
db \1, \2, \3
map \4
endm
xy_trigger: macro
;\1: number: controlled by dotrigger/domaptrigger
;\2: y: top to bottom, starts at 0
;\3: x: left to right, starts at 0
;\4: script pointer
db \1, \2, \3, $0
dw \4
db $0, $0
endm
signpost: macro
;\1: y: top to bottom, starts at 0
;\2: x: left to right, starts at 0
;\3: function: a SIGNPOST_* constant
;\4: script pointer
db \1, \2, \3
dw \4
endm
person_event: macro
;\1: sprite: a SPRITE_* constant
;\2: y: top to bottom, starts at 0
;\3: x: left to right, starts at 0
;\4: movement function: a SPRITEMOVEDATA_* constant
;\5, \6: movement radius: y, x
;\7: clock hour: ???
;\8: clock daytime: sum of MORN, DAY, and/or NITE, or 0 for always
;\9: color: a PAL_NPC_* constant, or 0 for sprite default
;\10: function: a PERSONTYPE_* constant
;\11: sight range: applies to PERSONTYPE_TRAINER
;\12: script pointer
;\13: event flag: an EVENT_* constant, or 0 for always
db \1, \2 + 4, \3 + 4, \4
dn \5, \6
db \7, \8
shift
dn \8, \9
shift
db \9
shift
dw \9
shift
dw \9
endm
newgroup: macro
const_value = const_value + 1
enum_start 1
endm
mapgroup: macro
;\1: map id
;\2: height: in blocks
;\3: width: in blocks
GROUP_\1 EQU const_value
enum MAP_\1
\1_HEIGHT EQU \2
\1_WIDTH EQU \3
endm
map_header: macro
;\1: map label
;\2: tileset: a TILESET_* constant
;\3: permission: TOWN, ROUTE, INDOOR, CAVE, PERM_5, GATE, or DUNGEON
;\4: location: from constants/landmark_constants.asm
;\5: music: a MUSIC_* constant
;\6: phone service flag: 1 to prevent phone calls
;\7: time of day: a PALETTE_* constant
;\8: fishing group: a FISHGROUP_* constant
\1_MapHeader:
db BANK(\1_SecondMapHeader), \2, \3
dw \1_SecondMapHeader
db \4, \5
dn \6, \7
db \8
endm
map_header_2: macro
;\1: map label
;\2: map id
;\3: border block
;\4: connections: sum of NORTH, SOUTH, WEST, and/or EAST, or 0 for none
\1_SecondMapHeader::
db \3
db \2_HEIGHT, \2_WIDTH
db BANK(\1_BlockData)
dw \1_BlockData
db BANK(\1_MapScriptHeader)
dw \1_MapScriptHeader
dw \1_MapEventHeader
db \4
endm
connection: macro
if "\1" == "north"
;\2: map id
;\3: map label (eventually will be rolled into map id)
;\4: x
;\5: offset?
;\6: strip length
;\7: this map id
map \2
dw \3_BlockData + \2_WIDTH * (\2_HEIGHT - 3) + \5
dw OverworldMap + \4 + 3
db \6
db \2_WIDTH
db \2_HEIGHT * 2 - 1
db (\4 - \5) * -2
dw OverworldMap + \2_HEIGHT * (\2_WIDTH + 6) + 1
endc
if "\1" == "south"
;\2: map id
;\3: map label (eventually will be rolled into map id)
;\4: x
;\5: offset?
;\6: strip length
;\7: this map id
map \2
dw \3_BlockData + \5
dw OverworldMap + (\7_HEIGHT + 3) * (\7_WIDTH + 6) + \4 + 3
db \6
db \2_WIDTH
db 0
db (\4 - \5) * -2
dw OverworldMap + \2_WIDTH + 7
endc
if "\1" == "west"
;\2: map id
;\3: map label (eventually will be rolled into map id)
;\4: y
;\5: offset?
;\6: strip length
;\7: this map id
map \2
dw \3_BlockData + (\2_WIDTH * \5) + \2_WIDTH - 3
dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3)
db \6
db \2_WIDTH
db (\4 - \5) * -2
db \2_WIDTH * 2 - 1
dw OverworldMap + \2_WIDTH * 2 + 6
endc
if "\1" == "east"
;\2: map id
;\3: map label (eventually will be rolled into map id)
;\4: y
;\5: offset?
;\6: strip length
;\7: this map id
map \2
dw \3_BlockData + (\2_WIDTH * \5)
dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3 + 1) - 3
db \6
db \2_WIDTH
db (\4 - \5) * -2
db 0
dw OverworldMap + \2_WIDTH + 7
endc
endm
itemball: macro
;\1: item: from constants/item_constants.asm
;\2: quantity: default 1
if _NARG == 2
db \1, \2
else
db \1, 1
endc
endm
elevfloor: macro
;\1: floor: a FLOOR_* constant
;\2: warp destination: starts at 1
;\3: map id
db \1, \2
map \3
ENDM
stonetable: macro
;\1: warp id
;\2: person_event id
;\3: script pointer
db \1, \2
dw \3
endm

View File

@ -1,2 +0,0 @@
; Many mobile functions were dummied out in localization.
mobile EQUS "ret"

View File

@ -1,4 +0,0 @@
add_pic: MACRO
db BANK(\1) - PICS_FIX
dw \1
ENDM

View File

@ -15,3 +15,15 @@ callab: MACRO ; address, bank
ld a, BANK(\1) ld a, BANK(\1)
rst FarCall rst FarCall
ENDM ENDM
homecall: MACRO
ld a, [hROMBank]
push af
ld a, BANK(\1)
rst Bankswitch
call \1
pop af
rst Bankswitch
ENDM

View File

@ -0,0 +1,46 @@
; pic+sprite animations
frame: macro
db \1
x = \2
if _NARG > 2
rept _NARG +- 2
x = x | (1 << (\3 + 1))
shift
endr
endc
db x
endm
enum_start $fc
; used for sprites
enum delanim_command ; fc
delanim: macro
db delanim_command
endm
enum dorepeat_command ; fd
dorepeat: macro
db dorepeat_command
db \1 ; #
endm
enum setrepeat_command ; fe
setrepeat: macro
db setrepeat_command
db \1 ; #
endm
enum endanim_command ; ff
endanim: macro
db endanim_command
endm
__enum__ = $fe
; used for sprites
enum dorestart_command ; fe
dorestart: macro
db dorestart_command
endm

104
macros/scripts/maps.asm Normal file
View File

@ -0,0 +1,104 @@
map: macro
;\1: map id
db GROUP_\1, MAP_\1
endm
maptrigger: macro
;\1: script pointer
dw \1, 0
endm
warp_def: macro
;\1: y: top to bottom, starts at 0
;\2: x: left to right, starts at 0
;\3: warp destination: starts at 1
;\4: map id: from constants/map_constants.asm
db \1, \2, \3
map \4
endm
xy_trigger: macro
;\1: number: controlled by dotrigger/domaptrigger
;\2: y: top to bottom, starts at 0
;\3: x: left to right, starts at 0
;\4: script pointer
db \1, \2, \3, $0
dw \4
db $0, $0
endm
signpost: macro
;\1: y: top to bottom, starts at 0
;\2: x: left to right, starts at 0
;\3: function: a SIGNPOST_* constant
;\4: script pointer
db \1, \2, \3
dw \4
endm
person_event: macro
;\1: sprite: a SPRITE_* constant
;\2: y: top to bottom, starts at 0
;\3: x: left to right, starts at 0
;\4: movement function: a SPRITEMOVEDATA_* constant
;\5, \6: movement radius: y, x
;\7: clock hour: ???
;\8: clock daytime: sum of MORN, DAY, and/or NITE, or 0 for always
;\9: color: a PAL_NPC_* constant, or 0 for sprite default
;\10: function: a PERSONTYPE_* constant
;\11: sight range: applies to PERSONTYPE_TRAINER
;\12: script pointer
;\13: event flag: an EVENT_* constant, or 0 for always
db \1, \2 + 4, \3 + 4, \4
dn \5, \6
db \7, \8
shift
dn \8, \9
shift
db \9
shift
dw \9
shift
dw \9
endm
trainer: macro
;\1: flag: an EVENT_BEAT_* constant
;\2: trainer group
;\3: trainer id
;\4: seen text
;\5: win text
;\6: loss text
;\7: after-battle text
dw \1
db \2, \3
dw \4, \5, \6, \7
endm
itemball: macro
;\1: item: from constants/item_constants.asm
;\2: quantity: default 1
if _NARG == 2
db \1, \2
else
db \1, 1
endc
endm
elevfloor: macro
;\1: floor: a FLOOR_* constant
;\2: warp destination: starts at 1
;\3: map id
db \1, \2
map \3
ENDM
stonetable: macro
;\1: warp id
;\2: person_event id
;\3: script pointer
db \1, \2
dw \3
endm

View File

View File

@ -1,3 +1,5 @@
; Used in tilesets/*.asm
tilepal: MACRO tilepal: MACRO
; vram bank, pals ; vram bank, pals
x = \1 << OAM_TILE_BANK x = \1 << OAM_TILE_BANK

View File

@ -1,11 +0,0 @@
trainerclass: MACRO
enum \1
const_value = 1
ENDM
trainer: MACRO
; flag, group, id, seen text, win text, lost text, talk-again text
dw \1
db \2, \3
dw \4, \5, \6, \7
ENDM

View File

@ -1,3 +1,4 @@
; Used in wram.asm
flag_array: MACRO flag_array: MACRO
ds ((\1) + 7) / 8 ds ((\1) + 7) / 8
@ -15,7 +16,7 @@ box_struct: MACRO
\1DefExp:: dw \1DefExp:: dw
\1SpdExp:: dw \1SpdExp:: dw
\1SpcExp:: dw \1SpcExp:: dw
\1DVs:: ds 2 \1DVs:: dw
\1PP:: ds NUM_MOVES \1PP:: ds NUM_MOVES
\1Happiness:: db \1Happiness:: db
\1PokerusStatus:: db \1PokerusStatus:: db
@ -60,7 +61,7 @@ red_box_struct: MACRO
\1DefenseExp:: dw \1DefenseExp:: dw
\1SpeedExp:: dw \1SpeedExp:: dw
\1SpecialExp:: dw \1SpecialExp:: dw
\1DVs:: ds 2 \1DVs:: dw
\1PP:: ds NUM_MOVES \1PP:: ds NUM_MOVES
ENDM ENDM
@ -81,7 +82,7 @@ battle_struct: MACRO
\1Item:: db \1Item:: db
\1Moves:: ds NUM_MOVES \1Moves:: ds NUM_MOVES
\1MovesEnd:: \1MovesEnd::
\1DVs:: ds 2 \1DVs:: dw
\1PP:: ds NUM_MOVES \1PP:: ds NUM_MOVES
\1Happiness:: db \1Happiness:: db
\1Level:: db \1Level:: db
@ -103,7 +104,7 @@ ENDM
box: MACRO box: MACRO
\1:: \1::
\1Count:: ds 1 \1Count:: db
\1Species:: ds MONS_PER_BOX + 1 \1Species:: ds MONS_PER_BOX + 1
\1Mons:: \1Mons::
\1Mon1:: box_struct \1Mon1 \1Mon1:: box_struct \1Mon1
@ -134,14 +135,14 @@ channel_struct: MACRO
\1FrequencyHi:: db \1FrequencyHi:: db
\1Pitch:: db ; 0:rest 1-c:note \1Pitch:: db ; 0:rest 1-c:note
\1Octave:: db ; 7-0 (0 is highest) \1Octave:: db ; 7-0 (0 is highest)
\1PitchOffset:: db ; raises existing octaves (to repeat phrases) \1PitchOffset:: db ; raises existing octaves (to repeat phrases)
\1NoteDuration:: db ; frames remaining for the current note \1NoteDuration:: db ; frames remaining for the current note
\1Field0x16:: ds 1 ; c117 \1Field0x16:: ds 1 ; c117
ds 1 ; c118 ds 1 ; c118
\1LoopCount:: db \1LoopCount:: db
\1Tempo:: dw \1Tempo:: dw
\1Tracks:: db ; hi:left lo:right \1Tracks:: db ; hi:left lo:right
\1SFXDutyLoop:: ds 1 ; c11d \1SFXDutyLoop:: db ; c11d
\1VibratoDelayCount:: db ; initialized by \1VibratoDelay \1VibratoDelayCount:: db ; initialized by \1VibratoDelay
\1VibratoDelay:: db ; number of frames a note plays until vibrato starts \1VibratoDelay:: db ; number of frames a note plays until vibrato starts
\1VibratoExtent:: db \1VibratoExtent:: db
@ -149,7 +150,7 @@ channel_struct: MACRO
\1PitchWheelTarget:: dw ; frequency endpoint for pitch wheel \1PitchWheelTarget:: dw ; frequency endpoint for pitch wheel
\1PitchWheelAmount:: db ; c124 \1PitchWheelAmount:: db ; c124
\1PitchWheelAmountFraction:: db ; c125 \1PitchWheelAmountFraction:: db ; c125
\1Field0x25:: ds 1 ; c126 \1Field0x25:: db ; c126
ds 1 ; c127 ds 1 ; c127
\1CryPitch:: dw \1CryPitch:: dw
\1Field0x29:: ds 1 \1Field0x29:: ds 1
@ -179,22 +180,13 @@ battle_tower_struct: MACRO
endm endm
mailmsg: MACRO mailmsg: MACRO
\1Message:: ds MAIL_MSG_LENGTH \1Message:: ds MAIL_MSG_LENGTH
\1MessageEnd:: ds 1 \1MessageEnd:: ds 1
\1Author:: ds PLAYER_NAME_LENGTH \1Author:: ds PLAYER_NAME_LENGTH
\1AuthorNationality:: ds 2 \1AuthorNationality:: ds 2
\1AuthorID:: ds 2 \1AuthorID:: dw
\1Species:: ds 1 \1Species:: db
\1Type:: ds 1 \1Type:: db
\1End::
endm
hof_mon: MACRO
\1Species:: ds 1
\1ID:: ds 2
\1DVs:: ds 2
\1Level:: ds 1
\1Nickname:: ds PKMN_NAME_LENGTH +- 1
\1End:: \1End::
endm endm
@ -203,19 +195,28 @@ roam_struct: MACRO
\1Level:: db \1Level:: db
\1MapGroup:: db \1MapGroup:: db
\1MapNumber:: db \1MapNumber:: db
\1HP:: ds 1 \1HP:: db
\1DVs:: ds 2 \1DVs:: dw
ENDM ENDM
bugcontestwinner: macro bugcontestwinner: macro
\1PersonID:: ds 1 \1PersonID:: db
\1Mon:: ds 1 \1Mon:: db
\1Score:: ds 2 \1Score:: dw
endm
hof_mon: MACRO
\1Species:: db
\1ID:: dw
\1DVs:: dw
\1Level:: db
\1Nickname:: ds PKMN_NAME_LENGTH +- 1
\1End::
endm endm
hall_of_fame: MACRO hall_of_fame: MACRO
\1:: \1::
\1WinCount:: ds 1 \1WinCount:: db
\1Mon1:: hof_mon \1Mon1 \1Mon1:: hof_mon \1Mon1
\1Mon2:: hof_mon \1Mon2 \1Mon2:: hof_mon \1Mon2
\1Mon3:: hof_mon \1Mon3 \1Mon3:: hof_mon \1Mon3
@ -225,26 +226,34 @@ hall_of_fame: MACRO
\1End:: ds 1 \1End:: ds 1
ENDM ENDM
link_battle_record: MACRO
\1Name:: ds NAME_LENGTH +- 1
\1ID:: dw
\1Wins:: dw
\1Losses:: dw
\1Draws:: dw
ENDM
trademon: MACRO trademon: MACRO
\1Species:: ds 1 ; wc6d0 | wc702 \1Species:: db ; wc6d0 | wc702
\1SpeciesName:: ds PKMN_NAME_LENGTH ; wc6d1 | wc703 \1SpeciesName:: ds PKMN_NAME_LENGTH ; wc6d1 | wc703
\1Nickname:: ds PKMN_NAME_LENGTH ; wc6dc | wc70e \1Nickname:: ds PKMN_NAME_LENGTH ; wc6dc | wc70e
\1SenderName:: ds NAME_LENGTH ; wc6e7 | wc719 \1SenderName:: ds NAME_LENGTH ; wc6e7 | wc719
\1OTName:: ds NAME_LENGTH ; wc6f2 | wc724 \1OTName:: ds NAME_LENGTH ; wc6f2 | wc724
\1DVs:: ds 2 ; wc6fd | wc72f \1DVs:: dw ; wc6fd | wc72f
\1ID:: ds 2 ; wc6ff | wc731 \1ID:: dw ; wc6ff | wc731
\1CaughtData:: ds 1 ; wc701 | wc733 \1CaughtData:: db ; wc701 | wc733
\1End:: \1End::
ENDM ENDM
move_struct: MACRO move_struct: MACRO
\1Animation:: ds 1 \1Animation:: db
\1Effect:: ds 1 \1Effect:: db
\1Power:: ds 1 \1Power:: db
\1Type:: ds 1 \1Type:: db
\1Accuracy:: ds 1 \1Accuracy:: db
\1PP:: ds 1 \1PP:: db
\1EffectChance:: ds 1 \1EffectChance:: db
endm endm
slot_reel: MACRO slot_reel: MACRO
@ -266,109 +275,109 @@ endm
object_struct: MACRO object_struct: MACRO
\1Struct:: \1Struct::
\1Sprite:: ds 1 \1Sprite:: db
\1MapObjectIndex:: ds 1 \1MapObjectIndex:: db
\1SpriteTile:: ds 1 \1SpriteTile:: db
\1MovementType:: ds 1 \1MovementType:: db
\1Flags:: ds 2 \1Flags:: dw
\1Palette:: ds 1 \1Palette:: db
\1Walking:: ds 1 \1Walking:: db
\1Direction:: ds 1 \1Direction:: db
\1StepType:: ds 1 \1StepType:: db
\1StepDuration:: ds 1 \1StepDuration:: db
\1Action:: ds 1 \1Action:: db
\1ObjectStepFrame:: ds 1 \1ObjectStepFrame:: db
\1Facing:: ds 1 \1Facing:: db
\1StandingTile:: ds 1 ; collision \1StandingTile:: db ; collision
\1LastTile:: ds 1 ; collision \1LastTile:: db ; collision
\1StandingMapX:: ds 1 \1StandingMapX:: db
\1StandingMapY:: ds 1 \1StandingMapY:: db
\1LastMapX:: ds 1 \1LastMapX:: db
\1LastMapY:: ds 1 \1LastMapY:: db
\1ObjectInitX:: ds 1 \1ObjectInitX:: db
\1ObjectInitY:: ds 1 \1ObjectInitY:: db
\1Radius:: ds 1 \1Radius:: db
\1SpriteX:: ds 1 \1SpriteX:: db
\1SpriteY:: ds 1 \1SpriteY:: db
\1SpriteXOffset:: ds 1 \1SpriteXOffset:: db
\1SpriteYOffset:: ds 1 \1SpriteYOffset:: db
\1MovementByteIndex:: ds 1 \1MovementByteIndex:: db
\1Object28:: ds 1 \1Object28:: ds 1
\1Object29:: ds 1 \1Object29:: ds 1
\1Object30:: ds 1 \1Object30:: ds 1
\1Object31:: ds 1 \1Object31:: ds 1
\1Range:: ds 1 \1Range:: db
ds 7 ds 7
\1StructEnd:: \1StructEnd::
ENDM ENDM
map_object: MACRO map_object: MACRO
\1Object:: \1Object::
\1ObjectStructID:: ds 1 \1ObjectStructID:: db
\1ObjectSprite:: ds 1 \1ObjectSprite:: db
\1ObjectYCoord:: ds 1 \1ObjectYCoord:: db
\1ObjectXCoord:: ds 1 \1ObjectXCoord:: db
\1ObjectMovement:: ds 1 \1ObjectMovement:: db
\1ObjectRadius:: ds 1 \1ObjectRadius:: db
\1ObjectHour:: ds 1 \1ObjectHour:: db
\1ObjectTimeOfDay:: ds 1 \1ObjectTimeOfDay:: db
\1ObjectColor:: ds 1 \1ObjectColor:: db
\1ObjectRange:: ds 1 \1ObjectRange:: db
\1ObjectScript:: ds 2 \1ObjectScript:: dw
\1ObjectEventFlag:: ds 2 \1ObjectEventFlag:: dw
ds 2 ds 2
endm endm
sprite_anim_struct: MACRO sprite_anim_struct: MACRO
\1Index:: ds 1 ; 0 \1Index:: db
\1FramesetID:: ds 1 ; 1 \1FramesetID:: db
\1AnimSeqID:: ds 1 ; 2 \1AnimSeqID:: db
\1TileID:: ds 1 ; 3 \1TileID:: db
\1XCoord:: ds 1 ; 4 \1XCoord:: db
\1YCoord:: ds 1 ; 5 \1YCoord:: db
\1XOffset:: ds 1 ; 6 \1XOffset:: db
\1YOffset:: ds 1 ; 7 \1YOffset:: db
\1Duration:: ds 1 ; 8 \1Duration:: db
\1DurationOffset:: ds 1 ; 9 \1DurationOffset:: db
\1FrameIndex:: ds 1 ; a \1FrameIndex:: db
\1Sprite0b:: ds 1 \1Sprite0b:: ds 1
\1Sprite0c:: ds 1 \1Sprite0c:: ds 1
\1Sprite0d:: ds 1 \1Sprite0d:: ds 1
\1Sprite0e:: ds 1 \1Sprite0e:: ds 1
\1Sprite0f:: ds 1 \1Sprite0f:: ds 1
ENDM ENDM
battle_anim_struct: MACRO battle_anim_struct: MACRO
; Placeholder until we can figure out what it all means ; Placeholder until we can figure out what it all means
\1_Index:: ds 1 \1_Index:: db
\1_Anim01:: ds 1 \1_Anim01:: ds 1
\1_Anim02:: ds 1 \1_Anim02:: ds 1
\1_FramesetIndex:: ds 1 \1_FramesetIndex:: db
\1_FunctionIndex:: ds 1 \1_FunctionIndex:: db
\1_Anim05:: ds 1 \1_Anim05:: ds 1
\1_TileID:: ds 1 \1_TileID:: db
\1_XCoord:: ds 1 \1_XCoord:: db
\1_YCoord:: ds 1 \1_YCoord:: db
\1_XOffset:: ds 1 \1_XOffset:: db
\1_YOffset:: ds 1 \1_YOffset:: db
\1_Anim0b:: ds 1 \1_Anim0b:: ds 1
\1_Anim0c:: ds 1 \1_Anim0c:: ds 1
\1_Anim0d:: ds 1 \1_Anim0d:: ds 1
\1_AnonJumptableIndex:: ds 1 \1_AnonJumptableIndex:: db
\1_Anim0f:: ds 1 \1_Anim0f:: ds 1
\1_Anim10:: ds 1 \1_Anim10:: ds 1
\1_Anim11:: ds 1 \1_Anim11:: ds 1
\1_Anim12:: ds 1 \1_Anim12:: ds 1
\1_Anim13:: ds 1 \1_Anim13:: ds 1
\1_Anim14:: ds 1 \1_Anim14:: ds 1
\1_Anim15:: ds 1 \1_Anim15:: ds 1
\1_Anim16:: ds 1 \1_Anim16:: ds 1
\1_Anim17:: ds 1 \1_Anim17:: ds 1
endm endm
battle_bg_effect: MACRO battle_bg_effect: MACRO
\1_Function:: ds 1 \1_Function:: db
\1_01:: ds 1 \1_01:: ds 1
\1_02:: ds 1 \1_02:: ds 1
\1_03:: ds 1 \1_03:: ds 1
endm endm

View File

@ -1,3 +1,20 @@
map_header: macro
;\1: map label
;\2: tileset: a TILESET_* constant
;\3: permission: TOWN, ROUTE, INDOOR, CAVE, PERM_5, GATE, or DUNGEON
;\4: location: from constants/landmark_constants.asm
;\5: music: a MUSIC_* constant
;\6: phone service flag: 1 to prevent phone calls
;\7: time of day: a PALETTE_* constant
;\8: fishing group: a FISHGROUP_* constant
\1_MapHeader:
db BANK(\1_SecondMapHeader), \2, \3
dw \1_SecondMapHeader
db \4, \5
dn \6, \7
db \8
endm
MapGroupPointers:: MapGroupPointers::
; pointers to the first map header of each map group ; pointers to the first map header of each map group
dw MapGroup_Olivine ; 1 dw MapGroup_Olivine ; 1
@ -27,7 +44,6 @@ MapGroupPointers::
dw MapGroup_Saffron ; 25 dw MapGroup_Saffron ; 25
dw MapGroup_Cherrygrove ; 26 dw MapGroup_Cherrygrove ; 26
MapGroup_Olivine: MapGroup_Olivine:
map_header OlivinePokecenter1F, TILESET_POKECENTER, INDOOR, OLIVINE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE map_header OlivinePokecenter1F, TILESET_POKECENTER, INDOOR, OLIVINE_CITY, MUSIC_POKEMON_CENTER, 0, PALETTE_DAY, FISHGROUP_SHORE
map_header OlivineGym, TILESET_OLIVINE_GYM, INDOOR, OLIVINE_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE map_header OlivineGym, TILESET_OLIVINE_GYM, INDOOR, OLIVINE_CITY, MUSIC_GYM, 1, PALETTE_DAY, FISHGROUP_SHORE

View File

@ -1,3 +1,90 @@
map_header_2: macro
;\1: map label
;\2: map id
;\3: border block
;\4: connections: sum of NORTH, SOUTH, WEST, and/or EAST, or 0 for none
\1_SecondMapHeader::
db \3
db \2_HEIGHT, \2_WIDTH
db BANK(\1_BlockData)
dw \1_BlockData
db BANK(\1_MapScriptHeader)
dw \1_MapScriptHeader
dw \1_MapEventHeader
db \4
endm
connection: macro
if "\1" == "north"
;\2: map id
;\3: map label (eventually will be rolled into map id)
;\4: x
;\5: offset?
;\6: strip length
;\7: this map id
map \2
dw \3_BlockData + \2_WIDTH * (\2_HEIGHT - 3) + \5
dw OverworldMap + \4 + 3
db \6
db \2_WIDTH
db \2_HEIGHT * 2 - 1
db (\4 - \5) * -2
dw OverworldMap + \2_HEIGHT * (\2_WIDTH + 6) + 1
endc
if "\1" == "south"
;\2: map id
;\3: map label (eventually will be rolled into map id)
;\4: x
;\5: offset?
;\6: strip length
;\7: this map id
map \2
dw \3_BlockData + \5
dw OverworldMap + (\7_HEIGHT + 3) * (\7_WIDTH + 6) + \4 + 3
db \6
db \2_WIDTH
db 0
db (\4 - \5) * -2
dw OverworldMap + \2_WIDTH + 7
endc
if "\1" == "west"
;\2: map id
;\3: map label (eventually will be rolled into map id)
;\4: y
;\5: offset?
;\6: strip length
;\7: this map id
map \2
dw \3_BlockData + (\2_WIDTH * \5) + \2_WIDTH - 3
dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3)
db \6
db \2_WIDTH
db (\4 - \5) * -2
db \2_WIDTH * 2 - 1
dw OverworldMap + \2_WIDTH * 2 + 6
endc
if "\1" == "east"
;\2: map id
;\3: map label (eventually will be rolled into map id)
;\4: y
;\5: offset?
;\6: strip length
;\7: this map id
map \2
dw \3_BlockData + (\2_WIDTH * \5)
dw OverworldMap + (\7_WIDTH + 6) * (\4 + 3 + 1) - 3
db \6
db \2_WIDTH
db (\4 - \5) * -2
db 0
dw OverworldMap + \2_WIDTH + 7
endc
endm
map_header_2 NewBarkTown, NEW_BARK_TOWN, $5, WEST | EAST map_header_2 NewBarkTown, NEW_BARK_TOWN, $5, WEST | EAST
connection west, ROUTE_29, Route29, 0, 0, 9, NEW_BARK_TOWN connection west, ROUTE_29, Route29, 0, 0, 9, NEW_BARK_TOWN
connection east, ROUTE_27, Route27, 0, 0, 9, NEW_BARK_TOWN connection east, ROUTE_27, Route27, 0, 0, 9, NEW_BARK_TOWN

View File

@ -130,13 +130,7 @@ sLinkBattleStats:: ; b260
sLinkBattleWins:: ds 2 sLinkBattleWins:: ds 2
sLinkBattleLosses:: ds 2 ; b262 sLinkBattleLosses:: ds 2 ; b262
sLinkBattleDraws:: ds 2 ; b264 sLinkBattleDraws:: ds 2 ; b264
link_battle_record: MACRO
\1Name:: ds NAME_LENGTH +- 1
\1ID:: ds 2
\1Wins:: ds 2
\1Losses:: ds 2
\1Draws:: ds 2
endm
sLinkBattleRecord:: sLinkBattleRecord::
sLinkBattleRecord1:: link_battle_record sLinkBattleRecord1 sLinkBattleRecord1:: link_battle_record sLinkBattleRecord1
sLinkBattleRecord2:: link_battle_record sLinkBattleRecord2 sLinkBattleRecord2:: link_battle_record sLinkBattleRecord2