diff options
49 files changed, 4878 insertions, 5570 deletions
@@ -5,14 +5,13 @@ PYTHON := python .PHONY: all clean crystal pngs .SECONDEXPANSION: -POKEMONTOOLS := extras/pokemontools -GFX := $(PYTHON) $(POKEMONTOOLS)/gfx.py -INCLUDES := $(PYTHON) $(POKEMONTOOLS)/scan_includes.py -PREPROCESS := $(PYTHON) prequeue.py +poketools := extras/pokemontools +gfx := $(PYTHON) $(poketools)/gfx.py +includes := $(PYTHON) $(poketools)/scan_includes.py +pre := $(PYTHON) prequeue.py -TEXTQUEUE := -CRYSTAL_OBJS := \ +crystal_obj := \ wram.o \ main.o \ lib/mobile/main.o \ @@ -29,20 +28,21 @@ data/pokedex/entries_crystal.o \ misc/crystal_misc.o \ gfx/pics.o -OBJS := $(CRYSTAL_OBJS) - -ROMS := pokecrystal.gbc +all_obj := $(crystal_obj) # object dependencies -$(shell $(foreach obj, $(OBJS), $(eval $(obj:.o=)_DEPENDENCIES := $(shell $(INCLUDES) $(obj:.o=.asm))))) +$(foreach obj, $(all_obj), \ + $(eval $(obj:.o=)_dep := $(shell $(includes) $(obj:.o=.asm))) \ +) + -all: $(ROMS) +roms := pokecrystal.gbc +all: $(roms) crystal: pokecrystal.gbc clean: - rm -f $(ROMS) - rm -f $(OBJS) + rm -f $(roms) $(all_obj) find -iname '*.tx' -exec rm {} + baserom.gbc: ; @@ -50,30 +50,31 @@ baserom.gbc: ; %.asm: ; -.asm.tx: - $(eval TEXTQUEUE += $<) - @rm -f $@ +%.tx: %.asm ; $(eval txq += $<) @rm -f $@ -$(OBJS): $$*.tx $$(patsubst %.asm, %.tx, $$($$*_DEPENDENCIES)) - @$(PREPROCESS) $(TEXTQUEUE) - $(eval TEXTQUEUE :=) +$(all_obj): $$*.tx $$(patsubst %.asm, %.tx, $$($$*_dep)) + @$(pre) $(txq); $(eval txq :=) + @$(gfx) 2bpp $(2bppq); $(eval 2bppq :=) + @$(gfx) 1bpp $(1bppq); $(eval 1bppq :=) + @$(gfx) lz $(lzq); $(eval lzq :=) rgbasm -o $@ $*.tx -pokecrystal.gbc: $(CRYSTAL_OBJS) +pokecrystal.gbc: $(crystal_obj) rgblink -n $*.sym -m $*.map -o $@ $^ rgbfix -Cjv -i BYTE -k 01 -l 0x33 -m 0x10 -p 0 -r 3 -t PM_CRYSTAL $@ cmp baserom.gbc $@ pngs: - find . -iname "*.lz" -exec $(GFX) unlz {} + - find . -iname "*.[12]bpp" -exec $(GFX) png {} + - find . -iname "*.[12]bpp" -exec touch {} + + find . -iname "*.lz" -exec $(gfx) unlz {} + + find . -iname "*.[12]bpp" -exec $(gfx) png {} + find . -iname "*.lz" -exec touch {} + + find . -iname "*.[12]bpp" -exec touch {} + + +%.2bpp: %.png ; $(eval 2bppq += $<) @rm -f $@ +%.1bpp: %.png ; $(eval 1bppq += $<) @rm -f $@ +%.lz: % ; $(eval lzq += $<) @rm -f $@ -%.2bpp: %.png ; $(GFX) 2bpp $< -%.1bpp: %.png ; $(GFX) 1bpp $< -%.lz: % ; $(GFX) lz $< %.pal: ; %.bin: ; diff --git a/battle/ai/items.asm b/battle/ai/items.asm new file mode 100644 index 000000000..6cd1cad2d --- /dev/null +++ b/battle/ai/items.asm @@ -0,0 +1,847 @@ +Function38000: ; 38000 + and a + ld a, [IsInBattle] + dec a + ret z + ld a, [InLinkBattle] + and a + ret nz + callba Function3e8d1 + ret nz + ld a, [PlayerSubStatus5] + bit SUBSTATUS_CANT_RUN, a + jr nz, Function38041 + ld a, [$c731] + and a + jr nz, Function38041 + ld hl, TrainerClassAttributes + 5 + ld a, [$cfc0] + and a + jr nz, .asm_38032 + ld a, [TrainerClass] + dec a + ld bc, 7 + call AddNTimes + +.asm_38032 + bit 0, [hl] + jp nz, Function38045 + bit 1, [hl] + jp nz, Function38083 + bit 2, [hl] + jp nz, Function380c1 + ; fallthrough +; 38041 + +Function38041: ; 38041 + call Function38105 + ret +; 38045 + +Function38045: ; 38045 + callab Function34941 + ld a, [$c717] + and $f0 + jp z, Function38041 + cp $10 + jr nz, .asm_38061 + call Random + cp $80 + jr c, .asm_38077 + jp Function38041 + +.asm_38061 + cp $20 + jr nz, .asm_3806f + call Random + cp $c8 + jr c, .asm_38077 + jp Function38041 + +.asm_3806f + call Random + cp $a + jp c, Function38041 + +.asm_38077 + ld a, [$c717] + and $f + inc a + ld [$c718], a + jp Function3844b +; 38083 + +Function38083: ; 38083 + callab Function34941 + ld a, [$c717] + and $f0 + jp z, Function38041 + cp $10 + jr nz, .asm_3809f + call Random + cp $14 + jr c, .asm_380b5 + jp Function38041 + +.asm_3809f + cp $20 + jr nz, .asm_380ad + call Random + cp $1e + jr c, .asm_380b5 + jp Function38041 + +.asm_380ad + call Random + cp $c8 + jp c, Function38041 + +.asm_380b5 + ld a, [$c717] + and $f + inc a + ld [$c718], a + jp Function3844b +; 380c1 + +Function380c1: ; 380c1 + callab Function34941 + ld a, [$c717] + and $f0 + jp z, Function38041 + cp $10 + jr nz, .asm_380dd + call Random + cp $32 + jr c, .asm_380f3 + jp Function38041 + +.asm_380dd + cp $20 + jr nz, .asm_380eb + call Random + cp $80 + jr c, .asm_380f3 + jp Function38041 + +.asm_380eb + call Random + cp $32 + jp c, Function38041 + +.asm_380f3 + ld a, [$c717] + and $f + inc a + ld [$c718], a + jp Function3844b +; 380ff + + +Function380ff: ; 380ff + ld a, [EnemySubStatus5] + bit SUBSTATUS_CANT_RUN, a + ret +; 38105 + + +Function38105: ; 38105 + ld a, [$cfc0] + and a + ret nz + ld a, [$c650] + ld b, a + ld a, [$c651] + or b + ret z + call Function38170 + ret nc + ld a, [TrainerClass] + dec a + ld hl, TrainerClassAttributes + 5 + ld bc, 7 + call AddNTimes + ld b, h + ld c, l + ld hl, Unknown_38196 + ld de, $c650 +.asm_3812c + ld a, [hl] + and a + inc a + ret z + ld a, [de] + cp [hl] + jr z, .asm_3813f + inc de + ld a, [de] + cp [hl] + jr z, .asm_3813f + dec de + inc hl + inc hl + inc hl + jr .asm_3812c + +.asm_3813f + inc hl + push hl + push de + ld de, .asm_3814a + push de + ld a, [hli] + ld h, [hl] + ld l, a + jp [hl] + +.asm_3814a + pop de + pop hl + inc hl + inc hl + jr c, .asm_3812c + xor a + ld [de], a + inc a + ld [$c70f], a + ld hl, EnemySubStatus3 ; $c66f + res SUBSTATUS_BIDE, [hl] + xor a + ld [EnemyFuryCutterCount], a ; $c680 + ld [$c681], a + ld [$c72c], a + ld hl, EnemySubStatus4 ; $c670 + res SUBSTATUS_RAGE, [hl] + xor a + ld [LastPlayerCounterMove], a ; $c6f9 + scf + ret + + +Function38170: ; 38170 + ld a, [OTPartyCount] + ld d, a + ld e, 0 + ld hl, OTPartyMon1Level + ld bc, OTPartyMon2 - OTPartyMon1 +.asm_3817c + ld a, [hl] + cp e + jr c, .asm_38181 + ld e, a +.asm_38181 + add hl, bc + dec d + jr nz, .asm_3817c + + ld a, [CurOTMon] + ld hl, OTPartyMon1Level + call AddNTimes + ld a, [hl] + cp e + jr nc, .asm_38194 + and a + ret + +.asm_38194 + scf + ret +; 38196 + +Unknown_38196: ; 39196 + dbw FULL_RESTORE, Function38208 + dbw MAX_POTION, Function38220 + dbw HYPER_POTION, Function38284 + dbw SUPER_POTION, Function38292 + dbw POTION, Function382a0 + dbw X_ACCURACY, Function382f9 + dbw FULL_HEAL, Function381be + dbw GUARD_SPEC, Function38305 + dbw DIRE_HIT, Function38311 + dbw X_ATTACK, Function3831d + dbw X_DEFEND, Function38329 + dbw X_SPEED, Function38335 + dbw X_SPECIAL, Function38341 + db $ff +; 381be + +Function381be: ; 381be + call Function381ca + jp c, Function38383 + call Function383a3 + jp Function38385 +; 381ca + +; known jump sources: 381be (e:41be), 38214 (e:4214) +Function381ca: ; 381ca (e:41ca) + ld a, [EnemyMonStatus] ; $d214 + and a + jp z, Function38383 + + ld a, [bc] + bit 6, a + jr nz, .asm_381e7 + ld a, [bc] + bit 4, a + jp nz, Function38385 + call Random + cp $32 + jp c, Function38385 + jp Function38383 + +.asm_381e7 + ld a, [EnemySubStatus5] + bit SUBSTATUS_TOXIC, a + jr z, .asm_381fd + ld a, [$c67c] + cp $4 + jr c, .asm_381fd + call Random + cp $80 + jp c, Function38385 +.asm_381fd + ld a, [EnemyMonStatus] + and 1 << FRZ | SLP + jp z, Function38383 + jp Function38385 +; 38208 + +Function38208: ; 38208 + call Function3822c + jp nc, Function3821a + ld a, [bc] + bit 6, a + jp z, Function38383 + call Function381ca + jp c, Function38383 + +; known jump sources: 3820b (e:420b) +Function3821a: ; 3821a (e:421a) + call Function383b5 + jp Function38385 +; 38220 + +Function38220: ; 38220 + call Function3822c + jp c, Function38383 + call Function383ae + jp Function38385 + +; known jump sources: 38208 (e:4208), 38220 (e:4220), 38284 (e:4284) +Function3822c: ; 3822c (e:422c) + ld a, [bc] + bit 6, a + jr nz, Function38267 + callab AICheckEnemyHalfHP + jp c, Function38383 + ld a, [bc] + bit 5, a + jp nz, Function38254 + callab AICheckEnemyQuarterHP + jp nc, Function38281 + call Random + cp $80 + jp c, Function38281 + jp Function38383 + +Function38254: ; 38254 (e:4254) + callab AICheckEnemyQuarterHP + jp c, Function38383 + call Random + cp $32 + jp c, Function38383 + jr Function38281 + +Function38267: ; 38267 (e:4267) + callab AICheckEnemyHalfHP + jp c, Function38383 + callab AICheckEnemyQuarterHP + jp nc, Function38281 + call Random + cp $32 + jp nc, Function38383 + +Function38281: ; 38281 (e:4281) + jp Function38385 +; 38284 + +Function38284: ; 38284 + call Function3822c + jp c, Function38383 + ld b, 200 + call Function383f4 + jp Function38385 +; 38292 (e:4292) + +Function38292: ; 38292 + call Function3822c + jp c, Function38383 + +Function38298: ; 38298 + ld b, 50 + call Function383ee + jp Function38385 +; 382a0 + +Function382a0: ; 382a0 + call Function3822c + jp c, Function38383 + ld b, 20 + call Function383e8 + jp Function38385 +; 382ae + +Function382ae: ; 382ae + callab AICheckEnemyMaxHP + jr c, .asm_382e4 + push bc + ld de, EnemyMonMaxHP + 1 + ld hl, EnemyMonHP + 1 + ld a, [de] + sub [hl] + jr z, .asm_382e7 + dec hl + dec de + ld c, a + sbc [hl] + and a + jr nz, .asm_382e7 + ld a, c + cp b + jp c, .asm_382d5 + callab AICheckEnemyQuarterHP + jr c, .asm_382e7 + +.asm_382d5 + pop bc + ld a, [bc] + bit 5, a + jp z, Function38385 + call Random + cp $80 + jp c, Function38385 + +.asm_382e4 + jp Function38383 + +.asm_382e7 + pop bc + ld a, [bc] + bit 5, a + jp z, Function38383 + call Random + cp $64 + jp c, Function38385 + jp Function38383 +; 382f9 + +Function382f9: ; 382f9 + call Function3834d + jp c, Function38383 + call Function384f7 + jp Function38385 +; 38305 + +Function38305: ; 38305 + call Function3834d + jp c, Function38383 + call Function38504 + jp Function38385 +; 38311 + +Function38311: ; 38311 + call Function3834d + jp c, Function38383 + call Function38511 + jp Function38385 +; 3831d (e:431d) + +Function3831d: ; 3831d + call Function3834d + jp c, Function38383 + call Function38541 + jp Function38385 +; 38329 + +Function38329: ; 38329 + call Function3834d + jp c, Function38383 + call Function38547 + jp Function38385 +; 38335 + +Function38335: ; 38335 + call Function3834d + jp c, Function38383 + call Function3854d + jp Function38385 +; 38341 + +Function38341: ; 38341 + call Function3834d + jp c, Function38383 + call Function38553 + jp Function38385 +; 3834d + +; known jump sources: 38311 (e:4311) +Function3834d: ; 3834d (e:434d) + ld a, [EnemyTurnsTaken] ; $c6dc + and a + jr nz, .asm_38372 + ld a, [bc] + bit 4, a + jp nz, Function38385 + call Random + cp $80 + jp c, Function38383 + ld a, [bc] + bit 6, a + jp nz, Function38385 + call Random + cp $80 + jp c, Function38383 + jp Function38385 +.asm_38372 + ld a, [bc] + bit 4, a + jp z, Function38383 + call Random + cp $32 + jp nc, Function38383 + jp Function38385 + +Function38383: ; 38383 (e:4383) + scf + ret + +Function38385: ; 38385 (e:4385) + and a + ret + + +Function38387: ; 38387 + call UpdateEnemyMonInParty + callba UpdateEnemyHUD + ld a, $1 + ld [hBGMapMode], a + ld hl, $c6e6 + dec [hl] + scf + ret +; 3839a + +Function3839a: ; 3839a + push de + ld de, SFX_FULL_HEAL + call PlaySFX + pop de + ret +; 383a3 + + +; known jump sources: 381c4 (e:41c4) +Function383a3: ; 383a3 (e:43a3) + call Function3839a + call Function384e0 + ld a, FULL_HEAL + jp Function38568 + +; known jump sources: 38226 (e:4226) +Function383ae: ; 383ae (e:43ae) + ld a, $f + ld [$d1f1], a + jr asm_383c6 + +; known jump sources: 3821a (e:421a) +Function383b5: ; 383b5 (e:43b5) + call Function384e0 + ld a, $e + ld [$d1f1], a + ld hl, EnemySubStatus3 ; $c66f + res SUBSTATUS_CONFUSED, [hl] + xor a + ld [EnemyConfuseCount], a ; $c67b +asm_383c6: ; 383c6 (e:43c6) + ld de, $d1ec + ld hl, EnemyMonHP + 1 ; $d217 + ld a, [hld] + ld [de], a + inc de + ld a, [hl] + ld [de], a + inc de + ld hl, EnemyMonMaxHP + 1 ; $d219 + ld a, [hld] + ld [de], a + inc de + ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) + ld [EnemyMonHP + 1], a ; $d217 + ld a, [hl] + ld [de], a + ld [Buffer2], a ; $d1eb (aliases: MovementType) + ld [EnemyMonHP], a ; $d216 (aliases: EnemyMonHP) + jr asm_38436 +; 383e8 (e:43e8) + +Function383e8: ; 383e8 + ld a, POTION + ld b, 20 + jr Function383f8 + +Function383ee: ; 383ee + ld a, SUPER_POTION + ld b, 50 + jr Function383f8 + +; known jump sources: 3828c (e:428c) +Function383f4: ; 383f4 (e:43f4) + ld a, HYPER_POTION + ld b, 200 + +Function383f8: ; 383f8 + ld [$d1f1], a + ld hl, EnemyMonHP + 1 ; $d217 + ld a, [hl] + ld [$d1ec], a + add b + ld [hld], a + ld [$d1ee], a + ld a, [hl] + ld [$d1ed], a + ld [$d1ef], a + jr nc, .asm_38415 + inc a + ld [hl], a + ld [$d1ef], a +.asm_38415 + inc hl + ld a, [hld] + ld b, a + ld de, EnemyMonMaxHP + 1 ; $d219 + ld a, [de] + dec de + ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) + sub b + ld a, [hli] + ld b, a + ld a, [de] + ld [Buffer2], a ; $d1eb (aliases: MovementType) + sbc b + jr nc, asm_38436 + inc de + ld a, [de] + dec de + ld [hld], a + ld [$d1ee], a + ld a, [de] + ld [hl], a + ld [$d1ef], a +asm_38436: ; 38436 (e:4436) + call Function38571 + hlcoord 2, 2 + xor a + ld [$d10a], a + call Function3839a + predef Functionc6e0 + jp Function38387 + + +Function3844b: ; 3844b + ld a, [OTPartyCount] + ld c, a + ld hl, OTPartyMon1HP + ld d, 0 +.asm_38454 + ld a, [hli] + ld b, a + ld a, [hld] + or b + jr z, .asm_3845b + inc d + +.asm_3845b + push bc + ld bc, PartyMon2 - PartyMon1 + add hl, bc + pop bc + dec c + jr nz, .asm_38454 + ld a, d + cp $2 + jp nc, Function3846c + and a + ret +; 3846c + +Function3846c: ; 3846c + ld a, $1 + ld [$c711], a + ld [$c70f], a + ld hl, EnemySubStatus4 + res SUBSTATUS_RAGE, [hl] + xor a + ld [hBattleTurn], a + callab Function3dc5b + push af + ld a, [CurOTMon] + ld hl, OTPartyMon1Status + ld bc, PartyMon2 - PartyMon1 + call AddNTimes + ld d, h + ld e, l + ld hl, EnemyMonStatus + ld bc, $0004 + call CopyBytes + pop af + jr c, .asm_384a3 + ld hl, UnknownText_0x384d0 + call PrintText + +.asm_384a3 + ld a, $1 + ld [$d264], a + callab NewEnemyMonStatus + callab ResetEnemyStatLevels + ld hl, PlayerSubStatus1 + res SUBSTATUS_IN_LOVE, [hl] + callba Function3d4e1 + callba Function3d57a + xor a + ld [$d264], a + ld a, [InLinkBattle] + and a + ret nz + scf + ret +; 384d0 + +UnknownText_0x384d0: ; 384d0 + text_jump UnknownText_0x1bcf9c + db "@" +; 384d5 + +Function384d5: ; 384d5 + call Function3839a + call Function384e0 + ld a, X_SPEED + jp Function38568 +; 384e0 + +Function384e0: ; 384e0 + ld a, [CurOTMon] + ld hl, OTPartyMon1Status + ld bc, PartyMon2 - PartyMon1 + call AddNTimes + xor a + ld [hl], a + ld [EnemyMonStatus], a + ld hl, EnemySubStatus5 + res SUBSTATUS_TOXIC, [hl] + ret +; 384f7 + +Function384f7: ; 384f7 + call Function3839a + ld hl, EnemySubStatus4 + set SUBSTATUS_UNLEASH, [hl] + ld a, X_ACCURACY + jp Function38568 +; 38504 + +Function38504: ; 38504 + call Function3839a + ld hl, EnemySubStatus4 + set SUBSTATUS_MIST, [hl] + ld a, GUARD_SPEC + jp Function38568 +; 38511 + +Function38511: ; 38511 + call Function3839a + ld hl, EnemySubStatus4 + set SUBSTATUS_FOCUS_ENERGY, [hl] + ld a, DIRE_HIT + jp Function38568 +; 3851e + +Function3851e: ; 3851e + ld [hMultiplier], a + ld hl, EnemyMonMaxHP + ld a, [hli] + ld [hProduct], a + ld a, [hl] + ld [hMultiplicand], a + ld b, $2 + call Divide + ld a, [$ffb6] + ld c, a + ld a, [$ffb5] + ld b, a + ld hl, EnemyMonHP + 1 + ld a, [hld] + ld e, a + ld a, [hl] + ld d, a + ld a, d + sub b + ret nz + ld a, e + sub c + ret +; 38541 + +Function38541: ; 38541 + ld b, ATTACK + ld a, X_ATTACK + jr Function38557 +; 38547 + +Function38547: ; 38547 + ld b, DEFENSE + ld a, X_DEFEND + jr Function38557 +; 3854d + +Function3854d: ; 3854d + ld b, SPEED + ld a, X_SPEED + jr Function38557 +; 38553 + +Function38553: ; 38553 + ld b, SP_ATTACK + ld a, X_SPECIAL + +Function38557 + ld [$d1f1], a + push bc + call Function38571 + pop bc + callba Function361ef + jp Function38387 +; 38568 + + +Function38568: ; 38568 + ld [$d1f1], a + call Function38571 + jp Function38387 +; 38571 + +Function38571: ; 38571 + ld a, [$d1f1] + ld [$d265], a + call GetItemName + ld hl, StringBuffer1 + ld de, $d050 + ld bc, $000d + call CopyBytes + ld hl, UnknownText_0x3858c + jp PrintText +; 3858c + +UnknownText_0x3858c: ; 3858c + text_jump UnknownText_0x1bcfaf + db "@" +; 38591 diff --git a/battle/ai/scoring.asm b/battle/ai/scoring.asm index 19c652370..7ea1ec8fe 100644 --- a/battle/ai/scoring.asm +++ b/battle/ai/scoring.asm @@ -16,7 +16,7 @@ AIScoring_RedStatus: ; 38591 inc de call AIGetEnemyMove - ld a, [EnemyMoveEffect] + ld a, [wEnemyMoveStruct + MOVE_EFFECT] ld c, a push hl @@ -28,7 +28,7 @@ AIScoring_RedStatus: ; 38591 pop hl jr nz, .discourage - ld a, [EnemyMoveEffect] + ld a, [wEnemyMoveStruct + MOVE_EFFECT] push hl push de push bc @@ -82,7 +82,7 @@ AIScoring_RedStatMods: ; 385e0 inc de call AIGetEnemyMove - ld a, [EnemyMoveEffect] + ld a, [wEnemyMoveStruct + MOVE_EFFECT] cp EFFECT_ATTACK_UP jr c, .checkmove @@ -119,7 +119,7 @@ AIScoring_RedStatMods: ; 385e0 jr nz, .discourage .encourage - call Function_0x39527 + call Function39527 jr c, .checkmove dec [hl] @@ -173,7 +173,7 @@ AIScoring_RedSuperEffective: ; 38635 jr c, .noteffective ; effective - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a jr z, .checkmove dec [hl] @@ -185,7 +185,7 @@ AIScoring_RedSuperEffective: ; 38635 push hl push de push bc - ld a, [EnemyMoveType] + ld a, [wEnemyMoveStruct + MOVE_TYPE] ld d, a ld hl, EnemyMonMoves ld b, EnemyMonMovesEnd - EnemyMonMoves + 1 @@ -199,10 +199,10 @@ AIScoring_RedSuperEffective: ; 38635 jr z, .asm_38693 call AIGetEnemyMove - ld a, [EnemyMoveType] + ld a, [wEnemyMoveStruct + MOVE_TYPE] cp d jr z, .checkmove2 - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a jr nz, .asm_38692 jr .checkmove2 @@ -244,7 +244,7 @@ AIScoring_Offensive: ; 386a2 inc de call AIGetEnemyMove - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a jr nz, .checkmove @@ -275,7 +275,7 @@ AIScoring_Smart: ; 386be push hl call AIGetEnemyMove - ld a, [EnemyMoveEffect] + ld a, [wEnemyMoveStruct + MOVE_EFFECT] ld hl, .table_386f2 ld de, 3 call IsInArray @@ -398,7 +398,7 @@ AIScoring_Sleep: ; 387e3 ret nc .asm_387f0 - call Function_0x39527 + call Function39527 ret c dec [hl] dec [hl] @@ -421,7 +421,7 @@ AIScoring_LeechHit: ; 387f7 call AICheckEnemyMaxHP ret c - call Function_0x39521 + call Function39521 ret c dec [hl] @@ -439,41 +439,34 @@ AIScoring_LeechHit: ; 387f7 AIScoring_LockOn: ; 3881d ld a, [PlayerSubStatus5] - bit 5, a + bit SUBSTATUS_LOCK_ON, a jr nz, .asm_38882 push hl call AICheckEnemyQuarterHP - jr nc, .asm_38877 call AICheckEnemyHalfHP - jr c, .asm_38834 call AICompareSpeed - jr nc, .asm_38877 - .asm_38834 ld a, [PlayerEvaLevel] cp $a jr nc, .asm_3887a - cp $8 jr nc, .asm_38875 ld a, [EnemyAccLevel] cp $5 jr c, .asm_3887a - cp $7 jr c, .asm_38875 ld hl, EnemyMonMoves ld c, EnemyMonMovesEnd - EnemyMonMoves + 1 - .asm_3884f dec c jr z, .asm_38877 @@ -484,24 +477,22 @@ AIScoring_LockOn: ; 3881d call AIGetEnemyMove - ld a, [EnemyMoveAccuracy] - cp $b4 + ld a, [wEnemyMoveStruct + MOVE_ACC] + cp 180 jr nc, .asm_3884f ld a, $1 ld [hBattleTurn], a + push hl push bc - callba Function347c8 - ld a, [$d265] cp $a pop bc pop hl jr c, .asm_3884f - .asm_38875 pop hl ret @@ -513,9 +504,9 @@ AIScoring_LockOn: ; 3881d .asm_3887a pop hl - call Function_0x39527 - + call Function39527 ret c + dec [hl] dec [hl] ret @@ -538,19 +529,17 @@ AIScoring_LockOn: ; 3881d inc de call AIGetEnemyMove - ld a, [EnemyMoveAccuracy] - cp $b4 + ld a, [wEnemyMoveStruct + MOVE_ACC] + cp 180 jr nc, .asm_3888b dec [hl] dec [hl] jr .asm_3888b - .asm_388a2 pop hl jp AIDiscourageMove - ; 388a6 @@ -602,19 +591,16 @@ AIScoring_EvasionUp: ; 388d4 jp nc, AIDiscourageMove call AICheckEnemyMaxHP - jr nc, .asm_388f2 ld a, [PlayerSubStatus5] - bit 0, a + bit SUBSTATUS_TOXIC, a jr nz, .asm_388ef call Random - cp $b2 jr nc, .asm_38911 - .asm_388ef dec [hl] dec [hl] @@ -622,42 +608,34 @@ AIScoring_EvasionUp: ; 388d4 .asm_388f2 call AICheckEnemyQuarterHP - jr nc, .asm_3890f call Random - cp $a jr c, .asm_388ef call AICheckEnemyHalfHP - jr nc, .asm_3890a - call Function_0x39521 - + call Function39521 jr c, .asm_388ef - jr .asm_38911 - .asm_3890a - call Function_0x39527 - + call Function39527 jr c, .asm_38911 - .asm_3890f inc [hl] inc [hl] .asm_38911 ld a, [PlayerSubStatus5] - bit 0, a + bit SUBSTATUS_TOXIC, a jr nz, .asm_38938 ld a, [PlayerSubStatus4] - bit 7, a + bit SUBSTATUS_LEECH_SEED, a jr nz, .asm_38941 ld a, [EnemyEvaLevel] @@ -671,7 +649,7 @@ AIScoring_EvasionUp: ; 388d4 jr nz, .asm_388ef ld a, [PlayerSubStatus1] - bit 6, a + bit SUBSTATUS_ROLLOUT, a jr nz, .asm_388ef @@ -688,9 +666,9 @@ AIScoring_EvasionUp: ; 388d4 ret .asm_38941 - call Function_0x39527 - + call Function39527 ret c + dec [hl] ret ; 38947 @@ -706,7 +684,7 @@ AIScoring_AlwaysHit: ; 38947 ret c .asm_38954 - call Function_0x39521 + call Function39521 ret c dec [hl] @@ -721,30 +699,29 @@ AIScoring_MirrorMove: ; 3895b jr nz, .asm_38968 call AICompareSpeed - ret nc - jp AIDiscourageMove + jp AIDiscourageMove .asm_38968 push hl ld hl, Table_0x39301 ld de, 1 call IsInArray - pop hl ret nc - call Function_0x39527 + call Function39527 ret c + dec [hl] call AICompareSpeed - ret nc - call Random + call Random cp $19 ret c + dec [hl] ret ; 38985 @@ -752,23 +729,19 @@ AIScoring_MirrorMove: ; 3895b AIScoring_AccuracyDown: ; 38985 call AICheckPlayerMaxHP - jr nc, .asm_389a0 call AICheckEnemyHalfHP - jr nc, .asm_389a0 ld a, [PlayerSubStatus5] - bit 0, a + bit SUBSTATUS_TOXIC, a jr nz, .asm_3899d call Random - cp $b2 jr nc, .asm_389bf - .asm_3899d dec [hl] dec [hl] @@ -776,42 +749,34 @@ AIScoring_AccuracyDown: ; 38985 .asm_389a0 call AICheckPlayerQuarterHP - jr nc, .asm_389bd call Random - cp $a jr c, .asm_3899d call AICheckPlayerHalfHP - jr nc, .asm_389b8 - call Function_0x39521 - + call Function39521 jr c, .asm_3899d - jr .asm_389bf - .asm_389b8 - call Function_0x39527 - + call Function39527 jr c, .asm_389bf - .asm_389bd inc [hl] inc [hl] .asm_389bf ld a, [PlayerSubStatus5] - bit 0, a + bit SUBSTATUS_TOXIC, a jr nz, .asm_389e6 ld a, [PlayerSubStatus4] - bit 7, a + bit SUBSTATUS_LEECH_SEED, a jr nz, .asm_389ef ld a, [EnemyEvaLevel] @@ -825,10 +790,9 @@ AIScoring_AccuracyDown: ; 38985 jr nz, .asm_3899d ld a, [PlayerSubStatus1] - bit 6, a + bit SUBSTATUS_ROLLOUT, a jr nz, .asm_3899d - .asm_389e4 inc [hl] ret @@ -842,9 +806,9 @@ AIScoring_AccuracyDown: ; 38985 ret .asm_389ef - call Function_0x39527 - + call Function39527 ret c + dec [hl] ret ; 389f5 @@ -862,7 +826,6 @@ AIScoring_Haze: ; 389f5 jr c, .asm_38a12 jr .asm_389fb - .asm_38a05 ld hl, PlayerAtkLevel ld c, $8 @@ -976,7 +939,7 @@ AIScoring_Bind: ; 38a71 jr nz, .asm_38a91 ld a, [PlayerSubStatus1] - and 1<<SUBSTATUS_IN_LOVE | 1<<SUBSTATUS_ENCORED | 1<<SUBSTATUS_IDENTIFIED | 1<<SUBSTATUS_NIGHTMARE + and 1<<SUBSTATUS_IN_LOVE | 1<<SUBSTATUS_ROLLOUT | 1<<SUBSTATUS_IDENTIFIED | 1<<SUBSTATUS_NIGHTMARE jr nz, .asm_38a91 ld a, [PlayerTurnsTaken] @@ -984,7 +947,7 @@ AIScoring_Bind: ; 38a71 jr z, .asm_38a91 .asm_38a8b - call Function_0x39527 + call Function39527 ret c inc [hl] ret @@ -992,7 +955,7 @@ AIScoring_Bind: ; 38a71 .asm_38a91 call AICheckEnemyQuarterHP ret nc - call Function_0x39527 + call Function39527 ret c dec [hl] dec [hl] @@ -1022,7 +985,7 @@ AIScoring_Unused2B: ; 38a9c call AIGetEnemyMove - ld a, [EnemyMoveEffect] + ld a, [wEnemyMoveStruct + MOVE_EFFECT] cp EFFECT_PROTECT jr z, .asm_38ad5 dec c @@ -1081,14 +1044,14 @@ AIScoring_SpDefenseUp2: ; 38aed ret nc ld a, [BattleMonType1] - cp FIRE + cp SPECIAL jr nc, .asm_38b09 ld a, [BattleMonType2] - cp FIRE + cp SPECIAL ret c .asm_38b09 - call Function_0x39521 + call Function39521 ret c dec [hl] dec [hl] @@ -1128,14 +1091,14 @@ AIScoring_Paralyze: ; 38b26 ret c call AICheckEnemyQuarterHP ret nc - call Function_0x39521 + call Function39521 ret c dec [hl] dec [hl] ret .asm_38b3a - call Function_0x39527 + call Function39527 ret c inc [hl] ret @@ -1143,7 +1106,7 @@ AIScoring_Paralyze: ; 38b26 AIScoring_SpeedDownHit: ; 38b40 - ld a, [EnemyMoveAnimation] + ld a, [wEnemyMoveStruct + MOVE_ANIM] cp ICY_WIND ret nz call AICheckEnemyQuarterHP @@ -1174,7 +1137,7 @@ AIScoring_HyperBeam: ; 38b63 jr c, .asm_38b72 call AICheckEnemyQuarterHP ret c - call Function_0x39527 + call Function39527 ret c dec [hl] ret @@ -1184,7 +1147,7 @@ AIScoring_HyperBeam: ; 38b63 cp 40 ret c inc [hl] - call Function_0x39527 + call Function39527 ret c inc [hl] ret @@ -1193,10 +1156,10 @@ AIScoring_HyperBeam: ; 38b63 AIScoring_Rage: ; 38b7f ld a, [EnemySubStatus4] - bit 6, a + bit SUBSTATUS_RAGE, a jr z, .asm_38b9b - call Function_0x39527 + call Function39527 jr c, .asm_38b8c dec [hl] @@ -1216,7 +1179,7 @@ AIScoring_Rage: ; 38b7f call AICheckEnemyHalfHP jr nc, .asm_38ba6 - call Function_0x39521 + call Function39521 ret nc dec [hl] ret @@ -1249,7 +1212,7 @@ AIScoring_Mimic: ; 38ba8 jr c, .asm_38bef jr z, .asm_38bd4 - call Function_0x39527 + call Function39527 jr c, .asm_38bd4 dec [hl] @@ -1263,7 +1226,7 @@ AIScoring_Mimic: ; 38ba8 pop hl ret nc - call Function_0x39527 + call Function39527 ret c dec [hl] ret @@ -1291,12 +1254,12 @@ AIScoring_Counter: ; 38bf1 call AIGetEnemyMove - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a jr z, .asm_38c0e - ld a, [EnemyMoveType] - cp $14 + ld a, [wEnemyMoveStruct + MOVE_TYPE] + cp SPECIAL jr nc, .asm_38c0e inc b @@ -1319,12 +1282,12 @@ AIScoring_Counter: ; 38bf1 call AIGetEnemyMove - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a jr z, .asm_38c38 - ld a, [EnemyMoveType] - cp $14 + ld a, [wEnemyMoveStruct + MOVE_TYPE] + cp SPECIAL jr nc, .asm_38c38 @@ -1354,15 +1317,14 @@ AIScoring_Encore: ; 38c3b call AIGetEnemyMove - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a jr z, .asm_38c68 push hl - ld a, [EnemyMoveType] + ld a, [wEnemyMoveStruct + MOVE_TYPE] ld hl, EnemyMonType1 - ld a, $41 - call Predef + predef Function347d3 pop hl ld a, [$d265] @@ -1433,7 +1395,7 @@ AIScoring_Encore: ; 38c3b AIScoring_PainSplit: ; 38ca4 push hl - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld b, [hl] inc hl ld c, [hl] @@ -1490,7 +1452,7 @@ AIScoring_Spite: ; 38cd5 call AICompareSpeed jp c, AIDiscourageMove - call Function_0x39527 + call Function39527 ret c inc [hl] ret @@ -1596,7 +1558,7 @@ AIScoring_HealBell: ; 38d1f .asm_38d48 and $27 ret z - call Function_0x39527 + call Function39527 ret c dec [hl] @@ -1658,13 +1620,13 @@ AIScoring_Conversion2: ; 38d98 push hl dec a - ld hl, Moves + PlayerMoveType - PlayerMoveStruct - ld bc, Move2 - Move1 + ld hl, Moves + MOVE_TYPE + ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte - ld [PlayerMoveType], a + ld [wPlayerMoveStruct + MOVE_TYPE], a xor a ld [hBattleTurn], a @@ -1677,7 +1639,7 @@ AIScoring_Conversion2: ; 38d98 jr c, .asm_38dc9 ret z - call Function_0x39527 + call Function39527 ret c dec [hl] @@ -1713,7 +1675,7 @@ AIScoring_Disable: ; 38dd1 ret .asm_38dee - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a ret nz @@ -1740,7 +1702,7 @@ AIScoring_MeanLook: ; 38dfb jr nz, .asm_38e26 ld a, [PlayerSubStatus1] - and 1<<SUBSTATUS_IN_LOVE | 1<<SUBSTATUS_ENCORED | 1<<SUBSTATUS_IDENTIFIED | 1<<SUBSTATUS_NIGHTMARE + and 1<<SUBSTATUS_IN_LOVE | 1<<SUBSTATUS_ROLLOUT | 1<<SUBSTATUS_IDENTIFIED | 1<<SUBSTATUS_NIGHTMARE jr nz, .asm_38e26 push hl @@ -1755,7 +1717,7 @@ AIScoring_MeanLook: ; 38dfb ret .asm_38e26 - call Function_0x39521 + call Function39521 ret c dec [hl] dec [hl] @@ -1792,7 +1754,7 @@ AICheckLastPlayerMon: ; 38e2e AIScoring_Nightmare: ; 38e4a - call Function_0x39527 + call Function39527 ret c dec [hl] ret @@ -1832,12 +1794,12 @@ AIScoring_Curse: ; 38e5c ld a, [BattleMonType1] cp GHOST jr z, .asm_38e92 - cp FIRE + cp SPECIAL ret nc ld a, [BattleMonType2] - cp FIRE + cp SPECIAL ret nc - call Function_0x39521 + call Function39521 ret c dec [hl] dec [hl] @@ -1892,7 +1854,7 @@ AIScoring_Curse: ; 38e5c ret nz .asm_38ecb - call Function_0x39527 + call Function39527 ret c dec [hl] @@ -1928,7 +1890,7 @@ AIScoring_Protect: ; 38ed2 bit SUBSTATUS_CURSE, a jr nz, .asm_38f0d - bit SUBSTATUS_ENCORED, a + bit SUBSTATUS_ROLLOUT, a jr z, .asm_38f14 ld a, [PlayerRolloutCount] @@ -1936,7 +1898,7 @@ AIScoring_Protect: ; 38ed2 jr c, .asm_38f14 .asm_38f0d - call Function_0x39521 + call Function39521 ret c dec [hl] ret @@ -1992,7 +1954,7 @@ AIScoring_PerishSong: ; 38f4a jr c, .asm_38f75 ld a, [PlayerSubStatus5] - bit 7, a + bit SUBSTATUS_CANT_RUN, a jr nz, .asm_38f6f push hl @@ -2002,16 +1964,16 @@ AIScoring_PerishSong: ; 38f4a pop hl ret c - call Function_0x39527 + call Function39527 ret c inc [hl] ret .asm_38f6f - call Function_0x39527 - + call Function39527 ret c + dec [hl] ret @@ -2043,7 +2005,7 @@ AIScoring_Sandstorm: ; 38f7a call AICheckPlayerHalfHP jr nc, .asm_38fa6 - call Function_0x39527 + call Function39527 ret c dec [hl] @@ -2079,7 +2041,7 @@ AIScoring_Endure: ; 38fac call AIHasMove jr nc, .asm_38fcb - call Function_0x39521 + call Function39521 ret c dec [hl] @@ -2091,7 +2053,7 @@ AIScoring_Endure: ; 38fac ld a, [EnemySubStatus5] bit SUBSTATUS_LOCK_ON, a ret z - call Function_0x39527 + call Function39527 ret c dec [hl] @@ -2161,7 +2123,7 @@ AIScoring_Rollout: ; 38fef ret .asm_39020 - call Function_0x39521 + call Function39521 ret c inc [hl] ret @@ -2172,14 +2134,14 @@ AIScoring_Swagger: AIScoring_Attract: ; 39026 ld a, [PlayerTurnsTaken] and a - jr z, .asm_39032 + jr z, .first_turn - call Function_0x39521 + call Function39521 ret c inc [hl] ret -.asm_39032 +.first_turn call Random cp 200 ret nc @@ -2191,7 +2153,7 @@ AIScoring_Attract: ; 39026 AIScoring_Safeguard: ; 3903a call AICheckPlayerHalfHP ret c - call Function_0x39521 + call Function39521 ret c inc [hl] ret @@ -2206,7 +2168,7 @@ AIScoring_Earthquake: ; 39044 ld a, [PlayerSubStatus3] bit SUBSTATUS_UNDERGROUND, a - jr z, .asm_39058 + jr z, .could_dig call AICompareSpeed ret nc @@ -2214,10 +2176,12 @@ AIScoring_Earthquake: ; 39044 dec [hl] ret -.asm_39058 +.could_dig + ; Try to predict if the player + ; will use Dig this turn. call AICompareSpeed ret c - call Function_0x39527 + call Function39527 ret c dec [hl] ret @@ -2239,13 +2203,13 @@ AIScoring_BatonPass: ; 39062 AIScoring_Pursuit: ; 39072 call AICheckPlayerQuarterHP jr nc, .asm_3907d - call Function_0x39521 + call Function39521 ret c inc [hl] ret .asm_3907d - call Function_0x39527 + call Function39527 ret c dec [hl] dec [hl] @@ -2267,7 +2231,7 @@ AIScoring_RapidSpin: ; 39084 ret z .asm_39097 - call Function_0x39521 + call Function39521 ret c dec [hl] @@ -2289,7 +2253,7 @@ AIScoring_HiddenPower: ; 3909e jr c, .asm_390c9 ld a, d - cp $32 + cp 50 jr c, .asm_390c9 ld a, [$d265] @@ -2297,7 +2261,7 @@ AIScoring_HiddenPower: ; 3909e jr nc, .asm_390c7 ld a, d - cp $46 + cp 70 ret c .asm_390c7 @@ -2372,7 +2336,7 @@ AIScoring_WeatherMove: ; 3910d call AICheckPlayerHalfHP jr nc, AIBadWeatherType - call Function_0x39527 + call Function39527 ret c dec [hl] @@ -2476,7 +2440,7 @@ AIScoring_PsychUp: ; 39152 ld a, [EnemyEvaLevel] cp $8 ret nc - call Function_0x39521 + call Function39521 ret c dec [hl] @@ -2502,12 +2466,12 @@ AIScoring_MirrorCoat: ; 3918b call AIGetEnemyMove - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a jr z, .asm_391a8 - ld a, [EnemyMoveType] - cp FIRE + ld a, [wEnemyMoveStruct + MOVE_TYPE] + cp SPECIAL jr c, .asm_391a8 inc b @@ -2530,12 +2494,12 @@ AIScoring_MirrorCoat: ; 3918b call AIGetEnemyMove - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a jr z, .asm_391d2 - ld a, [EnemyMoveType] - cp FIRE + ld a, [wEnemyMoveStruct + MOVE_TYPE] + cp SPECIAL jr c, .asm_391d2 @@ -2574,7 +2538,7 @@ AIScoring_Gust: ; 391d5 .asm_391e9 call AICompareSpeed ret c - call Function_0x39527 + call Function39527 ret c dec [hl] ret @@ -2600,7 +2564,7 @@ AIScoring_Stomp: ; 39200 and a ret z - call Function_0x39521 + call Function39521 ret c dec [hl] @@ -2625,7 +2589,7 @@ AIScoring_Solarbeam: ; 3920b ret .asm_3921e - call Function_0x39521 + call Function39521 ret c dec [hl] @@ -2650,13 +2614,13 @@ AIScoring_Thunder: ; 39225 AICompareSpeed: ; 39233 push bc - ld a, [EnemyMonSpd + 1] + ld a, [EnemyMonSpeed + 1] ld b, a - ld a, [BattleMonSpd + 1] + ld a, [BattleMonSpeed + 1] cp b - ld a, [EnemyMonSpd] + ld a, [EnemyMonSpeed] ld b, a - ld a, [BattleMonSpd] + ld a, [BattleMonSpeed] sbc b pop bc ret @@ -2677,8 +2641,8 @@ AICheckEnemyMaxHP: ; 39251 push hl push de push bc - ld de, EnemyMonHPHi - ld hl, EnemyMonMaxHPHi + ld de, EnemyMonHP + ld hl, EnemyMonMaxHP ; fallthrough ; 3925a @@ -2733,7 +2697,7 @@ AICheckEnemyHalfHP: ; 39281 push hl push de push bc - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld b, [hl] inc hl ld c, [hl] @@ -2756,7 +2720,7 @@ AICheckEnemyQuarterHP: ; 39298 push hl push de push bc - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld b, [hl] inc hl ld c, [hl] @@ -2811,7 +2775,7 @@ AIHasMove: ; 392ca call AIGetEnemyMove - ld a, [EnemyMoveEffect] + ld a, [wEnemyMoveStruct + MOVE_EFFECT] cp b jr z, .asm_392e3 @@ -2898,7 +2862,7 @@ AIScoring_Opportunist: ; 39315 call AICheckEnemyQuarterHP jr nc, .asm_39322 - call Function_0x39527 + call Function39527 ret c .asm_39322 @@ -2992,7 +2956,7 @@ AIScoring_Aggressive: ; 39369 push de push bc call AIGetEnemyMove - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a jr z, .nodamage call AIDamageCalc @@ -3043,14 +3007,14 @@ AIScoring_Aggressive: ; 39369 call AIGetEnemyMove - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] cp 2 jr c, .checkmove2 push hl push de push bc - ld a, [EnemyMoveEffect] + ld a, [wEnemyMoveStruct + MOVE_EFFECT] ld hl, .aggressivemoves ld de, 1 call IsInArray @@ -3077,7 +3041,7 @@ AIScoring_Aggressive: ; 39369 AIDamageCalc: ; 393e7 ld a, 1 ld [hBattleTurn], a - ld a, [EnemyMoveEffect] + ld a, [wEnemyMoveStruct + MOVE_EFFECT] ld de, 1 ld hl, .ConstantDamageEffects call IsInArray @@ -3175,7 +3139,7 @@ AIScoring_StatusImmunity: ; 39453 inc de call AIGetEnemyMove - ld a, [EnemyMoveEffect] + ld a, [wEnemyMoveStruct + MOVE_EFFECT] cp EFFECT_TOXIC jr z, .poisonimmunity cp EFFECT_POISON @@ -3185,7 +3149,7 @@ AIScoring_StatusImmunity: ; 39453 cp EFFECT_PARALYZE jr z, .typeimmunity - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a jr z, .checkmove @@ -3242,12 +3206,12 @@ AIScoring_Risky: ; 394a9 push hl call AIGetEnemyMove - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] and a jr z, .nextmove ; Don't use risky moves at max hp. - ld a, [EnemyMoveEffect] + ld a, [wEnemyMoveStruct + MOVE_EFFECT] ld de, 1 ld hl, .riskymoves call IsInArray @@ -3314,10 +3278,10 @@ AIGetEnemyMove: ; 39508 push bc dec a ld hl, Moves - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes - ld de, EnemyMoveStruct + ld de, wEnemyMoveStruct ld a, BANK(Moves) call FarCopyBytes @@ -3328,14 +3292,14 @@ AIGetEnemyMove: ; 39508 ; 39521 -Function_0x39521: ; 39521 +Function39521: ; 39521 call Random cp 50 ; 1/5 ret ; 39527 -Function_0x39527: ; 39527 +Function39527: ; 39527 call Random cp $80 ; 1/2 ret diff --git a/battle/anim_commands.asm b/battle/anim_commands.asm index 9f26e8f94..f8f4a26ce 100644 --- a/battle/anim_commands.asm +++ b/battle/anim_commands.asm @@ -954,22 +954,18 @@ BattleAnimCmd_DC: ; cc5dc (33:45dc) ld a, [TempBattleMonSpecies] ; $d205 ld [CurPartySpecies], a ; $d108 ld hl, BattleMonDVs ; $c632 - ld a, PREDEF_GET_UNOWN_LETTER - call Predef + predef GetUnownLetter ld de, $8000 - ld a, $3c - call Predef + predef GetFrontpic jr .done .player ld a, [TempEnemyMonSpecies] ; $d204 ld [CurPartySpecies], a ; $d108 ld hl, EnemyMonDVs ; $d20c - ld a, PREDEF_GET_UNOWN_LETTER - call Predef + predef GetUnownLetter ld de, $8000 - ld a, $3d - call Predef + predef GetBackpic .done pop af @@ -1194,20 +1190,16 @@ BattleAnimCmd_E6: ; cc776 (33:4776) jr z, .player ld hl, BattleMonDVs ; $c632 - ld a, PREDEF_GET_UNOWN_LETTER - call Predef + predef GetUnownLetter ld de, $9000 - ld a, $3c - call Predef + predef GetFrontpic jr .done .player ld hl, EnemyMonDVs ; $d20c - ld a, PREDEF_GET_UNOWN_LETTER - call Predef + predef GetUnownLetter ld de, $9310 - ld a, $3d - call Predef + predef GetBackpic .done pop af diff --git a/battle/core.asm b/battle/core.asm index 6cb19b7d6..5503d307d 100644 --- a/battle/core.asm +++ b/battle/core.asm @@ -12,8 +12,8 @@ Function3c000: ; 3c000 inc a ld [$d264], a ld hl, OTPartyMon1HP - ld bc, $002f - ld d, $3 + ld bc, OTPartyMon2 - (OTPartyMon1 + 1) + ld d, NUM_MOVES - 1 .asm_3c019 inc d ld a, [hli] @@ -24,7 +24,7 @@ Function3c000: ; 3c000 .asm_3c021 ld a, d - ld [$d430], a + ld [wBattleAction], a ld a, [InLinkBattle] and a jr z, .asm_3c031 @@ -57,9 +57,9 @@ Function3c000: ; 3c000 call Function30b4 ld a, [BattleType] cp $2 - jp z, Function3c0e2 - cp $3 - jp z, Function3c0e2 + jp z, .asm_3c0e2 + cp BATTLETYPE_TUTORIAL + jp z, .asm_3c0e2 xor a ld [CurPartyMon], a .asm_3c06b @@ -114,10 +114,9 @@ Function3c000: ; 3c000 .asm_3c0df jp Function3c12f -; 3c0e2 -Function3c0e2: ; 3c0e2 - jp Function3e139 +.asm_3c0e2 + jp BattleMenu ; 3c0e5 @@ -162,69 +161,75 @@ Function3c0e5: ; 3c0e5 ; 3c12f Function3c12f: ; 3c12f +.loop call Function3c1bf call Function3c3f5 - jp c, .asm_3c1be + jp c, .quit + xor a - ld [$c710], a - ld [$c711], a + ld [wPlayerIsSwitching], a + ld [wEnemyIsSwitching], a ld [$d264], a ld [$c73f], a ld [$c740], a ld [CurDamage], a - ld [$d257], a + ld [CurDamage + 1], a + call Function3c27c call UpdateBattleMonInParty callba AIChooseMove - call Function3d2f1 - jr nz, .asm_3c174 + + call IsMobileBattle + jr nz, .not_disconnected callba Function100da5 callba Function100641 callba Function100dd8 - jp c, .asm_3c1be + jp c, .quit +.not_disconnected -.asm_3c174 call Function3c410 jr c, .asm_3c18a .asm_3c179 - call Function3e139 - jr c, .asm_3c1be + call BattleMenu + jr c, .quit ld a, [BattleEnded] and a - jr nz, .asm_3c1be - ld a, [$d232] + jr nz, .quit + ld a, [$d232] ; roared/whirlwinded/teleported and a - jr nz, .asm_3c1be - + jr nz, .quit .asm_3c18a call Function3c434 jr nz, .asm_3c179 + call Function3c300 - jr c, .asm_3c1be + jr c, .quit + call Function3c314 jr c, .asm_3c19e call Function3c5fe jr .asm_3c1a1 - .asm_3c19e call Function3c664 - .asm_3c1a1 call Function3d2e0 - jr c, .asm_3c1be + jr c, .quit + ld a, [$d232] and a - jr nz, .asm_3c1be + jr nz, .quit + ld a, [BattleEnded] and a - jr nz, .asm_3c1be + jr nz, .quit + call Function3c1d6 ld a, [BattleEnded] and a - jr nz, .asm_3c1be - jp Function3c12f + jr nz, .quit + jp .loop -.asm_3c1be +.quit ret ; 3c1bf @@ -302,7 +307,7 @@ Function3c1d6: ; 3c1d6 ; 3c23c Function3c23c: ; 3c23c - call Function3c710 + call HasPlayerFainted jr nz, .asm_3c24a call Function3d14e ld a, [BattleEnded] @@ -310,7 +315,7 @@ Function3c23c: ; 3c23c jr nz, .asm_3c25a .asm_3c24a - call Function3c70b + call HasEnemyFainted jr nz, .asm_3c258 call Function3cd55 ld a, [BattleEnded] @@ -327,7 +332,7 @@ Function3c23c: ; 3c23c ; 3c25c Function3c25c: ; 3c25c - call Function3c70b + call HasEnemyFainted jr nz, .asm_3c26a call Function3cd55 ld a, [BattleEnded] @@ -335,7 +340,7 @@ Function3c25c: ; 3c25c jr nz, .asm_3c27a .asm_3c26a - call Function3c710 + call HasPlayerFainted jr nz, .asm_3c278 call Function3d14e ld a, [BattleEnded] @@ -397,11 +402,11 @@ Function3c27c: ; 3c27c xor a ld [hl], a ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr push af set SUBSTATUS_CONFUSED, [hl] ld a, BATTLE_VARS_MOVE_ANIM - call _GetBattleVar + call GetBattleVarAddr push hl push af xor a @@ -421,9 +426,9 @@ Function3c27c: ; 3c27c ret nz xor a ld [$cfca], a - ld de, $0103 + ld de, ANIM_CONFUSED call Function3ee0f - call Function3c8e4 + call SwitchTurnCore ld hl, BecameConfusedText jp StdBattleTextBox ; 3c300 @@ -432,7 +437,7 @@ Function3c300: ; 3c300 ld a, [InLinkBattle] and a jr z, .asm_3c30d - ld a, [$d430] + ld a, [wBattleAction] cp $f jr z, .asm_3c30f @@ -450,12 +455,12 @@ Function3c314: ; 3c314 ld a, [InLinkBattle] and a jr z, .asm_3c35b - ld a, [$d430] + ld a, [wBattleAction] cp $e jr z, .asm_3c35b cp $d jr z, .asm_3c35b - sub $4 + sub NUM_MOVES jr c, .asm_3c35b ld a, [$d0ec] cp $2 @@ -496,10 +501,10 @@ Function3c314: ; 3c314 callab GetOpponentItem pop de ld a, d - cp $4a + cp HELD_QUICK_CLAW jr nz, .asm_3c391 ld a, b - cp $4a + cp HELD_QUICK_CLAW jr z, .asm_3c39f call BattleRandom cp e @@ -508,7 +513,7 @@ Function3c314: ; 3c314 .asm_3c391 ld a, b - cp $4a + cp HELD_QUICK_CLAW jr nz, .asm_3c3c5 call BattleRandom cp c @@ -537,8 +542,8 @@ Function3c314: ; 3c314 jr .asm_3c3c5 .asm_3c3c5 - ld de, BattleMonSpd - ld hl, EnemyMonSpd + ld de, BattleMonSpeed + ld hl, EnemyMonSpeed ld c, $2 call StringCmp jr z, .asm_3c3d8 @@ -570,7 +575,7 @@ Function3c3f3: ; 3c3f3 Function3c3f5: ; 3c3f5 ld a, [BattleType] - cp $6 + cp BATTLETYPE_CONTEST jr nz, .asm_3c40e ld a, [$dc79] and a @@ -589,23 +594,26 @@ Function3c3f5: ; 3c3f5 Function3c410: ; 3c410 ld a, [PlayerSubStatus4] - and $20 - jp nz, Function3c432 + and 1 << SUBSTATUS_RECHARGE + jp nz, .quit + ld hl, EnemySubStatus3 - res 3, [hl] + res SUBSTATUS_FLINCHED, [hl] ld hl, PlayerSubStatus3 - res 3, [hl] + res SUBSTATUS_FLINCHED, [hl] + ld a, [hl] - and $12 - jp nz, Function3c432 + and 1 << SUBSTATUS_CHARGED | 1 << SUBSTATUS_RAMPAGE + jp nz, .quit + ld hl, PlayerSubStatus1 - bit 6, [hl] - jp nz, Function3c432 + bit SUBSTATUS_ROLLOUT, [hl] + jp nz, .quit + and a ret -; 3c432 -Function3c432: ; 3c432 +.quit scf ret ; 3c434 @@ -614,7 +622,7 @@ Function3c434: ; 3c434 call Function3c410 jp c, .asm_3c4ba ld hl, PlayerSubStatus5 - bit 4, [hl] + bit SUBSTATUS_ENCORED, [hl] jr z, .asm_3c449 ld a, [LastPlayerMove] ld [CurPlayerMove], a @@ -627,18 +635,18 @@ Function3c434: ; 3c434 and a jr nz, .asm_3c4b5 ld a, [PlayerSubStatus3] - and $1 + and 1 << SUBSTATUS_BIDE jr nz, .asm_3c4ba xor a ld [$d235], a - inc a + inc a ; POUND ld [FXAnimIDLo], a call Function3e4bc push af call Function30b4 call UpdateBattleHuds ld a, [CurPlayerMove] - cp $a5 + cp STRUGGLE jr z, .asm_3c476 call PlayClickSFX @@ -653,26 +661,26 @@ Function3c434: ; 3c434 callab UpdateMoveData xor a ld [$c732], a - ld a, [PlayerMoveEffect] - cp $77 + ld a, [wPlayerMoveStruct + MOVE_EFFECT] + cp EFFECT_FURY_CUTTER jr z, .asm_3c494 xor a ld [PlayerFuryCutterCount], a .asm_3c494 - ld a, [PlayerMoveEffect] - cp $51 + ld a, [wPlayerMoveStruct + MOVE_EFFECT] + cp EFFECT_RAGE jr z, .asm_3c4a4 ld hl, PlayerSubStatus4 - res 6, [hl] + res SUBSTATUS_RAGE, [hl] xor a ld [$c72b], a .asm_3c4a4 - ld a, [PlayerMoveEffect] - cp $6f + ld a, [wPlayerMoveStruct + MOVE_EFFECT] + cp EFFECT_PROTECT jr z, .asm_3c4c9 - cp $74 + cp EFFECT_ENDURE jr z, .asm_3c4c9 xor a ld [PlayerProtectCount], a @@ -680,7 +688,7 @@ Function3c434: ; 3c434 .asm_3c4b5 ld hl, PlayerSubStatus3 - res 0, [hl] + res SUBSTATUS_BIDE, [hl] .asm_3c4ba xor a @@ -688,7 +696,7 @@ Function3c434: ; 3c434 ld [PlayerProtectCount], a ld [$c72b], a ld hl, PlayerSubStatus4 - res 6, [hl] + res SUBSTATUS_RAGE, [hl] .asm_3c4c9 call Function3e7c1 @@ -701,7 +709,7 @@ Function3c434: ; 3c434 ld [PlayerProtectCount], a ld [$c72b], a ld hl, PlayerSubStatus4 - res 6, [hl] + res SUBSTATUS_RAGE, [hl] xor a ret ; 3c4df @@ -717,16 +725,16 @@ Function3c4df: ; 3c4df call .asm_3c518 .asm_3c4ed ld hl, PlayerSubStatus5 - bit 4, [hl] + bit SUBSTATUS_ENCORED, [hl] ret z ld a, [PlayerEncoreCount] dec a ld [PlayerEncoreCount], a jr z, .asm_3c50a - ld hl, BattleMonPPMove1 + ld hl, BattleMonPP ld a, [CurMoveNum] ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] and $3f @@ -734,23 +742,23 @@ Function3c4df: ; 3c4df .asm_3c50a ld hl, PlayerSubStatus5 - res 4, [hl] + res SUBSTATUS_ENCORED, [hl] call SetEnemyTurn ld hl, BattleText_0x80c8a jp StdBattleTextBox .asm_3c518 ld hl, EnemySubStatus5 - bit 4, [hl] + bit SUBSTATUS_ENCORED, [hl] ret z ld a, [EnemyEncoreCount] dec a ld [EnemyEncoreCount], a jr z, .asm_3c535 - ld hl, EnemyMonPPMove1 + ld hl, EnemyMonPP ld a, [CurEnemyMoveNum] ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] and $3f @@ -758,7 +766,7 @@ Function3c4df: ; 3c4df .asm_3c535 ld hl, EnemySubStatus5 - res 4, [hl] + res SUBSTATUS_ENCORED, [hl] call SetPlayerTurn ld hl, BattleText_0x80c8a jp StdBattleTextBox @@ -771,7 +779,7 @@ Function3c543: ; 3c543 jr nz, .Stay ld a, [PlayerSubStatus5] - bit 7, a + bit SUBSTATUS_CANT_RUN, a jr nz, .Stay ld a, [$c731] @@ -915,7 +923,7 @@ GetMoveEffect: ; 3c5ec ld a, b dec a ld hl, Moves + MOVE_EFFECT - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte @@ -939,14 +947,14 @@ Function3c5fe: ; 3c5fe ld a, [$d232] and a ret nz - call Function3c710 + call HasPlayerFainted jp z, Function3d14e - call Function3c70b + call HasEnemyFainted jp z, Function3cd55 .asm_3c62f call SetEnemyTurn - call Function3c716 + call ResidualDamage jp z, Function3cd55 call RefreshBattleHuds call Function3c6cf @@ -955,12 +963,12 @@ Function3c5fe: ; 3c5fe ld a, [$d232] and a ret nz - call Function3c70b + call HasEnemyFainted jp z, Function3cd55 - call Function3c710 + call HasPlayerFainted jp z, Function3d14e call SetPlayerTurn - call Function3c716 + call ResidualDamage jp z, Function3d14e call RefreshBattleHuds xor a @@ -981,13 +989,13 @@ Function3c664: ; 3c664 ret nz call Function3d2e0 ret c - call Function3c70b + call HasEnemyFainted jp z, Function3cd55 - call Function3c710 + call HasPlayerFainted jp z, Function3d14e push bc call SetPlayerTurn - call Function3c716 + call ResidualDamage pop bc jp z, Function3d14e push bc @@ -1003,14 +1011,14 @@ Function3c664: ; 3c664 ld a, [$d232] and a ret nz - call Function3c710 + call HasPlayerFainted jp z, Function3d14e - call Function3c70b + call HasEnemyFainted jp z, Function3cd55 .asm_3c6be call SetEnemyTurn - call Function3c716 + call ResidualDamage jp z, Function3cd55 call RefreshBattleHuds xor a @@ -1033,32 +1041,32 @@ Function3c6de: ; 3c6de ; 3c6ed Function3c6ed: ; 3c6ed - ld a, $5 - call _GetBattleVar - res 2, [hl] - res 5, [hl] - ld a, $9 - call _GetBattleVar - res 6, [hl] + ld a, BATTLE_VARS_SUBSTATUS1_OPP + call GetBattleVarAddr + res SUBSTATUS_PROTECT, [hl] + res SUBSTATUS_ENDURE, [hl] + ld a, BATTLE_VARS_SUBSTATUS5_OPP + call GetBattleVarAddr + res SUBSTATUS_DESTINY_BOND, [hl] ret ; 3c6fe Function3c6fe: ; 3c6fe - ld a, $4 - call _GetBattleVar - res 6, [hl] + ld a, BATTLE_VARS_SUBSTATUS5 + call GetBattleVarAddr + res SUBSTATUS_DESTINY_BOND, [hl] ret ; 3c706 -Function3c706: ; 3c706 +HasUserFainted: ; 3c706 ld a, [hBattleTurn] and a - jr z, Function3c710 -Function3c70b: ; 3c70b - ld hl, EnemyMonHPHi + jr z, HasPlayerFainted +HasEnemyFainted: ; 3c70b + ld hl, EnemyMonHP jr Function3c713 -Function3c710: ; 3c710 +HasPlayerFainted: ; 3c710 ld hl, BattleMonHP Function3c713: ; 3c713 @@ -1067,108 +1075,121 @@ Function3c713: ; 3c713 ret ; 3c716 -Function3c716: ; 3c716 - call Function3c706 +ResidualDamage: ; 3c716 +; Return z if the user fainted before +; or as a result of residual damage. +; For Sandstorm damage, see HandleWeather. + + call HasUserFainted ret z - ld a, $a + + ld a, BATTLE_VARS_STATUS call GetBattleVar - and $18 - jr z, .asm_3c768 - ld hl, BattleText_0x807e2 - ld de, $0106 - and $10 - jr z, .asm_3c733 - ld hl, BattleText_0x807f8 - ld de, $0105 - -.asm_3c733 + and 1 << PSN | 1 << BRN + jr z, .did_psn_brn + + ld hl, HurtByPoisonText + ld de, ANIM_PSN + and 1 << BRN + jr z, .got_anim + ld hl, HurtByBurnText + ld de, ANIM_BRN +.got_anim + push de call StdBattleTextBox pop de + xor a ld [$cfca], a call Function3ee0f call GetEighthMaxHP - ld de, $c674 + ld de, PlayerToxicCount ld a, [hBattleTurn] and a jr z, .asm_3c74d - ld de, $c67c - + ld de, EnemyToxicCount .asm_3c74d - ld a, $4 + + ld a, BATTLE_VARS_SUBSTATUS5 call GetBattleVar - bit 0, a - jr z, .asm_3c765 - call Function3cc76 + bit SUBSTATUS_TOXIC, a + jr z, .did_toxic + call GetSixteenthMaxHP ld a, [de] inc a ld [de], a - ld hl, $0000 -.asm_3c75f + ld hl, 0 +.add add hl, bc dec a - jr nz, .asm_3c75f + jr nz, .add ld b, h ld c, l +.did_toxic -.asm_3c765 call Function3cc3f +.did_psn_brn -.asm_3c768 - call Function3c706 - jp z, .asm_3c7f7 - ld a, $3 - call _GetBattleVar - bit 7, [hl] + call HasUserFainted + jp z, .fainted + + ld a, BATTLE_VARS_SUBSTATUS4 + call GetBattleVarAddr + bit SUBSTATUS_LEECH_SEED, [hl] jr z, .asm_3c7a1 - call Function3c8e4 + + call SwitchTurnCore xor a ld [$cfca], a - ld de, $0107 - ld a, $7 + ld de, ANIM_SAP + ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVar - and $60 + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND call z, Function3ee0f - call Function3c8e4 + call SwitchTurnCore + call GetEighthMaxHP call Function3cc3f ld a, $1 ld [hBGMapMode], a call Function3ccef - ld hl, BattleText_0x8080e + ld hl, LeechSeedSapsText call StdBattleTextBox - .asm_3c7a1 - call Function3c706 - jr z, .asm_3c7f7 - ld a, $0 - call _GetBattleVar - bit 0, [hl] + + call HasUserFainted + jr z, .fainted + + ld a, BATTLE_VARS_SUBSTATUS1 + call GetBattleVarAddr + bit SUBSTATUS_NIGHTMARE, [hl] jr z, .asm_3c7c5 xor a ld [$cfca], a - ld de, $010c + ld de, ANIM_IN_NIGHTMARE call Function3ee0f call GetQuarterMaxHP call Function3cc3f - ld hl, BattleText_0x80822 + ld hl, HasANightmareText call StdBattleTextBox - .asm_3c7c5 - call Function3c706 - jr z, .asm_3c7f7 - ld a, $0 - call _GetBattleVar - bit 1, [hl] + + call HasUserFainted + jr z, .fainted + + ld a, BATTLE_VARS_SUBSTATUS1 + call GetBattleVarAddr + bit SUBSTATUS_CURSE, [hl] jr z, .asm_3c7e9 + xor a ld [$cfca], a - ld de, $010c + ld de, ANIM_IN_NIGHTMARE call Function3ee0f call GetQuarterMaxHP call Function3cc3f - ld hl, BattleText_0x80836 + ld hl, HurtByCurseText call StdBattleTextBox .asm_3c7e9 @@ -1176,16 +1197,16 @@ Function3c716: ; 3c716 ld a, [hBattleTurn] and a jr z, .asm_3c7f4 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP .asm_3c7f4 ld a, [hli] or [hl] ret nz -.asm_3c7f7 +.fainted call RefreshBattleHuds - ld c, $14 + ld c, 20 call DelayFrames xor a ret @@ -1212,21 +1233,21 @@ Function3c801: ; 3c801 ld hl, EnemyPerishCount .asm_3c827 - ld a, $0 + ld a, BATTLE_VARS_SUBSTATUS1 call GetBattleVar - bit 4, a + bit SUBSTATUS_PERISH, a ret z dec [hl] ld a, [hl] ld [$d265], a push af - ld hl, BattleText_0x80864 + ld hl, PerishCountText call StdBattleTextBox pop af ret nz - ld a, $0 - call _GetBattleVar - res 4, [hl] + ld a, BATTLE_VARS_SUBSTATUS1 + call GetBattleVarAddr + res SUBSTATUS_PERISH, [hl] ld a, [hBattleTurn] and a jr nz, .asm_3c85c @@ -1243,7 +1264,7 @@ Function3c801: ; 3c801 ret .asm_3c85c - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP xor a ld [hli], a ld [hl], a @@ -1285,9 +1306,9 @@ Function3c874: ; 3c874 ld a, [hl] and a ret z - ld a, $3 + ld a, BATTLE_VARS_SUBSTATUS4 call GetBattleVar - bit 4, a + bit SUBSTATUS_SUBSTITUTE, a ret nz ld a, [de] ld [$d265], a @@ -1295,20 +1316,19 @@ Function3c874: ; 3c874 call GetMoveName dec [hl] jr z, .asm_3c8de - ld a, $2 + ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVar - and $60 + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND jr nz, .asm_3c8d3 - call Function3c8e4 + call SwitchTurnCore xor a ld [$cfca], a ld [FXAnimIDHi], a - ld a, $37 - call Predef - call Function3c8e4 + predef PlayBattleAnim + call SwitchTurnCore .asm_3c8d3 - call Function3cc76 + call GetSixteenthMaxHP call Function3cc3f ld hl, BattleText_0x80de2 jr .asm_3c8e1 @@ -1320,9 +1340,9 @@ Function3c874: ; 3c874 jp StdBattleTextBox ; 3c8e4 -Function3c8e4: ; 3c8e4 +SwitchTurnCore: ; 3c8e4 ld a, [hBattleTurn] - xor $1 + xor 1 ld [hBattleTurn], a ret ; 3c8eb @@ -1352,7 +1372,7 @@ Function3c8eb: ; 3c8eb ld a, [hBattleTurn] and a jr z, .asm_3c922 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP .asm_3c922 ld a, [hli] @@ -1367,8 +1387,8 @@ Function3c8eb: ; 3c8eb ret z .asm_3c92d - call Function3cc76 - call Function3c8e4 + call GetSixteenthMaxHP + call SwitchTurnCore call Function3ccef ld hl, BattleText_0x80880 jp StdBattleTextBox @@ -1390,14 +1410,14 @@ Function3c93c: ; 3c93c .asm_3c957 callab GetUserItem ld a, b - cp $6 + cp HELD_RESTORE_PP jr nz, .asm_3c9ae ld hl, PartyMon1PP ld a, [CurBattleMon] call GetPartyLocation ld d, h ld e, l - ld hl, PartyMon1Move1 + ld hl, PartyMon1Moves ld a, [CurBattleMon] call GetPartyLocation ld a, [hBattleTurn] @@ -1408,12 +1428,12 @@ Function3c93c: ; 3c93c ld a, [IsInBattle] dec a jr z, .asm_3c99b - ld hl, OTPartyMon1PPMove1 + ld hl, OTPartyMon1PP ld a, [CurOTMon] call GetPartyLocation ld d, h ld e, l - ld hl, OTPartyMon1Move1 + ld hl, OTPartyMon1Moves ld a, [CurOTMon] call GetPartyLocation @@ -1430,18 +1450,19 @@ Function3c93c: ; 3c93c inc de inc c ld a, c - cp $4 + cp NUM_MOVES jr nz, .asm_3c99d .asm_3c9ae ret .asm_3c9af + ; lousy hack ld a, [hl] - cp $a6 - ld b, $1 + cp SKETCH + ld b, 1 jr z, .asm_3c9b8 - ld b, $5 + ld b, 5 .asm_3c9b8 ld a, [de] @@ -1451,18 +1472,18 @@ Function3c93c: ; 3c93c push bc ld a, [hl] ld [$d265], a - ld de, BattleMonItem - ld hl, BattleMonPPMove1 + ld de, BattleMonMoves - 1 + ld hl, BattleMonPP ld a, [hBattleTurn] and a jr z, .asm_3c9d2 - ld de, EnemyMonItem - ld hl, EnemyMonPPMove1 + ld de, EnemyMonMoves - 1 + ld hl, EnemyMonPP .asm_3c9d2 inc de pop bc - ld b, $0 + ld b, 0 add hl, bc push hl ld h, d @@ -1480,7 +1501,7 @@ Function3c93c: ; 3c93c ld a, [EnemySubStatus5] .asm_3c9ee - bit 3, a + bit SUBSTATUS_TRANSFORMED, a jr nz, .asm_3c9f5 ld a, [de] add b @@ -1507,9 +1528,9 @@ Function3c93c: ; 3c93c .asm_3ca14 call GetItemName - call Function3c8e4 + call SwitchTurnCore call Function3ddc8 - call Function3c8e4 + call SwitchTurnCore ld hl, BattleText_0x80899 jp StdBattleTextBox ; 3ca26 @@ -1542,27 +1563,32 @@ Function3ca26: ; 3ca26 ld [hl], a cp $1 ret nz + ld hl, BattleText_0x808b6 call StdBattleTextBox - ld a, $10 - call _GetBattleVar + + ld a, BATTLE_VARS_MOVE + call GetBattleVarAddr push af - ld a, $f8 + ld a, FUTURE_SIGHT ld [hl], a + callab UpdateMoveData xor a ld [AttackMissed], a ld [AlreadyDisobeyed], a - ld a, $a + ld a, 10 ld [TypeModifier], a callab DoMove xor a ld [CurDamage], a - ld [$d257], a - ld a, $10 - call _GetBattleVar + ld [CurDamage + 1], a + + ld a, BATTLE_VARS_MOVE + call GetBattleVarAddr pop af ld [hl], a + call UpdateBattleMonInParty jp UpdateEnemyMonInParty ; 3ca8f @@ -1578,7 +1604,7 @@ Function3ca8f: ; 3ca8f call .asm_3cac9 .asm_3ca9d ld a, [BattleMonStatus] - bit 5, a + bit FRZ, a ret z ld a, [$c73f] and a @@ -1591,7 +1617,7 @@ Function3ca8f: ; 3ca8f ld a, [CurBattleMon] ld hl, PartyMon1Status call GetPartyLocation - ld [hl], $0 + ld [hl], 0 call UpdateBattleHuds call SetEnemyTurn ld hl, DefrostedOpponentText @@ -1599,7 +1625,7 @@ Function3ca8f: ; 3ca8f .asm_3cac9 ld a, [EnemyMonStatus] - bit 5, a + bit FRZ, a ret z ld a, [$c740] and a @@ -1609,15 +1635,16 @@ Function3ca8f: ; 3ca8f ret nc xor a ld [EnemyMonStatus], a + ld a, [IsInBattle] dec a jr z, .asm_3caef ld a, [CurOTMon] ld hl, OTPartyMon1Status call GetPartyLocation - ld [hl], $0 - + ld [hl], 0 .asm_3caef + call UpdateBattleHuds call SetPlayerTurn ld hl, DefrostedOpponentText @@ -1635,24 +1662,24 @@ Function3cafb: ; 3cafb call .asm_3cb1c .asm_3cb09 ld a, [PlayerScreens] - bit 2, a + bit SCREENS_SAFEGUARD, a ret z ld hl, $c701 dec [hl] ret nz - res 2, a + res SCREENS_SAFEGUARD, a ld [PlayerScreens], a xor a jr .asm_3cb2e .asm_3cb1c ld a, [EnemyScreens] - bit 2, a + bit SCREENS_SAFEGUARD, a ret z ld hl, $c705 dec [hl] ret nz - res 2, a + res SCREENS_SAFEGUARD, a ld [EnemyScreens], a ld a, $1 @@ -1676,7 +1703,7 @@ Function3cb36: ; 3cb36 .CheckPlayer call SetPlayerTurn ld de, .Your - call .asm_3cb6f + call .Copy ld hl, PlayerScreens ld de, PlayerLightScreenCount jr .FadeScreens @@ -1684,7 +1711,7 @@ Function3cb36: ; 3cb36 .CheckEnemy call SetEnemyTurn ld de, .Enemy - call .asm_3cb6f + call .Copy ld hl, EnemyScreens ld de, EnemyLightScreenCount @@ -1695,7 +1722,7 @@ Function3cb36: ; 3cb36 call nz, FadeReflect ret -.asm_3cb6f +.Copy ld hl, StringBuffer1 jp CopyName2 ; 3cb75 @@ -1734,37 +1761,37 @@ FadeReflect: ; 3cb91 ; 3cb9e HandleWeather: ; 3cb9e - ld a, [Weather] - cp 0 + cp WEATHER_NONE ret z ld hl, WeatherCount dec [hl] - jr z, .asm_3cc13 + jr z, .ended ld hl, .WeatherMessages - call .asm_3cc1e + call .PrintWeatherMessage + ld a, [Weather] cp WEATHER_SANDSTORM ret nz + ld a, [$ffcb] cp 1 - jr z, .asm_3cbc7 + jr z, .enemy_first -; Player first +.player_first call SetPlayerTurn - call .asm_3cbd0 + call .SandstormDamage call SetEnemyTurn - jr .asm_3cbd0 + jr .SandstormDamage -.asm_3cbc7 -; Enemy first +.enemy_first call SetEnemyTurn - call .asm_3cbd0 + call .SandstormDamage call SetPlayerTurn -.asm_3cbd0 +.SandstormDamage ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVar bit SUBSTATUS_UNDERGROUND, a @@ -1773,10 +1800,9 @@ HandleWeather: ; 3cb9e ld hl, BattleMonType1 ld a, [hBattleTurn] and a - jr z, .asm_3cbe3 + jr z, .ok ld hl, EnemyMonType1 - -.asm_3cbe3 +.ok ld a, [hli] cp ROCK ret z @@ -1793,26 +1819,26 @@ HandleWeather: ; 3cb9e cp STEEL ret z - call Function3c8e4 + call SwitchTurnCore xor a ld [$cfca], a - ld de, $010b + ld de, ANIM_IN_SANDSTORM call Function3ee17 - call Function3c8e4 + call SwitchTurnCore call GetEighthMaxHP call Function3cc3f - ld hl, BattleText_0x8084d + ld hl, SandstormHitsText jp StdBattleTextBox -.asm_3cc13 +.ended ld hl, .WeatherEndedMessages - call .asm_3cc1e + call .PrintWeatherMessage xor a ld [Weather], a ret -.asm_3cc1e +.PrintWeatherMessage ld a, [Weather] dec a ld c, a @@ -1846,15 +1872,13 @@ Function3cc3f: ; 3cc3f ; 3cc45 - Function3cc45: ; 3cc45 ld hl, BattleMonHP ld a, [hBattleTurn] and a - jr z, .asm_3cc50 - ld hl, EnemyMonHPHi - -.asm_3cc50 + jr z, .ok + ld hl, EnemyMonHP +.ok inc hl ld a, [hl] ld [$d1ec], a @@ -1879,16 +1903,17 @@ Function3cc45: ; 3cc45 ret ; 3cc76 -Function3cc76: ; 3cc76 +GetSixteenthMaxHP: ; 3cc76 call GetQuarterMaxHP + ; quarter result srl c srl c + ; round up ld a, c and a - jr nz, .asm_3cc82 + jr nz, .ok inc c - -.asm_3cc82 +.ok ret ; 3cc83 @@ -1934,7 +1959,7 @@ GetHalfMaxHP: ; 3cc9f ; output: bc call GetMaxHP -; halve reslut +; halve result srl b rr c @@ -1951,18 +1976,12 @@ GetHalfMaxHP: ; 3cc9f GetMaxHP: ; 3ccac ; output: bc, Buffer1-2 -; player ld hl, BattleMonMaxHP - -; whose turn? ld a, [hBattleTurn] and a - jr z, .gethp - -; enemy + jr z, .ok ld hl, EnemyMonMaxHP - -.gethp +.ok ld a, [hli] ld [Buffer2], a ld b, a @@ -1977,10 +1996,9 @@ Function3ccc2: ; 3ccc2 ld hl, BattleMonHP ld a, [hBattleTurn] and a - jr z, .asm_3cccd + jr z, .ok ld hl, EnemyMonHP - -.asm_3cccd +.ok ld a, [hli] ld b, a ld a, [hli] @@ -1998,10 +2016,9 @@ Function3ccde: ; 3ccde ld hl, BattleMonHP + 1 ld a, [hBattleTurn] and a - jr z, .asm_3cce9 + jr z, .ok ld hl, EnemyMonHP + 1 - -.asm_3cce9 +.ok ld a, c sub [hl] dec hl @@ -2015,25 +2032,25 @@ Function3ccef: ; 3ccef ld hl, EnemyMonMaxHP ld a, [hBattleTurn] and a - jr z, .asm_3ccfa + jr z, .ok ld hl, BattleMonMaxHP - -.asm_3ccfa +.ok ld a, [hli] - ld [Buffer2], a + ld [Buffer1 + 1], a ld a, [hld] - ld [Buffer1], a + ld [Buffer1 + 0], a dec hl ld a, [hl] - ld [$d1ec], a + ld [Buffer1 + 2], a add c ld [hld], a - ld [$d1ee], a + ld [Buffer1 + 4], a ld a, [hl] - ld [$d1ed], a + ld [Buffer1 + 3], a adc b ld [hli], a - ld [$d1ef], a + ld [Buffer1 + 5], a + ld a, [Buffer1] ld c, a ld a, [hld] @@ -2045,15 +2062,15 @@ Function3ccef: ; 3ccef jr c, .asm_3cd2d ld a, b ld [hli], a - ld [$d1ef], a + ld [Buffer1 + 5], a ld a, c ld [hl], a - ld [$d1ee], a - + ld [Buffer1 + 4], a .asm_3cd2d - call Function3c8e4 + + call SwitchTurnCore call Function3cd36 - jp Function3c8e4 + jp SwitchTurnCore ; 3cd36 Function3cd36: ; 3cd36 @@ -2061,21 +2078,18 @@ Function3cd36: ; 3cd36 jp UpdateBattleHuds ; 3cd3c - Function3cd3c: ; 3cd3c hlcoord 10, 9 ld a, [hBattleTurn] and a - ld a, $1 - jr z, .asm_3cd4a + ld a, 1 + jr z, .ok hlcoord 2, 2 xor a - -.asm_3cd4a +.ok push bc ld [$d10a], a - ld a, $b - call Predef + predef Functionc6e0 pop bc ret ; 3cd55 @@ -2093,31 +2107,38 @@ Function3cd55: ; 3cd55 ld a, d and a jp z, LostBattle + ld hl, BattleMonHP ld a, [hli] or [hl] - call nz, Function3df48 + call nz, UpdatePlayerHUD + ld a, $1 ld [hBGMapMode], a - ld c, $3c + ld c, 60 call DelayFrames + ld a, [IsInBattle] dec a jr nz, .asm_3cd8c - ld a, $1 + + ld a, 1 ld [BattleEnded], a ret .asm_3cd8c call Function3cf35 jp z, Function3cfa4 + ld hl, BattleMonHP ld a, [hli] or [hl] jr nz, .asm_3cdba + call Function3d1f8 jr nc, .asm_3cda4 - ld a, $1 + + ld a, 1 ld [BattleEnded], a ret @@ -2125,6 +2146,7 @@ Function3cd55: ; 3cd55 call Function3d227 call Function3d2e0 jp c, Function3c0e5 + ld a, $1 ld [$d0ec], a call Function3cf4a @@ -2147,7 +2169,7 @@ Function3cdca: ; 3cdca jr z, .asm_3cde6 call ClearSprites hlcoord 1, 0 - ld bc, $040a + lb bc, 4, 10 call ClearBox call Function3d2b3 ld a, $1 @@ -2264,27 +2286,29 @@ Function3ce01: ; 3ce01 Function3ceaa: ; 3ceaa ld a, [PartyCount] ld b, a - ld hl, PartyMon1Species + ld hl, PartyMon1 ld c, $1 ld d, $0 .asm_3ceb5 push hl push bc - ld bc, $0022 + ld bc, PartyMon1HP - PartyMon1 add hl, bc ld a, [hli] or [hl] pop bc pop hl jr z, .asm_3ced1 + push hl push bc - ld bc, $0001 + ld bc, PartyMon1Item - PartyMon1 add hl, bc pop bc ld a, [hl] pop hl - cp $39 + + cp EXP_SHARE jr nz, .asm_3ced1 ld a, d or c @@ -2293,7 +2317,7 @@ Function3ceaa: ; 3ceaa .asm_3ced1 sla c push de - ld de, $0030 + ld de, PartyMon2 - PartyMon1 add hl, de pop de dec b @@ -2331,7 +2355,7 @@ Function3cef1: ; 3cef1 call Function37b6 call Function3d43b hlcoord 9, 7 - ld bc, $050b + lb bc, 5, 11 call ClearBox ld hl, BattleText_0x80a75 jp StdBattleTextBox @@ -2345,7 +2369,7 @@ Function3cf14: ; 3cf14 ld de, SFX_UNKNOWN_2A call PlaySFX hlcoord 1, 0 - ld bc, $040a + lb bc, 4, 10 call ClearBox ld hl, BattleText_0x809a8 jp StdBattleTextBox @@ -2356,7 +2380,7 @@ Function3cf35: ; 3cf35 ld b, a xor a ld hl, OTPartyMon1HP - ld de, $0030 + ld de, PartyMon2 - PartyMon1 .asm_3cf40 or [hl] inc hl @@ -2379,7 +2403,7 @@ Function3cf4a: ; 3cf4a and a jr z, .asm_3cf6d call Function3e8e4 - ld a, [$d430] + ld a, [wBattleAction] cp $f ret z call Function30b4 @@ -2415,7 +2439,7 @@ EnemyPartyMonEntrance: ; 3cf78 call SetEnemyTurn call SpikesDamage xor a - ld [EnemyMoveAnimation], a + ld [wEnemyMoveStruct + MOVE_ANIM], a ld [$d0ec], a inc a ret @@ -2433,7 +2457,7 @@ Function3cfa4: ; 3cfa4 callab Function39939 ld hl, BattleText_0x809da call StdBattleTextBox - call Function3d2f1 + call IsMobileBattle jr z, .asm_3cff5 ld a, [InLinkBattle] and a @@ -2445,11 +2469,9 @@ Function3cfa4: ; 3cfa4 ld c, $28 call DelayFrames ld a, [BattleType] - cp $1 + cp BATTLETYPE_CANLOSE jr nz, .asm_3cfe8 - ld a, $2 - call Predef - + predef Functionc658 .asm_3cfe8 ld a, [$c2cc] bit 0, a @@ -2475,7 +2497,7 @@ Function3cfa4: ; 3cfa4 ld c, $3 callba Function11c000 call Functiona80 - ld hl, $c6ec + ld hl, wPayDayMoney ld a, [hli] or [hl] inc hl @@ -2494,7 +2516,7 @@ Function3d02b: ; 3d02b push af ld a, $0 jr nc, .asm_3d044 - ld a, [$d854] + ld a, [wMomSavingMoney] and $7 cp $3 jr nz, .asm_3d044 @@ -2525,7 +2547,7 @@ Function3d02b: ; 3d02b call Function3d099 pop af jr nc, .asm_3d07b - ld a, [$d854] + ld a, [wMomSavingMoney] and $7 jr z, .asm_3d07b ld hl, SentToMomTexts @@ -2547,7 +2569,7 @@ Function3d02b: ; 3d02b Function3d081: ; 3d081 push bc ld hl, $c688 - ld de, $d853 + ld de, wMomsMoney + 2 call Function3d0be pop bc ret @@ -2556,7 +2578,7 @@ Function3d081: ; 3d081 Function3d08d: ; 3d08d push bc ld hl, $c688 - ld de, $d850 + ld de, Money + 2 call Function3d0be pop bc ret @@ -2585,13 +2607,13 @@ SentToMomTexts: ; 3d0ab Function3d0b1: ; 3d0b1 - ld hl, $d853 + ld hl, wMomsMoney + 2 ld a, [hld] - cp $3f + cp 999999 % $100 ld a, [hld] - sbc $42 + sbc 999999 / $100 % $100 ld a, [hl] - sbc $f + sbc 999999 / $10000 % $100 ret ; 3d0be @@ -2616,17 +2638,17 @@ Function3d0be: ; 3d0be jr nz, .asm_3d0ce pop hl ld a, [hld] - cp $3f + cp 999999 % $100 ld a, [hld] - sbc $42 + sbc 999999 / $100 % $100 ld a, [hl] - sbc $f + sbc 999999 / $10000 % $100 ret c - ld [hl], $f + ld [hl], 999999 / $10000 % $100 inc hl - ld [hl], $42 + ld [hl], 999999 / $100 % $100 inc hl - ld [hl], $3f + ld [hl], 999999 % $100 ret ; 3d0ea @@ -2643,7 +2665,7 @@ Function3d0ea: ; 3d0ea call Function3ceaa pop de jr nz, .asm_3d11e - ld hl, $c6ec + ld hl, wPayDayMoney ld a, [hli] or [hl] jr nz, .asm_3d11e @@ -2724,7 +2746,7 @@ KantoGymLeaders: Function3d14e: ; 3d14e call Function3cef1 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] call z, Function3cf14 @@ -2735,7 +2757,7 @@ Function3d14e: ; 3d14e ld a, d and a jp z, LostBattle - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] jr nz, .asm_3d185 @@ -2777,8 +2799,7 @@ Function3d1aa: ; 3d1aa ld c, a ld hl, $c664 ld b, $0 - ld a, $3 - call Predef + predef FlagPredef ld hl, EnemySubStatus3 res 2, [hl] xor a @@ -2833,7 +2854,7 @@ Function3d1f8: ; 3d1f8 cp $1 jr z, .asm_3d20a ld hl, PartyMon1Speed - ld de, EnemyMonSpd + ld de, EnemyMonSpeed jp Function3d8b3 ; 3d227 @@ -2854,7 +2875,7 @@ Function3d227: ; 3d227 ld [$d0ec], a call Function3d2e0 jr c, .asm_3d251 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] jr nz, .asm_3d26c @@ -2920,7 +2941,6 @@ Function3d2b3: ; 3d2b3 ; 3d2e0 - Function3d2e0: ; 3d2e0 ld a, [InLinkBattle] cp $4 @@ -2936,7 +2956,7 @@ Function3d2e0: ; 3d2e0 ret ; 3d2f1 -Function3d2f1: ; 3d2f1 +IsMobileBattle: ; 3d2f1 ld a, [InLinkBattle] cp $4 ret @@ -2962,25 +2982,25 @@ Function3d313: ; 3d313 ; 3d329 Function3d329: ; 3d329 - call Function3d2f1 - jr z, .asm_3d335 + call IsMobileBattle + jr z, .mobile callba PartyMenuSelect ret -.asm_3d335 +.mobile callba Function100cb5 ret ; 3d33c PickPartyMonInBattle: ; 3d33c -.asm_3d33c +.loop ld a, $2 ; Which PKMN? ld [PartyMenuActionText], a call Function3d313 call Function3d329 ret c call Function3d887 - jr z, .asm_3d33c + jr z, .loop xor a ret ; 3d34f @@ -3108,14 +3128,14 @@ LostBattle: ; 3d38e and $c0 add 2 ld [$d0ee], a - jr .asm_3d412 + jr .text .asm_3d40a ld hl, LostAgainstText - call Function3d2f1 + call IsMobileBattle jr z, .asm_3d417 -.asm_3d412 +.text call StdBattleTextBox .end @@ -3204,7 +3224,7 @@ Function3d444: ; 3d444 Function3d490: ; 3d490 - ld [hConnectionStripLength], a + ld [$ffaf], a ld c, a .asm_3d493 push bc @@ -3214,7 +3234,7 @@ Function3d490: ; 3d490 push hl call Function3d4ae pop hl - ld de, 20 + ld de, SCREEN_WIDTH add hl, de dec b jr nz, .asm_3d497 @@ -3228,24 +3248,24 @@ Function3d490: ; 3d490 ; 3d4ae Function3d4ae: ; 3d4ae - ld a, [hConnectionStripLength] + ld a, [$ffaf] ld c, a cp $8 - jr nz, .asm_3d4bc -.asm_3d4b5 + jr nz, .back +.forward ld a, [hli] ld [hld], a dec hl dec c - jr nz, .asm_3d4b5 + jr nz, .forward ret -.asm_3d4bc +.back ld a, [hld] ld [hli], a inc hl dec c - jr nz, .asm_3d4bc + jr nz, .back ret ; 3d4c3 @@ -3273,7 +3293,6 @@ Function3d4e1: ; 3d4e1 call Function3d533 jr c, .asm_3d4f1 call Function3d599 - .asm_3d4f1 call Function3d6ca call Function3d74b @@ -3288,7 +3307,7 @@ Function3d4e1: ; 3d4e1 ld [$c6fc], a ld [$d0ec], a inc a - ld [$c711], a + ld [wEnemyIsSwitching], a call Function309d jp Function3e3ad ; 3d517 @@ -3298,11 +3317,10 @@ Function3d517: ; 3d517 call Function3d533 jr c, .asm_3d522 call Function3d599 - .asm_3d522 call Function3d6ca - ld a, $1 - ld [$c711], a + ld a, 1 + ld [wEnemyIsSwitching], a call Function3d7a0 call Function3d7b8 jp Function3d7c7 @@ -3312,8 +3330,9 @@ Function3d533: ; 3d533 ld a, [InLinkBattle] and a jr z, .asm_3d541 - ld a, [$d430] - sub $4 + + ld a, [wBattleAction] + sub NUM_MOVES ld b, a jr .asm_3d555 @@ -3363,14 +3382,12 @@ Function3d581: ; 3d581 ld a, [CurBattleMon] ld c, a ld hl, $c664 - ld b, $1 + ld b, SET_FLAG push bc - ld a, $3 - call Predef + predef FlagPredef pop bc ld hl, $c6fc - ld a, $3 - jp Predef + predef_jump FlagPredef ; 3d599 Function3d599: ; 3d599 @@ -3412,25 +3429,25 @@ Function3d599: ; 3d599 Function3d5d7: ; 3d5d7 push bc - ld hl, OTPartyMon1Move1 + ld hl, OTPartyMon1Moves ld a, b call GetPartyLocation pop bc - ld e, $5 -.asm_3d5e2 + ld e, NUM_MOVES + 1 +.loop dec e - jr z, .asm_3d617 + jr z, .done ld a, [hli] and a - jr z, .asm_3d617 + jr z, .done push hl push de push bc dec a - ld hl, Moves + MOVE_ANIM - ld bc, Move2 - Move1 + ld hl, Moves + ld bc, MOVE_LENGTH call AddNTimes - ld de, EnemyMoveAnimation + ld de, wEnemyMoveStruct ld a, BANK(Moves) call FarCopyBytes call SetEnemyTurn @@ -3439,13 +3456,12 @@ Function3d5d7: ; 3d5d7 pop de pop hl ld a, [$d265] - cp $b - jr c, .asm_3d5e2 + cp 10 + 1 ; 1.0 + 0.1 + jr c, .loop ld hl, Buffer1 set 0, [hl] ret - -.asm_3d617 +.done ret ; 3d618 @@ -3467,14 +3483,14 @@ Function3d618: ; 3d618 ld a, BANK(BaseData) call FarCopyBytes ld a, [BattleMonType1] - ld [PlayerMoveType], a + ld [wPlayerMoveStruct + MOVE_TYPE], a call SetPlayerTurn callab Function347c8 ld a, [$d265] cp $b jr nc, .asm_3d663 ld a, [BattleMonType2] - ld [PlayerMoveType], a + ld [wPlayerMoveStruct + MOVE_TYPE], a callab Function347c8 ld a, [$d265] cp $b @@ -3572,7 +3588,7 @@ Function3d6ca: ; 3d6ca inc a ld hl, OTPartyCount ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] ld [TempEnemyMonSpecies], a @@ -3584,14 +3600,12 @@ Function3d6ca: ; 3d6ca ld a, [$def4] and a jr nz, .asm_3d708 - ld hl, EnemyMonAtkDefDV - ld a, $2d - call Predef + ld hl, EnemyMonDVs + predef GetUnownLetter ld a, [UnownLetter] ld [$def4], a - .asm_3d708 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] ld [$c6ea], a ld a, [hl] @@ -3610,7 +3624,7 @@ Function3d714: ; 3d714 and a jp nz, .asm_3d749 ld a, [Options] - bit 6, a + bit BATTLE_SHIFT, a jr nz, .asm_3d749 ld a, [CurPartyMon] push af @@ -3676,7 +3690,7 @@ Function3d7a0: ; 3d7a0 call Function1c07 call ClearSprites hlcoord 1, 0 - ld bc, $040a + lb bc, 4, 10 call ClearBox call WaitBGMap jp Function3ee27 @@ -3694,25 +3708,26 @@ Function3d7c7: ; 3d7c7 ld [CurPartySpecies], a ld [CurSpecies], a call GetBaseData - ld a, $1 + ld a, OTPARTYMON ld [MonType], a - ld a, $1f - call Predef + predef Function5084a call Function3f47c + xor a ld [$cfca], a ld [$c689], a call SetEnemyTurn - ld de, $0101 + ld de, ANIM_SEND_OUT_MON call Function3ee17 + call Function3da79 jr nc, .asm_3d800 - ld a, $1 + ld a, 1 ; shiny anim ld [$c689], a - ld de, $0101 + ld de, ANIM_SEND_OUT_MON call Function3ee17 - .asm_3d800 + ld bc, TempMonSpecies callba Function4e53f jr c, .asm_3d82c @@ -3721,8 +3736,7 @@ Function3d7c7: ; 3d7c7 hlcoord 12, 0 ld d, $0 ld e, $0 - ld a, $47 - call Predef + predef Functiond008e jr .asm_3d82c .asm_3d821 @@ -3732,7 +3746,7 @@ Function3d7c7: ; 3d7c7 call Function37b6 .asm_3d82c - call Function3e036 + call UpdateEnemyHUD ld a, $1 ld [hBGMapMode], a ret @@ -3751,7 +3765,7 @@ NewEnemyMonStatus: ; 3d834 ld [hl], a ld [EnemyDisableCount], a ld [EnemyFuryCutterCount], a - ld [$c681], a + ld [EnemyProtectCount], a ld [$c72c], a ld [EnemyDisabledMove], a ld [$c6fa], a @@ -3759,7 +3773,7 @@ NewEnemyMonStatus: ; 3d834 ld [$c731], a ld [EnemyTurnsTaken], a ld hl, PlayerSubStatus5 - res 7, [hl] + res SUBSTATUS_CANT_RUN, [hl] ret ; 3d867 @@ -3779,7 +3793,7 @@ Function3d873: ; 3d873 ld e, a xor a ld hl, PartyMon1HP - ld bc, $002f + ld bc, PartyMon2 - (PartyMon1 + 1) .asm_3d87e or [hl] inc hl @@ -3826,15 +3840,15 @@ Function3d8b3: ; 3d8b3 ld a, [BattleType] cp $2 jp z, .asm_3d9a2 - cp $6 + cp BATTLETYPE_CONTEST jp z, .asm_3d9a2 - cp $9 + cp BATTLETYPE_TRAP jp z, .asm_3d98d - cp $b + cp BATTLETYPE_CELEBI jp z, .asm_3d98d - cp $7 + cp BATTLETYPE_SHINY jp z, .asm_3d98d - cp $c + cp BATTLETYPE_SUICUNE jp z, .asm_3d98d ld a, [InLinkBattle] @@ -3846,7 +3860,7 @@ Function3d8b3: ; 3d8b3 jp nz, .asm_3d992 ld a, [EnemySubStatus5] - bit 7, a + bit SUBSTATUS_CANT_RUN, a jp nz, .asm_3d98d ld a, [$c730] @@ -3860,7 +3874,7 @@ Function3d8b3: ; 3d8b3 ld b, a callab GetItem ld a, b - cp $48 + cp HELD_ESCAPE pop de pop hl jr nz, .asm_3d916 @@ -3969,8 +3983,8 @@ Function3d8b3: ; 3d8b3 call Function3d2e0 jr c, .asm_3d9f5 -; Got away safely - ld a, [$d430] + ; Got away safely + ld a, [wBattleAction] cp $f ld a, $2 jr z, .asm_3d9cf @@ -4011,21 +4025,21 @@ Function3d8b3: ; 3d8b3 Function3da0d: ; 3da0d - ld a, $0 + ld a, PartyMon1Species - PartyMon1 call GetPartyParamLocation ld de, BattleMonSpecies - ld bc, $0006 + ld bc, 1 + 1 + NUM_MOVES ; species, item, moves ; BattleMonDVs - BattleMonSpecies call CopyBytes - ld bc, $000f + ld bc, PartyMon1DVs - (PartyMon1Species + 1 + 1 + NUM_MOVES) add hl, bc - ld de, BattleMonAtkDefDV - ld bc, $0007 + ld de, BattleMonDVs + ld bc, 2 + NUM_MOVES + 1 ; DVs, PP, happiness ; BattleMonLevel - BattleMonDVs call CopyBytes inc hl inc hl inc hl ld de, BattleMonLevel - ld bc, $0011 + ld bc, 1 + 1 + 1 + 2 + 2 * 6 ; level, status, unused, stats call CopyBytes ld a, [BattleMonSpecies] ld [TempBattleMonSpecies], a @@ -4036,15 +4050,15 @@ Function3da0d: ; 3da0d ld [BattleMonType1], a ld a, [BaseType2] ld [BattleMonType2], a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, [CurBattleMon] call SkipNames ld de, BattleMonNick - ld bc, $000b + ld bc, PKMN_NAME_LENGTH call CopyBytes - ld hl, BattleMonAtk + ld hl, BattleMonAttack ld de, PlayerStats - ld bc, $000a + ld bc, 2 * 5 call CopyBytes call Function3ec2c call BadgeStatBoosts @@ -4066,9 +4080,9 @@ Function3da7c: ; 3da7c ; 3da85 Function3da85: ; 3da85 - ld hl, BattleMonAtkDefDV + ld hl, BattleMonDVs ld a, [PlayerSubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a ret z ld hl, PartyMon1DVs ld a, [CurBattleMon] @@ -4076,15 +4090,15 @@ Function3da85: ; 3da85 ; 3da97 Function3da97: ; 3da97 - ld hl, EnemyMonAtkDefDV + ld hl, EnemyMonDVs ld a, [EnemySubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a ret z ld hl, $c6f2 ld a, [IsInBattle] dec a ret z - ld hl, OTPartyMon1AtkDefDV + ld hl, OTPartyMon1DVs ld a, [CurOTMon] jp GetPartyLocation ; 3dab1 @@ -4106,31 +4120,31 @@ Function3dabd: ; 3dabd ld hl, OTPartyMon1Species call GetPartyLocation ld de, EnemyMonSpecies - ld bc, $0006 + ld bc, 1 + 1 + NUM_MOVES call CopyBytes - ld bc, $000f + ld bc, OTPartyMon1DVs - (OTPartyMon1Species + 1 + 1 + NUM_MOVES) add hl, bc - ld de, EnemyMonAtkDefDV - ld bc, $0007 + ld de, EnemyMonDVs + ld bc, 2 + NUM_MOVES + 1 call CopyBytes inc hl inc hl inc hl ld de, EnemyMonLevel - ld bc, $0011 + ld bc, 1 + 1 + 1 + 2 + 2 * 6 call CopyBytes ld a, [EnemyMonSpecies] ld [CurSpecies], a call GetBaseData - ld hl, OTPartyMon1Nickname + ld hl, OTPartyMonNicknames ld a, [CurPartyMon] call SkipNames ld de, EnemyMonNick - ld bc, $000b + ld bc, PKMN_NAME_LENGTH call CopyBytes - ld hl, EnemyMonAtk + ld hl, EnemyMonAttack ld de, EnemyStats - ld bc, $000a + ld bc, 2 * 5 call CopyBytes call Function3ec30 ld hl, BaseType1 @@ -4140,9 +4154,9 @@ Function3dabd: ; 3dabd inc de ld a, [hl] ld [de], a - ld hl, BaseHP + ld hl, BaseStats ld de, EnemyMonBaseStats - ld b, $5 + ld b, 5 .asm_3db25 ld a, [hli] ld [de], a @@ -4169,7 +4183,7 @@ Function3db32: ; 3db32 call Function3db5f call EmptyBattleTextBox call Function309d - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] ret @@ -4177,12 +4191,11 @@ Function3db32: ; 3db32 Function3db5f: ; 3db5f - ld hl, BattleMonAtkDefDV - ld a, $2d - call Predef + ld hl, BattleMonDVs + predef GetUnownLetter hlcoord 1, 5 - ld b, $7 - ld c, $8 + ld b, 7 + ld c, 8 call ClearBox call WaitBGMap xor a @@ -4193,11 +4206,11 @@ Function3db5f: ; 3db5f ld [$d0d2], a ld [CurMoveNum], a ld [TypeModifier], a - ld [PlayerMoveAnimation], a + ld [wPlayerMoveStruct + MOVE_ANIM], a ld [LastEnemyCounterMove], a ld [LastPlayerCounterMove], a ld [LastPlayerMove], a - call Function3e4a8 + call CheckAmuletCoin call Function3ee27 xor a ld [$c731], a @@ -4205,17 +4218,17 @@ Function3db5f: ; 3db5f xor a ld [$cfca], a ld [$c689], a - ld de, $0101 + ld de, ANIM_SEND_OUT_MON call Function3ee17 call Function3da74 jr nc, .asm_3dbbc ld a, $1 ld [$c689], a - ld de, $0101 + ld de, ANIM_SEND_OUT_MON call Function3ee17 .asm_3dbbc - ld a, $0 + ld a, PartyMon1Species - PartyMon1 call GetPartyParamLocation ld b, h ld c, l @@ -4227,7 +4240,7 @@ Function3db5f: ; 3db5f call Function37b6 .asm_3dbd6 - call Function3df48 + call UpdatePlayerHUD ld a, $1 ld [hBGMapMode], a ret @@ -4273,20 +4286,20 @@ BreakAttraction: ; 3dc18 SpikesDamage: ; 3dc23 ld hl, PlayerScreens - ld de, BattleMonType1 - ld bc, Function3df48 + ld de, BattleMonType + ld bc, UpdatePlayerHUD ld a, [hBattleTurn] and a jr z, .ok ld hl, EnemyScreens - ld de, EnemyMonType1 - ld bc, Function3e036 + ld de, EnemyMonType + ld bc, UpdateEnemyHUD .ok bit SCREENS_SPIKES, [hl] ret z -; Flying-types aren't affected by Spikes. + ; Flying-types aren't affected by Spikes. ld a, [de] cp FLYING ret z @@ -4313,15 +4326,17 @@ SpikesDamage: ; 3dc23 ; 3dc5b Function3dc5b: ; 3dc5b - ld a, $10 + ld a, BATTLE_VARS_MOVE call GetBattleVar ld b, a call GetMoveEffect ld a, b - cp $80 + cp EFFECT_PURSUIT jr nz, .asm_3dce4 + ld a, [CurBattleMon] push af + ld hl, DoPlayerTurn ld a, [hBattleTurn] and a @@ -4329,25 +4344,29 @@ Function3dc5b: ; 3dc5b ld hl, DoEnemyTurn ld a, [$c71a] ld [CurBattleMon], a - .asm_3dc7e ld a, BANK(DoPlayerTurn) rst FarCall - ld a, $10 - call _GetBattleVar + + ld a, BATTLE_VARS_MOVE + call GetBattleVarAddr ld a, $ff ld [hl], a + pop af ld [CurBattleMon], a + ld a, [hBattleTurn] and a jr z, .asm_3dcc0 + ld a, [$c71a] call Function399f ld hl, BattleMonHP ld a, [hli] or [hl] jr nz, .asm_3dce4 + ld a, $f0 ld [CryTracks], a ld a, [BattleMonSpecies] @@ -4356,17 +4375,17 @@ Function3dc5b: ; 3dc5b ld c, a ld hl, $c664 ld b, $0 - ld a, $3 - call Predef + predef FlagPredef call Function3d43b ld hl, BattleText_0x80a75 jr .asm_3dcdf .asm_3dcc0 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] jr nz, .asm_3dce4 + ld de, SFX_KINESIS call PlaySFX call WaitSFX @@ -4392,7 +4411,7 @@ Function3dce6: ; 3dce6 xor a ld [hBattleTurn], a ld [$cfca], a - ld de, $0102 + ld de, ANIM_RETURN_MON call Function3ee17 pop af ld [hBattleTurn], a @@ -4428,8 +4447,8 @@ Function3dd2f: ; 3dd2f ld a, b cp $1 ret nz - ld de, EnemyMonHPLo - ld hl, EnemyMonMaxHPHi + ld de, EnemyMonHP + 1 + ld hl, EnemyMonMaxHP ld a, [hBattleTurn] and a jr z, .asm_3dd4a @@ -4502,8 +4521,7 @@ Function3dd2f: ; 3dd2f .asm_3dda4 ld [$d10a], a - ld a, $b - call Predef + predef Functionc6e0 Function3ddac: call RefreshBattleHuds callab GetOpponentItem @@ -4521,15 +4539,14 @@ Function3ddc8: ; 3ddc8 push de push bc call EmptyBattleTextBox - ld a, $69 + ld a, RECOVER ld [FXAnimIDLo], a - call Function3c8e4 + call SwitchTurnCore xor a ld [$cfca], a ld [FXAnimIDHi], a - ld a, $37 - call Predef - call Function3c8e4 + predef PlayBattleAnim + call SwitchTurnCore pop bc pop de pop hl @@ -4548,8 +4565,8 @@ Function3dde9: ; 3dde9 jr nz, .asm_3ddf2 dec hl ld b, [hl] - ld a, $b - call _GetBattleVar + ld a, BATTLE_VARS_STATUS_OPP + call GetBattleVarAddr and b ret z xor a @@ -4557,20 +4574,20 @@ Function3dde9: ; 3dde9 push bc call UpdateOpponentInParty pop bc - ld a, $9 - call _GetBattleVar + ld a, BATTLE_VARS_SUBSTATUS5_OPP + call GetBattleVarAddr and [hl] - res 0, [hl] - ld a, $5 - call _GetBattleVar + res SUBSTATUS_TOXIC, [hl] + ld a, BATTLE_VARS_SUBSTATUS1_OPP + call GetBattleVarAddr and [hl] - res 0, [hl] + res SUBSTATUS_NIGHTMARE, [hl] ld a, b cp $7f jr nz, .asm_3de26 - ld a, $7 - call _GetBattleVar - res 7, [hl] + ld a, BATTLE_VARS_SUBSTATUS3_OPP + call GetBattleVarAddr + res SUBSTATUS_CONFUSED, [hl] .asm_3de26 ld hl, Function365fd @@ -4580,10 +4597,10 @@ Function3dde9: ; 3dde9 ld hl, Function365d7 .asm_3de31 - call Function3c8e4 + call SwitchTurnCore ld a, BANK(Function365fd) rst FarCall - call Function3c8e4 + call SwitchTurnCore call Function3ddc8 call Function3ddac ld a, $1 @@ -4603,23 +4620,23 @@ Function3dde9: ; 3dde9 Function3de51: ; 3de51 - ld a, $7 + ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVar - bit 7, a + bit SUBSTATUS_CONFUSED, a ret z callab GetOpponentItem ld a, b - cp $10 + cp HELD_HEAL_CONFUSION jr z, .asm_3de67 - cp $f + cp HELD_HEAL_STATUS ret nz .asm_3de67 ld a, [hl] ld [$d265], a - ld a, $7 - call _GetBattleVar - res 7, [hl] + ld a, BATTLE_VARS_SUBSTATUS3_OPP + call GetBattleVarAddr + res SUBSTATUS_CONFUSED, [hl] call GetItemName call Function3ddc8 ld hl, BattleText_0x80dab @@ -4715,13 +4732,13 @@ Function3deb6: ; 3deb6 ; 3defc .data_3defc - dbw $1f, BattleCommand70 - dbw $20, BattleCommand71 - dbw $21, BattleCommand72 - dbw $22, BattleCommand73 - dbw $23, BattleCommand74 - dbw $24, BattleCommand75 - dbw $25, BattleCommand76 + dbw HELD_ATTACK_UP, BattleCommand70 + dbw HELD_DEFENSE_UP, BattleCommand71 + dbw HELD_SPEED_UP, BattleCommand72 + dbw HELD_SP_ATTACK_UP, BattleCommand73 + dbw HELD_SP_DEFENSE_UP, BattleCommand74 + dbw HELD_ACCURACY_UP, BattleCommand75 + dbw HELD_EVASION_UP, BattleCommand76 db $ff ; 3df12 @@ -4750,7 +4767,7 @@ Function3df2c: ; 3df2c ld hl, PlayerHPPal call SetHPPal call CheckDanger - call Function3e043 + call DrawEnemyHUD ld hl, EnemyHPPal call SetHPPal pop bc @@ -4761,7 +4778,7 @@ Function3df2c: ; 3df2c -Function3df48:: ; 3df48 +UpdatePlayerHUD:: ; 3df48 push hl push de push bc @@ -4778,9 +4795,9 @@ DrawPlayerHUD: ; 3df58 xor a ld [hBGMapMode], a -; Clear the area + ; Clear the area hlcoord 9, 7 - ld bc, $050b + lb bc, 5, 11 call ClearBox callba DrawPlayerExpBar @@ -4789,15 +4806,14 @@ DrawPlayerHUD: ; 3df58 ld [hl], $73 ; vertical bar call PrintPlayerHUD -; HP bar + ; HP bar hlcoord 10, 9 - ld b, OTPARTYMON + ld b, 1 xor a ld [MonType], a - ld a, PREDEF_DRAW_PLAYER_HP - call Predef + predef DrawPlayerHP -; Exp bar + ; Exp bar push de ld a, [CurBattleMon] ld hl, PartyMon1Exp + 2 @@ -4822,24 +4838,24 @@ CheckDanger: ; 3df9e ld hl, BattleMonHP ld a, [hli] or [hl] - jr z, .asm_3dfb2 + jr z, .no_danger ld a, [$c6fd] and a - jr nz, .asm_3dfbe + jr nz, .done ld a, [PlayerHPPal] - cp $2 - jr z, .asm_3dfb9 + cp HP_RED + jr z, .danger -.asm_3dfb2 +.no_danger ld hl, Danger res 7, [hl] - jr .asm_3dfbe + jr .done -.asm_3dfb9 +.danger ld hl, Danger set 7, [hl] -.asm_3dfbe +.done ret ; 3dfbf @@ -4878,11 +4894,11 @@ PrintPlayerHUD: ; 3dfbf ld a, $3 ld [MonType], a callab GetGender - ld a, $7f + ld a, " " jr c, .asm_3e013 - ld a, $ef + ld a, "♂" jr nz, .asm_3e013 - ld a, $f5 + ld a, "♀" .asm_3e013 hlcoord 17, 8 @@ -4891,13 +4907,12 @@ PrintPlayerHUD: ; 3dfbf push af push hl ld de, BattleMonStatus - ld a, $21 - call Predef + predef Function50d2e pop hl pop bc ret nz ld a, b - cp $7f + cp " " jr nz, .asm_3e02d dec hl @@ -4907,25 +4922,28 @@ PrintPlayerHUD: ; 3dfbf jp PrintLevel ; 3e036 -Function3e036:: ; 3e036 +UpdateEnemyHUD:: ; 3e036 push hl push de push bc - call Function3e043 - call Function3e127 + call DrawEnemyHUD + call UpdateEnemyHPPal pop bc pop de pop hl ret ; 3e043 -Function3e043: ; 3e043 +DrawEnemyHUD: ; 3e043 xor a ld [hBGMapMode], a + hlcoord 1, 0 - ld bc, $040b + lb bc, 4, 11 call ClearBox + callba Function2c0c5 + ld a, [TempEnemyMonSpecies] ld [CurSpecies], a ld [CurPartySpecies], a @@ -4937,52 +4955,52 @@ Function3e043: ; 3e043 ld h, b ld l, c dec hl - ld hl, EnemyMonAtkDefDV + + ld hl, EnemyMonDVs ld de, TempMonDVs ld a, [EnemySubStatus5] - bit 3, a - jr z, .asm_3e080 + bit SUBSTATUS_TRANSFORMED, a + jr z, .ok ld hl, $c6f2 - -.asm_3e080 +.ok ld a, [hli] ld [de], a inc de ld a, [hl] ld [de], a + ld a, $3 ld [MonType], a callab GetGender - ld a, $7f + ld a, " " jr c, .asm_3e09a - ld a, $ef + ld a, "♂" jr nz, .asm_3e09a - ld a, $f5 + ld a, "♀" .asm_3e09a hlcoord 9, 1 ld [hl], a + hlcoord 6, 1 push af push hl ld de, EnemyMonStatus - ld a, $21 - call Predef + predef Function50d2e pop hl pop bc jr nz, .asm_3e0be ld a, b - cp $7f + cp " " jr nz, .asm_3e0b5 dec hl - .asm_3e0b5 ld a, [EnemyMonLevel] ld [TempMonLevel], a call PrintLevel - .asm_3e0be - ld hl, EnemyMonHPHi + + ld hl, EnemyMonHP ld a, [hli] ld [$ffb5], a ld a, [hld] @@ -4991,16 +5009,16 @@ Function3e043: ; 3e043 jr nz, .asm_3e0d1 ld c, a ld e, a - ld d, $6 + ld d, HP_BAR_LENGTH jp .asm_3e11a - .asm_3e0d1 + xor a ld [hMultiplicand], a - ld a, $30 + ld a, HP_BAR_LENGTH_PX ld [hMultiplier], a call Multiply - ld hl, EnemyMonMaxHPHi + ld hl, EnemyMonMaxHP ld a, [hli] ld b, a ld a, [hl] @@ -5035,19 +5053,20 @@ Function3e043: ; 3e043 call Divide ld a, [$ffb6] ld e, a - ld a, $6 + ld a, HP_BAR_LENGTH ld d, a ld c, a + .asm_3e11a xor a ld [$d10a], a hlcoord 2, 2 - ld b, $0 + ld b, 0 call DrawHPBar ret ; 3e127 -Function3e127: ; 3e127 +UpdateEnemyHPPal: ; 3e127 ld hl, EnemyHPPal call Function3e12e ret @@ -5066,52 +5085,56 @@ Function3e138: ; 3e138 ret ; 3e139 -Function3e139: ; 3e139 +BattleMenu: ; 3e139 xor a ld [hBGMapMode], a call Function30bf + ld a, [BattleType] cp $2 - jr z, .asm_3e156 - cp $3 - jr z, .asm_3e156 + jr z, .ok + cp BATTLETYPE_TUTORIAL + jr z, .ok call EmptyBattleTextBox call UpdateBattleHuds call EmptyBattleTextBox call Function309d +.ok -.asm_3e156 +.loop ld a, [BattleType] - cp $6 - jr nz, .asm_3e165 - callba Function24f13 - jr .asm_3e175 + cp BATTLETYPE_CONTEST + jr nz, .not_contest + callba ContestBattleMenu + jr .next +.not_contest -.asm_3e165 + ; Auto input: choose "ITEM" ld a, [InputType] or a jr z, .asm_3e171 callba Function1de294 .asm_3e171 - call Function3e19b + + call LoadBattleMenu2 ret c -.asm_3e175 +.next ld a, $1 ld [hBGMapMode], a ld a, [$d0d2] cp $1 - jp z, Function3e192 + jp z, BattleMenu_Fight cp $3 - jp z, Function3e1c7 + jp z, BattleMenu_Pack cp $2 - jp z, Function3e28d + jp z, BattleMenu_PKMN cp $4 - jp z, Function3e489 - jr .asm_3e156 + jp z, BattleMenu_Run + jr .loop ; 3e192 -Function3e192: ; 3e192 +BattleMenu_Fight: ; 3e192 xor a ld [$d267], a call Function30b4 @@ -5119,59 +5142,64 @@ Function3e192: ; 3e192 ret ; 3e19b -Function3e19b: ; 3e19b - call Function3d2f1 - jr z, .asm_3e1a8 - callba LoadBattleMenuDataHeader +LoadBattleMenu2: ; 3e19b + call IsMobileBattle + jr z, .mobile + + callba LoadBattleMenu and a ret -.asm_3e1a8 +.mobile callba Function100b12 ld a, [$cd2b] and a ret z + ld hl, $cd2a bit 4, [hl] - jr nz, .asm_3e1c5 + jr nz, .error ld hl, BattleText_0x81863 call StdBattleTextBox - ld c, $3c + ld c, 60 call DelayFrames - -.asm_3e1c5 +.error scf ret ; 3e1c7 -Function3e1c7: ; 3e1c7 +BattleMenu_Pack: ; 3e1c7 ld a, [InLinkBattle] and a - jp nz, Function3e22b + jp nz, ItemsCantBeUsed + ld a, [$cfc0] and a - jp nz, Function3e22b + jp nz, ItemsCantBeUsed + call Function1d6e + ld a, [BattleType] - cp $3 - jr z, .asm_3e1f1 - cp $6 - jr z, .asm_3e201 - callba Function10493 + cp BATTLETYPE_TUTORIAL + jr z, .tutorial + cp BATTLETYPE_CONTEST + jr z, .contest + + callba BattlePack ld a, [$d0ec] and a jr z, .asm_3e20d jr .asm_3e209 -.asm_3e1f1 +.tutorial callba Function107bb - ld a, $5 + ld a, POKE_BALL ld [CurItem], a call DoItemEffect jr .asm_3e209 -.asm_3e201 - ld a, $b1 +.contest + ld a, PARK_BALL ld [CurItem], a call DoItemEffect @@ -5189,13 +5217,13 @@ Function3e1c7: ; 3e1c7 call WaitBGMap call Function3ee27 call Function309d - jp Function3e139 + jp BattleMenu ; 3e22b -Function3e22b: ; 3e22b +ItemsCantBeUsed: ; 3e22b ld hl, BattleText_0x80bf3 call StdBattleTextBox - jp Function3e139 + jp BattleMenu ; 3e234 Function3e234: ; 3e234 @@ -5214,7 +5242,7 @@ Function3e234: ; 3e234 call Function3ed9f call ClearSprites ld a, [BattleType] - cp $3 + cp BATTLETYPE_TUTORIAL jr z, .asm_3e25d call Function3f43d @@ -5243,7 +5271,7 @@ Function3e234: ; 3e234 ret ; 3e28d -Function3e28d: ; 3e28d +BattleMenu_PKMN: ; 3e28d call Function1d6e Function3e290: call Function1c07 @@ -5290,11 +5318,11 @@ Function3e299: call Function309d call ClearSGB call Function32f9 - jp Function3e139 + jp BattleMenu ; 3e2f5 Function3e2f5: ; 3e2f5 - call Function3d2f1 + call IsMobileBattle jr z, .asm_3e301 callba Function24e99 ret @@ -5350,7 +5378,7 @@ Function3e358: ; 3e358 and a jr nz, .asm_3e378 ld a, [EnemySubStatus5] - bit 7, a + bit SUBSTATUS_CANT_RUN, a jr z, .asm_3e381 .asm_3e378 @@ -5378,8 +5406,8 @@ Function3e358: ; 3e358 ; 3e3ad Function3e3ad: ; 3e3ad - ld a, $1 - ld [$c710], a + ld a, 1 + ld [wPlayerIsSwitching], a ld a, [InLinkBattle] and a jr z, .asm_3e3c1 @@ -5399,12 +5427,12 @@ Function3e3ad: ; 3e3ad ret .asm_3e3cf - ld a, [$d430] + ld a, [wBattleAction] cp $e jp z, .asm_3e3ca cp $d jp z, .asm_3e3ca - cp $4 + cp NUM_MOVES jp c, .asm_3e3ca cp $f jr nz, .asm_3e3e9 @@ -5444,9 +5472,9 @@ BattleMonEntrance: ; 3e40b call SetEnemyTurn call Function3dc5b - jr c, .asm_3e423 + jr c, .ok call Function3dce6 -.asm_3e423 +.ok hlcoord 9, 7 lb bc, 5, 11 @@ -5493,13 +5521,12 @@ PassedBattleMonEntrance: ; 3e459 ; 3e489 - -Function3e489: ; 3e489 +BattleMenu_Run: ; 3e489 call Function30b4 ld a, $3 ld [$cfa9], a - ld hl, BattleMonSpd - ld de, EnemyMonSpd + ld hl, BattleMonSpeed + ld de, EnemyMonSpeed call Function3d8b3 ld a, $0 ld [$d266], a @@ -5507,31 +5534,30 @@ Function3e489: ; 3e489 ld a, [$d0ec] and a ret nz - jp Function3e139 + jp BattleMenu ; 3e4a8 - -Function3e4a8: ; 3e4a8 +CheckAmuletCoin: ; 3e4a8 ld a, [BattleMonItem] ld b, a callab GetItem ld a, b - cp $4c + cp HELD_AMULET_COIN ret nz - ld a, $1 + ld a, 1 ld [$c73d], a ret ; 3e4bc Function3e4bc: ; 3e4bc - call Function3d2f1 + call IsMobileBattle jr nz, .asm_3e4c8 callba Function100b9f ret .asm_3e4c8 - ld hl, EnemyMonMove1 + ld hl, EnemyMonMoves ld a, [$d235] dec a jr z, .asm_3e4e2 @@ -5539,49 +5565,49 @@ Function3e4bc: ; 3e4bc jr z, .asm_3e4dd call Function3e786 ret z - ld hl, BattleMonMove1 + ld hl, BattleMonMoves jr .asm_3e4e2 .asm_3e4dd - ld a, $2 + ld a, PartyMon1Moves - PartyMon1 call GetPartyParamLocation .asm_3e4e2 ld de, $d25e - ld bc, $0004 + ld bc, NUM_MOVES call CopyBytes xor a ld [hBGMapMode], a - hlcoord 4, 12 - ld b, $4 - ld c, $e + + hlcoord 4, 17 - NUM_MOVES - 1 + ld b, 4 + ld c, 14 ld a, [$d235] cp $2 jr nz, .asm_3e503 - hlcoord 4, 8 - ld b, $4 - ld c, $e - + hlcoord 4, 17 - NUM_MOVES - 1 - 4 + ld b, 4 + ld c, 14 .asm_3e503 call TextBox - hlcoord 6, 13 + + hlcoord 6, 17 - NUM_MOVES ld a, [$d235] cp $2 jr nz, .asm_3e513 - hlcoord 6, 9 - + hlcoord 6, 17 - NUM_MOVES - 4 .asm_3e513 - ld a, $14 + ld a, SCREEN_WIDTH ld [Buffer1], a - ld a, $20 - call Predef - ld b, $5 + predef ListMoves + + ld b, 5 ld a, [$d235] cp $2 - ld a, $d + ld a, 17 - NUM_MOVES jr nz, .asm_3e52c - ld b, $5 - ld a, $9 + ld b, 5 + ld a, 17 - NUM_MOVES - 4 .asm_3e52c ld [$cfa1], a @@ -5641,23 +5667,24 @@ Function3e4bc: ; 3e4bc and a jr z, .asm_3e5a3 hlcoord 5, 13 - ld bc, $0014 + ld bc, SCREEN_WIDTH dec a call AddNTimes - ld [hl], $ec + ld [hl], "▷" .asm_3e5a3 ld a, $1 ld [hBGMapMode], a call Function1bd3 - bit 6, a + bit 6, a ; D_UP jp nz, .asm_3e61d - bit 7, a + bit 7, a ; D_DOWN jp nz, .asm_3e62e - bit 2, a - jp nz, Function3e643 - bit 1, a + bit 2, a ; B_BUTTON + jp nz, .asm_3e643 + bit 1, a ; A_BUTTON push af + xor a ld [$d0e3], a ld a, [$cfa9] @@ -5667,6 +5694,7 @@ Function3e4bc: ; 3e4bc ld a, [$d235] dec a jr nz, .asm_3e5d0 + pop af ret @@ -5675,16 +5703,18 @@ Function3e4bc: ; 3e4bc ld a, b ld [CurMoveNum], a jr nz, .asm_3e5d9 + pop af ret .asm_3e5d9 pop af ret nz - ld hl, BattleMonPPMove1 + + ld hl, BattleMonPP ld a, [$cfa9] ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] and $3f @@ -5699,9 +5729,9 @@ Function3e4bc: ; 3e4bc and a jr nz, .asm_3e606 ld a, [$cfa9] - ld hl, BattleMonMove1 + ld hl, BattleMonMoves ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] @@ -5737,7 +5767,7 @@ Function3e4bc: ; 3e4bc jp .asm_3e57a ; 3e62e -.asm_3e62e: ; 3e62e +.asm_3e62e ; 3e62e ld a, [$cfa9] ld b, a ld a, [$d0eb] @@ -5750,7 +5780,7 @@ Function3e4bc: ; 3e4bc jp .asm_3e57a ; 3e643 -Function3e643: ; 3e643 +.asm_3e643 ; 3e643 ld a, [$d0e3] and a jr z, .asm_3e6bf @@ -5789,7 +5819,7 @@ Function3e643: ; 3e643 .asm_3e682 ld a, [PlayerSubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a jr nz, .asm_3e69e ld hl, PartyMon1Moves ld a, [CurBattleMon] @@ -5797,7 +5827,7 @@ Function3e643: ; 3e643 push hl call .asm_3e6a5 pop hl - ld bc, $0015 + ld bc, PartyMon1PP - PartyMon1Moves add hl, bc call .asm_3e6a5 @@ -5897,11 +5927,10 @@ MoveInfoBox: ; 3e6c8 ld [hl], "/" callab UpdateMoveData - ld a, [PlayerMoveAnimation] + ld a, [wPlayerMoveStruct + MOVE_ANIM] ld b, a hlcoord 2, 10 - ld a, PREDEF_PRINT_MOVE_TYPE - call Predef + predef PrintMoveType .done ret @@ -5918,10 +5947,9 @@ Function3e75f: ; 3e75f hlcoord 5, 11 ld a, [InLinkBattle] cp $4 - jr c, .asm_3e76c + jr c, .ok hlcoord 5, 11 - -.asm_3e76c +.ok push hl ld de, StringBuffer1 ld bc, $0102 @@ -5987,7 +6015,7 @@ Function3e786: ; 3e786 Function3e7c1: ; 3e7c1 - ld a, [$c711] + ld a, [wEnemyIsSwitching] and a ret nz ld a, [InLinkBattle] @@ -5999,34 +6027,35 @@ Function3e7c1: ; 3e7c1 and a call z, Function3e8e4 call Function30b4 - ld a, [$d430] + ld a, [wBattleAction] cp $e jp z, .asm_3e8bd cp $d jp z, .asm_3e82c - cp $4 + cp NUM_MOVES jp nc, Function3e8c1 ld [CurEnemyMoveNum], a ld c, a ld a, [EnemySubStatus1] - bit 6, a + bit SUBSTATUS_ROLLOUT, a jp nz, .asm_3e882 ld a, [EnemySubStatus3] - and $13 + and 1 << SUBSTATUS_CHARGED | 1 << SUBSTATUS_RAMPAGE | 1 << SUBSTATUS_BIDE jp nz, .asm_3e882 + ld hl, EnemySubStatus5 - bit 4, [hl] + bit SUBSTATUS_ENCORED, [hl] ld a, [LastEnemyMove] jp nz, .asm_3e87f - ld hl, EnemyMonMove1 - ld b, $0 + ld hl, EnemyMonMoves + ld b, 0 add hl, bc ld a, [hl] jp .asm_3e87f .asm_3e817 ld hl, EnemySubStatus5 - bit 4, [hl] + bit SUBSTATUS_ENCORED, [hl] jr z, .asm_3e824 ld a, [LastEnemyMove] jp .asm_3e87f @@ -6041,9 +6070,9 @@ Function3e7c1: ; 3e7c1 jr .asm_3e87f .asm_3e830 - ld hl, EnemyMonMove1 - ld de, EnemyMonPPMove1 - ld b, $4 + ld hl, EnemyMonMoves + ld de, EnemyMonPP + ld b, NUM_MOVES .asm_3e838 ld a, [hl] and a @@ -6067,11 +6096,11 @@ Function3e7c1: ; 3e7c1 dec a jr nz, .asm_3e882 .asm_3e855 - ld hl, EnemyMonMove1 + ld hl, EnemyMonMoves call BattleRandom - and $3 + and 3 ; TODO factor in NUM_MOVES ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [EnemyDisableCount] swap a @@ -6082,7 +6111,7 @@ Function3e7c1: ; 3e7c1 ld a, [hl] and a jr z, .asm_3e855 - ld hl, EnemyMonPPMove1 + ld hl, EnemyMonPP add hl, bc ld b, a ld a, [hl] @@ -6104,56 +6133,56 @@ Function3e7c1: ; 3e7c1 ld [$c733], a .asm_3e894 - ld a, [EnemyMoveEffect] - cp $77 + ld a, [wEnemyMoveStruct + MOVE_EFFECT] + cp EFFECT_FURY_CUTTER jr z, .asm_3e89f xor a ld [EnemyFuryCutterCount], a .asm_3e89f - ld a, [EnemyMoveEffect] - cp $51 + ld a, [wEnemyMoveStruct + MOVE_EFFECT] + cp EFFECT_RAGE jr z, .asm_3e8af ld hl, EnemySubStatus4 - res 6, [hl] + res SUBSTATUS_RAGE, [hl] xor a ld [$c72c], a .asm_3e8af - ld a, [EnemyMoveEffect] - cp $6f + ld a, [wEnemyMoveStruct + MOVE_EFFECT] + cp EFFECT_PROTECT ret z - cp $74 + cp EFFECT_ENDURE ret z xor a - ld [$c681], a + ld [EnemyProtectCount], a ret .asm_3e8bd - ld a, $a5 + ld a, STRUGGLE jr .asm_3e87f ; 3e8c1 Function3e8c1: ; 3e8c1 xor a ld [EnemyFuryCutterCount], a - ld [$c681], a + ld [EnemyProtectCount], a ld [$c72c], a ld hl, EnemySubStatus4 - res 6, [hl] + res SUBSTATUS_RAGE, [hl] ret ; 3e8d1 Function3e8d1: ; 3e8d1 ld a, [EnemySubStatus4] - and $20 + and 1 << SUBSTATUS_RECHARGE ret nz ld hl, EnemySubStatus3 ld a, [hl] - and $13 + and 1 << SUBSTATUS_CHARGED | 1 << SUBSTATUS_RAMPAGE | 1 << SUBSTATUS_BIDE ret nz ld hl, EnemySubStatus1 - bit 6, [hl] + bit SUBSTATUS_ROLLOUT, [hl] ret ; 3e8e4 @@ -6251,9 +6280,8 @@ LoadEnemyMon: ; 3e8eb and a jr z, .InitDVs -; ???? ld a, [EnemySubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a jr z, .InitDVs ; Unknown @@ -6366,8 +6394,7 @@ LoadEnemyMon: ; 3e8eb ; Get letter based on DVs ld hl, EnemyMonDVs - ld a, PREDEF_GET_UNOWN_LETTER - call Predef + predef GetUnownLetter ; Can't use any letters that haven't been unlocked ; If combined with forced shiny battletype, causes an infinite loop call CheckUnownLetter @@ -6448,8 +6475,7 @@ LoadEnemyMon: ; 3e8eb ld de, EnemyMonMaxHP ld b, $00 ld hl, $d201 ; ? - ld a, PREDEF_FILLSTATS - call Predef + predef Functione167 ; If we're in a trainer battle, ; get the rest of the parameters from the party struct @@ -6461,15 +6487,14 @@ LoadEnemyMon: ; 3e8eb and a jr z, .TreeMon -; ???? ld a, [EnemySubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a jp nz, .Moves .TreeMon ; If we're headbutting trees, some monsters enter battle asleep call CheckSleepingTreeMon - ld a, 7 ; Asleep for 7 turns + ld a, SLP ; Asleep for 7 turns jr c, .UpdateStatus ; Otherwise, no status xor a @@ -6483,9 +6508,9 @@ LoadEnemyMon: ; 3e8eb ld [hli], a ; Full HP... - ld a, [EnemyMonMaxHPHi] + ld a, [EnemyMonMaxHP] ld [hli], a - ld a, [EnemyMonMaxHPLo] + ld a, [EnemyMonMaxHP + 1] ld [hl], a ; ...unless it's a RoamMon @@ -6501,13 +6526,13 @@ LoadEnemyMon: ; 3e8eb jr z, .InitRoamHP ; Update from the struct if it has ld a, [hl] - ld [EnemyMonHPLo], a + ld [EnemyMonHP + 1], a jr .Moves .InitRoamHP ; HP only uses the lo byte in the RoamMon struct since ; Raikou/Entei/Suicune will have < 256 hp at level 40 - ld a, [EnemyMonHPLo] + ld a, [EnemyMonHP + 1] ld [hl], a jr .Moves @@ -6518,9 +6543,9 @@ LoadEnemyMon: ; 3e8eb ld a, [CurPartyMon] call GetPartyLocation ld a, [hld] - ld [EnemyMonHPLo], a + ld [EnemyMonHP + 1], a ld a, [hld] - ld [EnemyMonHPHi], a + ld [EnemyMonHP], a ; Make sure everything knows which monster the opponent is using ld a, [CurPartyMon] @@ -6533,7 +6558,6 @@ LoadEnemyMon: ; 3e8eb .Moves -; ???? ld hl, BaseType1 ld de, EnemyMonType1 ld a, [hli] @@ -6568,8 +6592,7 @@ LoadEnemyMon: ; 3e8eb ; Make sure the predef knows this isn't a partymon ld [MagikarpLength], a ; Fill moves based on level - ld a, PREDEF_FILLMOVES - call Predef + predef FillMoves .PP ; Trainer battle? @@ -6580,8 +6603,7 @@ LoadEnemyMon: ; 3e8eb ; Fill wild PP ld hl, EnemyMonMoves ld de, EnemyMonPP - ld a, PREDEF_FILLPP - call Predef + predef FillPP jr .Finish .TrainerPP @@ -6634,8 +6656,7 @@ LoadEnemyMon: ; 3e8eb ld c, a ld b, 1 ; set ld hl, PokedexSeen - ld a, PREDEF_FLAG - call Predef + predef FlagPredef ld hl, EnemyMonStats ld de, EnemyStats @@ -6795,7 +6816,7 @@ Function3ebd8: ; 3ebd8 ld a, [OtherTrainerClass] ld [TrainerClass], a ld de, VTiles2 - callab Function5120d + callab GetTrainerPic hlcoord 19, 0 ld c, $0 .asm_3ebf3 @@ -6866,7 +6887,7 @@ Function3ec39: ; 3ec39 and a jr z, .asm_3ec5a ld a, [BattleMonStatus] - and $40 + and 1 << PAR ret z ld hl, $c645 ld a, [hld] @@ -6887,7 +6908,7 @@ Function3ec39: ; 3ec39 .asm_3ec5a ld a, [EnemyMonStatus] - and $40 + and 1 << PAR ret z ld hl, $d21f ld a, [hld] @@ -6912,7 +6933,7 @@ Function3ec76: ; 3ec76 and a jr z, .asm_3ec93 ld a, [BattleMonStatus] - and $10 + and 1 << BRN ret z ld hl, $c641 ld a, [hld] @@ -6931,7 +6952,7 @@ Function3ec76: ; 3ec76 .asm_3ec93 ld a, [EnemyMonStatus] - and $10 + and 1 << BRN ret z ld hl, $d21b ld a, [hld] @@ -6966,11 +6987,11 @@ Function3ecb7: ; 3ecb7 ld a, [$d265] and a ld a, c - ld hl, BattleMonAtk + ld hl, BattleMonAttack ld de, PlayerStats ld bc, PlayerAtkLevel jr z, .asm_3ecd2 - ld hl, EnemyMonAtk + ld hl, EnemyMonAttack ld de, EnemyStats ld bc, EnemyAtkLevel @@ -7104,7 +7125,7 @@ BadgeStatBoosts: ; 3ed45 or c ld b, a - ld hl, BattleMonAtk + ld hl, BattleMonAttack ld c, 4 .CheckBadge ld a, b @@ -7274,8 +7295,7 @@ Function3ee17: ; 3ee17 ld a, d ld [FXAnimIDHi], a call WaitBGMap - ld a, $37 - jp Predef + predef_jump PlayBattleAnim ; 3ee27 Function3ee27: ; 3ee27 @@ -7320,8 +7340,7 @@ Function3ee3b: ; 3ee3b ld c, a ld b, $2 ld d, $0 - ld a, $3 - call Predef + predef FlagPredef ld a, c and a pop bc @@ -7423,7 +7442,7 @@ Function3ee3b: ; 3ee3b ld a, [$ffb5] ld [StringBuffer2], a ld a, [CurPartyMon] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call GetNick ld hl, UnknownText_0x3f11b call BattleTextBox @@ -7494,8 +7513,7 @@ Function3ee3b: ; 3ee3b .asm_3ef74 xor a ld [MonType], a - ld a, $1f - call Predef + predef Function5084a callab Function50e1b pop bc ld hl, PartyMon1Level - PartyMon1 @@ -7531,8 +7549,7 @@ Function3ee3b: ; 3ee3b add hl, bc push bc ld b, $1 - ld a, $c - call Predef + predef Functione167 pop bc pop de ld hl, $0025 @@ -7571,7 +7588,7 @@ Function3ee3b: ; 3ee3b ld a, [hl] ld [BattleMonLevel], a ld a, [PlayerSubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a jr nz, .asm_3f012 ld hl, $0026 add hl, bc @@ -7585,7 +7602,7 @@ Function3ee3b: ; 3ee3b call Function3ecab callab Function3ec2c callab BadgeStatBoosts - callab Function3df48 + callab UpdatePlayerHUD call EmptyBattleTextBox call Function309d ld a, $1 @@ -7608,16 +7625,14 @@ Function3ee3b: ; 3ee3b .asm_3f057 xor a ld [MonType], a - ld a, $1f - call Predef + predef Function5084a hlcoord 9, 0 ld b, $a ld c, $9 call TextBox hlcoord 11, 1 ld bc, $0004 - ld a, $28 - call Predef + predef Function50b7b ld c, $1e call DelayFrames call Functiona80 @@ -7637,8 +7652,7 @@ Function3ee3b: ; 3ee3b ld a, b ld [CurPartyLevel], a push bc - ld a, $1a - call Predef + predef LearnLevelMoves pop bc ld a, b cp c @@ -7649,8 +7663,7 @@ Function3ee3b: ; 3ee3b ld a, [CurPartyMon] ld c, a ld b, $1 - ld a, $3 - call Predef + predef FlagPredef pop af ld [CurPartyLevel], a @@ -7767,8 +7780,7 @@ Function3f136: ; 3f136 ld [DefaultFlypoint], a xor a ld [MonType], a - ld a, $1f - call Predef + predef Function5084a ld a, [TempMonLevel] ld b, a ld e, a @@ -7951,14 +7963,14 @@ Function3f26d: ; 3f26d jr nz, .asm_3f2ce .asm_3f27c - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] or [hl] ld hl, UnknownText_0x3f2d1 jr z, .asm_3f2ce xor a ld [hMultiplicand], a - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] ld [$c6ea], a ld [$ffb5], a @@ -7968,7 +7980,7 @@ Function3f26d: ; 3f26d ld a, $19 ld [hMultiplier], a call Multiply - ld hl, EnemyMonMaxHPHi + ld hl, EnemyMonMaxHP ld a, [hli] ld b, [hl] srl a @@ -8043,7 +8055,7 @@ UnknownText_0x3f2fa: ; 3f2fa Function3f2ff: ; 3f2ff push de push bc - ld hl, EnemyMonHPLo + ld hl, EnemyMonHP + 1 ld de, $c6eb ld b, [hl] dec hl @@ -8058,7 +8070,7 @@ Function3f2ff: ; 3f2ff ld a, $19 ld [hMultiplier], a call Multiply - ld hl, EnemyMonMaxHPHi + ld hl, EnemyMonMaxHP ld a, [hli] ld b, [hl] srl a @@ -8279,9 +8291,10 @@ Function3f41c: ; 3f41c Function3f43d: ; 3f43d ld a, [PlayerSubStatus4] - bit 4, a + bit SUBSTATUS_SUBSTITUTE, a ld hl, BattleAnimCmd_DD jr nz, Function3f46f + Function3f447: ; 3f447 ld a, [$c6fe] and a @@ -8291,12 +8304,10 @@ Function3f447: ; 3f447 push af ld a, [BattleMonSpecies] ld [CurPartySpecies], a - ld hl, BattleMonAtkDefDV - ld a, $2d - call Predef + ld hl, BattleMonDVs + predef GetUnownLetter ld de, $9310 - ld a, $3d - call Predef + predef GetBackpic pop af ld [CurPartySpecies], a ret @@ -8316,26 +8327,26 @@ Function3f46f: ; 3f46f Function3f47c: ; 3f47c ld a, [EnemySubStatus4] - bit 4, a + bit SUBSTATUS_SUBSTITUTE, a ld hl, BattleAnimCmd_DD jr nz, Function3f4b4 + Function3f486: ; 3f486 ld a, [$c6fa] and a ld hl, BattleAnimCmd_E2 jr nz, Function3f4b4 + ld a, [CurPartySpecies] push af ld a, [EnemyMonSpecies] ld [CurSpecies], a ld [CurPartySpecies], a call GetBaseData - ld hl, EnemyMonAtkDefDV - ld a, $2d - call Predef + ld hl, EnemyMonDVs + predef GetUnownLetter ld de, VTiles2 - ld a, $3e - call Predef + predef Function5108b pop af ld [CurPartySpecies], a ret @@ -8410,7 +8421,7 @@ Function3f4dd: ; 3f4dd call ClearSprites ld a, [IsInBattle] cp $1 - call z, Function3e036 + call z, UpdateEnemyHUD ld a, $1 ld [hBGMapMode], a ret @@ -8441,7 +8452,7 @@ Function3f568: ; 3f568 ld a, $6 ld [rSVBK], a ld hl, $d000 - ld bc, VBlank5 + ld bc, $400 ld a, $2 call ByteFill ld a, [rVBK] @@ -8465,28 +8476,29 @@ Function3f594: ; 3f594 xor a ld [TempEnemyMonSpecies], a callab Function3957b - callab Function39771 + callab ReadTrainerParty + ld a, [TrainerClass] - cp $9 - jr nz, .asm_3f5b8 + cp RIVAL1 + jr nz, .ok xor a ld [OTPartyMon1Item], a +.ok -.asm_3f5b8 ld de, VTiles2 - callab Function5120d + callab GetTrainerPic xor a ld [$ffad], a dec a ld [$c6e6], a hlcoord 12, 0 - ld bc, $0707 - ld a, $13 - call Predef + lb bc, 7, 7 + predef FillBox ld a, $ff ld [CurOTMon], a - ld a, $2 + ld a, TRAINER_BATTLE ld [IsInBattle], a + call IsJohtoGymLeader jr nc, .asm_3f606 xor a @@ -8495,14 +8507,13 @@ Function3f594: ; 3f594 ld b, a .asm_3f5ea push bc - ld a, $22 + ld a, PartyMon1HP - PartyMon1 call GetPartyParamLocation ld a, [hli] or [hl] jr z, .asm_3f5fc ld c, $4 callab ChangeHappiness - .asm_3f5fc pop bc dec b @@ -8510,7 +8521,6 @@ Function3f594: ; 3f594 ld hl, CurPartyMon inc [hl] jr .asm_3f5ea - .asm_3f606 ret ; 3f607 @@ -8520,44 +8530,40 @@ Function3f607: ; 3f607 ld [IsInBattle], a callba Function10605d call LoadEnemyMon - ld hl, EnemyMonMove1 + ld hl, EnemyMonMoves ld de, $c735 - ld bc, $0004 + ld bc, NUM_MOVES call CopyBytes - ld hl, EnemyMonPPMove1 + ld hl, EnemyMonPP ld de, $c739 - ld bc, $0004 + ld bc, NUM_MOVES call CopyBytes - ld hl, EnemyMonAtkDefDV - ld a, $2d - call Predef + ld hl, EnemyMonDVs + predef GetUnownLetter ld a, [CurPartySpecies] - cp $c9 + cp UNOWN jr nz, .asm_3f648 ld a, [$def4] and a jr nz, .asm_3f648 ld a, [UnownLetter] ld [$def4], a - .asm_3f648 ld de, VTiles2 - ld a, $3e - call Predef + predef Function5108b xor a ld [TrainerClass], a ld [$ffad], a hlcoord 12, 0 - ld bc, $0707 - ld a, $13 - call Predef + lb bc, 7, 7 + predef FillBox ret ; 3f662 Function3f662: ; 3f662 - ld hl, EnemyMonMove1 + ld hl, EnemyMonMoves ld de, $d25e - ld b, 4 + ld b, NUM_MOVES .loop ld a, [de] inc de @@ -8571,7 +8577,7 @@ Function3f662: ; 3f662 push hl dec a ld hl, Moves + MOVE_PP - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte @@ -8618,7 +8624,7 @@ Function3f6a5: ; 3f6a5 and a jr z, .asm_3f6b7 call Function3f759 - ld c, $96 + ld c, 150 call DelayFrames call Function3f77c ret @@ -8630,8 +8636,7 @@ Function3f6a5: ; 3f6a5 call Function3f71d xor a ld [$d1e9], a - ld a, $1c - call Predef + predef Function421e6 callba Function2ed44 ret ; 3f6d0 @@ -8661,16 +8666,16 @@ Function3f6d0: ; 3f6d0 ld [$d0e1], a ld hl, PlayerSubStatus1 ld b, $18 -.asm_3f715 +.loop ld [hli], a dec b - jr nz, .asm_3f715 + jr nz, .loop call WaitSFX ret ; 3f71d Function3f71d: ; 3f71d - ld hl, $c6ec + ld hl, wPayDayMoney ld a, [hli] or [hl] inc hl @@ -8679,7 +8684,7 @@ Function3f71d: ; 3f71d ld a, [$c73d] and a jr z, .asm_3f73d - ld hl, $c6ee + ld hl, wPayDayMoney + 2 sla [hl] dec hl rl [hl] @@ -8692,8 +8697,8 @@ Function3f71d: ; 3f71d ld [hl], a .asm_3f73d - ld hl, $c6ee - ld de, $d850 + ld hl, wPayDayMoney + 2 + ld de, Money + 2 call Function3d0be ld hl, BattleText_0x80730 call StdBattleTextBox @@ -8966,7 +8971,7 @@ Function3f998: ; 3f998 and $f jr z, .asm_3f9af call GetRoamMonHP - ld a, [EnemyMonHPLo] + ld a, [EnemyMonHP + 1] ld [hl], a jr .asm_3f9ca @@ -8994,74 +8999,74 @@ Function3f998: ; 3f998 GetRoamMonMapGroup: ; 3f9d1 ld a, [TempEnemyMonSpecies] ld b, a - ld a, [RoamMon1Species] + ld a, [wRoamMon1Species] cp b - ld hl, RoamMon1MapGroup + ld hl, wRoamMon1MapGroup ret z - ld a, [RoamMon2Species] + ld a, [wRoamMon2Species] cp b - ld hl, RoamMon2MapGroup + ld hl, wRoamMon2MapGroup ret z - ld hl, RoamMon3MapGroup + ld hl, wRoamMon3MapGroup ret ; 3f9e9 GetRoamMonMapNumber: ; 3f9e9 ld a, [TempEnemyMonSpecies] ld b, a - ld a, [RoamMon1Species] + ld a, [wRoamMon1Species] cp b - ld hl, RoamMon1MapNumber + ld hl, wRoamMon1MapNumber ret z - ld a, [RoamMon2Species] + ld a, [wRoamMon2Species] cp b - ld hl, RoamMon2MapNumber + ld hl, wRoamMon2MapNumber ret z - ld hl, RoamMon3MapNumber + ld hl, wRoamMon3MapNumber ret ; 3fa01 GetRoamMonHP: ; 3fa01 -; output: hl = RoamMonHP +; output: hl = wRoamMonHP ld a, [TempEnemyMonSpecies] ld b, a - ld a, [RoamMon1Species] + ld a, [wRoamMon1Species] cp b - ld hl, RoamMon1HP + ld hl, wRoamMon1HP ret z - ld a, [RoamMon2Species] + ld a, [wRoamMon2Species] cp b - ld hl, RoamMon2HP + ld hl, wRoamMon2HP ret z - ld hl, RoamMon3HP + ld hl, wRoamMon3HP ret ; 3fa19 GetRoamMonDVs: ; 3fa19 -; output: hl = RoamMonDVs +; output: hl = wRoamMonDVs ld a, [TempEnemyMonSpecies] ld b, a - ld a, [RoamMon1Species] + ld a, [wRoamMon1Species] cp b - ld hl, RoamMon1DVs + ld hl, wRoamMon1DVs ret z - ld a, [RoamMon2Species] + ld a, [wRoamMon2Species] cp b - ld hl, RoamMon2DVs + ld hl, wRoamMon2DVs ret z - ld hl, RoamMon3DVs + ld hl, wRoamMon3DVs ret ; 3fa31 GetRoamMonSpecies: ; 3fa31 ld a, [TempEnemyMonSpecies] - ld hl, RoamMon1Species + ld hl, wRoamMon1Species cp [hl] ret z - ld hl, RoamMon2Species + ld hl, wRoamMon2Species cp [hl] ret z - ld hl, RoamMon3Species + ld hl, wRoamMon3Species ret ; 3fa42 @@ -9305,8 +9310,7 @@ Function3fb6c: ; 3fb6c ld [$ffad], a hlcoord 2, 6 ld bc, $0606 - ld a, $13 - call Predef + predef FillBox xor a ld [hWY], a ld [rWY], a @@ -9328,7 +9332,7 @@ Function3fbd6: ; 3fbd6 ld a, $6 ld [rSVBK], a ld hl, $d000 - ld bc, VBlank5 + ld bc, $400 ld a, $7f call ByteFill ld de, $d000 @@ -9377,8 +9381,7 @@ GetBattleBackpic: ; 3fbff .Decompress ld de, $9310 ld c, $31 - ld a, PREDEF_DECOMPRESS - call Predef + predef DecompressPredef ret ; 3fc30 @@ -9401,15 +9404,14 @@ Function3fc30: ; 3fc30 ld [$ffad], a hlcoord 2, 6 ld bc, $0606 - ld a, $13 - call Predef + predef FillBox ret ; 3fc5b Function3fc5b: ; 3fc5b ld hl, Sprites xor a - ld [hConnectionStripLength], a + ld [$ffaf], a ld b, $6 ld e, $a8 .asm_3fc65 @@ -9420,10 +9422,10 @@ Function3fc5b: ; 3fc5b inc hl ld [hl], e inc hl - ld a, [hConnectionStripLength] + ld a, [$ffaf] ld [hli], a inc a - ld [hConnectionStripLength], a + ld [$ffaf], a ld a, $1 ld [hli], a ld a, d @@ -9431,9 +9433,9 @@ Function3fc5b: ; 3fc5b ld d, a dec c jr nz, .asm_3fc69 - ld a, [hConnectionStripLength] + ld a, [$ffaf] add $3 - ld [hConnectionStripLength], a + ld [$ffaf], a ld a, e add $8 ld e, a @@ -9470,7 +9472,7 @@ BattleStartMessage: ; 3fc8b ld [hBattleTurn], a ld a, 1 ld [$c689], a - ld de, $0101 + ld de, ANIM_SEND_OUT_MON call Function3ee17 .asm_3fcc2 @@ -9483,8 +9485,7 @@ BattleStartMessage: ; 3fc8b hlcoord 12, 0 ld d, $0 ld e, $1 - ld a, $47 - call Predef + predef Functiond008e jr .asm_3fceb .asm_3fce0 @@ -9507,8 +9508,8 @@ BattleStartMessage: ; 3fc8b ld hl, PokemonFellFromTreeText cp BATTLETYPE_TREE jr z, .asm_3fd0e - ld hl, WildPokemonAppearedText2 - cp $b + ld hl, WildCelebiAppearedText + cp BATTLETYPE_CELEBI jr z, .asm_3fd0e ld hl, WildPokemonAppearedText diff --git a/battle/effect_commands.asm b/battle/effect_commands.asm index d16528d22..dc82b4500 100644 --- a/battle/effect_commands.asm +++ b/battle/effect_commands.asm @@ -16,10 +16,10 @@ DoEnemyTurn: ; 3400a and a jr z, DoTurn - ld a, [$d430] + ld a, [wBattleAction] cp $e jr z, DoTurn - cp $4 + cp NUM_MOVES ret nc ; fallthrough @@ -32,7 +32,7 @@ DoTurn: ; 3401d xor a ld [$c6b4], a -; Effect command checkturn is called for every move. + ; Effect command checkturn is called for every move. call CheckTurn ld a, [$c6b4] @@ -146,218 +146,206 @@ BattleCommand01: ; 34084 CheckPlayerTurn: -; check recharge ld hl, PlayerSubStatus4 - bit 5, [hl] - jr z, .CheckSleep - res 5, [hl] + bit SUBSTATUS_RECHARGE, [hl] + jr z, .no_recharge -; 'must recharge!' + res SUBSTATUS_RECHARGE, [hl] ld hl, MustRechargeText call StdBattleTextBox - call CantMove jp Function34385 +.no_recharge + -.CheckSleep ld hl, BattleMonStatus ld a, [hl] - and $7 - jr z, .CheckFrozen + and SLP + jr z, .not_asleep + dec a ld [BattleMonStatus], a - and $7 - jr z, .WokeUp + and SLP + jr z, .woke_up + xor a ld [$cfca], a ld de, ANIM_SLP call FarPlayBattleAnimation - jr .FastAsleep + jr .fast_asleep - -.WokeUp -; 'woke up!' +.woke_up ld hl, WokeUpText call StdBattleTextBox - call CantMove call UpdateBattleMonInParty - ld hl, Function3df48 + ld hl, UpdatePlayerHUD call CallBattleCore ld a, $1 ld [$ffd4], a ld hl, PlayerSubStatus1 - res 0, [hl] - jr .CheckFrozen - + res SUBSTATUS_NIGHTMARE, [hl] + jr .not_asleep -.FastAsleep -; 'fast asleep!' +.fast_asleep ld hl, FastAsleepText call StdBattleTextBox -; Snore and Sleep Talk bypass sleep. + ; Snore and Sleep Talk bypass sleep. ld a, [CurPlayerMove] cp SNORE - jr z, .CheckFrozen + jr z, .not_asleep cp SLEEP_TALK - jr z, .CheckFrozen + jr z, .not_asleep + call CantMove jp Function34385 +.not_asleep + -.CheckFrozen ld hl, BattleMonStatus - bit 5, [hl] - jr z, .CheckFlinch + bit FRZ, [hl] + jr z, .not_frozen -; Flame Wheel and Sacred Fire thaw the user. + ; Flame Wheel and Sacred Fire thaw the user. ld a, [CurPlayerMove] cp FLAME_WHEEL - jr z, .CheckFlinch + jr z, .not_frozen cp SACRED_FIRE - jr z, .CheckFlinch + jr z, .not_frozen -; 'frozen solid!' ld hl, FrozenSolidText call StdBattleTextBox call CantMove jp Function34385 +.not_frozen -.CheckFlinch - ld hl, PlayerSubStatus3 - bit 3, [hl] ; flinch - jr z, .CheckDisabled - res 3, [hl] + ld hl, PlayerSubStatus3 + bit SUBSTATUS_FLINCHED, [hl] + jr z, .not_flinched -; 'flinched!' + res SUBSTATUS_FLINCHED, [hl] ld hl, FlinchedText call StdBattleTextBox call CantMove jp Function34385 +.not_flinched + -.CheckDisabled ld hl, PlayerDisableCount ld a, [hl] and a - jr z, .CheckConfused + jr z, .not_disabled + dec a ld [hl], a and $f - jr nz, .CheckConfused + jr nz, .not_disabled + ld [hl], a ld [DisabledMove], a - -; 'disabled no more!' ld hl, DisabledNoMoreText call StdBattleTextBox +.not_disabled + -.CheckConfused ld a, [PlayerSubStatus3] add a - jr nc, .CheckAttract + jr nc, .not_confused ld hl, PlayerConfuseCount dec [hl] - jr nz, .Confused + jr nz, .confused ld hl, PlayerSubStatus3 - res 7, [hl] - -; 'confused no more!' + res SUBSTATUS_CONFUSED, [hl] ld hl, ConfusedNoMoreText call StdBattleTextBox + jr .not_confused - jr .CheckAttract - - -.Confused -; 'confused!' +.confused ld hl, IsConfusedText call StdBattleTextBox - xor a ld [$cfca], a ld de, ANIM_CONFUSED call FarPlayBattleAnimation -; 50% chance of hitting itself + ; 50% chance of hitting itself call BattleRandom cp $80 - jr nc, .CheckAttract + jr nc, .not_confused + ; clear confussion-dependent substatus ld hl, PlayerSubStatus3 ld a, [hl] - and $80 + and 1 << SUBSTATUS_CONFUSED ld [hl], a call HitConfusion - call CantMove jp Function34385 +.not_confused + -.CheckAttract ld a, [PlayerSubStatus1] - add a ; check bit 7 - jr nc, .CheckDisabledMove + add a ; bit SUBSTATUS_ATTRACT + jr nc, .not_infatuated -; 'in love with' ld hl, InLoveWithText call StdBattleTextBox - xor a ld [$cfca], a - ld de, ANIM_IN_LOVE call FarPlayBattleAnimation -; 50% chance of infatuation + ; 50% chance of infatuation call BattleRandom cp $80 - jr c, .CheckDisabledMove + jr c, .not_infatuated -; 'infatuation kept it from attacking!' ld hl, InfatuationText call StdBattleTextBox - call CantMove jp Function34385 +.not_infatuated -.CheckDisabledMove -; We can't disable a move that doesn't exist. + + ; We can't disable a move that doesn't exist. ld a, [DisabledMove] and a - jr z, .CheckParalyzed + jr z, .no_disabled_move -; Are we using the disabled move? + ; Are we using the disabled move? ld hl, CurPlayerMove cp [hl] - jr nz, .CheckParalyzed + jr nz, .no_disabled_move call MoveDisabled call CantMove jp Function34385 +.no_disabled_move + -.CheckParalyzed ld hl, BattleMonStatus - bit 6, [hl] + bit PAR, [hl] ret z -; 25% chance to be fully paralyzed + ; 25% chance to be fully paralyzed call BattleRandom cp $3f ret nc -; 'fully paralyzed!' ld hl, FullyParalyzedText call StdBattleTextBox call CantMove @@ -367,13 +355,13 @@ CheckPlayerTurn: CantMove: ; 341f0 ld a, BATTLE_VARS_SUBSTATUS1 - call _GetBattleVar - res 6, [hl] + call GetBattleVarAddr + res SUBSTATUS_ROLLOUT, [hl] ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr ld a, [hl] - and $ec + and $ff ^ (1<<SUBSTATUS_BIDE + 1<<SUBSTATUS_RAMPAGE + 1<<SUBSTATUS_CHARGED) ld [hl], a call ResetFuryCutterCount @@ -383,12 +371,12 @@ CantMove: ; 341f0 cp FLY jr z, .asm_3420f - cp $5b + cp DIG ret nz .asm_3420f - res 5, [hl] - res 6, [hl] + res SUBSTATUS_UNDERGROUND, [hl] + res SUBSTATUS_FLYING, [hl] jp Function37ece ; 34216 @@ -404,137 +392,129 @@ Function34216: ; 34216 CheckEnemyTurn: ; 3421f -; check recharge ld hl, EnemySubStatus4 - bit 5, [hl] - jr z, .CheckSleep - res 5, [hl] + bit SUBSTATUS_RECHARGE, [hl] + jr z, .no_recharge -; 'must recharge!' + res SUBSTATUS_RECHARGE, [hl] ld hl, MustRechargeText call StdBattleTextBox call CantMove jp Function34385 +.no_recharge + -.CheckSleep ld hl, EnemyMonStatus ld a, [hl] - and $7 - jr z, .CheckFrozen + and SLP + jr z, .not_asleep + dec a ld [EnemyMonStatus], a and a - jr z, .WokeUp + jr z, .woke_up -; 'fast asleep!' ld hl, FastAsleepText call StdBattleTextBox xor a ld [$cfca], a ld de, ANIM_SLP call FarPlayBattleAnimation - jr .FastAsleep - + jr .fast_asleep -.WokeUp -; 'woke up!' +.woke_up ld hl, WokeUpText call StdBattleTextBox call CantMove call UpdateEnemyMonInParty - ld hl, Function3e036 + ld hl, UpdateEnemyHUD call CallBattleCore ld a, $1 ld [$ffd4], a ld hl, EnemySubStatus1 - res 0, [hl] - jr .CheckFrozen - + res SUBSTATUS_NIGHTMARE, [hl] + jr .not_asleep -.FastAsleep -; Snore and Sleep Talk bypass sleep. +.fast_asleep + ; Snore and Sleep Talk bypass sleep. ld a, [CurEnemyMove] cp SNORE - jr z, .CheckFrozen + jr z, .not_asleep cp SLEEP_TALK - jr z, .CheckFrozen + jr z, .not_asleep call CantMove jp Function34385 +.not_asleep + -.CheckFrozen ld hl, EnemyMonStatus - bit 5, [hl] - jr z, .CheckFlinch + bit FRZ, [hl] + jr z, .not_frozen ld a, [CurEnemyMove] - cp $ac - jr z, .CheckFlinch - cp $dd - jr z, .CheckFlinch + cp FLAME_WHEEL + jr z, .not_frozen + cp SACRED_FIRE + jr z, .not_frozen -; 'frozen solid!' ld hl, FrozenSolidText call StdBattleTextBox call CantMove jp Function34385 +.not_frozen -.CheckFlinch - ld hl, EnemySubStatus3 - bit 3, [hl] - jr z, .CheckDisabled - res 3, [hl] + ld hl, EnemySubStatus3 + bit SUBSTATUS_FLINCHED, [hl] + jr z, .not_flinched -; 'flinched!' + res SUBSTATUS_FLINCHED, [hl] ld hl, FlinchedText call StdBattleTextBox call CantMove jp Function34385 +.not_flinched + -.CheckDisabled ld hl, EnemyDisableCount ld a, [hl] and a - jr z, .CheckConfused + jr z, .not_disabled dec a ld [hl], a and $f - jr nz, .CheckConfused + jr nz, .not_disabled ld [hl], a ld [EnemyDisabledMove], a -; 'disabled no more!' ld hl, DisabledNoMoreText call StdBattleTextBox +.not_disabled + -.CheckConfused ld a, [EnemySubStatus3] - add a - jr nc, .CheckAttract + add a ; bit SUBSTATUS_CONFUSED + jr nc, .not_confused ld hl, $c67b dec [hl] - jr nz, .Confused + jr nz, .confused ld hl, EnemySubStatus3 - res 7, [hl] - -; 'confused no more!' + res SUBSTATUS_CONFUSED, [hl] ld hl, ConfusedNoMoreText call StdBattleTextBox - - jr .CheckAttract + jr .not_confused -.Confused -; 'confused!' +.confused ld hl, IsConfusedText call StdBattleTextBox @@ -543,104 +523,94 @@ CheckEnemyTurn: ; 3421f ld de, ANIM_CONFUSED call FarPlayBattleAnimation -; 50% chance of hitting itself + ; 50% chance of hitting itself call BattleRandom cp $80 - jr nc, .CheckAttract + jr nc, .not_confused + ; clear confusion-dependent substatus ld hl, EnemySubStatus3 ld a, [hl] - and %10000000 + and 1 << SUBSTATUS_CONFUSED ld [hl], a -; 'hurt itself in its confusion!' ld hl, HurtItselfText call StdBattleTextBox - call Function355dd - call BattleCommand62 - call BattleCommand0a - xor a ld [$cfca], a -; Flicker the monster pic unless flying or underground. - ld de, $0115 + ; Flicker the monster pic unless flying or underground. + ld de, ANIM_HIT_CONFUSION ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVar - and $60 + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND call z, PlayFXAnimID ld c, $1 call Function35d1c - call BattleCommand0c - call CantMove jp Function34385 +.not_confused + -.CheckAttract ld a, [EnemySubStatus1] - add a ; check bit 7 - jr nc, .CheckDisabledMove + add a ; bit SUBSTATUS_ATTRACT + jr nc, .not_infatuated -; 'in love with' ld hl, InLoveWithText call StdBattleTextBox - xor a ld [$cfca], a - ld de, ANIM_IN_LOVE call FarPlayBattleAnimation -; 50% chance of infatuation + ; 50% chance of infatuation call BattleRandom cp $80 - jr c, .CheckDisabledMove + jr c, .not_infatuated -; 'infatuation kept it from attacking!' ld hl, InfatuationText call StdBattleTextBox - call CantMove jp Function34385 +.not_infatuated + -.CheckDisabledMove -; We can't disable a move that doesn't exist. + ; We can't disable a move that doesn't exist. ld a, [EnemyDisabledMove] and a - jr z, .CheckParalyzed + jr z, .no_disabled_move -; Are we using the disabled move? + ; Are we using the disabled move? ld hl, CurEnemyMove cp [hl] - jr nz, .CheckParalyzed + jr nz, .no_disabled_move call MoveDisabled call CantMove jp Function34385 +.no_disabled_move + -.CheckParalyzed ld hl, EnemyMonStatus - bit 6, [hl] + bit PAR, [hl] ret z -; 25% chance to be fully paralyzed + ; 25% chance to be fully paralyzed call BattleRandom cp $3f ret nc -; 'fully paralyzed!' ld hl, FullyParalyzedText call StdBattleTextBox - call CantMove ; fallthrough @@ -656,17 +626,16 @@ Function34385: ; 34385 MoveDisabled: ; 3438d -; Make sure any charged moves fail + ; Make sure any charged moves fail ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar - res 4, [hl] + call GetBattleVarAddr + res SUBSTATUS_CHARGED, [hl] ld a, BATTLE_VARS_MOVE call GetBattleVar ld [$d265], a call GetMoveName -; 'disabled!' ld hl, DisabledMoveText jp StdBattleTextBox ; 343a5 @@ -674,7 +643,6 @@ MoveDisabled: ; 3438d HitConfusion: ; 343a5 -; 'hurt itself in its confusion!' ld hl, HurtItselfText call StdBattleTextBox @@ -682,30 +650,25 @@ HitConfusion: ; 343a5 ld [CriticalHit], a call Function355dd - call BattleCommand62 - call BattleCommand0a xor a ld [$cfca], a -; Flicker the monster pic unless flying or underground. - ld de, $0115 + ; Flicker the monster pic unless flying or underground. + ld de, ANIM_HIT_CONFUSION ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVar - and $60 + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND call z, PlayFXAnimID - ld hl, Function3df48 + ld hl, UpdatePlayerHUD call CallBattleCore - ld a, $1 ld [$ffd4], a - ld c, $1 call Function35d7e - jp BattleCommand0c ; 343db @@ -713,7 +676,7 @@ HitConfusion: ; 343a5 BattleCommand02: ; 343db ; checkobedience -; Enemy can't disobey + ; Enemy can't disobey ld a, [hBattleTurn] and a ret nz @@ -721,7 +684,7 @@ BattleCommand02: ; 343db call Function34548 ret nz -; If we've already checked this turn + ; If we've already checked this turn ld a, [AlreadyDisobeyed] and a ret nz @@ -729,7 +692,8 @@ BattleCommand02: ; 343db xor a ld [AlreadyDisobeyed], a -; No obedience in link battles (since no handling exists for enemy) + ; No obedience in link battles + ; (since no handling exists for enemy) ld a, [InLinkBattle] and a ret nz @@ -738,8 +702,8 @@ BattleCommand02: ; 343db and a ret nz -; If the monster's id doesn't match the player's, -; some conditions need to be met. + ; If the monster's id doesn't match the player's, + ; some conditions need to be met. ld a, PartyMon1ID - PartyMon1 call BattlePartyAttr @@ -753,30 +717,30 @@ BattleCommand02: ; 343db .obeylevel -; The maximum obedience level is constrained by owned badges: + ; The maximum obedience level is constrained by owned badges: ld hl, JohtoBadges -; risingbadge + ; risingbadge bit 7, [hl] - ld a, 101 + ld a, MAX_LEVEL + 1 jr nz, .getlevel -; stormbadge + ; stormbadge bit 5, [hl] ld a, 70 jr nz, .getlevel -; fogbadge + ; fogbadge bit 3, [hl] ld a, 50 jr nz, .getlevel -; hivebadge + ; hivebadge bit 1, [hl] ld a, 30 jr nz, .getlevel -; no badges + ; no badges ld a, 10 @@ -852,25 +816,21 @@ BattleCommand02: ; 343db cp b jr nc, .DoNothing -; 'won't obey!' ld hl, WontObeyText call StdBattleTextBox - call HitConfusion - - jp Function3450c + jp .asm_3450c .Nap call BattleRandom add a swap a - and 7 + and SLP jr z, .Nap ld [BattleMonStatus], a -; 'began to nap!' ld hl, BeganToNapText jr .Print @@ -879,33 +839,29 @@ BattleCommand02: ; 343db call BattleRandom and 3 -; 'loafing around!' ld hl, LoafingAroundText and a jr z, .Print -; 'won't obey!' ld hl, WontObeyText dec a jr z, .Print -; 'turned away!' ld hl, TurnedAwayText dec a jr z, .Print -; 'ignored orders!' ld hl, IgnoredOrdersText .Print call StdBattleTextBox - jp Function3450c + jp .asm_3450c .UseInstead ; Can't use another move if the monster only has one! - ld a, [BattleMonMove2] + ld a, [BattleMonMoves + 1] and a jr z, .DoNothing @@ -965,7 +921,7 @@ BattleCommand02: ; 343db .RandomMove call BattleRandom - and 3 + and 3 ; TODO NUM_MOVES cp b jr nc, .RandomMove @@ -1003,19 +959,15 @@ BattleCommand02: ; 343db pop af ld [CurMoveNum], a - ; fallthrough -; 3450c - -Function3450c: ; 3450c +.asm_3450c xor a ld [LastPlayerMove], a ld [LastEnemyCounterMove], a + ; Break Encore too. ld hl, PlayerSubStatus5 - res 4, [hl] - -; Break encore too. + res SUBSTATUS_ENCORED, [hl] xor a ld [PlayerEncoreCount], a @@ -1038,7 +990,7 @@ IgnoreSleepOnly: ; 3451f .CheckSleep ld a, BATTLE_VARS_STATUS call GetBattleVar - and 7 + and SLP ret z ; 'ignored orders…sleeping!' @@ -1113,7 +1065,7 @@ BattleCommand04: ; 34555 inc de ld a, [de] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a ret nz ld a, [hBattleTurn] @@ -1147,20 +1099,20 @@ BattleCommand04: ; 34555 .asm_345b8 ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] and $3f jr z, .asm_345e3 dec [hl] - ld b, $0 + ld b, 0 ret .asm_345c5 ld hl, EnemyMonMoves ld a, [CurEnemyMoveNum] ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] cp MIMIC @@ -1410,7 +1362,7 @@ BattleCommand07: ; 346d2 .go ld a, BATTLE_VARS_MOVE_TYPE - call _GetBattleVar + call GetBattleVarAddr ld [$d265], a push hl @@ -1467,12 +1419,12 @@ BattleCommand07: ; 346d2 cp $ff jr z, .end -; foresight + ; foresight cp $fe jr nz, .asm_34757 ld a, BATTLE_VARS_SUBSTATUS1_OPP call GetBattleVar - bit 3, a + bit SUBSTATUS_IDENTIFIED, a jr nz, .end jr .asm_34743 @@ -1584,7 +1536,7 @@ Function347d3: ; 347d3 ld b, [hl] inc hl ld c, [hl] - ld a, $a + ld a, 10 ; 1.0 ld [$d265], a ld hl, TypeMatchup .asm_347e7 @@ -1675,7 +1627,7 @@ Function3484e: ; 3484e jr z, .asm_3489f ; 0x34863 $3a push hl dec a - ld hl, Moves + PlayerMovePower - PlayerMoveStruct + ld hl, Moves + MOVE_POWER call GetMoveAttr and a jr z, .asm_3489b ; 0x3486e $2b @@ -1744,8 +1696,8 @@ Function3484e: ; 3484e Function348de: ; 348de - ld de, EnemyMonMove1 - ld b, 5 + ld de, EnemyMonMoves + ld b, NUM_MOVES + 1 ld c, 0 ld a, [$d265] @@ -1761,7 +1713,7 @@ Function348de: ; 348de inc de dec a - ld hl, Moves + PlayerMovePower - PlayerMoveStruct + ld hl, Moves + MOVE_POWER call GetMoveAttr and a jr z, .loop @@ -1775,7 +1727,7 @@ Function348de: ; 348de jr z, .loop inc c - cp $a + cp 10 jr c, .loop inc c @@ -1784,10 +1736,10 @@ Function348de: ; 348de inc c inc c - cp $a + cp 10 jr z, .loop - ld c, $64 + ld c, 100 jr .loop .exit @@ -1797,9 +1749,9 @@ Function348de: ; 348de ld a, c and a jr z, .doubledown ; double down - cp $5 + cp 5 jr c, Function34931 ; down - cp $64 + cp 100 ret c jr Function34939 ; up @@ -1833,11 +1785,11 @@ Function34941: ; 34941 ret c ld a, [EnemySubStatus1] - bit 4, a + bit SUBSTATUS_PERISH, a jr z, .asm_34986 - ld a, [$c67f] - cp $1 + ld a, [EnemyPerishCount] + cp 1 jr nz, .asm_34986 call Function349f4 @@ -1969,10 +1921,11 @@ Function349f4: ; 349f4 ld a, c or b ld c, a + .asm_34a16 srl b push bc - ld bc, $30 + ld bc, PartyMon2 - PartyMon1 add hl, bc pop bc inc e @@ -2010,7 +1963,7 @@ Function34a2a: ; 34a2a push hl push bc - ld bc, $0022 + ld bc, PartyMon1HP - PartyMon1 add hl, bc pop bc ld a, [hli] @@ -2023,7 +1976,7 @@ Function34a2a: ; 34a2a call GetBaseData ld a, [LastEnemyCounterMove] dec a - ld hl, Moves + PlayerMovePower - PlayerMoveStruct + ld hl, Moves + MOVE_POWER call GetMoveAttr and a jr z, .asm_34a77 @@ -2045,7 +1998,7 @@ Function34a2a: ; 34a2a ret z push bc - ld bc, $30 + ld bc, PartyMon2 - PartyMon1 add hl, bc pop bc @@ -2074,7 +2027,7 @@ Function34a85: ; 34a85 .asm_34a98 srl b push bc - ld bc, $2f + ld bc, PartyMon2HP - (PartyMon1HP + 1) add hl, bc pop bc dec e @@ -2093,7 +2046,7 @@ Function34aa7: ; 34aa7 ld a, $ff ld [$c716], a - ld hl, OTPartyMon1Move1 + ld hl, OTPartyMon1Moves ld b, $20 ld d, $0 ld e, $0 @@ -2104,7 +2057,7 @@ Function34aa7: ; 34aa7 push hl push bc - ld b, $4 + ld b, NUM_MOVES ld c, $0 .asm_34abf ld a, [hli] @@ -2113,7 +2066,7 @@ Function34aa7: ; 34aa7 jr z, .asm_34aef dec a - ld hl, Moves + PlayerMovePower - PlayerMoveStruct + ld hl, Moves + MOVE_POWER call GetMoveAttr and a jr z, .asm_34ae9 @@ -2159,7 +2112,7 @@ Function34aa7: ; 34aa7 .asm_34b00 push bc - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 add hl, bc pop bc srl b @@ -2206,7 +2159,7 @@ Function34b20: ; 34b20 jr z, .asm_34b4a dec a - ld hl, Moves + PlayerMovePower - PlayerMoveStruct + ld hl, Moves + MOVE_POWER call GetMoveAttr and a jr z, .asm_34b4a @@ -2288,7 +2241,7 @@ Function34b77: ; 34b77 srl b pop hl push bc - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 add hl, bc pop bc jr .asm_34b82 @@ -2394,12 +2347,12 @@ BattleCommand09: ; 34d32 call .StatModifiers - ld a, [PlayerMoveAccuracy] + ld a, [wPlayerMoveStruct + MOVE_ACC] ld b, a ld a, [hBattleTurn] and a jr z, .BrightPowder - ld a, [EnemyMoveAccuracy] + ld a, [wEnemyMoveStruct + MOVE_ACC] ld b, a .BrightPowder @@ -2485,7 +2438,7 @@ BattleCommand09: ; 34d32 ; Return nz if we are locked-on and aren't trying to use Earthquake, ; Fissure or Magnitude on a monster that is flying. ld a, BATTLE_VARS_SUBSTATUS5_OPP - call _GetBattleVar + call GetBattleVarAddr bit SUBSTATUS_LOCK_ON, [hl] res SUBSTATUS_LOCK_ON, [hl] ret z @@ -2591,7 +2544,7 @@ BattleCommand09: ; 34d32 ld a, [hBattleTurn] and a - ld hl, PlayerMoveAccuracy + ld hl, wPlayerMoveStruct + MOVE_ACC ld a, [PlayerAccLevel] ld b, a ld a, [EnemyEvaLevel] @@ -2599,7 +2552,7 @@ BattleCommand09: ; 34d32 jr z, .asm_34e60 - ld hl, EnemyMoveAccuracy + ld hl, wEnemyMoveStruct + MOVE_ACC ld a, [EnemyAccLevel] ld b, a ld a, [PlayerEvaLevel] @@ -2694,11 +2647,11 @@ BattleCommand90: ; 34ecc jr nz, .failed push hl - ld hl, PlayerMoveEffectChance + ld hl, wPlayerMoveStruct + MOVE_CHANCE ld a, [hBattleTurn] and a jr z, .asm_34ee1 - ld hl, EnemyMoveEffectChance + ld hl, wEnemyMoveStruct + MOVE_CHANCE .asm_34ee1 call BattleRandom @@ -2937,7 +2890,7 @@ BattleCommand0d: ; 35023 call Function350e4 ld a, BATTLE_VARS_MOVE_ANIM - call _GetBattleVar + call GetBattleVarAddr cp FLY jr z, .asm_3504f ; 35032 $1b @@ -2962,7 +2915,7 @@ BattleCommand0d: ; 35023 .asm_3504f ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr res SUBSTATUS_UNDERGROUND, [hl] res SUBSTATUS_FLYING, [hl] call Function37ece @@ -3195,7 +3148,7 @@ BattleCommandad: ; 351a5 ; supereffectivelooptext ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr bit 2, a ret nz @@ -3223,7 +3176,7 @@ BattleCommand11: ; 351c0 ; Faint the user if it fainted an opponent using Destiny Bond. - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hBattleTurn] and a jr z, .asm_351cb @@ -3270,8 +3223,7 @@ BattleCommand11: ; 351c0 ld [$d1ef], a ld h, b ld l, c - ld a, $b - call Predef + predef Functionc6e0 call RefreshBattleHuds call SwitchTurn @@ -3437,7 +3389,7 @@ PlayerAttackDamage: ; 352e2 call ResetDamage - ld hl, PlayerMovePower + ld hl, wPlayerMoveStruct + MOVE_POWER ld a, [hli] and a ld d, a @@ -3447,22 +3399,20 @@ PlayerAttackDamage: ; 352e2 cp SPECIAL jr nc, .special - -; Physical - ld hl, EnemyMonDef +.physical + ld hl, EnemyMonDefense ld a, [hli] ld b, a ld c, [hl] -; Reflect ld a, [EnemyScreens] - bit 4, a + bit SCREENS_REFLECT, a jr z, .physicalcrit sla c rl b .physicalcrit - ld hl, BattleMonAtk + ld hl, BattleMonAttack call GetDamageStatsCritical jr c, .thickclub @@ -3473,16 +3423,14 @@ PlayerAttackDamage: ; 352e2 ld hl, PlayerStats jr .thickclub - .special ld hl, EnemyMonSpclDef ld a, [hli] ld b, a ld c, [hl] -; Light Screen ld a, [EnemyScreens] - bit 3, a + bit SCREENS_LIGHT_SCREEN, a jr z, .specialcrit sla c rl b @@ -3585,7 +3533,7 @@ GetDamageStats: ; 3537e ld a, [hBattleTurn] and a jr nz, .enemy - ld a, [PlayerMoveType] + ld a, [wPlayerMoveStruct + MOVE_TYPE] cp SPECIAL ; special ld a, [PlayerSAtkLevel] @@ -3599,7 +3547,7 @@ GetDamageStats: ; 3537e jr .end .enemy - ld a, [EnemyMoveType] + ld a, [wEnemyMoveStruct + MOVE_TYPE] cp SPECIAL ; special ld a, [EnemySAtkLevel] @@ -3698,8 +3646,8 @@ EnemyAttackDamage: ; 353f6 call ResetDamage ; No damage dealt with 0 power. - ld hl, EnemyMovePower - ld a, [hli] ; hl = EnemyMoveType + ld hl, wEnemyMoveStruct + MOVE_POWER + ld a, [hli] ; hl = wEnemyMoveStruct + MOVE_TYPE ld d, a and a ret z @@ -3708,22 +3656,20 @@ EnemyAttackDamage: ; 353f6 cp SPECIAL jr nc, .Special - -; Physical - ld hl, BattleMonDef +.physical + ld hl, BattleMonDefense ld a, [hli] ld b, a ld c, [hl] -; Reflect ld a, [PlayerScreens] - bit 4, a + bit SCREENS_REFLECT, a jr z, .physicalcrit sla c rl b .physicalcrit - ld hl, EnemyMonAtk + ld hl, EnemyMonAttack call GetDamageStatsCritical jr c, .thickclub @@ -3734,16 +3680,14 @@ EnemyAttackDamage: ; 353f6 ld hl, EnemyStats jr .thickclub - .Special ld hl, BattleMonSpclDef ld a, [hli] ld b, a ld c, [hl] -; Light Screen ld a, [PlayerScreens] - bit 3, a + bit SCREENS_LIGHT_SCREEN, a jr z, .specialcrit sla c rl b @@ -3787,14 +3731,14 @@ BattleCommanda1: ; 35461 jp nz, .asm_354ef ld a, [PlayerSubStatus3] bit 2, a - jr nz, .asm_35482 ; 3546f $11 - ld c, $14 + jr nz, .asm_35482 + ld c, 20 call DelayFrames xor a ld [PlayerRolloutCount], a ld [DefaultFlypoint], a ld [$c72d], a - jr .asm_3548d ; 35480 $b + jr .asm_3548d .asm_35482 ld a, [PlayerRolloutCount] ld b, a @@ -3803,7 +3747,7 @@ BattleCommanda1: ; 35461 ld [DefaultFlypoint], a .asm_3548d ld a, [DefaultFlypoint] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call GetNick ld a, $22 call Function355bd @@ -3815,7 +3759,7 @@ BattleCommanda1: ; 35461 ld a, [CurBattleMon] cp [hl] ld hl, BattleMonStatus - jr z, .asm_354b2 ; 354ab $5 + jr z, .asm_354b2 ld a, $20 call Function355bd .asm_354b2 @@ -3846,7 +3790,7 @@ BattleCommanda1: ; 35461 ld a, [hl] ld e, a pop bc - ld a, [PlayerMovePower] + ld a, [wPlayerMoveStruct + MOVE_POWER] ld d, a ret @@ -3882,7 +3826,7 @@ BattleCommanda1: ; 35461 ld a, [DefaultFlypoint] ld c, a - ld b, $0 + ld b, 0 ld hl, OTPartySpecies add hl, bc ld a, [hl] @@ -3892,8 +3836,8 @@ BattleCommanda1: ; 35461 .asm_35532 ld a, [DefaultFlypoint] - ld hl, OTPartyMon1Nickname - ld bc, $000b + ld hl, OTPartyMonNicknames + ld bc, NAME_LENGTH call AddNTimes ld de, StringBuffer1 call CopyBytes @@ -3951,7 +3895,7 @@ BattleCommanda1: ; 35461 ld a, [hl] ld e, a pop bc - ld a, [EnemyMovePower] + ld a, [wEnemyMoveStruct + MOVE_POWER] ld d, a ret ; 355b0 @@ -4003,12 +3947,12 @@ Function355dd: ; 355dd call ResetDamage ld a, [hBattleTurn] and a - ld hl, BattleMonDef + ld hl, BattleMonDefense ld de, PlayerScreens ld a, [BattleMonLevel] jr z, .asm_355f7 - ld hl, EnemyMonDef + ld hl, EnemyMonDefense ld de, EnemyScreens ld a, [EnemyMonLevel] .asm_355f7 @@ -4017,7 +3961,7 @@ Function355dd: ; 355dd ld b, a ld c, [hl] ld a, [de] - bit 4, a + bit SCREENS_REFLECT, a jr z, .asm_35604 sla c @@ -4077,7 +4021,6 @@ BattleCommand62: ; 35612 ld c, 1 .asm_35631 - xor a ld hl, hDividend ld [hli], a @@ -4124,7 +4067,6 @@ BattleCommand62: ; 35612 ld b, $4 call Divide - ; Item boosts call GetUserItem @@ -4344,7 +4286,7 @@ BattleCommand3f: ; 35726 ld a, $0 jr .asm_3578c ; 35769 $21 .asm_3576b - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hBattleTurn] and a jr z, .asm_35776 ; 35771 $3 @@ -4375,7 +4317,7 @@ BattleCommand3f: ; 35726 ld a, [hBattleTurn] and a jr z, .asm_3579d ; 35798 $3 - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP .asm_3579d xor a ld [$ffb3], a @@ -4432,14 +4374,14 @@ BattleCommand3f: ; 35726 ld a, [hl] jr nz, .asm_357f8 - ld hl, PlayerMovePower + ld hl, wPlayerMoveStruct + MOVE_POWER ld [hl], a push hl call PlayerAttackDamage jr .asm_35800 .asm_357f8 - ld hl, EnemyMovePower + ld hl, wEnemyMoveStruct + MOVE_POWER ld [hl], a push hl call EnemyAttackDamage @@ -4529,20 +4471,20 @@ BattleCommand41: ; 35864 ld de, EnemyEncoreCount ld a, [hBattleTurn] and a - jr z, .asm_35875 ; 3586d $6 + jr z, .ok ld hl, BattleMonMoves ld de, PlayerEncoreCount -.asm_35875 +.ok ld a, BATTLE_VARS_LAST_MOVE_OPP call GetBattleVar and a - jp z, Function35923 + jp z, .failed cp STRUGGLE - jp z, Function35923 + jp z, .failed cp ENCORE - jp z, Function35923 + jp z, .failed cp MIRROR_MOVE - jp z, Function35923 + jp z, .failed ld b, a .asm_3588e @@ -4554,15 +4496,15 @@ BattleCommand41: ; 35864 add hl, bc ld a, [hl] and $3f - jp z, Function35923 + jp z, .failed ld a, [AttackMissed] and a - jp nz, Function35923 + jp nz, .failed ld a, BATTLE_VARS_SUBSTATUS5_OPP - call _GetBattleVar - bit 4, [hl] - jp nz, Function35923 - set 4, [hl] + call GetBattleVarAddr + bit SUBSTATUS_ENCORED, [hl] + jp nz, .failed + set SUBSTATUS_ENCORED, [hl] call BattleRandom and $3 inc a @@ -4574,10 +4516,11 @@ BattleCommand41: ; 35864 ld a, [hBattleTurn] and a jr z, .asm_358ef + push hl ld a, [LastPlayerMove] ld b, a - ld c, $0 + ld c, 0 ld hl, BattleMonMoves .asm_358cc ld a, [hli] @@ -4585,28 +4528,31 @@ BattleCommand41: ; 35864 jr z, .asm_358dd inc c ld a, c - cp $4 + cp NUM_MOVES jr c, .asm_358cc pop hl - res 4, [hl] + res SUBSTATUS_ENCORED, [hl] xor a ld [de], a - jr Function35923 + jr .failed + .asm_358dd pop hl + ld a, c ld [CurMoveNum], a ld a, b ld [CurPlayerMove], a dec a - ld de, PlayerMoveStruct + ld de, wPlayerMoveStruct call GetMoveData jr .asm_3591a + .asm_358ef push hl ld a, [LastEnemyMove] ld b, a - ld c, $0 + ld c, 0 ld hl, EnemyMonMoves .asm_358f9 ld a, [hli] @@ -4614,31 +4560,30 @@ BattleCommand41: ; 35864 jr z, .asm_3590a inc c ld a, c - cp $4 + cp NUM_MOVES jr c, .asm_358f9 pop hl - res 4, [hl] + res SUBSTATUS_ENCORED, [hl] xor a ld [de], a - jr Function35923 + jr .failed .asm_3590a pop hl + ld a, c ld [CurEnemyMoveNum], a ld a, b ld [CurEnemyMove], a dec a - ld de, EnemyMoveStruct + ld de, wEnemyMoveStruct call GetMoveData + .asm_3591a call AnimateCurrentMove - ld hl, GotAnEncoreText jp StdBattleTextBox -; 35923 - -Function35923: ; 35923 +.failed jp PrintDidntAffect2 ; 35926 @@ -4653,14 +4598,13 @@ BattleCommand42: ; 35926 jp nz, Function359cd call AnimateCurrentMove ld hl, $c63f - ld de, EnemyMonMaxHPLo + ld de, EnemyMonMaxHP + 1 call .asm_3597d ld a, $1 ld [$d10a], a hlcoord 10, 9 - ld a, $b - call Predef - ld hl, EnemyMonHPHi + predef Functionc6e0 + ld hl, EnemyMonHP ld a, [hli] ld [$d1ed], a ld a, [hli] @@ -4674,8 +4618,7 @@ BattleCommand42: ; 35926 ld [$d10a], a call ResetDamage hlcoord 2, 2 - ld a, $b - call Predef + predef Functionc6e0 callba Function178000 ld hl, SharedPainText @@ -4765,43 +4708,43 @@ BattleCommand44: ; 359e6 ld a, [AttackMissed] and a - jr nz, .asm_35a50 ; 359ea $64 + jr nz, .asm_35a50 ld hl, BattleMonType1 ld a, [hBattleTurn] and a - jr z, .asm_359f7 ; 359f2 $3 + jr z, .asm_359f7 ld hl, EnemyMonType1 .asm_359f7 ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar and a - jr z, .asm_35a50 ; 359fd $51 + jr z, .asm_35a50 push hl dec a - ld hl, Moves + PlayerMoveType - PlayerMoveStruct + ld hl, Moves + MOVE_TYPE call GetMoveAttr ld d, a pop hl cp CURSE_T - jr z, .asm_35a50 ; 35a0b $43 + jr z, .asm_35a50 call AnimateCurrentMove - call SwitchTurn + .asm_35a13 call BattleRandom and $1f - cp $a - jr c, .asm_35a24 ; 35a1a $8 - cp $14 - jr c, .asm_35a13 ; 35a1e $f3 - cp $1c - jr nc, .asm_35a13 ; 35a22 $ef + cp UNUSED_TYPES + jr c, .asm_35a24 + cp UNUSED_TYPES_END + jr c, .asm_35a13 + cp TYPES_END + jr nc, .asm_35a13 .asm_35a24 ld [hli], a ld [hld], a push hl ld a, BATTLE_VARS_MOVE_TYPE - call _GetBattleVar + call GetBattleVarAddr push af push hl ld a, d @@ -4813,15 +4756,15 @@ BattleCommand44: ; 359e6 pop hl ld a, [$d265] cp $a - jr nc, .asm_35a13 ; 35a3c $d5 + jr nc, .asm_35a13 call SwitchTurn ld a, [hl] ld [$d265], a - ld a, $29 - call Predef + predef GetTypeName ld hl, TransformedTypeText jp StdBattleTextBox + .asm_35a50 jp Function37354 ; 35a53 @@ -4832,11 +4775,13 @@ BattleCommand45: ; 35a53 call CheckSubstituteOpp jr nz, .asm_35a6e + ld a, [AttackMissed] and a jr nz, .asm_35a6e + ld a, BATTLE_VARS_SUBSTATUS5_OPP - call _GetBattleVar + call GetBattleVarAddr set SUBSTATUS_LOCK_ON, [hl] call AnimateCurrentMove @@ -4853,26 +4798,30 @@ BattleCommand46: ; 35a74 ; sketch call Function372d8 + ld a, [InLinkBattle] and a - jr z, .asm_35a83 ; 35a7b $6 + jr z, .asm_35a83 call AnimateFailedMove jp PrintNothingHappened .asm_35a83 + call CheckSubstituteOpp jp nz, .asm_35b10 + ld a, BATTLE_VARS_SUBSTATUS5_OPP - call _GetBattleVar - bit 3, [hl] + call GetBattleVarAddr + bit SUBSTATUS_TRANSFORMED, [hl] jp nz, .asm_35b10 - ld a, $2 + + ld a, PartyMon1Moves - PartyMon1 call UserPartyAttr ld d, h ld e, l ld hl, BattleMonMoves ld a, [hBattleTurn] and a - jr z, .asm_35aa5 ; 35aa0 $3 + jr z, .asm_35aa5 ld hl, EnemyMonMoves .asm_35aa5 ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP @@ -4880,58 +4829,58 @@ BattleCommand46: ; 35a74 ld [$d265], a ld b, a and a - jr z, .asm_35b10 ; 35aaf $5f + jr z, .asm_35b10 cp STRUGGLE - jr z, .asm_35b10 ; 35ab3 $5b - ld c, $4 + jr z, .asm_35b10 + ld c, NUM_MOVES .asm_35ab7 ld a, [hli] cp b - jr z, .asm_35b10 ; 35ab9 $55 + jr z, .asm_35b10 dec c - jr nz, .asm_35ab7 ; 35abc $f9 + jr nz, .asm_35ab7 dec hl - ld c, $4 + ld c, NUM_MOVES .asm_35ac1 dec c ld a, [hld] cp SKETCH - jr nz, .asm_35ac1 ; 35ac5 $fa + jr nz, .asm_35ac1 inc hl ld a, b ld [hl], a push bc push hl dec a - ld hl, Moves + PlayerMovePP - PlayerMoveStruct + ld hl, Moves + MOVE_PP call GetMoveAttr pop hl - ld bc, $0006 + ld bc, BattleMonPP - BattleMonMoves add hl, bc ld [hl], a pop bc ld a, [hBattleTurn] and a - jr z, .asm_35af6 ; 35add $17 + jr z, .asm_35af6 ld a, [IsInBattle] dec a - jr nz, .asm_35af6 ; 35ae3 $11 + jr nz, .asm_35af6 ld a, [hl] push bc ld hl, $c739 - ld b, $0 + ld b, 0 add hl, bc ld [hl], a ld hl, $c735 add hl, bc pop bc ld [hl], b - jr .asm_35b04 ; 35af4 $e + jr .asm_35b04 .asm_35af6 ld a, [hl] push af ld l, c - ld h, $0 + ld h, 0 add hl, de ld a, b ld [hl], a @@ -4954,24 +4903,22 @@ BattleCommand46: ; 35a74 BattleCommand47: ; 35b16 ; defrostopponent - -; If the opponent isn't frozen, raise Attack one stage. -; If the opponent is frozen, thaw them and raise Accuracy two stages. +; Thaw the opponent if frozen, and +; raise the user's Attack one stage. call AnimateCurrentMove ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar + call GetBattleVarAddr call Defrost -; Sharply raise accuracy ld a, BATTLE_VARS_MOVE_EFFECT - call _GetBattleVar + call GetBattleVarAddr ld a, [hl] push hl push af - ld a, $a ; meditate, sharpen + ld a, EFFECT_ATTACK_UP ld [hl], a call BattleCommand1c @@ -4988,54 +4935,54 @@ BattleCommand48: ; 35b33 call Function372d8 ld a, [AttackMissed] and a - jr nz, .asm_35ba3 ; 35b3a $67 + jr nz, .asm_35ba3 ld a, [hBattleTurn] and a - ld hl, BattleMonMove2 + ld hl, BattleMonMoves + 1 ld a, [DisabledMove] ld d, a - jr z, .asm_35b4f ; 35b46 $7 - ld hl, EnemyMonMove2 + jr z, .asm_35b4f + ld hl, EnemyMonMoves + 1 ld a, [EnemyDisabledMove] ld d, a .asm_35b4f ld a, BATTLE_VARS_STATUS call GetBattleVar - and $7 - jr z, .asm_35ba3 ; 35b56 $4b + and SLP + jr z, .asm_35ba3 ld a, [hl] and a - jr z, .asm_35ba3 ; 35b5a $47 + jr z, .asm_35ba3 call .asm_35ba9 - jr c, .asm_35ba3 ; 35b5f $42 + jr c, .asm_35ba3 dec hl .asm_35b62 push hl call BattleRandom - and $3 + and 3 ; TODO factor in NUM_MOVES ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] pop hl and a - jr z, .asm_35b62 ; 35b6f $f1 + jr z, .asm_35b62 ld e, a ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar cp e - jr z, .asm_35b62 ; 35b78 $e8 + jr z, .asm_35b62 ld a, e cp d - jr z, .asm_35b62 ; 35b7c $e4 + jr z, .asm_35b62 call .asm_35bdf - jr z, .asm_35b62 ; 35b81 $df + jr z, .asm_35b62 ld a, BATTLE_VARS_MOVE - call _GetBattleVar + call GetBattleVarAddr ld a, e ld [hl], a call Function34548 - jr nz, .asm_35b9a ; 35b8d $b + jr nz, .asm_35b9a ld a, [$c689] push af call BattleCommand0a @@ -5068,11 +5015,11 @@ BattleCommand48: ; 35b33 ld a, [EnemyDisabledMove] .asm_35bbe ld b, a - ld a, $10 + ld a, BATTLE_VARS_MOVE call GetBattleVar ld c, a dec hl - ld d, $4 + ld d, NUM_MOVES .asm_35bc8 ld a, [hl] and a @@ -5112,17 +5059,17 @@ BattleCommand48: ; 35b33 pop de pop hl - cp $91 + cp EFFECT_SKULL_BASH ret z - cp $27 + cp EFFECT_RAZOR_WIND ret z - cp $4b + cp EFFECT_SKY_ATTACK ret z - cp $97 + cp EFFECT_SOLARBEAM ret z - cp $9b + cp EFFECT_FLY ret z - cp $1a + cp EFFECT_BIDE ret ; 35bff @@ -5131,8 +5078,8 @@ BattleCommand49: ; 35bff ; destinybond ld a, BATTLE_VARS_SUBSTATUS5 - call _GetBattleVar - set 6, [hl] + call GetBattleVarAddr + set SUBSTATUS_DESTINY_BOND, [hl] call AnimateCurrentMove ld hl, DestinyBondEffectText jp StdBattleTextBox @@ -5149,22 +5096,22 @@ BattleCommand4a: ; 35c0f ld hl, EnemyMonMoves ld a, [hBattleTurn] and a - jr z, .asm_35c24 ; 35c1f $3 + jr z, .asm_35c24 ld hl, BattleMonMoves .asm_35c24 ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar and a - jr z, .asm_35c91 ; 35c2a $65 - cp $a5 - jr z, .asm_35c91 ; 35c2e $61 + jr z, .asm_35c91 + cp STRUGGLE + jr z, .asm_35c91 ld b, a ld c, $ff .asm_35c33 inc c ld a, [hli] cp b - jr nz, .asm_35c33 ; 35c36 $fb + jr nz, .asm_35c33 ld [$d265], a dec hl ld b, $0 @@ -5174,25 +5121,25 @@ BattleCommand4a: ; 35c0f pop bc ld a, [hl] and $3f - jr z, .asm_35c91 ; 35c46 $49 + jr z, .asm_35c91 push bc call GetMoveName call BattleRandom - and $3 + and 3 inc a inc a ld b, a ld a, [hl] and $3f cp b - jr nc, .asm_35c5b ; 35c58 $1 + jr nc, .asm_35c5b ld b, a .asm_35c5b ld a, [hl] sub b ld [hl], a push af - ld a, $17 + ld a, PartyMon1PP - PartyMon1 call OpponentPartyAttr ld d, b pop af @@ -5201,14 +5148,14 @@ BattleCommand4a: ; 35c0f ld e, a ld a, BATTLE_VARS_SUBSTATUS5_OPP call GetBattleVar - bit 3, a - jr nz, .asm_35c82 ; 35c70 $10 + bit SUBSTATUS_TRANSFORMED, a + jr nz, .asm_35c82 ld a, [hBattleTurn] and a - jr nz, .asm_35c81 ; 35c75 $a + jr nz, .asm_35c81 ld a, [IsInBattle] dec a - jr nz, .asm_35c81 ; 35c7b $4 + jr nz, .asm_35c81 ld hl, $c739 add hl, bc .asm_35c81 @@ -5229,10 +5176,10 @@ BattleCommand4a: ; 35c0f BattleCommand4b: ; 35c94 ; falseswipe - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hBattleTurn] and a - jr z, .asm_35c9f ; 35c9a $3 + jr z, .asm_35c9f ld hl, BattleMonHP .asm_35c9f ld de, CurDamage @@ -5242,7 +5189,7 @@ BattleCommand4b: ; 35c94 call StringCmp pop de pop hl - jr c, .asm_35cc7 ; 35cab $1a + jr c, .asm_35cc7 ld a, [hli] ld [de], a inc de @@ -5250,7 +5197,7 @@ BattleCommand4b: ; 35c94 dec a ld [de], a inc a - jr nz, .asm_35cba ; 35cb4 $4 + jr nz, .asm_35cba dec de ld a, [de] dec a @@ -5258,7 +5205,7 @@ BattleCommand4b: ; 35c94 .asm_35cba ld a, [CriticalHit] cp $2 - jr nz, .asm_35cc5 ; 35cbf $4 + jr nz, .asm_35cc5 xor a ld [CriticalHit], a .asm_35cc5 @@ -5274,22 +5221,22 @@ BattleCommand4c: ; 35cc9 ; healbell ld a, BATTLE_VARS_SUBSTATUS1 - call _GetBattleVar - res 0, [hl] + call GetBattleVarAddr + res SUBSTATUS_NIGHTMARE, [hl] ld de, PartyMon1Status ld a, [hBattleTurn] and a - jr z, .asm_35cdb ; 35cd6 $3 + jr z, .asm_35cdb ld de, OTPartyMon1Status .asm_35cdb ld a, BATTLE_VARS_STATUS - call _GetBattleVar + call GetBattleVarAddr xor a ld [hl], a ld h, d ld l, e - ld bc, $30 - ld d, $6 + ld bc, PartyMon2 - PartyMon1 + ld d, PartyEnd - PartySpecies .asm_35ce9 ld [hl], a add hl, bc @@ -5310,10 +5257,9 @@ BattleCommand4c: ; 35cc9 FarPlayBattleAnimation: ; 35d00 ; play animation de -; battle animations disabled? ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVar - and $60 ; bit 6 | 5 + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND ret nz ; fallthrough @@ -5347,38 +5293,40 @@ Function35d1c: ; 35d1c jr nz, .asm_35d31 ld a, [EnemySubStatus4] - bit 4, a + bit SUBSTATUS_SUBSTITUTE, a jp nz, Function35de0 .asm_35d31 ld a, [hld] ld b, a - ld a, [EnemyMonHPLo] + ld a, [EnemyMonHP + 1] ld [$d1ec], a sub b - ld [EnemyMonHPLo], a + ld [EnemyMonHP + 1], a ld a, [hl] ld b, a - ld a, [EnemyMonHPHi] - ld [$d1ed], a + ld a, [EnemyMonHP] + ld [$d1ec + 1], a sbc b - ld [EnemyMonHPHi], a + ld [EnemyMonHP], a jr nc, .asm_35d59 ld a, [$d1ed] ld [hli], a ld a, [$d1ec] ld [hl], a + xor a - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld [hli], a ld [hl], a + .asm_35d59 - ld hl, EnemyMonMaxHPHi + ld hl, EnemyMonMaxHP ld a, [hli] ld [$d1eb], a ld a, [hl] ld [$d1ea], a - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld a, [hli] ld [$d1ef], a ld a, [hl] @@ -5386,8 +5334,7 @@ Function35d1c: ; 35d1c hlcoord 2, 2 xor a ld [$d10a], a - ld a, $b - call Predef + predef Functionc6e0 .asm_35d7b jp RefreshBattleHuds ; 35d7e @@ -5406,35 +5353,37 @@ Function35d7e: ; 35d7e jr nz, .asm_35d93 ld a, [PlayerSubStatus4] - bit 4, a + bit SUBSTATUS_SUBSTITUTE, a jp nz, Function35de0 .asm_35d93 ld a, [hld] ld b, a - ld a, [$c63d] + ld a, [BattleMonHP + 1] ld [$d1ec], a sub b - ld [$c63d], a + ld [BattleMonHP + 1], a ld [$d1ee], a ld b, [hl] ld a, [BattleMonHP] - ld [$d1ed], a + ld [$d1ec + 1], a sbc b ld [BattleMonHP], a - ld [$d1ef], a + ld [$d1ee + 1], a jr nc, .asm_35dc5 - ld a, [$d1ed] + ld a, [$d1ec + 1] ld [hli], a ld a, [$d1ec] ld [hl], a xor a + ld hl, BattleMonHP ld [hli], a ld [hl], a ld hl, $d1ee ld [hli], a ld [hl], a + .asm_35dc5 ld hl, BattleMonMaxHP ld a, [hli] @@ -5444,8 +5393,7 @@ Function35d7e: ; 35d7e hlcoord 10, 9 ld a, $1 ld [$d10a], a - ld a, $b - call Predef + predef Functionc6e0 .asm_35ddd jp RefreshBattleHuds ; 35de0 @@ -5456,29 +5404,28 @@ Function35de0: ; 35de0 ld hl, SubTookDamageText call StdBattleTextBox - ld de, $c6e0 + ld de, EnemySubstituteHP ld a, [hBattleTurn] and a - jr z, .asm_35df1 + jr z, .got_hp + ld de, PlayerSubstituteHP +.got_hp - ld de, $c6df -.asm_35df1 ld hl, CurDamage ld a, [hli] and a - jr nz, .asm_35dff + jr nz, .broke ld a, [de] sub [hl] ld [de], a - jr z, .asm_35dff + jr z, .broke + jr nc, .done - jr nc, .asm_35e3d - -.asm_35dff +.broke ld a, BATTLE_VARS_SUBSTATUS4_OPP - call _GetBattleVar - res 4, [hl] + call GetBattleVarAddr + res SUBSTATUS_SUBSTITUTE, [hl] ld hl, SubFadedText call StdBattleTextBox @@ -5487,28 +5434,27 @@ Function35de0: ; 35de0 call BattleCommanda7 ld a, BATTLE_VARS_SUBSTATUS3 call GetBattleVar - and $60 ; fly | dig + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND call z, Function37ec7 call SwitchTurn ld a, BATTLE_VARS_MOVE_EFFECT - call _GetBattleVar + call GetBattleVarAddr cp EFFECT_MULTI_HIT - jr z, .asm_35e3a + jr z, .ok cp EFFECT_DOUBLE_HIT - jr z, .asm_35e3a + jr z, .ok cp EFFECT_TWINEEDLE - jr z, .asm_35e3a + jr z, .ok cp EFFECT_TRIPLE_KICK - jr z, .asm_35e3a + jr z, .ok cp EFFECT_BEAT_UP - jr z, .asm_35e3a - + jr z, .ok xor a ld [hl], a -.asm_35e3a +.ok call RefreshBattleHuds -.asm_35e3d +.done jp ResetDamage ; 35e40 @@ -5516,7 +5462,7 @@ Function35de0: ; 35de0 UpdateMoveData: ; 35e40 ld a, BATTLE_VARS_MOVE_ANIM - call _GetBattleVar + call GetBattleVarAddr ld d, h ld e, l @@ -5537,8 +5483,9 @@ BattleCommand14: ; 35e5c call GetOpponentItem ld a, b - cp $17 - jr nz, .asm_35e70 ; 35e62 $c + cp HELD_PREVENT_SLEEP + jr nz, .asm_35e70 + ld a, [hl] ld [$d265], a call GetItemName @@ -5547,11 +5494,11 @@ BattleCommand14: ; 35e5c .asm_35e70 ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar + call GetBattleVarAddr ld d, h ld e, l ld a, [de] - and 7 + and SLP ld hl, AlreadyAsleepText jr nz, .asm_35ec6 @@ -5605,24 +5552,23 @@ BattleCommand14: ; 35e5c Function35ece: ; 35ece -; Enemy turn + ; Enemy turn ld a, [hBattleTurn] and a jr z, .asm_35eec -; Not in link battle + ; Not in link battle ld a, [InLinkBattle] and a jr nz, .asm_35eec - ld a, [$cfc0] and a jr nz, .asm_35eec -; Not locked-on by the enemy + ; Not locked-on by the enemy ld a, [PlayerSubStatus5] - bit 5, a + bit SUBSTATUS_LOCK_ON, a jr nz, .asm_35eec call BattleRandom @@ -5641,7 +5587,7 @@ BattleCommand13: ; 35eee call CheckSubstituteOpp ret nz ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar + call GetBattleVarAddr and a ret nz ld a, [TypeModifier] @@ -5651,7 +5597,7 @@ BattleCommand13: ; 35eee ret z call GetOpponentItem ld a, b - cp $14 + cp HELD_PREVENT_POISON ret z ld a, [EffectFailed] and a @@ -5659,7 +5605,7 @@ BattleCommand13: ; 35eee call Function37962 ret nz call Function35ff5 - ld de, $0106 + ld de, ANIM_PSN call Function37e54 call RefreshBattleHuds @@ -5678,60 +5624,65 @@ BattleCommand2f: ; 35f2c ld a, [TypeModifier] and $7f jp z, .asm_35fb8 + call Function35fe1 jp z, .asm_35fb8 + ld a, BATTLE_VARS_STATUS_OPP call GetBattleVar ld b, a ld hl, AlreadyPoisonedText - and $8 + and 1 << PSN jp nz, .asm_35fb8 + call GetOpponentItem ld a, b - cp $14 - jr nz, .asm_35f5f ; 35f51 $c + cp HELD_PREVENT_POISON + jr nz, .asm_35f5f ld a, [hl] ld [$d265], a call GetItemName ld hl, ProtectedByText - jr .asm_35fb8 ; 35f5d $59 + jr .asm_35fb8 + .asm_35f5f ld hl, DidntAffect1Text ld a, BATTLE_VARS_STATUS_OPP call GetBattleVar and a - jr nz, .asm_35fb8 ; 35f68 $4e + jr nz, .asm_35fb8 ld a, [hBattleTurn] and a - jr z, .asm_35f89 ; 35f6d $1a + jr z, .asm_35f89 ld a, [InLinkBattle] and a - jr nz, .asm_35f89 ; 35f73 $14 + jr nz, .asm_35f89 ld a, [$cfc0] and a - jr nz, .asm_35f89 ; 35f79 $e + jr nz, .asm_35f89 ld a, [PlayerSubStatus5] - bit 5, a - jr nz, .asm_35f89 ; 35f80 $7 + bit SUBSTATUS_LOCK_ON, a + jr nz, .asm_35f89 call BattleRandom cp $40 - jr c, .asm_35fb8 ; 35f87 $2f + jr c, .asm_35fb8 + .asm_35f89 call CheckSubstituteOpp - jr nz, .asm_35fb8 ; 35f8c $2a + jr nz, .asm_35fb8 ld a, [AttackMissed] and a - jr nz, .asm_35fb8 ; 35f92 $24 + jr nz, .asm_35fb8 call Function35fc9 - jr z, .asm_35fa4 ; 35f97 $b - call Function35fc0 + jr z, .asm_35fa4 + call Function35fc0 ld hl, WasPoisonedText call StdBattleTextBox + jr .asm_35fb1 - jr .asm_35fb1 ; 35fa2 $d .asm_35fa4 - set 0, [hl] + set SUBSTATUS_TOXIC, [hl] xor a ld [de], a call Function35fc0 @@ -5760,13 +5711,13 @@ Function35fc0: ; 35fc0 Function35fc9: ; 35fc9 ld a, BATTLE_VARS_SUBSTATUS5_OPP - call _GetBattleVar + call GetBattleVarAddr ld a, [hBattleTurn] and a - ld de, $c67c - jr z, .asm_35fd9 - ld de, $c674 -.asm_35fd9 + ld de, EnemyToxicCount + jr z, .ok + ld de, PlayerToxicCount +.ok ld a, BATTLE_VARS_MOVE_EFFECT call GetBattleVar cp EFFECT_TOXIC @@ -5778,9 +5729,9 @@ Function35fe1: ; 35fe1 ld de, EnemyMonType1 ld a, [hBattleTurn] and a - jr z, .asm_35fec + jr z, .ok ld de, BattleMonType1 -.asm_35fec +.ok ld a, [de] inc de cp POISON @@ -5793,7 +5744,7 @@ Function35fe1: ; 35fe1 Function35ff5: ; 35ff5 ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar + call GetBattleVarAddr set PSN, [hl] jp UpdateOpponentInParty ; 35fff @@ -5834,8 +5785,8 @@ Function36011: ; 36011 ld a, [hBattleTurn] and a jr z, .asm_36037 ; 0x3602f $6 - ld hl, EnemyMonHPHi - ld de, EnemyMonMaxHPHi + ld hl, EnemyMonHP + ld de, EnemyMonMaxHP .asm_36037 ld bc, $d1ed ld a, [hli] @@ -5891,8 +5842,7 @@ Function36011: ; 36011 xor a .asm_3607e ld [$d10a], a - ld a, $b - call Predef + predef Functionc6e0 call RefreshBattleHuds jp UpdateBattleMonInParty ; 3608c @@ -5906,7 +5856,7 @@ BattleCommand17: ; 3608c call CheckSubstituteOpp ret nz ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar + call GetBattleVarAddr and a jp nz, Defrost ld a, [TypeModifier] @@ -5916,7 +5866,7 @@ BattleCommand17: ; 3608c ret z call GetOpponentItem ld a, b - cp $15 + cp HELD_PREVENT_BURN ret z ld a, [EffectFailed] and a @@ -5924,12 +5874,12 @@ BattleCommand17: ; 3608c call Function37962 ret nz ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar - set 4, [hl] + call GetBattleVarAddr + set BRN, [hl] call UpdateOpponentInParty ld hl, Function3ec76 call CallBattleCore - ld de, $0105 + ld de, ANIM_BRN call Function37e54 call RefreshBattleHuds @@ -5943,7 +5893,7 @@ BattleCommand17: ; 3608c Defrost: ; 360dd ld a, [hl] - and $20 + and 1 << FRZ ret z xor a @@ -5976,20 +5926,20 @@ BattleCommand18: ; 36102 call CheckSubstituteOpp ret nz ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar + call GetBattleVarAddr and a ret nz ld a, [TypeModifier] and $7f ret z ld a, [Weather] - cp $2 + cp WEATHER_SUN ret z call Function36e5b ret z call GetOpponentItem ld a, b - cp $16 + cp HELD_PREVENT_FREEZE ret z ld a, [EffectFailed] and a @@ -5997,10 +5947,10 @@ BattleCommand18: ; 36102 call Function37962 ret nz ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar - set 5, [hl] + call GetBattleVarAddr + set FRZ, [hl] call UpdateOpponentInParty - ld de, $0108 + ld de, ANIM_FRZ call Function37e54 call RefreshBattleHuds @@ -6014,7 +5964,7 @@ BattleCommand18: ; 36102 ld hl, $c740 ld a, [hBattleTurn] and a - jr z, .asm_36162 ; 3615d $3 + jr z, .asm_36162 ld hl, $c73f .asm_36162 ld [hl], $1 @@ -6030,7 +5980,7 @@ BattleCommand19: ; 36165 call CheckSubstituteOpp ret nz ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar + call GetBattleVarAddr and a ret nz ld a, [TypeModifier] @@ -6038,7 +5988,7 @@ BattleCommand19: ; 36165 ret z call GetOpponentItem ld a, b - cp $18 + cp HELD_PREVENT_PARALYZE ret z ld a, [EffectFailed] and a @@ -6046,12 +5996,12 @@ BattleCommand19: ; 36165 call Function37962 ret nz ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar - set 6, [hl] + call GetBattleVarAddr + set PAR, [hl] call UpdateOpponentInParty ld hl, Function3ec39 call CallBattleCore - ld de, $0109 + ld de, ANIM_PAR call Function37e54 call RefreshBattleHuds call PrintParalyze @@ -6144,7 +6094,7 @@ Function361ef: ; 361ef ld a, [LoweredStat] and $f ld c, a - ld b, $0 + ld b, 0 add hl, bc ld b, [hl] inc b @@ -6175,7 +6125,7 @@ Function361ef: ; 361ef .asm_36243 push bc sla c - ld b, $0 + ld b, 0 add hl, bc ld a, c add e @@ -6185,10 +6135,10 @@ Function361ef: ; 361ef .asm_3624f pop bc ld a, [hld] - sub $e7 + sub 999 % $100 jr nz, .asm_3625b ; 0x36253 $6 ld a, [hl] - sbc $3 + sbc 999 / $100 jp z, Function3626e .asm_3625b ld a, [hBattleTurn] @@ -6393,12 +6343,12 @@ BattleCommand1d: ; 362e3 jr nc, .Hit push hl - ld hl, EnemyMonAtk + 1 + ld hl, EnemyMonAttack + 1 ld de, EnemyStats ld a, [hBattleTurn] and a jr z, .asm_36366 - ld hl, BattleMonAtk + 1 + ld hl, BattleMonAttack + 1 ld de, PlayerStats .asm_36366 call Function3641a @@ -6800,8 +6750,8 @@ BattleCommandac: ; 3658f BattleCommandaf: ; 365a7 ; curl ld a, BATTLE_VARS_SUBSTATUS2 - call _GetBattleVar - set 0, [hl] + call GetBattleVarAddr + set SUBSTATUS_CURLED, [hl] ret ; 365af @@ -6837,7 +6787,7 @@ BattleCommanda7: ; 365c3 Function365d7: ; 365d7 ld hl, PlayerAtkLevel ld de, PlayerStats - ld bc, BattleMonAtk + ld bc, BattleMonAttack ld a, $5 call Function3661d @@ -6860,7 +6810,7 @@ Function365d7: ; 365d7 Function365fd: ; 365fd ld hl, EnemyAtkLevel ld de, EnemyStats - ld bc, EnemyMonAtk + ld bc, EnemyMonAttack ld a, $5 call Function3661d @@ -6964,14 +6914,14 @@ BattleCommand21: ; 36671 dec [hl] jr nz, .asm_366dc ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr res 0, [hl] ld hl, UnleashedEnergyText call StdBattleTextBox ld a, BATTLE_VARS_MOVE_POWER - call _GetBattleVar + call GetBattleVarAddr ld a, 1 ld [hl], a ld hl, PlayerDamageTaken + 1 @@ -7005,7 +6955,7 @@ BattleCommand21: ; 36671 ld [de], a ld a, BATTLE_VARS_MOVE_ANIM - call _GetBattleVar + call GetBattleVarAddr ld a, BIDE ld [hl], a @@ -7031,14 +6981,14 @@ BattleCommand22: ; 366e5 ld bc, EnemyRolloutCount .asm_366f6 ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr set 0, [hl] xor a ld [de], a inc de ld [de], a - ld [PlayerMoveEffect], a - ld [EnemyMoveEffect], a + ld [wPlayerMoveStruct + MOVE_EFFECT], a + ld [wEnemyMoveStruct + MOVE_EFFECT], a call BattleRandom and $1 inc a @@ -7061,7 +7011,7 @@ BattleCommand3e: ; 3671a ld de, EnemyRolloutCount .asm_36725 ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr bit 1, [hl] ret z ld a, [de] @@ -7094,20 +7044,20 @@ BattleCommand3d: ; 36751 ; No rampage during Sleep Talk. ld a, BATTLE_VARS_STATUS call GetBattleVar - and 7 + and SLP ret nz ld de, PlayerRolloutCount ld a, [hBattleTurn] and a - jr z, .asm_36764 ; 3675f $3 + jr z, .ok ld de, EnemyRolloutCount -.asm_36764 +.ok ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar - set 1, [hl] + call GetBattleVarAddr + set SUBSTATUS_RAMPAGE, [hl] call BattleRandom - and $1 + and 1 inc a ld [de], a ld a, 1 @@ -7121,24 +7071,24 @@ BattleCommanda0: ; 36778 ld a, [BattleType] cp BATTLETYPE_SHINY - jr z, .asm_367b9 - cp $9 - jr z, .asm_367b9 - cp $b - jr z, .asm_367b9 + jr z, .failed + cp BATTLETYPE_TRAP + jr z, .failed + cp BATTLETYPE_CELEBI + jr z, .failed cp BATTLETYPE_SUICUNE - jr z, .asm_367b9 + jr z, .failed ld a, BATTLE_VARS_SUBSTATUS5_OPP call GetBattleVar bit SUBSTATUS_CANT_RUN, a - jr nz, .asm_367b9 + jr nz, .failed ld a, [hBattleTurn] and a jr nz, .asm_367bf ld a, [IsInBattle] dec a - jr nz, .asm_367b9 + jr nz, .failed ld a, [$d143] ld b, a ld a, [BattleMonLevel] @@ -7156,14 +7106,14 @@ BattleCommanda0: ; 36778 cp b jr nc, .asm_367df ; 367b7 $26 -.asm_367b9 +.failed call AnimateFailedMove jp PrintButItFailed .asm_367bf ld a, [IsInBattle] dec a - jr nz, .asm_367b9 ; 367c3 $f4 + jr nz, .failed ld a, [BattleMonLevel] ld b, a ld a, [$d143] @@ -7216,7 +7166,7 @@ BattleCommand23: ; 3680f jp z, .asm_36969 cp $9 jp z, .asm_36969 - cp $b + cp BATTLETYPE_CELEBI jp z, .asm_36969 cp BATTLETYPE_SUICUNE jp z, .asm_36969 @@ -7254,7 +7204,7 @@ BattleCommand23: ; 3680f inc a ld [$d232], a call Function36804 - ld a, [PlayerMoveAnimation] + ld a, [wPlayerMoveStruct + MOVE_ANIM] jp .asm_36975 .asm_36869 call Function349f4 @@ -7345,7 +7295,7 @@ BattleCommand23: ; 3680f inc a ld [$d232], a call Function36804 - ld a, [EnemyMoveAnimation] + ld a, [wEnemyMoveStruct + MOVE_ANIM] jr .asm_36975 .asm_36908 @@ -7472,12 +7422,12 @@ BattleCommand24: ; 369b6 .asm_369c7 ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr bit 2, [hl] jp nz, .asm_36a43 set 2, [hl] ld a, BATTLE_VARS_MOVE_EFFECT - call _GetBattleVar + call GetBattleVarAddr ld a, [hl] cp EFFECT_TWINEEDLE jr z, .asm_36a3f @@ -7519,7 +7469,7 @@ BattleCommand24: ; 369b6 .asm_36a1e ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr res 2, [hl] call BattleCommanda8 jp EndMoveEffect @@ -7527,7 +7477,7 @@ BattleCommand24: ; 369b6 call BattleRandom and $3 cp $2 - jr c, .asm_36a39 ; 36a32 $5 + jr c, .asm_36a39 call BattleRandom and $3 .asm_36a39 @@ -7536,19 +7486,19 @@ BattleCommand24: ; 369b6 ld [de], a inc a ld [bc], a - jr .asm_36a6b ; 36a3d $2c + jr .asm_36a6b .asm_36a3f ld a, $1 - jr .asm_36a3a ; 36a41 $f7 + jr .asm_36a3a .asm_36a43 ld a, [de] dec a ld [de], a - jr nz, .asm_36a6b ; 36a46 $23 + jr nz, .asm_36a6b .asm_36a48 ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr res 2, [hl] ld hl, PlayerHitTimesText @@ -7580,7 +7530,7 @@ BattleCommand24: ; 369b6 .asm_36a73 ld a, [hld] cp $5 ; critical - jr nz, .asm_36a73 ; 36a76 $fb + jr nz, .asm_36a73 inc hl ld a, h ld [BattleScriptBufferLoc + 1], a @@ -7594,14 +7544,18 @@ BattleCommand94: ; 36a82 ld a, [AttackMissed] and a ret nz + call CheckSubstituteOpp - jr nz, .asm_36a9a ; 36a8a $e + jr nz, .asm_36a9a + ld a, BATTLE_VARS_STATUS_OPP call GetBattleVar - and $27 - jr nz, .asm_36a9a ; 36a93 $5 + and 1 << FRZ | SLP + jr nz, .asm_36a9a + call Function36abf - jr z, Function36ab5 ; 36a98 $1b + jr z, Function36ab5 + .asm_36a9a ld a, 1 ld [AttackMissed], a @@ -7612,12 +7566,15 @@ BattleCommand94: ; 36a82 BattleCommand25: ; 36aa0 call CheckSubstituteOpp ret nz + ld a, BATTLE_VARS_STATUS_OPP call GetBattleVar - and $27 + and 1 << FRZ | SLP ret nz + call Function36abf ret nz + ld a, [EffectFailed] and a ret nz @@ -7628,8 +7585,8 @@ BattleCommand25: ; 36aa0 Function36ab5: ; 36ab5 ld a, BATTLE_VARS_SUBSTATUS3_OPP - call _GetBattleVar - set 3, [hl] + call GetBattleVarAddr + set SUBSTATUS_FLINCHED, [hl] jp EndRechargeOpp ; 36abf @@ -7654,13 +7611,13 @@ BattleCommand4d: ; 36ac9 call GetUserItem ld a, b - cp HELD_TRADE_EVOLVE ; king's rock + cp HELD_TRADE_EVOLVE ; Only King's Rock has this effect ret nz call CheckSubstituteOpp ret nz ld a, BATTLE_VARS_MOVE_EFFECT - call _GetBattleVar + call GetBattleVarAddr ld d, h ld e, l call GetUserItem @@ -7669,8 +7626,8 @@ BattleCommand4d: ; 36ac9 ret nc call EndRechargeOpp ld a, BATTLE_VARS_SUBSTATUS3_OPP - call _GetBattleVar - set 3, [hl] + call GetBattleVarAddr + set SUBSTATUS_FLINCHED, [hl] ret ; 36af3 @@ -7681,27 +7638,27 @@ BattleCommand26: ; 36af3 call ResetDamage ld a, [TypeModifier] and $7f - jr z, .asm_36b2f ; 36afb $32 + jr z, .asm_36b2f ld hl, EnemyMonLevel ld de, BattleMonLevel - ld bc, PlayerMoveAccuracy + ld bc, wPlayerMoveStruct + MOVE_ACC ld a, [hBattleTurn] and a - jr z, .asm_36b12 ; 36b09 $7 + jr z, .asm_36b12 push hl ld h, d ld l, e pop de - ld bc, EnemyMoveAccuracy + ld bc, wEnemyMoveStruct + MOVE_ACC .asm_36b12 ld a, [de] sub [hl] - jr c, .asm_36b2f ; 36b14 $19 + jr c, .asm_36b2f add a ld e, a ld a, [bc] add e - jr nc, .asm_36b1e ; 36b1a $2 + jr nc, .asm_36b1e ld a, $ff .asm_36b1e ld [bc], a @@ -7725,15 +7682,13 @@ BattleCommand26: ; 36af3 BattleCommand3a: ; 36b3a ; checkcharge -; charged? ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar - bit 4, [hl] + call GetBattleVarAddr + bit SUBSTATUS_CHARGED, [hl] ret z -; go to town - res 4, [hl] - res 5, [hl] - res 6, [hl] + res SUBSTATUS_CHARGED, [hl] + res SUBSTATUS_UNDERGROUND, [hl] + res SUBSTATUS_FLYING, [hl] ld b, $39 ; charge jp SkipToBattleCommand ; 36b4d @@ -7745,7 +7700,7 @@ BattleCommand39: ; 36b4d call BattleCommand38 ld a, BATTLE_VARS_STATUS call GetBattleVar - and $7 + and SLP jr z, .asm_36b65 call BattleCommandaa @@ -7755,8 +7710,8 @@ BattleCommand39: ; 36b4d .asm_36b65 ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar - set 4, [hl] + call GetBattleVarAddr + set SUBSTATUS_CHARGED, [hl] ld hl, IgnoredOrders2Text ld a, [AlreadyDisobeyed] @@ -7771,44 +7726,44 @@ BattleCommand39: ; 36b4d call Function37e36 ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar - cp $13 - jr z, .asm_36b96 ; 36b8b $9 - cp $5b - jr z, .asm_36b96 ; 36b8f $5 + cp FLY + jr z, .asm_36b96 + cp DIG + jr z, .asm_36b96 call BattleCommand0c - jr .asm_36b99 ; 36b94 $3 + jr .asm_36b99 .asm_36b96 call Function37ec0 .asm_36b99 ld a, BATTLE_VARS_SUBSTATUS3 - call _GetBattleVar + call GetBattleVarAddr ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar ld b, a - cp $13 - jr z, .asm_36bb0 ; 36ba6 $8 - cp $5b - jr nz, .asm_36bb2 ; 36baa $6 - set 5, [hl] - jr .asm_36bb2 ; 36bae $2 + cp FLY + jr z, .asm_36bb0 + cp DIG + jr nz, .asm_36bb2 + set SUBSTATUS_UNDERGROUND, [hl] + jr .asm_36bb2 .asm_36bb0 - set 6, [hl] + set SUBSTATUS_FLYING, [hl] .asm_36bb2 call Function34548 - jr nz, .asm_36bc3 ; 36bb5 $c + jr nz, .asm_36bc3 ld a, BATTLE_VARS_LAST_COUNTER_MOVE - call _GetBattleVar + call GetBattleVarAddr ld [hl], b ld a, BATTLE_VARS_LAST_MOVE - call _GetBattleVar + call GetBattleVarAddr ld [hl], b .asm_36bc3 call ResetDamage - ld hl, .text_36bdb + ld hl, .UsedText call BattleTextBox ld a, BATTLE_VARS_MOVE_EFFECT @@ -7818,37 +7773,36 @@ BattleCommand39: ; 36b4d jp z, SkipToBattleCommand jp EndMoveEffect -.text_36bdb -; [user] - TX_FAR UnknownText_0x1c0d0e +.UsedText + TX_FAR UnknownText_0x1c0d0e ; "[USER]" start_asm ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar cp RAZOR_WIND ld hl, .RazorWind - jr z, .asm_36c0d + jr z, .done cp SOLARBEAM ld hl, .Solarbeam - jr z, .asm_36c0d + jr z, .done cp SKULL_BASH ld hl, .SkullBash - jr z, .asm_36c0d + jr z, .done cp SKY_ATTACK ld hl, .SkyAttack - jr z, .asm_36c0d + jr z, .done cp FLY ld hl, .Fly - jr z, .asm_36c0d + jr z, .done cp DIG ld hl, .Dig -.asm_36c0d +.done ret .RazorWind @@ -7909,7 +7863,7 @@ BattleCommand3b: ; 36c2d ret nz ld a, BATTLE_VARS_SUBSTATUS4_OPP call GetBattleVar - bit 4, a + bit SUBSTATUS_SUBSTITUTE, a ret nz call BattleRandom and 3 @@ -7950,10 +7904,10 @@ BattleCommand28: ; 36c7e ; mist ld a, BATTLE_VARS_SUBSTATUS4 - call _GetBattleVar - bit 1, [hl] - jr nz, .asm_36c92 ; 36c85 $b - set 1, [hl] + call GetBattleVarAddr + bit SUBSTATUS_MIST, [hl] + jr nz, .asm_36c92 + set SUBSTATUS_MIST, [hl] call AnimateCurrentMove ld hl, MistText jp StdBattleTextBox @@ -7967,10 +7921,10 @@ BattleCommand29: ; 36c98 ; focusenergy ld a, BATTLE_VARS_SUBSTATUS4 - call _GetBattleVar - bit 2, [hl] - jr nz, .asm_36cac ; 36c9f $b - set 2, [hl] + call GetBattleVarAddr + bit SUBSTATUS_FOCUS_ENERGY, [hl] + jr nz, .asm_36cac + set SUBSTATUS_FOCUS_ENERGY, [hl] call AnimateCurrentMove ld hl, GettingPumpedText jp StdBattleTextBox @@ -7986,8 +7940,8 @@ BattleCommand27: ; 36cb2 ld hl, BattleMonMaxHP ld a, [hBattleTurn] and a - jr z, .asm_36cbd ; 36cb8 $3 - ld hl, EnemyMonMaxHPHi + jr z, .asm_36cbd + ld hl, EnemyMonMaxHP .asm_36cbd ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar @@ -8002,7 +7956,7 @@ BattleCommand27: ; 36cb2 rr c ld a, b or c - jr nz, .asm_36cd8 ; 36cd5 $1 + jr nz, .asm_36cd8 inc c .asm_36cd8 ld a, [hli] @@ -8021,7 +7975,7 @@ BattleCommand27: ; 36cb2 sbc b ld [hl], a ld [$d1ef], a - jr nc, .asm_36cfe ; 36cf4 $8 + jr nc, .asm_36cfe xor a ld [hli], a ld [hl], a @@ -8033,13 +7987,12 @@ BattleCommand27: ; 36cb2 ld a, [hBattleTurn] and a ld a, $1 - jr z, .asm_36d0c ; 36d06 $4 + jr z, .asm_36d0c hlcoord 2, 2 xor a .asm_36d0c ld [$d10a], a - ld a, $b - call Predef + predef Functionc6e0 call RefreshBattleHuds ld hl, RecoilText jp StdBattleTextBox @@ -8051,7 +8004,7 @@ BattleCommand2b: ; 36d1d call GetOpponentItem ld a, b - cp $19 + cp HELD_PREVENT_CONFUSE ret z ld a, [EffectFailed] and a @@ -8061,8 +8014,8 @@ BattleCommand2b: ; 36d1d call CheckSubstituteOpp ret nz ld a, BATTLE_VARS_SUBSTATUS3_OPP - call _GetBattleVar - bit 7, [hl] + call GetBattleVarAddr + bit SUBSTATUS_CONFUSED, [hl] ret nz jr Function36d70 @@ -8072,7 +8025,7 @@ BattleCommand2a: ; 36d3b call GetOpponentItem ld a, b - cp $19 + cp HELD_PREVENT_CONFUSE jr nz, .asm_36d53 ld a, [hl] ld [$d265], a @@ -8083,8 +8036,8 @@ BattleCommand2a: ; 36d3b .asm_36d53 ld a, BATTLE_VARS_SUBSTATUS3_OPP - call _GetBattleVar - bit 7, [hl] + call GetBattleVarAddr + bit SUBSTATUS_CONFUSED, [hl] jr z, .asm_36d65 call AnimateFailedMove ld hl, AlreadyConfusedText @@ -8109,7 +8062,7 @@ Function36d70: ; 36d70 ld bc, PlayerConfuseCount .asm_36d7b - set 7, [hl] + set SUBSTATUS_CONFUSED, [hl] call BattleRandom and 3 inc a @@ -8127,7 +8080,7 @@ Function36d70: ; 36d70 call AnimateCurrentMove .asm_36d99 - ld de, $0103 + ld de, ANIM_CONFUSED call Function37e54 ld hl, BecameConfusedText @@ -8135,9 +8088,9 @@ Function36d70: ; 36d70 call GetOpponentItem ld a, b - cp $f + cp HELD_HEAL_STATUS jr z, .asm_36db0 - cp $10 + cp HELD_HEAL_CONFUSION ret nz .asm_36db0 ld hl, Function3de51 @@ -8162,55 +8115,56 @@ BattleCommand30: ; 36dc7 ld a, BATTLE_VARS_STATUS_OPP call GetBattleVar - bit 6, a - jr nz, .asm_36e49 ; 36dce $79 + bit PAR, a + jr nz, .asm_36e49 ld a, [TypeModifier] and $7f - jr z, .asm_36e55 ; 36dd5 $7e + jr z, .asm_36e55 call GetOpponentItem ld a, b - cp $18 - jr nz, .asm_36def ; 36ddd $10 + cp HELD_PREVENT_PARALYZE + jr nz, .asm_36def ld a, [hl] ld [$d265], a call GetItemName call AnimateFailedMove ld hl, ProtectedByText jp StdBattleTextBox + .asm_36def ld a, [hBattleTurn] and a - jr z, .asm_36e0e ; 36df2 $1a + jr z, .asm_36e0e ld a, [InLinkBattle] and a - jr nz, .asm_36e0e ; 36df8 $14 + jr nz, .asm_36e0e ld a, [$cfc0] and a - jr nz, .asm_36e0e ; 36dfe $e + jr nz, .asm_36e0e ld a, [PlayerSubStatus5] - bit 5, a - jr nz, .asm_36e0e ; 36e05 $7 + bit SUBSTATUS_LOCK_ON, a + jr nz, .asm_36e0e call BattleRandom cp $40 - jr c, .asm_36e52 ; 36e0c $44 + jr c, .asm_36e52 .asm_36e0e ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar + call GetBattleVarAddr and a - jr nz, .asm_36e52 ; 36e14 $3c + jr nz, .asm_36e52 ld a, [AttackMissed] and a - jr nz, .asm_36e52 ; 36e1a $36 + jr nz, .asm_36e52 call CheckSubstituteOpp - jr nz, .asm_36e52 ; 36e1f $31 - ld c, $1e + jr nz, .asm_36e52 + ld c, 30 call DelayFrames call AnimateCurrentMove ld a, $1 ld [$ffd4], a ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar - set 6, [hl] + call GetBattleVarAddr + set PAR, [hl] call UpdateOpponentInParty ld hl, Function3ec39 call CallBattleCore @@ -8231,8 +8185,9 @@ BattleCommand30: ; 36dc7 Function36e5b: ; 36e5b -; Compare move type to user type. -; Return z if matching the user type (unless the move is Normal). +; Compare move type to opponent type. +; Return z if matching the opponent type, +; unless the move is Normal (Tri Attack). push hl @@ -8271,17 +8226,19 @@ BattleCommand31: ; 36e7c call BattleCommandaa ld hl, BattleMonMaxHP - ld de, $c6df + ld de, PlayerSubstituteHP ld a, [hBattleTurn] and a - jr z, .asm_36e90 ; 36e88 $6 - ld hl, EnemyMonMaxHPHi - ld de, $c6e0 -.asm_36e90 + jr z, .got_hp + ld hl, EnemyMonMaxHP + ld de, EnemySubstituteHP +.got_hp + ld a, BATTLE_VARS_SUBSTATUS4 call GetBattleVar - bit 4, a - jr nz, .asm_36ef4 ; 36e97 $5b + bit SUBSTATUS_SUBSTITUTE, a + jr nz, .asm_36ef4 + ld a, [hli] ld b, [hl] srl a @@ -8296,49 +8253,56 @@ BattleCommand31: ; 36e7c sub b ld e, a ld a, [hl] - sbc $0 + sbc 0 ld d, a - jr c, .asm_36eff ; 36eae $4f + jr c, .asm_36eff ld a, d or e - jr z, .asm_36eff ; 36eb2 $4b + jr z, .asm_36eff ld [hl], d inc hl ld [hl], e + ld a, BATTLE_VARS_SUBSTATUS4 - call _GetBattleVar - set 4, [hl] + call GetBattleVarAddr + set SUBSTATUS_SUBSTITUTE, [hl] + ld hl, $c730 ld de, $c72e ld a, [hBattleTurn] and a - jr z, .asm_36ecf ; 36ec7 $6 + jr z, .asm_36ecf ld hl, $c731 ld de, $c72f .asm_36ecf + xor a ld [hl], a ld [de], a call Function37ed5 - jr c, .asm_36ee8 ; 36ed5 $11 + jr c, .asm_36ee8 + xor a ld [$cfca], a ld [FXAnimIDHi], a ld [$c689], a - ld a, $a4 + ld a, SUBSTITUTE call Function37e44 - jr .asm_36eeb ; 36ee6 $3 + jr .asm_36eeb + .asm_36ee8 call BattleCommanda6 .asm_36eeb ld hl, MadeSubstituteText call StdBattleTextBox jp RefreshBattleHuds + .asm_36ef4 call Function34548 call nz, BattleCommand0c ld hl, HasSubstituteText - jr .asm_36f08 ; 36efd $9 + jr .asm_36f08 + .asm_36eff call Function34548 call nz, BattleCommand0c @@ -8350,8 +8314,8 @@ BattleCommand31: ; 36e7c BattleCommand32: ; 36f0b ; rechargenextturn ld a, BATTLE_VARS_SUBSTATUS4 - call _GetBattleVar - set 5, [hl] + call GetBattleVarAddr + set SUBSTATUS_RECHARGE, [hl] ret ; 36f13 @@ -8359,8 +8323,8 @@ BattleCommand32: ; 36f0b EndRechargeOpp: ; 36f13 push hl ld a, BATTLE_VARS_SUBSTATUS4_OPP - call _GetBattleVar - res 5, [hl] + call GetBattleVarAddr + res SUBSTATUS_RECHARGE, [hl] pop hl ret ; 36f1d @@ -8369,8 +8333,8 @@ EndRechargeOpp: ; 36f13 BattleCommand97: ; 36f1d ; rage ld a, BATTLE_VARS_SUBSTATUS4 - call _GetBattleVar - set 6, [hl] + call GetBattleVarAddr + set SUBSTATUS_RAGE, [hl] ret ; 36f25 @@ -8418,42 +8382,42 @@ BattleCommand33: ; 36f46 call BattleCommandaa ld a, [AttackMissed] and a - jr nz, .asm_36f9a ; 36f50 $48 + jr nz, .asm_36f9a ld hl, BattleMonMoves ld a, [hBattleTurn] and a - jr z, .asm_36f5d ; 36f58 $3 + jr z, .asm_36f5d ld hl, EnemyMonMoves .asm_36f5d call CheckHiddenOpponent - jr nz, .asm_36f9a ; 36f60 $38 + jr nz, .asm_36f9a ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar and a - jr z, .asm_36f9a ; 36f68 $30 - cp $a5 - jr z, .asm_36f9a ; 36f6c $2c + jr z, .asm_36f9a + cp STRUGGLE + jr z, .asm_36f9a ld b, a - ld c, $4 + ld c, NUM_MOVES .asm_36f71 ld a, [hli] cp b - jr z, .asm_36f9a ; 36f73 $25 + jr z, .asm_36f9a dec c - jr nz, .asm_36f71 ; 36f76 $f9 + jr nz, .asm_36f71 dec hl .asm_36f79 ld a, [hld] - cp $66 - jr nz, .asm_36f79 ; 36f7c $fb + cp MIMIC + jr nz, .asm_36f79 inc hl ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar ld [hl], a ld [$d265], a - ld bc, $0006 + ld bc, BattleMonPP - BattleMonMoves add hl, bc - ld [hl], $5 + ld [hl], 5 call GetMoveName call AnimateCurrentMove ld hl, LearnedMoveText @@ -8467,34 +8431,39 @@ BattleCommand35: ; 36f9d ; leechseed ld a, [AttackMissed] and a - jr nz, .asm_36fd8 ; 36fa1 $35 + jr nz, .evaded call CheckSubstituteOpp - jr nz, .asm_36fd8 ; 36fa6 $30 + jr nz, .evaded + ld de, EnemyMonType1 ld a, [hBattleTurn] and a - jr z, .asm_36fb3 ; 36fae $3 + jr z, .ok ld de, BattleMonType1 -.asm_36fb3 +.ok + ld a, [de] - cp $16 - jr z, .asm_36fd2 ; 36fb6 $1a + cp GRASS + jr z, .grass inc de ld a, [de] - cp $16 - jr z, .asm_36fd2 ; 36fbc $14 + cp GRASS + jr z, .grass + ld a, BATTLE_VARS_SUBSTATUS4_OPP - call _GetBattleVar - bit 7, [hl] - jr nz, .asm_36fd8 ; 36fc5 $11 - set 7, [hl] + call GetBattleVarAddr + bit SUBSTATUS_LEECH_SEED, [hl] + jr nz, .evaded + set SUBSTATUS_LEECH_SEED, [hl] call AnimateCurrentMove ld hl, WasSeededText jp StdBattleTextBox -.asm_36fd2 + +.grass call AnimateFailedMove jp PrintDoesntAffect -.asm_36fd8 + +.evaded call AnimateFailedMove ld hl, EvadedText jp StdBattleTextBox @@ -8513,46 +8482,51 @@ BattleCommand37: ; 36fed ld a, [AttackMissed] and a - jr nz, .asm_37059 ; 36ff1 $66 + jr nz, .asm_37059 + ld de, EnemyDisableCount ld hl, EnemyMonMoves ld a, [hBattleTurn] and a - jr z, .asm_37004 ; 36ffc $6 + jr z, .asm_37004 ld de, PlayerDisableCount ld hl, BattleMonMoves .asm_37004 + ld a, [de] and a - jr nz, .asm_37059 ; 37006 $51 + jr nz, .asm_37059 + ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar and a - jr z, .asm_37059 ; 3700e $49 - cp $a5 - jr z, .asm_37059 ; 37012 $45 + jr z, .asm_37059 + cp STRUGGLE + jr z, .asm_37059 + ld b, a ld c, $ff .asm_37017 inc c ld a, [hli] cp b - jr nz, .asm_37017 ; 3701a $fb + jr nz, .asm_37017 + ld a, [hBattleTurn] and a - ld hl, EnemyMonPPMove1 - jr z, .asm_37027 ; 37022 $3 + ld hl, EnemyMonPP + jr z, .asm_37027 ld hl, BattleMonPP .asm_37027 - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] and a - jr z, .asm_37059 ; 3702c $2b + jr z, .asm_37059 .asm_3702e call BattleRandom - and $7 - jr z, .asm_3702e ; 37033 $f9 + and 7 + jr z, .asm_3702e inc a inc c swap c @@ -8562,7 +8536,7 @@ BattleCommand37: ; 36fed ld hl, DisabledMove ld a, [hBattleTurn] and a - jr nz, .asm_37047 ; 37044 $1 + jr nz, .asm_37047 inc hl .asm_37047 ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP @@ -8583,22 +8557,24 @@ BattleCommand1e: ; 3705c xor a ld hl, StringBuffer1 ld [hli], a + ld a, [hBattleTurn] and a ld a, [BattleMonLevel] - jr z, .asm_3706c ; 37067 $3 + jr z, .ok ld a, [EnemyMonLevel] -.asm_3706c +.ok + add a - ld hl, $c6ee + ld hl, wPayDayMoney + 2 add [hl] ld [hld], a - jr nc, .asm_37079 ; 37072 $5 + jr nc, .done inc [hl] dec hl - jr nz, .asm_37079 ; 37076 $1 + jr nz, .done inc [hl] -.asm_37079 +.done ld hl, CoinsScatteredText jp StdBattleTextBox ; 3707f @@ -8611,25 +8587,25 @@ BattleCommand1f: ; 3707f ld de, BattleMonType1 ld a, [hBattleTurn] and a - jr z, .asm_37090 ; 37088 $6 + jr z, .asm_37090 ld hl, EnemyMonMoves ld de, EnemyMonType1 .asm_37090 push de - ld c, $0 + ld c, 0 ld de, StringBuffer1 .asm_37096 push hl - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] pop hl and a - jr z, .asm_370b2 ; 3709d $13 + jr z, .asm_370b2 push hl push bc dec a - ld hl, Moves + PlayerMoveType - PlayerMoveStruct + ld hl, Moves + MOVE_TYPE call GetMoveAttr ld [de], a inc de @@ -8637,8 +8613,8 @@ BattleCommand1f: ; 3707f pop hl inc c ld a, c - cp $4 - jr c, .asm_37096 ; 370b0 $e4 + cp NUM_MOVES + jr c, .asm_37096 .asm_370b2 ld a, $ff ld [de], a @@ -8651,43 +8627,44 @@ BattleCommand1f: ; 3707f .asm_370bd ld a, [hl] cp $ff - jr z, .asm_370d3 ; 370c0 $11 - cp $13 - jr z, .asm_370d0 ; 370c4 $a + jr z, .asm_370d3 + cp CURSE_T + jr z, .asm_370d0 ld a, [de] cp [hl] - jr z, .asm_370d0 ; 370c8 $6 + jr z, .asm_370d0 inc de ld a, [de] dec de cp [hl] - jr nz, .asm_370d9 ; 370ce $9 + jr nz, .asm_370d9_a .asm_370d0 inc hl - jr .asm_370bd ; 370d1 $ea + jr .asm_370bd .asm_370d3 call AnimateFailedMove jp PrintButItFailed -.asm_370d9 +.asm_370d9_a +.asm_370d9_b call BattleRandom - and $3 + and 3 ; TODO factor in NUM_MOVES ld c, a - ld b, $0 + ld b, 0 ld hl, StringBuffer1 add hl, bc ld a, [hl] cp $ff - jr z, .asm_370d9 ; 370e8 $ef - cp $13 - jr z, .asm_370d9 ; 370ec $eb + jr z, .asm_370d9_b + cp CURSE_T + jr z, .asm_370d9_b ld a, [de] cp [hl] - jr z, .asm_370d9 ; 370f0 $e7 + jr z, .asm_370d9_b inc de ld a, [de] dec de cp [hl] - jr z, .asm_370d9 ; 370f6 $e1 + jr z, .asm_370d9_b ld a, [hl] ld [de], a inc de @@ -8727,10 +8704,10 @@ BattleCommand20: ; 3710e .Fill ld b, PlayerStatLevelsEnd - PlayerStatLevels -.asm_37139 +.next ld [hli], a dec b - jr nz, .asm_37139 + jr nz, .next ret ; 3713e @@ -8742,9 +8719,9 @@ BattleCommand2c: ; 3713e ld hl, BattleMonMaxHP ld a, [hBattleTurn] and a - jr z, .asm_3714f ; 37147 $6 - ld de, EnemyMonHPHi - ld hl, EnemyMonMaxHPHi + jr z, .asm_3714f + ld de, EnemyMonHP + ld hl, EnemyMonMaxHP .asm_3714f ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar @@ -8752,37 +8729,37 @@ BattleCommand2c: ; 3713e push hl push de push bc - ld c, $2 + ld c, 2 call StringCmp pop bc pop de pop hl jp z, .asm_371c4 ld a, b - cp $9c - jr nz, .asm_37199 ; 37166 $31 + cp REST + jr nz, .asm_37199 push hl push de push af call BattleCommandaa ld a, BATTLE_VARS_SUBSTATUS5 - call _GetBattleVar - res 0, [hl] + call GetBattleVarAddr + res SUBSTATUS_TOXIC, [hl] ld a, BATTLE_VARS_STATUS - call _GetBattleVar + call GetBattleVarAddr ld a, [hl] and a - ld [hl], $3 + ld [hl], REST_TURNS + 1 ld hl, WentToSleepText - jr z, .asm_37186 ; 37181 $3 + jr z, .asm_37186 ld hl, RestedText .asm_37186 call StdBattleTextBox ld a, [hBattleTurn] and a - jr nz, .asm_37193 ; 3718c $5 + jr nz, .asm_37193 call Function365d7 - jr .asm_37196 ; 37191 $3 + jr .asm_37196 .asm_37193 call Function365fd .asm_37196 @@ -8790,10 +8767,10 @@ BattleCommand2c: ; 3713e pop de pop hl .asm_37199 - jr z, .asm_371a3 ; 37199 $8 + jr z, .asm_371a3 ld hl, GetHalfMaxHP call CallBattleCore - jr .asm_371a9 ; 371a1 $6 + jr .asm_371a9 .asm_371a3 ld hl, GetMaxHP call CallBattleCore @@ -8820,8 +8797,8 @@ BattleCommand2d: ; 371cd call Function372d8 ld a, BATTLE_VARS_SUBSTATUS5_OPP - call _GetBattleVar - bit 3, [hl] + call GetBattleVarAddr + bit SUBSTATUS_TRANSFORMED, [hl] jp nz, Function372d2 call CheckHiddenOpponent jp nz, Function372d2 @@ -8831,24 +8808,24 @@ BattleCommand2d: ; 371cd ld a, $1 ld [$c689], a ld a, BATTLE_VARS_SUBSTATUS4 - call _GetBattleVar - bit 4, [hl] + call GetBattleVarAddr + bit SUBSTATUS_SUBSTITUTE, [hl] push af - jr z, .asm_37200 ; 371f4 $a + jr z, .asm_37200 call Function34548 - jr nz, .asm_37200 ; 371f9 $5 - ld a, $a4 + jr nz, .asm_37200 + ld a, SUBSTITUTE call Function37e44 .asm_37200 ld a, BATTLE_VARS_SUBSTATUS5 - call _GetBattleVar - set 3, [hl] + call GetBattleVarAddr + set SUBSTATUS_TRANSFORMED, [hl] call ResetActorDisable ld hl, BattleMonSpecies ld de, EnemyMonSpecies ld a, [hBattleTurn] and a - jr nz, .asm_3721f ; 37213 $a + jr nz, .asm_3721f ld hl, EnemyMonSpecies ld de, BattleMonSpecies xor a @@ -8860,11 +8837,11 @@ BattleCommand2d: ; 371cd inc hl inc de inc de - ld bc, $0004 + ld bc, NUM_MOVES call CopyBytes ld a, [hBattleTurn] and a - jr z, .asm_3723a ; 3722e $a + jr z, .asm_3723a ld a, [de] ld [$c6f2], a inc de @@ -8897,20 +8874,20 @@ BattleCommand2d: ; 371cd pop hl ld bc, $ffe8 add hl, bc - ld b, $4 + ld b, NUM_MOVES .asm_3725f ld a, [de] inc de and a - jr z, .asm_3726c ; 37262 $8 + jr z, .asm_3726c cp SKETCH ld a, 1 - jr z, .asm_3726c ; 37268 $2 + jr z, .asm_3726c ld a, 5 .asm_3726c ld [hli], a dec b - jr nz, .asm_3725f ; 3726e $ef + jr nz, .asm_3725f pop hl ld a, [hl] ld [$d265], a @@ -8924,17 +8901,17 @@ BattleCommand2d: ; 371cd ld bc, $0008 call BattleSideCopy call Function37ed5 - jr c, .asm_372a8 ; 37293 $13 + jr c, .asm_372a8 ld a, [hBattleTurn] and a ld a, [$c6fe] - jr z, .asm_372a0 ; 3729b $3 + jr z, .asm_372a0 ld a, [$c6fa] .asm_372a0 and a - jr nz, .asm_372a8 ; 372a1 $5 + jr nz, .asm_372a8 call Function37e36 - jr .asm_372ae ; 372a6 $6 + jr .asm_372ae .asm_372a8 call BattleCommandaa call BattleCommanda6 @@ -8945,7 +8922,7 @@ BattleCommand2d: ; 371cd ld a, $2 ld [$c689], a pop af - ld a, $a4 + ld a, SUBSTITUTE call nz, Function37e44 ld hl, TransformedText jp StdBattleTextBox @@ -8977,12 +8954,12 @@ Function372d2: ; 372d2 Function372d8: ; 372d8 ld a, BATTLE_VARS_LAST_COUNTER_MOVE - call _GetBattleVar + call GetBattleVarAddr xor a ld [hl], a ld a, BATTLE_VARS_LAST_MOVE - call _GetBattleVar + call GetBattleVarAddr xor a ld [hl], a ret @@ -9024,23 +9001,23 @@ BattleCommand2e: ; 372fc cp EFFECT_LIGHT_SCREEN jr nz, .Reflect - bit 3, [hl] - jr nz, .asm_37337 - set 3, [hl] - ld a, $5 + bit SCREENS_LIGHT_SCREEN, [hl] + jr nz, .failed + set SCREENS_LIGHT_SCREEN, [hl] + ld a, 5 ld [bc], a ld hl, LightScreenEffectText jr .asm_37331 .Reflect - bit 4, [hl] - jr nz, .asm_37337 - set 4, [hl] + bit SCREENS_REFLECT, [hl] + jr nz, .failed + set SCREENS_REFLECT, [hl] -; LightScreenCount -> ReflectCount + ; LightScreenCount -> ReflectCount inc bc - ld a, $5 + ld a, 5 ld [bc], a ld hl, ReflectEffectText @@ -9048,7 +9025,7 @@ BattleCommand2e: ; 372fc call AnimateCurrentMove jp StdBattleTextBox -.asm_37337 +.failed call AnimateFailedMove jp PrintButItFailed ; 3733d @@ -9121,7 +9098,7 @@ PrintParalyze: ; 37372 CheckSubstituteOpp: ; 37378 ld a, BATTLE_VARS_SUBSTATUS4_OPP call GetBattleVar - bit 4, a + bit SUBSTATUS_SUBSTITUTE, a ret ; 37380 @@ -9133,7 +9110,7 @@ BattleCommand1a: ; 37380 ld c, $3 call DelayFrames ld a, BATTLE_VARS_STATUS - call _GetBattleVar + call GetBattleVarAddr xor a ld [hli], a inc hl @@ -9144,15 +9121,15 @@ BattleCommand1a: ; 37380 call BattleCommand0a call Function37e36 ld a, BATTLE_VARS_SUBSTATUS4 - call _GetBattleVar - res 7, [hl] + call GetBattleVarAddr + res SUBSTATUS_LEECH_SEED, [hl] ld a, BATTLE_VARS_SUBSTATUS5_OPP - call _GetBattleVar - res 6, [hl] + call GetBattleVarAddr + res SUBSTATUS_DESTINY_BOND, [hl] call Function37ed5 ret nc callba DrawPlayerHUD - callba Function3e043 + callba DrawEnemyHUD call WaitBGMap jp RefreshBattleHuds ; 373c9 @@ -9219,7 +9196,7 @@ BattleCommand51: ; 37517 ; Don't trap if the opponent is already trapped. ld a, BATTLE_VARS_SUBSTATUS5 - call _GetBattleVar + call GetBattleVarAddr bit SUBSTATUS_CANT_RUN, [hl] jr nz, .failed @@ -9245,7 +9222,7 @@ BattleCommand53: ; 37563 ; Thaw the user. ld a, BATTLE_VARS_STATUS - call _GetBattleVar + call GetBattleVarAddr bit FRZ, [hl] ret z res FRZ, [hl] @@ -9360,30 +9337,30 @@ BattleCommand5f: ; 377ce ; attract ld a, [AttackMissed] and a - jr nz, .asm_377f2 + jr nz, .failed call Function377f5 - jr c, .asm_377f2 + jr c, .failed call CheckHiddenOpponent - jr nz, .asm_377f2 + jr nz, .failed ld a, BATTLE_VARS_SUBSTATUS1_OPP - call _GetBattleVar - bit 7, [hl] - jr nz, .asm_377f2 + call GetBattleVarAddr + bit SUBSTATUS_IN_LOVE, [hl] + jr nz, .failed - set 7, [hl] + set SUBSTATUS_IN_LOVE, [hl] call AnimateCurrentMove ; 'fell in love!' ld hl, FellInLoveText jp StdBattleTextBox -.asm_377f2 +.failed jp Function37354 ; 377f5 Function377f5: ; 377f5 - ld a, 0 + ld a, PartyMon1Species - PartyMon1 call BattlePartyAttr ld a, [hl] ld [CurPartySpecies], a @@ -9404,12 +9381,11 @@ Function377f5: ; 377f5 push bc ld a, [TempEnemyMonSpecies] ld [CurPartySpecies], a - ld hl, EnemyMonAtkDefDV + ld hl, EnemyMonDVs ld a, [EnemySubStatus5] - bit 3, a + bit SUBSTATUS_TRANSFORMED, a jr z, .asm_37829 ld hl, $c6f2 - .asm_37829 ld a, [hli] ld [$d123], a @@ -9444,22 +9420,22 @@ BattleCommand60: ; 3784b ld hl, BattleMonHappiness ld a, [hBattleTurn] and a - jr z, .asm_37857 ; 37852 $3 + jr z, .ok ld hl, EnemyMonHappiness -.asm_37857 +.ok xor a - ld [$ffb4], a - ld [$ffb5], a + ld [hMultiplicand], a + ld [hMultiplicand + 1], a ld a, [hl] - ld [$ffb6], a - ld a, $a - ld [$ffb7], a + ld [hMultiplicand + 2], a + ld a, 10 + ld [hMultiplier], a call Multiply - ld a, $19 - ld [$ffb7], a - ld b, $4 + ld a, 25 + ld [hDivisor], a + ld b, 4 call Divide - ld a, [$ffb6] + ld a, [hQuotient + 2] ld d, a pop bc ret @@ -9471,23 +9447,27 @@ BattleCommand61: ; 37874 ld a, [InLinkBattle] cp $3 - jr z, .asm_3787d ; 37879 $2 + jr z, .asm_3787d push bc push de .asm_3787d + call BattleCommand07 + ld a, [InLinkBattle] cp $3 - jr z, .asm_37889 ; 37885 $2 + jr z, .asm_37889 pop de pop bc .asm_37889 + ld a, [$d265] and a jp z, AnimateFailedMove ld a, [AttackMissed] and a jp nz, AnimateFailedMove + push bc call BattleRandom ld b, a @@ -9502,6 +9482,7 @@ BattleCommand61: ; 37874 inc c inc hl jr .asm_378a1 ; 378ab $f4 + .asm_378ad ld a, c ld [$c689], a @@ -9509,6 +9490,7 @@ BattleCommand61: ; 37874 ld d, [hl] pop bc ret + .asm_378b7 pop bc ld a, $3 @@ -9524,6 +9506,7 @@ BattleCommand61: ; 37874 ld a, BANK(AICheckPlayerMaxHP) rst FarCall jr c, .asm_378f3 ; 378d1 $20 + ld hl, GetQuarterMaxHP call CallBattleCore call SwitchTurn @@ -9535,6 +9518,7 @@ BattleCommand61: ; 37874 call SwitchTurn call UpdateOpponentInParty jr .asm_37904 ; 378f1 $11 + .asm_378f3 call SwitchTurn call Function37ed5 @@ -9546,9 +9530,9 @@ BattleCommand61: ; 37874 jp EndMoveEffect .table_37907 - db $66, 40 - db $b3, 80 - db $cc, 120 + db 40 percent, 40 + db 70 percent + 1, 80 + db 80 percent, 120 db $ff ; 3790e @@ -9569,12 +9553,12 @@ BattleCommand63: ; 3790e xor a ld [$ffb4], a ld [$ffb5], a - ld a, $a + ld a, 10 ld [$ffb7], a call Multiply - ld a, $19 + ld a, 25 ld [$ffb7], a - ld b, $4 + ld b, 4 call Divide ld a, [$ffb6] ld d, a @@ -9587,22 +9571,22 @@ BattleCommand64: ; 37939 ; safeguard ld hl, PlayerScreens - ld de, $c701 + ld de, PlayerSafeguardCount ld a, [hBattleTurn] and a - jr z, .asm_3794a ; 37942 $6 + jr z, .ok ld hl, EnemyScreens - ld de, $c705 -.asm_3794a - bit 2, [hl] - jr nz, .asm_3795c ; 3794c $e - set 2, [hl] - ld a, $5 + ld de, EnemySafeguardCount +.ok + bit SCREENS_SAFEGUARD, [hl] + jr nz, .failed + set SCREENS_SAFEGUARD, [hl] + ld a, 5 ld [de], a call AnimateCurrentMove ld hl, CoveredByVeilText jp StdBattleTextBox -.asm_3795c +.failed call AnimateFailedMove jp PrintButItFailed ; 37962 @@ -9617,7 +9601,7 @@ Function37962: ; 37962 ld hl, PlayerScreens .asm_3796e - bit 2, [hl] + bit SCREENS_SAFEGUARD, [hl] pop hl ret ; 37972 @@ -9631,9 +9615,9 @@ BattleCommand65: ; 37972 jr z, .asm_3797d ; 37978 $3 ld hl, PlayerScreens .asm_3797d - bit 2, [hl] + bit SCREENS_SAFEGUARD, [hl] ret z - ld a, $1 + ld a, 1 ld [AttackMissed], a call BattleCommandaa ld hl, SafeguardProtectText @@ -9649,14 +9633,14 @@ BattleCommand66: ; 37991 call BattleRandom ld b, a ld hl, .Magnitudes -.asm_37999 +.loop ld a, [hli] cp b - jr nc, .asm_379a1 ; 3799b $4 + jr nc, .ok inc hl inc hl - jr .asm_37999 ; 3799f $f8 -.asm_379a1 + jr .loop +.ok ld d, [hl] push de inc hl @@ -9795,18 +9779,18 @@ BatonPass_LinkEnemySwitch: ; 37a82 call CallBattleCore ld a, [OTPartyCount] - add 4 + add NUM_MOVES ld b, a - ld a, [$d430] - cp 4 + ld a, [wBattleAction] + cp NUM_MOVES jr c, .asm_37aa0 cp b jr c, .asm_37aa8 .asm_37aa0 ld a, [CurOTMon] - add 4 - ld [$d430], a + add NUM_MOVES + ld [wBattleAction], a .asm_37aa8 jp Function1c17 ; 37aab @@ -9821,21 +9805,21 @@ FailedBatonPass: ; 37aab ResetBatonPassStatus: ; 37ab1 ; Reset status changes that aren't passed by Baton Pass. -; Nightmare isn't passed. + ; Nightmare isn't passed. ld a, BATTLE_VARS_STATUS call GetBattleVar and SLP jr nz, .ok ld a, BATTLE_VARS_SUBSTATUS1 - call _GetBattleVar + call GetBattleVarAddr res SUBSTATUS_NIGHTMARE, [hl] .ok -; Disable isn't passed. + ; Disable isn't passed. call ResetActorDisable -; Attraction isn't passed. + ; Attraction isn't passed. ld hl, PlayerSubStatus1 res SUBSTATUS_IN_LOVE, [hl] ld hl, EnemySubStatus1 @@ -9843,13 +9827,13 @@ ResetBatonPassStatus: ; 37ab1 ld hl, PlayerSubStatus5 ld a, BATTLE_VARS_SUBSTATUS5 - call _GetBattleVar - res 3, [hl] - res 4, [hl] + call GetBattleVarAddr + res SUBSTATUS_TRANSFORMED, [hl] + res SUBSTATUS_ENCORED, [hl] -; New mon hasn't used a move yet. + ; New mon hasn't used a move yet. ld a, BATTLE_VARS_LAST_MOVE - call _GetBattleVar + call GetBattleVarAddr ld [hl], 0 xor a @@ -9918,20 +9902,25 @@ CheckAnyOtherAliveMons: ; 37b01 BattleCommand68: ; 37b1d - ld hl, $c711 +; pursuit +; Double damage if the opponent is switching. + + ld hl, wEnemyIsSwitching ld a, [hBattleTurn] and a - jr z, .asm_37b28 ; 37b23 $3 - ld hl, $c710 -.asm_37b28 + jr z, .ok + ld hl, wPlayerIsSwitching +.ok ld a, [hl] and a ret z + ld hl, CurDamage + 1 sla [hl] dec hl rl [hl] ret nc + ld a, $ff ld [hli], a ld [hl], a @@ -9943,13 +9932,14 @@ BattleCommand69: ; 37b39 ; clearhazards ld a, BATTLE_VARS_SUBSTATUS4 - call _GetBattleVar - bit 7, [hl] + call GetBattleVarAddr + bit SUBSTATUS_LEECH_SEED, [hl] jr z, .asm_37b4a ; 37b40 $8 - res 7, [hl] + res SUBSTATUS_LEECH_SEED, [hl] ld hl, ShedLeechSeedText call StdBattleTextBox .asm_37b4a + ld hl, PlayerScreens ld de, $c730 ld a, [hBattleTurn] @@ -9958,14 +9948,15 @@ BattleCommand69: ; 37b39 ld hl, EnemyScreens ld de, $c731 .asm_37b5b - bit 0, [hl] + bit SCREENS_SPIKES, [hl] jr z, .asm_37b69 ; 37b5d $a - res 0, [hl] + res SCREENS_SPIKES, [hl] ld hl, BlewSpikesText push de call StdBattleTextBox pop de .asm_37b69 + ld a, [de] and a ret z @@ -10130,14 +10121,14 @@ BattleCommand95: ; 37c1a pop bc callab Function3cc3f call UpdateUserInParty - ld a, $5 + ld a, 5 .asm_37c41 push af call BattleCommand77 pop af dec a - jr nz, .asm_37c41 ; 37c47 $f8 + jr nz, .asm_37c41 ld hl, BellyDrumText jp StdBattleTextBox @@ -10262,9 +10253,9 @@ BattleCommand9d: ; 37ce6 ld hl, $c6fa ld a, [hBattleTurn] and a - jr z, .asm_37cf1 ; 37cec $3 + jr z, .ok ld hl, $c6fe -.asm_37cf1 +.ok ld a, [hl] and a ret z @@ -10327,10 +10318,10 @@ BattleCommand9c: ; 37d34 call GetBattleVar ld b, a ld a, BATTLE_VARS_LAST_COUNTER_MOVE - call _GetBattleVar + call GetBattleVarAddr ld [hl], b ld a, BATTLE_VARS_LAST_MOVE - call _GetBattleVar + call GetBattleVarAddr ld [hl], b .asm_37d4b ld hl, $c71d @@ -10358,12 +10349,12 @@ BattleCommand9c: ; 37d34 ld hl, CurDamage ld a, [hl] ld [de], a - ld [hl], $0 + ld [hl], 0 inc hl inc de ld a, [hl] ld [de], a - ld [hl], $0 + ld [hl], 0 jp EndMoveEffect .asm_37d87 pop bc @@ -10378,17 +10369,17 @@ BattleCommand9f: ; 37d94 ; thunderaccuracy ld a, BATTLE_VARS_MOVE_TYPE - call _GetBattleVar + call GetBattleVarAddr inc hl ld a, [Weather] cp WEATHER_RAIN - jr z, .asm_37da7 ; 37d9f $6 + jr z, .rain cp WEATHER_SUN ret nz - ld [hl], $80 + ld [hl], 50 percent + 1 ret -.asm_37da7 - ld [hl], $ff +.rain + ld [hl], 100 percent ret ; 37daa @@ -10396,7 +10387,7 @@ BattleCommand9f: ; 37d94 CheckHiddenOpponent: ; 37daa ld a, BATTLE_VARS_SUBSTATUS3_OPP call GetBattleVar - and $60 ; fly | dig + and 1 << SUBSTATUS_FLYING | 1 << SUBSTATUS_UNDERGROUND ret ; 37db2 @@ -10621,7 +10612,7 @@ SkipToBattleCommand: ; 37e8c GetMoveAttr: ; 37ea1 ; Assuming hl = Moves + x, return attribute x of move a. push bc - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes call GetMoveByte pop bc @@ -10632,7 +10623,7 @@ GetMoveAttr: ; 37ea1 GetMoveData: ; 37ead ; Copy move struct a to de. ld hl, Moves - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes ld a, Bank(Moves) jp FarCopyBytes @@ -10675,5 +10666,3 @@ Function37ed5: ; 37ed5 ret ; 37ee2 - - diff --git a/battle/effects/curse.asm b/battle/effects/curse.asm index fc08beae6..27f821ffc 100644 --- a/battle/effects/curse.asm +++ b/battle/effects/curse.asm @@ -66,11 +66,11 @@ BattleCommand54: ; 37588 jr nz, .failed ld a, BATTLE_VARS_SUBSTATUS1_OPP - call _GetBattleVar - bit 1, [hl] + call GetBattleVarAddr + bit SUBSTATUS_CURSE, [hl] jr nz, .failed - set 1, [hl] + set SUBSTATUS_CURSE, [hl] call AnimateCurrentMove ld hl, GetHalfMaxHP call CallBattleCore diff --git a/battle/effects/endure.asm b/battle/effects/endure.asm index f449dcebd..9d99c8236 100644 --- a/battle/effects/endure.asm +++ b/battle/effects/endure.asm @@ -7,7 +7,7 @@ BattleCommand5a: ; 3766f ret c ld a, BATTLE_VARS_SUBSTATUS1 - call _GetBattleVar + call GetBattleVarAddr set SUBSTATUS_ENDURE, [hl] call AnimateCurrentMove diff --git a/battle/effects/foresight.asm b/battle/effects/foresight.asm index 7a8f33493..84c10670b 100644 --- a/battle/effects/foresight.asm +++ b/battle/effects/foresight.asm @@ -9,7 +9,7 @@ BattleCommand57: ; 376a0 jr nz, .failed ld a, BATTLE_VARS_SUBSTATUS1_OPP - call _GetBattleVar + call GetBattleVarAddr bit SUBSTATUS_IDENTIFIED, [hl] jr nz, .failed diff --git a/battle/effects/metronome.asm b/battle/effects/metronome.asm index 3762ec372..97052a66c 100644 --- a/battle/effects/metronome.asm +++ b/battle/effects/metronome.asm @@ -36,7 +36,7 @@ BattleCommand34: ; 37418 ld a, BATTLE_VARS_MOVE - call _GetBattleVar + call GetBattleVarAddr ld [hl], b call UpdateMoveData jp ResetTurn diff --git a/battle/effects/mirror_move.asm b/battle/effects/mirror_move.asm index 60748bdae..a9dfa7931 100644 --- a/battle/effects/mirror_move.asm +++ b/battle/effects/mirror_move.asm @@ -4,7 +4,7 @@ BattleCommand1b: ; 373c9 call Function372d8 ld a, BATTLE_VARS_MOVE - call _GetBattleVar + call GetBattleVarAddr ld a, BATTLE_VARS_LAST_COUNTER_MOVE_OPP call GetBattleVar @@ -28,7 +28,7 @@ BattleCommand1b: ; 373c9 push af ld a, BATTLE_VARS_MOVE_ANIM - call _GetBattleVar + call GetBattleVarAddr ld d, h ld e, l pop af diff --git a/battle/effects/nightmare.asm b/battle/effects/nightmare.asm index cd3210cab..01f17ff71 100644 --- a/battle/effects/nightmare.asm +++ b/battle/effects/nightmare.asm @@ -14,14 +14,14 @@ BattleCommand52: ; 37536 ; Only works on a sleeping opponent. ld a, BATTLE_VARS_STATUS_OPP - call _GetBattleVar + call GetBattleVarAddr and SLP jr z, .failed ; Bail if the opponent is already having a nightmare. ld a, BATTLE_VARS_SUBSTATUS1_OPP - call _GetBattleVar + call GetBattleVarAddr bit SUBSTATUS_NIGHTMARE, [hl] jr nz, .failed diff --git a/battle/effects/protect.asm b/battle/effects/protect.asm index a28c0461e..be9284135 100644 --- a/battle/effects/protect.asm +++ b/battle/effects/protect.asm @@ -4,7 +4,7 @@ BattleCommand55: ; 37618 ret c ld a, BATTLE_VARS_SUBSTATUS1 - call _GetBattleVar + call GetBattleVarAddr set SUBSTATUS_PROTECT, [hl] call AnimateCurrentMove diff --git a/battle/effects/rollout.asm b/battle/effects/rollout.asm index 13c91a8d9..d3a765de5 100644 --- a/battle/effects/rollout.asm +++ b/battle/effects/rollout.asm @@ -1,22 +1,24 @@ +MAX_ROLLOUT_COUNT EQU 5 + + BattleCommand5b: ; 37718 ; checkcurl ld de, PlayerRolloutCount ld a, [hBattleTurn] and a - jr z, .asm_37723 + jr z, .ok ld de, EnemyRolloutCount - -.asm_37723 +.ok ld a, BATTLE_VARS_SUBSTATUS1 call GetBattleVar - bit SUBSTATUS_ENCORED, a - jr z, .asm_37731 + bit SUBSTATUS_ROLLOUT, a + jr z, .reset ld b, $4 ; doturn jp SkipToBattleCommand -.asm_37731 +.reset xor a ld [de], a ret @@ -28,7 +30,7 @@ BattleCommand5c: ; 37734 ld a, BATTLE_VARS_STATUS call GetBattleVar - and 7 + and SLP ret nz ld hl, PlayerRolloutCount @@ -50,7 +52,7 @@ BattleCommand5c: ; 37734 jr z, .hit ld a, BATTLE_VARS_SUBSTATUS1 - call _GetBattleVar + call GetBattleVarAddr res 6, [hl] ret @@ -58,23 +60,23 @@ BattleCommand5c: ; 37734 inc [hl] ld a, [hl] ld b, a - cp $5 + cp MAX_ROLLOUT_COUNT jr c, .asm_3776e ld a, BATTLE_VARS_SUBSTATUS1 - call _GetBattleVar - res 6, [hl] + call GetBattleVarAddr + res SUBSTATUS_ROLLOUT, [hl] jr .asm_37775 .asm_3776e ld a, BATTLE_VARS_SUBSTATUS1 - call _GetBattleVar - set 6, [hl] + call GetBattleVarAddr + set SUBSTATUS_ROLLOUT, [hl] .asm_37775 ld a, BATTLE_VARS_SUBSTATUS2 call GetBattleVar - bit 0, a + bit SUBSTATUS_CURLED, a jr z, .asm_3777f inc b .asm_3777f diff --git a/battle/hidden_power.asm b/battle/hidden_power.asm index b02b31d12..4d1ad9dc3 100644 --- a/battle/hidden_power.asm +++ b/battle/hidden_power.asm @@ -96,7 +96,7 @@ HiddenPowerDamage: ; fbced ; Overwrite the current move type. push af ld a, BATTLE_VARS_MOVE_TYPE - call _GetBattleVar + call GetBattleVarAddr pop af ld [hl], a diff --git a/battle/moves/moves.asm b/battle/moves/moves.asm index d37376378..3877e9960 100644 --- a/battle/moves/moves.asm +++ b/battle/moves/moves.asm @@ -1,22 +1,17 @@ Moves: ; 41afb - -; Characteristics of each move - -; animation, effect, power, type, accuracy, PP, effect chance +; Characteristics of each move. move: MACRO db \1 ; animation db \2 ; effect db \3 ; power db \4 ; type - db \5 * $ff / 100 ; accuracy (percent) + db \5 percent ; accuracy db \6 ; pp - db \7 * $ff / 100 ; effect chance (percent) + db \7 percent ; effect chance ENDM -Move1: move POUND, EFFECT_NORMAL_HIT, 40, NORMAL, 100, 35, 0 -Move2: move KARATE_CHOP, EFFECT_NORMAL_HIT, 50, FIGHTING, 100, 25, 0 move DOUBLESLAP, EFFECT_MULTI_HIT, 15, NORMAL, 85, 10, 0 move COMET_PUNCH, EFFECT_MULTI_HIT, 18, NORMAL, 85, 15, 0 diff --git a/constants/battle_constants.asm b/constants/battle_constants.asm index d4a5abb14..b6d663809 100644 --- a/constants/battle_constants.asm +++ b/constants/battle_constants.asm @@ -1,6 +1,8 @@ MAX_LEVEL EQU 100 NUM_MOVES EQU 4 +REST_TURNS EQU 2 + ATTACK EQU 0 DEFENSE EQU 1 SPEED EQU 2 @@ -44,9 +46,12 @@ BATTLETYPE_CANLOSE EQU $01 BATTLETYPE_TUTORIAL EQU $03 BATTLETYPE_FISH EQU $04 BATTLETYPE_ROAMING EQU $05 +BATTLETYPE_CONTEST EQU $06 BATTLETYPE_SHINY EQU $07 BATTLETYPE_TREE EQU $08 +BATTLETYPE_TRAP EQU $09 BATTLETYPE_FORCEITEM EQU $0a +BATTLETYPE_CELEBI EQU $0b BATTLETYPE_SUICUNE EQU $0c ; battle variables @@ -81,7 +86,7 @@ PAR EQU 6 ; substatus SUBSTATUS_IN_LOVE EQU 7 -SUBSTATUS_ENCORED EQU 6 +SUBSTATUS_ROLLOUT EQU 6 SUBSTATUS_ENDURE EQU 5 SUBSTATUS_PERISH EQU 4 SUBSTATUS_IDENTIFIED EQU 3 @@ -96,7 +101,7 @@ SUBSTATUS_FLYING EQU 6 SUBSTATUS_UNDERGROUND EQU 5 SUBSTATUS_CHARGED EQU 4 SUBSTATUS_FLINCHED EQU 3 -SUBSTATUS_ROLLOUT EQU 1 +SUBSTATUS_RAMPAGE EQU 1 SUBSTATUS_BIDE EQU 0 SUBSTATUS_LEECH_SEED EQU 7 @@ -110,6 +115,8 @@ SUBSTATUS_UNLEASH EQU 0 SUBSTATUS_CANT_RUN EQU 7 SUBSTATUS_DESTINY_BOND EQU 6 SUBSTATUS_LOCK_ON EQU 5 +SUBSTATUS_ENCORED EQU 4 +SUBSTATUS_TRANSFORMED EQU 3 SUBSTATUS_TOXIC EQU 0 ; environmental @@ -119,6 +126,7 @@ SCREENS_SAFEGUARD EQU 2 SCREENS_SPIKES EQU 0 ; weather +WEATHER_NONE EQU 0 WEATHER_RAIN EQU 1 WEATHER_SUN EQU 2 WEATHER_SANDSTORM EQU 3 diff --git a/constants/item_constants.asm b/constants/item_constants.asm index 06e15fa34..e790d1650 100644 --- a/constants/item_constants.asm +++ b/constants/item_constants.asm @@ -267,6 +267,7 @@ HELD_BERRY EQU $01 HELD_LEFTOVERS EQU $03 HELD_RESTORE_PP EQU $06 HELD_CLEANSE_TAG EQU $08 + HELD_HEAL_POISON EQU $0a HELD_HEAL_FREEZE EQU $0b HELD_HEAL_BURN EQU $0c @@ -274,7 +275,24 @@ HELD_HEAL_SLEEP EQU $0d HELD_HEAL_PARALYZE EQU $0e HELD_HEAL_STATUS EQU $0f HELD_HEAL_CONFUSION EQU $10 + +HELD_PREVENT_POISON EQU $14 +HELD_PREVENT_BURN EQU $15 +HELD_PREVENT_FREEZE EQU $16 +HELD_PREVENT_SLEEP EQU $17 +HELD_PREVENT_PARALYZE EQU $18 +HELD_PREVENT_CONFUSE EQU $19 + +HELD_ATTACK_UP EQU $1f +HELD_DEFENSE_UP EQU $20 +HELD_SPEED_UP EQU $21 +HELD_SP_ATTACK_UP EQU $22 +HELD_SP_DEFENSE_UP EQU $23 +HELD_ACCURACY_UP EQU $24 +HELD_EVASION_UP EQU $25 + HELD_METAL_POWDER EQU $2a + HELD_NORMAL_BOOST EQU $32 HELD_FIGHTING_BOOST EQU $33 HELD_FLYING_BOOST EQU $34 @@ -292,6 +310,7 @@ HELD_ICE_BOOST EQU $3f HELD_DRAGON_BOOST EQU $40 HELD_DARK_BOOST EQU $41 HELD_STEEL_BOOST EQU $42 + HELD_ESCAPE EQU $48 HELD_CRITICAL_UP EQU $49 HELD_QUICK_CLAW EQU $4a diff --git a/constants/misc_constants.asm b/constants/misc_constants.asm index 9236887a4..5b291f6e8 100644 --- a/constants/misc_constants.asm +++ b/constants/misc_constants.asm @@ -1,40 +1,28 @@ +PARTY_LENGTH EQU 6 ; strings PLAYER_NAME_LENGTH EQU 8 PKMN_NAME_LENGTH EQU 11 +MOVE_NAME_LENGTH EQU 13 NAME_LENGTH EQU 11 LV_CHAR EQU $6e +; GetName types +PKMN_NAME EQU 1 +MOVE_NAME EQU 2 +ITEM_NAME EQU 4 +PARTY_OT_NAME EQU 5 +ENEMY_OT_NAME EQU 6 +TRAINER_NAME EQU 7 + +; hp +HP_GREEN EQU 0 +HP_YELLOW EQU 1 +HP_RED EQU 2 ; boxes -NUM_BOXES EQU 14 - - -; predefs -PREDEF_FLAG EQU $03 -PREDEF_FILLPP EQU $05 -PREDEF_ADDPARTYMON EQU $06 -PREDEF_FILLSTATS EQU $0C -PREDEF_PRINT_MOVE_DESCRIPTION EQU $11 -PREDEF_UPDATE_PLAYER_HUD EQU $12 -PREDEF_FILL_BOX EQU $13 -PREDEF_UPDATE_ENEMY_HUD EQU $15 -PREDEF_START_BATTLE EQU $16 -PREDEF_FILL_IN_EXP_BAR EQU $17 -PREDEF_FILLMOVES EQU $1B -PREDEF_GET_GENDER EQU $24 -PREDEF_STATS_SCREEN EQU $25 -PREDEF_DRAW_PLAYER_HP EQU $26 -PREDEF_DRAW_ENEMY_HP EQU $27 -PREDEF_GET_TYPE_NAME EQU $29 -PREDEF_PRINT_MOVE_TYPE EQU $2A -PREDEF_PRINT_TYPE EQU $2B -PREDEF_GET_UNOWN_LETTER EQU $2D -PREDEF_LOAD_SGB_LAYOUT EQU $31 -PREDEF_CHECK_CONTEST_MON EQU $33 -PREDEF_BATTLE_TRANSITION EQU $34 -PREDEF_PARTYMON_ITEM_NAME EQU $3B -PREDEF_DECOMPRESS EQU $40 +MONS_PER_BOX EQU 20 +NUM_BOXES EQU 14 ; flag manipulation @@ -60,9 +48,9 @@ D_DOWN EQU %10000000 ; screen HP_BAR_LENGTH EQU 6 -HP_BAR_LENGTH_PX EQU 48 +HP_BAR_LENGTH_PX EQU HP_BAR_LENGTH * 8 EXP_BAR_LENGTH EQU 8 -EXP_BAR_LENGTH_PX EQU 64 +EXP_BAR_LENGTH_PX EQU EXP_BAR_LENGTH * 8 SCREEN_WIDTH EQU 20 SCREEN_HEIGHT EQU 18 diff --git a/constants/type_constants.asm b/constants/type_constants.asm index 764f41453..87b1e316a 100644 --- a/constants/type_constants.asm +++ b/constants/type_constants.asm @@ -25,7 +25,7 @@ UNUSED_TYPES EQU const_value const TYPE_17 const TYPE_18 const CURSE_T - +UNUSED_TYPES_END EQU const_value SPECIAL EQU const_value const FIRE @@ -37,3 +37,4 @@ SPECIAL EQU const_value const DRAGON const DARK +TYPES_END EQU const_value diff --git a/data/odd_eggs.asm b/data/odd_eggs.asm index 68062ec3b..95f64ded8 100644 --- a/data/odd_eggs.asm +++ b/data/odd_eggs.asm @@ -35,7 +35,7 @@ GiveOddEgg: ; 1fb4b6 ld hl, OddEggs ld a, OddEgg2 - OddEgg1 call AddNTimes - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $0046 call CopyBytes ld a, EGG_TICKET diff --git a/engine/engine_flags.asm b/engine/engine_flags.asm index 11414438e..34f26c87c 100644 --- a/engine/engine_flags.asm +++ b/engine/engine_flags.asm @@ -9,13 +9,13 @@ dwb $d957, %00001000 ; expn card dwb $d957, %10000000 ; on/off - ; DaycareMan, %10000000 ; daycare 1 on - dwb DaycareMan, %01000000 ; monster 1 and 2 are compatible - ; DaycareMan, %00100000 ; egg is ready - dwb DaycareMan, %00000001 ; monster 1 in daycare + ; wDaycareMan, %10000000 ; daycare 1 on + dwb wDaycareMan, %01000000 ; monster 1 and 2 are compatible + ; wDaycareMan, %00100000 ; egg is ready + dwb wDaycareMan, %00000001 ; monster 1 in daycare - ; DaycareLady, %10000000 = daycare 2 on - dwb DaycareLady, %00000001 ; monster 2 in daycare + ; wDaycareLady, %10000000 = daycare 2 on + dwb wDaycareLady, %00000001 ; monster 2 in daycare dwb $d854, %00000001 ; mom saving money ; $8 dwb $d854, %10000000 ; dst diff --git a/engine/scripting.asm b/engine/scripting.asm index 43af00669..756192a0d 100644 --- a/engine/scripting.asm +++ b/engine/scripting.asm @@ -1531,8 +1531,7 @@ Script_startbattle: ; 0x97436 ; script command 0x5f call Function2879 - ld a, PREDEF_START_BATTLE - call Predef + predef StartBattle ld a, [$d0ee] and $3f ld [ScriptVar], a @@ -1545,7 +1544,7 @@ Script_catchtutorial: ; 0x97447 ; byte (SingleByteParam) call GetScriptByte - ld [$d230], a + ld [BattleType], a call Function2879 callba Function4e554 jp Script_reloadmap @@ -1573,8 +1572,8 @@ Script_returnafterbattle: ; 0x97459 ld a, [$d0ee] bit 7, a jr z, .asm_9748e ; 0x97481 $b - ld b, $24 - ld de, $4255 + ld b, BANK(UnknownScript_0x90255) + ld de, UnknownScript_0x90255 callba Function97c4f .asm_9748e jp Script_reloadmap @@ -2659,7 +2658,7 @@ Script_giveegg: ; 0x97968 ld [CurPartySpecies], a call GetScriptByte ld [CurPartyLevel], a - callba Functiondf8c + callba GiveEgg ret nc ld a, $2 ld [ScriptVar], a diff --git a/event/dratini.asm b/event/dratini.asm index bf8ae2d57..1845673c8 100644 --- a/event/dratini.asm +++ b/event/dratini.asm @@ -51,8 +51,8 @@ SpecialDratini: ; 0x8b170 ; get the PP of the new move dec a - ld hl, Moves + PlayerMovePP - PlayerMoveStruct - ld bc, Move2 - Move1 + ld hl, Moves + MOVE_PP + ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte diff --git a/event/name_rater.asm b/event/name_rater.asm index 3f2bf3912..d22ece2b5 100644 --- a/event/name_rater.asm +++ b/event/name_rater.asm @@ -34,7 +34,7 @@ NameRater: ; fb6ed call Functionfb7d3 ld hl, UnknownText_0xfb837 jr c, .asm_fb76c - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld bc, $000b ld a, [CurPartyMon] call AddNTimes @@ -70,12 +70,12 @@ NameRater: ; fb6ed ; fb78a Functionfb78a: ; fb78a - ld hl, PartyMon1OT - ld bc, $000b + ld hl, PartyMonOT + ld bc, NAME_LENGTH ld a, [CurPartyMon] call AddNTimes ld de, PlayerName - ld c, $b + ld c, NAME_LENGTH call .asm_fb7b1 jr c, .asm_fb7bc ld hl, PartyMon1ID @@ -122,7 +122,7 @@ Functionfb7be: ; fb7be ; fb7d3 Functionfb7d3: ; fb7d3 - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld bc, $000b ld a, [CurPartyMon] call AddNTimes diff --git a/event/poke_seer.asm b/event/poke_seer.asm index f49e8ce07..13b2ddbeb 100644 --- a/event/poke_seer.asm +++ b/event/poke_seer.asm @@ -139,7 +139,7 @@ ReadCaughtData: ; 4f134 GetCaughtName: ; 4f176 ld a, [CurPartyMon] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld bc, PKMN_NAME_LENGTH call AddNTimes ld de, $d003 @@ -258,8 +258,8 @@ GetCaughtLocation: ; 4f20a GetCaughtOT: ; 4f242 ld a, [CurPartyMon] - ld hl, PartyMon1OT - ld bc, $000b + ld hl, PartyMonOT + ld bc, NAME_LENGTH call AddNTimes ld de, $d02a ld bc, $000b diff --git a/gfx/pics/animation.asm b/gfx/pics/animation.asm index 6d79ff433..aefff149b 100644 --- a/gfx/pics/animation.asm +++ b/gfx/pics/animation.asm @@ -1007,8 +1007,7 @@ Functiond066e: ; d066e push bc push hl ld de, VTiles2 - ld a, $3e - call Predef + predef Function5108b pop hl pop bc ld d, $0 @@ -753,15 +753,14 @@ GetSGBLayout:: ; 3340 ld a, [hCGB] and a - jr nz, .dosgb + jr nz, .sgb ld a, [hSGB] and a ret z -.dosgb - ld a, $31 ; LoadSGBLayout - jp Predef +.sgb + predef_jump Function864c ; LoadSGBLayout ; 334e @@ -776,7 +775,7 @@ SetHPPal:: ; 334e GetHPPal:: ; 3353 ; Get palette for hp bar pixel length e in d. - ld d, 0 ; green + ld d, HP_GREEN ld a, e cp 24 ret nc @@ -1583,7 +1582,7 @@ Function36f5:: ; 36f5 Function3718:: ; 3718 ld a, [BattleType] - cp $1 + cp BATTLETYPE_CANLOSE jr .asm_3724 ld hl, WalkingTile @@ -1700,14 +1699,12 @@ Function378b:: ; 378b jr c, .asm_37ad push hl ld de, VTiles2 - ld a, $3c - call Predef + predef GetFrontpic pop hl xor a ld [$ffad], a ld bc, $0707 - ld a, $13 - call Predef + predef FillBox xor a ld [$c2c6], a ret diff --git a/home/battle.asm b/home/battle.asm index fc670d927..d1f59ad81 100644 --- a/home/battle.asm +++ b/home/battle.asm @@ -130,8 +130,8 @@ RefreshBattleHuds:: ; 39c9 ; 39d4 UpdateBattleHuds:: ; 39d4 - callba Function3df48 - callba Function3e036 + callba UpdatePlayerHUD + callba UpdateEnemyHUD ret ; 39e1 @@ -139,12 +139,12 @@ UpdateBattleHuds:: ; 39d4 GetBattleVar:: ; 39e1 ; Preserves hl. push hl - call _GetBattleVar + call GetBattleVarAddr pop hl ret ; 39e7 -_GetBattleVar:: ; 39e7 +GetBattleVarAddr:: ; 39e7 ; Get variable from pair a, depending on whose turn it is. ; There are 21 variable pairs. @@ -250,10 +250,10 @@ _GetBattleVar:: ; 39e7 dw PlayerSubStatus4, EnemySubStatus4 dw PlayerSubStatus5, EnemySubStatus5 dw BattleMonStatus, EnemyMonStatus - dw PlayerMoveAnimation, EnemyMoveAnimation - dw PlayerMoveEffect, EnemyMoveEffect - dw PlayerMovePower, EnemyMovePower - dw PlayerMoveType, EnemyMoveType + dw wPlayerMoveStruct + MOVE_ANIM, wEnemyMoveStruct + MOVE_ANIM + dw wPlayerMoveStruct + MOVE_EFFECT, wEnemyMoveStruct + MOVE_EFFECT + dw wPlayerMoveStruct + MOVE_POWER, wEnemyMoveStruct + MOVE_POWER + dw wPlayerMoveStruct + MOVE_TYPE, wEnemyMoveStruct + MOVE_TYPE dw CurPlayerMove, CurEnemyMove dw LastEnemyCounterMove, LastPlayerCounterMove dw LastPlayerMove, LastEnemyMove diff --git a/home/init.asm b/home/init.asm index 3d83a03cf..20e043180 100644 --- a/home/init.asm +++ b/home/init.asm @@ -167,8 +167,7 @@ Init:: ; 17d call DelayFrame - ld a, $30 - call Predef + predef Function9853 call SoundRestart xor a diff --git a/home/map.asm b/home/map.asm index 77a53b8d2..2291faa29 100644 --- a/home/map.asm +++ b/home/map.asm @@ -120,7 +120,7 @@ Function2198:: ; 2198 ld e, a ld a, [$d195] ld d, a - ld hl, EnemyMoveAnimation + ld hl, $c608 ld b, $5 .asm_21a5 diff --git a/home/pokedex_flags.asm b/home/pokedex_flags.asm index 0ad13b497..ac59ffeb8 100644 --- a/home/pokedex_flags.asm +++ b/home/pokedex_flags.asm @@ -31,8 +31,7 @@ CheckSeenMon:: ; 339b PokedexFlagAction:: ; 33a1 ld d, 0 - ld a, PREDEF_FLAG - call Predef + predef FlagPredef ld a, c and a ret diff --git a/items/item_descriptions.asm b/items/item_descriptions.asm index a3c39a1e6..ee54c526d 100644 --- a/items/item_descriptions.asm +++ b/items/item_descriptions.asm @@ -8,8 +8,7 @@ GetItemDescription: ; 0x1c8955 pop hl ld a, [$d265] ld [$cf60], a - ld a, $11 - call Predef + predef PrintMoveDesc ret .nomovedesc diff --git a/items/item_effects.asm b/items/item_effects.asm index 51994ca1f..617fc1618 100644 --- a/items/item_effects.asm +++ b/items/item_effects.asm @@ -238,10 +238,10 @@ ParkBall: ; e8a2 ld a, [EnemyMonCatchRate] ld b, a ld a, [BattleType] - cp $3 + cp BATTLETYPE_TUTORIAL jp z, .asm_e99c ld a, [CurItem] - cp $1 + cp MASTER_BALL jp z, .asm_e99c ld a, [CurItem] ld c, a @@ -274,7 +274,7 @@ ParkBall: ; e8a2 ld a, b ld [$ffb6], a - ld hl, EnemyMonHPHi + ld hl, EnemyMonHP ld b, [hl] inc hl ld c, [hl] @@ -366,7 +366,7 @@ ParkBall: ; e8a2 .asm_e98e ld b, a - ld [MagikarpLength], a + ld [Buffer1], a call Random cp b @@ -399,8 +399,7 @@ ParkBall: ; e8a2 ld [hBattleTurn], a ld [Buffer2], a ld [$cfca], a - ld a, $37 - call Predef + predef PlayBattleAnim ld a, [$c64e] and a @@ -449,9 +448,9 @@ ParkBall: ; e8a2 .asm_ea1a set 3, [hl] ld hl, $c6f2 - ld a, [EnemyMonAtkDefDV] + ld a, [EnemyMonDVs] ld [hli], a - ld a, [EnemyMonSpdSpclDV] + ld a, [EnemyMonDVs + 1] ld [hl], a .asm_ea27 @@ -478,13 +477,13 @@ ParkBall: ; e8a2 bit 3, [hl] jr nz, .asm_ea67 ld hl, $c735 - ld de, EnemyMonMove1 - ld bc, $0004 + ld de, EnemyMonMoves + ld bc, NUM_MOVES call CopyBytes ld hl, $c739 - ld de, EnemyMonPPMove1 - ld bc, $0004 + ld de, EnemyMonPP + ld bc, NUM_MOVES call CopyBytes .asm_ea67 @@ -525,8 +524,7 @@ ParkBall: ; e8a2 ld a, [EnemyMonSpecies] ld [$d265], a - ld a, $43 - call Predef + predef Functionfb877 .asm_eab7 ld a, [BattleType] @@ -546,8 +544,7 @@ ParkBall: ; e8a2 ld [MonType], a call ClearSprites - ld a, $6 - call Predef + predef Functiond88c callba Function4db49 @@ -579,7 +576,7 @@ ParkBall: ; e8a2 ld a, [PartyCount] dec a ld [CurPartyMon], a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld bc, PKMN_NAME_LENGTH call AddNTimes @@ -604,8 +601,7 @@ ParkBall: ; e8a2 .asm_eb3c call ClearSprites - ld a, $9 - call Predef + predef Functionde6e callba Function4db83 @@ -1265,8 +1261,7 @@ Functionee8c: ; ee8c ld a, PartyMon1HPExp - 1 - PartyMon1 call GetPartyParamLocation ld b, $1 - ld a, $c - jp Predef + predef_jump Functione167 ; ee9f Functionee9f: ; ee9f @@ -1316,11 +1311,11 @@ Functioneed9: ; eed9 ; eeeb Table_eeeb: ; eeeb - db HP_UP, PartyMon1HPExp - PartyMon1StatExp - db PROTEIN, PartyMon1AtkExp - PartyMon1StatExp - db IRON, PartyMon1DefExp - PartyMon1StatExp - db CARBOS, PartyMon1SpdExp - PartyMon1StatExp - db CALCIUM, PartyMon1SpclExp - PartyMon1StatExp + db HP_UP, PartyMon1HPExp - PartyMon1StatExp + db PROTEIN, PartyMon1AtkExp - PartyMon1StatExp + db IRON, PartyMon1DefExp - PartyMon1StatExp + db CARBOS, PartyMon1SpdExp - PartyMon1StatExp + db CALCIUM, PartyMon1SpcExp - PartyMon1StatExp ; eef5 @@ -1334,7 +1329,7 @@ Functioneef5: ; eef5 ld [CurPartyLevel], a call GetBaseData ld a, [CurPartyMon] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call GetNick ret ; 0xef14 @@ -1405,8 +1400,7 @@ RareCandy: ; ef14 xor a ld [MonType], a - ld a, $1f - call Predef + predef Function5084a hlcoord 9, 0 ld b, 10 @@ -1415,8 +1409,7 @@ RareCandy: ; ef14 hlcoord 11, 1 ld bc, $0004 - ld a, $28 - call Predef + predef Function50b7b call Functiona80 @@ -1424,8 +1417,7 @@ RareCandy: ; ef14 ld [MonType], a ld a, [CurPartySpecies] ld [$d265], a - ld a, $1a - call Predef + predef LearnLevelMoves xor a ld [$d1e9], a @@ -1654,8 +1646,7 @@ Functionf0d6: ; f0d6 ld d, 0 ld hl, $c6fc ld b, CHECK_FLAG - ld a, PREDEF_FLAG - call Predef + predef FlagPredef ld a, c and a jr z, .asm_f104 @@ -1664,8 +1655,7 @@ Functionf0d6: ; f0d6 ld c, a ld hl, $c664 ld b, SET_FLAG - ld a, PREDEF_FLAG - call Predef + predef FlagPredef .asm_f104 xor a @@ -1834,8 +1824,7 @@ Functionf1db: ; f1db (3:71db) call AddNTimes ld a, $2 ld [$d10a], a - ld a, $b - jp Predef + predef_jump Functionc6e0 ; known jump sources: ee11 (3:6e11), ee3f (3:6e3f), ef16 (3:6f16), efaf (3:6faf), efce (3:6fce), f0ab (3:70ab), f0ca (3:70ca), f12a (3:712a), f1ab (3:71ab), f5c7 (3:75c7) Functionf1f9: ; f1f9 (3:71f9) @@ -2633,11 +2622,11 @@ Functionf652: ; f652 .asm_f677 ld a, [CurPartyMon] - ld hl, PartyMon1Move1 - ld bc, $0030 + ld hl, PartyMon1Moves + ld bc, PartyMon2 - PartyMon1 call AddNTimes - ld de, BattleMonMove1 - ld b, $4 + ld de, BattleMonMoves + ld b, NUM_MOVES .asm_f688 ld a, [de] and a @@ -2647,13 +2636,10 @@ Functionf652: ; f652 push hl push de push bc + rept NUM_MOVES + 2 ; BattleMonPP - BattleMonMoves inc de - inc de - inc de - inc de - inc de - inc de - ld bc, $0015 + endr + ld bc, PartyMon1PP - PartyMon1Moves add hl, bc ld a, [hl] ld [de], a @@ -2682,15 +2668,16 @@ Functionf6af: ; f6af ld hl, $cfa9 ld [hli], a ld [hl], a - ld b, $4 + ld b, NUM_MOVES .asm_f6b7 push bc - ld hl, PartyMon1Move1 - ld bc, $0030 + ld hl, PartyMon1Moves + ld bc, PartyMon2 - PartyMon1 call Functionf963 ld a, [hl] and a jr z, .asm_f6ce + call Functionf6e8 jr z, .asm_f6ce ld hl, $cfaa @@ -2721,7 +2708,7 @@ Functionf6e8: ; f6e8 ld [MonType], a call Functionf8ec ld hl, PartyMon1PP - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call Functionf963 ld a, [$d265] ld b, a @@ -2739,6 +2726,7 @@ Functionf6e8: ; f6e8 ld c, 5 cp MYSTERYBERRY jr z, .asm_f715 + ld c, 10 .asm_f715 @@ -2972,8 +2960,7 @@ Functionf7a0: ; f7a0 ld [$c689], a ld [hBattleTurn], a ld [$cfca], a - ld a, $37 - call Predef + predef PlayBattleAnim ld hl, BlockedTheBallText call PrintText ld hl, DontBeAThiefText @@ -2985,7 +2972,7 @@ WontHaveAnyEffect_NotUsedMessage: ; f7ca ld hl, WontHaveAnyEffectText call PrintText -; Item wasn't used. + ; Item wasn't used. ld a, $2 ld [$d0ec], a ret @@ -3000,7 +2987,7 @@ Ball_BoxIsFullMessage: ; f7dc ld hl, Ball_BoxIsFullText call PrintText -; Item wasn't used. + ; Item wasn't used. ld a, $2 ld [$d0ec], a ret @@ -3116,21 +3103,20 @@ GotOffTheItemText: ; 0xf847 Functionf84c: ; f84c - ld a, $2 + ld a, PartyMon1Moves - PartyMon1 call GetPartyParamLocation push hl - ld de, MagikarpLength - ld a, $5 - call Predef + ld de, Buffer1 + predef FillPP pop hl - ld bc, $0015 + ld bc, PartyMon1PP - PartyMon1Moves add hl, bc - ld de, MagikarpLength - ld b, $0 + ld de, Buffer1 + ld b, 0 .asm_f864 inc b ld a, b - cp $5 + cp NUM_MOVES + 1 ret z ld a, [$d265] dec a @@ -3157,14 +3143,14 @@ Functionf84c: ; f84c Functionf881: ; f881 push bc ld a, [de] - ld [$ffb6], a + ld [hDividend + 3], a xor a - ld [hProduct], a - ld [hMultiplicand], a - ld [$ffb5], a - ld a, $5 - ld [hMultiplier], a - ld b, $4 + ld [hDividend], a + ld [hDividend + 1], a + ld [hDividend + 2], a + ld a, 5 + ld [hDivisor], a + ld b, 4 call Divide ld a, [hl] ld b, a @@ -3197,17 +3183,17 @@ Functionf881: ; f881 ; f8b9 Functionf8b9: ; f8b9 - ld a, $17 + ld a, PartyMon1PP - PartyMon1 call GetPartyParamLocation push hl - ld a, $2 + ld a, PartyMon1Moves - PartyMon1 call GetPartyParamLocation pop de xor a ld [$cfa9], a ld [MonType], a - ld c, $4 -.asm_f8ce + ld c, NUM_MOVES +.loop ld a, [hli] and a ret z @@ -3228,30 +3214,36 @@ Functionf8b9: ; f8b9 inc [hl] pop hl dec c - jr nz, .asm_f8ce + jr nz, .loop ret ; f8ec Functionf8ec: ; f8ec - ld a, [StringBuffer1] + ld a, [StringBuffer1 + 0] push af - ld a, [$d074] + ld a, [StringBuffer1 + 1] push af + ld a, [MonType] and a + ld hl, PartyMon1Moves ld bc, PartyMon2 - PartyMon1 jr z, .asm_f91a + ld hl, OTPartyMon1Moves dec a jr z, .asm_f91a + ld hl, TempMonMoves dec a jr z, .asm_f915 + ld hl, TempMonMoves dec a jr z, .asm_f915 + ld hl, BattleMonMoves .asm_f915 @@ -3264,28 +3256,30 @@ Functionf8ec: ; f8ec .asm_f91d ld a, [hl] dec a + push hl - ld hl, $5b00 - ld bc, $0007 + ld hl, Moves + MOVE_PP + ld bc, MOVE_LENGTH call AddNTimes - ld a, $10 + ld a, BANK(Moves) call GetFarByte ld b, a ld de, StringBuffer1 ld [de], a pop hl + push bc - ld bc, $0015 + ld bc, PartyMon1PP - PartyMon1Moves ld a, [MonType] cp WILDMON jr nz, .asm_f942 - ld bc, $0006 - + ld bc, EnemyMonPP - EnemyMonMoves .asm_f942 add hl, bc ld a, [hl] and $c0 pop bc + or b ld hl, $d074 ld [hl], a @@ -3296,10 +3290,11 @@ Functionf8ec: ; f8ec ld a, [hl] and $3f ld [$d265], a + pop af - ld [$d074], a + ld [StringBuffer1 + 1], a pop af - ld [StringBuffer1], a + ld [StringBuffer1 + 0], a ret ; f963 @@ -3310,7 +3305,7 @@ Functionf963: ; f963 Functionf969: ; f969 ld a, [$cfa9] ld c, a - ld b, $0 + ld b, 0 add hl, bc ret ; f971 diff --git a/macros.asm b/macros.asm index aa8876055..5973de043 100644 --- a/macros.asm +++ b/macros.asm @@ -13,6 +13,8 @@ page EQUS "db $50," ; Start a new Pokedex page. dex EQUS "db $e8, $50" ; End a Pokedex entry. +percent EQUS "* $ff / 100" + ; macros require rst vectors to be defined FarCall EQU $08 Bankswitch EQU $10 @@ -118,15 +120,15 @@ B_ EQU 12 bccoord: MACRO - ld bc, TileMap + SCREEN_WIDTH * \2 + \1 + ld bc, TileMap + SCREEN_WIDTH * (\2) + (\1) ENDM decoord: MACRO - ld de, TileMap + SCREEN_WIDTH * \2 + \1 + ld de, TileMap + SCREEN_WIDTH * (\2) + (\1) ENDM hlcoord: MACRO - ld hl, TileMap + SCREEN_WIDTH * \2 + \1 + ld hl, TileMap + SCREEN_WIDTH * (\2) + (\1) ENDM @@ -194,3 +196,25 @@ x = x + \1 * $40000 endr ENDM + +add_predef: MACRO +\1Predef:: + dw \1 + db BANK(\1) +ENDM + +predef_id: MACRO +; Some functions load the predef id +; without immediately calling Predef. + ld a, (\1Predef - PredefPointers) / 3 +ENDM + +predef: MACRO + predef_id \1 + call Predef +ENDM + +predef_jump: MACRO + predef_id \1 + jp Predef +ENDM @@ -17,8 +17,7 @@ Function4000:: ; 4000 jr .asm_4017 .asm_4012 - ld a, $10 - call Predef + predef Function28eef .asm_4017 hlcoord 4, 11 @@ -3891,7 +3890,7 @@ Function5bae: ; 5bae ld a, 1 call GetSRAMBank - ld hl, BoxCount + ld hl, sBoxCount call Function5ca1 call CloseSRAM @@ -3908,16 +3907,16 @@ Function5bae: ; 5bae call Function5ca1 xor a - ld [RoamMon1Species], a - ld [RoamMon2Species], a - ld [RoamMon3Species], a + ld [wRoamMon1Species], a + ld [wRoamMon2Species], a + ld [wRoamMon3Species], a ld a, -1 - ld [RoamMon1MapGroup], a - ld [RoamMon2MapGroup], a - ld [RoamMon3MapGroup], a - ld [RoamMon1MapNumber], a - ld [RoamMon2MapNumber], a - ld [RoamMon3MapNumber], a + ld [wRoamMon1MapGroup], a + ld [wRoamMon2MapGroup], a + ld [wRoamMon3MapGroup], a + ld [wRoamMon1MapNumber], a + ld [wRoamMon2MapNumber], a + ld [wRoamMon3MapNumber], a ld a, 0 call GetSRAMBank @@ -3977,8 +3976,8 @@ Function5ca1: ; 5ca1 ; 5ca6 Function5ca6: ; 5ca6 - ld hl, Box1Name - ld c, $0 + ld hl, wBoxNames + ld c, 0 .asm_5cab push hl ld de, .Box @@ -3986,22 +3985,22 @@ Function5ca6: ; 5ca6 dec hl ld a, c inc a - cp $a + cp 10 jr c, .asm_5cbe - sub $a - ld [hl], $f7 + sub 10 + ld [hl], "1" inc hl .asm_5cbe - add $f6 + add "0" ld [hli], a - ld [hl], $50 + ld [hl], "@" pop hl - ld de, $0009 + ld de, 9 add hl, de inc c ld a, c - cp $e + cp NUM_BOXES jr c, .asm_5cab ret @@ -4041,18 +4040,14 @@ Function5ce9: ; 5ce9 ld de, GreensName .Copy - ld bc, $000b + ld bc, NAME_LENGTH call CopyBytes ret -.Rival - db "???@" -.Red - db "RED@" -.Green - db "GREEN@" -.Mom - db "MOM@" +.Rival db "???@" +.Red db "RED@" +.Green db "GREEN@" +.Mom db "MOM@" ; 5d23 Function5d23: ; 5d23 @@ -4677,27 +4672,24 @@ Function6182: ; 6182 Function619c: ; 619c ld de, VTiles2 - callba Function5120d + callba GetTrainerPic xor a ld [$ffad], a hlcoord 6, 4 ld bc, $0707 - ld a, $13 - call Predef + predef FillBox ret ; 61b4 Function61b4: ; 61b4 ld de, VTiles2 ld c, $31 - ld a, $40 - call Predef + predef DecompressPredef xor a ld [$ffad], a hlcoord 6, 4 ld bc, $0707 - ld a, $13 - call Predef + predef FillBox ret ; 61cd @@ -5255,111 +5247,119 @@ Function64db: ; 64db ret ; 6508 -Function6508: ; 6508 +LearnMove: ; 6508 call Function309d ld a, [CurPartyMon] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call GetNick ld hl, StringBuffer1 ld de, $d050 - ld bc, $000b + ld bc, PKMN_NAME_LENGTH call CopyBytes -Function6520: ; 6520 - ld hl, PartyMon1Move1 - ld bc, $0030 +.loop + ld hl, PartyMon1Moves + ld bc, PartyMon2 - PartyMon1 ld a, [CurPartyMon] call AddNTimes ld d, h ld e, l - ld b, $4 -.asm_6530 + ld b, NUM_MOVES +.next ld a, [hl] and a - jr z, .asm_6564 + jr z, .learn inc hl dec b - jr nz, .asm_6530 + jr nz, .next + push de call Function65d3 pop de - jp c, Function65b5 + jp c, .cancel + push hl push de ld [$d265], a + ld b, a ld a, [IsInBattle] and a - jr z, .asm_6559 + jr z, .not_disabled ld a, [DisabledMove] cp b - jr nz, .asm_6559 + jr nz, .not_disabled xor a ld [DisabledMove], a ld [PlayerDisableCount], a +.not_disabled -.asm_6559 call GetMoveName ld hl, UnknownText_0x6684 call PrintText pop de pop hl -.asm_6564 +.learn ld a, [$d262] ld [hl], a - ld bc, $0015 + ld bc, PartyMon1PP - PartyMon1Moves add hl, bc + push hl push de dec a ld hl, Moves + MOVE_PP - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte pop de pop hl + ld [hl], a + ld a, [IsInBattle] and a - jp z, Function65ca + jp z, .learned + ld a, [CurPartyMon] ld b, a ld a, [CurBattleMon] cp b - jp nz, Function65ca + jp nz, .learned + ld a, [PlayerSubStatus5] - bit 3, a - jp nz, Function65ca + bit SUBSTATUS_TRANSFORMED, a + jp nz, .learned + ld h, d ld l, e - ld de, BattleMonMove1 - ld bc, $0004 + ld de, BattleMonMoves + ld bc, NUM_MOVES call CopyBytes - ld bc, $0011 + ld bc, PartyMon1PP - (PartyMon1Moves + NUM_MOVES) add hl, bc - ld de, BattleMonPPMove1 - ld bc, $0004 + ld de, BattleMonPP + ld bc, NUM_MOVES call CopyBytes - jp Function65ca -; 65b5 + jp .learned -Function65b5: ; 65b5 +.cancel ld hl, UnknownText_0x6675 call PrintText call YesNoBox - jp c, Function6520 + jp c, .loop + ld hl, UnknownText_0x667a call PrintText - ld b, $0 + ld b, 0 ret -; 65ca -Function65ca: ; 65ca +.learned ld hl, UnknownText_0x666b call PrintText - ld b, $1 + ld b, 1 ret ; 65d3 @@ -5370,11 +5370,11 @@ Function65d3: ; 65d3 call YesNoBox pop hl ret c - ld bc, $fffc + ld bc, -NUM_MOVES add hl, bc push hl ld de, $d25e - ld bc, $0004 + ld bc, NUM_MOVES call CopyBytes pop hl .asm_65ee @@ -5382,14 +5382,13 @@ Function65d3: ; 65d3 ld hl, UnknownText_0x6670 call PrintText hlcoord 5, 2 - ld b, $8 - ld c, $d + ld b, NUM_MOVES * 2 + ld c, MOVE_NAME_LENGTH call TextBox - hlcoord 7, 4 - ld a, $28 + hlcoord 5 + 2, 2 + 2 + ld a, SCREEN_WIDTH * 2 ld [Buffer1], a - ld a, $20 - call Predef + predef ListMoves ld a, $4 ld [$cfa1], a ld a, $6 @@ -5420,7 +5419,7 @@ Function65d3: ; 65d3 ld a, [$cfa9] dec a ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [hl] push af @@ -5474,9 +5473,6 @@ UnknownText_0x667f: ; 667f UnknownText_0x6684: ; 6684 text_jump UnknownText_0x1c5740 start_asm -; 6689 - -; 6689 push de ld de, SFX_SWITCH_POKEMON call PlaySFX @@ -6457,8 +6453,8 @@ ChangeHappiness: ; 71c2 db +5, +3, +2 db +5, +3, +2 db +1, +1, +0 - db +3, +2, +1 - db +1, +1, +0 + db +3, +2, +1 ; Battled a Gym Leader + db +1, +1, +0 ; Learned a move db -1, -1, -1 db -5, -5, -10 db -5, -5, -10 @@ -6515,7 +6511,7 @@ StepHappiness:: ; 725a DaycareStep:: ; 7282 - ld a, [DaycareMan] + ld a, [wDaycareMan] bit 0, a jr z, .asm_72a4 @@ -6537,7 +6533,7 @@ DaycareStep:: ; 7282 ld [hl], a .asm_72a4 - ld a, [DaycareLady] + ld a, [wDaycareLady] bit 0, a jr z, .asm_72c6 @@ -6559,10 +6555,10 @@ DaycareStep:: ; 7282 ld [hl], a .asm_72c6 - ld hl, DaycareMan + ld hl, wDaycareMan bit 5, [hl] ; egg ret z - ld hl, StepsToEgg + ld hl, wStepsToEgg dec [hl] ret nz @@ -6587,7 +6583,7 @@ DaycareStep:: ; 7282 call Random cp b ret nc - ld hl, DaycareMan + ld hl, wDaycareMan res 5, [hl] set 6, [hl] ret @@ -6606,8 +6602,7 @@ SpecialGiveShuckle: ; 7305 ld a, 15 ld [CurPartyLevel], a - ld a, PREDEF_ADDPARTYMON - call Predef + predef Functiond88c jr nc, .NotGiven ; Caught data. @@ -6636,7 +6631,7 @@ SpecialGiveShuckle: ; 7305 ; Nickname. ld a, [PartyCount] dec a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call SkipNames ld de, SpecialShuckleNick call CopyName2 @@ -6644,7 +6639,7 @@ SpecialGiveShuckle: ; 7305 ; OT. ld a, [PartyCount] dec a - ld hl, PartyMon1OT + ld hl, PartyMonOT call SkipNames ld de, SpecialShuckleOT call CopyName2 @@ -6692,7 +6687,7 @@ SpecialReturnShuckle: ; 737e ; OT ld a, [CurPartyMon] - ld hl, PartyMon1OT + ld hl, PartyMonOT call SkipNames ld de, SpecialShuckleOT .CheckOT @@ -6828,7 +6823,8 @@ Function746e: ; 746e jp CopyBytes ; 747a -Function747a: ; 747a +Predef1: ; 747a +; not used ret ; 747b @@ -6842,11 +6838,11 @@ Function8000: ; 8000 call WhiteBGMap call ClearSprites ld hl, TileMap - ld bc, $0168 + ld bc, TileMapEnd - TileMap ld a, " " call ByteFill ld hl, AttrMap - ld bc, $0168 + ld bc, AttrMapEnd - AttrMap ld a, $7 call ByteFill call Function3200 @@ -7754,84 +7750,84 @@ GetPredefPointer:: ; 854b ret ; 856b -PredefPointers: ; 856b +PredefPointers:: ; 856b ; $4b Predef pointers ; address, bank - dwb Function6508, BANK(Function6508) ; $0 - dwb Function747a, BANK(Function747a) - dwb Functionc658, BANK(Functionc658) - dwb FlagPredef, BANK(FlagPredef) - dwb Functionc699, BANK(Functionc699) - dwb FillPP, BANK(FillPP) - dwb Functiond88c, BANK(Functiond88c) - dwb Functionda96, BANK(Functionda96) - dwb Functiondb3f, BANK(Functiondb3f) ; $8 - dwb Functionde6e, BANK(Functionde6e) - dwb Functiondf8c, BANK(Functiondf8c) - dwb Functionc6e0, BANK(Functionc6e0) - dwb Functione167, BANK(Functione167) - dwb Functione17b, BANK(Functione17b) - dwb CanLearnTMHMMove, BANK(CanLearnTMHMMove) - dwb GetTMHMMove, BANK(GetTMHMMove) - dwb Function28eef, BANK(Function28eef) ; $ 10 - dwb PrintMoveDesc, BANK(PrintMoveDesc) - dwb Function3df48, BANK(Function3df48) ; UpdatePlayerHUD - dwb FillBox, BANK(FillBox) - dwb Function3d873, BANK(Function3d873) - dwb Function3e036, BANK(Function3e036) ; UpdateEnemyHUD - dwb StartBattle, BANK(StartBattle) - dwb FillInExpBar, BANK(FillInExpBar) - dwb Function3f43d, BANK(Function3f43d) ; $18 - dwb Function3f47c, BANK(Function3f47c) - dwb Function42487, BANK(Function42487) - dwb FillMoves, BANK(FillMoves) - dwb Function421e6, BANK(Function421e6) - dwb Function28f63, BANK(Function28f63) - dwb Function28f24, BANK(Function28f24) - dwb Function5084a, BANK(Function5084a) - dwb Function50d6f, BANK(Function50d6f) ; $20 - dwb Function50d2e, BANK(Function50d2e) - dwb Function50cdb, BANK(Function50cdb) - dwb Function50c50, BANK(Function50c50) - dwb GetGender, BANK(GetGender) - dwb StatsScreenInit, BANK(StatsScreenInit) - dwb DrawPlayerHP, BANK(DrawPlayerHP) - dwb DrawEnemyHP, BANK(DrawEnemyHP) - dwb Function50b7b, BANK(Function50b7b) ; $28 - dwb GetTypeName, BANK(GetTypeName) - dwb PrintMoveType, BANK(PrintMoveType) - dwb PrintType, BANK(PrintType) - dwb PrintMonTypes, BANK(PrintMonTypes) - dwb GetUnownLetter, BANK(GetUnownLetter) - dwb Functioncbcdd, BANK(Functioncbcdd) - dwb Predef2F, BANK(Predef2F) - dwb Function9853, BANK(Function9853) ; $30 - dwb Function864c, BANK(Function864c) - dwb Function91d11, BANK(Function91d11) - dwb CheckContestMon, BANK(CheckContestMon) - dwb Function8c20f, BANK(Function8c20f) - dwb Function8c000, BANK(Function8c000) - dwb Function8c000, BANK(Function8c000) - dwb PlayBattleAnim, BANK(PlayBattleAnim) - dwb Predef38, BANK(Predef38) ; $38 - dwb Predef39, BANK(Predef39) - dwb Functionfd1d0, BANK(Functionfd1d0) - dwb PartyMonItemName, BANK(PartyMonItemName) - dwb Function51077, BANK(Function51077) - dwb Function5116c, BANK(Function5116c) - dwb Function5108b, BANK(Function5108b) - dwb Function5120d, BANK(Function5120d) - dwb DecompressPredef, BANK(DecompressPredef) ; $40 - dwb Function347d3, BANK(Function347d3) - dwb Functionfb908, BANK(Functionfb908) - dwb Functionfb877, BANK(Functionfb877) - dwb Functiond0000, BANK(Functiond0000) - dwb Function50d0a, BANK(Function50d0a) - dwb Functiond00a3, BANK(Functiond00a3) - dwb Functiond008e, BANK(Functiond008e) - dwb Functiond0669, BANK(Functiond0669) ; $48 - dwb Functiond066e, BANK(Functiond066e) + add_predef LearnMove ; $0 + add_predef Predef1 + add_predef Functionc658 + add_predef FlagPredef + add_predef Functionc699 + add_predef FillPP + add_predef Functiond88c + add_predef Functionda96 + add_predef Functiondb3f ; $8 + add_predef Functionde6e + add_predef GiveEgg + add_predef Functionc6e0 + add_predef Functione167 + add_predef Functione17b + add_predef CanLearnTMHMMove + add_predef GetTMHMMove + add_predef Function28eef ; $ 10 + add_predef PrintMoveDesc + add_predef UpdatePlayerHUD + add_predef FillBox + add_predef Function3d873 + add_predef UpdateEnemyHUD + add_predef StartBattle + add_predef FillInExpBar + add_predef Function3f43d ; $18 + add_predef Function3f47c + add_predef LearnLevelMoves + add_predef FillMoves + add_predef Function421e6 + add_predef Function28f63 + add_predef Function28f24 + add_predef Function5084a + add_predef ListMoves ; $20 + add_predef Function50d2e + add_predef Function50cdb + add_predef Function50c50 + add_predef GetGender + add_predef StatsScreenInit + add_predef DrawPlayerHP + add_predef DrawEnemyHP + add_predef Function50b7b ; $28 + add_predef GetTypeName + add_predef PrintMoveType + add_predef PrintType + add_predef PrintMonTypes + add_predef GetUnownLetter + add_predef Functioncbcdd + add_predef Predef2F + add_predef Function9853 ; $30 + add_predef Function864c + add_predef Function91d11 + add_predef CheckContestMon + add_predef Function8c20f + add_predef Function8c000 + add_predef Function8c000_2 + add_predef PlayBattleAnim + add_predef Predef38 ; $38 + add_predef Predef39 + add_predef Functionfd1d0 + add_predef PartyMonItemName + add_predef GetFrontpic + add_predef GetBackpic + add_predef Function5108b + add_predef GetTrainerPic + add_predef DecompressPredef ; $40 + add_predef Function347d3 + add_predef Functionfb908 + add_predef Functionfb877 + add_predef Functiond0000 + add_predef Function50d0a + add_predef Functiond00a3 + add_predef Functiond008e + add_predef Functiond0669 ; $48 + add_predef Functiond066e dbw $ff, Function2d43 ; ???? ; 864c @@ -8503,55 +8499,65 @@ SpecialTrainerHouse: ; 0xc4b9 ld [ScriptVar], a jp CloseSRAM + _PrintNum:: ; c4c7 +; Print c digits of the b-byte value at hl. +; Allows 2 to 7 digits. For 1-digit numbers, add +; the value to char "0" instead of calling PrintNum. +; Some extra flags can be given in bits 5-7 of b. + push bc + bit 5, b - jr z, .asm_c4d9 + jr z, .main bit 7, b - jr nz, .asm_c4d4 + jr nz, .bit_7 bit 6, b - jr z, .asm_c4d9 + jr z, .main -.asm_c4d4 +.bit_7 ld a, $f0 ld [hli], a res 5, b -.asm_c4d9 +.main xor a - ld [hProduct], a - ld [hMultiplicand], a + ld [$ffb3], a + ld [$ffb4], a ld [$ffb5], a ld a, b and $f - cp $1 - jr z, .asm_c501 - cp $2 - jr z, .asm_c4f8 + cp 1 + jr z, .byte + cp 2 + jr z, .word + +.long ld a, [de] - ld [hMultiplicand], a + ld [$ffb4], a inc de ld a, [de] ld [$ffb5], a inc de ld a, [de] ld [$ffb6], a - jr .asm_c504 + jr .start -.asm_c4f8 +.word ld a, [de] ld [$ffb5], a inc de ld a, [de] ld [$ffb6], a - jr .asm_c504 + jr .start -.asm_c501 +.byte ld a, [de] ld [$ffb6], a -.asm_c504 +.start push de + ld d, b ld a, c swap a @@ -8560,123 +8566,126 @@ _PrintNum:: ; c4c7 ld a, c and $f ld b, a - ld c, $0 - cp $2 - jr z, .asm_c57c - cp $3 - jr z, .asm_c56c - cp $4 - jr z, .asm_c55b - cp $5 - jr z, .asm_c54a - cp $6 - jr z, .asm_c538 - ld a, $f - ld [hMultiplier], a - ld a, $42 - ld [hMathBuffer], a - ld a, $40 + ld c, 0 + cp 2 + jr z, .two + cp 3 + jr z, .three + cp 4 + jr z, .four + cp 5 + jr z, .five + cp 6 + jr z, .six + +.seven + ld a, 1000000 / $10000 % $100 + ld [$ffb7], a + ld a, 1000000 / $100 % $100 + ld [$ffb8], a + ld a, 1000000 % $100 ld [$ffb9], a - call Functionc5cb - call PrintNumber_AdvancePointer - -.asm_c538 - ld a, $1 - ld [hMultiplier], a - ld a, $86 - ld [hMathBuffer], a - ld a, $a0 + call .PrintDigit + call .AdvancePointer + +.six + ld a, 100000 / $10000 % $100 + ld [$ffb7], a + ld a, 100000 / $100 % $100 + ld [$ffb8], a + ld a, 100000 % $100 ld [$ffb9], a - call Functionc5cb - call PrintNumber_AdvancePointer + call .PrintDigit + call .AdvancePointer -.asm_c54a +.five xor a - ld [hMultiplier], a - ld a, $27 - ld [hMathBuffer], a - ld a, $10 + ld [$ffb7], a + ld a, 10000 / $100 + ld [$ffb8], a + ld a, 10000 % $100 ld [$ffb9], a - call Functionc5cb - call PrintNumber_AdvancePointer + call .PrintDigit + call .AdvancePointer -.asm_c55b +.four xor a - ld [hMultiplier], a - ld a, $3 - ld [hMathBuffer], a - ld a, $e8 + ld [$ffb7], a + ld a, 1000 / $100 + ld [$ffb8], a + ld a, 1000 % $100 ld [$ffb9], a - call Functionc5cb - call PrintNumber_AdvancePointer + call .PrintDigit + call .AdvancePointer -.asm_c56c +.three xor a - ld [hMultiplier], a + ld [$ffb7], a xor a - ld [hMathBuffer], a - ld a, $64 + ld [$ffb8], a + ld a, 100 ld [$ffb9], a - call Functionc5cb - call PrintNumber_AdvancePointer + call .PrintDigit + call .AdvancePointer -.asm_c57c +.two dec e jr nz, .asm_c583 ld a, $f6 - ld [hProduct], a - + ld [$ffb3], a .asm_c583 - ld c, $0 + + ld c, 0 ld a, [$ffb6] -.asm_c587 - cp $a - jr c, .asm_c590 - sub $a +.mod_10 + cp 10 + jr c, .modded_10 + sub 10 inc c - jr .asm_c587 + jr .mod_10 +.modded_10 -.asm_c590 ld b, a - ld a, [hProduct] + ld a, [$ffb3] or c jr nz, .asm_c59b - call PrintNumber_PrintLeadingZero + call .PrintLeadingZero jr .asm_c5ad .asm_c59b - call Functionc5ba + call .PrintYen push af - ld a, $f6 + ld a, "0" add c ld [hl], a pop af - ld [hProduct], a + ld [$ffb3], a inc e dec e jr nz, .asm_c5ad inc hl - ld [hl], $f2 + ld [hl], $f2 ; XXX .asm_c5ad - call PrintNumber_AdvancePointer - call Functionc5ba - ld a, $f6 + call .AdvancePointer + call .PrintYen + ld a, "0" add b ld [hli], a + pop de pop bc ret ; c5ba -Functionc5ba: ; c5ba +.PrintYen: ; c5ba push af - ld a, [hProduct] + ld a, [$ffb3] and a jr nz, .asm_c5c9 bit 5, d jr z, .asm_c5c9 - ld a, $f0 + ld a, "¥" ld [hli], a res 5, d @@ -8685,76 +8694,72 @@ Functionc5ba: ; c5ba ret ; c5cb - -; known jump sources: c532 (3:4532), c544 (3:4544), c555 (3:4555), c566 (3:4566), c576 (3:4576) -Functionc5cb: ; c5cb (3:45cb) +.PrintDigit: ; c5cb (3:45cb) dec e - jr nz, PrintNumber_PrintDigit + jr nz, .ok ld a, $f6 - ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct) - -; known jump sources: c5cc (3:45cc) -PrintNumber_PrintDigit: ; c5d2 (3:45d2) + ld [$ffb3], a +.ok ld c, $0 .asm_c5d4 - ld a, [hDivisor] ; $ff00+$b7 (aliases: hMultiplier) + ld a, [$ffb7] ld b, a - ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand) - ld [$FF00+$ba], a + ld a, [$ffb4] + ld [$ffba], a cp b jr c, .asm_c624 sub b - ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand) - ld a, [hMathBuffer] ; $ff00+$b8 + ld [$ffb4], a + ld a, [$ffb8] ld b, a - ld a, [$FF00+$b5] - ld [$FF00+$bb], a + ld a, [$ffb5] + ld [$ffbb], a cp b jr nc, .asm_c5f6 - ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand) + ld a, [$ffb4] or $0 jr z, .asm_c620 dec a - ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand) - ld a, [$FF00+$b5] + ld [$ffb4], a + ld a, [$ffb5] .asm_c5f6 sub b - ld [$FF00+$b5], a - ld a, [$FF00+$b9] + ld [$ffb5], a + ld a, [$ffb9] ld b, a - ld a, [$FF00+$b6] - ld [$FF00+$bc], a + ld a, [$ffb6] + ld [$ffbc], a cp b jr nc, .asm_c616 - ld a, [$FF00+$b5] + ld a, [$ffb5] and a jr nz, .asm_c611 - ld a, [hQuotient] ; $ff00+$b4 (aliases: hMultiplicand) + ld a, [$ffb4] and a jr z, .asm_c61c dec a - ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand) + ld [$ffb4], a xor a .asm_c611 dec a - ld [$FF00+$b5], a - ld a, [$FF00+$b6] + ld [$ffb5], a + ld a, [$ffb6] .asm_c616 sub b - ld [$FF00+$b6], a + ld [$ffb6], a inc c jr .asm_c5d4 .asm_c61c - ld a, [$FF00+$bb] - ld [$FF00+$b5], a + ld a, [$ffbb] + ld [$ffb5], a .asm_c620 - ld a, [$FF00+$ba] - ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand) + ld a, [$ffba] + ld [$ffb4], a .asm_c624 - ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct) + ld a, [$ffb3] or c - jr z, PrintNumber_PrintLeadingZero - ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct) + jr z, .PrintLeadingZero + ld a, [$ffb3] and a jr nz, .asm_c637 bit 5, d @@ -8766,7 +8771,7 @@ PrintNumber_PrintDigit: ; c5d2 (3:45d2) ld a, $f6 add c ld [hl], a - ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct) + ld [$ffb3], a inc e dec e ret nz @@ -8774,64 +8779,67 @@ PrintNumber_PrintDigit: ; c5d2 (3:45d2) ld [hl], $f2 ret -PrintNumber_PrintLeadingZero: ; c644 +.PrintLeadingZero: ; c644 ; prints a leading zero unless they are turned off in the flags bit 7, d ; print leading zeroes? ret z ld [hl], "0" ret -PrintNumber_AdvancePointer: ; c64a +.AdvancePointer: ; c64a ; increments the pointer unless leading zeroes are not being printed, ; the number is left-aligned, and no nonzero digits have been printed yet bit 7, d ; print leading zeroes? - jr nz, .incrementPointer + jr nz, .inc bit 6, d ; left alignment or right alignment? - jr z, .incrementPointer - ld a, [hPastLeadingZeroes] + jr z, .inc + ld a, [$ffb3] and a ret z -.incrementPointer +.inc inc hl ret -; 0xc658 +; c658 + Functionc658: ; c658 xor a ld [CurPartyMon], a ld hl, PartySpecies -.asm_c65f +.loop ld a, [hli] cp $ff - jr z, .asm_c676 - cp $fd - jr z, .asm_c66d + jr z, .done + cp EGG + jr z, .next + push hl call Functionc677 pop hl -.asm_c66d +.next ld a, [CurPartyMon] inc a ld [CurPartyMon], a - jr .asm_c65f + jr .loop -.asm_c676 +.done ret ; c677 Functionc677: ; c677 - ld a, $0 + ld a, PartyMon1Species - PartyMon1 call GetPartyParamLocation ld d, h ld e, l - ld hl, $0020 + ld hl, PartyMon1Status - PartyMon1Species add hl, de xor a ld [hli], a ld [hl], a - ld hl, $0024 + ld hl, PartyMon1MaxHP - PartyMon1Species add hl, de + ; bc = PartyMon1HP - PartyMon1Species ld b, h ld c, l dec bc @@ -8929,7 +8937,7 @@ Functionc6f5: ; c6f5 GetPartyNick: ; c706 ; write CurPartyMon nickname to StringBuffer1-3 - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, BOXMON ld [MonType], a ld a, [CurPartyMon] @@ -10579,7 +10587,7 @@ Functioncfaf: ; cfaf ld [$d22e], a ld a, e ld [CurPartyLevel], a - ld a, $4 + ld a, BATTLETYPE_FISH ld [BattleType], a ld a, $2 ret @@ -12311,7 +12319,7 @@ Functiond88c: ; d88c .asm_d899 ld a, [de] inc a - cp $7 + cp PARTY_LENGTH + 1 ret nc ld [de], a ld a, [de] @@ -12327,11 +12335,11 @@ Functiond88c: ; d88c inc de ld a, $ff ld [de], a - ld hl, PartyMon1OT + ld hl, PartyMonOT ld a, [MonType] and $f jr z, .asm_d8bc - ld hl, OTPartyMon1OT + ld hl, OTPartyMonOT .asm_d8bc ld a, [$ffae] @@ -12340,7 +12348,7 @@ Functiond88c: ; d88c ld d, h ld e, l ld hl, PlayerName - ld bc, $000b + ld bc, NAME_LENGTH call CopyBytes ld a, [MonType] and a @@ -12348,14 +12356,14 @@ Functiond88c: ; d88c ld a, [CurPartySpecies] ld [$d265], a call GetPokemonName - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, [$ffae] dec a call SkipNames ld d, h ld e, l ld hl, StringBuffer1 - ld bc, $000b + ld bc, PKMN_NAME_LENGTH call CopyBytes .asm_d8f0 @@ -12368,7 +12376,7 @@ Functiond88c: ; d88c .asm_d8fd ld a, [$ffae] dec a - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes Functiond906: ; d906 ld e, l @@ -12398,29 +12406,24 @@ Functiond906: ; d906 ld a, [MonType] and a jr nz, .asm_d943 - ld de, EnemyMonMove1 - ld a, [de] - inc de - ld [hli], a - ld a, [de] - inc de - ld [hli], a + ld de, EnemyMonMoves + rept NUM_MOVES + -1 ld a, [de] inc de ld [hli], a + endr ld a, [de] ld [hl], a jr .asm_d950 .asm_d943 xor a + rept NUM_MOVES + -1 ld [hli], a - ld [hli], a - ld [hli], a + endr ld [hl], a ld [Buffer1], a - ld a, $1b - call Predef + predef FillMoves .asm_d950 pop de @@ -12536,15 +12539,16 @@ Functiond906: ; d906 jr .asm_da29 .asm_d9f3 - ld a, [EnemyMonAtkDefDV] + ld a, [EnemyMonDVs] ld [de], a inc de - ld a, [EnemyMonSpdSpclDV] + ld a, [EnemyMonDVs + 1] ld [de], a inc de + push hl - ld hl, EnemyMonPPMove1 - ld b, $4 + ld hl, EnemyMonPP + ld b, NUM_MOVES .asm_da03 ld a, [hli] ld [de], a @@ -12552,7 +12556,8 @@ Functiond906: ; d906 dec b jr nz, .asm_da03 pop hl - ld a, $46 + + ld a, BASE_HAPPINESS ld [de], a inc de xor a @@ -12583,7 +12588,7 @@ Functiond906: ; d906 ld a, [IsInBattle] dec a jr nz, .asm_da3b - ld hl, EnemyMonMaxHPHi + ld hl, EnemyMonMaxHP ld bc, $000c call CopyBytes pop hl @@ -12601,15 +12606,14 @@ Functiond906: ; d906 and $f jr nz, .asm_da6b ld a, [CurPartySpecies] - cp $c9 + cp UNOWN jr nz, .asm_da6b ld hl, PartyMon1DVs ld a, [PartyCount] dec a - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes - ld a, $2d - call Predef + predef GetUnownLetter callab Functionfba18 .asm_da6b @@ -12629,7 +12633,7 @@ FillPP: ; da6d push de push bc ld hl, Moves - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes ld de, StringBuffer1 ld a, BANK(Moves) @@ -12651,13 +12655,13 @@ FillPP: ; da6d Functionda96: ; da96 ld hl, PartyCount ld a, [hl] - cp $6 + cp PARTY_LENGTH scf ret z inc a ld [hl], a ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [CurPartySpecies] ld [hli], a @@ -12665,66 +12669,66 @@ Functionda96: ; da96 ld hl, PartyMon1Species ld a, [PartyCount] dec a - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld e, l ld d, h ld hl, TempMonSpecies call CopyBytes - ld hl, PartyMon1OT + ld hl, PartyMonOT ld a, [PartyCount] dec a call SkipNames ld d, h ld e, l - ld hl, OTPartyMon1OT + ld hl, OTPartyMonOT ld a, [CurPartyMon] call SkipNames - ld bc, $000b + ld bc, NAME_LENGTH call CopyBytes - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, [PartyCount] dec a call SkipNames ld d, h ld e, l - ld hl, OTPartyMon1Nickname + ld hl, OTPartyMonNicknames ld a, [CurPartyMon] call SkipNames - ld bc, $000b + ld bc, PKMN_NAME_LENGTH call CopyBytes + ld a, [CurPartySpecies] ld [$d265], a - cp $fd - jr z, .asm_db12 + cp EGG + jr z, .owned dec a call SetSeenAndCaughtMon ld hl, PartyMon1Happiness ld a, [PartyCount] dec a - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes - ld [hl], $46 + ld [hl], BASE_HAPPINESS +.owned -.asm_db12 ld a, [CurPartySpecies] - cp $c9 - jr nz, .asm_db3d + cp UNOWN + jr nz, .done ld hl, PartyMon1DVs ld a, [PartyCount] dec a - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes - ld a, $2d - call Predef + predef GetUnownLetter callab Functionfba18 ld a, [$def4] and a - jr nz, .asm_db3d + jr nz, .done ld a, [UnownLetter] ld [$def4], a +.done -.asm_db3d and a ret ; db3f @@ -12738,29 +12742,29 @@ Functiondb3f: ; db3f cp $2 jr z, .asm_db60 cp $3 - ld hl, BreedMon1Species + ld hl, wBreedMon1Species jr z, .asm_db9b - ld hl, BoxCount + ld hl, sBoxCount ld a, [hl] - cp $14 + cp MONS_PER_BOX jr nz, .asm_db69 jp Functiondcb1 .asm_db60 ld hl, PartyCount ld a, [hl] - cp $6 + cp PARTY_LENGTH jp z, Functiondcb1 .asm_db69 inc a ld [hl], a ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [$d10b] cp $2 - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] jr z, .asm_db7c ld a, [CurPartySpecies] @@ -12770,12 +12774,12 @@ Functiondb3f: ; db3f ld a, [$d10b] dec a ld hl, PartyMon1Species - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 ld a, [PartyCount] jr nz, .asm_db97 - ld hl, BoxMon1Species - ld bc, $0020 - ld a, [BoxCount] + ld hl, sBoxMon1Species + ld bc, sBoxMon1End - sBoxMon1 + ld a, [sBoxCount] .asm_db97 dec a @@ -12787,32 +12791,32 @@ Functiondb3f: ; db3f ld d, h ld a, [$d10b] and a - ld hl, BoxMon1Species - ld bc, $0020 + ld hl, sBoxMon1Species + ld bc, sBoxMon1End - sBoxMon1 jr z, .asm_dbb7 cp $2 - ld hl, BreedMon1Species + ld hl, wBreedMon1Species jr z, .asm_dbbd ld hl, PartyMon1Species - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 .asm_dbb7 ld a, [CurPartyMon] call AddNTimes .asm_dbbd - ld bc, $0020 + ld bc, sBoxMon1End - sBoxMon1 call CopyBytes ld a, [$d10b] cp $3 - ld de, BreedMon1OT + ld de, wBreedMon1OT jr z, .asm_dbe2 dec a - ld hl, PartyMon1OT + ld hl, PartyMonOT ld a, [PartyCount] jr nz, .asm_dbdc - ld hl, BoxMon1OT - ld a, [BoxCount] + ld hl, sBoxMonOT + ld a, [sBoxCount] .asm_dbdc dec a @@ -12821,32 +12825,32 @@ Functiondb3f: ; db3f ld e, l .asm_dbe2 - ld hl, BoxMon1OT + ld hl, sBoxMonOT ld a, [$d10b] and a jr z, .asm_dbf5 - ld hl, BreedMon1OT + ld hl, wBreedMon1OT cp $2 jr z, .asm_dbfb - ld hl, PartyMon1OT + ld hl, PartyMonOT .asm_dbf5 ld a, [CurPartyMon] call SkipNames .asm_dbfb - ld bc, $000b + ld bc, NAME_LENGTH call CopyBytes ld a, [$d10b] cp $3 - ld de, BreedMon1Nick + ld de, wBreedMon1Nick jr z, .asm_dc20 dec a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, [PartyCount] jr nz, .asm_dc1a - ld hl, BoxMon1Nickname - ld a, [BoxCount] + ld hl, sBoxMonNicknames + ld a, [sBoxCount] .asm_dc1a dec a @@ -12855,21 +12859,21 @@ Functiondb3f: ; db3f ld e, l .asm_dc20 - ld hl, BoxMon1Nickname + ld hl, sBoxMonNicknames ld a, [$d10b] and a jr z, .asm_dc33 - ld hl, BreedMon1Nick + ld hl, wBreedMon1Nick cp $2 jr z, .asm_dc39 - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames .asm_dc33 ld a, [CurPartyMon] call SkipNames .asm_dc39 - ld bc, $000b + ld bc, PKMN_NAME_LENGTH call CopyBytes pop hl ld a, [$d10b] @@ -12881,8 +12885,7 @@ Functiondb3f: ; db3f srl a add $2 ld [MonType], a - ld a, $1f - call Predef + predef Function5084a callab Function50e1b ld a, d ld [CurPartyLevel], a @@ -12914,7 +12917,7 @@ Functiondb3f: ; db3f ld d, h ld e, l ld a, [CurPartySpecies] - cp $fd + cp EGG jr z, .asm_dc9e inc hl inc hl @@ -12933,7 +12936,7 @@ Functiondb3f: ; db3f jr .asm_dcac .asm_dca4 - ld a, [BoxCount] + ld a, [sBoxCount] dec a ld b, a call Functiondcb6 @@ -12954,12 +12957,12 @@ Functiondcb1: ; dcb1 Functiondcb6: ; dcb6 ld a, b - ld hl, BoxMons - ld bc, BoxMon2 - BoxMon1 + ld hl, sBoxMons + ld bc, sBoxMon1End - sBoxMon1 call AddNTimes ld b, h ld c, l - ld hl, BoxMon1PP - BoxMon1 + ld hl, sBoxMon1PP - sBoxMon1 add hl, bc push hl push bc @@ -12967,7 +12970,7 @@ Functiondcb6: ; dcb6 ld bc, NUM_MOVES call CopyBytes pop bc - ld hl, BoxMon1Moves - BoxMon1 + ld hl, sBoxMon1Moves - sBoxMon1 add hl, bc push hl ld de, TempMonMoves @@ -12985,7 +12988,7 @@ Functiondcb6: ; dcb6 ld a, [hli] and a jr z, .asm_dd18 - ld [TempMonMove1], a + ld [TempMonMoves+0], a ld a, BOXMON ld [MonType], a ld a, b @@ -13019,7 +13022,7 @@ Functiondcb6: ; dcb6 Functiondd21: ; dd21 - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] ld [CurPartySpecies], a ld de, SFX_TRANSACTION call PlaySFX @@ -13035,7 +13038,7 @@ Functiondd21: ; dd21 ; dd42 Functiondd42: ; dd42 - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] ld [CurPartySpecies], a ld de, SFX_TRANSACTION call PlaySFX @@ -13053,7 +13056,7 @@ Functiondd42: ; dd42 Functiondd64: ; dd64 ld hl, PartyCount ld a, [hl] - cp $6 + cp PARTY_LENGTH jr nz, .asm_dd6e scf ret @@ -13062,22 +13065,22 @@ Functiondd64: ; dd64 inc a ld [hl], a ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [$d10b] and a - ld a, [BreedMon1Species] - ld de, BreedMon1Nick + ld a, [wBreedMon1Species] + ld de, wBreedMon1Nick jr z, .asm_dd86 - ld a, [BreedMon2Species] - ld de, BreedMon2Nick + ld a, [wBreedMon2Species] + ld de, wBreedMon2Nick .asm_dd86 ld [hli], a ld [CurSpecies], a ld a, $ff ld [hl], a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, [PartyCount] dec a call SkipNames @@ -13087,7 +13090,7 @@ Functiondd64: ; dd64 pop de call CopyBytes push hl - ld hl, PartyMon1OT + ld hl, PartyMonOT ld a, [PartyCount] dec a call SkipNames @@ -13117,17 +13120,16 @@ Functiondd64: ; dd64 push bc ld b, $1 call Functione167 - ld hl, PartyMon1Move1 + ld hl, PartyMon1Moves ld a, [PartyCount] dec a - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld d, h ld e, l ld a, $1 ld [Buffer1], a - ld a, $1b - call Predef + predef FillMoves ld a, [PartyCount] dec a ld [CurPartyMon], a @@ -13152,7 +13154,7 @@ Functionde1a: ; de1a ld a, [PartyCount] dec a ld hl, PartyMon1Species - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld d, h ld e, l @@ -13160,7 +13162,7 @@ Functionde1a: ; de1a ; de2a Functionde2a: ; de2a - ld de, BreedMon1Nick + ld de, wBreedMon1Nick call Functionde44 xor a ld [$d10b], a @@ -13168,7 +13170,7 @@ Functionde2a: ; de2a ; de37 Functionde37: ; de37 - ld de, BreedMon2Nick + ld de, wBreedMon2Nick call Functionde44 xor a ld [$d10b], a @@ -13177,28 +13179,28 @@ Functionde37: ; de37 Functionde44: ; de44 ld a, [CurPartyMon] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call SkipNames call CopyBytes ld a, [CurPartyMon] - ld hl, PartyMon1OT + ld hl, PartyMonOT call SkipNames call CopyBytes ld a, [CurPartyMon] ld hl, PartyMon1Species - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes - ld bc, $0020 + ld bc, sBoxMon1End - sBoxMon1 jp CopyBytes ; de6e Functionde6e: ; de6e - ld a, 1 ; BANK(BoxCount) + ld a, 1 ; BANK(sBoxCount) call GetSRAMBank - ld de, BoxCount + ld de, sBoxCount ld a, [de] - cp 20 + cp MONS_PER_BOX jp nc, Functiondf42 inc a ld [de], a @@ -13217,19 +13219,19 @@ Functionde6e: ; de6e call GetBaseData call ShiftBoxMon ld hl, PlayerName - ld de, BoxMonOT - ld bc, BoxMon2OT - BoxMon1OT + ld de, sBoxMonOT + ld bc, NAME_LENGTH call CopyBytes ld a, [CurPartySpecies] ld [$d265], a call GetPokemonName - ld de, BoxMon1Nickname + ld de, sBoxMonNicknames ld hl, StringBuffer1 - ld bc, BoxMon2Nickname - BoxMon1Nickname + ld bc, PKMN_NAME_LENGTH call CopyBytes ld hl, EnemyMon - ld de, BoxMon1 - ld bc, 6 ; species + item + moves + ld de, sBoxMon1 + ld bc, 1 + 1 + NUM_MOVES ; species + item + moves call CopyBytes ld hl, PlayerID ld a, [hli] @@ -13259,15 +13261,15 @@ Functionde6e: ; de6e inc de dec b jr nz, .asm_dee5 - ld hl, EnemyMonAtkDefDV - ld b, $6 + ld hl, EnemyMonDVs + ld b, 2 + NUM_MOVES ; DVs and PP ; EnemyMonHappiness - EnemyMonDVs .asm_deef ld a, [hli] ld [de], a inc de dec b jr nz, .asm_deef - ld a, $46 + ld a, BASE_HAPPINESS ld [de], a inc de xor a @@ -13285,17 +13287,16 @@ Functionde6e: ; de6e ld a, [CurPartySpecies] cp UNOWN jr nz, .asm_df20 - ld hl, BoxMon1DVs - ld a, $2d - call Predef + ld hl, sBoxMon1DVs + predef GetUnownLetter callab Functionfba18 .asm_df20 - ld hl, BoxMon1Moves - ld de, TempMonMove1 + ld hl, sBoxMon1Moves + ld de, TempMonMoves ld bc, NUM_MOVES call CopyBytes - ld hl, BoxMon1PP + ld hl, sBoxMon1PP ld de, TempMonPP ld bc, NUM_MOVES call CopyBytes @@ -13313,19 +13314,19 @@ Functiondf42: ; df42 ; df47 ShiftBoxMon: ; df47 - ld hl, BoxMonOT - ld bc, BoxMon2OT - BoxMon1OT + ld hl, sBoxMonOT + ld bc, NAME_LENGTH call .asm_df5f - ld hl, BoxMonNicknames - ld bc, BoxMon2Nickname - BoxMon1Nickname + ld hl, sBoxMonNicknames + ld bc, PKMN_NAME_LENGTH call .asm_df5f - ld hl, BoxMons - ld bc, BoxMon2 - BoxMon1 + ld hl, sBoxMons + ld bc, sBoxMon1End - sBoxMon1 .asm_df5f - ld a, [BoxCount] + ld a, [sBoxCount] cp 2 ret c @@ -13336,13 +13337,13 @@ ShiftBoxMon: ; df47 ld d, h pop hl - ld a, [BoxCount] + ld a, [sBoxCount] dec a call AddNTimes dec hl push hl - ld a, [BoxCount] + ld a, [sBoxCount] dec a ld hl, 0 call AddNTimes @@ -13360,7 +13361,7 @@ ShiftBoxMon: ; df47 ret ; df8c -Functiondf8c:: ; df8c +GiveEgg:: ; df8c ld a, [CurPartySpecies] push af callab GetPreEvolution @@ -13384,8 +13385,7 @@ Functiondf8c:: ; df8c ld d, $0 ld hl, PokedexCaught ld b, $0 - ld a, $3 - call Predef + predef FlagPredef .asm_dfc3 pop bc @@ -13398,36 +13398,35 @@ Functiondf8c:: ; df8c ld d, $0 ld hl, PokedexSeen ld b, $0 - ld a, $3 - call Predef + predef FlagPredef .asm_dfd9 pop af ld [CurPartySpecies], a ld a, [PartyCount] dec a - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 ld hl, PartyMon1Species call AddNTimes ld a, [CurPartySpecies] ld [hl], a ld hl, PartyCount ld a, [hl] - ld b, $0 + ld b, 0 ld c, a add hl, bc - ld a, $fd + ld a, EGG ld [hl], a ld a, [PartyCount] dec a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call SkipNames ld de, Stringe035 call CopyName2 ld a, [PartyCount] dec a ld hl, PartyMon1Happiness - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld a, [$c2cc] bit 1, a @@ -13440,7 +13439,7 @@ Functiondf8c:: ; df8c ld a, [PartyCount] dec a ld hl, PartyMon1HP - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes xor a ld [hli], a @@ -13461,9 +13460,9 @@ Functione039: ; e039 and a jr z, .asm_e04a - ld a, 1 ; BANK(BoxCount) + ld a, 1 ; BANK(sBoxCount) call GetSRAMBank - ld hl, BoxCount + ld hl, sBoxCount .asm_e04a ld a, [hl] @@ -13482,13 +13481,13 @@ Functione039: ; e039 ld [hli], a inc a jr nz, .asm_e057 - ld hl, PartyMon1OT - ld d, $5 + ld hl, PartyMonOT + ld d, PARTY_LENGTH - 1 ld a, [$d10b] and a jr z, .asm_e06d - ld hl, BoxMonOT - ld d, $13 + ld hl, sBoxMonOT + ld d, MONS_PER_BOX - 1 .asm_e06d ld a, [CurPartyMon] @@ -13502,13 +13501,13 @@ Functione039: ; e039 .asm_e07e ld d, h ld e, l - ld bc, $000b + ld bc, PKMN_NAME_LENGTH add hl, bc - ld bc, PartyMon1Nickname + ld bc, PartyMonNicknames ld a, [$d10b] and a jr z, .asm_e090 - ld bc, BoxMonNicknames + ld bc, sBoxMonNicknames .asm_e090 call CopyDataUntil @@ -13517,8 +13516,8 @@ Functione039: ; e039 ld a, [$d10b] and a jr z, .asm_e0a5 - ld hl, BoxMons - ld bc, BoxMon2 - BoxMon1 + ld hl, sBoxMons + ld bc, sBoxMon1End - sBoxMon1 .asm_e0a5 ld a, [CurPartyMon] @@ -13528,37 +13527,37 @@ Functione039: ; e039 ld a, [$d10b] and a jr z, .asm_e0bc - ld bc, BoxMon2 - BoxMon1 + ld bc, sBoxMon1End - sBoxMon1 add hl, bc - ld bc, BoxMonOT + ld bc, sBoxMonOT jr .asm_e0c3 .asm_e0bc ld bc, PartyMon2 - PartyMon1 add hl, bc - ld bc, PartyMon1OT + ld bc, PartyMonOT .asm_e0c3 call CopyDataUntil - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, [$d10b] and a jr z, .asm_e0d2 - ld hl, BoxMonNicknames + ld hl, sBoxMonNicknames .asm_e0d2 - ld bc, BoxMon2Nickname - BoxMon1Nickname + ld bc, PKMN_NAME_LENGTH ld a, [CurPartyMon] call AddNTimes ld d, h ld e, l - ld bc, BoxMon2Nickname - BoxMon1Nickname + ld bc, PKMN_NAME_LENGTH add hl, bc ld bc, PartyMonNicknamesEnd ld a, [$d10b] and a jr z, .asm_e0ed - ld bc, BoxMonNicknamesEnd + ld bc, sBoxMonNicknamesEnd .asm_e0ed call CopyDataUntil @@ -13846,7 +13845,7 @@ Functione277:: ; e277 ld [MonType], a call Functiond88c jr nc, .asm_e2b0 - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, [PartyCount] dec a ld [CurPartyMon], a @@ -13864,7 +13863,7 @@ Functione277:: ; e277 jr z, .asm_e2e1 ld a, [CurPartyMon] ld hl, PartyMon1Item - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld a, [CurItem] ld [hl], a @@ -13891,7 +13890,7 @@ Functione277:: ; e277 and a jr z, .asm_e2e1 ld a, [CurItem] - ld [BoxMon1Item], a + ld [sBoxMon1Item], a .asm_e2e1 ld a, [CurPartySpecies] @@ -13928,7 +13927,7 @@ Functione277:: ; e277 jr nz, .asm_e35e push hl ld a, [CurPartyMon] - ld hl, PartyMon1OT + ld hl, PartyMonOT call SkipNames ld d, h ld e, l @@ -13947,7 +13946,7 @@ Functione277:: ; e277 push bc ld a, [CurPartyMon] ld hl, PartyMon1ID - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld a, $3 ld [hli], a @@ -13959,7 +13958,7 @@ Functione277:: ; e277 .asm_e35e ld a, $1 call GetSRAMBank - ld de, BoxMon1OT + ld de, sBoxMonOT .asm_e366 ld a, [ScriptBank] call GetFarByte @@ -13971,7 +13970,7 @@ Functione277:: ; e277 ld a, [ScriptBank] call GetFarByte ld b, a - ld hl, BoxMon1ID + ld hl, sBoxMon1ID call Random ld [hli], a call Random @@ -14011,7 +14010,7 @@ Functione277:: ; e277 ld a, $1 call GetSRAMBank ld hl, $d050 - ld de, BoxMon1Nickname + ld de, sBoxMonNicknames ld bc, $000b call CopyBytes call CloseSRAM @@ -14217,7 +14216,7 @@ Functione512: ; e512 ld a, [PartyCount] and a jr z, .asm_e51e - cp $2 + cp 2 jr c, .asm_e526 and a ret @@ -14250,7 +14249,7 @@ UnknownText_0xe533: ; 0xe533 Functione538: ; e538 ld hl, PartyMon1HP - ld de, $0030 + ld de, PartyMon2 - PartyMon1 ld b, $0 .asm_e540 ld a, [CurPartyMon] @@ -14292,7 +14291,7 @@ Functione559: ; e559 (3:6559) Functione56d: ; e56d ld a, [PartyCount] - cp $6 + cp PARTY_LENGTH jr nc, .asm_e576 and a ret @@ -14339,7 +14338,7 @@ ClearPCItemScreen: ; e58b Functione5bb: ; e5bb ld a, [CurPartyMon] - ld hl, BoxMon1Species + ld hl, sBoxMon1Species ld bc, $0020 call AddNTimes ld de, TempMonSpecies @@ -14369,7 +14368,7 @@ Functione5d9: ; e5d9 .asm_e5f1 ld a, $1 - ld hl, BoxCount + ld hl, sBoxCount .asm_e5f6 call GetSRAMBank @@ -14378,7 +14377,7 @@ Functione5d9: ; e5d9 add hl, bc ld b, a ld c, $0 - ld de, EnemyMoveAnimation + ld de, $c608 ld a, b and a jr z, .asm_e66a @@ -14471,7 +14470,7 @@ Unknown_e66e: ; e66e ; e698 Functione698: ; e698 - ld hl, BreedMon1Species + ld hl, wBreedMon1Species ld de, TempMonSpecies ld bc, $0020 call CopyBytes @@ -14486,7 +14485,7 @@ Functione698: ; e698 ; e6b3 Functione6b3: ; e6b3 - ld hl, BreedMon2Species + ld hl, wBreedMon2Species ld de, TempMonSpecies ld bc, $0020 call CopyBytes @@ -14528,7 +14527,7 @@ Functione6fd: ; e6fd ld [CurPartySpecies], a call GetBaseData xor a - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 ld hl, $df9c call ByteFill xor a @@ -14639,12 +14638,12 @@ WobbleChances: ; f9ba ; f9ea -Functionf9ea: ; f9ea - ld a, $2 +KnowsMove: ; f9ea + ld a, PartyMon1Moves - PartyMon1 call GetPartyParamLocation ld a, [$d262] ld b, a - ld c, $4 + ld c, NUM_MOVES .asm_f9f5 ld a, [hli] cp b @@ -14670,7 +14669,7 @@ UnknownText_0xfa06: ; 0xfa06 SECTION "bank4", ROMX, BANK[$4] -Function10000: ; 10000 +Pack: ; 10000 ld hl, Options set 4, [hl] call Function1068a @@ -15286,7 +15285,7 @@ Function103fd: ; 103fd callba PartyMenuSelect jr c, .asm_10475 ld a, [CurPartySpecies] ; $d108 - cp $fd + cp EGG jr nz, .asm_10453 ld hl, UnknownText_0x1048d call PrintText @@ -15299,7 +15298,7 @@ Function103fd: ; 103fd call GetCurNick ld hl, StringBuffer1 ; $d073 ld de, $d050 - ld bc, $b + ld bc, PKMN_NAME_LENGTH call CopyBytes call Function12bd9 pop af @@ -15334,7 +15333,7 @@ Function10492: ; 10492 ; 10493 -Function10493: ; 10493 +BattlePack: ; 10493 ld hl, Options set 4, [hl] call Function1068a @@ -15998,7 +15997,7 @@ Function1089d: ; 1089d ld e, a ld d, $0 ld a, [BattleType] - cp $3 + cp BATTLETYPE_TUTORIAL jr z, .asm_108b3 ld a, [PlayerGender] bit 0, a @@ -16122,7 +16121,7 @@ Function10955: ; 10955 ld a, $24 call ByteFill hlcoord 5, 1 - ld bc, $0b0f + lb bc, 11, 15 call ClearBox ld hl, TileMap ld a, $28 @@ -16135,7 +16134,7 @@ Function10955: ; 10955 call Function109bb call Function109a5 hlcoord 0, 12 - ld bc, $0412 + lb bc, 4, 18 call TextBox call EnableLCD call Function1089d @@ -16906,8 +16905,7 @@ CanLearnTMHMMove: ; 11639 ld b, CHECK_FLAG push de ld d, 0 - ld a, PREDEF_FLAG - call Predef + predef FlagPredef pop de ret @@ -19501,7 +19499,7 @@ StartMenu_Pokegear: ; 1294c StartMenu_Pack: ; 1295b call FadeToMenu - callba Function10000 + callba Pack ld a, [$cf66] and a jr nz, .asm_12970 @@ -20217,8 +20215,7 @@ OpenPartyStats: ; 12e00 xor a ld [MonType], a call LowVolume - ld a, $25 - call Predef + predef StatsScreenInit call MaxVolume call Function1d7d ld a, 0 @@ -20659,8 +20656,8 @@ Function12fd5: ; 12fd5 jp .asm_13018 .asm_130de - ld hl, PartyMon1Move1 - ld bc, $0030 + ld hl, PartyMon1Moves + ld bc, PartyMon2 - PartyMon1 ld a, [CurPartyMon] call AddNTimes push hl @@ -20671,7 +20668,7 @@ Function12fd5: ; 12fd5 call Function1313a ld a, [IsInBattle] jr z, .asm_13113 - ld hl, BattleMonMove1 + ld hl, BattleMonMoves ld bc, $0020 ld a, [CurPartyMon] call AddNTimes @@ -20768,7 +20765,7 @@ Function13172: ; 13172 call ClearBox xor a ld [MonType], a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, [CurPartyMon] call GetNick hlcoord 5, 1 @@ -20791,34 +20788,31 @@ Function131ef: ; 131ef ld [hBGMapMode], a ld [$d0e3], a ld [MonType], a - ld a, $1f - call Predef - ld hl, TempMonMove1 + predef Function5084a + ld hl, TempMonMoves ld de, $d25e - ld bc, $0004 + ld bc, NUM_MOVES call CopyBytes - ld a, $28 + ld a, SCREEN_WIDTH * 2 ld [Buffer1], a hlcoord 2, 3 - ld a, $20 - call Predef + predef ListMoves hlcoord 10, 4 - ld a, $23 - call Predef + predef Function50c50 call WaitBGMap call Function32f9 ld a, [$d0eb] inc a ld [$cfa3], a hlcoord 0, 11 - ld b, $5 - ld c, $12 + ld b, 5 + ld c, 18 jp TextBox ; 13235 Function13235: ; 13235 - ld hl, PartyMon1Move1 - ld bc, $0030 + ld hl, PartyMon1Moves + ld bc, PartyMon2 - PartyMon1 ld a, [CurPartyMon] call AddNTimes ld a, [$cfa9] @@ -20829,7 +20823,7 @@ Function13235: ; 13235 ld a, [hl] ld [CurSpecies], a hlcoord 1, 12 - ld bc, $0512 + lb bc, 5, 18 jp ClearBox ; 13256 @@ -20848,12 +20842,11 @@ Function13256: ; 13256 ld a, [CurSpecies] ld b, a hlcoord 2, 12 - ld a, PREDEF_PRINT_MOVE_TYPE - call Predef + predef PrintMoveType ld a, [CurSpecies] dec a ld hl, Moves + MOVE_POWER - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte @@ -20872,8 +20865,7 @@ Function13256: ; 13256 .asm_132ad hlcoord 1, 14 - ld a, $11 - call Predef + predef PrintMoveDesc ld a, $1 ld [hBGMapMode], a ret @@ -21449,7 +21441,7 @@ Function135db: ; 135db ; 135eb UnknownScript_0x135eb:: ; 0x135eb - writecode $3, $6 + writecode $3, BATTLETYPE_CONTEST battlecheck startbattle returnafterbattle @@ -22000,7 +21992,7 @@ ContestScore: ; 13900 call .AddContestStat ; DVs - ld a, [wContestMonAtkDefDV] + ld a, [wContestMonDVs + 0] ld b, a and 2 add a @@ -22014,7 +22006,7 @@ ContestScore: ; 13900 add c ld d, a - ld a, [wContestMonSpdSpcDV] + ld a, [wContestMonDVs + 1] ld b, a and 2 ld c, a @@ -22171,7 +22163,7 @@ Function13a12: ; 13a12 or [hl] jr z, .asm_13a2b ld hl, PartyCount - ld a, $1 + ld a, 1 ld [hli], a inc hl ld a, [hl] @@ -22188,7 +22180,7 @@ Function13a12: ; 13a12 ; 13a31 Function13a31: ; 13a31 - ld hl, $dcd9 + ld hl, PartySpecies + 1 ld a, [$df9b] ld [hl], a ld b, $1 @@ -22295,8 +22287,7 @@ Function13a47: ; 13a47 ld hl, $000a add hl, bc ld b, $1 - ld a, $c - call Predef + predef Functione167 pop hl ld bc, PartyMon2 - PartyMon1 add hl, bc @@ -22918,9 +22909,9 @@ GetMonSprite: ; 14259 cp SPRITE_POKEMON jr c, .Normal cp SPRITE_DAYCARE_MON_1 - jr z, .BreedMon1 + jr z, .wBreedMon1 cp SPRITE_DAYCARE_MON_2 - jr z, .BreedMon2 + jr z, .wBreedMon2 cp SPRITE_VARS jr nc, .Variable jr .Icon @@ -22938,12 +22929,12 @@ GetMonSprite: ; 14259 ld a, [hl] jr .Mon -.BreedMon1 - ld a, [BreedMon1Species] +.wBreedMon1 + ld a, [wBreedMon1Species] jr .Mon -.BreedMon2 - ld a, [BreedMon2Species] +.wBreedMon2 + ld a, [wBreedMon2Species] .Mon ld e, a @@ -25223,8 +25214,8 @@ Function150f9: ; 150f9 push de ld a, $1 call GetSRAMBank - ld hl, BoxCount - ld de, EnemyMoveAnimation + ld hl, sBoxCount + ld de, $c608 ld bc, $01e0 call CopyBytes call CloseSRAM @@ -25233,14 +25224,14 @@ Function150f9: ; 150f9 push af push de call GetSRAMBank - ld hl, EnemyMoveAnimation + ld hl, $c608 ld bc, $01e0 call CopyBytes call CloseSRAM ld a, $1 call GetSRAMBank ld hl, $aef0 - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $01e0 call CopyBytes call CloseSRAM @@ -25253,14 +25244,14 @@ Function150f9: ; 150f9 push af push de call GetSRAMBank - ld hl, EnemyMoveAnimation + ld hl, $c608 ld bc, $01e0 call CopyBytes call CloseSRAM ld a, $1 call GetSRAMBank ld hl, $b0d0 - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $008e call CopyBytes call CloseSRAM @@ -25271,7 +25262,7 @@ Function150f9: ; 150f9 ld e, l ld d, h call GetSRAMBank - ld hl, EnemyMoveAnimation + ld hl, $c608 ld bc, $008e call CopyBytes call CloseSRAM @@ -25288,13 +25279,13 @@ Function1517d: ; 1517d (5:517d) push af push hl call GetSRAMBank - ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) + ld de, $c608 ld bc, $1e0 call CopyBytes call CloseSRAM ld a, $1 call GetSRAMBank - ld hl, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) + ld hl, $c608 ld de, $ad10 ld bc, $1e0 call CopyBytes @@ -25306,13 +25297,13 @@ Function1517d: ; 1517d (5:517d) push af push hl call GetSRAMBank - ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) + ld de, $c608 ld bc, $1e0 call CopyBytes call CloseSRAM ld a, $1 call GetSRAMBank - ld hl, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) + ld hl, $c608 ld de, $aef0 ld bc, $1e0 call CopyBytes @@ -25322,13 +25313,13 @@ Function1517d: ; 1517d (5:517d) ld de, $1e0 add hl, de call GetSRAMBank - ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) + ld de, $c608 ld bc, $8e call CopyBytes call CloseSRAM ld a, $1 call GetSRAMBank - ld hl, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) + ld hl, $c608 ld de, $b0d0 ld bc, $8e call CopyBytes @@ -26436,8 +26427,7 @@ Function157e9: ; 0x157e9 ld [$d107], a ld hl, PCItems call TossItem - ld a, $3b - call Predef + predef PartyMonItemName ld hl, .WithdrewText call Function1d4f xor a @@ -26611,8 +26601,7 @@ Function1590a: ; 0x1590a ld [$d107], a ld hl, NumItems call TossItem - ld a, $3b - call Predef + predef PartyMonItemName ld hl, .DepositText call PrintText ret @@ -27295,8 +27284,7 @@ Function15d83: ; 15d83 ; 15d97 Function15d97: ; 15d97 - ld a, $3b - call Predef + predef PartyMonItemName ld a, $1 call Function15c7d call YesNoBox @@ -27636,8 +27624,7 @@ Function15efd: ; 15efd ld a, [$d107] ld hl, NumItems call TossItem - ld a, $3b - call Predef + predef PartyMonItemName hlcoord 1, 14 ld bc, $0312 call ClearBox @@ -28707,17 +28694,17 @@ MenuData2_0x166bd: ; 0x166bd ; 0x166d6 Function166d6: ; 166d6 - ld hl, DaycareMan + ld hl, wDaycareMan bit 0, [hl] jr nz, .asm_166fe - ld hl, DaycareMan + ld hl, wDaycareMan ld a, $0 call Function1678f jr c, .asm_16724 call Function16798 jr c, .asm_16721 callba Functionde2a - ld hl, DaycareMan + ld hl, wDaycareMan set 0, [hl] call Function167f6 call Function16a3b @@ -28725,13 +28712,13 @@ Function166d6: ; 166d6 .asm_166fe callba Functione698 - ld hl, BreedMon1Nick + ld hl, wBreedMon1Nick call Function1686d call Function16807 jr c, .asm_16721 callba Functiondd21 call Function16850 - ld hl, DaycareMan + ld hl, wDaycareMan res 0, [hl] res 5, [hl] jr .asm_16724 @@ -28746,17 +28733,17 @@ Function166d6: ; 166d6 ; 1672a Function1672a: ; 1672a - ld hl, DaycareLady + ld hl, wDaycareLady bit 0, [hl] jr nz, .asm_16752 - ld hl, DaycareLady + ld hl, wDaycareLady ld a, $2 call Function16781 jr c, .asm_1677b call Function16798 jr c, .asm_16778 callba Functionde37 - ld hl, DaycareLady + ld hl, wDaycareLady set 0, [hl] call Function167f6 call Function16a3b @@ -28764,15 +28751,15 @@ Function1672a: ; 1672a .asm_16752 callba Functione6b3 - ld hl, BreedMon2Nick + ld hl, wBreedMon2Nick call Function1686d call Function16807 jr c, .asm_16778 callba Functiondd42 call Function16850 - ld hl, DaycareLady + ld hl, wDaycareLady res 0, [hl] - ld hl, DaycareMan + ld hl, wDaycareMan res 5, [hl] jr .asm_1677b @@ -28819,13 +28806,13 @@ Function16798: ; 16798 callba Functione538 jr c, .asm_167e9 ld hl, PartyMon1Item - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 ld a, [CurPartyMon] call AddNTimes ld d, [hl] callba ItemIsMail jr c, .asm_167ed - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, [CurPartyMon] call GetNick and a @@ -29113,7 +29100,7 @@ UnknownText_0x16931: ; 0x16931 ; 0x16936 Function16936: ; 16936 - ld hl, DaycareMan + ld hl, wDaycareMan bit 6, [hl] jr nz, Function16949 ld hl, UnknownText_0x16944 @@ -29135,7 +29122,7 @@ Function16949: ; 16949 cp $6 jr nc, .asm_16987 call Function169ac - ld hl, DaycareMan + ld hl, wDaycareMan res 6, [hl] call Function16a3b ld hl, UnknownText_0x16998 @@ -29208,32 +29195,32 @@ Function169ac: ; 169ac add hl, bc ld a, EGG ld [hli], a - ld a, [EggSpecies] + ld a, [wEggMonSpecies] ld [CurSpecies], a ld [CurPartySpecies], a ld a, $ff ld [hl], a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld bc, $000b call Function16a31 - ld hl, EggNick + ld hl, wEggNick call CopyBytes - ld hl, PartyMon1OT + ld hl, PartyMonOT ld bc, $000b call Function16a31 - ld hl, EggOT + ld hl, wEggOT call CopyBytes - ld hl, PartyMon1Species - ld bc, $0030 + ld hl, PartyMon1 + ld bc, PartyMon2 - PartyMon1 call Function16a31 - ld hl, EggSpecies - ld bc, $0020 + ld hl, wEggMon + ld bc, wEggMonEnd - wEggMon call CopyBytes call GetBaseData ld a, [PartyCount] dec a - ld hl, PartyMon1Species - ld bc, $0030 + ld hl, PartyMon1 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld b, h ld c, l @@ -29247,8 +29234,7 @@ Function169ac: ; 169ac pop hl push bc ld b, $0 - ld a, $c - call Predef + predef Functione167 pop bc ld hl, $0022 add hl, bc @@ -29273,10 +29259,10 @@ Function16a31: ; 16a31 ; 16a3b Function16a3b: ; 16a3b - ld a, [DaycareLady] + ld a, [wDaycareLady] bit 0, a ret z - ld a, [DaycareMan] + ld a, [wDaycareMan] bit 0, a ret z callab Function16e1d @@ -29285,40 +29271,40 @@ Function16a3b: ; 16a3b ret z inc a ret z - ld hl, DaycareMan + ld hl, wDaycareMan set 5, [hl] .asm_16a59 call Random cp 150 jr c, .asm_16a59 - ld [StepsToEgg], a + ld [wStepsToEgg], a jp Function16a66 ; 16a66 Function16a66: ; 16a66 xor a - ld hl, EggSpecies - ld bc, $0020 + ld hl, wEggMon + ld bc, wEggMonEnd - wEggMon call ByteFill - ld hl, EggNick - ld bc, $000b + ld hl, wEggNick + ld bc, PKMN_NAME_LENGTH call ByteFill - ld hl, EggOT - ld bc, $000b + ld hl, wEggOT + ld bc, NAME_LENGTH call ByteFill ld a, [$df21] ld [TempMonDVs], a ld a, [$df22] ld [$d124], a - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] ld [CurPartySpecies], a ld a, $3 ld [MonType], a - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] cp DITTO ld a, $1 jr z, .asm_16ab6 - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] cp DITTO ld a, $0 jr z, .asm_16ab6 @@ -29328,11 +29314,11 @@ Function16a66: ; 16a66 inc a .asm_16ab6 - ld [DittoInDaycare], a + ld [wDittoInDaycare], a and a - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] jr z, .asm_16ac2 - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] .asm_16ac2 ld [CurPartySpecies], a @@ -29352,22 +29338,21 @@ Function16a66: ; 16a66 .asm_16ae8 ld [CurPartySpecies], a ld [CurSpecies], a - ld [EggSpecies], a + ld [wEggMonSpecies], a call GetBaseData - ld hl, EggNick + ld hl, wEggNick ld de, String_16be0 call CopyName2 ld hl, PlayerName - ld de, EggOT - ld bc, $000b + ld de, wEggOT + ld bc, NAME_LENGTH call CopyBytes xor a ld [$df7c], a ld de, $df7d xor a ld [Buffer1], a - ld a, $1b - call Predef + predef FillMoves callba Function170bf ld hl, $df81 ld a, [PlayerID] @@ -29399,11 +29384,11 @@ Function16a66: ; 16a66 ld [hld], a ld [$d124], a ld de, $df21 - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] cp DITTO jr z, .asm_16b98 ld de, $df5a - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] cp DITTO jr z, .asm_16b98 ld a, $3 @@ -29415,7 +29400,7 @@ Function16a66: ; 16a66 ld bc, $df5a jr c, .asm_16bab jr z, .asm_16b90 - ld a, [DittoInDaycare] + ld a, [wDittoInDaycare] and a jr z, .asm_16b98 ld d, b @@ -29423,7 +29408,7 @@ Function16a66: ; 16a66 jr .asm_16b98 .asm_16b90 - ld a, [DittoInDaycare] + ld a, [wDittoInDaycare] and a jr nz, .asm_16b98 ld d, b @@ -29453,8 +29438,7 @@ Function16a66: ; 16a66 call CopyBytes ld hl, $df7d ld de, $df92 - ld a, $5 - call Predef + predef FillPP ld hl, $d050 ld de, StringBuffer1 ld bc, $000b @@ -29619,15 +29603,13 @@ Function16cc8: ; 16cc8 xor a ld [$c2c6], a ld de, VTiles2 - ld a, $3c - call Predef + predef GetFrontpic call Function16cff hlcoord 1, 6 xor a ld [$ffad], a ld bc, $0707 - ld a, $13 - call Predef + predef FillBox ld de, $9310 callba Functione0000 ret @@ -29708,8 +29690,7 @@ Function16dac: ; 16dac ld a, $31 ld [$ffad], a ld bc, $0707 - ld a, $13 - call Predef + predef FillBox ret ; 16dc7 @@ -29779,7 +29760,7 @@ Function16e1d: ; 16e1d call Function16ed6 ld c, $0 jp nc, .asm_16eb7 - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] ld [CurPartySpecies], a ld a, [$df21] ld [TempMonDVs], a @@ -29787,8 +29768,7 @@ Function16e1d: ; 16e1d ld [$d124], a ld a, $3 ld [MonType], a - ld a, $24 - call Predef + predef GetGender jr c, .asm_16e70 ld b, $1 jr nz, .asm_16e48 @@ -29796,7 +29776,7 @@ Function16e1d: ; 16e1d .asm_16e48 push bc - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] ld [CurPartySpecies], a ld a, [$df5a] ld [TempMonDVs], a @@ -29804,8 +29784,7 @@ Function16e1d: ; 16e1d ld [$d124], a ld a, $3 ld [MonType], a - ld a, $24 - call Predef + predef GetGender pop bc jr c, .asm_16e70 ld a, $1 @@ -29818,16 +29797,16 @@ Function16e1d: ; 16e1d .asm_16e70 ld c, $0 - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] cp DITTO jr z, .asm_16e82 - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] cp DITTO jr nz, .asm_16eb7 jr .asm_16e89 .asm_16e82 - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] cp DITTO jr z, .asm_16eb7 @@ -29835,9 +29814,9 @@ Function16e1d: ; 16e1d call Function16ebc ld c, $ff jp z, .asm_16eb7 - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] ld b, a - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] cp b ld c, $fe jr z, .asm_16e9f @@ -29884,19 +29863,19 @@ Function16ebc: ; 16ebc (5:6ebc) ; 16ed6 Function16ed6: ; 16ed6 - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] ld [CurSpecies], a call GetBaseData ld a, [BaseEggGroups] cp $ff jr z, .asm_16f3a - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] ld [CurSpecies], a call GetBaseData ld a, [BaseEggGroups] cp $ff jr z, .asm_16f3a - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] cp DITTO jr z, .asm_16f3c ld [CurSpecies], a @@ -29909,7 +29888,7 @@ Function16ed6: ; 16ed6 and $f0 swap a ld c, a - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] cp DITTO jr z, .asm_16f3c ld [CurSpecies], a @@ -30054,8 +30033,7 @@ Function16f7a: ; 16f7a (5:6f7a) ld bc, $a add hl, bc ld b, $0 - ld a, $c - call Predef + predef Functione167 pop bc ld hl, $24 add hl, bc @@ -30075,7 +30053,7 @@ Function16f7a: ; 16f7a (5:6f7a) ld a, [$d47c] ld [hl], a ld a, [CurPartyMon] ; $d109 - ld hl, PartyMonOT ; $ddff (aliases: PartyMon1OT) + ld hl, PartyMonOT ; $ddff (aliases: PartyMonOT) ld bc, $b call AddNTimes ld d, h @@ -30085,7 +30063,7 @@ Function16f7a: ; 16f7a (5:6f7a) ld hl, UnknownText_0x1708b call PrintText ld a, [CurPartyMon] ; $d109 - ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname) + ld hl, PartyMonNicknames ; $de41 (aliases: PartyMonNicknames) ld bc, $b call AddNTimes ld d, h @@ -30206,7 +30184,7 @@ Function170e4: ; 170e4 GLOBAL EggMoves push bc - ld a, [EggSpecies] + ld a, [wEggMonSpecies] dec a ld c, a ld b, 0 @@ -30240,7 +30218,7 @@ GLOBAL EggMoves jr .asm_1710c .asm_17116 - ld a, [EggSpecies] + ld a, [wEggMonSpecies] dec a ld c, a ld b, 0 @@ -30283,8 +30261,7 @@ GLOBAL EggMoves cp b jr nz, .asm_17149 ld [$d262], a - ld a, $e - call Predef + predef CanLearnTMHMMove ld a, c and a jr z, .asm_17166 @@ -30329,8 +30306,7 @@ Function17169: ; 17169 ld [hl], b ld hl, $df7d ld de, $df92 - ld a, $5 - call Predef + predef FillPP pop bc pop de ret @@ -30338,13 +30314,13 @@ Function17169: ; 17169 Function17197: ; 17197 ld hl, $df47 - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] cp DITTO jr z, .asm_171b1 - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] cp DITTO jr z, .asm_171d7 - ld a, [DittoInDaycare] + ld a, [wDittoInDaycare] and a ret z ld hl, $df0e @@ -30353,7 +30329,7 @@ Function17197: ; 17197 .asm_171b1 ld a, [CurPartySpecies] push af - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] ld [CurPartySpecies], a ld a, [$df5a] ld [TempMonDVs], a @@ -30361,8 +30337,7 @@ Function17197: ; 17197 ld [$d124], a ld a, $3 ld [MonType], a - ld a, $24 - call Predef + predef GetGender jr c, .asm_171fb jr nz, .asm_171fb jr .asm_17203 @@ -30370,7 +30345,7 @@ Function17197: ; 17197 .asm_171d7 ld a, [CurPartySpecies] push af - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] ld [CurPartySpecies], a ld a, [$df21] ld [TempMonDVs], a @@ -30378,8 +30353,7 @@ Function17197: ; 17197 ld [$d124], a ld a, $3 ld [MonType], a - ld a, $24 - call Predef + predef GetGender jr c, .asm_17203 jr nz, .asm_17203 @@ -30398,13 +30372,13 @@ Function17197: ; 17197 Function1720b: ; 1720b ld hl, $df0e - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] cp DITTO ret z - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] cp DITTO jr z, .asm_17220 - ld a, [DittoInDaycare] + ld a, [wDittoInDaycare] and a ret z @@ -30420,12 +30394,10 @@ Function17224: ; 17224 (5:7224) ld [CurPartySpecies], a ; $d108 ld [CurSpecies], a ; $cf60 call GetBaseData - ld hl, BattleMonDVs ; $c632 (aliases: BattleMonAtkDefDV) - ld a, $2d - call Predef + ld hl, BattleMonDVs + predef GetUnownLetter pop de - ld a, $3c - jp Predef + predef_jump GetFrontpic ; known jump sources: 172c2 (5:72c2) Function1723c: ; 1723c (5:723c) @@ -30433,12 +30405,10 @@ Function1723c: ; 1723c (5:723c) ld [CurPartySpecies], a ; $d108 ld [CurSpecies], a ; $cf60 call GetBaseData - ld hl, BattleMonDVs ; $c632 (aliases: BattleMonAtkDefDV) - ld a, $2d - call Predef + ld hl, BattleMonDVs + predef GetUnownLetter pop de - ld a, $3e - jp Predef + predef_jump Function5108b ; known jump sources: 172df (5:72df), 17343 (5:7343) Function17254: ; 17254 (5:7254) @@ -30457,8 +30427,7 @@ Function17254: ; 17254 (5:7254) ld a, c ld [$ffad], a ld bc, $707 - ld a, $13 - call Predef + predef FillBox pop af call Function17363 call Function32f9 @@ -30560,8 +30529,7 @@ Function1728f: ; 1728f (5:728f) hlcoord 6, 3 ld d, $0 ld e, $5 - ld a, $47 - call Predef + predef Functiond008e pop af ld [CurSpecies], a ; $cf60 ret @@ -30667,26 +30635,26 @@ Function17418: ; 17418 (5:7418) Function17421: ; 17421 ld hl, UnknownText_0x17467 call PrintText - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] call Function37ce - ld a, [DaycareLady] + ld a, [wDaycareLady] bit 0, a jr z, Function1745f call Functionaaf - ld hl, BreedMon2Nick + ld hl, wBreedMon2Nick call Function1746c jp PrintText Function17440: ; 17440 ld hl, UnknownText_0x17462 call PrintText - ld a, [BreedMon2Species] + ld a, [wBreedMon2Species] call Function37ce - ld a, [DaycareMan] + ld a, [wDaycareMan] bit 0, a jr z, Function1745f call Functionaaf - ld hl, BreedMon1Nick + ld hl, wBreedMon1Nick call Function1746c jp PrintText @@ -31917,8 +31885,7 @@ Function244e3:: ; 244e3 ld [CurSpecies], a call GetBaseData ld de, VTiles1 - ld a, $3c - call Predef + predef GetFrontpic ld a, [$cf82] inc a ld b, a @@ -31929,8 +31896,7 @@ Function244e3:: ; 244e3 ld a, $80 ld [$ffad], a ld bc, $0707 - ld a, $13 - call Predef + predef FillBox call WaitBGMap ret ; 24528 @@ -33479,7 +33445,7 @@ MenuData2_0x24edc: ; 24edc ; 24ef2 -LoadBattleMenuDataHeader: ; 24ef2 +LoadBattleMenu: ; 24ef2 ld hl, BattleMenuDataHeader call LoadMenuDataHeader ld a, [$d0d2] @@ -33492,15 +33458,14 @@ LoadBattleMenuDataHeader: ; 24ef2 ; 24f0b -Function24f0b: ; 24f0b -; Safari battle menu (untranslated). +SafariBattleMenu: ; 24f0b +; untranslated ld hl, MenuDataHeader_0x24f4e call LoadMenuDataHeader jr Function24f19 ; 24f13 -Function24f13: ; 24f13 -; Park battle menu. +ContestBattleMenu: ; 24f13 ld hl, MenuDataHeader_0x24f89 call LoadMenuDataHeader ; 24f19 @@ -34103,8 +34068,7 @@ Function25299: ; 25299 (9:5299) ld bc, $507 xor a ld [$FF00+$ad], a - ld a, $13 - call Predef + predef FillBox ret ; 252ec (9:52ec) @@ -36140,7 +36104,7 @@ Function2715c: ; 2715c call WhiteBGMap call ClearTileMap ld a, [BattleType] - cp $3 + cp BATTLETYPE_TUTORIAL jr z, .asm_27171 callba Function3f43d jr .asm_27177 @@ -36340,7 +36304,7 @@ Function2805d: ; 2805d call Function75f ld a, $fe ld [de], a - ld hl, EnemyMoveAnimation + ld hl, $c608 ld de, PlayerSDefLevel ld bc, $00c8 call Function75f @@ -36483,7 +36447,7 @@ Function28177: ; 28177 call Function75f ld a, $fe ld [de], a - ld hl, EnemyMoveAnimation + ld hl, $c608 ld de, PlayerSDefLevel ld bc, $00c8 call Function75f @@ -36686,7 +36650,7 @@ Function28177: ; 28177 or $3 ld [hl], a ld hl, $d26b - ld de, $c656 + ld de, OTName ld bc, $000b call CopyBytes call Function222a @@ -36705,8 +36669,7 @@ Function28177: ; 28177 ld [rIE], a pop af ld [rIF], a - ld a, $16 - call Predef + predef StartBattle ld a, [rIF] ld h, a xor a @@ -36833,7 +36796,7 @@ Function28434: ; 28434 ld [hli], a dec b jr nz, .asm_28441 - ld hl, EnemyMoveAnimation + ld hl, $c608 ld a, $fd ld [hli], a ld [hli], a @@ -36845,7 +36808,7 @@ Function28434: ; 28434 dec b jr nz, .asm_28457 ld hl, $c818 - ld de, PlayerMoveType + ld de, $c612 ld bc, $0000 .asm_28464 inc c @@ -36936,7 +36899,7 @@ Function28499: ; 28499 .asm_284db push bc call Function284f6 - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 add hl, bc pop bc dec c @@ -37044,8 +37007,7 @@ Function284f6: ; 284f6 add hl, bc ld c, $5 ld b, $1 - ld a, $d - call Predef + predef Functione17b pop bc pop de @@ -37082,10 +37044,10 @@ Function28595: ; 28595 ld hl, PartyMon1Species ld bc, $0120 call CopyBytes - ld hl, PartyMon1OT + ld hl, PartyMonOT ld bc, $0042 call CopyBytes - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld bc, $0042 call CopyBytes ld a, [InLinkBattle] @@ -37221,10 +37183,10 @@ Function2868a: ; 2868a pop hl ld bc, $0108 add hl, bc - ld de, OTPartyMon1OT + ld de, OTPartyMonOT ld bc, $0042 call CopyBytes - ld de, OTPartyMon1Nickname + ld de, OTPartyMonNicknames ld bc, $0042 jp CopyBytes ; 286ba @@ -37316,8 +37278,7 @@ Function286ba: ; 286ba add hl, bc ld c, $5 ld b, $1 - ld a, $d - call Predef + predef Functione17b pop bc pop hl ld a, [$ffb5] @@ -37330,8 +37291,7 @@ Function286ba: ; 286ba add hl, bc ld c, $6 ld b, $1 - ld a, $d - call Predef + predef Functione17b pop bc pop hl ld a, [$ffb5] @@ -38054,7 +38014,7 @@ Function28b87: ; 28b87 ld [PlayerSDefLevel], a push af ld a, [DefaultFlypoint] - ld hl, PartyMon1OT + ld hl, PartyMonOT call SkipNames ld de, $c6f2 ld bc, $000b @@ -38093,7 +38053,7 @@ Function28b87: ; 28b87 ld a, [hl] ld [PlayerLightScreenCount], a ld a, [$d003] - ld hl, OTPartyMon1OT + ld hl, OTPartyMonOT call SkipNames ld de, $c724 ld bc, $000b @@ -38105,7 +38065,7 @@ Function28b87: ; 28b87 ld [$c731], a ld a, [hl] ld [$c732], a - ld hl, OTPartyMon1AtkDefDV + ld hl, OTPartyMon1DVs ld a, [$d003] call GetPartyLocation ld a, [hli] @@ -38153,13 +38113,11 @@ Function28b87: ; 28b87 ld a, [$ffcb] cp $1 jr z, .asm_28de4 - ld a, $1e - call Predef + predef Function28f24 jr .asm_28de9 .asm_28de4 - ld a, $1d - call Predef + predef Function28f63 .asm_28de9 pop af @@ -38175,10 +38133,9 @@ Function28b87: ; 28b87 ld a, c call GetPartyLocation ld de, TempMonSpecies - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call CopyBytes - ld a, $7 - call Predef + predef Functionda96 ld a, [PartyCount] dec a ld [CurPartyMon], a @@ -38249,7 +38206,8 @@ Function28ea3: ; 28ea3 ; 28eab String28eab: ; 28eab - db "TRADE", $4e, "CANCEL@" + db "TRADE" + next "CANCEL@" UnknownText_0x28eb8: ; 0x28eb8 ; Trade @ for @ ? @@ -38258,10 +38216,11 @@ UnknownText_0x28eb8: ; 0x28eb8 ; 0x28ebd String28ebd: ; 28ebd - db "Trade completed!@" + db "Trade completed!@" String28ece: ; 28ece - db "Too bad! The trade", $4e, "was canceled!@" + db "Too bad! The trade" + next "was canceled!@" Function28eef: ; 28eef @@ -39113,15 +39072,13 @@ Function29487: ; 29487 Function29491: ; 29491 push de push af - ld a, $2d - call Predef + predef GetUnownLetter pop af ld [CurPartySpecies], a ld [CurSpecies], a call GetBaseData pop de - ld a, $3c - call Predef + predef GetFrontpic ret ; 294a9 @@ -39154,8 +39111,7 @@ Function294c3: ; 294c3 xor a ld [$ffad], a ld bc, $0707 - ld a, $13 - call Predef + predef FillBox call WaitBGMap ret ; 294e7 @@ -39865,22 +39821,23 @@ Function29bfb: ; 29bfb pop bc pop hl jr c, .asm_29c5e - ld de, $0030 + ld de, PartyMon2 - PartyMon1 add hl, de dec b jr nz, .asm_29c13 - ld hl, PartyMon1Move1 + + ld hl, PartyMon1Moves ld a, [PartyCount] ld b, a .asm_29c2e - ld c, $4 + ld c, NUM_MOVES .asm_29c30 ld a, [hli] cp STRUGGLE + 1 jr nc, .asm_29c4c dec c jr nz, .asm_29c30 - ld de, $002c + ld de, PartyMon2 - (PartyMon1 + NUM_MOVES) add hl, de dec b jr nz, .asm_29c2e @@ -40380,8 +40337,7 @@ Function29fe4: ; 29fe4 call GetSRAMBank ld d, $0 ld b, $2 - ld a, $3 - call Predef + predef FlagPredef call CloseSRAM ld a, c and a @@ -40535,14 +40491,14 @@ Function2a09c: ; 2a09c ; 2a0b7 Function2a0b7: ; 2a0b7 - ld a, [RoamMon1Species] + ld a, [wRoamMon1Species] ld b, a ld a, [$d265] cp b ret nz - ld a, [RoamMon1MapGroup] + ld a, [wRoamMon1MapGroup] ld b, a - ld a, [RoamMon1MapNumber] + ld a, [wRoamMon1MapNumber] ld c, a call Function2a09c ret nc @@ -40552,14 +40508,14 @@ Function2a0b7: ; 2a0b7 ; 2a0cf Function2a0cf: ; 2a0cf - ld a, [RoamMon2Species] + ld a, [wRoamMon2Species] ld b, a ld a, [$d265] cp b ret nz - ld a, [RoamMon2MapGroup] + ld a, [wRoamMon2MapGroup] ld b, a - ld a, [RoamMon2MapNumber] + ld a, [wRoamMon2MapNumber] ld c, a call Function2a09c ret nc @@ -40580,7 +40536,7 @@ Function2a0e7:: ; 2a0e7 ret .asm_2a0f8 - xor a + xor a ; BATTLETYPE_NORMAL ld [$d22e], a ld [BattleType], a ld a, 1 @@ -40905,45 +40861,45 @@ Function2a288: ; 2a288 InitRoamMons: ; 2a2a0 -; initialize RoamMon structs +; initialize wRoamMon structs ; species ld a, RAIKOU - ld [RoamMon1Species], a + ld [wRoamMon1Species], a ld a, ENTEI - ld [RoamMon2Species], a + ld [wRoamMon2Species], a ; ld a, SUICUNE -; ld [RoamMon3Species], a +; ld [wRoamMon3Species], a ; level ld a, 40 - ld [RoamMon1Level], a - ld [RoamMon2Level], a -; ld [RoamMon3Level], a + ld [wRoamMon1Level], a + ld [wRoamMon2Level], a +; ld [wRoamMon3Level], a ; raikou starting map ld a, GROUP_ROUTE_42 - ld [RoamMon1MapGroup], a + ld [wRoamMon1MapGroup], a ld a, MAP_ROUTE_42 - ld [RoamMon1MapNumber], a + ld [wRoamMon1MapNumber], a ; entei starting map ld a, GROUP_ROUTE_37 - ld [RoamMon2MapGroup], a + ld [wRoamMon2MapGroup], a ld a, MAP_ROUTE_37 - ld [RoamMon2MapNumber], a + ld [wRoamMon2MapNumber], a ; suicune starting map ; ld a, GROUP_ROUTE_38 -; ld [RoamMon3MapGroup], a +; ld [wRoamMon3MapGroup], a ; ld a, MAP_ROUTE_38 -; ld [RoamMon3MapNumber], a +; ld [wRoamMon3MapNumber], a ; hp xor a ; generate new stats - ld [RoamMon1HP], a - ld [RoamMon2HP], a -; ld [RoamMon3HP], a + ld [wRoamMon1HP], a + ld [wRoamMon2HP], a +; ld [wRoamMon3HP], a ret ; 2a2ce @@ -40960,7 +40916,7 @@ Function2a2ce: ; 2a2ce and 3 jr z, .asm_2a30a dec a - ld hl, RoamMon1MapGroup + ld hl, wRoamMon1MapGroup ld c, a ld b, 0 ld a, 7 @@ -40981,6 +40937,7 @@ Function2a2ce: ; 2a2ce ld [CurPartyLevel], a ld a, BATTLETYPE_ROAMING ld [BattleType], a + pop hl scf ret @@ -40993,43 +40950,43 @@ Function2a2ce: ; 2a2ce Function2a30d: ; 2a30d - ld a, [RoamMon1MapGroup] + ld a, [wRoamMon1MapGroup] cp $ff jr z, .asm_2a324 ld b, a - ld a, [RoamMon1MapNumber] + ld a, [wRoamMon1MapNumber] ld c, a call Function2a355 ld a, b - ld [RoamMon1MapGroup], a + ld [wRoamMon1MapGroup], a ld a, c - ld [RoamMon1MapNumber], a + ld [wRoamMon1MapNumber], a .asm_2a324 - ld a, [RoamMon2MapGroup] + ld a, [wRoamMon2MapGroup] cp $ff jr z, .asm_2a33b ld b, a - ld a, [RoamMon2MapNumber] + ld a, [wRoamMon2MapNumber] ld c, a call Function2a355 ld a, b - ld [RoamMon2MapGroup], a + ld [wRoamMon2MapGroup], a ld a, c - ld [RoamMon2MapNumber], a + ld [wRoamMon2MapNumber], a .asm_2a33b - ld a, [RoamMon3MapGroup] + ld a, [wRoamMon3MapGroup] cp $ff jr z, .asm_2a352 ld b, a - ld a, [RoamMon3MapNumber] + ld a, [wRoamMon3MapNumber] ld c, a call Function2a355 ld a, b - ld [RoamMon3MapGroup], a + ld [wRoamMon3MapGroup], a ld a, c - ld [RoamMon3MapNumber], a + ld [wRoamMon3MapNumber], a .asm_2a352 jp Function2a3f6 @@ -41090,34 +41047,34 @@ Function2a355: ; 2a355 ret Function2a394: ; 2a394 - ld a, [RoamMon1MapGroup] + ld a, [wRoamMon1MapGroup] cp $ff jr z, .asm_2a3a6 call Function2a3cd ld a, b - ld [RoamMon1MapGroup], a + ld [wRoamMon1MapGroup], a ld a, c - ld [RoamMon1MapNumber], a + ld [wRoamMon1MapNumber], a .asm_2a3a6 - ld a, [RoamMon2MapGroup] + ld a, [wRoamMon2MapGroup] cp $ff jr z, .asm_2a3b8 call Function2a3cd ld a, b - ld [RoamMon2MapGroup], a + ld [wRoamMon2MapGroup], a ld a, c - ld [RoamMon2MapNumber], a + ld [wRoamMon2MapNumber], a .asm_2a3b8 - ld a, [RoamMon3MapGroup] + ld a, [wRoamMon3MapGroup] cp $ff jr z, .asm_2a3ca call Function2a3cd ld a, b - ld [RoamMon3MapGroup], a + ld [wRoamMon3MapGroup], a ld a, c - ld [RoamMon3MapNumber], a + ld [wRoamMon3MapNumber], a .asm_2a3ca jp Function2a3f6 @@ -42145,11 +42102,11 @@ Function2c547: ; 2c547 callba Function50000 jr c, .asm_2c5c3 ld a, [CurPartySpecies] - cp $fd + cp EGG jr z, .asm_2c5bc ld a, [CurPartyMon] - ld hl, PartyMon1Move2 - ld bc, $0030 + ld hl, PartyMon1Moves + 1 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld a, [hl] and a @@ -42250,18 +42207,18 @@ Function2c5f9: ; 2c5f9 push bc dec a ld c, a - ld b, $0 - ld hl, PartyMon1Move1 + ld b, 0 + ld hl, PartyMon1Moves add hl, bc ld a, [CurPartyMon] - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes pop bc push bc inc b .asm_2c60f ld a, b - cp $5 + cp NUM_MOVES + 1 jr z, .asm_2c61b inc hl ld a, [hld] @@ -42274,21 +42231,22 @@ Function2c5f9: ; 2c5f9 xor a ld [hl], a pop bc + ld a, b push bc dec a ld c, a - ld b, $0 + ld b, 0 ld hl, PartyMon1PP add hl, bc ld a, [CurPartyMon] - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes pop bc inc b .asm_2c633 ld a, b - cp $5 + cp NUM_MOVES + 1 jr z, .asm_2c63f inc hl ld a, [hld] @@ -42521,8 +42479,7 @@ Function2c7a7: ; 2c7a7 (b:47a7) ; known jump sources: 2c7cd (b:47cd) Function2c7b6: ; 2c7b6 (b:47b6) call Function2c7a7 - ld a, $f - call Predef + predef GetTMHMMove ret Function2c7bf: ; 2c7bf (b:47bf) @@ -42604,13 +42561,14 @@ Function2c80a: ; 2c80a ; 2c867 Function2c867: ; 2c867 - ld a, $e - call Predef + predef CanLearnTMHMMove + push bc ld a, [CurPartyMon] ; $d109 - ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname) + ld hl, PartyMonNicknames ; $de41 (aliases: PartyMonNicknames) call GetNick pop bc + ld a, c and a jr nz, .asm_2c88b @@ -42622,31 +42580,34 @@ Function2c867: ; 2c867 call PrintText jr .asm_2c8b6 .asm_2c88b - callab Functionf9ea + + callab KnowsMove jr c, .asm_2c8b6 - ld a, $0 - call Predef + + predef LearnMove ld a, b and a jr z, .asm_2c8b6 + callba Function106049 - ld a, [CurItem] ; $d106 + ld a, [CurItem] call IsHM ret c + ld c, $5 callab ChangeHappiness call Function2cb0c - jr Function2c8bd + jr .asm_2c8bd + .asm_2c8b6 and a ret -; 2c8b8 (b:48b8) -Function2c8b8: ; 2c8b8 +.asm_2c8b8 ld a, $2 ld [$d0ec], a -Function2c8bd: ; 2c8bd +.asm_2c8bd scf ret ; 2c8bf (b:48bf) @@ -42745,8 +42706,7 @@ Function2c946: ; 2c946 (b:4946) cp $3a jr nc, Function2c915 ld [$d265], a - ld a, $f - call Predef + predef GetTMHMMove ld a, [$d265] ld [CurSpecies], a ; $cf60 hlcoord 1, 14 @@ -42836,9 +42796,10 @@ Function2c9b1: ; 2c9b1 (b:49b1) ; known jump sources: 2c8d6 (b:48d6), 2c915 (b:4915), 2c9bf (b:49bf), 2c9dc (b:49dc) Function2c9e2: ; 2c9e2 (b:49e2) - ld a, [BattleType] ; $d230 - cp $3 + ld a, [BattleType] + cp BATTLETYPE_TUTORIAL jp z, Function2caca + hlcoord 5, 2 ld bc, $a0f ld a, $7f @@ -42880,8 +42841,7 @@ Function2c9e2: ; 2c9e2 (b:49e2) pop af ld [$d265], a .asm_2ca38 - ld a, $f - call Predef + predef GetTMHMMove ld a, [$d265] ld [$d262], a call GetMoveName @@ -42945,8 +42905,7 @@ Function2ca95: ; 2ca95 pop hl ld bc, $0003 add hl, bc - ld a, $f - call Predef + predef GetTMHMMove ld a, [$d265] ld [$d262], a call GetMoveName @@ -43100,7 +43059,7 @@ Function2ed44: ; 2ed44 ld hl, PartyMon1PokerusStatus ld a, [PartyCount] ld b, a - ld de, $0030 + ld de, PartyMon2 - PartyMon1 .loopMons ld a, [hl] and $f @@ -43282,8 +43241,7 @@ Function2ee2f: ; 2ee2f add hl, de ld a, [hl] ld [BattleMonLevel], a - ld a, PREDEF_BATTLE_TRANSITION - call Predef + predef Function8c20f callba Function3ed9f ld a, 1 ld [hBGMapMode], a @@ -43436,8 +43394,8 @@ ClearBattleRAM: ; 2ef18 ld [hl], a ; Clear the entire BattleMons area - ld hl, EnemyMoveStruct - ld bc, $0139 + ld hl, wBattle + ld bc, wBattleEnd - wBattle xor a call ByteFill @@ -43524,858 +43482,7 @@ INCLUDE "battle/effect_commands.asm" SECTION "bankE", ROMX, BANK[$E] -Function38000: ; 38000 - and a - ld a, [IsInBattle] - dec a - ret z - ld a, [InLinkBattle] - and a - ret nz - callba Function3e8d1 - ret nz - ld a, [PlayerSubStatus5] - bit 7, a - jr nz, Function38041 - ld a, [$c731] - and a - jr nz, Function38041 - ld hl, TrainerClassAttributes + 5 - ld a, [$cfc0] - and a - jr nz, .asm_38032 - ld a, [TrainerClass] - dec a - ld bc, 7 - call AddNTimes - -.asm_38032 - bit 0, [hl] - jp nz, Function38045 - bit 1, [hl] - jp nz, Function38083 - bit 2, [hl] - jp nz, Function380c1 - ; fallthrough -; 38041 - -Function38041: ; 38041 - call Function38105 - ret -; 38045 - -Function38045: ; 38045 - callab Function34941 - ld a, [$c717] - and $f0 - jp z, Function38041 - cp $10 - jr nz, .asm_38061 - call Random - cp $80 - jr c, .asm_38077 - jp Function38041 - -.asm_38061 - cp $20 - jr nz, .asm_3806f - call Random - cp $c8 - jr c, .asm_38077 - jp Function38041 - -.asm_3806f - call Random - cp $a - jp c, Function38041 - -.asm_38077 - ld a, [$c717] - and $f - inc a - ld [$c718], a - jp Function3844b -; 38083 - -Function38083: ; 38083 - callab Function34941 - ld a, [$c717] - and $f0 - jp z, Function38041 - cp $10 - jr nz, .asm_3809f - call Random - cp $14 - jr c, .asm_380b5 - jp Function38041 - -.asm_3809f - cp $20 - jr nz, .asm_380ad - call Random - cp $1e - jr c, .asm_380b5 - jp Function38041 - -.asm_380ad - call Random - cp $c8 - jp c, Function38041 - -.asm_380b5 - ld a, [$c717] - and $f - inc a - ld [$c718], a - jp Function3844b -; 380c1 - -Function380c1: ; 380c1 - callab Function34941 - ld a, [$c717] - and $f0 - jp z, Function38041 - cp $10 - jr nz, .asm_380dd - call Random - cp $32 - jr c, .asm_380f3 - jp Function38041 - -.asm_380dd - cp $20 - jr nz, .asm_380eb - call Random - cp $80 - jr c, .asm_380f3 - jp Function38041 - -.asm_380eb - call Random - cp $32 - jp c, Function38041 - -.asm_380f3 - ld a, [$c717] - and $f - inc a - ld [$c718], a - jp Function3844b -; 380ff - - -Function380ff: ; 380ff - ld a, [EnemySubStatus5] - bit 7, a - ret -; 38105 - - -Function38105: ; 38105 - ld a, [$cfc0] - and a - ret nz - ld a, [$c650] - ld b, a - ld a, [$c651] - or b - ret z - call Function38170 - ret nc - ld a, [TrainerClass] - dec a - ld hl, TrainerClassAttributes + 5 - ld bc, 7 - call AddNTimes - ld b, h - ld c, l - ld hl, Unknown_38196 - ld de, $c650 -.asm_3812c - ld a, [hl] - and a - inc a - ret z - ld a, [de] - cp [hl] - jr z, .asm_3813f - inc de - ld a, [de] - cp [hl] - jr z, .asm_3813f - dec de - inc hl - inc hl - inc hl - jr .asm_3812c - -.asm_3813f - inc hl - push hl - push de - ld de, .asm_3814a - push de - ld a, [hli] - ld h, [hl] - ld l, a - jp [hl] - -.asm_3814a - pop de - pop hl - inc hl - inc hl - jr c, .asm_3812c - xor a - ld [de], a - inc a - ld [$c70f], a - ld hl, EnemySubStatus3 ; $c66f - res 0, [hl] - xor a - ld [EnemyFuryCutterCount], a ; $c680 - ld [$c681], a - ld [$c72c], a - ld hl, EnemySubStatus4 ; $c670 - res 6, [hl] - xor a - ld [LastPlayerCounterMove], a ; $c6f9 - scf - ret - - -Function38170: ; 38170 - ld a, [OTPartyCount] - ld d, a - ld e, $0 - ld hl, OTPartyMon1Level - ld bc, $0030 -.asm_3817c - ld a, [hl] - cp e - jr c, .asm_38181 - ld e, a -.asm_38181 - add hl, bc - dec d - jr nz, .asm_3817c - - ld a, [CurOTMon] - ld hl, OTPartyMon1Level - call AddNTimes - ld a, [hl] - cp e - jr nc, .asm_38194 - and a - ret - -.asm_38194 - scf - ret -; 38196 - -Unknown_38196: ; 39196 - dbw FULL_RESTORE, Function38208 - dbw MAX_POTION, Function38220 - dbw HYPER_POTION, Function38284 - dbw SUPER_POTION, Function38292 - dbw POTION, Function382a0 - dbw X_ACCURACY, Function382f9 - dbw FULL_HEAL, Function381be - dbw GUARD_SPEC, Function38305 - dbw DIRE_HIT, Function38311 - dbw X_ATTACK, Function3831d - dbw X_DEFEND, Function38329 - dbw X_SPEED, Function38335 - dbw X_SPECIAL, Function38341 - db $ff -; 381be - -Function381be: ; 381be - call Function381ca - jp c, Function38383 - call Function383a3 - jp Function38385 -; 381ca - -; known jump sources: 381be (e:41be), 38214 (e:4214) -Function381ca: ; 381ca (e:41ca) - ld a, [EnemyMonStatus] ; $d214 - and a - jp z, Function38383 - ld a, [bc] - bit 6, a - jr nz, .asm_381e7 - ld a, [bc] - bit 4, a - jp nz, Function38385 - call Random - cp $32 - jp c, Function38385 - jp Function38383 - -.asm_381e7 - ld a, [EnemySubStatus5] ; $c671 - bit 0, a - jr z, .asm_381fd - ld a, [$c67c] - cp $4 - jr c, .asm_381fd - call Random - cp $80 - jp c, Function38385 -.asm_381fd - ld a, [EnemyMonStatus] ; $d214 - and $27 - jp z, Function38383 - jp Function38385 -; 38208 - -Function38208: ; 38208 - call Function3822c - jp nc, Function3821a - ld a, [bc] - bit 6, a - jp z, Function38383 - call Function381ca - jp c, Function38383 - -; known jump sources: 3820b (e:420b) -Function3821a: ; 3821a (e:421a) - call Function383b5 - jp Function38385 -; 38220 - -Function38220: ; 38220 - call Function3822c - jp c, Function38383 - call Function383ae - jp Function38385 - -; known jump sources: 38208 (e:4208), 38220 (e:4220), 38284 (e:4284) -Function3822c: ; 3822c (e:422c) - ld a, [bc] - bit 6, a - jr nz, Function38267 - callab AICheckEnemyHalfHP - jp c, Function38383 - ld a, [bc] - bit 5, a - jp nz, Function38254 - callab AICheckEnemyQuarterHP - jp nc, Function38281 - call Random - cp $80 - jp c, Function38281 - jp Function38383 - -; known jump sources: 3823d (e:423d) -Function38254: ; 38254 (e:4254) - callab AICheckEnemyQuarterHP - jp c, Function38383 - call Random - cp $32 - jp c, Function38383 - jr Function38281 - -Function38267: ; 38267 (e:4267) - callab AICheckEnemyHalfHP - jp c, Function38383 - callab AICheckEnemyQuarterHP - jp nc, Function38281 - call Random - cp $32 - jp nc, Function38383 - -; known jump sources: 38246 (e:4246), 3824e (e:424e), 38265 (e:4265), 38276 (e:4276) -Function38281: ; 38281 (e:4281) - jp Function38385 -; 38284 - -Function38284: ; 38284 - call Function3822c - jp c, Function38383 - ld b, 200 - call Function383f4 - jp Function38385 -; 38292 (e:4292) - -Function38292: ; 38292 - call Function3822c - jp c, Function38383 - -Function38298: ; 38298 - ld b, 50 - call Function383ee - jp Function38385 -; 382a0 - -Function382a0: ; 382a0 - call Function3822c - jp c, Function38383 - ld b, 20 - call Function383e8 - jp Function38385 -; 382ae - -Function382ae: ; 382ae - callab AICheckEnemyMaxHP - jr c, .asm_382e4 - push bc - ld de, EnemyMonMaxHPLo - ld hl, EnemyMonHPLo - ld a, [de] - sub [hl] - jr z, .asm_382e7 - dec hl - dec de - ld c, a - sbc [hl] - and a - jr nz, .asm_382e7 - ld a, c - cp b - jp c, .asm_382d5 - callab AICheckEnemyQuarterHP - jr c, .asm_382e7 - -.asm_382d5 - pop bc - ld a, [bc] - bit 5, a - jp z, Function38385 - call Random - cp $80 - jp c, Function38385 - -.asm_382e4 - jp Function38383 - -.asm_382e7 - pop bc - ld a, [bc] - bit 5, a - jp z, Function38383 - call Random - cp $64 - jp c, Function38385 - jp Function38383 -; 382f9 - -Function382f9: ; 382f9 - call Function3834d - jp c, Function38383 - call Function384f7 - jp Function38385 -; 38305 - -Function38305: ; 38305 - call Function3834d - jp c, Function38383 - call Function38504 - jp Function38385 -; 38311 - -Function38311: ; 38311 - call Function3834d - jp c, Function38383 - call Function38511 - jp Function38385 -; 3831d (e:431d) - -Function3831d: ; 3831d - call Function3834d - jp c, Function38383 - call Function38541 - jp Function38385 -; 38329 - -Function38329: ; 38329 - call Function3834d - jp c, Function38383 - call Function38547 - jp Function38385 -; 38335 - -Function38335: ; 38335 - call Function3834d - jp c, Function38383 - call Function3854d - jp Function38385 -; 38341 - -Function38341: ; 38341 - call Function3834d - jp c, Function38383 - call Function38553 - jp Function38385 -; 3834d - -; known jump sources: 38311 (e:4311) -Function3834d: ; 3834d (e:434d) - ld a, [EnemyTurnsTaken] ; $c6dc - and a - jr nz, .asm_38372 - ld a, [bc] - bit 4, a - jp nz, Function38385 - call Random - cp $80 - jp c, Function38383 - ld a, [bc] - bit 6, a - jp nz, Function38385 - call Random - cp $80 - jp c, Function38383 - jp Function38385 -.asm_38372 - ld a, [bc] - bit 4, a - jp z, Function38383 - call Random - cp $32 - jp nc, Function38383 - jp Function38385 - -; known jump sources: 381c1 (e:41c1), 381ce (e:41ce), 381e4 (e:41e4), 38202 (e:4202), 38211 (e:4211), 38217 (e:4217), 38223 (e:4223), 38237 (e:4237), 38251 (e:4251), 3825a (e:425a), 38262 (e:4262), 3826d (e:426d), 3827e (e:427e), 38287 (e:4287), 38314 (e:4314), 3835e (e:435e), 3836c (e:436c), 38375 (e:4375), 3837d (e:437d) -Function38383: ; 38383 (e:4383) - scf - ret - -; known jump sources: 381c7 (e:41c7), 381d9 (e:41d9), 381e1 (e:41e1), 381fa (e:41fa), 38205 (e:4205), 3821d (e:421d), 38229 (e:4229), 38281 (e:4281), 3828f (e:428f), 3831a (e:431a), 38356 (e:4356), 38364 (e:4364), 3836f (e:436f), 38380 (e:4380) -Function38385: ; 38385 (e:4385) - and a - ret - - -Function38387: ; 38387 - call UpdateEnemyMonInParty - callba Function3e036 - ld a, $1 - ld [hBGMapMode], a - ld hl, $c6e6 - dec [hl] - scf - ret -; 3839a - -Function3839a: ; 3839a - push de - ld de, SFX_FULL_HEAL - call PlaySFX - pop de - ret -; 383a3 - - -; known jump sources: 381c4 (e:41c4) -Function383a3: ; 383a3 (e:43a3) - call Function3839a - call Function384e0 - ld a, $26 - jp Function38568 - -; known jump sources: 38226 (e:4226) -Function383ae: ; 383ae (e:43ae) - ld a, $f - ld [$d1f1], a - jr asm_383c6 - -; known jump sources: 3821a (e:421a) -Function383b5: ; 383b5 (e:43b5) - call Function384e0 - ld a, $e - ld [$d1f1], a - ld hl, EnemySubStatus3 ; $c66f - res 7, [hl] - xor a - ld [EnemyConfuseCount], a ; $c67b -asm_383c6: ; 383c6 (e:43c6) - ld de, $d1ec - ld hl, EnemyMonHPLo ; $d217 - ld a, [hld] - ld [de], a - inc de - ld a, [hl] - ld [de], a - inc de - ld hl, EnemyMonMaxHPLo ; $d219 - ld a, [hld] - ld [de], a - inc de - ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) - ld [EnemyMonHPLo], a ; $d217 - ld a, [hl] - ld [de], a - ld [Buffer2], a ; $d1eb (aliases: MovementType) - ld [EnemyMonHPHi], a ; $d216 (aliases: EnemyMonHP) - jr asm_38436 -; 383e8 (e:43e8) - -Function383e8: ; 383e8 - ld a, POTION - ld b, 20 - jr Function383f8 - -Function383ee: ; 383ee - ld a, SUPER_POTION - ld b, 50 - jr Function383f8 - -; known jump sources: 3828c (e:428c) -Function383f4: ; 383f4 (e:43f4) - ld a, HYPER_POTION - ld b, 200 - -Function383f8: ; 383f8 - ld [$d1f1], a - ld hl, EnemyMonHPLo ; $d217 - ld a, [hl] - ld [$d1ec], a - add b - ld [hld], a - ld [$d1ee], a - ld a, [hl] - ld [$d1ed], a - ld [$d1ef], a - jr nc, .asm_38415 - inc a - ld [hl], a - ld [$d1ef], a -.asm_38415 - inc hl - ld a, [hld] - ld b, a - ld de, EnemyMonMaxHPLo ; $d219 - ld a, [de] - dec de - ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) - sub b - ld a, [hli] - ld b, a - ld a, [de] - ld [Buffer2], a ; $d1eb (aliases: MovementType) - sbc b - jr nc, asm_38436 - inc de - ld a, [de] - dec de - ld [hld], a - ld [$d1ee], a - ld a, [de] - ld [hl], a - ld [$d1ef], a -asm_38436: ; 38436 (e:4436) - call Function38571 - hlcoord 2, 2 - xor a - ld [$d10a], a - call Function3839a - ld a, $b - call Predef - jp Function38387 - - -Function3844b: ; 3844b - ld a, [OTPartyCount] - ld c, a - ld hl, OTPartyMon1HP - ld d, 0 -.asm_38454 - ld a, [hli] - ld b, a - ld a, [hld] - or b - jr z, .asm_3845b - inc d - -.asm_3845b - push bc - ld bc, $0030 - add hl, bc - pop bc - dec c - jr nz, .asm_38454 - ld a, d - cp $2 - jp nc, Function3846c - and a - ret -; 3846c - -Function3846c: ; 3846c - ld a, $1 - ld [$c711], a - ld [$c70f], a - ld hl, EnemySubStatus4 - res 6, [hl] - xor a - ld [hBattleTurn], a - callab Function3dc5b - push af - ld a, [CurOTMon] - ld hl, OTPartyMon1Status - ld bc, $0030 - call AddNTimes - ld d, h - ld e, l - ld hl, EnemyMonStatus - ld bc, $0004 - call CopyBytes - pop af - jr c, .asm_384a3 - ld hl, UnknownText_0x384d0 - call PrintText - -.asm_384a3 - ld a, $1 - ld [$d264], a - callab NewEnemyMonStatus - callab ResetEnemyStatLevels - ld hl, PlayerSubStatus1 - res 7, [hl] - callba Function3d4e1 - callba Function3d57a - xor a - ld [$d264], a - ld a, [InLinkBattle] - and a - ret nz - scf - ret -; 384d0 - -UnknownText_0x384d0: ; 384d0 - text_jump UnknownText_0x1bcf9c - db "@" -; 384d5 - -Function384d5: ; 384d5 - call Function3839a - call Function384e0 - ld a, $34 - jp Function38568 -; 384e0 - -Function384e0: ; 384e0 - ld a, [CurOTMon] - ld hl, OTPartyMon1Status - ld bc, $0030 - call AddNTimes - xor a - ld [hl], a - ld [EnemyMonStatus], a - ld hl, EnemySubStatus5 - res 0, [hl] - ret -; 384f7 - -Function384f7: ; 384f7 - call Function3839a - ld hl, EnemySubStatus4 - set 0, [hl] - ld a, $21 - jp Function38568 -; 38504 - -Function38504: ; 38504 - call Function3839a - ld hl, EnemySubStatus4 - set 1, [hl] - ld a, $29 - jp Function38568 -; 38511 - -Function38511: ; 38511 - call Function3839a - ld hl, EnemySubStatus4 - set 2, [hl] - ld a, $2c - jp Function38568 -; 3851e - -Function3851e: ; 3851e - ld [hMultiplier], a - ld hl, EnemyMonMaxHPHi - ld a, [hli] - ld [hProduct], a - ld a, [hl] - ld [hMultiplicand], a - ld b, $2 - call Divide - ld a, [$ffb6] - ld c, a - ld a, [$ffb5] - ld b, a - ld hl, EnemyMonHPLo - ld a, [hld] - ld e, a - ld a, [hl] - ld d, a - ld a, d - sub b - ret nz - ld a, e - sub c - ret -; 38541 - -Function38541: ; 38541 - ld b, $0 - ld a, $31 - jr Function38557 -; 38547 - -Function38547: ; 38547 - ld b, $1 - ld a, $33 - jr Function38557 -; 3854d - -Function3854d: ; 3854d - ld b, $2 - ld a, $34 - jr Function38557 -; 38553 - -Function38553: ; 38553 - ld b, $3 - ld a, $35 - -Function38557 - ld [$d1f1], a - push bc - call Function38571 - pop bc - callba Function361ef - jp Function38387 -; 38568 - - -Function38568: ; 38568 - ld [$d1f1], a - call Function38571 - jp Function38387 -; 38571 - -Function38571: ; 38571 - ld a, [$d1f1] - ld [$d265], a - call GetItemName - ld hl, StringBuffer1 - ld de, $d050 - ld bc, $000d - call CopyBytes - ld hl, UnknownText_0x3858c - jp PrintText -; 3858c - -UnknownText_0x3858c: ; 3858c - text_jump UnknownText_0x1bcfaf - db "@" -; 38591 - +INCLUDE "battle/ai/items.asm" AIScoring: ; 38591 INCLUDE "battle/ai/scoring.asm" @@ -44384,19 +43491,20 @@ INCLUDE "battle/ai/scoring.asm" Function3952d: ; 3952d ld hl, RivalName ld a, c - cp $9 - jr z, .asm_39544 + cp RIVAL1 + jr z, .rival + ld [CurSpecies], a - ld a, $7 + ld a, TRAINER_NAME ld [$cf61], a call GetName ld de, StringBuffer1 ret -.asm_39544 +.rival ld de, StringBuffer1 push de - ld bc, $000b + ld bc, NAME_LENGTH call CopyBytes pop de ret @@ -44406,20 +43514,22 @@ Function39550: ; 39550 ld hl, $d26b ld a, [InLinkBattle] and a - jr nz, .asm_3956f + jr nz, .ok + ld hl, RivalName ld a, c - cp $9 - jr z, .asm_3956f + cp RIVAL1 + jr z, .ok + ld [CurSpecies], a - ld a, $7 + ld a, TRAINER_NAME ld [$cf61], a call GetName ld hl, StringBuffer1 -.asm_3956f +.ok ld bc, $000d - ld de, $c656 + ld de, OTName push de call CopyBytes pop de @@ -44449,265 +43559,293 @@ Function3957b: ; 3957b INCLUDE "trainers/attributes.asm" -Function39771: ; 39771 +ReadTrainerParty: ; 39771 ld a, [$cfc0] bit 0, a ret nz + ld a, [InLinkBattle] and a ret nz + ld hl, OTPartyCount xor a ld [hli], a dec a ld [hl], a - ld hl, OTPartyMon1Species - ld bc, $0120 + + ld hl, OTPartyMons + ld bc, OTPartyMonsEnd - OTPartyMons xor a call ByteFill + ld a, [OtherTrainerClass] - cp $c - jr nz, .asm_3979e + cp CAL + jr nz, .not_cal2 ld a, [OtherTrainerID] - cp $2 - jr z, .asm_397d3 + cp CAL2 + jr z, .cal2 ld a, [OtherTrainerClass] +.not_cal2 -.asm_3979e dec a ld c, a - ld b, $0 + ld b, 0 ld hl, TrainerGroups add hl, bc add hl, bc ld a, [hli] ld h, [hl] ld l, a + ld a, [OtherTrainerID] ld b, a -.asm_397ae +.skip_trainer dec b - jr z, .asm_397b8 -.asm_397b1 + jr z, .got_trainer +.next ld a, [hli] cp $ff - jr nz, .asm_397b1 - jr .asm_397ae + jr nz, .next + jr .skip_trainer +.got_trainer -.asm_397b8 +.skip_name ld a, [hli] - cp $50 - jr nz, .asm_397b8 + cp "@" + jr nz, .skip_name + ld a, [hli] ld c, a - ld b, $0 + ld b, 0 ld d, h ld e, l - ld hl, Jumptable_397e3 + ld hl, TrainerTypes add hl, bc add hl, bc ld a, [hli] ld h, [hl] ld l, a - ld bc, .asm_397d0 + ld bc, .done push bc jp [hl] -.asm_397d0 +.done jp Function3991b -.asm_397d3 +.cal2 ld a, $0 call GetSRAMBank ld de, $ac0a - call Function39806 + call TrainerType2 call CloseSRAM - jr .asm_397d0 + jr .done ; 397e3 -Jumptable_397e3: ; 397e3 - dw Function397eb - dw Function39806 - dw Function39871 - dw Function3989d +TrainerTypes: ; 397e3 + dw TrainerType1 ; level, species + dw TrainerType2 ; level, species, moves + dw TrainerType3 ; level, species, item + dw TrainerType4 ; level, species, item, moves ; 397eb -Function397eb: ; 397eb +TrainerType1: ; 397eb +; normal (level, species) ld h, d ld l, e -.asm_397ed +.loop ld a, [hli] cp $ff ret z - ld [CurPartyLevel], a ; $d143 + + ld [CurPartyLevel], a ld a, [hli] - ld [CurPartySpecies], a ; $d108 - ld a, $1 - ld [MonType], a ; $cf5f + ld [CurPartySpecies], a + ld a, OTPARTYMON + ld [MonType], a push hl - ld a, $6 - call Predef + predef Functiond88c pop hl - jr .asm_397ed + jr .loop ; 39806 -Function39806: ; 39806 +TrainerType2: ; 39806 +; moves ld h, d ld l, e -.asm_39808 +.loop ld a, [hli] cp $ff ret z + ld [CurPartyLevel], a ld a, [hli] ld [CurPartySpecies], a - ld a, $1 + ld a, OTPARTYMON ld [MonType], a + push hl - ld a, $6 - call Predef + predef Functiond88c ld a, [OTPartyCount] dec a - ld hl, OTPartyMon1Move1 - ld bc, $0030 + ld hl, OTPartyMon1Moves + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld d, h ld e, l pop hl - ld b, $4 -.asm_39830 + + ld b, NUM_MOVES +.copy_moves ld a, [hli] ld [de], a inc de dec b - jr nz, .asm_39830 + jr nz, .copy_moves + push hl + ld a, [OTPartyCount] dec a ld hl, OTPartyMon1Species - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld d, h ld e, l - ld hl, $0017 + ld hl, OTPartyMon1PP - OTPartyMon1 add hl, de push hl - ld hl, $0002 + ld hl, OTPartyMon1Moves - OTPartyMon1 add hl, de pop de - ld b, $4 -.asm_39852 + + ld b, NUM_MOVES +.copy_pp ld a, [hli] and a - jr z, .asm_3986e + jr z, .copied_pp + push hl push bc dec a ld hl, Moves + MOVE_PP - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte pop bc pop hl + ld [de], a inc de dec b - jr nz, .asm_39852 + jr nz, .copy_pp +.copied_pp -.asm_3986e pop hl - jr .asm_39808 + jr .loop ; 39871 -Function39871: ; 39871 +TrainerType3: ; 39871 +; item ld h, d ld l, e -.asm_39873 +.loop ld a, [hli] cp $ff ret z - ld [CurPartyLevel], a ; $d143 + + ld [CurPartyLevel], a ld a, [hli] - ld [CurPartySpecies], a ; $d108 - ld a, $1 - ld [MonType], a ; $cf5f + ld [CurPartySpecies], a + ld a, OTPARTYMON + ld [MonType], a push hl - ld a, $6 - call Predef - ld a, [OTPartyCount] ; $d280 + predef Functiond88c + ld a, [OTPartyCount] dec a - ld hl, OTPartyMon1Item ; $d289 - ld bc, $30 + ld hl, OTPartyMon1Item + ld bc, OTPartyMon2 - OTPartyMon1 call AddNTimes ld d, h ld e, l pop hl ld a, [hli] ld [de], a - jr .asm_39873 + jr .loop ; 3989d (e:589d) -Function3989d: ; 3989d +TrainerType4: ; 3989d +; item + moves ld h, d ld l, e -.asm_3989f +.loop ld a, [hli] cp $ff ret z + ld [CurPartyLevel], a ld a, [hli] ld [CurPartySpecies], a - ld a, $1 + + ld a, OTPARTYMON ld [MonType], a + push hl - ld a, $6 - call Predef + predef Functiond88c ld a, [OTPartyCount] dec a - ld hl, $d289 - ld bc, $0030 + ld hl, OTPartyMon1Item + ld bc, OTPartyMon2 - OTPartyMon1 call AddNTimes ld d, h ld e, l pop hl + ld a, [hli] ld [de], a + push hl ld a, [OTPartyCount] dec a - ld hl, $d28a - ld bc, $0030 + ld hl, OTPartyMon1Moves + ld bc, OTPartyMon2 - OTPartyMon1 call AddNTimes ld d, h ld e, l pop hl - ld b, $4 -.asm_398da + + ld b, NUM_MOVES +.copy_moves ld a, [hli] ld [de], a inc de dec b - jr nz, .asm_398da + jr nz, .copy_moves + push hl + ld a, [OTPartyCount] dec a ld hl, OTPartyMon1 - ld bc, $0030 + ld bc, OTPartyMon2 - OTPartyMon1 call AddNTimes ld d, h ld e, l - ld hl, $0017 + ld hl, OTPartyMon1PP - OTPartyMon1 add hl, de + push hl - ld hl, $0002 + ld hl, OTPartyMon1Moves - OTPartyMon1 add hl, de pop de - ld b, $4 -.asm_398fc + + ld b, NUM_MOVES +.copy_pp ld a, [hli] and a - jr z, .asm_39918 + jr z, .copied_pp + push hl push bc dec a @@ -44718,34 +43856,34 @@ Function3989d: ; 3989d call GetFarByte pop bc pop hl + ld [de], a inc de dec b - jr nz, .asm_398fc + jr nz, .copy_pp +.copied_pp -.asm_39918 pop hl - jr .asm_3989f + jr .loop ; 3991b -; known jump sources: 397d0 (e:57d0) Function3991b: ; 3991b (e:591b) - ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct) + ld hl, $ffb3 xor a ld [hli], a ld [hli], a ld [hli], a - ld a, [$c652] + ld a, [$c652] ; base reward ld [hli], a - ld a, [CurPartyLevel] ; $d143 + ld a, [CurPartyLevel] ld [hl], a call Multiply ld hl, $c686 xor a ld [hli], a - ld a, [$FF00+$b5] + ld a, [$ffb5] ld [hli], a - ld a, [$FF00+$b6] + ld a, [$ffb6] ld [hl], a ret @@ -44763,14 +43901,16 @@ Function39939:: ; 39939 Function3994c:: ; 3994c ld a, c - cp $c + cp CAL jr nz, .asm_3996d + ld a, $0 call GetSRAMBank ld a, [$abfd] and a call CloseSRAM jr z, .asm_3996d + ld a, $0 call GetSRAMBank ld hl, $abfe @@ -44792,6 +43932,7 @@ Function3994c:: ; 3994c .asm_3997a dec b jr z, Function39984 + .asm_3997d ld a, [hli] cp $ff @@ -45274,8 +44415,7 @@ Function402fa: ; 402fa call Function40bb1 ld a, [$c7e4] ld e, a - ld a, $32 - call Predef + predef Function91d11 call Function41401 call DelayFrame xor a @@ -47303,8 +46443,7 @@ Function4143b: ; 4143b ld [CurPartySpecies], a call GetBaseData ld de, VTiles2 - ld a, $3c - call Predef + predef GetFrontpic ret .asm_4145b @@ -47465,8 +46604,7 @@ Function41a58: ; 41a58 (10:5a58) ld [CurPartySpecies], a ; $d108 call GetBaseData ld de, $9000 - ld a, $3c - call Predef + predef GetFrontpic pop af ld [UnownLetter], a ; $d234 ret @@ -47496,8 +46634,7 @@ Function41a7f: ; 41a7f call WaitBGMap call GetBaseData ld de, VTiles2 - ld a, $3c - call Predef + predef GetFrontpic ld a, $4 call Function41423 ld a, [CurPartySpecies] @@ -47601,8 +46738,7 @@ Function421f5: ; 421f5 push hl xor a ld [MonType], a - ld a, $1f - call Predef + predef Function5084a pop hl .asm_42230 @@ -47644,8 +46780,8 @@ Function421f5: ; 421f5 jp z, .asm_423f8 push hl - ld de, TempMonAtk - ld hl, TempMonDef + ld de, TempMonAttack + ld hl, TempMonDefense ld c, 2 call StringCmp ld a, ATK_EQ_DEF @@ -47753,7 +46889,7 @@ Function421f5: ; 421f5 ld a, [hl] ld [Buffer2], a ld a, [CurPartyMon] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call GetNick call CopyName1 ld hl, UnknownText_0x42482 @@ -47812,8 +46948,7 @@ Function421f5: ; 421f5 ld hl, $d118 ld de, TempMonMaxHP ld b, $1 - ld a, PREDEF_FILLSTATS - call Predef + predef Functione167 ld a, [CurPartyMon] ld hl, PartyMons @@ -47842,14 +46977,14 @@ Function421f5: ; 421f5 ld [hl], a ld hl, TempMonSpecies - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call CopyBytes ld a, [CurSpecies] ld [$d265], a xor a ld [MonType], a - call Function42487 + call LearnLevelMoves ld a, [$d265] dec a call SetSeenAndCaughtMon @@ -47859,8 +46994,7 @@ Function421f5: ; 421f5 jr nz, .asm_423ec ld hl, TempMonDVs - ld a, PREDEF_GET_UNOWN_LETTER - call Predef + predef GetUnownLetter callab Functionfba18 .asm_423ec @@ -47922,7 +47056,7 @@ Function42414: ; 42414 jr nz, .asm_4242b ld a, [CurPartyMon] ld bc, $000b - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call AddNTimes push hl ld a, [CurSpecies] @@ -47979,7 +47113,7 @@ UnknownText_0x42482: ; 0x42482 ; 0x42487 -Function42487: ; 42487 +LearnLevelMoves: ; 42487 ld a, [$d265] ld [CurPartySpecies], a dec a @@ -47991,50 +47125,54 @@ Function42487: ; 42487 ld a, [hli] ld h, [hl] ld l, a -.asm_42499 + +.skip_evos ld a, [hli] and a - jr nz, .asm_42499 -.asm_4249d + jr nz, .skip_evos + +.find_move ld a, [hli] and a - jr z, .asm_424da + jr z, .done + ld b, a ld a, [CurPartyLevel] cp b ld a, [hli] - jr nz, .asm_4249d + jr nz, .find_move + push hl ld d, a - ld hl, PartyMon1Move1 + ld hl, PartyMon1Moves ld a, [CurPartyMon] - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes - ld b, $4 -.asm_424b9 + + ld b, NUM_MOVES +.check_move ld a, [hli] cp d - jr z, .asm_424c2 + jr z, .has_move dec b - jr nz, .asm_424b9 - jr .asm_424c5 + jr nz, .check_move + jr .learn +.has_move -.asm_424c2 pop hl - jr .asm_4249d + jr .find_move -.asm_424c5 +.learn ld a, d ld [$d262], a ld [$d265], a call GetMoveName call CopyName1 - ld a, $0 - call Predef + predef LearnMove pop hl - jr .asm_4249d + jr .find_move -.asm_424da +.done ld a, [CurPartySpecies] ld [$d265], a ret @@ -48042,7 +47180,7 @@ Function42487: ; 42487 FillMoves: ; 424e1 -; Fill in moves at de for CurPartySpecies at CurPartyLevle +; Fill in moves at de for CurPartySpecies at CurPartyLevel push hl push de @@ -48113,7 +47251,7 @@ FillMoves: ; 424e1 and a jr z, .ShiftedMove push de - ld bc, PartyMon1PP - PartyMon1Move4 + ld bc, PartyMon1PP - (PartyMon1Moves + NUM_MOVES - 1) add hl, bc ld d, h ld e, l @@ -48136,7 +47274,7 @@ FillMoves: ; 424e1 push hl dec a ld hl, Moves + MOVE_PP - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH call AddNTimes ld a, BANK(Moves) call GetFarByte @@ -48153,7 +47291,7 @@ FillMoves: ; 424e1 ; 4256e ShiftMoves: ; 4256e - ld c, $3 + ld c, NUM_MOVES - 1 .asm_42570 inc de ld a, [de] @@ -48167,8 +47305,7 @@ ShiftMoves: ; 4256e Function42577: ; 42577 push de ld d, $0 - ld a, $3 - call Predef + predef FlagPredef pop de ret ; 42581 @@ -48260,7 +47397,7 @@ AIChooseMove: ; 440ce and a jr z, .CheckPP - ld hl, EnemyMonMove1 + ld hl, EnemyMonMoves ld c, 0 .CheckDisabledMove cp [hl] @@ -48321,8 +47458,7 @@ AIChooseMove: ; 440ce push bc ld d, $e ; BANK(TrainerAI) - ld a, PREDEF_FLAG - call Predef + predef FlagPredef ld d, c pop bc @@ -48372,12 +47508,12 @@ AIChooseMove: ; 440ce inc [hl] dec hl inc a - cp EnemyMonMovesEnd - EnemyMonMoves + 1 + cp NUM_MOVES + 1 jr nz, .asm_44175 ld hl, Buffer1 ld de, EnemyMonMoves - ld c, EnemyMonMovesEnd - EnemyMonMoves + ld c, NUM_MOVES .asm_44184 ld a, [de] and a @@ -48439,14 +47575,16 @@ AIScoringPointers: ; 441af Function441cf: ; 441cf ld hl, Unknown_441fc ld b, 25 -.asm_441d4 +.loop ld a, [hli] + + ; Wrap around cp $fe - jr nz, .asm_441dd + jr nz, .ok ld hl, Unknown_441fc ld a, [hli] +.ok -.asm_441dd ld [$c7db], a ld a, [hli] ld c, a @@ -48457,7 +47595,7 @@ Function441cf: ; 441cf pop bc call DelayFrames dec b - jr nz, .asm_441d4 + jr nz, .loop xor a ld [$c7db], a call Function44207 @@ -48467,11 +47605,11 @@ Function441cf: ; 441cf ; 441fc Unknown_441fc: ; 441fc - db $00, $07 - db $01, $07 - db $02, $07 - db $03, $07 - db $04, $07 + db 0, 7 + db 1, 7 + db 2, 7 + db 3, 7 + db 4, 7 db $fe ; 44207 @@ -48857,7 +47995,7 @@ Function44654:: ; 44654 jr c, .asm_446c6 ld a, [CurPartyMon] ld hl, PartyMon1Item - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld d, [hl] callba ItemIsMail @@ -48920,7 +48058,7 @@ Function446cc:: ; 446cc push af push bc ld hl, PartyMon1Item - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes pop bc ld [hl], b @@ -48939,14 +48077,14 @@ Function446cc:: ; 446cc call CopyBytes pop af push af - ld hl, PartyMon1OT + ld hl, PartyMonOT ld bc, $000b call AddNTimes ld bc, $000a call CopyBytes pop af ld hl, PartyMon1ID - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld a, [hli] ld [de], a @@ -49021,7 +48159,7 @@ Function44781: ; 44781 pop de pop hl ret c - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 add hl, bc dec e jr nz, .asm_4478b @@ -51176,10 +50314,10 @@ Function48d4a: ; 48d4a (12:4d4a) ; known jump sources: 48d40 (12:4d40), 48d46 (12:4d46) Function48d94: ; 48d94 (12:4d94) xor a - ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct) + ld [$ffb3], a ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand) ld a, [hli] - ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct) + ld [$ffb3], a ld a, [hl] ld [hQuotient], a ; $ff00+$b4 (aliases: hMultiplicand) ld a, 100 @@ -51386,16 +50524,18 @@ Function492a5: ; 492a5 Function492b9: ; 492b9 ld hl, MenuDataHeader_0x4930a call LoadMenuDataHeader - ld a, $e - call Predef + + predef CanLearnTMHMMove + push bc ld a, [CurPartyMon] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call GetNick pop bc + ld a, c and a - jr nz, .asm_492e5 + jr nz, .can_learn push de ld de, SFX_WRONG call PlaySFX @@ -51403,26 +50543,27 @@ Function492b9: ; 492b9 ld a, BANK(UnknownText_0x2c8ce) ld hl, UnknownText_0x2c8ce call FarPrintText - jr .asm_49300 + jr .didnt_learn +.can_learn -.asm_492e5 - callab Functionf9ea - jr c, .asm_49300 - ld a, $0 - call Predef + callab KnowsMove + jr c, .didnt_learn + + predef LearnMove ld a, b and a - jr z, .asm_49300 + jr z, .didnt_learn + ld c, $5 callab ChangeHappiness - jr .asm_49305 + jr .learned -.asm_49300 +.didnt_learn call Function1c07 and a ret -.asm_49305 +.learned call Function1c07 scf ret @@ -52585,7 +51726,7 @@ Function49bed: ; 49bed ; 49bf3 Function49bf3: ; 49bf3 - ld a, $b + ld a, BATTLETYPE_CELEBI ld [BattleType], a ret ; 49bf9 @@ -53936,7 +53077,7 @@ CheckOwnMonAnywhere: ; 0x4a721 ld d, a ld e, 0 ld hl, PartyMon1Species - ld bc, PartyMon1OT + ld bc, PartyMonOT ; Run CheckOwnMon on each Pokémon in the party. .partymon @@ -53954,13 +53095,13 @@ CheckOwnMonAnywhere: ; 0x4a721 ; Run CheckOwnMon on each Pokémon in the PC. ld a, 1 call GetSRAMBank - ld a, [BoxCount] + ld a, [sBoxCount] and a jr z, .boxes ld d, a - ld hl, BoxMon1Species - ld bc, BoxMon1OT + ld hl, sBoxMon1Species + ld bc, sBoxMonOT .openboxmon call CheckOwnMon jr nc, .next @@ -53971,7 +53112,7 @@ CheckOwnMonAnywhere: ; 0x4a721 .next push bc - ld bc, BoxMon2 - BoxMon1 + ld bc, sBoxMon2 - sBoxMon1 add hl, bc pop bc call UpdateOTPointer @@ -54010,13 +53151,13 @@ CheckOwnMonAnywhere: ; 0x4a721 push bc push hl - ld de, BoxMons - BoxCount + ld de, sBoxMons - sBoxCount add hl, de ld d, h ld e, l pop hl push de - ld de, BoxMonOT - BoxCount + ld de, sBoxMonOT - sBoxCount add hl, de ld b, h ld c, l @@ -54035,7 +53176,7 @@ CheckOwnMonAnywhere: ; 0x4a721 .nextboxmon push bc - ld bc, BoxMon2 - BoxMon1 + ld bc, sBoxMon2 - sBoxMon1 add hl, bc pop bc call UpdateOTPointer @@ -54144,7 +53285,7 @@ Unknown_4a810: ; 4a810 UpdateOTPointer: ; 0x4a83a push hl - ld hl, PartyMon2OT - PartyMon1OT + ld hl, NAME_LENGTH add hl, bc ld b, h ld c, l @@ -54164,7 +53305,7 @@ Function4a843: ; 4a843 ld d, a ld e, 0 ld hl, PartyMon1Species - ld bc, PartyMon1OT + ld bc, PartyMonOT .asm_4a851 call Function4a8dc ret c @@ -54177,12 +53318,12 @@ Function4a843: ; 4a843 jr nz, .asm_4a851 ld a, 1 call GetSRAMBank - ld a, [BoxCount] + ld a, [sBoxCount] and a jr z, .asm_4a888 ld d, a - ld hl, BoxMon1Species - ld bc, BoxMon1OT + ld hl, sBoxMon1Species + ld bc, sBoxMonOT .asm_4a873 call Function4a8dc jr nc, .asm_4a87c @@ -54191,7 +53332,7 @@ Function4a843: ; 4a843 .asm_4a87c push bc - ld bc, BoxMon2 - BoxMon1 + ld bc, sBoxMon2 - sBoxMon1 add hl, bc pop bc call Function4a91e @@ -54221,13 +53362,13 @@ Function4a843: ; 4a843 jr z, .asm_4a8d1 push bc push hl - ld de, BoxMons - BoxCount + ld de, sBoxMons - sBoxCount add hl, de ld d, h ld e, l pop hl push de - ld de, BoxMonOT - BoxCount + ld de, sBoxMonOT - sBoxCount add hl, de ld b, h ld c, l @@ -54242,7 +53383,7 @@ Function4a843: ; 4a843 .asm_4a8c4 push bc - ld bc, BoxMon2 - BoxMon1 + ld bc, sBoxMon2 - sBoxMon1 add hl, bc pop bc call Function4a91e @@ -54307,7 +53448,7 @@ Unknown_4a8f4: ; 4a8f4 Function4a91e: ; 4a91e push hl - ld hl, PartyMon2OT - PartyMon1OT + ld hl, NAME_LENGTH add hl, bc ld b, h ld c, l @@ -54429,7 +53570,7 @@ Function4a9c3: ; 4a9c3 Function4a9d7: ; 4a9d7 ld a, [DefaultFlypoint] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call GetNick ld h, d ld l, e @@ -54437,7 +53578,7 @@ Function4a9d7: ; 4a9d7 ld bc, $0006 call CopyBytes ld a, [$d003] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call GetNick ld h, d ld l, e @@ -54445,7 +53586,7 @@ Function4a9d7: ; 4a9d7 ld bc, $0006 call CopyBytes ld a, [$d004] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call GetNick ld h, d ld l, e @@ -55584,7 +54725,7 @@ ENDM Function4d15b:: ; 4d15b - ld hl, EnemyMoveAnimation + ld hl, $c608 ld a, [$d196] and a jr z, .asm_4d168 @@ -55788,8 +54929,7 @@ Function4d319: ; 4d319 dec a ld [CurPartyMon], a call LowVolume - ld a, $25 - call Predef + predef StatsScreenInit ld a, [CurPartyMon] inc a ld [$cfa9], a @@ -56284,15 +55424,13 @@ Function4d7fd: ; 4d7fd ld de, VTiles2 push de push af - ld a, $2d - call Predef + predef GetUnownLetter pop af ld [CurPartySpecies], a ld [CurSpecies], a call GetBaseData pop de - ld a, $3e - call Predef + predef Function5108b ret ; 4d81e @@ -56317,8 +55455,7 @@ Function4d81e: ; 4d81e hlcoord 7, 2 ld d, $0 ld e, $3 - ld a, $47 - call Predef + predef Functiond008e ret ; 4d860 @@ -56372,12 +55509,12 @@ Function4d87a: ; 4d87a jr nz, .asm_4d88d ld a, $1 call GetSRAMBank - ld a, [BoxCount] + ld a, [sBoxCount] and a jr z, .asm_4d8c8 ld d, a - ld hl, BoxMon1ID - ld bc, BoxSpecies + ld hl, sBoxMon1ID + ld bc, sBoxSpecies .asm_4d8af ld a, [bc] inc bc @@ -56390,7 +55527,7 @@ Function4d87a: ; 4d87a .asm_4d8bf push bc - ld bc, BoxMon2 - BoxMon1 + ld bc, sBoxMon2 - sBoxMon1 add hl, bc pop bc dec d @@ -56437,7 +55574,7 @@ Function4d87a: ; 4d87a .asm_4d901 push bc - ld bc, BoxMon2 - BoxMon1 + ld bc, sBoxMon2 - sBoxMon1 add hl, bc pop bc dec d @@ -56607,16 +55744,16 @@ Function4d9e5: ; 4d9e5 ld hl, PartyMon1Species ld a, [PartyCount] dec a - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld d, h ld e, l ld hl, $df9c - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call CopyBytes ld a, [PartyCount] dec a - ld hl, PartyMon1OT + ld hl, PartyMonOT call SkipNames ld d, h ld e, l @@ -56642,7 +55779,7 @@ Function4d9e5: ; 4d9e5 .asm_4da66 ld a, [PartyCount] dec a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call SkipNames ld d, h ld e, l @@ -56674,20 +55811,20 @@ Function4d9e5: ; 4d9e5 Function4daa3: ; 4daa3 ld a, $1 call GetSRAMBank - ld hl, BoxCount + ld hl, sBoxCount ld a, [hl] - cp 20 + cp MONS_PER_BOX call CloseSRAM jr nc, .asm_4db08 xor a ld [CurPartyMon], a ld hl, $df9c ld de, $d018 - ld bc, BoxMon2 - BoxMon1 + ld bc, sBoxMon2 - sBoxMon1 call CopyBytes ld hl, PlayerName ld de, $d00d - ld bc, $000b + ld bc, NAME_LENGTH call CopyBytes callab Function51322 ld a, [CurPartySpecies] @@ -56705,21 +55842,21 @@ Function4daa3: ; 4daa3 .asm_4daf7 ld a, $1 call GetSRAMBank - ld de, BoxMon1Nickname - ld bc, $000b + ld de, sBoxMonNicknames + ld bc, PKMN_NAME_LENGTH call CopyBytes call CloseSRAM .asm_4db08 ld a, $1 call GetSRAMBank - ld a, [BoxMon1Level] + ld a, [sBoxMon1Level] ld [CurPartyLevel], a call CloseSRAM call Function4db83 ld a, $1 call GetSRAMBank - ld hl, BoxMon1CaughtLocation + ld hl, sBoxMon1CaughtLocation ld a, [hl] and $80 ld b, $13 @@ -56795,7 +55932,7 @@ Function4db53: ; 4db53 Function4db83: ; 4db83 ld a, $1 call GetSRAMBank - ld hl, BoxMon1CaughtLevel + ld hl, sBoxMon1CaughtLevel call Function4db53 call CloseSRAM ret @@ -56805,7 +55942,7 @@ Function4db92: ; 4db92 push bc ld a, $1 call GetSRAMBank - ld hl, BoxMon1CaughtLevel + ld hl, sBoxMon1CaughtLevel pop bc call Function4dbaf call CloseSRAM @@ -56894,7 +56031,7 @@ Function4dc0a: ; 4dc0a dec a push hl push bc - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes pop bc ld a, b @@ -56927,7 +56064,7 @@ Function4dc31: ; 4dc31 dec a push hl push bc - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes pop bc ld a, b @@ -56998,7 +56135,7 @@ StatsScreenInit: ; 4dc8a jr StatsScreenInit_gotaddress Function4dc8f: ; 4dc8f - ld hl, Function4dcf7 + ld hl, StatsScreenBattle jr StatsScreenInit_gotaddress StatsScreenInit_gotaddress: ; 4dc94 @@ -57057,7 +56194,7 @@ StatsScreenMain: ; 0x4dcd2 ret ; 0x4dcf7 -Function4dcf7: ; 4dcf7 +StatsScreenBattle: ; 4dcf7 xor a ld [$cf63], a ld [$cf64], a @@ -57532,8 +56669,7 @@ Jumptable_4e00d: ; 4e00d (13:600d) Function4e013: ; 4e013 (13:6013) hlcoord 0, 9 ld b, $0 - ld a, $26 - call Predef + predef DrawPlayerHP hlcoord 8, 9 ld [hl], $41 ld de, String_4e119 @@ -57555,8 +56691,7 @@ Function4e013: ; 4e013 (13:6013) hlcoord 6, 13 push hl ld de, TempMonStatus ; $d12e - ld a, $45 - call Predef + predef Function50d0a pop hl jr nz, .asm_4e066 jr .asm_4e060 @@ -57570,8 +56705,7 @@ Function4e013: ; 4e013 (13:6013) call PlaceString .asm_4e066 hlcoord 1, 15 - ld a, $2c - call Predef + predef PrintMonTypes hlcoord 9, 8 ld de, $14 ld b, $a @@ -57605,8 +56739,7 @@ Function4e013: ; 4e013 (13:6013) ld a, [TempMonLevel] ; $d12d ld b, a ld de, $d118 - ld a, $17 - call Predef + predef FillInExpBar hlcoord 10, 16 ld [hl], $40 hlcoord 19, 16 @@ -57694,20 +56827,18 @@ Function4e147: ; 4e147 (13:6147) ld de, String_4e1a9 hlcoord 0, 10 call PlaceString - ld hl, TempMonMoves ; $d110 (aliases: TempMonMove1) + ld hl, TempMonMoves ld de, $d25e - ld bc, $4 + ld bc, NUM_MOVES call CopyBytes hlcoord 8, 10 - ld a, $28 - ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) - ld a, $20 - call Predef + ld a, SCREEN_WIDTH * 2 + ld [Buffer1], a + predef ListMoves hlcoord 12, 11 ld a, $28 - ld [Buffer1], a ; $d1ea (aliases: MagikarpLength) - ld a, $23 - call Predef + ld [Buffer1], a + predef Function50c50 ret ; known jump sources: 4e150 (13:6150) @@ -57750,8 +56881,7 @@ Function4e1ae: ; 4e1ae (13:61ae) jr nz, .asm_4e1bb hlcoord 11, 8 ld bc, $6 - ld a, $28 - call Predef + predef Function50b7b ret ; known jump sources: 4e1ae (13:61ae) @@ -57791,7 +56921,7 @@ Function4e1cc: ; 4e1cc (13:61cc) Unknown_4e216: ; 4e216 dw PartyMonOT dw OTPartyMonOT - dw BoxMonOT + dw sBoxMonOT dw $d00d ; 4e21e @@ -57806,8 +56936,7 @@ OTString: ; 4e222 ; known jump sources: 4dfd6 (13:5fd6) Function4e226: ; 4e226 (13:6226) ld hl, TempMonDVs ; $d123 - ld a, $2d - call Predef + predef GetUnownLetter call Function4e2ad jr c, .asm_4e238 and a @@ -57867,13 +56996,11 @@ Function4e289: ; 4e289 (13:6289) ret c call Function4e307 ld de, $9000 - ld a, $3e - call Predef + predef Function5108b ld hl, TileMap ; $c4a0 (aliases: SpritesEnd) ld d, $0 ld e, $2 - ld a, $46 - call Predef + predef Functiond00a3 ld hl, $cf64 set 6, [hl] ret @@ -57898,7 +57025,7 @@ Jumptable_4e2b5: ; 4e2b5 (13:62b5) Function4e2bf: ; 4e2bf (13:62bf) ld a, [CurPartyMon] ; $d109 ld hl, PartyMons ; $dcdf (aliases: PartyMon1, PartyMon1Species) - ld bc, $30 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld b, h ld c, l @@ -57911,7 +57038,7 @@ Function4e2cf: ; 4e2cf (13:62cf) ; no known jump sources Function4e2d1: ; 4e2d1 (13:62d1) - ld hl, BoxMons + ld hl, sBoxMons ld bc, $30 ld a, [CurPartyMon] ; $d109 call AddNTimes @@ -58082,13 +57209,11 @@ Function4e497: ; 4e497 (13:6497) ld [$c2c6], a call Function4e307 ld de, $9000 - ld a, $3e - call Predef + predef Function5108b pop de ld hl, TileMap ; $c4a0 (aliases: SpritesEnd) ld d, $0 - ld a, $46 - call Predef + predef Functiond00a3 ld hl, $cf64 set 6, [hl] ret @@ -58186,6 +57311,7 @@ Function4e53f: ; 4e53f ret ; 4e554 + Function4e554:: ; 4e554 ld a, [BattleType] dec a @@ -58200,43 +57326,43 @@ Function4e554:: ; 4e554 jp [hl] ; 4e564 - -; no known jump sources Jumptable_4e564: ; 4e564 (13:6564) dw Function4e56a dw Function4e56a dw Function4e56a - -; no known jump sources Function4e56a: ; 4e56a (13:656a) ld hl, PlayerName ; $d47d ld de, MomsName ; $d488 - ld bc, $b + ld bc, NAME_LENGTH call CopyBytes - ld hl, String_4e5da + + ld hl, DudeString ld de, PlayerName ; $d47d - ld bc, $b + ld bc, NAME_LENGTH call CopyBytes + call Function4e5b7 + xor a - ld [hJoyDown], a ; $ff00+$a8 - ld [hJoyPressed], a ; $ff00+$a7 - ld a, [Options] ; $cfcc + ld [hJoyDown], a + ld [hJoyPressed], a + ld a, [Options] push af and $f8 add $3 - ld [Options], a ; $cfcc + ld [Options], a ld hl, AutoInput_4e5df ld a, BANK(AutoInput_4e5df) call StartAutoInput callab StartBattle call StopAutoInput pop af + ld [Options], a ; $cfcc ld hl, MomsName ; $d488 ld de, PlayerName ; $d47d - ld bc, $b + ld bc, NAME_LENGTH call CopyBytes ret @@ -58264,7 +57390,7 @@ Function4e5b7: ; 4e5b7 (13:65b7) ret ; 4e5da (13:65da) -String_4e5da: ; 4e5da +DudeString: ; 4e5da db "DUDE@" ; 4e5df @@ -58398,8 +57524,7 @@ _EvolutionAnimation: ; 4e607 hlcoord 7, 2 ld d, $0 ld e, $4 - ld a, $47 - call Predef + predef Functiond008e pop af ld [CurPartySpecies], a @@ -58445,8 +57570,7 @@ Function4e711: ; 4e711 ld a, $1 ld [$c2c6], a ld de, VTiles2 - ld a, $3e - call Predef + predef Function5108b xor a ld [$c2c6], a ret @@ -59114,7 +58238,7 @@ Function5009b: ; 5009b push bc push hl push hl - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, b call GetNick pop hl @@ -59186,7 +58310,7 @@ Function500cf: ; 500cf Function50117: ; 50117 ld a, b - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 ld hl, PartyMon1HP call AddNTimes ld a, [hli] @@ -59207,8 +58331,7 @@ Function50117: ; 50117 ld d, a ld a, [hli] ld e, a - ld a, $4 - call Predef + predef Functionc699 ret ; 50138 @@ -59226,7 +58349,7 @@ Function50138: ; 50138 jr z, .asm_5016b push hl ld a, b - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 ld hl, PartyMon1HP call AddNTimes ld e, l @@ -59347,8 +58470,7 @@ Function501e0: ; 501e0 add hl, de ld a, [hl] ld [CurPartySpecies], a - ld a, $e - call Predef + predef CanLearnTMHMMove pop hl call Function50215 call PlaceString @@ -59399,7 +58521,7 @@ Function5022f: ; 5022f jr z, .asm_5025d push hl ld a, b - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 ld hl, PartyMon1Species call AddNTimes ld a, [hl] @@ -59851,7 +58973,7 @@ YouHaveNoPKMNString: ; 0x50556 Function50566: ; 50566 ld a, [CurPartyMon] - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call GetNick ld a, [PartyMenuActionText] and $f @@ -60043,8 +59165,7 @@ Function50658: ; 50658 ld de, SFX_POISON call PlaySFX ld b, $2 - ld a, $2e - call Predef + predef Functioncbcdd call DelayFrame ret ; 50669 @@ -60085,8 +59206,7 @@ Function5067b: ; 5067b ld a, [PartyCount] cp [hl] jr nz, .asm_50682 - ld a, $14 - call Predef + predef Function3d873 ld a, d ld [ScriptVar], a ret @@ -60407,7 +59527,7 @@ Function5084a: ; 5084a ld a, [CurPartyMon] call AddNTimes ld de, TempMonSpecies - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call CopyBytes .asm_5088a @@ -60438,8 +59558,7 @@ Function50893: ; 50893 add hl, bc push bc ld b, $1 - ld a, $c - call Predef + predef Functione167 pop bc ld hl, TempMonHP - TempMon add hl, bc @@ -60492,15 +59611,15 @@ Function508d5: ; 508d5 jr .asm_50905 .asm_508f1 - ld a, 1 ; BANK(BoxSpecies) + ld a, 1 ; BANK(sBoxSpecies) call GetSRAMBank - ld hl, BoxSpecies + ld hl, sBoxSpecies call .asm_50905 call CloseSRAM ret .asm_50900 - ld a, [BreedMon1Species] + ld a, [wBreedMon1Species] jr .asm_50909 .asm_50905 @@ -60589,48 +59708,27 @@ Strings50a42: ; 50a42 dw OTName dw OTName -.Youngster - db "たんパン@" -.BugCatcher - db "むしとり@" -.Lass - db "ミニスカ@" -.JrTrainerM - db "ボーイ@" -.JrTrainerF - db "ガール@" -.Pokemaniac - db "マニア@" -.SuperNerd - db "りかけい@" -.Burglar - db "どろぼう@" -.Engineer - db "ォヤジ@" -.Jack - db "ジャック@" -.Swimmer - db "かいパン@" -.Beauty - db "おねえさん@" -.Rocker - db "グループ@" -.Juggler - db "ジャグラー@" -.Blackbelt - db "からて@" -.ProfOak - db "ォーキド@" -.Chief - db "チーフ@" -.Scientist - db "けんきゅういん@" -.Rocket - db "だんいん@" -.CooltrainerM - db "エりート♂@" -.CooltrainerF - db "エりート♀@" +.Youngster db "たんパン@" +.BugCatcher db "むしとり@" +.Lass db "ミニスカ@" +.JrTrainerM db "ボーイ@" +.JrTrainerF db "ガール@" +.Pokemaniac db "マニア@" +.SuperNerd db "りかけい@" +.Burglar db "どろぼう@" +.Engineer db "ォヤジ@" +.Jack db "ジャック@" +.Swimmer db "かいパン@" +.Beauty db "おねえさん@" +.Rocker db "グループ@" +.Juggler db "ジャグラー@" +.Blackbelt db "からて@" +.ProfOak db "ォーキド@" +.Chief db "チーフ@" +.Scientist db "けんきゅういん@" +.Rocket db "だんいん@" +.CooltrainerM db "エりート♂@" +.CooltrainerF db "エりート♀@" ; 50b0a @@ -60678,8 +59776,7 @@ DrawHP: ; 50b10 ld c, e .asm_50b41 - ld a, $4 - call Predef + predef Functionc699 ld a, 6 ld d, a ld c, a @@ -60731,16 +59828,16 @@ Function50b7b: ; 50b7b add hl, bc ld bc, $0014 add hl, bc - ld de, TempMonAtk + ld de, TempMonAttack ld bc, $0203 call Function50bab - ld de, TempMonDef + ld de, TempMonDefense call Function50bab ld de, TempMonSpclAtk call Function50bab ld de, TempMonSpclDef call Function50bab - ld de, TempMonSpd + ld de, TempMonSpeed jp PrintNum ; 50bab @@ -60788,11 +59885,11 @@ GetGender: ; 50bdd dec a jr z, .PartyMon -; 2: BoxMon - ld hl, BoxMon1DVs - ld bc, BoxMon2 - BoxMon1 +; 2: sBoxMon + ld hl, sBoxMon1DVs + ld bc, sBoxMon2 - sBoxMon1 dec a - jr z, .BoxMon + jr z, .sBoxMon ; 3: Unknown ld hl, TempMonDVs @@ -60807,14 +59904,14 @@ GetGender: ; 50bdd ; Get our place in the party/box. .PartyMon -.BoxMon +.sBoxMon ld a, [CurPartyMon] call AddNTimes .DVs -; BoxMon data is read directly from SRAM. +; sBoxMon data is read directly from SRAM. ld a, [MonType] cp BOXMON ld a, 1 @@ -60833,7 +59930,7 @@ GetGender: ; 50bdd or b ld b, a -; Close SRAM if we were dealing with a BoxMon. +; Close SRAM if we were dealing with a sBoxMon. ld a, [MonType] cp BOXMON call z, CloseSRAM @@ -60908,8 +60005,8 @@ Function50c50: ; 50c50 inc hl ld d, h ld e, l - ld hl, TempMonMove1 - ld b, $0 + ld hl, TempMonMoves + ld b, 0 .asm_50c7a ld a, [hli] and a @@ -60929,7 +60026,7 @@ Function50c50: ; 50c50 pop de pop hl push hl - ld bc, $0014 + ld bc, TempMonPP - (TempMonMoves + 1) add hl, bc ld a, [hl] and $3f @@ -60948,7 +60045,7 @@ Function50c50: ; 50c50 pop hl ld a, [Buffer1] ld e, a - ld d, $0 + ld d, 0 add hl, de ld d, h ld e, l @@ -60956,7 +60053,7 @@ Function50c50: ; 50c50 pop bc inc b ld a, b - cp $4 + cp NUM_MOVES jr nz, .asm_50c7a .asm_50cc8 @@ -60988,7 +60085,7 @@ Function50cd0: ; 50cd0 Function50cdb: ; 50cdb push hl push hl - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld a, [CurPartyMon] call GetNick pop hl @@ -61087,7 +60184,8 @@ FrzString: db "FRZ@" ParString: db "PAR@" ; 50d6f -Function50d6f: ; 50d6f +ListMoves: ; 50d6f +; List moves at hl, spaced every [Buffer1] tiles. ld de, $d25e ld b, $0 .asm_50d74 @@ -61099,7 +60197,7 @@ Function50d6f: ; 50d6f push hl push hl ld [CurSpecies], a - ld a, $2 + ld a, MOVE_NAME ld [$cf61], a call GetName ld de, StringBuffer1 @@ -61114,12 +60212,12 @@ Function50d6f: ; 50d6f push bc ld a, [Buffer1] ld c, a - ld b, $0 + ld b, 0 add hl, bc pop bc pop de ld a, b - cp $4 + cp NUM_MOVES jr z, .asm_50db8 jr .asm_50d74 @@ -61127,14 +60225,14 @@ Function50d6f: ; 50d6f ld a, b .asm_50da8 push af - ld [hl], $e3 + ld [hl], "-" ld a, [Buffer1] ld c, a - ld b, $0 + ld b, 0 add hl, bc pop af inc a - cp $4 + cp NUM_MOVES jr nz, .asm_50da8 .asm_50db8 @@ -61143,41 +60241,42 @@ Function50d6f: ; 50d6f Function50db9: ; 50db9 ld a, [$d263] + cp $1 jr nz, .asm_50dca ld hl, OTPartyCount - ld de, OTPartyMon1OT - ld a, $6 + ld de, OTPartyMonOT + ld a, ENEMY_OT_NAME jr .asm_50dfc - .asm_50dca + cp $4 jr nz, .asm_50dd8 ld hl, PartyCount - ld de, PartyMon1OT - ld a, $5 + ld de, PartyMonOT + ld a, PARTY_OT_NAME jr .asm_50dfc - .asm_50dd8 + cp $5 jr nz, .asm_50de6 ld hl, $d0f0 ld de, PokemonNames - ld a, $1 + ld a, PKMN_NAME jr .asm_50dfc - .asm_50de6 + cp $2 jr nz, .asm_50df4 ld hl, NumItems - ld de, Function50000 - ld a, $4 + ld de, ItemNames + ld a, ITEM_NAME jr .asm_50dfc - .asm_50df4 + ld hl, $d0f0 - ld de, Function50000 - ld a, $4 + ld de, ItemNames + ld a, ITEM_NAME .asm_50dfc ld [$cf61], a @@ -61189,7 +60288,7 @@ Function50db9: ; 50db9 ld [$d102], a ld a, d ld [$d103], a - ld bc, $67c1 + ld bc, $67c1 ; XXX ItemAttributes? ld a, c ld [$d104], a ld a, b @@ -61466,12 +60565,12 @@ Function50f62: ; 50f62 (14:4f62) ld bc, $30 call CopyBytes ld a, [Buffer2] ; $d1eb (aliases: MovementType) - ld hl, PartyMonOT ; $ddff (aliases: PartyMon1OT) + ld hl, PartyMonOT ; $ddff (aliases: PartyMonOT) call SkipNames push hl call Function51036 ld a, [$d1ec] - ld hl, PartyMonOT ; $ddff (aliases: PartyMon1OT) + ld hl, PartyMonOT ; $ddff (aliases: PartyMonOT) call SkipNames pop de push hl @@ -61479,12 +60578,12 @@ Function50f62: ; 50f62 (14:4f62) pop de ld hl, DefaultFlypoint ; $d002 call Function51039 - ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname) + ld hl, PartyMonNicknames ; $de41 (aliases: PartyMonNicknames) ld a, [Buffer2] ; $d1eb (aliases: MovementType) call SkipNames push hl call Function51036 - ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname) + ld hl, PartyMonNicknames ; $de41 (aliases: PartyMonNicknames) ld a, [$d1ec] call SkipNames pop de @@ -61535,8 +60634,8 @@ GetUnownLetter: ; 51040 ; Return Unown letter in UnownLetter based on DVs at hl ; Take the middle 2 bits of each DV and place them in order: -; AtkDefDV | SpdSpcDV -; .ww..xx. .yy..zz. +; atk def spd spc +; .ww..xx. .yy..zz. ; atk ld a, [hl] @@ -61583,14 +60682,14 @@ GetUnownLetter: ; 51040 ; 51077 -Function51077: ; 51077 +GetFrontpic: ; 51077 ld a, [CurPartySpecies] ld [CurSpecies], a call IsAPokemon ret c ld a, [rSVBK] push af - call Function510a5 + call _GetFrontpic pop af ld [rSVBK], a ret @@ -61605,33 +60704,33 @@ Function5108b: ; 5108b push af xor a ld [hBGMapMode], a - call Function510a5 + call _GetFrontpic call Function51103 pop af ld [rSVBK], a ret ; 510a5 -Function510a5: ; 510a5 +_GetFrontpic: ; 510a5 push de call GetBaseData ld a, [BasePicSize] and $f ld b, a push bc - call Function510d7 + call GetFrontpicPointer ld a, $6 ld [rSVBK], a ld a, b ld de, $d800 call FarDecompress pop bc - ld hl, Unkn1Pals + ld hl, $d000 ld de, $d800 call Function512ab pop hl push hl - ld de, Unkn1Pals + ld de, $d000 ld c, 7 * 7 ld a, [hROMBank] ld b, a @@ -61640,28 +60739,28 @@ Function510a5: ; 510a5 ret ; 510d7 -Function510d7: ; 510d7 +GetFrontpicPointer: ; 510d7 GLOBAL PicPointers, UnownPicPointers ld a, [CurPartySpecies] cp UNOWN - jr z, .asm_510e5 + jr z, .unown ld a, [CurPartySpecies] ld d, BANK(PicPointers) - jr .asm_510ea + jr .ok -.asm_510e5 +.unown ld a, [UnownLetter] ld d, BANK(UnownPicPointers) -.asm_510ea - ld hl, Function50000 +.ok + ld hl, PicPointers ; UnownPicPointers dec a - ld bc, $0006 + ld bc, 6 call AddNTimes ld a, d call GetFarByte - call Function511c5 + call FixPicBank push af inc hl ld a, d @@ -61674,13 +60773,13 @@ Function51103: ; 51103 ld a, $1 ld [rVBK], a push hl - ld de, Unkn1Pals - ld c, $31 + ld de, $d000 + ld c, 7 * 7 ld a, [hROMBank] ld b, a call Get2bpp pop hl - ld de, $0310 + ld de, 7 * 7 * $10 add hl, de push hl ld a, $1 @@ -61688,24 +60787,24 @@ Function51103: ; 51103 call GetFarWRAMByte pop hl and $f - ld de, $d990 + ld de, $d800 + 5 * 5 * $10 ld c, 5 * 5 cp 5 jr z, .asm_5113b - ld de, $da40 + ld de, $d800 + 6 * 6 * $10 ld c, 6 * 6 cp 6 jr z, .asm_5113b - ld de, $db10 + ld de, $d800 + 7 * 7 * $10 ld c, 7 * 7 - .asm_5113b + push hl push bc call Function5114f pop bc pop hl - ld de, Unkn1Pals + ld de, $d000 ld a, [hROMBank] ld b, a call Get2bpp @@ -61736,10 +60835,11 @@ Function5114f: ; 5114f ret ; 5116c -Function5116c: ; 5116c +GetBackpic: ; 5116c ld a, [CurPartySpecies] call IsAPokemon ret c + ld a, [CurPartySpecies] ld b, a ld a, [UnownLetter] @@ -61757,31 +60857,30 @@ Function5116c: ; 5116c ld a, b ld d, BANK(PicPointers) cp UNOWN - jr nz, .asm_51190 + jr nz, .ok ld a, c ld d, BANK(UnownPicPointers) - -.asm_51190 +.ok dec a - ld bc, $0006 + ld bc, 6 call AddNTimes - ld bc, $0003 + ld bc, 3 add hl, bc ld a, d call GetFarByte - call Function511c5 + call FixPicBank push af inc hl ld a, d call GetFarHalfword - ld de, Unkn1Pals + ld de, $d000 pop af call FarDecompress - ld hl, Unkn1Pals - ld c, $24 + ld hl, $d000 + ld c, 6 * 6 call Function5127c pop hl - ld de, Unkn1Pals + ld de, $d000 ld a, [hROMBank] ld b, a call Get2bpp @@ -61791,10 +60890,11 @@ Function5116c: ; 5116c ; 511c5 -Function511c5: ; 511c5 +FixPicBank: ; 511c5 +; This is a thing for some reason. push hl push bc - sub $12 + sub PICS_1 - $36 ld c, a ld b, 0 ld hl, Unknown_511d4 @@ -61806,10 +60906,53 @@ Function511c5: ; 511c5 ; 511d4 Unknown_511d4: ; 511d4 -INCBIN "baserom.gbc",$511d4,$5120d - $511d4 + db PICS_1 + db PICS_2 + db PICS_3 + db PICS_4 + db PICS_5 + db PICS_6 + db PICS_7 + db PICS_8 + db PICS_9 + db PICS_10 + db PICS_11 + db PICS_12 + db PICS_13 + db PICS_14 + db PICS_15 + db PICS_16 + db PICS_17 + db PICS_18 + db PICS_19 + db PICS_19 + 1 + db PICS_19 + 2 + db PICS_19 + 3 + db PICS_19 + 4 + db PICS_19 + 5 + +Function511ec: ; 511ec + ld a, c + push de + ld hl, PicPointers + dec a + ld bc, 6 + call AddNTimes + ld a, BANK(PicPointers) + call GetFarByte + call FixPicBank + push af + inc hl + ld a, BANK(PicPointers) + call GetFarHalfword + pop af + pop de + call FarDecompress + ret +; 0x5120d -Function5120d: ; 5120d +GetTrainerPic: ; 5120d ld a, [TrainerClass] and a ret z @@ -61818,29 +60961,29 @@ Function5120d: ; 5120d call WaitBGMap xor a ld [hBGMapMode], a - ld hl, Function50000 + ld hl, TrainerPicPointers ld a, [TrainerClass] dec a - ld bc, $0003 + ld bc, 3 call AddNTimes ld a, [rSVBK] push af ld a, $6 ld [rSVBK], a push de - ld a, $4a + ld a, BANK(TrainerPicPointers) call GetFarByte - call Function511c5 + call FixPicBank push af inc hl - ld a, $4a + ld a, BANK(TrainerPicPointers) call GetFarHalfword pop af ld de, $d000 call FarDecompress pop hl ld de, $d000 - ld c, $31 + ld c, 7 * 7 ld a, [hROMBank] ld b, a call Get2bpp @@ -61887,13 +61030,13 @@ Function5127c: ; 5127c and a jr z, .asm_512a8 ld a, c - cp $31 - ld de, $0310 + cp 7 * 7 + ld de, 7 * 7 * $10 jr z, .asm_51296 - cp $24 - ld de, $0240 + cp 6 * 6 + ld de, 6 * 6 * $10 jr z, .asm_51296 - ld de, $0190 + ld de, 5 * 5 * $10 .asm_51296 ld a, [hl] @@ -61919,54 +61062,53 @@ Function5127c: ; 5127c Function512ab: ; 512ab ld a, b - cp $6 - jr z, .asm_512bd - cp $5 - jr z, .asm_512d2 -.asm_512b4 + cp 6 + jr z, .six + cp 5 + jr z, .five + +.seven ld c, $70 call Function512f2 dec b - jr nz, .asm_512b4 + jr nz, .seven ret -.asm_512bd +.six ld c, $70 xor a - call Function512ed + call .Fill .asm_512c3 ld c, $10 xor a - call Function512ed + call .Fill ld c, $60 call Function512f2 dec b jr nz, .asm_512c3 ret -.asm_512d2 +.five ld c, $70 xor a - call Function512ed + call .Fill .asm_512d8 ld c, $20 xor a - call Function512ed + call .Fill ld c, $50 call Function512f2 dec b jr nz, .asm_512d8 ld c, $70 xor a - call Function512ed + call .Fill ret -; 512ed -Function512ed: ; 512ed -.asm_512ed +.Fill ld [hli], a dec c - jr nz, .asm_512ed + jr nz, .Fill ret ; 512f2 @@ -61989,22 +61131,10 @@ Function512f2: ; 512f2 inc de ld b, a xor a + rept 8 rr b rla - rr b - rla - rr b - rla - rr b - rla - rr b - rla - rr b - rla - rr b - rla - rr b - rla + endr ld [hli], a dec c jr nz, .asm_51300 @@ -62015,36 +61145,36 @@ Function512f2: ; 512f2 Function51322: ; 51322 ld a, $1 call GetSRAMBank - ld hl, BoxCount + ld hl, sBoxCount call Function513cb - ld a, [BoxCount] + ld a, [sBoxCount] dec a ld [$d265], a - ld hl, BoxMon1Nickname - ld bc, $000b - ld de, DefaultFlypoint + ld hl, sBoxMonNicknames + ld bc, PKMN_NAME_LENGTH + ld de, $d002 call Function513e0 - ld a, [BoxCount] + ld a, [sBoxCount] dec a ld [$d265], a - ld hl, BoxMon1OT - ld bc, $000b + ld hl, sBoxMonOT + ld bc, NAME_LENGTH ld de, $d00d call Function513e0 - ld a, [BoxCount] + ld a, [sBoxCount] dec a ld [$d265], a - ld hl, BoxMon1Species - ld bc, $0020 + ld hl, sBoxMons + ld bc, sBoxMon1End - sBoxMon1 ld de, $d018 call Function513e0 ld hl, $d01a - ld de, TempMonMove1 - ld bc, $0004 + ld de, TempMonMoves + ld bc, NUM_MOVES call CopyBytes ld hl, $d02f ld de, TempMonPP - ld bc, $0004 + ld bc, NUM_MOVES call CopyBytes ld a, [CurPartyMon] ld b, a @@ -62058,22 +61188,22 @@ Function5138b: ; 5138b ld a, [PartyCount] dec a ld [$d265], a - ld hl, PartyMon1Nickname - ld bc, $000b - ld de, DefaultFlypoint + ld hl, PartyMonNicknames + ld bc, PKMN_NAME_LENGTH + ld de, $d002 call Function513e0 ld a, [PartyCount] dec a ld [$d265], a - ld hl, PartyMon1OT - ld bc, $000b + ld hl, PartyMonOT + ld bc, NAME_LENGTH ld de, $d00d call Function513e0 ld a, [PartyCount] dec a ld [$d265], a - ld hl, PartyMon1Species - ld bc, $0030 + ld hl, PartyMons + ld bc, PartyMon2 - PartyMon1 ld de, $d018 call Function513e0 ret @@ -62084,7 +61214,7 @@ Function513cb: ; 513cb inc hl ld a, [CurPartyMon] ld c, a - ld b, $0 + ld b, 0 add hl, bc ld a, [CurPartySpecies] ld c, a @@ -63182,7 +62312,7 @@ Unknown_80671: ; 80671 Function806c5: ; 806c5 ; Caught mons. ld hl, PokedexCaught - ld b, $20 + ld b, EndPokedexCaught - PokedexCaught call CountSetBits ld a, [$d265] jp Function8066c @@ -63191,7 +62321,7 @@ Function806c5: ; 806c5 Function806d3: ; 806d3 ; Seen mons. ld hl, PokedexSeen - ld b, $20 + ld b, EndPokedexSeen - PokedexSeen call CountSetBits ld a, [$d265] jp Function8066c @@ -63199,7 +62329,7 @@ Function806d3: ; 806d3 Function806e1: ; 806e1 ; Number of owned badges. - ld hl, JohtoBadges ; $d857 + ld hl, Badges ; $d857 ld b, 2 call CountSetBits ld a, [$d265] @@ -63243,10 +62373,10 @@ Function806ff: ; 806ff Function80715: ; 80715 ; Remaining slots in the current box. - ld a, $1 + ld a, 1 ; BANK(sBoxCount) call GetSRAMBank - ld hl, BoxCount - ld a, 20 + ld hl, sBoxCount + ld a, MONS_PER_BOX sub [hl] ld b, a call CloseSRAM @@ -63447,13 +62577,13 @@ Function819a7: ; 819a7 dec c jr nz, .asm_819d6 ld a, $94 - ld [EnemyMoveAnimation], a + ld [$c608], a ld a, $52 - ld [EnemyMoveEffect], a + ld [$c609], a ld a, $4a - ld [EnemyMovePower], a + ld [$c60a], a ld a, $29 - ld [EnemyMoveType], a + ld [$c60b], a pop af ld [rSVBK], a ret @@ -63665,14 +62795,12 @@ Function81adb: ; 81adb hlcoord 12, 3 call Function378b ld de, $9310 - ld a, $3d - call Predef + predef GetBackpic ld a, $31 ld [$ffad], a hlcoord 2, 4 ld bc, $0606 - ld a, $13 - call Predef + predef FillBox ld a, [$d003] and a jr z, .asm_81b66 @@ -63698,14 +62826,13 @@ Function81adb: ; 81adb hlcoord 4, 1 call PlaceString ld de, VTiles2 - callab Function5120d + callab GetTrainerPic xor a ld [TempEnemyMonSpecies], a ld [$ffad], a hlcoord 2, 3 ld bc, $0707 - ld a, $13 - call Predef + predef FillBox .asm_81ba9 ld a, $1 @@ -63755,13 +62882,13 @@ Function81bf4: ; 81bf4 add hl, hl ld de, OverworldMap add hl, de - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $0004 call CopyBytes xor a ld [$cf64], a ld [$cf65], a - ld de, EnemyMoveAnimation + ld de, $c608 call Function81ea5 ret ; 81c18 @@ -63792,14 +62919,14 @@ Function81c33: ; 81c33 ld a, $5 ld [rSVBK], a ld hl, BGPals - ld de, EnemyMoveAnimation + ld de, $c608 ld c, $1 call Function81ee3 hlcoord 10, 2 - ld de, EnemyMoveAnimation + ld de, $c608 call Function81ca7 hlcoord 15, 2 - ld de, EnemyMovePower + ld de, $c60a call Function81ca7 ld a, $1 ld [hCGBPalUpdate], a @@ -63817,13 +62944,13 @@ Function81c33: ; 81c33 ld [hli], a ld a, $7f ld [hli], a - ld a, [EnemyMoveAnimation] + ld a, [$c608] ld [hli], a - ld a, [EnemyMoveEffect] + ld a, [$c609] ld [hli], a - ld a, [EnemyMovePower] + ld a, [$c60a] ld [hli], a - ld a, [EnemyMoveType] + ld a, [$c60b] ld [hli], a xor a ld [hli], a @@ -63832,10 +62959,10 @@ Function81c33: ; 81c33 ld hl, $cda9 call Function81f0c hlcoord 10, 2 - ld de, EnemyMoveAnimation + ld de, $c608 call Function81ca7 hlcoord 15, 2 - ld de, EnemyMovePower + ld de, $c60a call Function81ca7 ld a, $3 ld [$cf63], a @@ -63928,14 +63055,14 @@ Function81d0a: ; 81d0a .asm_81d1d xor a ld [$cf65], a - ld de, EnemyMoveAnimation + ld de, $c608 call Function81ea5 ret .asm_81d28 ld a, $1 ld [$cf65], a - ld de, EnemyMovePower + ld de, $c60a call Function81ea5 ret @@ -63947,7 +63074,7 @@ Function81d34: ; 81d34 ld a, [hl] and $40 jr nz, Function81d84 - ld hl, PlayerMoveType + ld hl, $c612 jr Function81d63 Function81d46: ; 81d46 @@ -63958,7 +63085,7 @@ Function81d46: ; 81d46 ld a, [hl] and $40 jr nz, Function81d84 - ld hl, PlayerMoveAccuracy + ld hl, $c613 jr Function81d63 Function81d58: ; 81d58 @@ -63966,7 +63093,7 @@ Function81d58: ; 81d58 ld a, [hl] and $40 jr nz, Function81d84 - ld hl, PlayerMovePP + ld hl, $c614 Function81d63: ; 81d63 ld a, [$ffa9] @@ -64092,8 +63219,7 @@ Function81df4: ; 81df4 ld a, [$d004] inc a ld [$d265], a - ld a, $f - call Predef + predef GetTMHMMove ld a, [$d265] ld [$d262], a call GetMoveName @@ -64102,8 +63228,7 @@ Function81df4: ; 81df4 ld a, [$d004] call Function81e55 ld [CurItem], a - ld a, $e - call Predef + predef CanLearnTMHMMove ld a, c and a ld de, String_81e46 @@ -64139,21 +63264,21 @@ Function81e5e: ; 81e5e ; 81e67 Function81e67: ; 81e67 - ld a, [PlayerMoveType] + ld a, [$c612] and $1f ld e, a - ld a, [PlayerMoveAccuracy] + ld a, [$c613] and $7 sla a swap a or e ld e, a - ld a, [PlayerMoveAccuracy] + ld a, [$c613] and $18 sla a swap a ld d, a - ld a, [PlayerMovePP] + ld a, [$c614] and $1f sla a sla a @@ -64163,23 +63288,23 @@ Function81e67: ; 81e67 and a jr z, .asm_81e9c ld a, e - ld [EnemyMovePower], a + ld [$c60a], a ld a, d - ld [EnemyMoveType], a + ld [$c60b], a ret .asm_81e9c ld a, e - ld [EnemyMoveAnimation], a + ld [$c608], a ld a, d - ld [EnemyMoveEffect], a + ld [$c609], a ret ; 81ea5 Function81ea5: ; 81ea5 ld a, [de] and $1f - ld [PlayerMoveType], a + ld [$c612], a ld a, [de] and $e0 swap a @@ -64191,12 +63316,12 @@ Function81ea5: ; 81ea5 swap a srl a or b - ld [PlayerMoveAccuracy], a + ld [$c613], a ld a, [de] and $7c srl a srl a - ld [PlayerMovePP], a + ld [$c614], a ret ; 81eca @@ -64211,7 +63336,7 @@ Function81eca: ; 81eca add hl, de ld e, l ld d, h - ld hl, EnemyMoveAnimation + ld hl, $c608 ld bc, $0004 call CopyBytes ret @@ -64360,11 +63485,11 @@ Function81f5e: ; 81f5e ld b, $70 ld c, $5 ld hl, Sprites - ld de, PlayerMoveType + ld de, $c612 call .asm_81fb7 - ld de, PlayerMoveAccuracy + ld de, $c613 call .asm_81fb7 - ld de, PlayerMovePP + ld de, $c614 call .asm_81fb7 ret @@ -64512,10 +63637,10 @@ Function8220f: ; 8220f add hl, hl ld de, Unkn1Pals add hl, de - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $0008 call CopyBytes - ld de, EnemyMoveAnimation + ld de, $c608 call Function81ea5 pop af ld [rSVBK], a @@ -64561,7 +63686,7 @@ Function82236: ; 82236 ld a, [$cf64] ld bc, $0008 call AddNTimes - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $0008 call CopyBytes pop af @@ -64593,20 +63718,20 @@ Function822a3: ; 822a3 call AddNTimes ld e, l ld d, h - ld hl, EnemyMoveAnimation + ld hl, $c608 ld bc, $0008 call CopyBytes hlcoord 1, 0 - ld de, EnemyMoveAnimation + ld de, $c608 call Function81ca7 hlcoord 6, 0 - ld de, EnemyMovePower + ld de, $c60a call Function81ca7 hlcoord 11, 0 - ld de, EnemyMoveAccuracy + ld de, $c60c call Function81ca7 hlcoord 16, 0 - ld de, EnemyMoveEffectChance + ld de, $c60e call Function81ca7 pop af ld [rSVBK], a @@ -64664,7 +63789,7 @@ Function82309: ; 82309 ld [$cf66], a ld e, a ld d, $0 - ld hl, EnemyMoveAnimation + ld hl, $c608 add hl, de add hl, de ld e, l @@ -64680,7 +63805,7 @@ Function82339: ; 82338 ld a, [hl] and $40 jr nz, Function82387 - ld hl, PlayerMoveType + ld hl, $c612 jr Function82368 Function8234b: ; 8234b @@ -64691,7 +63816,7 @@ Function8234b: ; 8234b ld a, [hl] and $40 jr nz, Function82387 - ld hl, PlayerMoveAccuracy + ld hl, $c613 jr Function82368 Function8235d: ; 8235d @@ -64699,7 +63824,7 @@ Function8235d: ; 8235d ld a, [hl] and $40 jr nz, Function82387 - ld hl, PlayerMovePP + ld hl, $c614 Function82368: ; 82368 ld a, [$ffa9] @@ -64740,21 +63865,21 @@ Function8238c: ; 8238c ; 82391 Function82391: ; 82391 - ld a, [PlayerMoveType] + ld a, [$c612] and $1f ld e, a - ld a, [PlayerMoveAccuracy] + ld a, [$c613] and $7 sla a swap a or e ld e, a - ld a, [PlayerMoveAccuracy] + ld a, [$c613] and $18 sla a swap a ld d, a - ld a, [PlayerMovePP] + ld a, [$c614] and $1f sla a sla a @@ -64763,7 +63888,7 @@ Function82391: ; 82391 ld a, [$cf66] ld c, a ld b, $0 - ld hl, EnemyMoveAnimation + ld hl, $c608 add hl, bc add hl, bc ld a, e @@ -66025,13 +65150,13 @@ Unknown_84807: ; 84807 ; known jump sources: 844f2 (21:44f2) Function84817: ; 84817 (21:4817) xor a - ld [DefaultFlypoint], a ; $d002 - ld hl, TileMap ; $c4a0 (aliases: SpritesEnd) + ld [$d002], a + ld hl, TileMap ld bc, $168 ld a, $7f call ByteFill call Function84a0e - ld hl, TileMap ; $c4a0 (aliases: SpritesEnd) + ld hl, TileMap ld bc, $b4 ld a, $7f call ByteFill @@ -66040,9 +65165,9 @@ Function84817: ; 84817 (21:4817) hlcoord 4, 3 ld de, String_84865 call PlaceString - ld a, [MovementBuffer] ; $d007 - ld bc, $9 - ld hl, Box1Name ; $db75 + ld a, [$d007] + ld bc, 9 + ld hl, wBoxNames call AddNTimes ld d, h ld e, l @@ -66429,7 +65554,7 @@ Function864c3: ; 864c3 ld a, [$cf64] cp $6 jr nc, .asm_864fb - ld hl, EnemyMoveEffect + ld hl, $c609 ld bc, $0010 call AddNTimes ld a, [hl] @@ -66462,8 +65587,7 @@ Function8650c: ; 8650c call WaitBGMap decoord 6, 5 ld c, $6 - ld a, $49 - call Predef + predef Functiond066e ld c, $3c call DelayFrames and a @@ -66501,7 +65625,7 @@ Function8653f: ; 8653f push bc ld a, c ld hl, PartyMon1Species - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes ld c, l ld b, h @@ -66534,7 +65658,7 @@ Function8653f: ; 8653f pop bc push bc ld a, c - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld bc, $000b call AddNTimes ld bc, $000a @@ -66570,21 +65694,18 @@ Function865b5: ; 865b5 ld a, [hli] ld [$d124], a ld hl, TempMonDVs - ld a, $2d - call Predef + predef GetUnownLetter ld hl, TileMap ld bc, $0168 ld a, $7f call ByteFill ld de, $9310 - ld a, $3d - call Predef + predef GetBackpic ld a, $31 ld [$ffad], a hlcoord 6, 6 ld bc, $0606 - ld a, $13 - call Predef + predef FillBox ld a, $d0 ld [hSCY], a ld a, $90 @@ -66690,7 +65811,7 @@ Function86692: ; 86692 ld a, [$cf64] cp $6 jr nc, .asm_866a7 - ld hl, EnemyMoveEffect + ld hl, $c609 ld bc, $0010 call AddNTimes ld a, [hl] @@ -66706,7 +65827,7 @@ Function86692: ; 86692 call WhiteBGMap pop hl call Function86748 - ld a, [EnemyMoveAnimation] + ld a, [$c608] cp 200 + 1 jr c, .asm_866c6 ld de, String_866fc @@ -66720,7 +65841,7 @@ Function86692: ; 86692 hlcoord 1, 2 call PlaceString hlcoord 2, 2 - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $0103 call PrintNum hlcoord 11, 2 @@ -66734,8 +65855,7 @@ Function86692: ; 86692 call Function32f9 decoord 6, 5 ld c, $6 - ld a, $49 - call Predef + predef Functiond066e and a ret ; 866fb @@ -66765,7 +65885,7 @@ Function8671c: ; 8671c ld a, [hl] and a jr z, .asm_86743 - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $0062 call CopyBytes call CloseSRAM @@ -66814,8 +65934,7 @@ Function86748: ; 86748 ld [CurPartySpecies], a ld [$d265], a ld hl, TempMonDVs - ld a, $2d - call Predef + predef GetUnownLetter xor a ld [$c2c6], a hlcoord 6, 5 @@ -66883,8 +66002,7 @@ Function86810: ; 86810 ld [$ffad], a hlcoord 6, 6 ld bc, $0606 - ld a, $13 - call Predef + predef FillBox ld a, $d0 ld [hSCY], a ld a, $90 @@ -66908,8 +66026,7 @@ Function86810: ; 86810 ld [$ffad], a hlcoord 12, 5 ld bc, $0707 - ld a, $13 - call Predef + predef FillBox ld a, $c0 ld [hSCX], a call WaitBGMap @@ -67396,8 +66513,7 @@ MovePlayerPic: ; 88266 xor a ld [hBGMapMode], a ld bc, $0707 - ld a, $13 - call Predef + predef FillBox xor a ld [hBGMapThird], a call WaitBGMap @@ -67559,8 +66675,7 @@ GetChrisBackpic: ; 88830 ld b, BANK(ChrisBackpic) ld de, $9310 ld c, $31 - ld a, $40 - call Predef + predef DecompressPredef ret ; 88840 @@ -67626,8 +66741,7 @@ DrawIntroPlayerPic: ; 88874 ld [$ffad], a hlcoord 6, 4 ld bc, $0707 - ld a, $13 - call Predef + predef FillBox ret ; 888a9 @@ -68588,12 +67702,12 @@ Function8963d: ; 8963d ; 89655 Function89655: ; 89655 - ld hl, $ceca - ld de, $0014 - ld a, $5 - ld b, $4 + ld hl, AttrMap + SCREEN_WIDTH * 12 + 1 + ld de, SCREEN_WIDTH + ld a, 5 + ld b, 4 .asm_8965f - ld c, $12 + ld c, 18 push hl .asm_89662 ld [hli], a @@ -68895,7 +68009,7 @@ Function897af: ; 897af xor a ld [CurPartySpecies], a ld de, $9370 - callba Function5120d + callba GetTrainerPic pop bc ret ; 897d5 @@ -68927,8 +68041,7 @@ Function897d5: ; 897d5 ld [$ffad], a hlcoord 12, 3 ld bc, $0707 - ld a, $13 - call Predef + predef FillBox call Function8963d pop bc ret @@ -73153,7 +72266,7 @@ Function8b2e9: ; 8b2e9 Function8b31a: ; 8b31a push bc - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 add hl, bc inc de pop bc @@ -74372,6 +73485,7 @@ Unknown_8ba1f: ; 8ba1f SECTION "bank23", ROMX, BANK[$23] Function8c000: ; 8c000 +Function8c000_2: ret ; 8c001 @@ -79584,9 +78698,9 @@ Function8e8b1: ; 8e8b1 (23:68b1) ld a, $60 ld [hl], a ld a, c - ld [EnemyMoveAnimation], a ; $c608 (aliases: EnemyMoveStruct) + ld [$c608], a ld a, b - ld [EnemyMoveEffect], a ; $c609 + ld [$c609], a ret ; known jump sources: 8e898 (23:6898) @@ -80360,7 +79474,7 @@ UnknownScript_0x90241: ; 0x90241 end ; 0x90255 -UnknownScript_0x90255: ; 0x90255 +UnknownScript_0x90255:: ; 0x90255 3callasm Function9025c 2jump UnknownScript_0x90241 ; 0x9025c @@ -83955,8 +83069,7 @@ HasVisitedSpawn: ; 91c50 ld hl, VisitedSpawns ld b, CHECK_FLAG ld d, 0 - ld a, PREDEF_FLAG - call Predef + predef FlagPredef ld a, c ret ; 91c5e @@ -87322,7 +86435,7 @@ Functionb81ea: ; b81ea jr nc, .asm_b8214 call Functionb83e5 jr nc, .asm_b8214 - ld a, $8 + ld a, BATTLETYPE_TREE ld [BattleType], a ld a, $1 ld [ScriptVar], a @@ -91299,7 +90412,7 @@ Functioncc000: ; cc000 call PrintNum hlcoord 11, 10 - ld de, EnemyMonMaxHPHi + ld de, EnemyMonMaxHP call PrintNum ld hl, SwitchMonText @@ -93241,7 +92354,7 @@ Functione1190: ; e1190 xor a ld [hBGMapMode], a call DisableLCD - ld hl, EnemyMoveAnimation + ld hl, $c608 ld bc, $01e0 xor a call ByteFill @@ -95752,12 +94865,10 @@ PCMonInfo: ; e2ac6 (38:6ac6) ld [CurPartySpecies], a ld [CurSpecies], a ld hl, TempMonDVs - ld a, $2d - call Predef + predef GetUnownLetter call GetBaseData ld de, $9000 - ld a, $3c - call Predef + predef GetFrontpic xor a ld [$cb32], a ld a, [CurPartySpecies] @@ -96011,7 +95122,7 @@ Functione2c6e: ; e2c6e (38:6c6e) ld a, [hl] and a jr z, .asm_e2cee - ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname) + ld hl, PartyMonNicknames ; $de41 (aliases: PartyMonNicknames) ld bc, $b ld a, e call AddNTimes @@ -96402,8 +95513,7 @@ Functione2f7e: ; e2f7e (38:6f7e) call Functione2fd6 ld a, $3 ld [MonType], a ; $cf5f - ld a, $25 - call Predef + predef StatsScreenInit call Functione33e8 call MaxVolume ret @@ -96431,8 +95541,7 @@ Functione2f95: ; e2f95 (38:6f95) ld [CurPartySpecies], a ; $d108 ld [CurSpecies], a ; $cf60 ld hl, TempMonDVs ; $d123 - ld a, $2d - call Predef + predef GetUnownLetter call GetBaseData call Functione2fd6 .asm_e2fd0 @@ -96474,9 +95583,9 @@ Functione2fd6: ; e2fd6 (38:6fd6) .asm_e3020 ld hl, PartySpecies ; $dcd8 call Functione3357 - ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname) + ld hl, PartyMonNicknames ; $de41 (aliases: PartyMonNicknames) call Functione3363 - ld hl, PartyMonOT ; $ddff (aliases: PartyMon1OT) + ld hl, PartyMonOT ; $ddff (aliases: PartyMonOT) call Functione3376 ld hl, PartyMons ; $dcdf (aliases: PartyMon1, PartyMon1Species) ld bc, $30 @@ -96519,13 +95628,12 @@ Functione307c: ; e307c (38:707c) ld hl, $cb2a add [hl] ld [CurPartyMon], a ; $d109 - ld hl, PartyMonNicknames ; $de41 (aliases: PartyMon1Nickname) + ld hl, PartyMonNicknames ; $de41 (aliases: PartyMonNicknames) ld a, [CurPartyMon] ; $d109 call GetNick ld a, $1 ld [$d10b], a - ld a, $8 - call Predef + predef Functiondb3f jr c, .asm_e30e4 xor a ld [$d10b], a @@ -96580,8 +95688,7 @@ Functione30fa: ; e30fa (38:70fa) call CloseSRAM xor a ld [$d10b], a - ld a, $8 - call Predef + predef Functiondb3f jr c, .asm_e316a ld a, $1 ld [$d10b], a @@ -96806,14 +95913,14 @@ Functione32b0: ; e32b0 ld [CurPartyMon], a ld a, $1 call GetSRAMBank - ld hl, BoxSpecies + ld hl, sBoxSpecies call Functione3357 - ld hl, BoxMon1Nickname + ld hl, sBoxMonNicknames call Functione3363 - ld hl, BoxMon1OT + ld hl, sBoxMonOT call Functione3376 - ld hl, BoxMon1Species - ld bc, $0020 + ld hl, sBoxMons + ld bc, sBoxMon1End - sBoxMon1 call Functione3389 call CloseSRAM callba Function5088b @@ -96843,12 +95950,12 @@ Functione3316: ; e3316 ld [CurPartyMon], a ld hl, PartySpecies call Functione3357 - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call Functione3363 - ld hl, PartyMon1OT + ld hl, PartyMonOT call Functione3376 ld hl, PartyMon1Species - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call Functione3389 xor a ld [$d10b], a @@ -97077,8 +96184,8 @@ Functione3619: ; e3619 ; known jump sources: e36e7 (38:76e7), e375d (38:775d), e376e (38:776e) Functione3626: ; e3626 (38:7626) - ld bc, $9 - ld hl, Box1Name ; $db75 + ld bc, 9 + ld hl, wBoxNames call AddNTimes ld d, h ld e, l @@ -97111,7 +96218,10 @@ String_e3663: ; e3663 ; e3668 String_e3668: ; e3668 - db "/20@" + db "/" + db "0" + MONS_PER_BOX / 10 + db "0" + MONS_PER_BOX % 10 + db "@" ; e366c ; known jump sources: e3717 (38:7717) @@ -101138,7 +100248,7 @@ Functionfbb32: ; fbb32 jr nz, .asm_fbba4 ld a, [CurPartyMon] ld hl, PartyMon1Species - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call AddNTimes push hl ld bc, $0015 @@ -101169,7 +100279,7 @@ Functionfbb32: ; fbb32 ld [de], a inc de ld a, [CurPartyMon] - ld hl, PartyMon1OT + ld hl, PartyMonOT call SkipNames call CopyBytes ld a, $3 @@ -101284,8 +100394,7 @@ Functionfbd77: ; fbd77 (3e:7d77) ld a, $31 .asm_fbd8a ld [$FF00+$ad], a - ld a, $13 - call Predef + predef FillBox Functionfbd91: ; fbd91 (3e:7d91) ld a, $1 ld [hBGMapMode], a ; $ff00+$d4 @@ -101596,8 +100705,7 @@ Functionfcc07: ; fcc07 push af ld a, [$cf64] push af - ld a, $1e - call Predef + predef Function28f24 pop af ld [$cf64], a pop af @@ -101639,8 +100747,7 @@ TradeFlagAction: ; fcc4a ld hl, $d960 ld a, [$cf63] ld c, a - ld a, PREDEF_FLAG - call Predef + predef FlagPredef ld a, c and a ret @@ -101675,7 +100782,7 @@ Functionfcc63: ; fcc63 call Functionfcde8 call Functionfcdf4 - ld hl, PartyMon1OT + ld hl, PartyMonOT ld bc, $000b call Functionfcdd7 ld de, $c6f2 @@ -101727,8 +100834,7 @@ Functionfcc63: ; fcc63 ld [MonType], a ld [$d10b], a callab Functione039 - ld a, PREDEF_ADDPARTYMON - call Predef + predef Functiond88c ld e, TRADE_DIALOG call GetTradeAttribute @@ -101745,7 +100851,7 @@ Functionfcc63: ; fcc63 ld de, $c70e call Functionfcdf4 - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld bc, PKMN_NAME_LENGTH call Functionfcdde ld hl, $c70e @@ -101760,7 +100866,7 @@ Functionfcc63: ; fcc63 ld de, $c719 call Functionfcdf4 - ld hl, PartyMon1OT + ld hl, PartyMonOT ld bc, $000b call Functionfcdde ld hl, $c724 @@ -103852,11 +102958,11 @@ INCBIN "baserom.gbc",$100b0a,$100b12 - $100b0a Function100b12: ; 100b12 call Function100dd8 ret c - ld hl, $4f2c - ld a, $9 + ld hl, BattleMenuDataHeader + ld a, BANK(BattleMenuDataHeader) ld de, LoadMenuDataHeader call FarCall_de - ld a, $9 + ld a, BANK(BattleMenuDataHeader) ld [$cf94], a ld a, [$d0d2] ld [$cf88], a @@ -103989,8 +103095,8 @@ Function100bc2: ; 100bc2 ld a, [$cfa9] dec a ld c, a - ld b, $0 - ld hl, BattleMonPPMove1 + ld b, 0 + ld hl, BattleMonPP add hl, bc ld a, [hl] and $3f @@ -104004,8 +103110,8 @@ Function100bc2: ; 100bc2 ld a, [$cfa9] dec a ld c, a - ld b, $0 - ld hl, BattleMonMove1 + ld b, 0 + ld hl, BattleMonMoves add hl, bc ld a, [hl] ld [CurPlayerMove], a @@ -104027,23 +103133,22 @@ Function100bc2: ; 100bc2 Function100c74: ; 100c74 hlcoord 0, 8 - ld b, $8 - ld c, $8 + ld b, 8 + ld c, 8 call TextBox - ld hl, BattleMonMove1 + ld hl, BattleMonMoves ld de, $d25e - ld bc, $0004 + ld bc, NUM_MOVES call CopyBytes - ld a, $28 + ld a, SCREEN_WIDTH * 2 ld [Buffer1], a hlcoord 2, 10 - ld a, $20 - call Predef + predef ListMoves ret ; 100c98 Function100c98: ; 100c98 - ld de, $4cad + ld de, Unknown_100cad call Function1bb1 ld a, [$d0eb] inc a @@ -104054,6 +103159,7 @@ Function100c98: ; 100c98 ret ; 100cad +Unknown_100cad: ; 100cad INCBIN "baserom.gbc",$100cad,$100cb5 - $100cad @@ -104584,10 +103690,10 @@ Function1020ea: ; 1020ea bit 2, [hl] jr nz, .asm_102110 call Function10218d - ld hl, EnemyMoveAnimation + ld hl, $c608 bit 4, [hl] jr z, .asm_102110 - ld hl, EnemyMoveAnimation + ld hl, $c608 bit 2, [hl] jr nz, .asm_102110 call Function102112 @@ -104607,7 +103713,7 @@ Function102112: ; 102112 ld c, $28 .asm_10211c push hl - ld de, PlayerMoveAnimation + ld de, $c60f ld b, $1f .asm_102122 ld a, [de] @@ -104666,7 +103772,7 @@ Function102142: ; 102142 ; 102180 Function102180: ; 102180 - ld hl, EnemyMoveEffect + ld hl, $c609 ld de, StringBuffer2 ld bc, $000b call CopyBytes @@ -104675,18 +103781,18 @@ Function102180: ; 102180 Function10218d: ; 10218d ld hl, $dc00 - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $0026 ld a, $5 call FarCopyWRAM - ld de, EnemyMoveEffect + ld de, $c609 ret ; 10219f Function10219f: ; 10219f call FadeToMenu call Function10218d - ld de, EnemyMoveEffect + ld de, $c609 callba Function8ac4e call Functiona36 call PlayClickSFX @@ -104697,7 +103803,7 @@ Function10219f: ; 10219f Function1021b8: ; 1021b8 call FadeToMenu call Function10218d - ld de, PlayerMoveAnimation + ld de, $c60f callba Function8ac70 ld a, c ld [StringBuffer1], a @@ -106122,7 +105228,7 @@ Function104a95: ; 104a95 (41:4a95) ld a, [$FF00+$bb] cp $2 jr z, Function104b22 - ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct) + ld hl, $ffb3 ld b, $1 call Function104d56 jr nz, .asm_104ac8 @@ -106200,7 +105306,7 @@ Function104b22: ; 104b22 (41:4b22) ; known jump sources: 104b04 (41:4b04), 104b2e (41:4b2e) Function104b40: ; 104b40 (41:4b40) - ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct) + ld hl, $ffb3 ld b, $1 call Function104d56 ret nz @@ -106211,14 +105317,14 @@ Function104b49: ; 104b49 (41:4b49) ld a, [$FF00+$bc] cp $6c ret nz - ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct) + ld a, [$ffb3] cp $96 jp nz, Function104d32 ld a, $90 - ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct) + ld [$ffb3], a call Function104d38 ret nz - ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct) + ld hl, $ffb3 ld b, $1 call Function104d4e ret nz @@ -106241,8 +105347,8 @@ Function104b49: ; 104b49 (41:4b49) ; known jump sources: 104b10 (41:4b10), 104b22 (41:4b22) Function104b88: ; 104b88 (41:4b88) ld a, $96 - ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct) - ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct) + ld [$ffb3], a + ld hl, $ffb3 ld b, $1 call Function104d4e ret nz @@ -106252,7 +105358,7 @@ Function104b88: ; 104b88 (41:4b88) ret nz call Function104d43 ret nz - ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct) + ld hl, $ffb3 ld b, $1 call Function104d56 ret nz @@ -106260,7 +105366,7 @@ Function104b88: ; 104b88 (41:4b88) ld a, [$FF00+$bc] cp $6c ret nz - ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct) + ld a, [$ffb3] cp $90 jp nz, Function104d32 call Function104d38 @@ -106361,7 +105467,7 @@ Function104c2d: ; 104c2d (41:4c2d) ; known jump sources: 104c4e (41:4c4e), 104c78 (41:4c78) Function104c8a: ; 104c8a (41:4c8a) - ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct) + ld hl, $ffb3 ld b, $1 call Function104d56 ret nz @@ -106369,14 +105475,14 @@ Function104c8a: ; 104c8a (41:4c8a) ld a, [$FF00+$bc] cp $6c ret nz - ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct) + ld a, [$ffb3] cp $3c jp nz, Function104d32 swap a - ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct) + ld [$ffb3], a call Function104d38 ret nz - ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct) + ld hl, $ffb3 ld b, $1 call Function104d4e ret nz @@ -106399,8 +105505,8 @@ Function104c8a: ; 104c8a (41:4c8a) ; known jump sources: 104c5a (41:4c5a), 104c6c (41:4c6c) Function104cd2: ; 104cd2 (41:4cd2) ld a, $3c - ld [hPastLeadingZeroes], a ; $ff00+$b3 (aliases: hDividend, hProduct) - ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct) + ld [$ffb3], a + ld hl, $ffb3 ld b, $1 call Function104d4e ret nz @@ -106410,7 +105516,7 @@ Function104cd2: ; 104cd2 (41:4cd2) ret nz call Function104d43 ret nz - ld hl, hPastLeadingZeroes ; $ffb3 (aliases: hDividend, hProduct) + ld hl, $ffb3 ld b, $1 call Function104d56 ret nz @@ -106418,7 +105524,7 @@ Function104cd2: ; 104cd2 (41:4cd2) ld a, [$FF00+$bc] cp $6c ret nz - ld a, [hPastLeadingZeroes] ; $ff00+$b3 (aliases: hDividend, hProduct) + ld a, [$ffb3] swap a cp $3c jp nz, Function104d32 @@ -107013,7 +106119,7 @@ Function105069: ; 105069 (41:5069) ld d, $0 ld b, $2 ld hl, $abf0 - ld a, $3 + predef_id FlagPredef push hl push bc call Predef @@ -107025,8 +106131,7 @@ Function105069: ; 105069 (41:5069) ret nz call Function105106 ld b, $1 - ld a, $3 - call Predef + predef FlagPredef call CloseSRAM xor a ret @@ -107040,8 +106145,7 @@ Function105091: ; 105091 (41:5091) ld d, $0 ld b, $2 ld hl, $abf0 - ld a, $3 - call Predef + predef FlagPredef ld a, c and a pop bc @@ -107623,45 +106727,37 @@ DisplayUsedMoveText: ; 105db0 UsedMoveText: ; 105db9 - ; this is a stream of text and asm from 105db9 to 105ef6 -; print actor name text_jump _ActorNameText start_asm -; ???? ld a, [hBattleTurn] and a jr nz, .start -; append used move list - ld a, [PlayerMoveAnimation] + ld a, [wPlayerMoveStruct + MOVE_ANIM] call UpdateUsedMoves .start -; get address for last move - ld a, $13 ; last move - call _GetBattleVar + ld a, BATTLE_VARS_LAST_MOVE + call GetBattleVarAddr ld d, h ld e, l -; get address for last counter move - ld a, $11 - call _GetBattleVar + ld a, BATTLE_VARS_LAST_COUNTER_MOVE + call GetBattleVarAddr -; get move animation (id) - ld a, $c ; move animation + ld a, BATTLE_VARS_MOVE_ANIM call GetBattleVar ld [$d265], a -; check actor ???? push hl callba Function34548 pop hl jr nz, .grammar -; update last move + ; update last move ld a, [$d265] ld [hl], a ld [de], a @@ -107673,13 +106769,13 @@ UsedMoveText: ; 105db9 ; everything except 'instead' made redundant in localization -; check obedience + ; check obedience ld a, [AlreadyDisobeyed] and a ld hl, UsedMove2Text ret nz -; check move grammar + ; check move grammar ld a, [$d265] cp $3 ld hl, UsedMove2Text @@ -108246,7 +107342,7 @@ Function106050: ; 106050 Function106051: ; 106051 ld a, [BattleType] - cp $3 + cp BATTLETYPE_TUTORIAL ret z ld hl, $a01b jp Function10611d @@ -108259,7 +107355,7 @@ Function10605d: ; 10605d Function10605e: ; 10605e ld a, [BattleType] - cp $3 + cp BATTLETYPE_TUTORIAL ret z ld hl, $a01e jp Function10611d @@ -111517,33 +110613,33 @@ Function119451: ; 119451 (46:5451) Function119471: ; 119471 (46:5471) push af ld a, [hli] - ld [EnemyMoveAnimation], a ; $c608 (aliases: EnemyMoveStruct) + ld [$c608], a ld a, [hli] - ld [EnemyMoveType], a ; $c60b + ld [$c60b], a ld a, [hli] - ld [EnemyMoveEffect], a ; $c609 + ld [$c609], a ld a, [hli] - ld [EnemyMovePower], a ; $c60a + ld [$c60a], a ld a, [hli] - ld [EnemyMoveAccuracy], a ; $c60c + ld [$c60c], a ld a, [hli] - ld [EnemyMovePP], a ; $c60d + ld [$c60d], a ; $c60d push hl - ld a, [EnemyMoveAnimation] ; $c608 (aliases: EnemyMoveStruct) + ld a, [$c608] cp $ff jr z, .asm_1194a7 - ld a, [EnemyMovePower] ; $c60a + ld a, [$c60a] cp $ff jr z, .asm_1194a7 - ld a, [EnemyMoveEffect] ; $c609 + ld a, [$c609] cp $ff jr nz, .asm_1194a7 call Function119584 jr c, .asm_11950c jr .asm_1194f0 .asm_1194a7 - ld hl, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) - ld de, EnemyMoveType ; $c60b + ld hl, $c608 + ld de, $c60b ld c, $3 .asm_1194af ld a, [de] @@ -111559,7 +110655,7 @@ Function119471: ; 119471 (46:5471) .asm_1194bc ld c, $3 ld hl, $cd49 - ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) + ld de, $c608 .asm_1194c4 ld a, [de] inc de @@ -111576,7 +110672,7 @@ Function119471: ; 119471 (46:5471) .asm_1194d5 ld c, $3 ld hl, $cd49 - ld de, EnemyMoveType ; $c60b + ld de, $c60b .asm_1194dd ld a, [de] inc de @@ -111597,7 +110693,7 @@ Function119471: ; 119471 (46:5471) .asm_1194f3 ld c, $3 ld hl, $cd49 - ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) + ld de, $c608 .asm_1194fb ld a, [de] inc de @@ -111616,9 +110712,9 @@ Function119471: ; 119471 (46:5471) ld a, $1 ld [$cd50], a ld a, l - ld [EnemyMoveAnimation], a ; $c608 (aliases: EnemyMoveStruct) + ld [$c608], a ld a, h - ld [EnemyMoveEffect], a ; $c609 + ld [$c609], a ld de, $cd69 ld c, $10 ld b, $0 @@ -111698,9 +110794,9 @@ Function119471: ; 119471 (46:5471) ; known jump sources: 1194a0 (46:54a0) Function119584: ; 119584 (46:5584) - ld a, [EnemyMoveAnimation] ; $c608 (aliases: EnemyMoveStruct) + ld a, [$c608] ld b, a - ld a, [EnemyMoveType] ; $c60b + ld a, [$c60b] ld c, a cp b jr c, .asm_11959c @@ -111717,9 +110813,9 @@ Function119584: ; 119584 (46:5584) cp b jr c, .asm_119595 .asm_1195a2 - ld a, [EnemyMovePower] ; $c60a + ld a, [$c60a] ld b, a - ld a, [EnemyMovePP] ; $c60d + ld a, [$c60d] ; $c60d ld c, a cp b jr c, .asm_1195ba @@ -111764,9 +110860,9 @@ Function1195c4: ; 1195c4 (46:55c4) call CopyBytes xor a ld [de], a - ld a, [EnemyMoveAnimation] ; $c608 (aliases: EnemyMoveStruct) + ld a, [$c608] ld l, a - ld a, [EnemyMoveEffect] ; $c609 + ld a, [$c609] ld h, a ld de, $cd69 ld bc, $10 @@ -111938,11 +111034,11 @@ Function119d93: ; 119d93 (46:5d93) ld a, $1 ld [rSVBK], a ; $ff00+$70 ld a, [$cd4f] - ld c, $a + ld c, 10 call SimpleMultiply ld hl, $cd50 ld [hl], a - ld bc, $30 + ld bc, PartyMon2 - PartyMon1 ld de, PartyMon1Level ; $dcfe ld a, [PartyCount] ; $dcd7 .asm_119daf @@ -111980,28 +111076,28 @@ Function119dd1: ; 119dd1 (46:5dd1) ld a, [rSVBK] ; $ff00+$70 push af ld a, [$cd4f] - cp $7 + cp 70 / 10 jr nc, .asm_119e08 ld a, $1 ld [rSVBK], a ; $ff00+$70 ld hl, PartyMon1Level ; $dcfe - ld bc, $30 + ld bc, PartyMon2 - PartyMon1 ld de, PartySpecies ; $dcd8 ld a, [PartyCount] ; $dcd7 .asm_119deb push af ld a, [de] - cp $96 + cp MEWTWO jr z, .asm_119dfd - cp $97 + cp MEW jr z, .asm_119dfd - cp $f9 + cp LUGIA jr c, .asm_119e02 - cp $fc + cp NUM_POKEMON + 1 jr nc, .asm_119e02 .asm_119dfd ld a, [hl] - cp $46 + cp 70 jr c, .asm_119e0d .asm_119e02 add hl, bc @@ -112021,7 +111117,7 @@ Function119dd1: ; 119dd1 (46:5dd1) call GetPokemonName ld hl, StringBuffer1 ; $d073 ld de, $cd49 - ld bc, $b + ld bc, PKMN_NAME_LENGTH call CopyBytes ld a, $a ld [$cf66], a @@ -112591,13 +111687,13 @@ Function11b5e8: ; 11b5e8 ld a, $0 call GetSRAMBank ld hl, $d4ba - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $0004 call CopyBytes call CloseSRAM ld a, $5 call GetSRAMBank - ld hl, EnemyMoveAnimation + ld hl, $c608 ld de, $b08c ld bc, $0004 call CopyBytes @@ -112651,7 +111747,7 @@ Function11b65a: ; 11b65a INCBIN "baserom.gbc",$11b669,$11b7e5 - $11b669 Function11b7e5: ; 11b7e5 - ld a, [EnemyMovePP] + ld a, [$c60d] ld [PlayerLightScreenCount], a ld [CurPartySpecies], a ld a, [$cd81] @@ -112662,16 +111758,16 @@ Function11b7e5: ; 11b7e5 call CopyBytes ld a, $50 ld [de], a - ld a, [PlayerMoveAccuracy] + ld a, [$c613] ld [$c731], a - ld a, [PlayerMovePP] + ld a, [$c614] ld [$c732], a ld hl, $c622 ld a, [hli] ld [$c72f], a ld a, [hl] ld [$c730], a - ld bc, EnemyMovePP + ld bc, $c60d callba GetCaughtGender ld a, c ld [$c733], a @@ -112821,7 +111917,7 @@ Function11b93b: ; 11b93b xor a ld [$a800], a ld hl, $a823 - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $008f call CopyBytes call CloseSRAM @@ -112874,7 +111970,7 @@ Function11b98f: ; 11b98f ld a, $ff ld [bc], a ld hl, PartyMon1Species - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 ld a, e ld [$cd2a], a .asm_11b9ba @@ -112888,9 +111984,9 @@ Function11b98f: ; 11b98f ld l, a ld a, [$cd23] ld h, a - ld bc, $0030 + ld bc, PartyMon2 - PartyMon1 call CopyBytes - ld hl, PartyMon1OT + ld hl, PartyMonOT ld bc, $000b ld a, [$cd2a] .asm_11b9d8 @@ -112908,7 +112004,7 @@ Function11b98f: ; 11b98f call CopyBytes ld a, $50 ld [de], a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames ld bc, $000b ld a, [$cd2a] .asm_11b9f9 @@ -113187,7 +112283,7 @@ Function11c0c6: ; 11c0c6 .asm_11c123 sub e ld [$cf64], a - ld de, EnemyMoveAnimation + ld de, $c608 .asm_11c12a ld a, [de] cp $50 @@ -113214,7 +112310,7 @@ Function11c0c6: ; 11c0c6 Function11c14a: ; 11c14a ld c, $0 - ld hl, EnemyMoveAnimation + ld hl, $c608 .asm_11c14f ld a, [hli] cp $50 @@ -113229,7 +112325,7 @@ Function11c156: ; 11c156 ld a, $1 ld [rSVBK], a ld a, $50 - ld hl, EnemyMoveAnimation + ld hl, $c608 ld bc, $000b call ByteFill ld a, d @@ -113258,9 +112354,9 @@ Function11c156: ; 11c156 add hl, bc ld bc, $0005 .asm_11c18f - ld de, EnemyMoveAnimation + ld de, $c608 call CopyBytes - ld de, EnemyMoveAnimation + ld de, $c608 pop af ld [rSVBK], a ret @@ -115882,8 +114978,7 @@ Function16d6e1: ; 16d6e1 hlcoord 4, 10 ld b, $1 ld c, $a - ld a, $10 - call Predef + predef Function28eef hlcoord 5, 11 ld de, $5701 call PlaceString @@ -116098,7 +115193,7 @@ Function170121: ; 170121 ld a, $5 call GetSRAMBank ld hl, $a948 - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $00f6 call CopyBytes call CloseSRAM @@ -116617,21 +115712,21 @@ Function170923: ; 170923 Function17093c: ; 17093c (5c:493c) xor a ld [ScriptVar], a ; $c2dd - ld a, $81 + ld a, EGG_TICKET ld [CurItem], a ; $d106 ld hl, NumItems ; $d892 (aliases: TMsHMsEnd) call CheckItem ret nc ld a, [PartyCount] ; $dcd7 - ld b, $0 + ld b, 0 ld c, a ld hl, PartySpecies ; $dcd8 .asm_170955 ld a, [hli] - cp $fd + cp EGG jr nz, .asm_17099f push hl - ld hl, PartyMonOT ; $ddff (aliases: PartyMon1OT) + ld hl, PartyMonOT ; $ddff (aliases: PartyMonOT) ld de, $6 ld a, b and a @@ -116641,7 +115736,7 @@ Function17093c: ; 17093c (5c:493c) dec a jr nz, .asm_170965 .asm_170969 - ld de, $49a4 + ld de, String_1709a4 ld a, $6 .asm_17096e push af @@ -116661,7 +115756,7 @@ Function17093c: ; 17093c (5c:493c) ld [hli], a ld [hli], a pop hl - ld a, $81 + ld a, EGG_TICKET ld [CurItem], a ; $d106 ld a, $1 ld [$d10c], a @@ -116672,6 +115767,7 @@ Function17093c: ; 17093c (5c:493c) ld a, $1 ld [ScriptVar], a ; $c2dd ret + .asm_17099d pop af pop hl @@ -116682,7 +115778,8 @@ Function17093c: ; 17093c (5c:493c) ret ; 1709a4 (5c:49a4) -INCBIN "baserom.gbc",$1709a4,$1709aa - $1709a4 +String_1709a4: ; 1709a4 + db "なぞナゾ@@" ; no known jump sources Function1709aa: ; 1709aa (5c:49aa) @@ -116802,7 +115899,7 @@ Function170b16: ; 170b16 (5c:4b16) call GetSRAMBank ld a, [$b2fb] call CloseSRAM - ld c, $a + ld c, 10 call SimpleDivide ld a, b ld [$cd4f], a @@ -117028,10 +116125,10 @@ Function171ac9: ; 171ac9 (5c:5ac9) ; no known jump sources Function171ad7: ; 171ad7 (5c:5ad7) xor a - ld hl, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) + ld hl, $c608 ld bc, $66 call ByteFill - ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) + ld de, $c608 ld a, $c call Function3e32 jp Function171c66 @@ -117061,7 +116158,7 @@ Function171aec: ; 171aec (5c:5aec) jr nz, .asm_171b01 hlcoord 2, 7 ld a, $3 - ld de, EnemyMoveAnimation ; $c608 (aliases: EnemyMoveStruct) + ld de, $c608 .asm_171b1b push af push hl @@ -117428,7 +116525,7 @@ Function178000: callba DrawPlayerHUD ld hl, PlayerHPPal ; $cd99 call SetHPPal - callba Function3e043 + callba DrawEnemyHUD ld hl, EnemyHPPal ; $cd9a call SetHPPal callba Function3ee27 @@ -117663,8 +116760,7 @@ Function17d1f1: ; 17d1f1 dec a ld bc, PartyMon2 - PartyMon1 call AddNTimes - ld a, $2d - call Predef + predef GetUnownLetter callab Functionfba18 ld a, [$def4] and a @@ -117843,7 +116939,7 @@ Function17d370: ; 17d370 callba Function104061 call DisableLCD ld hl, $8ee0 - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $0010 call CopyBytes ld a, $1 @@ -117856,7 +116952,7 @@ Function17d370: ; 17d370 ld hl, $97f0 ld bc, $0010 call ByteFill - ld hl, EnemyMoveAnimation + ld hl, $c608 ld de, $8ee0 ld bc, $0010 call CopyBytes @@ -117919,7 +117015,7 @@ Function17d60b: ; 17d60b ld a, $5 call GetSRAMBank ld hl, $b1d3 - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $0020 call CopyBytes ld a, [$b1b1] @@ -117954,7 +117050,7 @@ Function17d60b: ; 17d60b ld [$cd49], a push hl push de - ld hl, EnemyMoveAnimation + ld hl, $c608 ld e, b ld d, $0 add hl, de @@ -118198,7 +117294,7 @@ Function17f0f8: ; 17f0f8 ld a, [$cd55] ld d, a add hl, de - ld de, EnemyMoveAnimation + ld de, $c608 ld a, [$cd56] ld c, a ld b, $0 @@ -118206,7 +117302,7 @@ Function17f0f8: ; 17f0f8 ld a, $50 ld [de], a pop hl - ld de, EnemyMoveAnimation + ld de, $c608 call PlaceString ld a, c ld [$cd52], a @@ -118298,10 +117394,10 @@ Function17f181: ; 17f181 add hl, de ld a, [hl] ld c, a - ld de, EnemyMoveAnimation + ld de, $c608 callba Function48c63 pop hl - ld de, EnemyMoveAnimation + ld de, $c608 call PlaceString ld a, c ld [$cd52], a @@ -118533,13 +117629,13 @@ Function17f2ff: ; 17f2ff ld a, $1 ld [rSVBK], a ld hl, PlayerName - ld de, EnemyMoveAnimation + ld de, $c608 ld bc, $0006 call CopyBytes ld a, $4 ld [rSVBK], a pop hl - ld de, EnemyMoveAnimation + ld de, $c608 call PlaceString ld a, c ld [$cd52], a @@ -118580,10 +117676,10 @@ Function17f334: ; 17f334 .asm_17f35d ld c, a call CloseSRAM - ld de, EnemyMoveAnimation + ld de, $c608 callba Function48c63 pop hl - ld de, EnemyMoveAnimation + ld de, $c608 call PlaceString ld a, c ld [$cd52], a @@ -118797,7 +117893,7 @@ Function17f44f: ; 17f44f ld l, a ld a, [$cd56] ld h, a - ld de, EnemyMoveAnimation + ld de, $c608 ld a, [$cd57] ld c, a ld b, $0 @@ -118815,7 +117911,7 @@ Function17f44f: ; 17f44f call GetSRAMBank .asm_17f4b7 - ld de, EnemyMoveAnimation + ld de, $c608 pop hl push hl ld a, [$cd57] @@ -119445,7 +118541,7 @@ Function1dc381: ; 1dc381 ld a, [CurPartySpecies] ld [$d265], a ld [CurSpecies], a - ld hl, PartyMon1Nickname + ld hl, PartyMonNicknames call Function1dc50e hlcoord 8, 4 call PlaceString @@ -119465,7 +118561,7 @@ Function1dc381: ; 1dc381 hlcoord 1, 9 ld de, String1dc550 call PlaceString - ld hl, PartyMon1OT + ld hl, PartyMonOT call Function1dc50e hlcoord 4, 9 call PlaceString @@ -119480,17 +118576,16 @@ Function1dc381: ; 1dc381 ld de, String1dc554 call PlaceString hlcoord 7, 14 - ld a, [TempMonMove1] + ld a, [TempMonMoves + 0] call Function1dc51a call Function1dc52c ld hl, TempMonDVs - ld a, $2d - call Predef + predef GetUnownLetter ld hl, $c2c6 xor a ld [hl], a ld a, [CurPartySpecies] - cp $c9 + cp UNOWN jr z, .asm_1dc469 inc [hl] @@ -119523,22 +118618,22 @@ Function1dc47b: ; 1dc47b hlcoord 0, 1 call CopyBytes hlcoord 7, 0 - ld a, [TempMonMove2] + ld a, [TempMonMoves + 1] call Function1dc51a hlcoord 7, 2 - ld a, [TempMonMove3] + ld a, [TempMonMoves + 2] call Function1dc51a hlcoord 7, 4 - ld a, [TempMonMove4] + ld a, [TempMonMoves + 3] call Function1dc51a hlcoord 7, 7 ld de, String1dc55d call PlaceString hlcoord 16, 7 - ld de, TempMonAtk + ld de, TempMonAttack call Function1dc507 hlcoord 16, 9 - ld de, TempMonDef + ld de, TempMonDefense call Function1dc507 hlcoord 16, 11 ld de, TempMonSpclAtk @@ -119547,7 +118642,7 @@ Function1dc47b: ; 1dc47b ld de, TempMonSpclDef call Function1dc507 hlcoord 16, 15 - ld de, TempMonSpd + ld de, TempMonSpeed call Function1dc507 call WaitBGMap ld b, $3 diff --git a/maps/CherrygroveCity.asm b/maps/CherrygroveCity.asm index f2573913b..cdcacbd1b 100644 --- a/maps/CherrygroveCity.asm +++ b/maps/CherrygroveCity.asm @@ -130,7 +130,7 @@ UnknownScript_0x19c0ae: ; 0x19c0ae winlosstext UnknownText_0x19c57f, UnknownText_0x19c5e6 setlasttalked $3 loadtrainer RIVAL1, RIVAL1_3 - writecode $3, $1 + writecode $3, BATTLETYPE_CANLOSE startbattle reloadmapmusic reloadmap @@ -142,7 +142,7 @@ UnknownScript_0x19c0ee: ; 0x19c0ee winlosstext UnknownText_0x19c57f, UnknownText_0x19c5e6 setlasttalked $3 loadtrainer RIVAL1, RIVAL1_1 - writecode $3, $1 + writecode $3, BATTLETYPE_CANLOSE startbattle reloadmapmusic reloadmap @@ -154,7 +154,7 @@ UnknownScript_0x19c104: ; 0x19c104 winlosstext UnknownText_0x19c57f, UnknownText_0x19c5e6 setlasttalked $3 loadtrainer RIVAL1, RIVAL1_2 - writecode $3, $1 + writecode $3, BATTLETYPE_CANLOSE startbattle reloadmapmusic reloadmap diff --git a/maps/LakeofRage.asm b/maps/LakeofRage.asm index 46cdf948f..fcd052968 100644 --- a/maps/LakeofRage.asm +++ b/maps/LakeofRage.asm @@ -88,7 +88,7 @@ GyaradosScript_0x70063: ; 0x70063 cry GYARADOS loadmovesprites loadpokedata GYARADOS, 30 - writecode $3, $7 + writecode $3, BATTLETYPE_SHINY startbattle if_equal $1, UnknownScript_0x7007a disappear $a diff --git a/maps/Route29.asm b/maps/Route29.asm index 2dbe28d1c..f3b95ae7c 100644 --- a/maps/Route29.asm +++ b/maps/Route29.asm @@ -52,7 +52,7 @@ UnknownScript_0x1a0f6d: ; 0x1a0f6d applymovement $2, MovementData_0x1a109a stopfollow loadpokedata RATTATA, 5 - catchtutorial $3 + catchtutorial BATTLETYPE_TUTORIAL spriteface $2, $1 loadfont 2writetext UnknownText_0x1a114d @@ -78,7 +78,7 @@ UnknownScript_0x1a0fa3: ; 0x1a0fa3 applymovement $2, MovementData_0x1a10a1 stopfollow loadpokedata RATTATA, 5 - catchtutorial $3 + catchtutorial BATTLETYPE_TUTORIAL spriteface $2, $1 loadfont 2writetext UnknownText_0x1a114d @@ -121,7 +121,7 @@ CooltrainerMScript_0x1a0ff1: ; 0x1a0ff1 iffalse UnknownScript_0x1a1022 loadmovesprites loadpokedata RATTATA, 5 - catchtutorial $3 + catchtutorial BATTLETYPE_TUTORIAL loadfont 2writetext UnknownText_0x1a114d closetext diff --git a/maps/TeamRocketBaseB1F.asm b/maps/TeamRocketBaseB1F.asm index 7c8b2f50b..d0aa17c29 100644 --- a/maps/TeamRocketBaseB1F.asm +++ b/maps/TeamRocketBaseB1F.asm @@ -464,7 +464,7 @@ VoltorbExplodingTrap: ; 0x6ca34 cry VOLTORB special $0031 setlasttalked $ff - writecode $3, $9 + writecode $3, BATTLETYPE_TRAP loadpokedata VOLTORB, 23 startbattle end @@ -474,7 +474,7 @@ GeodudeExplodingTrap: ; 0x6ca47 cry GEODUDE special $0031 setlasttalked $ff - writecode $3, $9 + writecode $3, BATTLETYPE_TRAP loadpokedata GEODUDE, 21 startbattle end @@ -484,7 +484,7 @@ KoffingExplodingTrap: ; 0x6ca5a cry KOFFING special $0031 setlasttalked $ff - writecode $3, $9 + writecode $3, BATTLETYPE_TRAP loadpokedata KOFFING, 21 startbattle end diff --git a/maps/TinTower1F.asm b/maps/TinTower1F.asm index 4e4d93d04..d9a1fe044 100644 --- a/maps/TinTower1F.asm +++ b/maps/TinTower1F.asm @@ -122,7 +122,7 @@ UnknownScript_0x1850d7: ; 0x1850d7 cry SUICUNE pause 20 loadpokedata SUICUNE, 40 - writecode $3, $c + writecode $3, BATTLETYPE_SUICUNE startbattle reloadmapmusic disappear $2 diff --git a/maps/TinTowerRoof.asm b/maps/TinTowerRoof.asm index 27ed801c5..5e3aa8bea 100644 --- a/maps/TinTowerRoof.asm +++ b/maps/TinTowerRoof.asm @@ -36,7 +36,7 @@ HoOhScript_0x77244: ; 0x77244 pause 15 loadmovesprites setevent EVENT_FOUGHT_HO_OH - writecode $3, $a + writecode $3, BATTLETYPE_FORCEITEM loadpokedata HO_OH, 60 startbattle disappear $2 diff --git a/maps/VermilionCity.asm b/maps/VermilionCity.asm index a1e1123db..d69a9546f 100644 --- a/maps/VermilionCity.asm +++ b/maps/VermilionCity.asm @@ -56,7 +56,7 @@ UnknownScript_0x1aa9ab: ; 0x1aa9ab pause 15 cry SNORLAX loadmovesprites - writecode $3, $a + writecode $3, BATTLETYPE_FORCEITEM loadpokedata SNORLAX, 50 startbattle disappear $6 diff --git a/maps/WhirlIslandLugiaChamber.asm b/maps/WhirlIslandLugiaChamber.asm index 05adf2ced..ff95c239d 100644 --- a/maps/WhirlIslandLugiaChamber.asm +++ b/maps/WhirlIslandLugiaChamber.asm @@ -36,7 +36,7 @@ LugiaScript_0x18c518: ; 0x18c518 pause 15 loadmovesprites setevent EVENT_FOUGHT_LUGIA - writecode $3, $a + writecode $3, BATTLETYPE_FORCEITEM loadpokedata LUGIA, 60 startbattle disappear $2 diff --git a/predef/cgb.asm b/predef/cgb.asm index 8d59b2326..38f4e146d 100644 --- a/predef/cgb.asm +++ b/predef/cgb.asm @@ -840,11 +840,13 @@ Function93ba: ; 93ba Function93d3: ; 93d3 ld a, [BattleType] - cp $3 + cp BATTLETYPE_TUTORIAL jr z, .asm_93e6 + ld a, [PlayerGender] bit 0, a jr z, .asm_93e6 + ld hl, Palettes_9469 jr .asm_93e9 diff --git a/text/battle.asm b/text/battle.asm index b850c9661..5cd41bcca 100644 --- a/text/battle.asm +++ b/text/battle.asm @@ -30,7 +30,7 @@ PokemonFellFromTreeText: ; 0x80778 prompt ; 0x80793 -WildPokemonAppearedText2: ; 0x80793 +WildCelebiAppearedText: ; 0x80793 text "Wild @" text_from_ram $c616 db $0 @@ -60,43 +60,43 @@ BattleText_0x807cf: ; 0x807cf prompt ; 0x807e2 -BattleText_0x807e2: ; 0x807e2 +HurtByPoisonText: ; 0x807e2 text $5a line "is hurt by poison!" prompt ; 0x807f8 -BattleText_0x807f8: ; 0x807f8 +HurtByBurnText: ; 0x807f8 text $5a, "'s" line "hurt by its burn!" prompt ; 0x8080e -BattleText_0x8080e: ; 0x8080e +LeechSeedSapsText: ; 0x8080e text "LEECH SEED saps" line $5a, "!" prompt ; 0x80822 -BattleText_0x80822: ; 0x80822 +HasANightmareText: ; 0x80822 text $5a line "has a NIGHTMARE!" prompt ; 0x80836 -BattleText_0x80836: ; 0x80836 +HurtByCurseText: ; 0x80836 text $5a, "'s" line "hurt by the CURSE!" prompt ; 0x8084d -BattleText_0x8084d: ; 0x8084d +SandstormHitsText: ; 0x8084d text "The SANDSTORM hits" line $5a, "!" prompt ; 0x80864 -BattleText_0x80864: ; 0x80864 +PerishCountText: ; 0x80864 text $5a, "'s" line "PERISH count is @" deciram $d265, $11 diff --git a/text/types.asm b/text/types.asm index 0addaaf6e..c3076fb10 100644 --- a/text/types.asm +++ b/text/types.asm @@ -42,13 +42,13 @@ PrintMoveType: ; 5093a push hl ld a, b dec a - ld bc, Move2 - Move1 + ld bc, MOVE_LENGTH ld hl, Moves call AddNTimes ld de, StringBuffer1 ld a, BANK(Moves) call FarCopyBytes - ld a, [StringBuffer1 + PlayerMoveType - PlayerMoveStruct] + ld a, [StringBuffer1 + MOVE_TYPE] pop hl ld b, a diff --git a/trainers/trainers.asm b/trainers/trainers.asm index 85b0a9ac6..f1d1b75eb 100644 --- a/trainers/trainers.asm +++ b/trainers/trainers.asm @@ -5,7 +5,7 @@ ; Type ; 0: Level, species ; 1: Level, species, moves - ; 2: Level, sepcies, item + ; 2: Level, species, item ; 3: Level, species, item, moves ; Party ; Up to six monsters following the data type @@ -1,222 +1,120 @@ INCLUDE "includes.asm" +flag_array: MACRO + ds ((\1) + 7) / 8 +ENDM -party_struct: MACRO - -\1Species:: db -\1Item:: db - -\1Moves:: -\1Move1:: db -\1Move2:: db -\1Move3:: db -\1Move4:: db - -\1ID:: dw -\1Exp:: ds 3 ; Big endian +box_struct_length EQU 32 +box_struct: MACRO +\1Species:: db +\1Item:: db +\1Moves:: ds NUM_MOVES +\1ID:: dw +\1Exp:: ds 3 \1StatExp:: -\1HPExp:: dw -\1AtkExp:: dw -\1DefExp:: dw -\1SpdExp:: dw -\1SpclExp:: dw - -\1DVs:: -\1AtkDefDV:: db -\1SpdSpcDV:: db - -\1PP:: -\1PPMove1:: db -\1PPMove2:: db -\1PPMove3:: db -\1PPMove4:: db - -\1Happiness:: db -\1PokerusStatus:: db - +\1HPExp:: dw +\1AtkExp:: dw +\1DefExp:: dw +\1SpdExp:: dw +\1SpcExp:: dw +\1DVs:: ds 2 +\1PP:: ds NUM_MOVES +\1Happiness:: db +\1PokerusStatus:: db \1CaughtData:: \1CaughtTime:: \1CaughtLevel:: db \1CaughtGender:: \1CaughtLocation:: db +\1Level:: db +\1End:: +ENDM -\1Level:: db - -\1Status:: db -\1Unused:: db - -; Stats are big endian. -\1HP:: dw -\1MaxHP:: dw -\1Attack:: dw -\1Defense:: dw -\1Speed:: dw -\1SpclAtk:: dw -\1SpclDef:: dw +party_struct: MACRO + box_struct \1 +\1Status:: db +\1Unused:: db +\1HP:: dw +\1MaxHP:: dw +\1Stats:: ; big endian +\1Attack:: dw +\1Defense:: dw +\1Speed:: dw +\1SpclAtk:: dw +\1SpclDef:: dw +\1StatsEnd:: +ENDM +battle_struct: MACRO +\1Species:: db +\1Item:: db +\1Moves:: ds NUM_MOVES +\1MovesEnd:: +\1DVs:: ds 2 +\1PP:: ds NUM_MOVES +\1Happiness:: db +\1Level:: db +\1Status:: ds 2 +\1HP:: dw +\1MaxHP:: dw +\1Stats:: ; big endian +\1Attack:: dw +\1Defense:: dw +\1Speed:: dw +\1SpclAtk:: dw +\1SpclDef:: dw +\1StatsEnd:: +\1Type:: +\1Type1:: db +\1Type2:: db ENDM channel_struct: MACRO -; Addresses are Channel1 ($c101). - -\1MusicID:: ; c101 - ds 2 -\1MusicBank:: ; c103 - ds 1 -\1Flags:: ; c104 -; 0: on/off -; 1: subroutine -; 2: -; 3: -; 4: noise sampling on/off -; 5: -; 6: -; 7: - ds 1 -\1Flags2:: ; c105 -; 0: vibrato on/off -; 1: -; 2: duty cycle on/off -; 3: -; 4: -; 5: -; 6: -; 7: - ds 1 -\1Flags3:: ; c106 -; 0: vibrato up/down -; 1: -; 2: -; 3: -; 4: -; 5: -; 6: -; 7: - ds 1 -\1MusicAddress:: ; c107 - ds 2 -\1LastMusicAddress:: ; c109 - ds 2 -; could have been meant as a third-level address - ds 2 -\1NoteFlags:: ; c10d -; 0: -; 1: -; 2: -; 3: -; 4: -; 5: rest -; 6: -; 7: - ds 1 -\1Condition:: ; c10e -; used for conditional jumps - ds 1 -\1DutyCycle:: ; c10f -; uses top 2 bits only -; 0: 12.5% -; 1: 25% -; 2: 50% -; 3: 75% - ds 1 -\1Intensity:: ; c110 -; hi: pressure -; lo: velocity - ds 1 -\1Frequency:: -; 11 bits -\1FrequencyLo:: ; c111 - ds 1 -\1FrequencyHi:: ; c112 - ds 1 -\1Pitch:: ; c113 -; 0: rest -; 1: C -; 2: C# -; 3: D -; 4: D# -; 5: E -; 6: F -; 7: F# -; 8: G -; 9: G# -; a: A -; b: A# -; c: B - ds 1 -\1Octave:: ; c114 -; 0: highest -; 7: lowest - ds 1 -\1StartingOctave:: ; c115 -; raises existing octaves by this value -; used for repeating phrases in a higher octave to save space - ds 1 -\1NoteDuration:: ; c116 -; number of frames remaining in the current note - ds 1 -; c117 - ds 1 -; c118 - ds 1 -\1LoopCount:: ; c119 - ds 1 -\1Tempo:: ; c11a - ds 2 -\1Tracks:: ; c11c -; hi: l -; lo: r - ds 1 -; c11d - ds 1 - -\1VibratoDelayCount:: ; c11e -; initialized at the value in VibratoDelay -; decrements each frame -; at 0, vibrato starts - ds 1 -\1VibratoDelay:: ; c11f -; number of frames a note plays until vibrato starts - ds 1 -\1VibratoExtent:: ; c120 -; difference in - ds 1 -\1VibratoRate:: ; c121 -; counts down from a max of 15 frames -; over which the pitch is alternated -; hi: init frames -; lo: frame count - ds 1 - -; c122 - ds 1 -; c123 - ds 1 -; c124 - ds 1 -; c125 - ds 1 -; c126 - ds 1 -; c127 - ds 1 -\1CryPitch:: ; c128 - ds 1 -\1CryEcho:: ; c129 - ds 1 - ds 4 -\1NoteLength:: ; c12e -; # frames per 16th note - ds 1 -; c12f - ds 1 -; c130 - ds 1 -; c131 - ds 1 -; c132 - ds 1 +; Addreses are Channel1 (c101). +\1MusicID:: dw +\1MusicBank:: db +\1Flags:: db ; 0:on/off 1:subroutine 4:noise +\1Flags2:: db ; 0:vibrato on/off 2:duty +\1Flags3:: db ; 0:vibrato up/down +\1MusicAddress:: dw +\1LastMusicAddress:: dw + dw +\1NoteFlags:: db ; 5:rest +\1Condition:: db ; conditional jumps +\1DutyCycle:: db ; bits 6-7 (0:12.5% 1:25% 2:50% 3:75%) +\1Intensity:: db ; hi:pressure lo:velocity +\1Frequency:: ; 11 bits +\1FrequencyLo:: db +\1FrequencyHi:: db +\1Pitch:: db ; 0:rest 1-c:note +\1Octave:: db ; 7-0 (0 is highest) +\1StartingOctave:: db ; raises existing octaves (to repeat phrases) +\1NoteDuration:: db ; frames remaining for the current note + ds 1 ; c117 + ds 1 ; c118 +\1LoopCount:: db +\1Tempo:: dw +\1Tracks:: db ; hi:left lo:right + ds 1 ; c11d +\1VibratoDelayCount:: db ; initialized by \1VibratoDelay +\1VibratoDelay:: db ; number of frames a note plays until vibrato starts +\1VibratoExtent:: db +\1VibratoRate:: db ; hi:frames for each alt lo:frames to the next alt + ds 1 ; c122 + ds 1 ; c123 + ds 1 ; c124 + ds 1 ; c125 + ds 1 ; c126 + ds 1 ; c127 +\1CryPitch:: db +\1CryEcho:: db + ds 4 +\1NoteLength:: db ; frames per 16th note + ds 1 ; c12f + ds 1 ; c130 + ds 1 ; c131 + ds 1 ; c132 ENDM SECTION "tiles0",VRAM[$8000],BANK[0] @@ -235,8 +133,7 @@ VBGMap1:: SECTION "WRAMBank0",WRAM0[$c000] SECTION "stack",WRAM0[$c0ff] -Stack:: ; c0ff - ds -$100 +Stack:: ds -$100 ; c0ff SECTION "audio",WRAM0[$c100] @@ -245,39 +142,24 @@ MusicPlaying:: ; c100 ds 1 Channels:: -Channel1:: ; c101 - channel_struct Channel1 -Channel2:: ; c133 - channel_struct Channel2 -Channel3:: ; c165 - channel_struct Channel3 -Channel4:: ; c197 - channel_struct Channel4 +Channel1:: channel_struct Channel1 ; c101 +Channel2:: channel_struct Channel2 ; c133 +Channel3:: channel_struct Channel3 ; c165 +Channel4:: channel_struct Channel4 ; c197 SFXChannels:: -Channel5:: ; c1c9 - channel_struct Channel5 -Channel6:: ; c1fb - channel_struct Channel6 -Channel7:: ; c22d - channel_struct Channel7 -Channel8:: ; c25f - channel_struct Channel8 - -; c291 - ds 1 -; c292 - ds 1 -; c293 - ds 1 -; c294 - ds 1 -; c295 - ds 1 -; c296 - ds 1 -; c297 - ds 1 +Channel5:: channel_struct Channel5 ; c1c9 +Channel6:: channel_struct Channel6 ; c1fb +Channel7:: channel_struct Channel7 ; c22d +Channel8:: channel_struct Channel8 ; c25f + + ds 1 ; c291 + ds 1 ; c292 + ds 1 ; c293 + ds 1 ; c294 + ds 1 ; c295 + ds 1 ; c296 + ds 1 ; c297 CurMusicByte:: ; c298 ds 1 @@ -430,118 +312,30 @@ Sprites:: ; c400 ; bit 4: pal # (non-cgb) ; bit 3: vram bank (cgb only) ; bit 2-0: pal # (cgb only) - ds 160 + ds 4 * 40 SpritesEnd:: TileMap:: ; c4a0 ; 20x18 grid of 8x8 tiles - ds 360 + ds SCREEN_WIDTH * SCREEN_HEIGHT TileMapEnd:: -SECTION "BattleMons",WRAM0[$c608] -EnemyMoveStruct:: -EnemyMoveAnimation:: ; c608 - ds 1 -EnemyMoveEffect:: ; c609 - ds 1 -EnemyMovePower:: ; c60a - ds 1 -EnemyMoveType:: ; c60b - ds 1 -EnemyMoveAccuracy:: ; c60c - ds 1 -EnemyMovePP:: ; c60d - ds 1 -EnemyMoveEffectChance:: ; c60e - ds 1 - -PlayerMoveStruct:: -PlayerMoveAnimation:: ; c60f - ds 1 -PlayerMoveEffect:: ; c610 - ds 1 -PlayerMovePower:: ; c611 - ds 1 -PlayerMoveType:: ; c612 - ds 1 -PlayerMoveAccuracy:: ; c613 - ds 1 -PlayerMovePP:: ; c614 - ds 1 -PlayerMoveEffectChance:: ; c615 - ds 1 +wBattle:: -EnemyMonNick:: ; c616 - ds 11 -BattleMonNick:: ; c621 - ds 11 +wEnemyMoveStruct:: ds MOVE_LENGTH ; c608 +wPlayerMoveStruct:: ds MOVE_LENGTH ; c60f +EnemyMonNick:: ds PKMN_NAME_LENGTH ; c616 +BattleMonNick:: ds PKMN_NAME_LENGTH ; c621 -BattleMonSpecies:: ; c62c - ds 1 -BattleMonItem:: ; c62d - ds 1 - -BattleMonMoves:: -BattleMonMove1:: ; c62e - ds 1 -BattleMonMove2:: ; c62f - ds 1 -BattleMonMove3:: ; c630 - ds 1 -BattleMonMove4:: ; c631 - ds 1 - -BattleMonDVs:: -BattleMonAtkDefDV:: ; c632 - ds 1 -BattleMonSpdSpclDV:: ; c633 - ds 1 - -BattleMonPP:: -BattleMonPPMove1:: ; c634 - ds 1 -BattleMonPPMove2:: ; c635 - ds 1 -BattleMonPPMove3:: ; c636 - ds 1 -BattleMonPPMove4:: ; c637 - ds 1 - -BattleMonHappiness:: ; c638 - ds 1 -BattleMonLevel:: ; c639 - ds 1 - -BattleMonStatus:: ; c63a - ds 2 - -BattleMonHP:: ; c63c - ds 2 -BattleMonMaxHP:: ; c63e - ds 2 - -BattleMonAtk:: ; c640 - ds 2 -BattleMonDef:: ; c642 - ds 2 -BattleMonSpd:: ; c644 - ds 2 -BattleMonSpclAtk:: ; c646 - ds 2 -BattleMonSpclDef:: ; c648 - ds 2 - -BattleMonType1:: ; c64a - ds 1 -BattleMonType2:: ; c64b - ds 1 - +BattleMon:: battle_struct BattleMon ; c62c ds 10 OTName:: ; c656 - ds 13 + ds NAME_LENGTH + + ds 2 CurOTMon:: ; c663 ds 1 @@ -552,7 +346,6 @@ TypeModifier:: ; c665 ; >10: super-effective ; 10: normal ; <10: not very effective - ; bit 7: stab ds 1 @@ -640,6 +433,7 @@ PlayerRolloutCount:: ; c672 ds 1 PlayerConfuseCount:: ; c673 ds 1 +PlayerToxicCount:: ; c674 ds 1 PlayerDisableCount:: ; c675 ds 1 @@ -656,6 +450,7 @@ EnemyRolloutCount:: ; c67a ds 1 EnemyConfuseCount:: ; c67b ds 1 +EnemyToxicCount:: ; c67c ds 1 EnemyDisableCount:: ; c67d ds 1 @@ -736,7 +531,14 @@ EnemyTurnsTaken:: ; c6dc PlayerTurnsTaken:: ; c6dd ds 1 - ds 5 + ds 1 + +PlayerSubstituteHP:: ; c6df + ds 1 +EnemySubstituteHP:: ; c6e0 + ds 1 + + ds 2 CurPlayerMove:: ; c6e3 ds 1 @@ -752,7 +554,11 @@ LinkBattleRNCount:: ; c6e5 CurEnemyMoveNum:: ; c6e9 ds 1 - ds 10 + ds 2 + +wPayDayMoney:: ds 3 ; c6ec + + ds 5 AlreadyDisobeyed:: ; c6f4 ds 1 @@ -788,15 +594,17 @@ EnemyScreens:: ; c700 ; see PlayerScreens ds 1 +PlayerSafeguardCount:: ; c701 ds 1 - PlayerLightScreenCount:: ; c702 ds 1 PlayerReflectCount:: ; c703 ds 1 - ds 2 + ds 1 +EnemySafeguardCount:: ; c705 + ds 1 EnemyLightScreenCount:: ; c706 ds 1 EnemyReflectCount:: ; c707 @@ -825,7 +633,10 @@ EffectFailed:: ; c70d FailedMessage:: ; c70e ds 1 - ds 3 + ds 1 + +wPlayerIsSwitching:: ds 1 ; c710 +wEnemyIsSwitching:: ds 1 ; c711 PlayerUsedMoves:: ; c712 ; add a move that has been used once by the player @@ -839,11 +650,14 @@ LastPlayerMove:: ; c71b LastEnemyMove:: ; c71c ds 1 + ds 23 -SECTION "battle",WRAM0[$c734] BattleEnded:: ; c734 ds 1 + ds 12 +wBattleEnd:: +; c741 SECTION "overworldmap",WRAM0[$c800] OverworldMap:: ; c800 @@ -881,7 +695,8 @@ AttrMap:: ; cdd9 ; read horizontally from the top row ; bit 3: vram bank ; bit 0-2: palette id - ds 360 + ds SCREEN_WIDTH * SCREEN_HEIGHT +AttrMapEnd:: ds 30 @@ -1083,71 +898,7 @@ CurPartyMon:: ; d109 ds 4 TempMon:: -TempMonSpecies:: ; d10e - ds 1 -TempMonItem:: ; d10f - ds 1 -TempMonMoves:: ; d110 -TempMonMove1:: ; d110 - ds 1 -TempMonMove2:: ; d111 - ds 1 -TempMonMove3:: ; d112 - ds 1 -TempMonMove4:: ; d113 - ds 1 -TempMonID:: ; d114 - ds 2 -TempMonExp:: ; d116 - ds 3 -TempMonHPExp:: ; d119 - ds 2 -TempMonAtkExp:: ; d11b - ds 2 -TempMonDefExp:: ; d11d - ds 2 -TempMonSpdExp:: ; d11f - ds 2 -TempMonSpclExp:: ; d121 - ds 2 -TempMonDVs:: ; d123 -; hp = %1000 for each dv - ds 1 ; atk/def - ds 1 ; spd/spc -TempMonPP:: ; d125 - ds 4 -TempMonHappiness:: ; d129 - ds 1 -TempMonPokerusStatus:: ; d12a - ds 1 -TempMonCaughtData:: ; d12b -TempMonCaughtTime:: ; d12b -TempMonCaughtLevel:: ; d12b - ds 1 -TempMonCaughtGender:: ; d12c -TempMonCaughtLocation:: ; d12c - ds 1 -TempMonLevel:: ; d12d - ds 1 -TempMonStatus:: ; d12e - ds 1 -; d12f - ds 1 -TempMonHP:: ; d130 - ds 2 -TempMonMaxHP:: ; d132 - ds 2 -TempMonAtk:: ; d134 - ds 2 -TempMonDef:: ; d136 - ds 2 -TempMonSpd:: ; d138 - ds 2 -TempMonSpclAtk:: ; d13a - ds 2 -TempMonSpclDef:: ; d13c - ds 2 -TempMonEnd:: ; d13e + party_struct TempMon ds 3 @@ -1290,7 +1041,7 @@ TilesetPalettes:: ; d1e6 ds 2 EvolvableFlags:: ; d1e8 - ds 1 + flag_array PARTY_LENGTH ds 1 @@ -1305,90 +1056,13 @@ SECTION "BattleMons2",WRAMX[$d1fa],BANK[1] LinkBattleRNs:: ; d1fa ds 10 -TempEnemyMonSpecies:: ; d204 - ds 1 -TempBattleMonSpecies:: ; d205 - ds 1 - -EnemyMon:: -EnemyMonSpecies:: ; d206 - ds 1 -EnemyMonItem:: ; d207 - ds 1 - -EnemyMonMoves:: -EnemyMonMove1:: ; d208 - ds 1 -EnemyMonMove2:: ; d209 - ds 1 -EnemyMonMove3:: ; d20a - ds 1 -EnemyMonMove4:: ; d20b - ds 1 -EnemyMonMovesEnd:: - -EnemyMonDVs:: -EnemyMonAtkDefDV:: ; d20c - ds 1 -EnemyMonSpdSpclDV:: ; d20d - ds 1 - -EnemyMonPP:: -EnemyMonPPMove1:: ; d20e - ds 1 -EnemyMonPPMove2:: ; d20f - ds 1 -EnemyMonPPMove3:: ; d210 - ds 1 -EnemyMonPPMove4:: ; d211 - ds 1 - -EnemyMonHappiness:: ; d212 - ds 1 -EnemyMonLevel:: ; d213 - ds 1 - -EnemyMonStatus:: ; d214 - ds 2 - -EnemyMonHP:: -EnemyMonHPHi:: ; d216 - ds 1 -EnemyMonHPLo:: ; d217 - ds 1 - -EnemyMonMaxHP:: -EnemyMonMaxHPHi:: ; d218 - ds 1 -EnemyMonMaxHPLo:: ; d219 - ds 1 - -EnemyMonStats:: -EnemyMonAtk:: ; d21a - ds 2 -EnemyMonDef:: ; d21c - ds 2 -EnemyMonSpd:: ; d21e - ds 2 -EnemyMonSpclAtk:: ; d220 - ds 2 -EnemyMonSpclDef:: ; d222 - ds 2 -EnemyMonStatsEnd:: - -EnemyMonType1:: ; d224 - ds 1 -EnemyMonType2:: ; d225 - ds 1 - -EnemyMonBaseStats:: ; d226 - ds 5 - -EnemyMonCatchRate:: ; d22b - ds 1 -EnemyMonBaseExp:: ; d22c - ds 1 +TempEnemyMonSpecies:: ds 1 ; d204 +TempBattleMonSpecies:: ds 1 ; d205 +EnemyMon:: battle_struct EnemyMon ; d206 +EnemyMonBaseStats:: ds 5 ; d226 +EnemyMonCatchRate:: db ; d22b +EnemyMonBaseExp:: db ; d22c EnemyMonEnd:: @@ -1492,59 +1166,31 @@ SECTION "TimeOfDay",WRAMX[$d269],BANK[1] TimeOfDay:: ; d269 ds 1 + SECTION "OTParty",WRAMX[$d280],BANK[1] -OTPartyCount:: ; d280 - ds 1 ; number of Pokémon in party -OTPartySpecies:: ; d281 - ds 6 ; species of each Pokémon in party -; d287 - ds 1 ; any empty slots including the 7th must be FF - ; or the routine will keep going - -OTPartyMon1:: ; d288 - party_struct OTPartyMon1 -OTPartyMon2:: ; d2b8 - party_struct OTPartyMon2 -OTPartyMon3:: ; d2e8 - party_struct OTPartyMon3 -OTPartyMon4:: ; d318 - party_struct OTPartyMon4 -OTPartyMon5:: ; d348 - party_struct OTPartyMon5 -OTPartyMon6:: ; d378 - party_struct OTPartyMon6 - - -OTPartyMonOT:: -OTPartyMon1OT:: ; d3a8 - ds 11 -OTPartyMon2OT:: ; d3b3 - ds 11 -OTPartyMon3OT:: ; d3be - ds 11 -OTPartyMon4OT:: ; d3c9 - ds 11 -OTPartyMon5OT:: ; d3d4 - ds 11 -OTPartyMon6OT:: ; d3df - ds 11 - -OTPartyMonNicknames:: -OTPartyMon1Nickname:: ; d3ea - ds 11 -OTPartyMon2Nickname:: ; d3f5 - ds 11 -OTPartyMon3Nickname:: ; d400 - ds 11 -OTPartyMon4Nickname:: ; d40b - ds 11 -OTPartyMon5Nickname:: ; d416 - ds 11 -OTPartyMon6Nickname:: ; d421 - ds 11 - -SECTION "Map Events", WRAMX[$d432], BANK[1] +OTPartyCount:: ds 1 ; d280 +OTPartySpecies:: ds PARTY_LENGTH ; d281 +OTPartyEnd:: ds 1 + +OTPartyMons:: +OTPartyMon1:: party_struct OTPartyMon1 ; d288 +OTPartyMon2:: party_struct OTPartyMon2 ; d2b8 +OTPartyMon3:: party_struct OTPartyMon3 ; d2e8 +OTPartyMon4:: party_struct OTPartyMon4 ; d318 +OTPartyMon5:: party_struct OTPartyMon5 ; d348 +OTPartyMon6:: party_struct OTPartyMon6 ; d378 +OTPartyMonsEnd:: + +OTPartyMonOT:: ds NAME_LENGTH * PARTY_LENGTH ; d3a8 +OTPartyMonNicknames:: ds PKMN_NAME_LENGTH * PARTY_LENGTH ; d3ea + + ds 4 + +wBattleAction:: ds 1 ; d430 + + ds 1 + MapStatus:: ; d432 ds 1 MapEventStatus:: ; d433 @@ -1581,16 +1227,11 @@ PlayerGender:: ; d472 PlayerID:: ; d47b ds 2 -PlayerName:: ; d47d - ds 11 -MomsName:: ; d488 - ds 11 -RivalName:: ; d493 - ds 11 -RedsName:: ; d49e - ds 11 -GreensName:: ; d4a9 - ds 11 +PlayerName:: ds NAME_LENGTH ; d47d +MomsName:: ds NAME_LENGTH ; d488 +RivalName:: ds NAME_LENGTH ; d493 +RedsName:: ds NAME_LENGTH ; d49e +GreensName:: ds NAME_LENGTH ; d4a9 ds 2 @@ -1729,16 +1370,19 @@ StatusFlags2:: ; d84d Money:: ; d84e ds 3 - ds 4 +wMomsMoney:: ; d851 + ds 3 +wMomSavingMoney:: ; d854 + ds 1 Coins:: ; d855 ds 2 Badges:: JohtoBadges:: ; d857 - ds 1 + flag_array 8 KantoBadges:: ; d858 - ds 1 + flag_array 8 SECTION "Items",WRAMX[$d859],BANK[1] TMsHMs:: ; d859 @@ -1876,7 +1520,7 @@ EventFlags:: ; da72 ;PoliceAtElmsLabEvent:: ; db52 ;SalesmanMahoganyTownEvent:: ; db5c ;RedGyaradosEvent:: ; db5c - ds 250 + flag_array 2000 ; db6c SECTION "Boxes",WRAMX[$db72],BANK[1] @@ -1887,35 +1531,7 @@ wCurBox:: ; db72 ds 2 ; 8 chars + $50 -wBoxNames:: -Box1Name:: ; db75 - ds 9 -Box2Name:: ; db7e - ds 9 -Box3Name:: ; db87 - ds 9 -Box4Name:: ; db90 - ds 9 -Box5Name:: ; db99 - ds 9 -Box6Name:: ; dba2 - ds 9 -Box7Name:: ; dbab - ds 9 -Box8Name:: ; dbb4 - ds 9 -Box9Name:: ; dbbd - ds 9 -Box10Name:: ; dbc6 - ds 9 -Box11Name:: ; dbcf - ds 9 -Box12Name:: ; dbd8 - ds 9 -Box13Name:: ; dbe1 - ds 9 -Box14Name:: ; dbea - ds 9 +wBoxNames:: ds 9 * NUM_BOXES ; db75 SECTION "bike", WRAMX[$dbf5],BANK[1] BikeFlags:: ; dbf5 @@ -1954,7 +1570,7 @@ PoisonStepCount:: ; dc74 SECTION "Visited Spawn Points", WRAMX[$dca5],BANK[1] VisitedSpawns:: ; dca5 - ds 4 + flag_array 27 SECTION "BackupMapInfo", WRAMX[$dcad],BANK[1] @@ -1983,183 +1599,111 @@ SECTION "PlayerParty",WRAMX[$dcd7],BANK[1] PartyCount:: ; dcd7 ds 1 ; number of Pokémon in party PartySpecies:: ; dcd8 - ds 6 ; species of each Pokémon in party + ds PARTY_LENGTH ; species of each Pokémon in party PartyEnd:: ; dcde ds 1 ; legacy functions don't check PartyCount PartyMons:: -PartyMon1:: ; dcdf - party_struct PartyMon1 -PartyMon2:: ; dd0f - party_struct PartyMon2 -PartyMon3:: ; dd3f - party_struct PartyMon3 -PartyMon4:: ; dd6f - party_struct PartyMon4 -PartyMon5:: ; dd9f - party_struct PartyMon5 -PartyMon6:: ; ddcf - party_struct PartyMon6 - -PartyMonOT:: -PartyMon1OT:: ; ddff - ds 11 -PartyMon2OT:: ; de0a - ds 11 -PartyMon3OT:: ; de15 - ds 11 -PartyMon4OT:: ; de20 - ds 11 -PartyMon5OT:: ; de2b - ds 11 -PartyMon6OT:: ; de36 - ds 11 - -PartyMonNicknames:: -PartyMon1Nickname:: ; de41 - ds 11 -PartyMon2Nickname:: ; de4c - ds 11 -PartyMon3Nickname:: ; de57 - ds 11 -PartyMon4Nickname:: ; de62 - ds 11 -PartyMon5Nickname:: ; de6d - ds 11 -PartyMon6Nickname:: ; de78 - ds 11 +PartyMon1:: party_struct PartyMon1 ; dcdf +PartyMon2:: party_struct PartyMon2 ; dd0f +PartyMon3:: party_struct PartyMon3 ; dd3f +PartyMon4:: party_struct PartyMon4 ; dd6f +PartyMon5:: party_struct PartyMon5 ; dd9f +PartyMon6:: party_struct PartyMon6 ; ddcf + +PartyMonOT:: ds NAME_LENGTH * PARTY_LENGTH ; ddff + +PartyMonNicknames:: ds PKMN_NAME_LENGTH * PARTY_LENGTH ; de41 PartyMonNicknamesEnd:: -SECTION "Pokedex",WRAMX[$de99],BANK[1] + +SECTION "Pokedex", WRAMX[$de99], BANK[1] + PokedexCaught:: ; de99 - ds 32 + flag_array NUM_POKEMON EndPokedexCaught:: + PokedexSeen:: ; deb9 - ds 32 + flag_array NUM_POKEMON EndPokedexSeen:: + UnownDex:: ; ded9 ds 26 UnlockedUnowns:: ; def3 ds 1 -SECTION "Breeding",WRAMX[$def5],BANK[1] -DaycareMan:: ; def5 + ds 1 + +wDaycareMan:: ; def5 ; bit 7: active ; bit 6: monsters are compatible ; bit 5: egg ready ; bit 0: monster 1 in daycare ds 1 -BreedMon1:: -BreedMon1Nick:: ; def6 - ds 11 -BreedMon1OT:: ; df01 - ds 11 -BreedMon1Stats:: -BreedMon1Species:: ; df0c - ds 1 - ds 31 +wBreedMon1:: +wBreedMon1Nick:: ds PKMN_NAME_LENGTH ; def6 +wBreedMon1OT:: ds NAME_LENGTH ; df01 +wBreedMon1Stats:: box_struct wBreedMon1 ; df0c -DaycareLady:: ; df2c +wDaycareLady:: ; df2c ; bit 7: active ; bit 0: monster 2 in daycare ds 1 -StepsToEgg:: ; df2d +wStepsToEgg:: ; df2d ds 1 -DittoInDaycare:: ; df2e +wDittoInDaycare:: ; df2e ; z: yes ; nz: no ds 1 -BreedMon2:: -BreedMon2Nick:: ; df2f - ds 11 -BreedMon2OT:: ; df3a - ds 11 -BreedMon2Stats:: -BreedMon2Species:: ; df45 - ds 1 - ds 31 +wBreedMon2:: +wBreedMon2Nick:: ds PKMN_NAME_LENGTH ; df2f +wBreedMon2OT:: ds NAME_LENGTH ; df3a +wBreedMon2Stats:: box_struct wBreedMon2 ; df45 -EggNick:: ; df65 -; EGG@ - ds 11 -EggOT:: ; df70 - ds 11 -EggStats:: -EggSpecies:: ; df7b - ds 1 - ds 31 +wEggNick:: ds PKMN_NAME_LENGTH ; df65 +wEggOT:: ds NAME_LENGTH ; df70 +wEggMon:: box_struct wEggMon ; df7b ds 1 -wContestMon:: ; df9c - party_struct wContestMon +wContestMon:: party_struct wContestMon ; df9c ds 3 -RoamMon1Species:: ; dfcf - ds 1 -RoamMon1Level:: ; dfd0 - ds 1 -RoamMon1MapGroup:: ; dfd1 - ds 1 -RoamMon1MapNumber:: ; dfd2 - ds 1 -RoamMon1HP:: ; dfd3 - ds 1 -RoamMon1DVs:: ; dfd4 - ds 2 - -RoamMon2Species:: ; dfd6 - ds 1 -RoamMon2Level:: ; dfd7 - ds 1 -RoamMon2MapGroup:: ; dfd8 - ds 1 -RoamMon2MapNumber:: ; dfd9 - ds 1 -RoamMon2HP:: ; dfda - ds 1 -RoamMon2DVs:: ; dfdb - ds 2 +roam_struct: MACRO +\1Species:: db +\1Level:: db +\1MapGroup:: db +\1MapNumber:: db +\1HP:: ds 1 +\1DVs:: ds 2 +ENDM -RoamMon3Species:: ; dfdd - ds 1 -RoamMon3Level:: ; dfde - ds 1 -RoamMon3MapGroup:: ; dfdf - ds 1 -RoamMon3MapNumber:: ; dfe0 - ds 1 -RoamMon3HP:: ; dfe1 - ds 1 -RoamMon3DVs:: ; dfe2 - ds 2 +wRoamMon1:: roam_struct wRoamMon1 ; dfcf +wRoamMon2:: roam_struct wRoamMon2 ; dfd6 +wRoamMon3:: roam_struct wRoamMon3 ; dfdd SECTION "WRAMBank5",WRAMX[$d000],BANK[5] ; 8 4-color palettes -Unkn1Pals:: ; d000 - ds $40 -Unkn2Pals:: ; d040 - ds $40 -BGPals:: ; d080 - ds $40 -OBPals:: ; d0c0 - ds $40 +Unkn1Pals:: ds 8 * 8 ; d000 +Unkn2Pals:: ds 8 * 8 ; d040 +BGPals:: ds 8 * 8 ; d080 +OBPals:: ds 8 * 8 ; d0c0 LYOverrides:: ; d100 - ds 144 + ds SCREEN_HEIGHT_PX LYOverridesEnd:: ds 112 LYOverridesBackup:: ; d200 - ds 144 + ds SCREEN_HEIGHT_PX LYOverridesBackupEnd:: @@ -2194,175 +1738,24 @@ BattleAnimTemps:: ; d419 ds 8 -SECTION "SRAMBank1",SRAM,BANK[1] +SECTION "Scratch", SRAM, BANK[0] -SECTION "BoxMons",SRAM[$ad10],BANK[1] -BoxCount:: ; ad10 - ds 1 -BoxSpecies:: ; ad11 - ds 20 - ds 1 -BoxMons:: -BoxMon1:: -BoxMon1Species:: ; ad26 - ds 1 -BoxMon1Item:: ; ad27 - ds 1 -BoxMon1Moves:: ; ad28 - ds 4 -BoxMon1ID:: ; ad2c - ds 2 -BoxMon1Exp:: ; ad2e - ds 3 -BoxMon1HPExp:: ; ad31 - ds 2 -BoxMon1AtkExp:: ; ad33 - ds 2 -BoxMon1DefExp:: ; ad35 - ds 2 -BoxMon1SpdExp:: ; ad37 - ds 2 -BoxMon1SpcExp:: ; ad39 - ds 2 -BoxMon1DVs:: ; ad3b - ds 2 -BoxMon1PP:: ; ad3d - ds 4 -BoxMon1Happiness:: ; ad41 - ds 1 -BoxMon1PokerusStatus:: ; ad42 - ds 1 -BoxMon1CaughtData:: -BoxMon1CaughtTime:: -BoxMon1CaughtLevel:: ; ad43 - ds 1 -BoxMon1CaughtGender:: -BoxMon1CaughtLocation:: ; ad44 - ds 1 -BoxMon1Level:: ; ad45 + +SECTION "SRAM Bank 1", SRAM, BANK[1] + +SECTION "BoxMons", SRAM[$ad10], BANK[1] + +sBoxCount:: ds 1 ; ad10 +sBoxSpecies:: ds MONS_PER_BOX ; ad11 ds 1 -BoxMon2:: ; ad46 - ds 32 -BoxMon3:: ; ad66 - ds 32 -BoxMon4:: ; ad86 - ds 32 -BoxMon5:: ; ada6 - ds 32 -BoxMon6:: ; adc6 - ds 32 -BoxMon7:: ; ade6 - ds 32 -BoxMon8:: ; ae06 - ds 32 -BoxMon9:: ; ae26 - ds 32 -BoxMon10:: ; ae46 - ds 32 -BoxMon11:: ; ae66 - ds 32 -BoxMon12:: ; ae86 - ds 32 -BoxMon13:: ; aea6 - ds 32 -BoxMon14:: ; aec6 - ds 32 -BoxMon15:: ; aee6 - ds 32 -BoxMon16:: ; af06 - ds 32 -BoxMon17:: ; af26 - ds 32 -BoxMon18:: ; af46 - ds 32 -BoxMon19:: ; af66 - ds 32 -BoxMon20:: ; af86 - ds 32 +sBoxMons:: ; ad26 +sBoxMon1:: box_struct sBoxMon1 +sBoxMon2:: + ds box_struct_length * (MONS_PER_BOX +- 1) -BoxMonOT:: -BoxMon1OT:: ; afa6 - ds 11 -BoxMon2OT:: ; afb1 - ds 11 -BoxMon3OT:: ; afbc - ds 11 -BoxMon4OT:: ; afc7 - ds 11 -BoxMon5OT:: ; afd2 - ds 11 -BoxMon6OT:: ; afdd - ds 11 -BoxMon7OT:: ; afe8 - ds 11 -BoxMon8OT:: ; aff3 - ds 11 -BoxMon9OT:: ; affe - ds 11 -BoxMon10OT:: ; b009 - ds 11 -BoxMon11OT:: ; b014 - ds 11 -BoxMon12OT:: ; b01f - ds 11 -BoxMon13OT:: ; b02a - ds 11 -BoxMon14OT:: ; b035 - ds 11 -BoxMon15OT:: ; b040 - ds 11 -BoxMon16OT:: ; b04b - ds 11 -BoxMon17OT:: ; b056 - ds 11 -BoxMon18OT:: ; b061 - ds 11 -BoxMon19OT:: ; b06c - ds 11 -BoxMon20OT:: ; b077 - ds 11 - -BoxMonNicknames:: -BoxMon1Nickname:: ; b082 - ds 11 -BoxMon2Nickname:: ; b08d - ds 11 -BoxMon3Nickname:: ; b098 - ds 11 -BoxMon4Nickname:: ; b0a3 - ds 11 -BoxMon5Nickname:: ; b0ae - ds 11 -BoxMon6Nickname:: ; b0b9 - ds 11 -BoxMon7Nickname:: ; b0c4 - ds 11 -BoxMon8Nickname:: ; b0cf - ds 11 -BoxMon9Nickname:: ; b0da - ds 11 -BoxMon10Nickname:: ; b0e5 - ds 11 -BoxMon11Nickname:: ; b0f0 - ds 11 -BoxMon12Nickname:: ; b0fb - ds 11 -BoxMon13Nickname:: ; b106 - ds 11 -BoxMon14Nickname:: ; b111 - ds 11 -BoxMon15Nickname:: ; b11c - ds 11 -BoxMon16Nickname:: ; b127 - ds 11 -BoxMon17Nickname:: ; b132 - ds 11 -BoxMon18Nickname:: ; b13d - ds 11 -BoxMon19Nickname:: ; b148 - ds 11 -BoxMon20Nickname:: ; b153 - ds 11 -BoxMonNicknamesEnd:: +sBoxMonOT:: ds NAME_LENGTH * MONS_PER_BOX ; afa6 +sBoxMonNicknames:: ds PKMN_NAME_LENGTH * MONS_PER_BOX ; b082 +sBoxMonNicknamesEnd:: +; b15e |