mirror of
https://github.com/pret/pokegold-spaceworld.git
synced 2026-09-26 13:32:48 -04:00
Merge branch 'master' of https://github.com/pret/pokegold-spaceworld
This commit is contained in:
@@ -0,0 +1,23 @@
|
||||
# Auto detect text files and perform LF normalization
|
||||
* text eol=lf
|
||||
|
||||
# Explicitly declare text files you want to always be normalized and converted
|
||||
# to native line endings on checkout.
|
||||
*.asm text
|
||||
*.sh text
|
||||
*.c text
|
||||
*.py text
|
||||
*.MD text
|
||||
*.h text
|
||||
*.txt text
|
||||
*.inc text
|
||||
|
||||
|
||||
# Denote all files that are truly binary and should not be modified.
|
||||
*.png binary
|
||||
*.lz binary
|
||||
*.2bpp binary
|
||||
*.1bpp binary
|
||||
*.bin binary
|
||||
*.blk binary
|
||||
*.pic binary
|
||||
+129
-129
@@ -1,129 +1,129 @@
|
||||
; item_attributes struct members (see data/items/attributes.asm)
|
||||
const_def
|
||||
const ITEMATTR_PRICE
|
||||
const ITEMATTR_PRICE_HI
|
||||
const ITEMATTR_EFFECT
|
||||
const ITEMATTR_PARAM
|
||||
const ITEMATTR_PERMISSIONS
|
||||
const ITEMATTR_POCKET
|
||||
const ITEMATTR_HELP
|
||||
ITEMATTR_STRUCT_LENGTH EQU const_value
|
||||
|
||||
; item types
|
||||
const_def 1
|
||||
const ITEM ; 1
|
||||
const KEY_ITEM ; 2
|
||||
const BALL ; 3
|
||||
const TM_HM ; 4
|
||||
|
||||
; item menu types
|
||||
; UseItem.dw indexes (see engine/items/pack.asm)
|
||||
; UseRegisteredItem.SwitchTo indexes (see engine/overworld/select_menu.asm)
|
||||
ITEMMENU_NOUSE EQU 0
|
||||
ITEMMENU_CURRENT EQU 4
|
||||
ITEMMENU_PARTY EQU 5
|
||||
ITEMMENU_CLOSE EQU 6
|
||||
|
||||
; item actions
|
||||
CANT_SELECT_F EQU 6
|
||||
CANT_TOSS_F EQU 7
|
||||
|
||||
NO_LIMITS EQU 0
|
||||
CANT_SELECT EQU 1 << CANT_SELECT_F
|
||||
CANT_TOSS EQU 1 << CANT_TOSS_F
|
||||
|
||||
; pack pockets
|
||||
const_def
|
||||
const ITEM_POCKET ; 0
|
||||
const BALL_POCKET ; 1
|
||||
const KEY_ITEM_POCKET ; 2
|
||||
const TM_HM_POCKET ; 3
|
||||
NUM_POCKETS EQU const_value
|
||||
|
||||
MAX_ITEMS EQU 20
|
||||
MAX_KEY_ITEMS EQU 20
|
||||
MAX_PC_ITEMS EQU 50
|
||||
|
||||
; held item effects
|
||||
const_def
|
||||
const HELD_NONE
|
||||
const HELD_BERRY
|
||||
const HELD_2
|
||||
const HELD_LEFTOVERS
|
||||
const HELD_4
|
||||
const HELD_5
|
||||
const HELD_RESTORE_PP
|
||||
const HELD_RESTORE_ALL_PP
|
||||
const HELD_CLEANSE_TAG
|
||||
|
||||
const_def 10
|
||||
const HELD_HEAL_POISON
|
||||
const HELD_HEAL_FREEZE
|
||||
const HELD_HEAL_BURN
|
||||
const HELD_HEAL_SLEEP
|
||||
const HELD_HEAL_PARALYZE
|
||||
const HELD_HEAL_STATUS
|
||||
const HELD_HEAL_CONFUSION
|
||||
|
||||
const_def 20
|
||||
const HELD_PREVENT_POISON
|
||||
const HELD_PREVENT_BURN
|
||||
const HELD_PREVENT_FREEZE
|
||||
const HELD_PREVENT_SLEEP
|
||||
const HELD_PREVENT_PARALYZE
|
||||
const HELD_PREVENT_CONFUSE
|
||||
|
||||
const_def 30
|
||||
const HELD_30
|
||||
const HELD_ATTACK_UP
|
||||
const HELD_DEFENSE_UP
|
||||
const HELD_SPEED_UP
|
||||
const HELD_SP_ATTACK_UP
|
||||
const HELD_SP_DEFENSE_UP
|
||||
const HELD_ACCURACY_UP
|
||||
const HELD_EVASION_UP
|
||||
const HELD_38
|
||||
|
||||
const_def 40
|
||||
const HELD_40
|
||||
const HELD_41
|
||||
const HELD_METAL_POWDER
|
||||
const HELD_43
|
||||
const HELD_44
|
||||
const HELD_45
|
||||
const HELD_46
|
||||
const HELD_47
|
||||
const HELD_48
|
||||
|
||||
const_def 50
|
||||
const HELD_NORMAL_BOOST
|
||||
const HELD_FIGHTING_BOOST
|
||||
const HELD_FLYING_BOOST
|
||||
const HELD_POISON_BOOST
|
||||
const HELD_GROUND_BOOST
|
||||
const HELD_ROCK_BOOST
|
||||
const HELD_BUG_BOOST
|
||||
const HELD_GHOST_BOOST
|
||||
const HELD_FIRE_BOOST
|
||||
const HELD_WATER_BOOST
|
||||
const HELD_GRASS_BOOST
|
||||
const HELD_ELECTRIC_BOOST
|
||||
const HELD_PSYCHIC_BOOST
|
||||
const HELD_ICE_BOOST
|
||||
const HELD_DRAGON_BOOST
|
||||
const HELD_DARK_BOOST
|
||||
const HELD_STEEL_BOOST
|
||||
|
||||
const_def 70
|
||||
const HELD_CATCH_CHANCE
|
||||
const HELD_71
|
||||
const HELD_ESCAPE
|
||||
const HELD_CRITICAL_UP
|
||||
const HELD_QUICK_CLAW
|
||||
const HELD_FLINCH
|
||||
const HELD_AMULET_COIN
|
||||
const HELD_BRIGHTPOWDER
|
||||
const HELD_78
|
||||
const HELD_FOCUS_BAND
|
||||
|
||||
|
||||
; item_attributes struct members (see data/items/attributes.asm)
|
||||
const_def
|
||||
const ITEMATTR_PRICE
|
||||
const ITEMATTR_PRICE_HI
|
||||
const ITEMATTR_EFFECT
|
||||
const ITEMATTR_PARAM
|
||||
const ITEMATTR_PERMISSIONS
|
||||
const ITEMATTR_POCKET
|
||||
const ITEMATTR_HELP
|
||||
ITEMATTR_STRUCT_LENGTH EQU const_value
|
||||
|
||||
; item types
|
||||
const_def 1
|
||||
const ITEM ; 1
|
||||
const KEY_ITEM ; 2
|
||||
const BALL ; 3
|
||||
const TM_HM ; 4
|
||||
|
||||
; item menu types
|
||||
; UseItem.dw indexes (see engine/items/pack.asm)
|
||||
; UseRegisteredItem.SwitchTo indexes (see engine/overworld/select_menu.asm)
|
||||
ITEMMENU_NOUSE EQU 0
|
||||
ITEMMENU_CURRENT EQU 4
|
||||
ITEMMENU_PARTY EQU 5
|
||||
ITEMMENU_CLOSE EQU 6
|
||||
|
||||
; item actions
|
||||
CANT_SELECT_F EQU 6
|
||||
CANT_TOSS_F EQU 7
|
||||
|
||||
NO_LIMITS EQU 0
|
||||
CANT_SELECT EQU 1 << CANT_SELECT_F
|
||||
CANT_TOSS EQU 1 << CANT_TOSS_F
|
||||
|
||||
; pack pockets
|
||||
const_def
|
||||
const ITEM_POCKET ; 0
|
||||
const BALL_POCKET ; 1
|
||||
const KEY_ITEM_POCKET ; 2
|
||||
const TM_HM_POCKET ; 3
|
||||
NUM_POCKETS EQU const_value
|
||||
|
||||
MAX_ITEMS EQU 20
|
||||
MAX_KEY_ITEMS EQU 20
|
||||
MAX_PC_ITEMS EQU 50
|
||||
|
||||
; held item effects
|
||||
const_def
|
||||
const HELD_NONE
|
||||
const HELD_BERRY
|
||||
const HELD_2
|
||||
const HELD_LEFTOVERS
|
||||
const HELD_4
|
||||
const HELD_5
|
||||
const HELD_RESTORE_PP
|
||||
const HELD_RESTORE_ALL_PP
|
||||
const HELD_CLEANSE_TAG
|
||||
|
||||
const_def 10
|
||||
const HELD_HEAL_POISON
|
||||
const HELD_HEAL_FREEZE
|
||||
const HELD_HEAL_BURN
|
||||
const HELD_HEAL_SLEEP
|
||||
const HELD_HEAL_PARALYZE
|
||||
const HELD_HEAL_STATUS
|
||||
const HELD_HEAL_CONFUSION
|
||||
|
||||
const_def 20
|
||||
const HELD_PREVENT_POISON
|
||||
const HELD_PREVENT_BURN
|
||||
const HELD_PREVENT_FREEZE
|
||||
const HELD_PREVENT_SLEEP
|
||||
const HELD_PREVENT_PARALYZE
|
||||
const HELD_PREVENT_CONFUSE
|
||||
|
||||
const_def 30
|
||||
const HELD_30
|
||||
const HELD_ATTACK_UP
|
||||
const HELD_DEFENSE_UP
|
||||
const HELD_SPEED_UP
|
||||
const HELD_SP_ATTACK_UP
|
||||
const HELD_SP_DEFENSE_UP
|
||||
const HELD_ACCURACY_UP
|
||||
const HELD_EVASION_UP
|
||||
const HELD_38
|
||||
|
||||
const_def 40
|
||||
const HELD_40
|
||||
const HELD_41
|
||||
const HELD_METAL_POWDER
|
||||
const HELD_43
|
||||
const HELD_44
|
||||
const HELD_45
|
||||
const HELD_46
|
||||
const HELD_47
|
||||
const HELD_48
|
||||
|
||||
const_def 50
|
||||
const HELD_NORMAL_BOOST
|
||||
const HELD_FIGHTING_BOOST
|
||||
const HELD_FLYING_BOOST
|
||||
const HELD_POISON_BOOST
|
||||
const HELD_GROUND_BOOST
|
||||
const HELD_ROCK_BOOST
|
||||
const HELD_BUG_BOOST
|
||||
const HELD_GHOST_BOOST
|
||||
const HELD_FIRE_BOOST
|
||||
const HELD_WATER_BOOST
|
||||
const HELD_GRASS_BOOST
|
||||
const HELD_ELECTRIC_BOOST
|
||||
const HELD_PSYCHIC_BOOST
|
||||
const HELD_ICE_BOOST
|
||||
const HELD_DRAGON_BOOST
|
||||
const HELD_DARK_BOOST
|
||||
const HELD_STEEL_BOOST
|
||||
|
||||
const_def 70
|
||||
const HELD_CATCH_CHANCE
|
||||
const HELD_71
|
||||
const HELD_ESCAPE
|
||||
const HELD_CRITICAL_UP
|
||||
const HELD_QUICK_CLAW
|
||||
const HELD_FLINCH
|
||||
const HELD_AMULET_COIN
|
||||
const HELD_BRIGHTPOWDER
|
||||
const HELD_78
|
||||
const HELD_FOCUS_BAND
|
||||
|
||||
|
||||
|
||||
Executable → Regular
+44
-44
@@ -1,44 +1,44 @@
|
||||
const_def
|
||||
const FACE_DOWN ; $00
|
||||
const FACE_UP ; $01
|
||||
const FACE_LEFT ; $02
|
||||
const FACE_RIGHT ; $03
|
||||
const SLOW_STEP_DOWN ; $04
|
||||
const SLOW_STEP_UP ; $05
|
||||
const SLOW_STEP_LEFT ; $06
|
||||
const SLOW_STEP_RIGHT ; $07
|
||||
const STEP_DOWN ; $08
|
||||
const STEP_UP ; $09
|
||||
const STEP_LEFT ; $0a
|
||||
const STEP_RIGHT ; $0b
|
||||
const FAST_STEP_DOWN ; $0c
|
||||
const FAST_STEP_UP ; $0d
|
||||
const FAST_STEP_LEFT ; $0e
|
||||
const FAST_STEP_RIGHT ; $0f
|
||||
const FAST_STEP_DOWN2 ; $10
|
||||
const FAST_STEP_UP2 ; $11
|
||||
const FAST_STEP_LEFT2 ; $12
|
||||
const FAST_STEP_RIGHT2 ; $13
|
||||
const SLOW_JUMP_DOWN ; $14
|
||||
const SLOW_JUMP_UP ; $15
|
||||
const SLOW_JUMP_LEFT ; $16
|
||||
const SLOW_JUMP_RIGHT ; $17
|
||||
const JUMP_DOWN ; $18
|
||||
const JUMP_UP ; $19
|
||||
const JUMP_LEFT ; $1a
|
||||
const JUMP_RIGHT ; $1b
|
||||
const FAST_JUMP_DOWN ; $1c
|
||||
const FAST_JUMP_UP ; $1d
|
||||
const FAST_JUMP_LEFT ; $1e
|
||||
const FAST_JUMP_RIGHT ; $1f
|
||||
const FAST_JUMP_DOWN2 ; $20
|
||||
const FAST_JUMP_UP2 ; $21
|
||||
const FAST_JUMP_LEFT2 ; $22
|
||||
const FAST_JUMP_RIGHT2 ; $23
|
||||
const MOVEMENT_24 ; $24
|
||||
const MOVEMENT_25 ; $25
|
||||
const MOVEMENT_26 ; $26
|
||||
const MOVEMENT_27 ; $27
|
||||
const MOVEMENT_28 ; $28
|
||||
const MOVEMENT_29 ; $29
|
||||
const NO_MOVEMENT ; $2a
|
||||
const_def
|
||||
const FACE_DOWN ; $00
|
||||
const FACE_UP ; $01
|
||||
const FACE_LEFT ; $02
|
||||
const FACE_RIGHT ; $03
|
||||
const SLOW_STEP_DOWN ; $04
|
||||
const SLOW_STEP_UP ; $05
|
||||
const SLOW_STEP_LEFT ; $06
|
||||
const SLOW_STEP_RIGHT ; $07
|
||||
const STEP_DOWN ; $08
|
||||
const STEP_UP ; $09
|
||||
const STEP_LEFT ; $0a
|
||||
const STEP_RIGHT ; $0b
|
||||
const FAST_STEP_DOWN ; $0c
|
||||
const FAST_STEP_UP ; $0d
|
||||
const FAST_STEP_LEFT ; $0e
|
||||
const FAST_STEP_RIGHT ; $0f
|
||||
const FAST_STEP_DOWN2 ; $10
|
||||
const FAST_STEP_UP2 ; $11
|
||||
const FAST_STEP_LEFT2 ; $12
|
||||
const FAST_STEP_RIGHT2 ; $13
|
||||
const SLOW_JUMP_DOWN ; $14
|
||||
const SLOW_JUMP_UP ; $15
|
||||
const SLOW_JUMP_LEFT ; $16
|
||||
const SLOW_JUMP_RIGHT ; $17
|
||||
const JUMP_DOWN ; $18
|
||||
const JUMP_UP ; $19
|
||||
const JUMP_LEFT ; $1a
|
||||
const JUMP_RIGHT ; $1b
|
||||
const FAST_JUMP_DOWN ; $1c
|
||||
const FAST_JUMP_UP ; $1d
|
||||
const FAST_JUMP_LEFT ; $1e
|
||||
const FAST_JUMP_RIGHT ; $1f
|
||||
const FAST_JUMP_DOWN2 ; $20
|
||||
const FAST_JUMP_UP2 ; $21
|
||||
const FAST_JUMP_LEFT2 ; $22
|
||||
const FAST_JUMP_RIGHT2 ; $23
|
||||
const MOVEMENT_24 ; $24
|
||||
const MOVEMENT_25 ; $25
|
||||
const MOVEMENT_26 ; $26
|
||||
const MOVEMENT_27 ; $27
|
||||
const MOVEMENT_28 ; $28
|
||||
const MOVEMENT_29 ; $29
|
||||
const NO_MOVEMENT ; $2a
|
||||
|
||||
@@ -1,2 +1,2 @@
|
||||
; Name Lists
|
||||
; Name Lists
|
||||
ITEM_NAME EQU 4
|
||||
@@ -1,18 +1,18 @@
|
||||
|
||||
; Script IDs
|
||||
const_def
|
||||
const SCRIPT_ID_00 ; 00
|
||||
const SCRIPT_ID_01 ; 01
|
||||
const SCRIPT_ID_02 ; 02
|
||||
const SCRIPT_ID_03 ; 03
|
||||
const SCRIPT_ID_04 ; 04
|
||||
const SCRIPT_ID_05 ; 05
|
||||
|
||||
; Flags
|
||||
SCRIPT_FINISHED_F EQU 7
|
||||
|
||||
; Masks/Return Values
|
||||
SCRIPT_FINISHED_MASK EQU 1 << SCRIPT_FINISHED_F
|
||||
SCRIPT_SUCCESS EQU $f
|
||||
SCRIPT_FAIL EQU 0
|
||||
|
||||
|
||||
; Script IDs
|
||||
const_def
|
||||
const SCRIPT_ID_00 ; 00
|
||||
const SCRIPT_ID_01 ; 01
|
||||
const SCRIPT_ID_02 ; 02
|
||||
const SCRIPT_ID_03 ; 03
|
||||
const SCRIPT_ID_04 ; 04
|
||||
const SCRIPT_ID_05 ; 05
|
||||
|
||||
; Flags
|
||||
SCRIPT_FINISHED_F EQU 7
|
||||
|
||||
; Masks/Return Values
|
||||
SCRIPT_FINISHED_MASK EQU 1 << SCRIPT_FINISHED_F
|
||||
SCRIPT_SUCCESS EQU $f
|
||||
SCRIPT_FAIL EQU 0
|
||||
|
||||
|
||||
Executable → Regular
+69
-69
@@ -1,69 +1,69 @@
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "Collision Type Table", ROMX[$4664], BANK[$03]
|
||||
|
||||
CollisionTypeTable: ; 03:4664
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $00
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, ALWAYS_SOLID ; $04
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $08
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, ALWAYS_SOLID ; $0C
|
||||
db NEVER_SOLID, NEVER_SOLID, SOMETIMES_SOLID, NEVER_SOLID ; $10
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $14
|
||||
db NEVER_SOLID, NEVER_SOLID, SOMETIMES_SOLID, NEVER_SOLID ; $18
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $1C
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $20
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, ALWAYS_SOLID ; $24
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $28
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, ALWAYS_SOLID ; $30
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $34
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $38
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $3C
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $40
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $44
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $48
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $4C
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $50
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $54
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $58
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $5C
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $60
|
||||
db NEVER_SOLID, NEVER_SOLID, ALWAYS_SOLID, NEVER_SOLID ; $64
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $68
|
||||
db NEVER_SOLID, NEVER_SOLID, ALWAYS_SOLID, NEVER_SOLID ; $6C
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $70
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $74
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $78
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $7C
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $80
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID ; $84
|
||||
db ALWAYS_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $88
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID ; $8C
|
||||
db ALWAYS_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $90
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID ; $94
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, NEVER_SOLID, ALWAYS_SOLID ; $98
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID ; $9C
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, NEVER_SOLID, ALWAYS_SOLID ; $A0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $A4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $A8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $AC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $B0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $B4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $B8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $BC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $C0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $C4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $C8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $CC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $D0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $D4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $D8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $DC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $E0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $E4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $E8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $EC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $F0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $F4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $F8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $FC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, ALWAYS_SOLID ; $100
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "Collision Type Table", ROMX[$4664], BANK[$03]
|
||||
|
||||
CollisionTypeTable: ; 03:4664
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $00
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, ALWAYS_SOLID ; $04
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $08
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, ALWAYS_SOLID ; $0C
|
||||
db NEVER_SOLID, NEVER_SOLID, SOMETIMES_SOLID, NEVER_SOLID ; $10
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $14
|
||||
db NEVER_SOLID, NEVER_SOLID, SOMETIMES_SOLID, NEVER_SOLID ; $18
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $1C
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $20
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, ALWAYS_SOLID ; $24
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $28
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, ALWAYS_SOLID ; $30
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $34
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $38
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $3C
|
||||
db SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID, SOMETIMES_SOLID ; $40
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $44
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $48
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $4C
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $50
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $54
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $58
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $5C
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $60
|
||||
db NEVER_SOLID, NEVER_SOLID, ALWAYS_SOLID, NEVER_SOLID ; $64
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $68
|
||||
db NEVER_SOLID, NEVER_SOLID, ALWAYS_SOLID, NEVER_SOLID ; $6C
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $70
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $74
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $78
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $7C
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $80
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID ; $84
|
||||
db ALWAYS_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $88
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID ; $8C
|
||||
db ALWAYS_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $90
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID ; $94
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, NEVER_SOLID, ALWAYS_SOLID ; $98
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID, ALWAYS_SOLID ; $9C
|
||||
db ALWAYS_SOLID, ALWAYS_SOLID, NEVER_SOLID, ALWAYS_SOLID ; $A0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $A4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $A8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $AC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $B0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $B4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $B8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $BC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $C0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $C4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $C8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $CC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $D0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $D4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $D8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $DC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $E0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $E4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $E8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $EC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $F0
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $F4
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $F8
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, NEVER_SOLID ; $FC
|
||||
db NEVER_SOLID, NEVER_SOLID, NEVER_SOLID, ALWAYS_SOLID ; $100
|
||||
|
||||
+113
-113
@@ -1,113 +1,113 @@
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "Type Matchups", ROMX[$506D], BANK[$0D]
|
||||
|
||||
TypeMatchups: ; 3506d
|
||||
; attacker, defender, *=
|
||||
db TYPE_NORMAL, TYPE_ROCK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_NORMAL, TYPE_DARK, SUPER_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_FIRE, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_WATER, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_GRASS, SUPER_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_ICE, SUPER_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_BUG, SUPER_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_ROCK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_DRAGON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_FIRE, SUPER_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_WATER, NOT_VERY_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_GRASS, NOT_VERY_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_GROUND, SUPER_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_ROCK, SUPER_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_DRAGON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_METAL, SUPER_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_WATER, SUPER_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_GRASS, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_GROUND, NO_EFFECT
|
||||
db TYPE_ELECTRIC, TYPE_FLYING, SUPER_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_DRAGON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_METAL, SUPER_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_FIRE, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_WATER, SUPER_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_GRASS, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_POISON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_GROUND, SUPER_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_FLYING, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_BUG, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_ROCK, SUPER_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_DRAGON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_FIRE, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_WATER, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_GRASS, SUPER_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_ICE, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_GROUND, SUPER_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_FLYING, SUPER_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_DRAGON, SUPER_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_NORMAL, SUPER_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_ICE, SUPER_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_POISON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_FLYING, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_PSYCHIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_BUG, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_ROCK, SUPER_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_GHOST, NO_EFFECT
|
||||
db TYPE_FIGHTING, TYPE_METAL, NOT_VERY_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_GRASS, SUPER_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_POISON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_GROUND, NOT_VERY_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_BUG, SUPER_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_ROCK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_GHOST, NOT_VERY_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_METAL, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_FIRE, SUPER_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_ELECTRIC, SUPER_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_GRASS, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_POISON, SUPER_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_FLYING, NO_EFFECT
|
||||
db TYPE_GROUND, TYPE_BUG, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_ROCK, SUPER_EFFECTIVE
|
||||
db TYPE_FLYING, TYPE_ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FLYING, TYPE_GRASS, SUPER_EFFECTIVE
|
||||
db TYPE_FLYING, TYPE_FIGHTING, SUPER_EFFECTIVE
|
||||
db TYPE_FLYING, TYPE_BUG, SUPER_EFFECTIVE
|
||||
db TYPE_FLYING, TYPE_ROCK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_PSYCHIC, TYPE_FIGHTING, SUPER_EFFECTIVE
|
||||
db TYPE_PSYCHIC, TYPE_POISON, SUPER_EFFECTIVE
|
||||
db TYPE_PSYCHIC, TYPE_PSYCHIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_PSYCHIC, TYPE_DARK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_FIRE, NOT_VERY_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_GRASS, SUPER_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_POISON, SUPER_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_FLYING, NOT_VERY_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_PSYCHIC, SUPER_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_GHOST, NOT_VERY_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_DARK, SUPER_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_FIRE, SUPER_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_ICE, SUPER_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_GROUND, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_FLYING, SUPER_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_BUG, SUPER_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_METAL, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GHOST, TYPE_NORMAL, NO_EFFECT
|
||||
db TYPE_GHOST, TYPE_PSYCHIC, SUPER_EFFECTIVE
|
||||
db TYPE_GHOST, TYPE_DARK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_DRAGON, TYPE_DRAGON, SUPER_EFFECTIVE
|
||||
db TYPE_DARK, TYPE_NORMAL, NOT_VERY_EFFECTIVE
|
||||
db TYPE_DARK, TYPE_PSYCHIC, SUPER_EFFECTIVE
|
||||
db TYPE_DARK, TYPE_GHOST, SUPER_EFFECTIVE
|
||||
db TYPE_DARK, TYPE_DARK, SUPER_EFFECTIVE
|
||||
db TYPE_METAL, TYPE_WATER, NOT_VERY_EFFECTIVE
|
||||
db TYPE_METAL, TYPE_ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_METAL, TYPE_ROCK, SUPER_EFFECTIVE
|
||||
db TYPE_METAL, TYPE_METAL, NO_EFFECT
|
||||
|
||||
db -2 ; end (with Foresight)
|
||||
|
||||
; Foresight removes Ghost's immunity to Normal
|
||||
db TYPE_NORMAL, TYPE_GHOST, NO_EFFECT
|
||||
|
||||
db -1 ; end
|
||||
; 3519b
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "Type Matchups", ROMX[$506D], BANK[$0D]
|
||||
|
||||
TypeMatchups: ; 3506d
|
||||
; attacker, defender, *=
|
||||
db TYPE_NORMAL, TYPE_ROCK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_NORMAL, TYPE_DARK, SUPER_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_FIRE, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_WATER, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_GRASS, SUPER_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_ICE, SUPER_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_BUG, SUPER_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_ROCK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIRE, TYPE_DRAGON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_FIRE, SUPER_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_WATER, NOT_VERY_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_GRASS, NOT_VERY_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_GROUND, SUPER_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_ROCK, SUPER_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_DRAGON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_WATER, TYPE_METAL, SUPER_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_WATER, SUPER_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_GRASS, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_GROUND, NO_EFFECT
|
||||
db TYPE_ELECTRIC, TYPE_FLYING, SUPER_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_DRAGON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ELECTRIC, TYPE_METAL, SUPER_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_FIRE, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_WATER, SUPER_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_GRASS, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_POISON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_GROUND, SUPER_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_FLYING, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_BUG, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_ROCK, SUPER_EFFECTIVE
|
||||
db TYPE_GRASS, TYPE_DRAGON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_FIRE, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_WATER, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_GRASS, SUPER_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_ICE, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_GROUND, SUPER_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_FLYING, SUPER_EFFECTIVE
|
||||
db TYPE_ICE, TYPE_DRAGON, SUPER_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_NORMAL, SUPER_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_ICE, SUPER_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_POISON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_FLYING, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_PSYCHIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_BUG, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_ROCK, SUPER_EFFECTIVE
|
||||
db TYPE_FIGHTING, TYPE_GHOST, NO_EFFECT
|
||||
db TYPE_FIGHTING, TYPE_METAL, NOT_VERY_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_GRASS, SUPER_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_POISON, NOT_VERY_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_GROUND, NOT_VERY_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_BUG, SUPER_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_ROCK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_GHOST, NOT_VERY_EFFECTIVE
|
||||
db TYPE_POISON, TYPE_METAL, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_FIRE, SUPER_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_ELECTRIC, SUPER_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_GRASS, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_POISON, SUPER_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_FLYING, NO_EFFECT
|
||||
db TYPE_GROUND, TYPE_BUG, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GROUND, TYPE_ROCK, SUPER_EFFECTIVE
|
||||
db TYPE_FLYING, TYPE_ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_FLYING, TYPE_GRASS, SUPER_EFFECTIVE
|
||||
db TYPE_FLYING, TYPE_FIGHTING, SUPER_EFFECTIVE
|
||||
db TYPE_FLYING, TYPE_BUG, SUPER_EFFECTIVE
|
||||
db TYPE_FLYING, TYPE_ROCK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_PSYCHIC, TYPE_FIGHTING, SUPER_EFFECTIVE
|
||||
db TYPE_PSYCHIC, TYPE_POISON, SUPER_EFFECTIVE
|
||||
db TYPE_PSYCHIC, TYPE_PSYCHIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_PSYCHIC, TYPE_DARK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_FIRE, NOT_VERY_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_GRASS, SUPER_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_POISON, SUPER_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_FLYING, NOT_VERY_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_PSYCHIC, SUPER_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_GHOST, NOT_VERY_EFFECTIVE
|
||||
db TYPE_BUG, TYPE_DARK, SUPER_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_FIRE, SUPER_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_ICE, SUPER_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_FIGHTING, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_GROUND, NOT_VERY_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_FLYING, SUPER_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_BUG, SUPER_EFFECTIVE
|
||||
db TYPE_ROCK, TYPE_METAL, NOT_VERY_EFFECTIVE
|
||||
db TYPE_GHOST, TYPE_NORMAL, NO_EFFECT
|
||||
db TYPE_GHOST, TYPE_PSYCHIC, SUPER_EFFECTIVE
|
||||
db TYPE_GHOST, TYPE_DARK, NOT_VERY_EFFECTIVE
|
||||
db TYPE_DRAGON, TYPE_DRAGON, SUPER_EFFECTIVE
|
||||
db TYPE_DARK, TYPE_NORMAL, NOT_VERY_EFFECTIVE
|
||||
db TYPE_DARK, TYPE_PSYCHIC, SUPER_EFFECTIVE
|
||||
db TYPE_DARK, TYPE_GHOST, SUPER_EFFECTIVE
|
||||
db TYPE_DARK, TYPE_DARK, SUPER_EFFECTIVE
|
||||
db TYPE_METAL, TYPE_WATER, NOT_VERY_EFFECTIVE
|
||||
db TYPE_METAL, TYPE_ELECTRIC, NOT_VERY_EFFECTIVE
|
||||
db TYPE_METAL, TYPE_ROCK, SUPER_EFFECTIVE
|
||||
db TYPE_METAL, TYPE_METAL, NO_EFFECT
|
||||
|
||||
db -2 ; end (with Foresight)
|
||||
|
||||
; Foresight removes Ghost's immunity to Normal
|
||||
db TYPE_NORMAL, TYPE_GHOST, NO_EFFECT
|
||||
|
||||
db -1 ; end
|
||||
; 3519b
|
||||
|
||||
+55
-55
@@ -1,55 +1,55 @@
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "BCD", ROMX[$4de3], BANK[$03]
|
||||
|
||||
AddBCD: ; 03:4de3
|
||||
and a
|
||||
ld b, c
|
||||
.add
|
||||
ld a, [de]
|
||||
adc [hl]
|
||||
daa
|
||||
ld [de], a
|
||||
dec de
|
||||
dec hl
|
||||
dec c
|
||||
jr nz, .add
|
||||
jr nc, .done
|
||||
|
||||
ld a, $99
|
||||
inc de
|
||||
|
||||
.fill
|
||||
ld [de], a
|
||||
inc de
|
||||
dec b
|
||||
jr nz, .fill
|
||||
|
||||
.done
|
||||
ret
|
||||
|
||||
|
||||
SubBCD: ; 03:4df9
|
||||
and a
|
||||
ld b, c
|
||||
.sub
|
||||
ld a, [de]
|
||||
sbc [hl]
|
||||
daa
|
||||
ld [de], a
|
||||
dec de
|
||||
dec hl
|
||||
dec c
|
||||
jr nz, .sub
|
||||
jr nc, .done
|
||||
ld a, 0
|
||||
inc de
|
||||
|
||||
.fill
|
||||
ld [de], a
|
||||
inc de
|
||||
dec b
|
||||
jr nz, .fill
|
||||
scf
|
||||
.done
|
||||
ret
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "BCD", ROMX[$4de3], BANK[$03]
|
||||
|
||||
AddBCD: ; 03:4de3
|
||||
and a
|
||||
ld b, c
|
||||
.add
|
||||
ld a, [de]
|
||||
adc [hl]
|
||||
daa
|
||||
ld [de], a
|
||||
dec de
|
||||
dec hl
|
||||
dec c
|
||||
jr nz, .add
|
||||
jr nc, .done
|
||||
|
||||
ld a, $99
|
||||
inc de
|
||||
|
||||
.fill
|
||||
ld [de], a
|
||||
inc de
|
||||
dec b
|
||||
jr nz, .fill
|
||||
|
||||
.done
|
||||
ret
|
||||
|
||||
|
||||
SubBCD: ; 03:4df9
|
||||
and a
|
||||
ld b, c
|
||||
.sub
|
||||
ld a, [de]
|
||||
sbc [hl]
|
||||
daa
|
||||
ld [de], a
|
||||
dec de
|
||||
dec hl
|
||||
dec c
|
||||
jr nz, .sub
|
||||
jr nc, .done
|
||||
ld a, 0
|
||||
inc de
|
||||
|
||||
.fill
|
||||
ld [de], a
|
||||
inc de
|
||||
dec b
|
||||
jr nz, .fill
|
||||
scf
|
||||
.done
|
||||
ret
|
||||
|
||||
+542
-541
File diff suppressed because it is too large
Load Diff
+723
-723
File diff suppressed because it is too large
Load Diff
@@ -1,79 +1,79 @@
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "ApplyPPUp", ROMX[$78f6], BANK[$03]
|
||||
|
||||
ApplyPPUp: ; 03:78f6
|
||||
ld a, MON_MOVES
|
||||
call GetPartyParamLocation
|
||||
push hl
|
||||
ld de, wStringBuffer1
|
||||
predef FillPP
|
||||
pop hl
|
||||
ld c, MON_PP - MON_MOVES
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
ld de, wStringBuffer1 + 1
|
||||
ld b, 0
|
||||
.loop
|
||||
inc b
|
||||
ld a, b
|
||||
cp NUM_MOVES + 1
|
||||
ret z
|
||||
ld a, [wce37]
|
||||
dec a
|
||||
jr nz, .use
|
||||
ld a, [wMenuCursorY]
|
||||
inc a
|
||||
cp b
|
||||
jr nz, .skip
|
||||
.use
|
||||
ld a, [hl]
|
||||
and PP_UP_MASK
|
||||
call nz, ComputeMaxPP
|
||||
.skip
|
||||
inc hl
|
||||
inc de
|
||||
jr .loop
|
||||
|
||||
ComputeMaxPP: ; 03:792B
|
||||
push bc
|
||||
; Divide the base PP by 5.
|
||||
ld a, [de]
|
||||
ldh [hDividend + 3], a
|
||||
xor a
|
||||
ldh [hDividend], a
|
||||
ldh [hDividend + 1], a
|
||||
ldh [hDividend + 2], a
|
||||
ld a, 5
|
||||
ldh [hDivisor], a
|
||||
ld b, 4
|
||||
call Divide
|
||||
; Get the number of PP, which are bits 6 and 7 of the PP value stored in RAM.
|
||||
ld a, [hl]
|
||||
ld b, a
|
||||
swap a
|
||||
and $f
|
||||
srl a
|
||||
srl a
|
||||
ld c, a
|
||||
.loop
|
||||
; Normally, a move with 40 PP would have 64 PP with three PP Ups.
|
||||
; Since this would overflow into bit 6, we prevent that from happening
|
||||
; by decreasing the extra amount of PP each PP Up provides, resulting
|
||||
; in a maximum of 61.
|
||||
ldh a, [hQuotient + 2]
|
||||
cp $8
|
||||
jr c, .okay
|
||||
ld a, $7
|
||||
.okay
|
||||
add b
|
||||
ld b, a
|
||||
ld a, [wce37]
|
||||
dec a
|
||||
jr z, .no_pp_up
|
||||
dec c
|
||||
jr nz, .loop
|
||||
.no_pp_up
|
||||
ld [hl], b
|
||||
pop bc
|
||||
ret
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "ApplyPPUp", ROMX[$78f6], BANK[$03]
|
||||
|
||||
ApplyPPUp: ; 03:78f6
|
||||
ld a, MON_MOVES
|
||||
call GetPartyParamLocation
|
||||
push hl
|
||||
ld de, wStringBuffer1
|
||||
predef FillPP
|
||||
pop hl
|
||||
ld c, MON_PP - MON_MOVES
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
ld de, wStringBuffer1 + 1
|
||||
ld b, 0
|
||||
.loop
|
||||
inc b
|
||||
ld a, b
|
||||
cp NUM_MOVES + 1
|
||||
ret z
|
||||
ld a, [wce37]
|
||||
dec a
|
||||
jr nz, .use
|
||||
ld a, [wMenuCursorY]
|
||||
inc a
|
||||
cp b
|
||||
jr nz, .skip
|
||||
.use
|
||||
ld a, [hl]
|
||||
and PP_UP_MASK
|
||||
call nz, ComputeMaxPP
|
||||
.skip
|
||||
inc hl
|
||||
inc de
|
||||
jr .loop
|
||||
|
||||
ComputeMaxPP: ; 03:792B
|
||||
push bc
|
||||
; Divide the base PP by 5.
|
||||
ld a, [de]
|
||||
ldh [hDividend + 3], a
|
||||
xor a
|
||||
ldh [hDividend], a
|
||||
ldh [hDividend + 1], a
|
||||
ldh [hDividend + 2], a
|
||||
ld a, 5
|
||||
ldh [hDivisor], a
|
||||
ld b, 4
|
||||
call Divide
|
||||
; Get the number of PP, which are bits 6 and 7 of the PP value stored in RAM.
|
||||
ld a, [hl]
|
||||
ld b, a
|
||||
swap a
|
||||
and $f
|
||||
srl a
|
||||
srl a
|
||||
ld c, a
|
||||
.loop
|
||||
; Normally, a move with 40 PP would have 64 PP with three PP Ups.
|
||||
; Since this would overflow into bit 6, we prevent that from happening
|
||||
; by decreasing the extra amount of PP each PP Up provides, resulting
|
||||
; in a maximum of 61.
|
||||
ldh a, [hQuotient + 2]
|
||||
cp $8
|
||||
jr c, .okay
|
||||
ld a, $7
|
||||
.okay
|
||||
add b
|
||||
ld b, a
|
||||
ld a, [wce37]
|
||||
dec a
|
||||
jr z, .no_pp_up
|
||||
dec c
|
||||
jr nz, .loop
|
||||
.no_pp_up
|
||||
ld [hl], b
|
||||
pop bc
|
||||
ret
|
||||
|
||||
Executable → Regular
+157
-157
@@ -1,157 +1,157 @@
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "GetSpritesNextTile", ROMX[$774a], BANK[$01]
|
||||
|
||||
; Get the tile that the sprite will walk onto next
|
||||
GetSpritesNextTile: ; 01:774a
|
||||
ld hl, OBJECT_NEXT_MAP_X
|
||||
add hl, bc
|
||||
ld d, [hl]
|
||||
ld hl, OBJECT_NEXT_MAP_Y
|
||||
add hl, bc
|
||||
ld e, [hl]
|
||||
push bc
|
||||
call GetCoordTile
|
||||
pop bc
|
||||
ret
|
||||
|
||||
; Sets carry flag if the object (bc) next tile is a collision
|
||||
_IsObjectCollisionTileSolid: ; 01:775a
|
||||
call GetSpritesNextTile
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, CollisionTypeTable
|
||||
add hl, de
|
||||
ld a, BANK(CollisionTypeTable)
|
||||
call GetFarByte
|
||||
and ALWAYS_SOLID ; also covers SOMETIMES_SOLID
|
||||
ret z
|
||||
scf
|
||||
ret
|
||||
|
||||
|
||||
|
||||
SECTION "_CheckObjectCollision", ROMX[$77dd], BANK[$01]
|
||||
|
||||
; returns the carry flag if a sprite is at coords d, e
|
||||
; will not collide with sprite index stored in hEventCollisionException
|
||||
_CheckObjectCollision: ; 01:77dd
|
||||
ld bc, wObjectStructs
|
||||
xor a
|
||||
.loop
|
||||
ldh [hObjectStructIndexBuffer], a
|
||||
ld hl, OBJECT_SPRITE
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .next
|
||||
ld hl, OBJECT_NEXT_MAP_X
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp d
|
||||
jr nz, .check_last_position
|
||||
ld hl, OBJECT_NEXT_MAP_Y
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp e
|
||||
jr nz, .check_last_position
|
||||
ldh a, [hEventCollisionException]
|
||||
ld l, a
|
||||
ldh a, [hObjectStructIndexBuffer]
|
||||
cp l
|
||||
jr nz, .collision
|
||||
.check_last_position
|
||||
ld hl, OBJECT_MAP_X
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp d
|
||||
jr nz, .next
|
||||
ld hl, OBJECT_MAP_Y
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp e
|
||||
jr nz, .next
|
||||
ldh a, [hEventCollisionException]
|
||||
ld l, a
|
||||
ldh a, [hObjectStructIndexBuffer]
|
||||
cp l
|
||||
jr nz, .collision
|
||||
.next
|
||||
ld hl, OBJECT_LENGTH
|
||||
add hl, bc
|
||||
ld b, h
|
||||
ld c, l
|
||||
ldh a, [hObjectStructIndexBuffer]
|
||||
inc a
|
||||
cp NUM_OBJECT_STRUCTS
|
||||
jr nz, .loop
|
||||
and a
|
||||
ret
|
||||
|
||||
.collision
|
||||
scf
|
||||
ret
|
||||
|
||||
SECTION "_CheckPlayerObjectCollision", ROMX[$7894], BANK[$01]
|
||||
|
||||
; Sets the carry flag if the player will collide with another sprite's current or next position
|
||||
_CheckPlayerObjectCollision: ; 01:7894
|
||||
ld a, [wPlayerNextMapX]
|
||||
ld d, a
|
||||
ld a, [wPlayerNextMapY]
|
||||
ld e, a
|
||||
ld bc, wObjectStructs
|
||||
xor a
|
||||
|
||||
.loop
|
||||
ldh [hObjectStructIndexBuffer], a
|
||||
ld hl, OBJECT_SPRITE
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .next
|
||||
ld hl, OBJECT_NEXT_MAP_Y
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp e
|
||||
jr nz, .check_last_position
|
||||
ld hl, OBJECT_NEXT_MAP_X
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp d
|
||||
jr nz, .check_last_position
|
||||
|
||||
; skip the player sprite
|
||||
ldh a, [hObjectStructIndexBuffer]
|
||||
cp PLAYER_OBJECT_INDEX
|
||||
jr z, .next
|
||||
jr .collision
|
||||
|
||||
.check_last_position
|
||||
ld hl, OBJECT_MAP_Y
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp e
|
||||
jr nz, .next
|
||||
ld hl, OBJECT_MAP_X
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp d
|
||||
jr nz, .next
|
||||
jr .collision
|
||||
|
||||
.next
|
||||
ld hl, OBJECT_LENGTH
|
||||
add hl, bc
|
||||
ld b, h
|
||||
ld c, l
|
||||
ldh a, [hObjectStructIndexBuffer]
|
||||
inc a
|
||||
cp NUM_OBJECT_STRUCTS
|
||||
jr nz, .loop
|
||||
xor a
|
||||
ret
|
||||
|
||||
.collision
|
||||
scf
|
||||
ret
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "GetSpritesNextTile", ROMX[$774a], BANK[$01]
|
||||
|
||||
; Get the tile that the sprite will walk onto next
|
||||
GetSpritesNextTile: ; 01:774a
|
||||
ld hl, OBJECT_NEXT_MAP_X
|
||||
add hl, bc
|
||||
ld d, [hl]
|
||||
ld hl, OBJECT_NEXT_MAP_Y
|
||||
add hl, bc
|
||||
ld e, [hl]
|
||||
push bc
|
||||
call GetCoordTile
|
||||
pop bc
|
||||
ret
|
||||
|
||||
; Sets carry flag if the object (bc) next tile is a collision
|
||||
_IsObjectCollisionTileSolid: ; 01:775a
|
||||
call GetSpritesNextTile
|
||||
ld e, a
|
||||
ld d, 0
|
||||
ld hl, CollisionTypeTable
|
||||
add hl, de
|
||||
ld a, BANK(CollisionTypeTable)
|
||||
call GetFarByte
|
||||
and ALWAYS_SOLID ; also covers SOMETIMES_SOLID
|
||||
ret z
|
||||
scf
|
||||
ret
|
||||
|
||||
|
||||
|
||||
SECTION "_CheckObjectCollision", ROMX[$77dd], BANK[$01]
|
||||
|
||||
; returns the carry flag if a sprite is at coords d, e
|
||||
; will not collide with sprite index stored in hEventCollisionException
|
||||
_CheckObjectCollision: ; 01:77dd
|
||||
ld bc, wObjectStructs
|
||||
xor a
|
||||
.loop
|
||||
ldh [hObjectStructIndexBuffer], a
|
||||
ld hl, OBJECT_SPRITE
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .next
|
||||
ld hl, OBJECT_NEXT_MAP_X
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp d
|
||||
jr nz, .check_last_position
|
||||
ld hl, OBJECT_NEXT_MAP_Y
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp e
|
||||
jr nz, .check_last_position
|
||||
ldh a, [hEventCollisionException]
|
||||
ld l, a
|
||||
ldh a, [hObjectStructIndexBuffer]
|
||||
cp l
|
||||
jr nz, .collision
|
||||
.check_last_position
|
||||
ld hl, OBJECT_MAP_X
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp d
|
||||
jr nz, .next
|
||||
ld hl, OBJECT_MAP_Y
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp e
|
||||
jr nz, .next
|
||||
ldh a, [hEventCollisionException]
|
||||
ld l, a
|
||||
ldh a, [hObjectStructIndexBuffer]
|
||||
cp l
|
||||
jr nz, .collision
|
||||
.next
|
||||
ld hl, OBJECT_LENGTH
|
||||
add hl, bc
|
||||
ld b, h
|
||||
ld c, l
|
||||
ldh a, [hObjectStructIndexBuffer]
|
||||
inc a
|
||||
cp NUM_OBJECT_STRUCTS
|
||||
jr nz, .loop
|
||||
and a
|
||||
ret
|
||||
|
||||
.collision
|
||||
scf
|
||||
ret
|
||||
|
||||
SECTION "_CheckPlayerObjectCollision", ROMX[$7894], BANK[$01]
|
||||
|
||||
; Sets the carry flag if the player will collide with another sprite's current or next position
|
||||
_CheckPlayerObjectCollision: ; 01:7894
|
||||
ld a, [wPlayerNextMapX]
|
||||
ld d, a
|
||||
ld a, [wPlayerNextMapY]
|
||||
ld e, a
|
||||
ld bc, wObjectStructs
|
||||
xor a
|
||||
|
||||
.loop
|
||||
ldh [hObjectStructIndexBuffer], a
|
||||
ld hl, OBJECT_SPRITE
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .next
|
||||
ld hl, OBJECT_NEXT_MAP_Y
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp e
|
||||
jr nz, .check_last_position
|
||||
ld hl, OBJECT_NEXT_MAP_X
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp d
|
||||
jr nz, .check_last_position
|
||||
|
||||
; skip the player sprite
|
||||
ldh a, [hObjectStructIndexBuffer]
|
||||
cp PLAYER_OBJECT_INDEX
|
||||
jr z, .next
|
||||
jr .collision
|
||||
|
||||
.check_last_position
|
||||
ld hl, OBJECT_MAP_Y
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp e
|
||||
jr nz, .next
|
||||
ld hl, OBJECT_MAP_X
|
||||
add hl, bc
|
||||
ld a, [hl]
|
||||
cp d
|
||||
jr nz, .next
|
||||
jr .collision
|
||||
|
||||
.next
|
||||
ld hl, OBJECT_LENGTH
|
||||
add hl, bc
|
||||
ld b, h
|
||||
ld c, l
|
||||
ldh a, [hObjectStructIndexBuffer]
|
||||
inc a
|
||||
cp NUM_OBJECT_STRUCTS
|
||||
jr nz, .loop
|
||||
xor a
|
||||
ret
|
||||
|
||||
.collision
|
||||
scf
|
||||
ret
|
||||
|
||||
@@ -1,59 +1,59 @@
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "LoadSpawnPoint", ROMX[$4791], BANK[$03]
|
||||
|
||||
LoadSpawnPoint: ; 03:4791
|
||||
; loads the spawn point in wDefaultSpawnPoint
|
||||
push hl
|
||||
push de
|
||||
ld a, [wDefaultSpawnPoint]
|
||||
and a
|
||||
jr z, .skip
|
||||
dec a
|
||||
ld l, a
|
||||
ld h, 0
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
ld de, SpawnPoints
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld [wMapGroup], a
|
||||
ld a, [hli]
|
||||
ld [wMapId], a
|
||||
ld a, [hli]
|
||||
ld [wXCoord], a
|
||||
ld a, [hli]
|
||||
ld [wYCoord], a
|
||||
.skip
|
||||
pop de
|
||||
pop hl
|
||||
ret
|
||||
|
||||
IsSpawnPoint: ; 03:47b6
|
||||
; Checks if the map loaded in de is a spawn point.
|
||||
; Returns carry if it's a spawn point.
|
||||
ld hl, SpawnPoints
|
||||
ld c, 1
|
||||
.loop
|
||||
ld a, [hl]
|
||||
cp SPAWN_N_A
|
||||
jr z, .fail
|
||||
cp d
|
||||
jr nz, .next
|
||||
inc hl
|
||||
ld a, [hld]
|
||||
cp e
|
||||
jr z, .succeed
|
||||
.next
|
||||
push bc
|
||||
ld bc, SPAWN_POINT_SIZE
|
||||
add hl, bc
|
||||
pop bc
|
||||
inc c
|
||||
jr .loop
|
||||
.fail
|
||||
and a
|
||||
ret
|
||||
.succeed
|
||||
scf
|
||||
ret
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "LoadSpawnPoint", ROMX[$4791], BANK[$03]
|
||||
|
||||
LoadSpawnPoint: ; 03:4791
|
||||
; loads the spawn point in wDefaultSpawnPoint
|
||||
push hl
|
||||
push de
|
||||
ld a, [wDefaultSpawnPoint]
|
||||
and a
|
||||
jr z, .skip
|
||||
dec a
|
||||
ld l, a
|
||||
ld h, 0
|
||||
add hl, hl
|
||||
add hl, hl
|
||||
ld de, SpawnPoints
|
||||
add hl, de
|
||||
ld a, [hli]
|
||||
ld [wMapGroup], a
|
||||
ld a, [hli]
|
||||
ld [wMapId], a
|
||||
ld a, [hli]
|
||||
ld [wXCoord], a
|
||||
ld a, [hli]
|
||||
ld [wYCoord], a
|
||||
.skip
|
||||
pop de
|
||||
pop hl
|
||||
ret
|
||||
|
||||
IsSpawnPoint: ; 03:47b6
|
||||
; Checks if the map loaded in de is a spawn point.
|
||||
; Returns carry if it's a spawn point.
|
||||
ld hl, SpawnPoints
|
||||
ld c, 1
|
||||
.loop
|
||||
ld a, [hl]
|
||||
cp SPAWN_N_A
|
||||
jr z, .fail
|
||||
cp d
|
||||
jr nz, .next
|
||||
inc hl
|
||||
ld a, [hld]
|
||||
cp e
|
||||
jr z, .succeed
|
||||
.next
|
||||
push bc
|
||||
ld bc, SPAWN_POINT_SIZE
|
||||
add hl, bc
|
||||
pop bc
|
||||
inc c
|
||||
jr .loop
|
||||
.fail
|
||||
and a
|
||||
ret
|
||||
.succeed
|
||||
scf
|
||||
ret
|
||||
|
||||
+358
-358
@@ -1,358 +1,358 @@
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "HealParty", ROMX[$4d6f], BANK[$03]
|
||||
|
||||
HealParty: ; 03:4d6f
|
||||
ld hl, wPartySpecies
|
||||
ld de, wPartyMons
|
||||
|
||||
.party_loop
|
||||
ld a, [hli]
|
||||
cp -1
|
||||
jr z, .party_done
|
||||
push hl
|
||||
push de
|
||||
|
||||
; Clear the status
|
||||
ld hl, MON_STATUS
|
||||
add hl, de
|
||||
xor a
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
|
||||
; Reset the PP
|
||||
ld hl, MON_MOVES
|
||||
add hl, de
|
||||
ld b, NUM_MOVES
|
||||
|
||||
.move_loop
|
||||
push hl
|
||||
push bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .next_move
|
||||
dec a
|
||||
push hl
|
||||
ld hl, Moves
|
||||
ld bc, MOVE_DATA_SIZE
|
||||
call AddNTimes
|
||||
ld a, BANK(Moves)
|
||||
call GetFarByte
|
||||
pop hl
|
||||
ld bc, MON_PP - MON_MOVES
|
||||
add hl, bc
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
and PP_UP_MASK
|
||||
add b
|
||||
ld [hl], a
|
||||
|
||||
.next_move
|
||||
pop bc
|
||||
pop hl
|
||||
inc hl
|
||||
dec b
|
||||
jr nz, .move_loop
|
||||
|
||||
; Reset the HP
|
||||
pop de
|
||||
push de
|
||||
ld hl, MON_MAXHP
|
||||
add hl, de
|
||||
ld b, h
|
||||
ld c, l
|
||||
dec bc
|
||||
dec bc
|
||||
ld a, [hli]
|
||||
ld [bc], a
|
||||
inc bc
|
||||
ld a, [hl]
|
||||
ld [bc], a
|
||||
pop de
|
||||
pop hl
|
||||
push hl
|
||||
ld hl, PARTYMON_STRUCT_LENGTH
|
||||
add hl, de
|
||||
ld d, h
|
||||
ld e, l
|
||||
pop hl
|
||||
jr .party_loop
|
||||
|
||||
.party_done
|
||||
xor a
|
||||
ld [wWhichPokemon], a
|
||||
ld [wce37], a
|
||||
ld a, [wPartyCount]
|
||||
ld b, a
|
||||
|
||||
.pp_up
|
||||
push bc
|
||||
call ApplyPPUp
|
||||
pop bc
|
||||
ld hl, wWhichPokemon
|
||||
inc [hl]
|
||||
dec b
|
||||
jr nz, .pp_up
|
||||
ret
|
||||
|
||||
SECTION "HP Bar", ROMX[$4e3c], BANK[$03]
|
||||
|
||||
ComputeHPBarPixels: ; 03:4e3c
|
||||
push hl
|
||||
xor a
|
||||
ldh [hMultiplicand], a
|
||||
ld a, b
|
||||
ldh [hMultiplicand + 1], a
|
||||
ld a, c
|
||||
ldh [hMultiplicand + 2], a
|
||||
ld a, HP_BAR_LENGTH_PX
|
||||
ldh [hMultiplier], a
|
||||
call Multiply
|
||||
; We need de to be under 256 because hDivisor is only 1 byte.
|
||||
ld a, d
|
||||
and a
|
||||
jr z, .divide
|
||||
; divide de and hProduct by 4
|
||||
srl d
|
||||
rr e
|
||||
srl d
|
||||
rr e
|
||||
ldh a, [hProduct + 2]
|
||||
ld b, a
|
||||
ldh a, [hProduct + 3]
|
||||
srl b
|
||||
rr a
|
||||
srl b
|
||||
rr a
|
||||
ldh [hDividend + 3], a
|
||||
ld a, b
|
||||
ldh [hDividend + 2], a
|
||||
.divide
|
||||
ld a, e
|
||||
ldh [hDivisor], a
|
||||
ld b, 4
|
||||
call Divide
|
||||
ldh a, [hQuotient + 2]
|
||||
ld e, a
|
||||
pop hl
|
||||
and a
|
||||
ret nz
|
||||
ld e, 1
|
||||
ret
|
||||
|
||||
UpdateHPBar: ; 03:4e7c
|
||||
ld a, [wHPBarOldHP]
|
||||
ld c, a
|
||||
ld a, [wHPBarOldHP + 1]
|
||||
ld b, a
|
||||
ld a, [wHPBarNewHP]
|
||||
ld e, a
|
||||
ld a, [wHPBarNewHP + 1]
|
||||
ld d, a
|
||||
push de
|
||||
push bc
|
||||
call UpdateHPBar_CalcHPDifference
|
||||
ld a, e
|
||||
ld [wHPBarHPDifference + 1], a
|
||||
ld a, d
|
||||
ld [wHPBarHPDifference], a
|
||||
pop bc
|
||||
pop de
|
||||
call UpdateHPBar_CompareNewHPToOldHP
|
||||
ret z
|
||||
ld a, -1
|
||||
jr c, .hp_decrease
|
||||
ld a, 1
|
||||
.hp_decrease
|
||||
ld [wHPBarDelta], a
|
||||
ld a, [wHPBarNewHP]
|
||||
ld e, a
|
||||
ld a, [wHPBarNewHP + 1]
|
||||
ld d, a
|
||||
.animate_hp_bar_loop
|
||||
push de
|
||||
ld a, [wHPBarOldHP]
|
||||
ld c, a
|
||||
ld a, [wHPBarOldHP + 1]
|
||||
ld b, a
|
||||
call UpdateHPBar_CompareNewHPToOldHP
|
||||
jr z, .animate_hp_bar_done
|
||||
jr nc, .hp_increase
|
||||
|
||||
;hp_decrease
|
||||
dec bc
|
||||
ld a, c
|
||||
ld [wHPBarNewHP], a
|
||||
ld a, b
|
||||
ld [wHPBarNewHP + 1], a
|
||||
call UpdateHPBar_CalcOldNewHPBarPixels
|
||||
ld a, e
|
||||
sub d
|
||||
jr .apply
|
||||
.hp_increase
|
||||
inc bc
|
||||
ld a, c
|
||||
ld [wHPBarNewHP], a
|
||||
ld a, b
|
||||
ld [wHPBarNewHP + 1], a
|
||||
call UpdateHPBar_CalcOldNewHPBarPixels
|
||||
ld a, d
|
||||
sub e
|
||||
.apply
|
||||
call UpdateHPBar_PrintHPNumber
|
||||
and a
|
||||
jr z, .no_pixel_difference
|
||||
call UpdateHPBar_AnimateHPBar
|
||||
.no_pixel_difference
|
||||
ld a, [wHPBarNewHP]
|
||||
ld [wHPBarOldHP], a
|
||||
ld a, [wHPBarNewHP + 1]
|
||||
ld [wHPBarOldHP + 1], a
|
||||
pop de
|
||||
jr .animate_hp_bar_loop
|
||||
.animate_hp_bar_done
|
||||
pop de
|
||||
ld a, e
|
||||
ld [wHPBarOldHP], a
|
||||
ld a, d
|
||||
ld [wHPBarOldHP + 1], a
|
||||
or e
|
||||
jr z, .mon_fainted
|
||||
call UpdateHPBar_CalcOldNewHPBarPixels
|
||||
ld d, e
|
||||
.mon_fainted
|
||||
call UpdateHPBar_PrintHPNumber
|
||||
ld a, 1
|
||||
call UpdateHPBar_AnimateHPBar
|
||||
jp WaitBGMap
|
||||
|
||||
; animates the HP bar going up or down for (a) ticks (two waiting frames each)
|
||||
; stops prematurely if bar is filled up
|
||||
; e: current health (in pixels) to start with
|
||||
UpdateHPBar_AnimateHPBar: ; 03:4F11
|
||||
push hl
|
||||
|
||||
.bar_animation_loop
|
||||
push af
|
||||
push de
|
||||
ld d, HP_BAR_LENGTH
|
||||
ld a, [wHPBarType]
|
||||
and BATTLE_HP_BAR
|
||||
ld b, a
|
||||
call DrawBattleHPBar
|
||||
ld c, 2
|
||||
call DelayFrames
|
||||
pop de
|
||||
ld a, [wHPBarDelta]
|
||||
add e
|
||||
cp HP_BAR_LENGTH_PX + 1
|
||||
jr nc, .bar_filled_up
|
||||
ld e, a
|
||||
pop af
|
||||
dec a
|
||||
jr nz, .bar_animation_loop
|
||||
pop hl
|
||||
ret
|
||||
.bar_filled_up
|
||||
pop af
|
||||
pop hl
|
||||
ret
|
||||
|
||||
; compares old HP and new HP and sets c and z flags accordingly
|
||||
UpdateHPBar_CompareNewHPToOldHP: ; 03:4F37
|
||||
ld a, d
|
||||
sub b
|
||||
ret nz
|
||||
ld a, e
|
||||
sub c
|
||||
ret
|
||||
|
||||
; calcs HP difference between bc and de (into de)
|
||||
UpdateHPBar_CalcHPDifference: ; 03:4F3D
|
||||
ld a, d
|
||||
sub b
|
||||
jr c, .old_hp_greater
|
||||
jr z, .test_lower_byte
|
||||
.new_hp_greater
|
||||
ld a, e
|
||||
sub c
|
||||
ld e, a
|
||||
ld a, d
|
||||
sbc b
|
||||
ld d, a
|
||||
ret
|
||||
.old_hp_greater
|
||||
ld a, c
|
||||
sub e
|
||||
ld e, a
|
||||
ld a, b
|
||||
sbc d
|
||||
ld d, a
|
||||
ret
|
||||
.test_lower_byte
|
||||
ld a, e
|
||||
sub c
|
||||
jr c, .old_hp_greater
|
||||
jr nz, .new_hp_greater
|
||||
ld de, 0
|
||||
ret
|
||||
|
||||
UpdateHPBar_PrintHPNumber: ; 03:4F5B
|
||||
push af
|
||||
push de
|
||||
ld a, [wHPBarType]
|
||||
and a
|
||||
jr z, .done
|
||||
ld a, [wHPBarOldHP]
|
||||
ld [wHPBarTempHP + 1], a
|
||||
ld a, [wHPBarOldHP + 1]
|
||||
ld [wHPBarTempHP], a
|
||||
push hl
|
||||
ld de, SCREEN_WIDTH + 1
|
||||
add hl, de
|
||||
push hl
|
||||
ld a, " "
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
pop hl
|
||||
ld de, wHPBarTempHP
|
||||
lb bc, 2, 3
|
||||
call PrintNumber
|
||||
call DelayFrame
|
||||
pop hl
|
||||
.done
|
||||
pop de
|
||||
pop af
|
||||
ret
|
||||
|
||||
; calcs number of HP bar pixels for old and new HP value
|
||||
; d: new pixels
|
||||
; e: old pixels
|
||||
UpdateHPBar_CalcOldNewHPBarPixels: ; 03:4F8B
|
||||
push hl
|
||||
ld hl, wHPBarMaxHP
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld a, [hli]
|
||||
ld b, a
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
push hl
|
||||
push de
|
||||
call ComputeHPBarPixels
|
||||
ld a, e
|
||||
pop de
|
||||
pop bc
|
||||
push af
|
||||
call ComputeHPBarPixels
|
||||
pop af
|
||||
ld d, e
|
||||
ld e, a
|
||||
pop hl
|
||||
ret
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "HealParty", ROMX[$4d6f], BANK[$03]
|
||||
|
||||
HealParty: ; 03:4d6f
|
||||
ld hl, wPartySpecies
|
||||
ld de, wPartyMons
|
||||
|
||||
.party_loop
|
||||
ld a, [hli]
|
||||
cp -1
|
||||
jr z, .party_done
|
||||
push hl
|
||||
push de
|
||||
|
||||
; Clear the status
|
||||
ld hl, MON_STATUS
|
||||
add hl, de
|
||||
xor a
|
||||
ld [hli], a
|
||||
ld [hl], a
|
||||
|
||||
; Reset the PP
|
||||
ld hl, MON_MOVES
|
||||
add hl, de
|
||||
ld b, NUM_MOVES
|
||||
|
||||
.move_loop
|
||||
push hl
|
||||
push bc
|
||||
ld a, [hl]
|
||||
and a
|
||||
jr z, .next_move
|
||||
dec a
|
||||
push hl
|
||||
ld hl, Moves
|
||||
ld bc, MOVE_DATA_SIZE
|
||||
call AddNTimes
|
||||
ld a, BANK(Moves)
|
||||
call GetFarByte
|
||||
pop hl
|
||||
ld bc, MON_PP - MON_MOVES
|
||||
add hl, bc
|
||||
ld b, a
|
||||
ld a, [hl]
|
||||
and PP_UP_MASK
|
||||
add b
|
||||
ld [hl], a
|
||||
|
||||
.next_move
|
||||
pop bc
|
||||
pop hl
|
||||
inc hl
|
||||
dec b
|
||||
jr nz, .move_loop
|
||||
|
||||
; Reset the HP
|
||||
pop de
|
||||
push de
|
||||
ld hl, MON_MAXHP
|
||||
add hl, de
|
||||
ld b, h
|
||||
ld c, l
|
||||
dec bc
|
||||
dec bc
|
||||
ld a, [hli]
|
||||
ld [bc], a
|
||||
inc bc
|
||||
ld a, [hl]
|
||||
ld [bc], a
|
||||
pop de
|
||||
pop hl
|
||||
push hl
|
||||
ld hl, PARTYMON_STRUCT_LENGTH
|
||||
add hl, de
|
||||
ld d, h
|
||||
ld e, l
|
||||
pop hl
|
||||
jr .party_loop
|
||||
|
||||
.party_done
|
||||
xor a
|
||||
ld [wWhichPokemon], a
|
||||
ld [wce37], a
|
||||
ld a, [wPartyCount]
|
||||
ld b, a
|
||||
|
||||
.pp_up
|
||||
push bc
|
||||
call ApplyPPUp
|
||||
pop bc
|
||||
ld hl, wWhichPokemon
|
||||
inc [hl]
|
||||
dec b
|
||||
jr nz, .pp_up
|
||||
ret
|
||||
|
||||
SECTION "HP Bar", ROMX[$4e3c], BANK[$03]
|
||||
|
||||
ComputeHPBarPixels: ; 03:4e3c
|
||||
push hl
|
||||
xor a
|
||||
ldh [hMultiplicand], a
|
||||
ld a, b
|
||||
ldh [hMultiplicand + 1], a
|
||||
ld a, c
|
||||
ldh [hMultiplicand + 2], a
|
||||
ld a, HP_BAR_LENGTH_PX
|
||||
ldh [hMultiplier], a
|
||||
call Multiply
|
||||
; We need de to be under 256 because hDivisor is only 1 byte.
|
||||
ld a, d
|
||||
and a
|
||||
jr z, .divide
|
||||
; divide de and hProduct by 4
|
||||
srl d
|
||||
rr e
|
||||
srl d
|
||||
rr e
|
||||
ldh a, [hProduct + 2]
|
||||
ld b, a
|
||||
ldh a, [hProduct + 3]
|
||||
srl b
|
||||
rr a
|
||||
srl b
|
||||
rr a
|
||||
ldh [hDividend + 3], a
|
||||
ld a, b
|
||||
ldh [hDividend + 2], a
|
||||
.divide
|
||||
ld a, e
|
||||
ldh [hDivisor], a
|
||||
ld b, 4
|
||||
call Divide
|
||||
ldh a, [hQuotient + 2]
|
||||
ld e, a
|
||||
pop hl
|
||||
and a
|
||||
ret nz
|
||||
ld e, 1
|
||||
ret
|
||||
|
||||
UpdateHPBar: ; 03:4e7c
|
||||
ld a, [wHPBarOldHP]
|
||||
ld c, a
|
||||
ld a, [wHPBarOldHP + 1]
|
||||
ld b, a
|
||||
ld a, [wHPBarNewHP]
|
||||
ld e, a
|
||||
ld a, [wHPBarNewHP + 1]
|
||||
ld d, a
|
||||
push de
|
||||
push bc
|
||||
call UpdateHPBar_CalcHPDifference
|
||||
ld a, e
|
||||
ld [wHPBarHPDifference + 1], a
|
||||
ld a, d
|
||||
ld [wHPBarHPDifference], a
|
||||
pop bc
|
||||
pop de
|
||||
call UpdateHPBar_CompareNewHPToOldHP
|
||||
ret z
|
||||
ld a, -1
|
||||
jr c, .hp_decrease
|
||||
ld a, 1
|
||||
.hp_decrease
|
||||
ld [wHPBarDelta], a
|
||||
ld a, [wHPBarNewHP]
|
||||
ld e, a
|
||||
ld a, [wHPBarNewHP + 1]
|
||||
ld d, a
|
||||
.animate_hp_bar_loop
|
||||
push de
|
||||
ld a, [wHPBarOldHP]
|
||||
ld c, a
|
||||
ld a, [wHPBarOldHP + 1]
|
||||
ld b, a
|
||||
call UpdateHPBar_CompareNewHPToOldHP
|
||||
jr z, .animate_hp_bar_done
|
||||
jr nc, .hp_increase
|
||||
|
||||
;hp_decrease
|
||||
dec bc
|
||||
ld a, c
|
||||
ld [wHPBarNewHP], a
|
||||
ld a, b
|
||||
ld [wHPBarNewHP + 1], a
|
||||
call UpdateHPBar_CalcOldNewHPBarPixels
|
||||
ld a, e
|
||||
sub d
|
||||
jr .apply
|
||||
.hp_increase
|
||||
inc bc
|
||||
ld a, c
|
||||
ld [wHPBarNewHP], a
|
||||
ld a, b
|
||||
ld [wHPBarNewHP + 1], a
|
||||
call UpdateHPBar_CalcOldNewHPBarPixels
|
||||
ld a, d
|
||||
sub e
|
||||
.apply
|
||||
call UpdateHPBar_PrintHPNumber
|
||||
and a
|
||||
jr z, .no_pixel_difference
|
||||
call UpdateHPBar_AnimateHPBar
|
||||
.no_pixel_difference
|
||||
ld a, [wHPBarNewHP]
|
||||
ld [wHPBarOldHP], a
|
||||
ld a, [wHPBarNewHP + 1]
|
||||
ld [wHPBarOldHP + 1], a
|
||||
pop de
|
||||
jr .animate_hp_bar_loop
|
||||
.animate_hp_bar_done
|
||||
pop de
|
||||
ld a, e
|
||||
ld [wHPBarOldHP], a
|
||||
ld a, d
|
||||
ld [wHPBarOldHP + 1], a
|
||||
or e
|
||||
jr z, .mon_fainted
|
||||
call UpdateHPBar_CalcOldNewHPBarPixels
|
||||
ld d, e
|
||||
.mon_fainted
|
||||
call UpdateHPBar_PrintHPNumber
|
||||
ld a, 1
|
||||
call UpdateHPBar_AnimateHPBar
|
||||
jp WaitBGMap
|
||||
|
||||
; animates the HP bar going up or down for (a) ticks (two waiting frames each)
|
||||
; stops prematurely if bar is filled up
|
||||
; e: current health (in pixels) to start with
|
||||
UpdateHPBar_AnimateHPBar: ; 03:4F11
|
||||
push hl
|
||||
|
||||
.bar_animation_loop
|
||||
push af
|
||||
push de
|
||||
ld d, HP_BAR_LENGTH
|
||||
ld a, [wHPBarType]
|
||||
and BATTLE_HP_BAR
|
||||
ld b, a
|
||||
call DrawBattleHPBar
|
||||
ld c, 2
|
||||
call DelayFrames
|
||||
pop de
|
||||
ld a, [wHPBarDelta]
|
||||
add e
|
||||
cp HP_BAR_LENGTH_PX + 1
|
||||
jr nc, .bar_filled_up
|
||||
ld e, a
|
||||
pop af
|
||||
dec a
|
||||
jr nz, .bar_animation_loop
|
||||
pop hl
|
||||
ret
|
||||
.bar_filled_up
|
||||
pop af
|
||||
pop hl
|
||||
ret
|
||||
|
||||
; compares old HP and new HP and sets c and z flags accordingly
|
||||
UpdateHPBar_CompareNewHPToOldHP: ; 03:4F37
|
||||
ld a, d
|
||||
sub b
|
||||
ret nz
|
||||
ld a, e
|
||||
sub c
|
||||
ret
|
||||
|
||||
; calcs HP difference between bc and de (into de)
|
||||
UpdateHPBar_CalcHPDifference: ; 03:4F3D
|
||||
ld a, d
|
||||
sub b
|
||||
jr c, .old_hp_greater
|
||||
jr z, .test_lower_byte
|
||||
.new_hp_greater
|
||||
ld a, e
|
||||
sub c
|
||||
ld e, a
|
||||
ld a, d
|
||||
sbc b
|
||||
ld d, a
|
||||
ret
|
||||
.old_hp_greater
|
||||
ld a, c
|
||||
sub e
|
||||
ld e, a
|
||||
ld a, b
|
||||
sbc d
|
||||
ld d, a
|
||||
ret
|
||||
.test_lower_byte
|
||||
ld a, e
|
||||
sub c
|
||||
jr c, .old_hp_greater
|
||||
jr nz, .new_hp_greater
|
||||
ld de, 0
|
||||
ret
|
||||
|
||||
UpdateHPBar_PrintHPNumber: ; 03:4F5B
|
||||
push af
|
||||
push de
|
||||
ld a, [wHPBarType]
|
||||
and a
|
||||
jr z, .done
|
||||
ld a, [wHPBarOldHP]
|
||||
ld [wHPBarTempHP + 1], a
|
||||
ld a, [wHPBarOldHP + 1]
|
||||
ld [wHPBarTempHP], a
|
||||
push hl
|
||||
ld de, SCREEN_WIDTH + 1
|
||||
add hl, de
|
||||
push hl
|
||||
ld a, " "
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
ld [hli], a
|
||||
pop hl
|
||||
ld de, wHPBarTempHP
|
||||
lb bc, 2, 3
|
||||
call PrintNumber
|
||||
call DelayFrame
|
||||
pop hl
|
||||
.done
|
||||
pop de
|
||||
pop af
|
||||
ret
|
||||
|
||||
; calcs number of HP bar pixels for old and new HP value
|
||||
; d: new pixels
|
||||
; e: old pixels
|
||||
UpdateHPBar_CalcOldNewHPBarPixels: ; 03:4F8B
|
||||
push hl
|
||||
ld hl, wHPBarMaxHP
|
||||
ld a, [hli]
|
||||
ld e, a
|
||||
ld a, [hli]
|
||||
ld d, a
|
||||
ld a, [hli]
|
||||
ld c, a
|
||||
ld a, [hli]
|
||||
ld b, a
|
||||
ld a, [hli]
|
||||
ld h, [hl]
|
||||
ld l, a
|
||||
push hl
|
||||
push de
|
||||
call ComputeHPBarPixels
|
||||
ld a, e
|
||||
pop de
|
||||
pop bc
|
||||
push af
|
||||
call ComputeHPBarPixels
|
||||
pop af
|
||||
ld d, e
|
||||
ld e, a
|
||||
pop hl
|
||||
ret
|
||||
|
||||
+71
-71
@@ -1,72 +1,72 @@
|
||||
SECTION "SmallFarFlagAction", ROMX[$4d33], BANK[$03]
|
||||
|
||||
SmallFarFlagAction: ; 03:4d33
|
||||
; Perform action b on bit c in flag array hl.
|
||||
; If checking a flag, check flag array d:hl unless d is 0.
|
||||
|
||||
; For longer flag arrays, see FlagAction.
|
||||
|
||||
push hl
|
||||
push bc
|
||||
|
||||
; Divide by 8 to get the byte we want.
|
||||
push bc
|
||||
srl c
|
||||
srl c
|
||||
srl c
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
pop bc
|
||||
|
||||
; Which bit we want from the byte
|
||||
ld a, c
|
||||
and 7
|
||||
ld c, a
|
||||
|
||||
; Shift left until we can mask the bit
|
||||
ld a, 1
|
||||
jr z, .shifted
|
||||
.shift
|
||||
add a
|
||||
dec c
|
||||
jr nz, .shift
|
||||
.shifted
|
||||
ld c, a
|
||||
|
||||
; What are we doing to this flag?
|
||||
dec b
|
||||
jr z, .set ; 1
|
||||
dec b
|
||||
jr z, .check ; 2
|
||||
|
||||
.reset
|
||||
ld a, c
|
||||
cpl
|
||||
and [hl]
|
||||
ld [hl], a
|
||||
jr .done
|
||||
|
||||
.set
|
||||
ld a, [hl]
|
||||
or c
|
||||
ld [hl], a
|
||||
jr .done
|
||||
|
||||
.check
|
||||
ld a, d
|
||||
cp 0
|
||||
jr nz, .farcheck
|
||||
|
||||
ld a, [hl]
|
||||
and c
|
||||
jr .done
|
||||
|
||||
.farcheck
|
||||
call GetFarByte
|
||||
and c
|
||||
|
||||
.done
|
||||
pop bc
|
||||
pop hl
|
||||
ld c, a
|
||||
SECTION "SmallFarFlagAction", ROMX[$4d33], BANK[$03]
|
||||
|
||||
SmallFarFlagAction: ; 03:4d33
|
||||
; Perform action b on bit c in flag array hl.
|
||||
; If checking a flag, check flag array d:hl unless d is 0.
|
||||
|
||||
; For longer flag arrays, see FlagAction.
|
||||
|
||||
push hl
|
||||
push bc
|
||||
|
||||
; Divide by 8 to get the byte we want.
|
||||
push bc
|
||||
srl c
|
||||
srl c
|
||||
srl c
|
||||
ld b, 0
|
||||
add hl, bc
|
||||
pop bc
|
||||
|
||||
; Which bit we want from the byte
|
||||
ld a, c
|
||||
and 7
|
||||
ld c, a
|
||||
|
||||
; Shift left until we can mask the bit
|
||||
ld a, 1
|
||||
jr z, .shifted
|
||||
.shift
|
||||
add a
|
||||
dec c
|
||||
jr nz, .shift
|
||||
.shifted
|
||||
ld c, a
|
||||
|
||||
; What are we doing to this flag?
|
||||
dec b
|
||||
jr z, .set ; 1
|
||||
dec b
|
||||
jr z, .check ; 2
|
||||
|
||||
.reset
|
||||
ld a, c
|
||||
cpl
|
||||
and [hl]
|
||||
ld [hl], a
|
||||
jr .done
|
||||
|
||||
.set
|
||||
ld a, [hl]
|
||||
or c
|
||||
ld [hl], a
|
||||
jr .done
|
||||
|
||||
.check
|
||||
ld a, d
|
||||
cp 0
|
||||
jr nz, .farcheck
|
||||
|
||||
ld a, [hl]
|
||||
and c
|
||||
jr .done
|
||||
|
||||
.farcheck
|
||||
call GetFarByte
|
||||
and c
|
||||
|
||||
.done
|
||||
pop bc
|
||||
pop hl
|
||||
ld c, a
|
||||
ret
|
||||
@@ -1,55 +1,55 @@
|
||||
AnnonPicPtrs::
|
||||
AnnonPicPtrsFront::
|
||||
dw AnnonAPicFront
|
||||
AnnonPicPtrsBack::
|
||||
dw AnnonAPicBack
|
||||
dw AnnonBPicFront
|
||||
dw AnnonBPicBack
|
||||
dw AnnonCPicFront
|
||||
dw AnnonCPicBack
|
||||
dw AnnonDPicFront
|
||||
dw AnnonDPicBack
|
||||
dw AnnonEPicFront
|
||||
dw AnnonEPicBack
|
||||
dw AnnonFPicFront
|
||||
dw AnnonFPicBack
|
||||
dw AnnonGPicFront
|
||||
dw AnnonGPicBack
|
||||
dw AnnonHPicFront
|
||||
dw AnnonHPicBack
|
||||
dw AnnonIPicFront
|
||||
dw AnnonIPicBack
|
||||
dw AnnonJPicFront
|
||||
dw AnnonJPicBack
|
||||
dw AnnonKPicFront
|
||||
dw AnnonKPicBack
|
||||
dw AnnonLPicFront
|
||||
dw AnnonLPicBack
|
||||
dw AnnonMPicFront
|
||||
dw AnnonMPicBack
|
||||
dw AnnonNPicFront
|
||||
dw AnnonNPicBack
|
||||
dw AnnonOPicFront
|
||||
dw AnnonOPicBack
|
||||
dw AnnonPPicFront
|
||||
dw AnnonPPicBack
|
||||
dw AnnonQPicFront
|
||||
dw AnnonQPicBack
|
||||
dw AnnonRPicFront
|
||||
dw AnnonRPicBack
|
||||
dw AnnonSPicFront
|
||||
dw AnnonSPicBack
|
||||
dw AnnonTPicFront
|
||||
dw AnnonTPicBack
|
||||
dw AnnonUPicFront
|
||||
dw AnnonUPicBack
|
||||
dw AnnonVPicFront
|
||||
dw AnnonVPicBack
|
||||
dw AnnonWPicFront
|
||||
dw AnnonWPicBack
|
||||
dw AnnonXPicFront
|
||||
dw AnnonXPicBack
|
||||
dw AnnonYPicFront
|
||||
dw AnnonYPicBack
|
||||
dw AnnonZPicFront
|
||||
dw AnnonYPicBack ; typo in original list
|
||||
AnnonPicPtrs::
|
||||
AnnonPicPtrsFront::
|
||||
dw AnnonAPicFront
|
||||
AnnonPicPtrsBack::
|
||||
dw AnnonAPicBack
|
||||
dw AnnonBPicFront
|
||||
dw AnnonBPicBack
|
||||
dw AnnonCPicFront
|
||||
dw AnnonCPicBack
|
||||
dw AnnonDPicFront
|
||||
dw AnnonDPicBack
|
||||
dw AnnonEPicFront
|
||||
dw AnnonEPicBack
|
||||
dw AnnonFPicFront
|
||||
dw AnnonFPicBack
|
||||
dw AnnonGPicFront
|
||||
dw AnnonGPicBack
|
||||
dw AnnonHPicFront
|
||||
dw AnnonHPicBack
|
||||
dw AnnonIPicFront
|
||||
dw AnnonIPicBack
|
||||
dw AnnonJPicFront
|
||||
dw AnnonJPicBack
|
||||
dw AnnonKPicFront
|
||||
dw AnnonKPicBack
|
||||
dw AnnonLPicFront
|
||||
dw AnnonLPicBack
|
||||
dw AnnonMPicFront
|
||||
dw AnnonMPicBack
|
||||
dw AnnonNPicFront
|
||||
dw AnnonNPicBack
|
||||
dw AnnonOPicFront
|
||||
dw AnnonOPicBack
|
||||
dw AnnonPPicFront
|
||||
dw AnnonPPicBack
|
||||
dw AnnonQPicFront
|
||||
dw AnnonQPicBack
|
||||
dw AnnonRPicFront
|
||||
dw AnnonRPicBack
|
||||
dw AnnonSPicFront
|
||||
dw AnnonSPicBack
|
||||
dw AnnonTPicFront
|
||||
dw AnnonTPicBack
|
||||
dw AnnonUPicFront
|
||||
dw AnnonUPicBack
|
||||
dw AnnonVPicFront
|
||||
dw AnnonVPicBack
|
||||
dw AnnonWPicFront
|
||||
dw AnnonWPicBack
|
||||
dw AnnonXPicFront
|
||||
dw AnnonXPicBack
|
||||
dw AnnonYPicFront
|
||||
dw AnnonYPicBack
|
||||
dw AnnonZPicFront
|
||||
dw AnnonYPicBack ; typo in original list
|
||||
|
||||
+53
-53
@@ -1,53 +1,53 @@
|
||||
AnnonPics::
|
||||
AnnonAPicFront:: INCBIN "gfx/pokemon/annon_a/front.pic" ; 0x07cdd2--0x07ce57
|
||||
AnnonAPicBack:: INCBIN "gfx/pokemon/annon_a/back.pic" ; 0x07ce57--0x07ced0
|
||||
AnnonBPicFront:: INCBIN "gfx/pokemon/annon_b/front.pic" ; 0x07ced0--0x07cf64
|
||||
AnnonBPicBack:: INCBIN "gfx/pokemon/annon_b/back.pic" ; 0x07cf64--0x07cfed
|
||||
AnnonCPicFront:: INCBIN "gfx/pokemon/annon_c/front.pic" ; 0x07cfed--0x07d0a1
|
||||
AnnonCPicBack:: INCBIN "gfx/pokemon/annon_c/back.pic" ; 0x07d0a1--0x07d147
|
||||
AnnonDPicFront:: INCBIN "gfx/pokemon/annon_d/front.pic" ; 0x07d147--0x07d1ec
|
||||
AnnonDPicBack:: INCBIN "gfx/pokemon/annon_d/back.pic" ; 0x07d1ec--0x07d285
|
||||
AnnonEPicFront:: INCBIN "gfx/pokemon/annon_e/front.pic" ; 0x07d285--0x07d30e
|
||||
AnnonEPicBack:: INCBIN "gfx/pokemon/annon_e/back.pic" ; 0x07d30e--0x07d38b
|
||||
AnnonFPicFront:: INCBIN "gfx/pokemon/annon_f/front.pic" ; 0x07d38b--0x07d425
|
||||
AnnonFPicBack:: INCBIN "gfx/pokemon/annon_f/back.pic" ; 0x07d425--0x07d4ae
|
||||
AnnonGPicFront:: INCBIN "gfx/pokemon/annon_g/front.pic" ; 0x07d4ae--0x07d53f
|
||||
AnnonGPicBack:: INCBIN "gfx/pokemon/annon_g/back.pic" ; 0x07d53f--0x07d5c4
|
||||
AnnonHPicFront:: INCBIN "gfx/pokemon/annon_h/front.pic" ; 0x07d5c4--0x07d693
|
||||
AnnonHPicBack:: INCBIN "gfx/pokemon/annon_h/back.pic" ; 0x07d693--0x07d757
|
||||
AnnonIPicFront:: INCBIN "gfx/pokemon/annon_i/front.pic" ; 0x07d757--0x07d7c0
|
||||
AnnonIPicBack:: INCBIN "gfx/pokemon/annon_i/back.pic" ; 0x07d7c0--0x07d81f
|
||||
AnnonJPicFront:: INCBIN "gfx/pokemon/annon_j/front.pic" ; 0x07d81f--0x07d89b
|
||||
AnnonJPicBack:: INCBIN "gfx/pokemon/annon_j/back.pic" ; 0x07d89b--0x07d909
|
||||
AnnonKPicFront:: INCBIN "gfx/pokemon/annon_k/front.pic" ; 0x07d909--0x07d98d
|
||||
AnnonKPicBack:: INCBIN "gfx/pokemon/annon_k/back.pic" ; 0x07d98d--0x07da06
|
||||
AnnonLPicFront:: INCBIN "gfx/pokemon/annon_l/front.pic" ; 0x07da06--0x07da7a
|
||||
AnnonLPicBack:: INCBIN "gfx/pokemon/annon_l/back.pic" ; 0x07da7a--0x07dade
|
||||
AnnonMPicFront:: INCBIN "gfx/pokemon/annon_m/front.pic" ; 0x07dade--0x07dba1
|
||||
AnnonMPicBack:: INCBIN "gfx/pokemon/annon_m/back.pic" ; 0x07dba1--0x07dc57
|
||||
AnnonNPicFront:: INCBIN "gfx/pokemon/annon_n/front.pic" ; 0x07dc57--0x07dcf4
|
||||
AnnonNPicBack:: INCBIN "gfx/pokemon/annon_n/back.pic" ; 0x07dcf4--0x07dd8b
|
||||
AnnonOPicFront:: INCBIN "gfx/pokemon/annon_o/front.pic" ; 0x07dd8b--0x07de55
|
||||
AnnonOPicBack:: INCBIN "gfx/pokemon/annon_o/back.pic" ; 0x07de55--0x07df15
|
||||
AnnonPPicFront:: INCBIN "gfx/pokemon/annon_p/front.pic" ; 0x07df15--0x07df7d
|
||||
AnnonPPicBack:: INCBIN "gfx/pokemon/annon_p/back.pic" ; 0x07df7d--0x07dfd6
|
||||
AnnonQPicFront:: INCBIN "gfx/pokemon/annon_q/front.pic" ; 0x07dfd6--0x07e03d
|
||||
AnnonQPicBack:: INCBIN "gfx/pokemon/annon_q/back.pic" ; 0x07e03d--0x07e099
|
||||
AnnonRPicFront:: INCBIN "gfx/pokemon/annon_r/front.pic" ; 0x07e099--0x07e0ff
|
||||
AnnonRPicBack:: INCBIN "gfx/pokemon/annon_r/back.pic" ; 0x07e0ff--0x07e159
|
||||
AnnonSPicFront:: INCBIN "gfx/pokemon/annon_s/front.pic" ; 0x07e159--0x07e1f0
|
||||
AnnonSPicBack:: INCBIN "gfx/pokemon/annon_s/back.pic" ; 0x07e1f0--0x07e27a
|
||||
AnnonTPicFront:: INCBIN "gfx/pokemon/annon_t/front.pic" ; 0x07e27a--0x07e2e8
|
||||
AnnonTPicBack:: INCBIN "gfx/pokemon/annon_t/back.pic" ; 0x07e2e8--0x07e348
|
||||
AnnonUPicFront:: INCBIN "gfx/pokemon/annon_u/front.pic" ; 0x07e348--0x07e3e7
|
||||
AnnonUPicBack:: INCBIN "gfx/pokemon/annon_u/back.pic" ; 0x07e3e7--0x07e47a
|
||||
AnnonVPicFront:: INCBIN "gfx/pokemon/annon_v/front.pic" ; 0x07e47a--0x07e50a
|
||||
AnnonVPicBack:: INCBIN "gfx/pokemon/annon_v/back.pic" ; 0x07e50a--0x07e589
|
||||
AnnonWPicFront:: INCBIN "gfx/pokemon/annon_w/front.pic" ; 0x07e589--0x07e60d
|
||||
AnnonWPicBack:: INCBIN "gfx/pokemon/annon_w/back.pic" ; 0x07e60d--0x07e681
|
||||
AnnonXPicFront:: INCBIN "gfx/pokemon/annon_x/front.pic" ; 0x07e681--0x07e705
|
||||
AnnonXPicBack:: INCBIN "gfx/pokemon/annon_x/back.pic" ; 0x07e705--0x07e77b
|
||||
AnnonYPicFront:: INCBIN "gfx/pokemon/annon_y/front.pic" ; 0x07e77b--0x07e801
|
||||
AnnonYPicBack:: INCBIN "gfx/pokemon/annon_y/back.pic" ; 0x07e801--0x07e87c
|
||||
AnnonZPicFront:: INCBIN "gfx/pokemon/annon_z/front.pic" ; 0x07e87c--0x07e8fa
|
||||
AnnonZPicBack:: INCBIN "gfx/pokemon/annon_z/back.pic" ; 0x07e8fa--0x07e96a
|
||||
AnnonPics::
|
||||
AnnonAPicFront:: INCBIN "gfx/pokemon/annon_a/front.pic" ; 0x07cdd2--0x07ce57
|
||||
AnnonAPicBack:: INCBIN "gfx/pokemon/annon_a/back.pic" ; 0x07ce57--0x07ced0
|
||||
AnnonBPicFront:: INCBIN "gfx/pokemon/annon_b/front.pic" ; 0x07ced0--0x07cf64
|
||||
AnnonBPicBack:: INCBIN "gfx/pokemon/annon_b/back.pic" ; 0x07cf64--0x07cfed
|
||||
AnnonCPicFront:: INCBIN "gfx/pokemon/annon_c/front.pic" ; 0x07cfed--0x07d0a1
|
||||
AnnonCPicBack:: INCBIN "gfx/pokemon/annon_c/back.pic" ; 0x07d0a1--0x07d147
|
||||
AnnonDPicFront:: INCBIN "gfx/pokemon/annon_d/front.pic" ; 0x07d147--0x07d1ec
|
||||
AnnonDPicBack:: INCBIN "gfx/pokemon/annon_d/back.pic" ; 0x07d1ec--0x07d285
|
||||
AnnonEPicFront:: INCBIN "gfx/pokemon/annon_e/front.pic" ; 0x07d285--0x07d30e
|
||||
AnnonEPicBack:: INCBIN "gfx/pokemon/annon_e/back.pic" ; 0x07d30e--0x07d38b
|
||||
AnnonFPicFront:: INCBIN "gfx/pokemon/annon_f/front.pic" ; 0x07d38b--0x07d425
|
||||
AnnonFPicBack:: INCBIN "gfx/pokemon/annon_f/back.pic" ; 0x07d425--0x07d4ae
|
||||
AnnonGPicFront:: INCBIN "gfx/pokemon/annon_g/front.pic" ; 0x07d4ae--0x07d53f
|
||||
AnnonGPicBack:: INCBIN "gfx/pokemon/annon_g/back.pic" ; 0x07d53f--0x07d5c4
|
||||
AnnonHPicFront:: INCBIN "gfx/pokemon/annon_h/front.pic" ; 0x07d5c4--0x07d693
|
||||
AnnonHPicBack:: INCBIN "gfx/pokemon/annon_h/back.pic" ; 0x07d693--0x07d757
|
||||
AnnonIPicFront:: INCBIN "gfx/pokemon/annon_i/front.pic" ; 0x07d757--0x07d7c0
|
||||
AnnonIPicBack:: INCBIN "gfx/pokemon/annon_i/back.pic" ; 0x07d7c0--0x07d81f
|
||||
AnnonJPicFront:: INCBIN "gfx/pokemon/annon_j/front.pic" ; 0x07d81f--0x07d89b
|
||||
AnnonJPicBack:: INCBIN "gfx/pokemon/annon_j/back.pic" ; 0x07d89b--0x07d909
|
||||
AnnonKPicFront:: INCBIN "gfx/pokemon/annon_k/front.pic" ; 0x07d909--0x07d98d
|
||||
AnnonKPicBack:: INCBIN "gfx/pokemon/annon_k/back.pic" ; 0x07d98d--0x07da06
|
||||
AnnonLPicFront:: INCBIN "gfx/pokemon/annon_l/front.pic" ; 0x07da06--0x07da7a
|
||||
AnnonLPicBack:: INCBIN "gfx/pokemon/annon_l/back.pic" ; 0x07da7a--0x07dade
|
||||
AnnonMPicFront:: INCBIN "gfx/pokemon/annon_m/front.pic" ; 0x07dade--0x07dba1
|
||||
AnnonMPicBack:: INCBIN "gfx/pokemon/annon_m/back.pic" ; 0x07dba1--0x07dc57
|
||||
AnnonNPicFront:: INCBIN "gfx/pokemon/annon_n/front.pic" ; 0x07dc57--0x07dcf4
|
||||
AnnonNPicBack:: INCBIN "gfx/pokemon/annon_n/back.pic" ; 0x07dcf4--0x07dd8b
|
||||
AnnonOPicFront:: INCBIN "gfx/pokemon/annon_o/front.pic" ; 0x07dd8b--0x07de55
|
||||
AnnonOPicBack:: INCBIN "gfx/pokemon/annon_o/back.pic" ; 0x07de55--0x07df15
|
||||
AnnonPPicFront:: INCBIN "gfx/pokemon/annon_p/front.pic" ; 0x07df15--0x07df7d
|
||||
AnnonPPicBack:: INCBIN "gfx/pokemon/annon_p/back.pic" ; 0x07df7d--0x07dfd6
|
||||
AnnonQPicFront:: INCBIN "gfx/pokemon/annon_q/front.pic" ; 0x07dfd6--0x07e03d
|
||||
AnnonQPicBack:: INCBIN "gfx/pokemon/annon_q/back.pic" ; 0x07e03d--0x07e099
|
||||
AnnonRPicFront:: INCBIN "gfx/pokemon/annon_r/front.pic" ; 0x07e099--0x07e0ff
|
||||
AnnonRPicBack:: INCBIN "gfx/pokemon/annon_r/back.pic" ; 0x07e0ff--0x07e159
|
||||
AnnonSPicFront:: INCBIN "gfx/pokemon/annon_s/front.pic" ; 0x07e159--0x07e1f0
|
||||
AnnonSPicBack:: INCBIN "gfx/pokemon/annon_s/back.pic" ; 0x07e1f0--0x07e27a
|
||||
AnnonTPicFront:: INCBIN "gfx/pokemon/annon_t/front.pic" ; 0x07e27a--0x07e2e8
|
||||
AnnonTPicBack:: INCBIN "gfx/pokemon/annon_t/back.pic" ; 0x07e2e8--0x07e348
|
||||
AnnonUPicFront:: INCBIN "gfx/pokemon/annon_u/front.pic" ; 0x07e348--0x07e3e7
|
||||
AnnonUPicBack:: INCBIN "gfx/pokemon/annon_u/back.pic" ; 0x07e3e7--0x07e47a
|
||||
AnnonVPicFront:: INCBIN "gfx/pokemon/annon_v/front.pic" ; 0x07e47a--0x07e50a
|
||||
AnnonVPicBack:: INCBIN "gfx/pokemon/annon_v/back.pic" ; 0x07e50a--0x07e589
|
||||
AnnonWPicFront:: INCBIN "gfx/pokemon/annon_w/front.pic" ; 0x07e589--0x07e60d
|
||||
AnnonWPicBack:: INCBIN "gfx/pokemon/annon_w/back.pic" ; 0x07e60d--0x07e681
|
||||
AnnonXPicFront:: INCBIN "gfx/pokemon/annon_x/front.pic" ; 0x07e681--0x07e705
|
||||
AnnonXPicBack:: INCBIN "gfx/pokemon/annon_x/back.pic" ; 0x07e705--0x07e77b
|
||||
AnnonYPicFront:: INCBIN "gfx/pokemon/annon_y/front.pic" ; 0x07e77b--0x07e801
|
||||
AnnonYPicBack:: INCBIN "gfx/pokemon/annon_y/back.pic" ; 0x07e801--0x07e87c
|
||||
AnnonZPicFront:: INCBIN "gfx/pokemon/annon_z/front.pic" ; 0x07e87c--0x07e8fa
|
||||
AnnonZPicBack:: INCBIN "gfx/pokemon/annon_z/back.pic" ; 0x07e8fa--0x07e96a
|
||||
|
||||
+69
-69
@@ -1,69 +1,69 @@
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
if DEBUG
|
||||
SECTION "TossItem", ROM0[$3243]
|
||||
else
|
||||
SECTION "TossItem", ROM0[$3207]
|
||||
endc
|
||||
|
||||
TossItem: ; 00:3243
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(_TossItem)
|
||||
call Bankswitch
|
||||
push hl
|
||||
push de
|
||||
push bc
|
||||
call _TossItem
|
||||
pop bc
|
||||
pop de
|
||||
pop hl
|
||||
pop af
|
||||
call Bankswitch
|
||||
ret
|
||||
|
||||
ReceiveItem:: ; 3259
|
||||
; function to add an item (in varying quantities) to the player's bag or PC box
|
||||
; INPUT:
|
||||
; HL = address of inventory (either wNumBagItems or wNumBoxItems)
|
||||
; [wCurItem] = item ID
|
||||
; [wItemQuantity] = item quantity
|
||||
; sets carry flag if successful, unsets carry flag if unsuccessful
|
||||
push bc
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(_ReceiveItem)
|
||||
call Bankswitch
|
||||
push hl
|
||||
push de
|
||||
call _ReceiveItem
|
||||
pop de
|
||||
pop hl
|
||||
pop bc
|
||||
ld a, b
|
||||
call Bankswitch
|
||||
pop bc
|
||||
ret
|
||||
|
||||
if DEBUG
|
||||
SECTION "GiveItem", ROM0[$366C]
|
||||
else
|
||||
SECTION "GiveItem", ROM0[$3630]
|
||||
endc
|
||||
|
||||
GiveItem::
|
||||
; Give player quantity c of item b,
|
||||
; and copy the item's name to wcf4b.
|
||||
; Return carry on success.
|
||||
ld a, b
|
||||
ld [wNamedObjectIndexBuffer], a
|
||||
ld [wCurItem], a
|
||||
ld a, c
|
||||
ld [wItemQuantity], a
|
||||
ld hl, wNumBagItems
|
||||
call ReceiveItem
|
||||
ret nc
|
||||
call GetItemName
|
||||
call CopyStringToStringBuffer2
|
||||
scf
|
||||
ret
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
if DEBUG
|
||||
SECTION "TossItem", ROM0[$3243]
|
||||
else
|
||||
SECTION "TossItem", ROM0[$3207]
|
||||
endc
|
||||
|
||||
TossItem: ; 00:3243
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(_TossItem)
|
||||
call Bankswitch
|
||||
push hl
|
||||
push de
|
||||
push bc
|
||||
call _TossItem
|
||||
pop bc
|
||||
pop de
|
||||
pop hl
|
||||
pop af
|
||||
call Bankswitch
|
||||
ret
|
||||
|
||||
ReceiveItem:: ; 3259
|
||||
; function to add an item (in varying quantities) to the player's bag or PC box
|
||||
; INPUT:
|
||||
; HL = address of inventory (either wNumBagItems or wNumBoxItems)
|
||||
; [wCurItem] = item ID
|
||||
; [wItemQuantity] = item quantity
|
||||
; sets carry flag if successful, unsets carry flag if unsuccessful
|
||||
push bc
|
||||
ldh a, [hROMBank]
|
||||
push af
|
||||
ld a, BANK(_ReceiveItem)
|
||||
call Bankswitch
|
||||
push hl
|
||||
push de
|
||||
call _ReceiveItem
|
||||
pop de
|
||||
pop hl
|
||||
pop bc
|
||||
ld a, b
|
||||
call Bankswitch
|
||||
pop bc
|
||||
ret
|
||||
|
||||
if DEBUG
|
||||
SECTION "GiveItem", ROM0[$366C]
|
||||
else
|
||||
SECTION "GiveItem", ROM0[$3630]
|
||||
endc
|
||||
|
||||
GiveItem::
|
||||
; Give player quantity c of item b,
|
||||
; and copy the item's name to wcf4b.
|
||||
; Return carry on success.
|
||||
ld a, b
|
||||
ld [wNamedObjectIndexBuffer], a
|
||||
ld [wCurItem], a
|
||||
ld a, c
|
||||
ld [wItemQuantity], a
|
||||
ld hl, wNumBagItems
|
||||
call ReceiveItem
|
||||
ret nc
|
||||
call GetItemName
|
||||
call CopyStringToStringBuffer2
|
||||
scf
|
||||
ret
|
||||
|
||||
+27
-27
@@ -1,27 +1,27 @@
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "FindItemInTable", ROM0[$35F8]
|
||||
|
||||
; find value a from table hl with row length de
|
||||
; returns carry and row index b if successful
|
||||
FindItemInTable: ; 00:35F8
|
||||
ld b, 0
|
||||
ld c, a
|
||||
|
||||
.loop
|
||||
ld a, [hl]
|
||||
cp -1
|
||||
jr z, .fail
|
||||
cp c
|
||||
jr z, .success
|
||||
inc b
|
||||
add hl, de
|
||||
jr .loop
|
||||
|
||||
.fail
|
||||
and a
|
||||
ret
|
||||
|
||||
.success
|
||||
scf
|
||||
ret
|
||||
INCLUDE "constants.asm"
|
||||
|
||||
SECTION "FindItemInTable", ROM0[$35F8]
|
||||
|
||||
; find value a from table hl with row length de
|
||||
; returns carry and row index b if successful
|
||||
FindItemInTable: ; 00:35F8
|
||||
ld b, 0
|
||||
ld c, a
|
||||
|
||||
.loop
|
||||
ld a, [hl]
|
||||
cp -1
|
||||
jr z, .fail
|
||||
cp c
|
||||
jr z, .success
|
||||
inc b
|
||||
add hl, de
|
||||
jr .loop
|
||||
|
||||
.fail
|
||||
and a
|
||||
ret
|
||||
|
||||
.success
|
||||
scf
|
||||
ret
|
||||
|
||||
+17
-17
@@ -1,17 +1,17 @@
|
||||
queue_ab: MACRO
|
||||
ld hl, \1
|
||||
ldh a, [hROMBank]
|
||||
call QueueScript
|
||||
ENDM
|
||||
|
||||
queue_ba: MACRO
|
||||
ldh a, [hROMBank]
|
||||
ld hl, \1
|
||||
call QueueScript
|
||||
ENDM
|
||||
|
||||
far_queue: MACRO
|
||||
ld hl, \1
|
||||
ld a, BANK(\1)
|
||||
call QueueScript
|
||||
ENDM
|
||||
queue_ab: MACRO
|
||||
ld hl, \1
|
||||
ldh a, [hROMBank]
|
||||
call QueueScript
|
||||
ENDM
|
||||
|
||||
queue_ba: MACRO
|
||||
ldh a, [hROMBank]
|
||||
ld hl, \1
|
||||
call QueueScript
|
||||
ENDM
|
||||
|
||||
far_queue: MACRO
|
||||
ld hl, \1
|
||||
ld a, BANK(\1)
|
||||
call QueueScript
|
||||
ENDM
|
||||
|
||||
+14
-14
@@ -1,14 +1,14 @@
|
||||
init_script_table: MACRO
|
||||
script_id = 0
|
||||
ENDM
|
||||
|
||||
add_script: MACRO
|
||||
dw \1
|
||||
\1ScriptID = script_id
|
||||
script_id = script_id + 1
|
||||
ENDM
|
||||
|
||||
set_script: MACRO
|
||||
ld a, \1ScriptID
|
||||
ld [wFieldMoveScriptID], a
|
||||
ENDM
|
||||
init_script_table: MACRO
|
||||
script_id = 0
|
||||
ENDM
|
||||
|
||||
add_script: MACRO
|
||||
dw \1
|
||||
\1ScriptID = script_id
|
||||
script_id = script_id + 1
|
||||
ENDM
|
||||
|
||||
set_script: MACRO
|
||||
ld a, \1ScriptID
|
||||
ld [wFieldMoveScriptID], a
|
||||
ENDM
|
||||
|
||||
Reference in New Issue
Block a user