summaryrefslogtreecommitdiff
path: root/main.asm
diff options
context:
space:
mode:
authoryenatch <yenatch@gmail.com>2016-01-04 07:41:19 -0500
committeryenatch <yenatch@gmail.com>2016-01-04 07:41:19 -0500
commit0add51451cda9d4221af137f83e2429d3577310c (patch)
treefd05f8f0ad49d88b032dc9e10af85a42dfa0e402 /main.asm
parentda87d2a929b1d58175efe063833c124d8ba702c9 (diff)
parent2a263629a40e201b1702e2f4e65f1c61360cc2b2 (diff)
Merge pull request #330 from PikalaxALT/scriptmacrorenaming
Scriptmacrorenaming
Diffstat (limited to 'main.asm')
-rw-r--r--main.asm14214
1 files changed, 956 insertions, 13258 deletions
diff --git a/main.asm b/main.asm
index d499745ca..131bdce1d 100644
--- a/main.asm
+++ b/main.asm
@@ -1,9 +1,7 @@
INCLUDE "includes.asm"
-
SECTION "bank1", ROMX, BANK[$1]
-
PlaceWaitingText:: ; 4000
hlcoord 3, 10
ld b, 1
@@ -45,9 +43,9 @@ LoadPushOAM:: ; 4031
; 403f
PushOAM: ; 403f
- ld a, Sprites >> 8
+ ld a, Sprites / $100
ld [rDMA], a
- ld a, $28
+ ld a, 40
.loop
dec a
jr nz, .loop
@@ -55,7 +53,6 @@ PushOAM: ; 403f
PushOAMEnd
; 4049
-
INCLUDE "engine/map_objects.asm"
INCLUDE "engine/intro_menu.asm"
@@ -71,7 +68,7 @@ Function6454:: ; 6454
push af
xor a
ld [hBGMapMode], a
- call Function6473
+ call .Function6473
pop af
ld [hBGMapMode], a
@@ -82,18 +79,18 @@ Function6454:: ; 6454
ret
; 6473
-Function6473: ; 6473
+.Function6473
xor a
- ld [hLCDStatCustom], a
+ ld [hFFC6], a
ld [hBGMapMode], a
ld a, $90
ld [hWY], a
call OverworldTextModeSwitch
ld a, VBGMap1 / $100
- call Function64b9
+ call .Function64b9
call Function2e20
- callba Function49409
- callba Function96a4
+ callba LoadOW_BGPal7
+ callba ApplyPals
ld a, $1
ld [hCGBPalUpdate], a
xor a
@@ -101,7 +98,7 @@ Function6473: ; 6473
ld [hWY], a
callba Function64db ; no need to farcall
ld a, VBGMap0 / $100
- call Function64b9
+ call .Function64b9
xor a
ld [wBGMapAnchor], a
ld a, VBGMap0 / $100
@@ -113,7 +110,7 @@ Function6473: ; 6473
ret
; 64b9
-Function64b9: ; 64b9
+.Function64b9: ; 64b9
ld [hBGMapAddress + 1], a
xor a
ld [hBGMapAddress], a
@@ -126,14 +123,13 @@ Function64bf:: ; 64bf
ld a, $1
ld [hOAMUpdate], a
- call Function64cd
+ call .Function64cd
pop af
ld [hOAMUpdate], a
ret
-; 64cd
-Function64cd: ; 64cd
+.Function64cd
call LoadFontsExtra
ld a, $90
ld [hWY], a
@@ -149,12 +145,12 @@ Function64db: ; 64db
ld [rSVBK], a
ld a, $60
- ld hl, w6_d000
- lb bc, 4, 0
+ ld hl, wDecompressScratch
+ ld bc, wBackupAttrMap - wDecompressScratch
call ByteFill
- ld a, w6_d000 / $100
+ ld a, wDecompressScratch / $100
ld [rHDMA1], a
- ld a, w6_d000 % $100
+ ld a, wDecompressScratch % $100
ld [rHDMA2], a
ld a, (VBGMap0 % $8000) / $100
ld [rHDMA3], a
@@ -169,264 +165,7 @@ Function64db: ; 64db
ret
; 6508
-LearnMove: ; 6508
- call LoadTileMapToTempTileMap
- ld a, [CurPartyMon]
- ld hl, PartyMonNicknames
- call GetNick
- ld hl, StringBuffer1
- ld de, wd050_MonNick
- ld bc, PKMN_NAME_LENGTH
- call CopyBytes
-
-.loop
- ld hl, PartyMon1Moves
- ld bc, PARTYMON_STRUCT_LENGTH
- ld a, [CurPartyMon]
- call AddNTimes
- ld d, h
- ld e, l
- ld b, NUM_MOVES
-; Get the first empty move slot. This routine also serves to
-; determine whether the Pokemon learning the moves already has
-; all four slots occupied, in which case one would need to be
-; deleted.
-.next
- ld a, [hl]
- and a
- jr z, .learn
- inc hl
- dec b
- jr nz, .next
-; If we're here, we enter the routine for forgetting a move
-; to make room for the new move we're trying to learn.
- push de
- call ForgetMove
- pop de
- jp c, .cancel
-
- push hl
- push de
- ld [wd265], a
-
- ld b, a
- ld a, [wBattleMode]
- and a
- jr z, .not_disabled
- ld a, [DisabledMove]
- cp b
- jr nz, .not_disabled
- xor a
- ld [DisabledMove], a
- ld [PlayerDisableCount], a
-.not_disabled
-
- call GetMoveName
- ld hl, UnknownText_0x6684 ; 1, 2 and…
- call PrintText
- pop de
- pop hl
-
-.learn
- ld a, [wd262]
- ld [hl], a
- ld bc, MON_PP - MON_MOVES
- add hl, bc
-
- push hl
- push de
- dec a
- ld hl, Moves + MOVE_PP
- ld bc, MOVE_LENGTH
- call AddNTimes
- ld a, BANK(Moves)
- call GetFarByte
- pop de
- pop hl
-
- ld [hl], a
-
- ld a, [wBattleMode]
- and a
- jp z, .learned
-
- ld a, [CurPartyMon]
- ld b, a
- ld a, [CurBattleMon]
- cp b
- jp nz, .learned
-
- ld a, [PlayerSubStatus5]
- bit SUBSTATUS_TRANSFORMED, a
- jp nz, .learned
-
- ld h, d
- ld l, e
- ld de, BattleMonMoves
- ld bc, NUM_MOVES
- call CopyBytes
- ld bc, PartyMon1PP - (PartyMon1Moves + NUM_MOVES)
- add hl, bc
- ld de, BattleMonPP
- ld bc, NUM_MOVES
- call CopyBytes
- jp .learned
-
-.cancel
- ld hl, UnknownText_0x6675 ; Stop learning <MOVE>?
- call PrintText
- call YesNoBox
- jp c, .loop
-
- ld hl, UnknownText_0x667a ; <MON> did not learn <MOVE>.
- call PrintText
- ld b, 0
- ret
-
-.learned
- ld hl, UnknownText_0x666b ; <MON> learned <MOVE>!
- call PrintText
- ld b, 1
- ret
-; 65d3
-
-ForgetMove: ; 65d3
- push hl
- ld hl, UnknownText_0x667f
- call PrintText
- call YesNoBox
- pop hl
- ret c
- ld bc, -NUM_MOVES
- add hl, bc
- push hl
- ld de, wListMoves_MoveIndicesBuffer
- ld bc, NUM_MOVES
- call CopyBytes
- pop hl
-.loop
- push hl
- ld hl, UnknownText_0x6670
- call PrintText
- hlcoord 5, 2
- ld b, NUM_MOVES * 2
- ld c, MOVE_NAME_LENGTH
- call TextBox
- hlcoord 5 + 2, 2 + 2
- ld a, SCREEN_WIDTH * 2
- ld [Buffer1], a
- predef ListMoves
- ; wMenuData3
- ld a, $4
- ld [wcfa1], a
- ld a, $6
- ld [wcfa2], a
- ld a, [wd0eb]
- inc a
- ld [wcfa3], a
- ld a, $1
- ld [wcfa4], a
- ld [MenuSelection2], a
- ld [wcfaa], a
- ld a, $3
- ld [wcfa8], a
- ld a, $20
- ld [wcfa5], a
- xor a
- ld [wcfa6], a
- ld a, $20
- ld [wcfa7], a
- call Function1bc9
- push af
- call Call_LoadTempTileMapToTileMap
- pop af
- pop hl
- bit 1, a
- jr nz, .cancel
- push hl
- ld a, [MenuSelection2]
- dec a
- ld c, a
- ld b, 0
- add hl, bc
- ld a, [hl]
- push af
- push bc
- call IsHMMove
- pop bc
- pop de
- ld a, d
- jr c, .hmmove
- pop hl
- add hl, bc
- and a
- ret
-
-.hmmove
- ld hl, UnknownText_0x669a
- call PrintText
- pop hl
- jr .loop
-
-.cancel
- scf
- ret
-; 666b
-
-UnknownText_0x666b: ; 666b
-; <MON> learned <MOVE>!
- text_jump UnknownText_0x1c5660
- db "@"
-; 6670
-
-UnknownText_0x6670: ; 6670
-; Which move should be forgotten?
- text_jump UnknownText_0x1c5678
- db "@"
-; 6675
-
-UnknownText_0x6675: ; 6675
-; Stop learning <MOVE>?
- text_jump UnknownText_0x1c5699
- db "@"
-; 667a
-
-UnknownText_0x667a: ; 667a
-; <MON> did not learn <MOVE>.
- text_jump UnknownText_0x1c56af
- db "@"
-; 667f
-
-UnknownText_0x667f: ; 667f
-; <MON> is trying to learn <MOVE>. But <MON> can't learn more than
-; four moves. Delete an older move to make room for <MOVE>?
- text_jump UnknownText_0x1c56c9
- db "@"
-; 6684
-
-UnknownText_0x6684: ; 6684
- text_jump UnknownText_0x1c5740 ; 1, 2 and…
- start_asm
- push de
- ld de, SFX_SWITCH_POKEMON
- call PlaySFX
- pop de
- ld hl, UnknownText_0x6695
- ret
-; 6695
-
-UnknownText_0x6695: ; 6695
-; Poof! <MON> forgot <MOVE>. And…
- text_jump UnknownText_0x1c574e
- db "@"
-; 669a
-
-UnknownText_0x669a: ; 669a
-; HM moves can't be forgotten now.
- text_jump UnknownText_0x1c5772
- db "@"
-; 669f
-
+INCLUDE "engine/learn.asm"
CheckNickErrors:: ; 669f
; error-check monster nick before use
@@ -494,793 +233,23 @@ CheckNickErrors:: ; 669f
.textcommands ; 66cf
; table defining which characters are actually text commands
; format:
- ; ≥ <
- db $00, $05
- db $14, $19
- db $1d, $26
- db $35, $3a
- db $3f, $40
- db $49, $5d
- db $5e, $7f
- db $ff ; end
+ ; ≥ <
+ db "<START>", $04 + 1
+ db "<PLAY_G>", $18 + 1
+ db $1d, "%" + 1
+ db $35, "<GREEN>" + 1
+ db "<ENEMY>", "<ENEMY>" + 1
+ db $49, "<TM>" + 1
+ db "<ROCKET>", "┘" + 1
+ db -1 ; end
; 66de
-
-_Multiply:: ; 66de
-
-; hMultiplier is one byte.
- ld a, 8
- ld b, a
-
- xor a
- ld [hMultiplicand - 1], a
- ld [hMathBuffer + 1], a
- ld [hMathBuffer + 2], a
- ld [hMathBuffer + 3], a
- ld [hMathBuffer + 4], a
-
-
-.loop
- ld a, [hMultiplier]
- srl a
- ld [hMultiplier], a
- jr nc, .next
-
- ld a, [hMathBuffer + 4]
- ld c, a
- ld a, [hMultiplicand + 2]
- add c
- ld [hMathBuffer + 4], a
-
- ld a, [hMathBuffer + 3]
- ld c, a
- ld a, [hMultiplicand + 1]
- adc c
- ld [hMathBuffer + 3], a
-
- ld a, [hMathBuffer + 2]
- ld c, a
- ld a, [hMultiplicand + 0]
- adc c
- ld [hMathBuffer + 2], a
-
- ld a, [hMathBuffer + 1]
- ld c, a
- ld a, [hMultiplicand - 1]
- adc c
- ld [hMathBuffer + 1], a
-
-.next
- dec b
- jr z, .done
-
-
-; hMultiplicand <<= 1
-
- ld a, [hMultiplicand + 2]
- add a
- ld [hMultiplicand + 2], a
-
- ld a, [hMultiplicand + 1]
- rla
- ld [hMultiplicand + 1], a
-
- ld a, [hMultiplicand + 0]
- rla
- ld [hMultiplicand + 0], a
-
- ld a, [hMultiplicand - 1]
- rla
- ld [hMultiplicand - 1], a
-
- jr .loop
-
-
-.done
- ld a, [hMathBuffer + 4]
- ld [hProduct + 3], a
-
- ld a, [hMathBuffer + 3]
- ld [hProduct + 2], a
-
- ld a, [hMathBuffer + 2]
- ld [hProduct + 1], a
-
- ld a, [hMathBuffer + 1]
- ld [hProduct + 0], a
-
- ret
-; 673e
-
-
-_Divide:: ; 673e
- xor a
- ld [hMathBuffer + 0], a
- ld [hMathBuffer + 1], a
- ld [hMathBuffer + 2], a
- ld [hMathBuffer + 3], a
- ld [hMathBuffer + 4], a
-
- ld a, 9
- ld e, a
-
-.loop
- ld a, [hMathBuffer + 0]
- ld c, a
- ld a, [hDividend + 1]
- sub c
- ld d, a
-
- ld a, [hDivisor]
- ld c, a
- ld a, [hDividend + 0]
- sbc c
- jr c, .asm_6767
-
- ld [hDividend + 0], a
-
- ld a, d
- ld [hDividend + 1], a
-
- ld a, [hMathBuffer + 4]
- inc a
- ld [hMathBuffer + 4], a
-
- jr .loop
-
-.asm_6767
- ld a, b
- cp 1
- jr z, .done
-
- ld a, [hMathBuffer + 4]
- add a
- ld [hMathBuffer + 4], a
-
- ld a, [hMathBuffer + 3]
- rla
- ld [hMathBuffer + 3], a
-
- ld a, [hMathBuffer + 2]
- rla
- ld [hMathBuffer + 2], a
-
- ld a, [hMathBuffer + 1]
- rla
- ld [hMathBuffer + 1], a
-
- dec e
- jr nz, .asm_6798
-
- ld e, 8
- ld a, [hMathBuffer + 0]
- ld [hDivisor], a
- xor a
- ld [hMathBuffer + 0], a
-
- ld a, [hDividend + 1]
- ld [hDividend + 0], a
-
- ld a, [hDividend + 2]
- ld [hDividend + 1], a
-
- ld a, [hDividend + 3]
- ld [hDividend + 2], a
-
-.asm_6798
- ld a, e
- cp 1
- jr nz, .asm_679e
- dec b
-
-.asm_679e
- ld a, [hDivisor]
- srl a
- ld [hDivisor], a
-
- ld a, [hMathBuffer + 0]
- rr a
- ld [hMathBuffer + 0], a
-
- jr .loop
-
-.done
- ld a, [hDividend + 1]
- ld [hDivisor], a
-
- ld a, [hMathBuffer + 4]
- ld [hDividend + 3], a
-
- ld a, [hMathBuffer + 3]
- ld [hDividend + 2], a
-
- ld a, [hMathBuffer + 2]
- ld [hDividend + 1], a
-
- ld a, [hMathBuffer + 1]
- ld [hDividend + 0], a
-
- ret
-; 67c1
-
+INCLUDE "engine/math.asm"
ItemAttributes: ; 67c1
INCLUDE "items/item_attributes.asm"
; 6ec1
-
-
-Function6ec1: ; 6ec1
-
- ld hl, OBJECT_PALETTE
- add hl, bc
- bit 5, [hl]
- jr z, .not_bit_5
-
- ld hl, OBJECT_FLAGS1
- add hl, bc
- bit 4, [hl] ; lost
- push hl
- push bc
- call Function6f2c
- pop bc
- pop hl
- ret c
- jr .resume
-
-.not_bit_5
- ld hl, OBJECT_FLAGS1
- add hl, bc
- bit 4, [hl]
- jr nz, .resume
- push hl
- push bc
- call Function6f07
- pop bc
- pop hl
- ret c
-
-.resume
- bit 6, [hl]
- jr nz, .bit_6
-
- push hl
- push bc
- call WillPersonBumpIntoSomeoneElse
- pop bc
- pop hl
- ret c
-
-.bit_6
- bit 5, [hl]
- jr nz, .bit_5
- push hl
- call HasPersonReachedMovementLimit
- pop hl
- ret c
-
- push hl
- call IsPersonMovingOffEdgeOfScreen
- pop hl
- ret c
-
-.bit_5
- and a
- ret
-; 6f07
-
-
-Function6f07: ; 6f07
- call Function6f5f
- ret c
- ld hl, OBJECT_NEXT_MAP_X
- add hl, bc
- ld d, [hl]
- ld hl, OBJECT_NEXT_MAP_Y
- add hl, bc
- ld e, [hl]
- ld hl, OBJECT_PALETTE
- add hl, bc
- bit 7, [hl]
- jp nz, Function6fa1
- ld hl, OBJECT_NEXT_TILE
- add hl, bc
- ld a, [hl]
- ld d, a
- call GetTileCollision
- and a
- jr z, Function6f3e
- scf
- ret
-; 6f2c
-
-Function6f2c: ; 6f2c
- call Function6f5f
- ret c
- ld hl, OBJECT_NEXT_TILE
- add hl, bc
- ld a, [hl]
- call GetTileCollision
- cp $1
- jr z, Function6f3e
- scf
- ret
-; 6f3e
-
-Function6f3e: ; 6f3e
- ld hl, OBJECT_NEXT_TILE
- add hl, bc
- ld a, [hl]
- call Function6f7f
- ret nc
- push af
- ld hl, OBJECT_DIRECTION_WALKING
- add hl, bc
- ld a, [hl]
- and 3
- ld e, a
- ld d, 0
- ld hl, .data_6f5b
- add hl, de
- pop af
- and [hl]
- ret z
- scf
- ret
-; 6f5b
-
-.data_6f5b
- db 1 << DOWN, 1 << UP, 1 << RIGHT, 1 << LEFT
-; 6f5f
-
-Function6f5f: ; 6f5f
- ld hl, OBJECT_STANDING_TILE
- add hl, bc
- ld a, [hl]
- call Function6f7f
- ret nc
- push af
- ld hl, OBJECT_DIRECTION_WALKING
- add hl, bc
- and 3
- ld e, a
- ld d, 0
- ld hl, .data_6f7b
- add hl, de
- pop af
- and [hl]
- ret z
- scf
- ret
-; 6f7b
-
-.data_6f7b
- db 1 << UP, 1 << DOWN, 1 << LEFT, 1 << RIGHT
-; 6f7f
-
-Function6f7f: ; 6f7f
- ld d, a
- and $f0
- cp $b0
- jr z, .done
- cp $c0
- jr z, .done
- xor a
- ret
-
-.done
- ld a, d
- and 7
- ld e, a
- ld d, 0
- ld hl, .data_6f99
- add hl, de
- ld a, [hl]
- scf
- ret
-; 6f99
-
-.data_6f99
- db 8, 4, 1, 2
- db 10, 6, 9, 5
-; 6fa1
-
-Function6fa1: ; 6fa1
- ld hl, OBJECT_DIRECTION_WALKING
- add hl, bc
- ld a, [hl]
- and 3
- jr z, .asm_6fb2
- dec a
- jr z, .asm_6fb7
- dec a
- jr z, .asm_6fbb
- jr .asm_6fbf
-
-.asm_6fb2
- inc e
- push de
- inc d
- jr .asm_6fc2
-
-.asm_6fb7
- push de
- inc d
- jr .asm_6fc2
-
-.asm_6fbb
- push de
- inc e
- jr .asm_6fc2
-
-.asm_6fbf
- inc d
- push de
- inc e
-
-.asm_6fc2
- call GetCoordTile
- call GetTileCollision
- pop de
- and a
- jr nz, .asm_6fd7
- call GetCoordTile
- call GetTileCollision
- and a
- jr nz, .asm_6fd7
- xor a
- ret
-
-.asm_6fd7
- scf
- ret
-; 6fd9
-
-
-
-CheckFacingObject:: ; 6fd9
-
- call GetFacingTileCoord
-
-; Double the distance for counter tiles.
- call CheckCounterTile
- jr nz, .asm_6ff1
-
- ld a, [PlayerNextMapX]
- sub d
- cpl
- inc a
- add d
- ld d, a
-
- ld a, [PlayerNextMapY]
- sub e
- cpl
- inc a
- add e
- ld e, a
-
-.asm_6ff1
- ld bc, ObjectStructs ; redundant
- ld a, 0
- ld [hMapObjectIndexBuffer], a
- call IsNPCAtCoord
- ret nc
- ld hl, OBJECT_DIRECTION_WALKING
- add hl, bc
- ld a, [hl]
- cp STANDING
- jr z, .standing
- xor a
- ret
-
-.standing
- scf
- ret
-; 7009
-
-
-WillPersonBumpIntoSomeoneElse: ; 7009
- ld hl, OBJECT_NEXT_MAP_X
- add hl, bc
- ld d, [hl]
- ld hl, OBJECT_NEXT_MAP_Y
- add hl, bc
- ld e, [hl]
- jr IsNPCAtCoord
-; 7015
-
-Function7015: ; unreferenced
- ld a, [hMapObjectIndexBuffer]
- call GetObjectStruct
- call .CheckWillBeFacingNPC
- call IsNPCAtCoord
- ret
-
-.CheckWillBeFacingNPC: ; 7021
- ld hl, OBJECT_NEXT_MAP_X
- add hl, bc
- ld d, [hl]
- ld hl, OBJECT_NEXT_MAP_Y
- add hl, bc
- ld e, [hl]
- call GetSpriteDirection
- and a
- jr z, .down
- cp OW_UP
- jr z, .up
- cp OW_LEFT
- jr z, .left
- inc d
- ret
-
-.down
- inc e
- ret
-
-.up
- dec e
- ret
-
-.left
- dec d
- ret
-; 7041
-
-IsNPCAtCoord: ; 7041
- ld bc, ObjectStructs
- xor a
-.loop
- ld [hObjectStructIndexBuffer], a
- call GetObjectSprite
- jr z, .next
-
- ld hl, OBJECT_FLAGS1
- add hl, bc
- bit 7, [hl]
- jr nz, .next
-
- ld hl, OBJECT_PALETTE
- add hl, bc
- bit 7, [hl]
- jr z, .got
-
- call Function7171
- jr nc, .ok
- jr .ok2
-
-.got
- ld hl, OBJECT_NEXT_MAP_X
- add hl, bc
- ld a, [hl]
- cp d
- jr nz, .ok
- ld hl, OBJECT_NEXT_MAP_Y
- add hl, bc
- ld a, [hl]
- cp e
- jr nz, .ok
-
-.ok2
- ld a, [hMapObjectIndexBuffer]
- ld l, a
- ld a, [hObjectStructIndexBuffer]
- cp l
- jr nz, .setcarry
-
-.ok
- ld hl, OBJECT_MAP_X
- add hl, bc
- ld a, [hl]
- cp d
- jr nz, .next
- ld hl, OBJECT_MAP_Y
- add hl, bc
- ld a, [hl]
- cp e
- jr nz, .next
- ld a, [hMapObjectIndexBuffer]
- ld l, a
- ld a, [hObjectStructIndexBuffer]
- cp l
- jr nz, .setcarry
-
-.next
- ld hl, OBJECT_STRUCT_LENGTH
- add hl, bc
- ld b, h
- ld c, l
- ld a, [hObjectStructIndexBuffer]
- inc a
- cp NUM_OBJECT_STRUCTS
- jr nz, .loop
- and a
- ret
-
-.setcarry
- scf
- ret
-; 70a4
-
-HasPersonReachedMovementLimit: ; 70a4
- ld hl, OBJECT_RADIUS
- add hl, bc
- ld a, [hl]
- and a
- jr z, .nope
- and $f
- jr z, .check_y
- ld e, a
- ld d, a
- ld hl, OBJECT_INIT_X
- add hl, bc
- ld a, [hl]
- sub d
- ld d, a
- ld a, [hl]
- add e
- ld e, a
- ld hl, OBJECT_NEXT_MAP_X
- add hl, bc
- ld a, [hl]
- cp d
- jr z, .yes
- cp e
- jr z, .yes
-
-.check_y
- ld hl, OBJECT_RADIUS
- add hl, bc
- ld a, [hl]
- swap a
- and $f
- jr z, .nope
- ld e, a
- ld d, a
- ld hl, OBJECT_INIT_Y
- add hl, bc
- ld a, [hl]
- sub d
- ld d, a
- ld a, [hl]
- add e
- ld e, a
- ld hl, OBJECT_NEXT_MAP_Y
- add hl, bc
- ld a, [hl]
- cp d
- jr z, .yes
- cp e
- jr z, .yes
-
-.nope
- xor a
- ret
-
-.yes
- scf
- ret
-; 70ed
-
-IsPersonMovingOffEdgeOfScreen: ; 70ed
- ld hl, OBJECT_NEXT_MAP_X
- add hl, bc
- ld a, [XCoord]
- cp [hl]
- jr z, .check_y
- jr nc, .yes
- add $9
- cp [hl]
- jr c, .yes
-
-.check_y
- ld hl, OBJECT_NEXT_MAP_Y
- add hl, bc
- ld a, [YCoord]
- cp [hl]
- jr z, .nope
- jr nc, .yes
- add $8
- cp [hl]
- jr c, .yes
-
-.nope
- and a
- ret
-
-.yes
- scf
- ret
-; 7113
-
-Function7113: ; unreferenced
- ld a, [PlayerNextMapX]
- ld d, a
- ld a, [PlayerNextMapY]
- ld e, a
- ld bc, ObjectStructs
- xor a
-.loop
- ld [hObjectStructIndexBuffer], a
- call GetObjectSprite
- jr z, .next
- ld hl, OBJECT_MOVEMENTTYPE
- add hl, bc
- ld a, [hl]
- cp SPRITEMOVEDATA_SNORLAX
- jr nz, .not_snorlax
- call Function7171
- jr c, .yes
- jr .next
-
-.not_snorlax
- ld hl, OBJECT_NEXT_MAP_Y
- add hl, bc
- ld a, [hl]
- cp e
- jr nz, .check_current_coords
- ld hl, OBJECT_NEXT_MAP_X
- add hl, bc
- ld a, [hl]
- cp d
- jr nz, .check_current_coords
- ld a, [hObjectStructIndexBuffer]
- cp $0
- jr z, .next
- jr .yes
-
-.check_current_coords
- ld hl, OBJECT_MAP_Y
- add hl, bc
- ld a, [hl]
- cp e
- jr nz, .next
- ld hl, OBJECT_MAP_X
- add hl, bc
- ld a, [hl]
- cp d
- jr nz, .next
- jr .yes
-
-.next
- ld hl, OBJECT_STRUCT_LENGTH
- add hl, bc
- ld b, h
- ld c, l
- ld a, [hObjectStructIndexBuffer]
- inc a
- cp NUM_OBJECT_STRUCTS
- jr nz, .loop
- xor a
- ret
-
-.yes
- scf
- ret
-; 7171
-
-
-Function7171: ; 7171
- ld hl, OBJECT_NEXT_MAP_X
- add hl, bc
- ld a, d
- sub [hl]
- jr c, .nope
- cp $2
- jr nc, .nope
- ld hl, OBJECT_NEXT_MAP_Y
- add hl, bc
- ld a, e
- sub [hl]
- jr c, .nope
- cp $2
- jr nc, .nope
- scf
- ret
-
-.nope
- and a
- ret
-; 718d
+INCLUDE "engine/npc_movement.asm"
GetFirstPokemonHappiness: ; 718d
ld hl, PartyMon1Happiness
@@ -1316,7 +285,6 @@ CheckFirstMonIsEgg: ; 71ac
jp CopyPokemonName_Buffer1_Buffer3
; 71c2
-
ChangeHappiness: ; 71c2
; Perform happiness action c on CurPartyMon
@@ -1382,7 +350,7 @@ endr
ret z
ld a, [CurPartyMon]
ld b, a
- ld a, [wd0d8]
+ ld a, [wPartyMenuCursor]
cp b
ret nz
ld a, [de]
@@ -1412,7 +380,6 @@ endr
db +10, +6, +4 ; Gained a level in the place where it was caught
; 725a
-
StepHappiness:: ; 725a
; Raise the party's happiness by 1 point every other step cycle.
@@ -1449,53 +416,52 @@ StepHappiness:: ; 725a
ret
; 7282
-
DaycareStep:: ; 7282
ld a, [wDaycareMan]
bit 0, a
- jr z, .asm_72a4
+ jr z, .daycare_lady
ld a, [wBreedMon1Level] ; level
cp 100
- jr nc, .asm_72a4
+ jr nc, .daycare_lady
ld hl, wBreedMon1Exp + 2 ; exp
inc [hl]
- jr nz, .asm_72a4
+ jr nz, .daycare_lady
dec hl
inc [hl]
- jr nz, .asm_72a4
+ jr nz, .daycare_lady
dec hl
inc [hl]
ld a, [hl]
- cp $50
- jr c, .asm_72a4
- ld a, $50
+ cp 5242880 / $10000
+ jr c, .daycare_lady
+ ld a, 5242880 / $10000
ld [hl], a
-.asm_72a4
+.daycare_lady
ld a, [wDaycareLady]
bit 0, a
- jr z, .asm_72c6
+ jr z, .check_egg
ld a, [wBreedMon2Level] ; level
cp 100
- jr nc, .asm_72c6
+ jr nc, .check_egg
ld hl, wBreedMon2Exp + 2 ; exp
inc [hl]
- jr nz, .asm_72c6
+ jr nz, .check_egg
dec hl
inc [hl]
- jr nz, .asm_72c6
+ jr nz, .check_egg
dec hl
inc [hl]
ld a, [hl]
- cp $50
- jr c, .asm_72c6
- ld a, $50
+ cp 5242880 / $10000
+ jr c, .check_egg
+ ld a, 5242880 / $10000
ld [hl], a
-.asm_72c6
+.check_egg
ld hl, wDaycareMan
bit 5, [hl] ; egg
ret z
@@ -1505,22 +471,22 @@ DaycareStep:: ; 7282
call Random
ld [hl], a
- callab Function16e1d
+ callab CheckBreedmonCompatibility
ld a, [wd265]
- cp $e6
- ld b, $50
- jr nc, .asm_72f8
+ cp 230
+ ld b, -1 + 32 percent
+ jr nc, .okay
ld a, [wd265]
- cp $aa
- ld b, $28
- jr nc, .asm_72f8
+ cp 170
+ ld b, 16 percent
+ jr nc, .okay
ld a, [wd265]
- cp $6e
- ld b, $1e
- jr nc, .asm_72f8
- ld b, $a
+ cp 110
+ ld b, 12 percent
+ jr nc, .okay
+ ld b, 4 percent
-.asm_72f8
+.okay
call Random
cp b
ret nc
@@ -1530,7 +496,6 @@ DaycareStep:: ; 7282
ret
; 7305
-
SpecialGiveShuckle: ; 7305
; Adding to the party.
@@ -1604,7 +569,6 @@ SpecialShuckleNick:
db "SHUCKIE@"
; 737e
-
SpecialReturnShuckle: ; 737e
callba SelectMonFromParty
jr c, .refused
@@ -1655,9 +619,8 @@ SpecialReturnShuckle: ; 737e
jr nc, .HappyToStayWithYou
xor a ; take from pc
ld [wPokemonWithdrawDepositParameter], a
- callab Functione039
+ callab RemoveMonFromPartyOrBox
ld a, $2
-
.HappyToStayWithYou
ld [ScriptVar], a
ret
@@ -1777,10 +740,9 @@ Predef1: ; 747a
ret
; 747b
-
SECTION "bank2", ROMX, BANK[$2]
-Function8000: ; 8000
+BlankScreen: ; 8000
call DisableSpriteUpdates
xor a
ld [hBGMapMode], a
@@ -1794,7 +756,7 @@ Function8000: ; 8000
ld bc, AttrMapEnd - AttrMap
ld a, $7
call ByteFill
- call Function3200
+ call WaitBGMap2
call SetPalettes
ret
; 8029
@@ -1869,7 +831,6 @@ PlayerSpawn_ConvertCoords: ; 808f
ret
; 80a1
-
WritePersonXY:: ; 80a1
ld a, b
call CheckObjectVisibility
@@ -1917,7 +878,6 @@ RefreshPlayerCoords: ; 80b8
ret
; 80e7
-
CopyObjectStruct:: ; 80e7
call CheckObjectMask
and a
@@ -2080,70 +1040,69 @@ InitializeVisibleSprites: ; 8177
ret
; 81ca
-Function81ca:: ; 81ca
+CheckObjectEnteringVisibleRange:: ; 81ca
nop
ld a, [wPlayerStepDirection]
- cp $ff
+ cp STANDING
ret z
- ld hl, .jumptable
+ ld hl, .dw
rst JumpTable
ret
; 81d6
-.jumptable: ; 81d6
- dw Function81e5
- dw Function81de
- dw Function8232
- dw Function8239
+.dw: ; 81d6
+ dw .Down
+ dw .Up
+ dw .Left
+ dw .Right
; 81de
-Function81de: ; 81de
+.Up: ; 81de
ld a, [YCoord]
- sub $1
- jr Function81ea
+ sub 1
+ jr .Vertical
-Function81e5: ; 81e5
+.Down: ; 81e5
ld a, [YCoord]
- add $9
-
-Function81ea: ; 81ea
+ add 9
+.Vertical: ; 81ea
ld d, a
ld a, [XCoord]
ld e, a
ld bc, MapObjects + OBJECT_LENGTH
ld a, 1
-.loop
+.loop_v
ld [hMapObjectIndexBuffer], a
ld hl, MAPOBJECT_SPRITE
add hl, bc
ld a, [hl]
and a
- jr z, .next
+ jr z, .next_v
ld hl, MAPOBJECT_Y_COORD
add hl, bc
ld a, d
cp [hl]
- jr nz, .next
+ jr nz, .next_v
ld hl, MAPOBJECT_OBJECT_STRUCT_ID
add hl, bc
ld a, [hl]
cp -1
- jr nz, .next
+ jr nz, .next_v
ld hl, MAPOBJECT_X_COORD
add hl, bc
ld a, [hl]
add 1
sub e
- jr c, .next
+ jr c, .next_v
cp MAPOBJECT_SCREEN_WIDTH
- jr nc, .next
+ jr nc, .next_v
push de
push bc
call CopyObjectStruct
pop bc
pop de
-.next
+.next_v
ld hl, OBJECT_LENGTH
add hl, bc
ld b, h
@@ -2151,57 +1110,56 @@ Function81ea: ; 81ea
ld a, [hMapObjectIndexBuffer]
inc a
cp NUM_OBJECTS
- jr nz, .loop
+ jr nz, .loop_v
ret
; 8232
-Function8232: ; 8232
+.Left: ; 8232
ld a, [XCoord]
sub 1
- jr Function823e
+ jr .Horizontal
-Function8239: ; 8239
+.Right: ; 8239
ld a, [XCoord]
- add $a
-
-Function823e: ; 823e
+ add 10
+.Horizontal: ; 823e
ld e, a
ld a, [YCoord]
ld d, a
ld bc, MapObjects + OBJECT_LENGTH
ld a, 1
-.loop
+.loop_h
ld [hMapObjectIndexBuffer], a
ld hl, MAPOBJECT_SPRITE
add hl, bc
ld a, [hl]
and a
- jr z, .next
+ jr z, .next_h
ld hl, MAPOBJECT_X_COORD
add hl, bc
ld a, e
cp [hl]
- jr nz, .next
+ jr nz, .next_h
ld hl, MAPOBJECT_OBJECT_STRUCT_ID
add hl, bc
ld a, [hl]
cp -1
- jr nz, .next
+ jr nz, .next_h
ld hl, MAPOBJECT_Y_COORD
add hl, bc
ld a, [hl]
add 1
sub d
- jr c, .next
+ jr c, .next_h
cp MAPOBJECT_SCREEN_HEIGHT
- jr nc, .next
+ jr nc, .next_h
push de
push bc
call CopyObjectStruct
pop bc
pop de
-.next
+.next_h
ld hl, OBJECT_LENGTH
add hl, bc
ld b, h
@@ -2209,11 +1167,10 @@ Function823e: ; 823e
ld a, [hMapObjectIndexBuffer]
inc a
cp NUM_OBJECTS
- jr nz, .loop
+ jr nz, .loop_h
ret
; 8286
-
CopyTempObjectToObjectStruct: ; 8286
ld a, [wTempObjectCopyMapObjectIndex]
ld hl, OBJECT_MAP_OBJECT_INDEX
@@ -2278,7 +1235,7 @@ CopyTempObjectToObjectStruct: ; 8286
sub [hl]
and $f
swap a
- ld hl, wd14d
+ ld hl, wFollowNotExactPersonY
sub [hl]
ld hl, OBJECT_SPRITE_Y
add hl, de
@@ -2297,7 +1254,7 @@ CopyTempObjectToObjectStruct: ; 8286
sub [hl]
and $f
swap a
- ld hl, wd14c
+ ld hl, wFollowNotExactPersonX
sub [hl]
ld hl, OBJECT_SPRITE_X
add hl, de
@@ -2415,7 +1372,6 @@ Special_SurfStartStep: ; 8379
slow_step_right
; 839e
-
FollowNotExact:: ; 839e
push bc
ld a, c
@@ -2473,7 +1429,7 @@ FollowNotExact:: ; 839e
sub [hl]
and $f
swap a
- ld hl, wd14c
+ ld hl, wFollowNotExactPersonX
sub [hl]
ld hl, OBJECT_SPRITE_X
add hl, de
@@ -2486,7 +1442,7 @@ FollowNotExact:: ; 839e
sub [hl]
and $f
swap a
- ld hl, wd14d
+ ld hl, wFollowNotExactPersonY
sub [hl]
ld hl, OBJECT_SPRITE_Y
add hl, de
@@ -2612,21 +1568,21 @@ GetRelativeFacing:: ; 8417
ret
; 848a
-Function848a: ; 848a
- call Function849d
+QueueFollowerFirstStep: ; 848a
+ call .QueueFirstStep
jr c, .same
- ld [wd4d1], a
+ ld [wFollowMovementQueue], a
xor a
- ld [wd4d0], a
+ ld [wFollowerMovementQueueLength], a
ret
.same
ld a, -1
- ld [wd4d0], a
+ ld [wFollowerMovementQueueLength], a
ret
; 849d
-Function849d: ; 849d
+.QueueFirstStep
ld a, [wObjectFollow_Leader]
call GetObjectStruct
ld hl, OBJECT_NEXT_MAP_X
@@ -2644,12 +1600,12 @@ Function849d: ; 849d
jr z, .check_y
jr c, .left
and a
- ld a, $c + RIGHT
+ ld a, movement_step_right
ret
.left
and a
- ld a, $c + LEFT
+ ld a, movement_step_left
ret
.check_y
@@ -2660,12 +1616,12 @@ Function849d: ; 849d
jr z, .same_xy
jr c, .up
and a
- ld a, $c + DOWN
+ ld a, movement_step_down
ret
.up
and a
- ld a, $c + UP
+ ld a, movement_step_up
ret
.same_xy
@@ -2683,27 +1639,26 @@ _Sine:: ; 84d9
cp %100000
jr nc, .negative
- call Function84ef
+ call .ApplySineWave
ld a, h
ret
.negative
and %011111
- call Function84ef
+ call .ApplySineWave
ld a, h
xor -1
inc a
ret
; 84ef
-Function84ef: ; 84ef
+.ApplySineWave: ; 84ef
ld e, a
ld a, d
ld d, 0
- ld hl, SineWave
-rept 2
+ ld hl, .sinewave
+ add hl, de
add hl, de
-endr
ld e, [hl]
inc hl
ld d, [hl]
@@ -2722,19 +1677,16 @@ endr
ret
; 850b
-SineWave: ; 850b
+.sinewave: ; 850b
; A $20-word table representing a sine wave.
; 90 degrees is index $10 at a base amplitude of $100.
sine_wave $100
; 854b
-
INCLUDE "engine/predef.asm"
-
INCLUDE "engine/color.asm"
-
SECTION "bank3", ROMX, BANK[$3]
CheckTime:: ; c000
@@ -2759,10 +1711,8 @@ TimeOfDayTable: ; c012
db -1
; c01b
-
INCLUDE "engine/specials.asm"
-
_PrintNum:: ; c4c7
; Print c digits of the b-byte value from de to hl.
; Allows 2 to 7 digits. For 1-digit numbers, add
@@ -2971,7 +1921,7 @@ _PrintNum:: ; c4c7
ld a, [hPrintNum5]
ld b, a
ld a, [hPrintNum2]
- ld [$ffba], a
+ ld [hPrintNum8], a
cp b
jr c, .skip1
sub b
@@ -3019,7 +1969,7 @@ _PrintNum:: ; c4c7
ld a, [hPrintNum9]
ld [hPrintNum3], a
.skip3
- ld a, [$ffba]
+ ld a, [hPrintNum8]
ld [hPrintNum2], a
.skip1
ld a, [hPrintNum1]
@@ -3030,7 +1980,7 @@ _PrintNum:: ; c4c7
jr nz, .done
bit 5, d
jr z, .done
- ld a, $f0
+ ld a, "¥"
ld [hli], a
res 5, d
.done
@@ -3042,7 +1992,7 @@ _PrintNum:: ; c4c7
dec e
ret nz
inc hl
- ld [hl], $f2
+ ld [hl], "·"
ret
.PrintLeadingZero: ; c644
@@ -3067,7 +2017,6 @@ _PrintNum:: ; c4c7
ret
; c658
-
HealParty: ; c658
xor a
ld [CurPartyMon], a
@@ -3111,9 +2060,8 @@ HealPartyMon: ; c677
; bc = MON_HP
ld b, h
ld c, l
-rept 2
dec bc
-endr
+ dec bc
ld a, [hli]
ld [bc], a
@@ -3125,7 +2073,8 @@ endr
ret
; c699
-DrawPartyMenuHPBar: ; c699
+ComputeHPBarPixels: ; c699
+; bc * (6 * 8) / de
ld a, b
or c
jr z, .zero
@@ -3136,12 +2085,14 @@ DrawPartyMenuHPBar: ; c699
ld [hMultiplicand + 1], a
ld a, c
ld [hMultiplicand + 2], a
- ld a, $30
+ ld a, 6 * 8
ld [hMultiplier], a
call Multiply
+ ; We need de to be under 256 because hDivisor is only 1 byte.
ld a, d
and a
jr z, .divide
+ ; divide de and hProduct by 4
srl d
rr e
srl d
@@ -3156,22 +2107,21 @@ DrawPartyMenuHPBar: ; c699
ld [hDividend + 3], a
ld a, b
ld [hDividend + 2], a
-
.divide
ld a, e
ld [hDivisor], a
- ld b, $4
+ ld b, 4
call Divide
ld a, [hQuotient + 2]
ld e, a
pop hl
and a
ret nz
- ld e, $1
+ ld e, 1
ret
.zero
- ld e, $0
+ ld e, 0
ret
; c6e0
@@ -3182,7 +2132,6 @@ AnimateHPBar: ; c6e0
ret
; c6ea
-
ClearBuffer1: ; c6ea
xor a
ld hl, Buffer1
@@ -3206,7 +2155,6 @@ FieldMoveJumptable: ; c6f5
ret
; c706
-
GetPartyNick: ; c706
; write CurPartyMon nickname to StringBuffer1-3
ld hl, PartyMonNicknames
@@ -3222,7 +2170,6 @@ GetPartyNick: ; c706
ret
; c721
-
CheckEngineFlag: ; c721
; Check engine flag de
; Return carry if flag is not set
@@ -3243,20 +2190,19 @@ CheckBadge: ; c731
; Display "Badge required" text and return carry if the badge is not owned
call CheckEngineFlag
ret nc
- ld hl, BadgeRequiredText
+ ld hl, .BadgeRequiredText
call MenuTextBoxBackup ; push text to queue
scf
ret
; c73d
-BadgeRequiredText: ; c73d
+.BadgeRequiredText: ; c73d
; Sorry! A new BADGE
; is required.
text_jump _BadgeRequiredText
db "@"
; c742
-
CheckPartyMove: ; c742
; Check if a monster in your party has move d.
@@ -3302,14 +2248,14 @@ CheckPartyMove: ; c742
ret
; c779
-
FieldMoveFailed: ; c779
- ld hl, UnknownText_0xc780
+ ld hl, .CantUseHere
call MenuTextBoxBackup
ret
; c780
-UnknownText_0xc780: ; 0xc780
+.CantUseHere: ; 0xc780
+ ; Can't use that here.
text_jump UnknownText_0x1c05c8
db "@"
; 0xc785
@@ -3321,17 +2267,16 @@ CutFunction: ; c785
call FieldMoveJumptable
jr nc, .loop
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; c796
-
.Jumptable: ; c796 (3:4796)
+
dw .CheckAble
dw .DoCut
dw .FailCut
-
.CheckAble: ; c79c (3:479c)
ld de, ENGINE_HIVEBADGE
call CheckBadge
@@ -3340,9 +2285,11 @@ CutFunction: ; c785
jr c, .nothingtocut
ld a, $1
ret
+
.nohivebadge
ld a, $80
ret
+
.nothingtocut
ld a, $2
ret
@@ -3354,45 +2301,51 @@ CutFunction: ; c785
ret
.FailCut: ; c7bb (3:47bb)
- ld hl, UnknownText_0xc7c9
+ ld hl, Text_NothingToCut
call MenuTextBoxBackup
ld a, $80
ret
-UnknownText_0xc7c4: ; 0xc7c4
+Text_UsedCut: ; 0xc7c4
; used CUT!
text_jump UnknownText_0x1c05dd
db "@"
; 0xc7c9
-UnknownText_0xc7c9: ; 0xc7c9
+Text_NothingToCut: ; 0xc7c9
; There's nothing to CUT here.
text_jump UnknownText_0x1c05ec
db "@"
; 0xc7ce
CheckMapForSomethingToCut: ; c7ce
+ ; Does the collision data of the facing tile permit cutting?
call GetFacingTileCoord
ld c, a
push de
callba CheckCutCollision
pop de
jr nc, .fail
+ ; Get the location of the current block in OverworldMap.
call GetBlockLocation
ld c, [hl]
+ ; See if that block contains something that can be cut.
push hl
ld hl, CutTreeBlockPointers
call CheckOverworldTileArrays
pop hl
jr nc, .fail
+ ; Back up the OverworldMap address to Buffer3
ld a, l
- ld [wd1ec], a
+ ld [Buffer3], a
ld a, h
- ld [wd1ed], a
+ ld [Buffer4], a
+ ; Back up the replacement tile to Buffer5
ld a, b
- ld [wd1ee], a
+ ld [Buffer5], a
+ ; Back up the animation index to Buffer6
ld a, c
- ld [wd1ef], a
+ ld [Buffer6], a
xor a
ret
@@ -3407,26 +2360,26 @@ Script_CutFromMenu: ; c7fe
Script_Cut: ; 0xc802
callasm GetPartyNick
- writetext UnknownText_0xc7c4
+ writetext Text_UsedCut
reloadmappart
callasm CutDownTreeOrGrass
- loadmovesprites
+ closetext
end
; 0xc810
CutDownTreeOrGrass: ; c810
- ld hl, wd1ec
+ ld hl, Buffer3 ; OverworldMapTile
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, [wd1ee]
+ ld a, [Buffer5] ; ReplacementTile
ld [hl], a
xor a
ld [hBGMapMode], a
call OverworldTextModeSwitch
call UpdateSprites
call DelayFrame
- ld a, [wd1ef]
+ ld a, [Buffer6] ; Animation type
ld e, a
callba OWCutAnimation
call BufferScreen
@@ -3438,22 +2391,32 @@ CutDownTreeOrGrass: ; c810
; c840
CheckOverworldTileArrays: ; c840
+ ; Input: c contains the tile you're facing
+ ; Output: Replacement tile in b and effect on wild encounters in c, plus carry set.
+ ; Carry is not set if the facing tile cannot be replaced, or if the tileset
+ ; does not contain a tile you can replace.
+
+ ; Dictionary lookup for pointer to tile replacement table
push bc
ld a, [wTileset]
ld de, 3
call IsInArray
pop bc
jr nc, .nope
+ ; Load the pointer
inc hl
ld a, [hli]
ld h, [hl]
ld l, a
+ ; Look up the tile you're facing
ld de, 3
ld a, c
call IsInArray
jr nc, .nope
+ ; Load the replacement to b
inc hl
ld b, [hl]
+ ; Load the animation type parameter to c
inc hl
ld c, [hl]
scf
@@ -3466,16 +2429,16 @@ CheckOverworldTileArrays: ; c840
CutTreeBlockPointers: ; c862
; Which tileset are we in?
- dbw TILESET_JOHTO_1, .one
- dbw TILESET_JOHTO_2, .two
- dbw TILESET_KANTO, .three
- dbw TILESET_PARK, .twentyfive
- dbw TILESET_ILEX_FOREST, .thirtyone
+ dbw TILESET_JOHTO_1, .johto1
+ dbw TILESET_JOHTO_2, .johto2
+ dbw TILESET_KANTO, .kanto
+ dbw TILESET_PARK, .park
+ dbw TILESET_ILEX_FOREST, .ilex
db -1
; c872
-.one: ; Johto OW
-; Which meta tile are we facing, which should we replace it with, and does it affect encounters?
+.johto1: ; Johto OW
+; Which meta tile are we facing, which should we replace it with, and which animation?
db $03, $02, $01 ; grass
db $5b, $3c, $00 ; tree
db $5f, $3d, $00 ; tree
@@ -3484,12 +2447,12 @@ CutTreeBlockPointers: ; c862
db -1
; c882
-.two: ; Goldenrod area
+.johto2: ; Goldenrod area
db $03, $02, $01 ; grass
db -1
; c886
-.three: ; Kanto OW
+.kanto: ; Kanto OW
db $0b, $0a, $01 ; grass
db $32, $6d, $00 ; tree
db $33, $6c, $00 ; tree
@@ -3499,35 +2462,35 @@ CutTreeBlockPointers: ; c862
db -1
; c899
-.twentyfive: ; National Park
+.park: ; National Park
db $13, $03, $01 ; grass
db $03, $04, $01 ; grass
db -1
; c8a0
-.thirtyone: ; Ilex Forest
+.ilex: ; Ilex Forest
db $0f, $17, $00
db -1
; c8a4
WhirlpoolBlockPointers: ; c8a4
- dbw TILESET_JOHTO_1, .one
+ dbw TILESET_JOHTO_1, .johto
db -1
; c8a8
-.one: ; c8a8
+.johto: ; c8a8
db $07, $36, $00
db -1
; c8ac
-Functionc8ac: ; c8ac
- call Functionc8b5
+OWFlash: ; c8ac
+ call .CheckUseFlash
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; c8b5
-Functionc8b5: ; c8b5
+.CheckUseFlash: ; c8b5
; Flash
ld de, ENGINE_ZEPHYRBADGE
callba CheckBadge
@@ -3536,10 +2499,9 @@ Functionc8b5: ; c8b5
callba SpecialAerodactylChamber
pop hl
jr c, .useflash
- ld a, [wd847]
- cp -1
+ ld a, [wTimeOfDayPalset]
+ cp %11111111 ; 3, 3, 3, 3
jr nz, .notadarkcave
-
.useflash
call UseFlash
ld a, $81
@@ -3565,7 +2527,7 @@ Script_UseFlash: ; 0xc8e6
special UpdateTimePals
writetext UnknownText_0xc8f3
callasm BlindingFlash
- loadmovesprites
+ closetext
end
; 0xc8f3
@@ -3576,11 +2538,11 @@ UnknownText_0xc8f3: ; 0xc8f3
ld de, SFX_FLASH
call PlaySFX
call WaitSFX
- ld hl, UnknownText_0xc908
+ ld hl, .BlankText
ret
; c908
-UnknownText_0xc908: ; 0xc908
+.BlankText: ; 0xc908
db "@"
; 0xc909
@@ -3591,18 +2553,16 @@ SurfFunction: ; c909
call FieldMoveJumptable
jr nc, .loop
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; c91a
-
.Jumptable: ; c91a (3:491a)
dw .TrySurf
dw .DoSurf
dw .FailSurf
dw .AlreadySurfing
-
.TrySurf: ; c922 (3:4922)
ld de, ENGINE_FOGBADGE
call CheckBadge
@@ -3662,8 +2622,8 @@ SurfFromMenuScript: ; c983
UsedSurfScript: ; c986
writetext UsedSurfText ; "used SURF!"
+ waitbutton
closetext
- loadmovesprites
callasm Functionc9a2 ; empty function
@@ -3698,7 +2658,6 @@ AlreadySurfingText: ; c9b3
db "@"
; c9b8
-
GetSurfType: ; c9b8
; Surfing on Pikachu uses an alternate sprite.
; This is done by using a separate movement type.
@@ -3717,7 +2676,6 @@ GetSurfType: ; c9b8
ret
; c9cb
-
CheckDirection: ; c9cb
; Return carry if a tile permission prevents you
; from moving in the direction you're facing.
@@ -3750,7 +2708,6 @@ CheckDirection: ; c9cb
db FACE_RIGHT
; c9e7
-
TrySurfOW:: ; c9e7
; Checking a tile in the overworld.
; Return carry if surfing is allowed.
@@ -3800,13 +2757,12 @@ TrySurfOW:: ; c9e7
ret
; ca2c
-
AskSurfScript: ; ca2c
- loadfont
+ opentext
writetext AskSurfText
yesorno
iftrue UsedSurfScript
- loadmovesprites
+ closetext
end
; ca36
@@ -3815,25 +2771,23 @@ AskSurfText: ; ca36
db "@" ; Want to SURF?
; ca3b
-
FlyFunction: ; ca3b
call ClearBuffer1
-.asm_ca3e
- ld hl, .data_ca4c
+.loop
+ ld hl, .Jumptable
call FieldMoveJumptable
- jr nc, .asm_ca3e
+ jr nc, .loop
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; ca4c
-.data_ca4c
+.Jumptable
dw .TryFly
dw .DoFly
dw .FailFly
; ca52
-
.TryFly: ; ca52
; Fly
ld de, ENGINE_STORMBADGE
@@ -3853,11 +2807,11 @@ FlyFunction: ; ca3b
ld a, e
cp -1
jr z, .illegal
- cp $1c ; NUM_SPAWNS
+ cp NUM_SPAWNS
jr nc, .illegal
ld [wd001], a
- call WriteBackup
+ call CloseWindow
ld a, $1
ret
@@ -3870,7 +2824,7 @@ FlyFunction: ; ca3b
ret
.illegal
- call WriteBackup
+ call CloseWindow
call WaitBGMap
ld a, $80
ret
@@ -3893,13 +2847,13 @@ FlyFunction: ; ca3b
reloadmappart
callasm HideSprites
special UpdateTimePals
- callasm Function8caed
+ callasm FlyFromAnim
farscall Script_AbortBugContest
special WarpToSpawnPoint
callasm DelayLoadingNewSprites
writecode VAR_MOVEMENT, PLAYER_NORMAL
newloadmap MAPSETUP_FLY
- callasm Function8cb33
+ callasm FlyToAnim
special WaitSFX
callasm .ReturnFromFly
end
@@ -3909,18 +2863,18 @@ FlyFunction: ; ca3b
callba Function561d
call DelayFrame
call ReplaceKrisSprite
- callba Function106594
+ callba LoadOverworldFont
ret
; cade
-Functioncade: ; cade
- call AttemptToWaterfall
+WaterfallFunction: ; cade
+ call .TryWaterfall
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; cae7
-AttemptToWaterfall: ; cae7
+.TryWaterfall: ; cae7
; Waterfall
ld de, ENGINE_RISINGBADGE
callba CheckBadge
@@ -3961,18 +2915,18 @@ Script_WaterfallFromMenu: ; 0xcb1c
Script_UsedWaterfall: ; 0xcb20
callasm GetPartyNick
- writetext UnknownText_0xcb51
+ writetext .Text_UsedWaterfall
+ waitbutton
closetext
- loadmovesprites
playsound SFX_BUBBLEBEAM
.loop
- applymovement PLAYER, WaterfallStep
- callasm CheckContinueWaterfall
+ applymovement PLAYER, .WaterfallStep
+ callasm .CheckContinueWaterfall
iffalse .loop
end
; 0xcb38
-CheckContinueWaterfall: ; cb38
+.CheckContinueWaterfall: ; cb38
xor a
ld [ScriptVar], a
ld a, [PlayerNextTile]
@@ -3984,12 +2938,13 @@ CheckContinueWaterfall: ; cb38
ret
; cb4f
-WaterfallStep: ; cb4f
+.WaterfallStep: ; cb4f
turn_waterfall_up
step_end
; cb51
-UnknownText_0xcb51: ; 0xcb51
+.Text_UsedWaterfall: ; 0xcb51
+ ; used WATERFALL!
text_jump UnknownText_0x1c068e
db "@"
; 0xcb56
@@ -4018,29 +2973,30 @@ TryWaterfallOW:: ; cb56
; cb7e
Script_CantDoWaterfall: ; 0xcb7e
- jumptext UnknownText_0xcb81
+ jumptext .Text_CantDoWaterfall
; 0xcb81
-UnknownText_0xcb81: ; 0xcb81
+.Text_CantDoWaterfall: ; 0xcb81
+ ; Wow, it's a huge waterfall.
text_jump UnknownText_0x1c06a3
db "@"
; 0xcb86
Script_AskWaterfall: ; 0xcb86
- loadfont
- writetext UnknownText_0xcb90
+ opentext
+ writetext .AskUseWaterfall
yesorno
iftrue Script_UsedWaterfall
- loadmovesprites
+ closetext
end
; 0xcb90
-UnknownText_0xcb90: ; 0xcb90
+.AskUseWaterfall: ; 0xcb90
+ ; Do you want to use WATERFALL?
text_jump UnknownText_0x1c06bf
db "@"
; 0xcb95
-
EscapeRopeFunction: ; cb95
call ClearBuffer1
ld a, $1
@@ -4057,7 +3013,7 @@ dig_incave
call FieldMoveJumptable
jr nc, .loop
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; cbb2
@@ -4069,16 +3025,16 @@ dig_incave
.CheckCanDig: ; cbb8
call GetMapPermission
- cp $4
+ cp CAVE
jr z, .incave
- cp $7
+ cp DUNGEON
jr z, .incave
.fail
ld a, $2
ret
.incave
- ld hl, wdca9
+ ld hl, wDigWarp
ld a, [hli]
and a
jr z, .fail
@@ -4093,22 +3049,22 @@ dig_incave
; cbd8
.DoDig: ; cbd8
- ld hl, wdca9
- ld de, wd146
+ ld hl, wDigWarp
+ ld de, wNextWarp
ld bc, 3
call CopyBytes
call GetPartyNick
ld a, [Buffer2]
cp $2
jr nz, .escaperope
- ld hl, UsedDigScript
+ ld hl, .UsedDigScript
call QueueScript
ld a, $81
ret
.escaperope
callba SpecialKabutoChamber
- ld hl, UsedEscapeRopeScript
+ ld hl, .UsedEscapeRopeScript
call QueueScript
ld a, $81
ret
@@ -4118,49 +3074,49 @@ dig_incave
ld a, [Buffer2]
cp $2
jr nz, .failescaperope
- ld hl, UnknownText_0xcc26
+ ld hl, .Text_CantUseHere
call MenuTextBox
call WaitPressAorB_BlinkCursor
- call WriteBackup
+ call CloseWindow
.failescaperope
ld a, $80
ret
; cc1c
-UnknownText_0xcc1c: ; 0xcc1c
+.Text_UsedDig: ; 0xcc1c
; used DIG!
text_jump UnknownText_0x1c06de
db "@"
; 0xcc21
-UnknownText_0xcc21: ; 0xcc21
+.Text_UsedEscapeRope: ; 0xcc21
; used an ESCAPE ROPE.
text_jump UnknownText_0x1c06ed
db "@"
; 0xcc26
-UnknownText_0xcc26: ; 0xcc26
+.Text_CantUseHere: ; 0xcc26
; Can't use that here.
text_jump UnknownText_0x1c0705
db "@"
; 0xcc2b
-UsedEscapeRopeScript: ; 0xcc2b
+.UsedEscapeRopeScript: ; 0xcc2b
reloadmappart
special UpdateTimePals
- writetext UnknownText_0xcc21
- jump UsedDigOrEscapeRopeScript
+ writetext .Text_UsedEscapeRope
+ jump .UsedDigOrEscapeRopeScript
; 0xcc35
-UsedDigScript: ; 0xcc35
+.UsedDigScript: ; 0xcc35
reloadmappart
special UpdateTimePals
- writetext UnknownText_0xcc1c
+ writetext .Text_UsedDig
-UsedDigOrEscapeRopeScript: ; 0xcc3c
+.UsedDigOrEscapeRopeScript: ; 0xcc3c
+ waitbutton
closetext
- loadmovesprites
playsound SFX_WARP_TO
applymovement PLAYER, .DigOut
farscall Script_AbortBugContest
@@ -4191,7 +3147,7 @@ TeleportFunction: ; cc61
call FieldMoveJumptable
jr nc, .loop
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; cc72
@@ -4208,9 +3164,9 @@ TeleportFunction: ; cc61
jr .nope
.CheckIfSpawnPoint
- ld a, [wdcb2]
+ ld a, [wLastSpawnMapGroup]
ld d, a
- ld a, [wdcb3]
+ ld a, [wLastSpawnMapNumber]
ld e, a
callba IsSpawnPoint
jr nc, .nope
@@ -4226,38 +3182,38 @@ TeleportFunction: ; cc61
.DoTeleport: ; cc9c
call GetPartyNick
- ld hl, Script_UsedTeleport
+ ld hl, .TeleportScript
call QueueScript
ld a, $81
ret
; cca8
.FailTeleport: ; cca8
- ld hl, UnknownText_0xccb6
+ ld hl, .Text_CantUseHere
call MenuTextBoxBackup
ld a, $80
ret
; ccb1
-UnknownText_0xccb1: ; 0xccb1
+.Text_ReturnToLastMonCenter: ; 0xccb1
; Return to the last #MON CENTER.
text_jump UnknownText_0x1c071a
db "@"
; 0xccb6
-UnknownText_0xccb6: ; 0xccb6
+.Text_CantUseHere: ; 0xccb6
; Can't use that here.
text_jump UnknownText_0x1c073b
db "@"
; 0xccbb
-Script_UsedTeleport: ; 0xccbb
+.TeleportScript: ; 0xccbb
reloadmappart
special UpdateTimePals
- writetext UnknownText_0xccb1
+ writetext .Text_ReturnToLastMonCenter
pause 60
reloadmappart
- loadmovesprites
+ closetext
playsound SFX_WARP_TO
applymovement PLAYER, .TeleportFrom
farscall Script_AbortBugContest
@@ -4282,7 +3238,7 @@ Script_UsedTeleport: ; 0xccbb
StrengthFunction: ; cce5
call .TryStrength
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; ccee
@@ -4290,48 +3246,44 @@ StrengthFunction: ; cce5
; Strength
ld de, ENGINE_PLAINBADGE
call CheckBadge
- jr c, FailedStrength
- jr StartToUseStrength
+ jr c, .Failed
+ jr .UseStrength
; ccf8
-AlreadyUsingStrength: ; unreferenced
- ld hl, UnknownText_0xcd01
+.AlreadyUsing: ; unreferenced
+ ld hl, .JumpText
call MenuTextBoxBackup
ld a, $80
ret
; cd01
-UnknownText_0xcd01: ; 0xcd01
+.JumpText: ; 0xcd01
text_jump UnknownText_0x1c0751
db "@"
; 0xcd06
-FailedStrength: ; cd06
+.Failed: ; cd06
ld a, $80
ret
; cd09
-StartToUseStrength: ; cd09
+.UseStrength: ; cd09
ld hl, Script_StrengthFromMenu
call QueueScript
ld a, $81
ret
; cd12
-Functioncd12: ; cd12
+SetStrengthFlag: ; cd12
ld hl, BikeFlags
set 0, [hl]
ld a, [CurPartyMon]
ld e, a
ld d, 0
- ; fallthrough
-; cd1d
-
-Functioncd1d: ; cd1d
ld hl, PartySpecies
add hl, de
ld a, [hl]
- ld [wd1ef], a
+ ld [Buffer6], a
call GetPartyNick
ret
; cd29
@@ -4341,22 +3293,22 @@ Script_StrengthFromMenu: ; 0xcd29
special UpdateTimePals
Script_UsedStrength: ; 0xcd2d
- callasm Functioncd12
- writetext UnknownText_0xcd41
- copybytetovar wd1ef
+ callasm SetStrengthFlag
+ writetext .UsedStrength
+ copybytetovar Buffer6
cry 0
pause 3
- writetext UnknownText_0xcd46
- loadmovesprites
+ writetext .StrengthAllowedItToMoveBoulders
+ closetext
end
; 0xcd41
-UnknownText_0xcd41: ; 0xcd41
+.UsedStrength: ; 0xcd41
text_jump UnknownText_0x1c0774
db "@"
; 0xcd46
-UnknownText_0xcd46: ; 0xcd46
+.StrengthAllowedItToMoveBoulders: ; 0xcd46
text_jump UnknownText_0x1c0788
db "@"
; 0xcd4b
@@ -4377,11 +3329,11 @@ AskStrengthScript:
; 0xcd5f
.AskStrength: ; 0xcd5f
- loadfont
+ opentext
writetext UnknownText_0xcd69
yesorno
iftrue Script_UsedStrength
- loadmovesprites
+ closetext
end
; 0xcd69
@@ -4439,7 +3391,7 @@ WhirlpoolFunction: ; cd9d
call FieldMoveJumptable
jr nc, .loop
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; cdae
@@ -4480,7 +3432,7 @@ Jumptable_cdae: ; cdae
ret
; cdd9
-UnknownText_0xcdd9: ; 0xcdd9
+Text_UsedWhirlpool: ; 0xcdd9
; used WHIRLPOOL!
text_jump UnknownText_0x1c0816
db "@"
@@ -4501,13 +3453,13 @@ TryWhirlpoolMenu: ; cdde
pop hl
jr nc, .failed
ld a, l
- ld [wd1ec], a
+ ld [Buffer3], a
ld a, h
- ld [wd1ed], a
+ ld [Buffer4], a
ld a, b
- ld [wd1ee], a
+ ld [Buffer5], a
ld a, c
- ld [wd1ef], a
+ ld [Buffer6], a
xor a
ret
@@ -4522,24 +3474,24 @@ Script_WhirlpoolFromMenu: ; 0xce0b
Script_UsedWhirlpool: ; 0xce0f
callasm GetPartyNick
- writetext UnknownText_0xcdd9
+ writetext Text_UsedWhirlpool
reloadmappart
callasm DisappearWhirlpool
- loadmovesprites
+ closetext
end
; 0xce1d
DisappearWhirlpool: ; ce1d
- ld hl, wd1ec
+ ld hl, Buffer3
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, [wd1ee]
+ ld a, [Buffer5]
ld [hl], a
xor a
ld [hBGMapMode], a
call OverworldTextModeSwitch
- ld a, [wd1ef]
+ ld a, [Buffer6]
ld e, a
callba PlayWhirlpoolSound
call BufferScreen
@@ -4571,20 +3523,20 @@ TryWhirlpoolOW:: ; ce3e
; ce66
Script_MightyWhirlpool: ; 0xce66
- jumptext UnknownText_0xce69
+ jumptext .MightyWhirlpoolText
; 0xce69
-UnknownText_0xce69: ; 0xce69
+.MightyWhirlpoolText: ; 0xce69
text_jump UnknownText_0x1c082b
db "@"
; 0xce6e
Script_AskWhirlpoolOW: ; 0xce6e
- loadfont
+ opentext
writetext UnknownText_0xce78
yesorno
iftrue Script_UsedWhirlpool
- loadmovesprites
+ closetext
end
; 0xce78
@@ -4593,11 +3545,10 @@ UnknownText_0xce78: ; 0xce78
db "@"
; 0xce7d
-
HeadbuttFunction: ; ce7d
call TryHeadbuttFromMenu
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; ce86
@@ -4642,16 +3593,16 @@ HeadbuttScript: ; 0xceab
callasm TreeMonEncounter
iffalse .no_battle
- loadmovesprites
- battlecheck
+ closetext
+ randomwildmon
startbattle
- returnafterbattle
+ reloadmapafterbattle
end
.no_battle
writetext UnknownText_0xcea2
+ waitbutton
closetext
- loadmovesprites
end
; 0xcec9
@@ -4672,11 +3623,11 @@ TryHeadbuttOW:: ; cec9
; cedc
AskHeadbuttScript: ; 0xcedc
- loadfont
+ opentext
writetext UnknownText_0xcee6
yesorno
iftrue HeadbuttScript
- loadmovesprites
+ closetext
end
; 0xcee6
@@ -4686,11 +3637,10 @@ UnknownText_0xcee6: ; 0xcee6
db "@"
; 0xceeb
-
RockSmashFunction: ; ceeb
call TryRockSmashFromMenu
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; cef4
@@ -4742,7 +3692,7 @@ RockSmashFromMenuScript: ; 0xcf2e
RockSmashScript: ; cf32
callasm GetPartyNick
writetext UnknownText_0xcf58
- loadmovesprites
+ closetext
special WaitSFX
playsound SFX_STRENGTH
earthquake 84
@@ -4752,9 +3702,9 @@ RockSmashScript: ; cf32
callasm RockMonEncounter
copybytetovar TempWildMonSpecies
iffalse .done
- battlecheck
+ randomwildmon
startbattle
- returnafterbattle
+ reloadmapafterbattle
.done
end
; 0xcf55
@@ -4772,11 +3722,11 @@ AskRockSmashScript: ; 0xcf5d
callasm HasRockSmash
if_equal 1, .no
- loadfont
+ opentext
writetext UnknownText_0xcf77
yesorno
iftrue RockSmashScript
- loadmovesprites
+ closetext
end
.no
jumptext UnknownText_0xcf72
@@ -4808,7 +3758,6 @@ HasRockSmash: ; cf7c
ld [ScriptVar], a
ret
-
FishFunction: ; cf8e
ld a, e
push af
@@ -4820,7 +3769,7 @@ FishFunction: ; cf8e
call FieldMoveJumptable
jr nc, .loop
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; cfa5
@@ -4882,7 +3831,7 @@ FishFunction: ; cf8e
.FishGotSomething: ; cff4
ld a, $1
- ld [wd1ef], a
+ ld [Buffer6], a
ld hl, Script_GotABite
call QueueScript
ld a, $81
@@ -4891,7 +3840,7 @@ FishFunction: ; cf8e
.FishNoBite: ; d002
ld a, $2
- ld [wd1ef], a
+ ld [Buffer6], a
ld hl, Script_NotEvenANibble
call QueueScript
ld a, $81
@@ -4900,7 +3849,7 @@ FishFunction: ; cf8e
.FailFish: ; d010
ld a, $0
- ld [wd1ef], a
+ ld [Buffer6], a
ld hl, Script_NotEvenANibble2
call QueueScript
ld a, $81
@@ -4920,7 +3869,7 @@ Script_NotEvenANibble2: ; 0xd027
Script_NotEvenANibble_FallThrough: ; 0xd02d
loademote EMOTE_SHADOW
callasm PutTheRodAway
- loadmovesprites
+ closetext
end
; 0xd035
@@ -4940,10 +3889,10 @@ Script_GotABite: ; 0xd035
applymovement PLAYER, .Movement_RestoreRod
writetext UnknownText_0xd0a4
callasm PutTheRodAway
- loadmovesprites
- battlecheck
+ closetext
+ randomwildmon
startbattle
- returnafterbattle
+ reloadmapafterbattle
end
; 0xd05c
@@ -5033,7 +3982,7 @@ UnknownText_0xd0ae: ; unused
BikeFunction: ; d0b3
call .TryBike
and $7f
- ld [wd0ec], a
+ ld [wFieldMoveSucceeded], a
ret
; d0bc
@@ -5090,7 +4039,7 @@ BikeFunction: ; d0b3
; d119
.CheckIfRegistered: ; d119
- ld a, [wd0ef]
+ ld a, [wUsingItemWithSelect]
and a
ret z
ld h, d
@@ -5125,15 +4074,15 @@ Script_GetOnBike: ; 0xd13e
special UpdateTimePals
writecode VAR_MOVEMENT, PLAYER_BIKE
writetext UnknownText_0xd17c
+ waitbutton
closetext
- loadmovesprites
special ReplaceKrisSprite
end
; 0xd14e
Script_GetOnBike_Register: ; 0xd14e
writecode VAR_MOVEMENT, PLAYER_BIKE
- loadmovesprites
+ closetext
special ReplaceKrisSprite
end
; 0xd156
@@ -5147,10 +4096,10 @@ Script_GetOffBike: ; 0xd158
special UpdateTimePals
writecode VAR_MOVEMENT, PLAYER_NORMAL
writetext UnknownText_0xd181
- closetext
+ waitbutton
FinishGettingOffBike:
- loadmovesprites
+ closetext
special ReplaceKrisSprite
special PlayMapMusic
end
@@ -5163,8 +4112,8 @@ Script_GetOffBike_Register: ; 0xd16b
UnknownScript_0xd171: ; 0xd171
writetext UnknownText_0xd177
+ waitbutton
closetext
- loadmovesprites
end
; 0xd177
@@ -5186,7 +4135,6 @@ UnknownText_0xd181: ; 0xd181
db "@"
; 0xd186
-
TryCutOW:: ; d186
ld d, CUT
call CheckPartyMove
@@ -5211,14 +4159,14 @@ TryCutOW:: ; d186
; d1a9
AskCutScript: ; 0xd1a9
- loadfont
+ opentext
writetext UnknownText_0xd1c8
yesorno
iffalse .script_d1b8
callasm .CheckMap
iftrue Script_Cut
.script_d1b8
- loadmovesprites
+ closetext
end
; 0xd1ba
@@ -5227,7 +4175,7 @@ AskCutScript: ; 0xd1a9
ld [ScriptVar], a
call CheckMapForSomethingToCut
ret c
- ld a, 1
+ ld a, TRUE
ld [ScriptVar], a
ret
; d1c8
@@ -5246,7 +4194,6 @@ UnknownText_0xd1d0: ; 0xd1d0
db "@"
; 0xd1d5
-
_ReceiveItem:: ; d1d5
call DoesHLEqualNumItems
jp nz, PutItemInPocket
@@ -5293,7 +4240,6 @@ _ReceiveItem:: ; d1d5
jp ReceiveTMHM
; d20d
-
_TossItem:: ; d20d
call DoesHLEqualNumItems
jr nz, .remove
@@ -5504,14 +4450,13 @@ RemoveItemFromPocket: ; d2ff
ld e, l
ld a, [hli]
ld c, a
- ld a, [ItemCountBuffer]
+ ld a, [CurItemQuantity]
cp c
jr nc, .ok ; memory
ld c, a
ld b, $0
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [CurItem]
cp [hl]
inc hl
@@ -5545,9 +4490,8 @@ endr
dec hl
ld b, h
ld c, l
-rept 2
inc hl
-endr
+ inc hl
.loop2
ld a, [hli]
ld [bc], a
@@ -5677,8 +4621,6 @@ CheckKeyItems: ; d3b1
ret
; d3c4
-
-
ReceiveTMHM: ; d3c4
dec c
ld b, 0
@@ -5737,8 +4679,6 @@ CheckTMHM: ; d3fb
ret
; d407
-
-
GetTMHMNumber:: ; d407
; Return the number of a TM/HM by item id c.
@@ -5760,7 +4700,6 @@ GetTMHMNumber:: ; d407
ret
; d417
-
GetNumberedTMHM: ; d417
; Return the item id of a TM/HM by number c.
@@ -5783,7 +4722,6 @@ GetNumberedTMHM: ; d417
ret
; d427
-
_CheckTossableItem:: ; d427
; Return 1 in wItemAttributeParamBuffer and carry if CurItem can't be removed from the bag.
ld a, ITEMATTR_PERMISSIONS
@@ -5866,7 +4804,6 @@ ItemAttr_ReturnCarry: ; d47f
ret
; d486
-
GetItemPrice: ; d486
; Return the price of CurItem in de.
push hl
@@ -5882,2520 +4819,9 @@ GetItemPrice: ; d486
ret
; d497
-
-Functiond497:: ; d497 (3:5497)
- ld a, [wPlayerStepFlags]
- and a
- ret z
- bit 7, a
- jr nz, .asm_d4a9
- bit 6, a
- jr nz, .asm_d4b3
- bit 5, a
- jr nz, .asm_d4b8
- ret
-.asm_d4a9
- ld a, $4
- ld [wd13f], a
- call Functiond536
- jr .asm_d4b8
-.asm_d4b3
- call Functiond511
- jr .asm_d4b8
-.asm_d4b8
- call Functiond4e5
- ld a, [wPlayerStepVectorX]
- ld d, a
- ld a, [wPlayerStepVectorY]
- ld e, a
- ld a, [wd14c]
- sub d
- ld [wd14c], a
- ld a, [wd14d]
- sub e
- ld [wd14d], a
- ret
-
-Functiond4d2:: ; d4d2 (3:54d2)
- ld a, [wPlayerStepVectorX]
- ld d, a
- ld a, [wPlayerStepVectorY]
- ld e, a
- ld a, [hSCX]
- add d
- ld [hSCX], a
- ld a, [hSCY]
- add e
- ld [hSCY], a
- ret
-
-Functiond4e5: ; d4e5 (3:54e5)
- ld hl, wd13f
- ld a, [hl]
- and a
- ret z
- dec [hl]
- ld a, [hl]
- ld hl, Jumptable_d4f2
- rst JumpTable
- ret
-
-Jumptable_d4f2: ; d4f2 (3:54f2)
- dw GetMovementPermissions
- dw BufferScreen
- dw .mobile
- dw .fail2
- dw .fail1
- dw .fail1
- dw .fail1
- dw .fail1
- dw .fail1
- dw .fail1
- dw .fail1
-
-
-.fail1: ; d508 (3:5508)
- ret
-
-.mobile: ; d509 (3:5509)
- callba MobileFn_10602e
- ret
-
-.fail2: ; d510 (3:5510)
- ret
-
-Functiond511: ; d511 (3:5511)
- ld a, [wPlayerStepDirection]
- and a
- jr nz, .asm_d51c
- ld hl, YCoord
- inc [hl]
- ret
-.asm_d51c
- cp $1
- jr nz, .asm_d525
- ld hl, YCoord
- dec [hl]
- ret
-.asm_d525
- cp $2
- jr nz, .asm_d52e
- ld hl, XCoord
- dec [hl]
- ret
-.asm_d52e
- cp $3
- ret nz
- ld hl, XCoord
- inc [hl]
- ret
-
-Functiond536: ; d536 (3:5536)
- ld a, [wPlayerStepDirection]
- and a
- jr z, .asm_d549
- cp $1
- jr z, .asm_d553
- cp $2
- jr z, .asm_d55d
- cp $3
- jr z, .asm_d567
- ret
-
-.asm_d549
- call Functiond571
- call LoadMapPart
- call ScrollMapUp
- ret
-
-.asm_d553
- call Functiond5a2
- call LoadMapPart
- call ScrollMapDown
- ret
-
-.asm_d55d
- call Functiond5d5
- call LoadMapPart
- call ScrollMapLeft
- ret
-
-.asm_d567
- call Functiond5fe
- call LoadMapPart
- call ScrollMapRight
- ret
-
-Functiond571: ; d571 (3:5571)
- ld a, [wBGMapAnchor]
- add $40
- ld [wBGMapAnchor], a
- jr nc, .not_overflowed
- ld a, [wBGMapAnchor + 1]
- inc a
- and $3
- or VBGMap0 / $100
- ld [wBGMapAnchor + 1], a
-.not_overflowed
- ld hl, wd196
- inc [hl]
- ld a, [hl]
- cp $2 ; was 1
- jr nz, .skip
- ld [hl], $0
- call Functiond595
-.skip
- ret
-
-Functiond595: ; d595 (3:5595)
- ld hl, wd194
- ld a, [MapWidth]
- add $6
- add [hl]
- ld [hli], a
- ret nc
- inc [hl]
- ret
-
-Functiond5a2: ; d5a2 (3:55a2)
- ld a, [wBGMapAnchor]
- sub $40
- ld [wBGMapAnchor], a
- jr nc, .not_underflowed
- ld a, [wBGMapAnchor + 1]
- dec a
- and $3
- or VBGMap0 / $100
- ld [wBGMapAnchor + 1], a
-.not_underflowed
- ld hl, wd196
- dec [hl]
- ld a, [hl]
- cp $ff ; was 0
- jr nz, .skip
- ld [hl], $1
- call Functiond5c6
-.skip
- ret
-
-Functiond5c6: ; d5c6 (3:55c6)
- ld hl, wd194
- ld a, [MapWidth]
- add $6
- ld b, a
- ld a, [hl]
- sub b
- ld [hli], a
- ret nc
- dec [hl]
- ret
-
-Functiond5d5: ; d5d5 (3:55d5)
- ld a, [wBGMapAnchor]
- ld e, a
- and $e0
- ld d, a
- ld a, e
- sub $2
- and $1f
- or d
- ld [wBGMapAnchor], a
- ld hl, wd197
- dec [hl]
- ld a, [hl]
- cp $ff
- jr nz, .asm_d5f3
- ld [hl], $1
- call Functiond5f4
-.asm_d5f3
- ret
-
-Functiond5f4: ; d5f4 (3:55f4)
- ld hl, wd194
- ld a, [hl]
- sub $1
- ld [hli], a
- ret nc
- dec [hl]
- ret
-
-Functiond5fe: ; d5fe (3:55fe)
- ld a, [wBGMapAnchor]
- ld e, a
- and $e0
- ld d, a
- ld a, e
- add $2
- and $1f
- or d
- ld [wBGMapAnchor], a
- ld hl, wd197
- inc [hl]
- ld a, [hl]
- cp $2
- jr nz, .asm_d61c
- ld [hl], $0
- call .Incrementwd194
-.asm_d61c
- ret
-
-.Incrementwd194: ; d61d (3:561d)
- ld hl, wd194
- ld a, [hl]
- add $1
- ld [hli], a
- ret nc
- inc [hl]
- ret
-
-_AnimateHPBar: ; d627
- call Functiond65f
- jr c, .do_player
- call Functiond670
-.enemy_loop
- push bc
- push hl
- call Functiond6e2
- pop hl
- pop bc
- push af
- push bc
- push hl
- call Functiond730
- call Functiond7c9
- pop hl
- pop bc
- pop af
- jr nc, .enemy_loop
- ret
-
-.do_player
- call Functiond670
-.player_loop
- push bc
- push hl
- call Functiond6f5
- pop hl
- pop bc
- ret c
- push af
- push bc
- push hl
- call Functiond749
- call Functiond7c9
- pop hl
- pop bc
- pop af
- jr nc, .player_loop
- ret
-; d65f
-
-Functiond65f: ; d65f
- ld a, [Buffer2]
- and a
- jr nz, .player
- ld a, [Buffer1]
- cp $30
- jr nc, .player
- and a
- ret
-
-.player
- scf
- ret
-; d670
-
-Functiond670: ; d670
- push hl
- ld hl, Buffer1
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- pop hl
- call DrawPartyMenuHPBar
- ld a, e
- ld [wd1f1], a
- ld a, [wd1ee]
- ld c, a
- ld a, [wd1ef]
- ld b, a
- ld a, [Buffer1]
- ld e, a
- ld a, [Buffer2]
- ld d, a
- call DrawPartyMenuHPBar
- ld a, e
- ld [wd1f2], a
- push hl
- ld hl, wd1ec
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- pop hl
- ld a, e
- sub c
- ld e, a
- ld a, d
- sbc b
- ld d, a
- jr c, .asm_d6c1
- ld a, [wd1ec]
- ld [wd1f5], a
- ld a, [wd1ee]
- ld [wd1f6], a
- ld bc, 1
- jr .asm_d6d9
-
-.asm_d6c1
- ld a, [wd1ec]
- ld [wd1f6], a
- ld a, [wd1ee]
- ld [wd1f5], a
- ld a, e
- xor $ff
- inc a
- ld e, a
- ld a, d
- xor $ff
- ld d, a
- ld bc, rIE
-
-.asm_d6d9
- ld a, d
- ld [wd1f3], a
- ld a, e
- ld [wd1f4], a
- ret
-; d6e2
-
-Functiond6e2: ; d6e2
- ld hl, wd1f1
- ld a, [wd1f2]
- cp [hl]
- jr nz, .asm_d6ed
- scf
- ret
-
-.asm_d6ed
- ld a, c
- add [hl]
- ld [hl], a
- call Functiond839
- and a
- ret
-; d6f5
-
-Functiond6f5: ; d6f5
-.asm_d6f5
- ld hl, wd1ec
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- ld a, e
- cp [hl]
- jr nz, .asm_d707
- inc hl
- ld a, d
- cp [hl]
- jr nz, .asm_d707
- scf
- ret
-
-.asm_d707
- ld l, e
- ld h, d
- add hl, bc
- ld a, l
- ld [wd1ec], a
- ld a, h
- ld [wd1ed], a
- push hl
- push de
- push bc
- ld hl, Buffer1
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- ld a, [hli]
- ld c, a
- ld a, [hli]
- ld b, a
- call DrawPartyMenuHPBar
- pop bc
- pop de
- pop hl
- ld a, e
- ld hl, wd1f1
- cp [hl]
- jr z, .asm_d6f5
- ld [hl], a
- and a
- ret
-; d730
-
-Functiond730: ; d730
- call Functiond784
- ld d, $6
- ld a, [wd10a]
- and $1
- ld b, a
- ld a, [wd1f1]
- ld e, a
- ld c, a
- push de
- call Functiond771
- pop de
- call Functiond7b4
- ret
-; d749
-
-Functiond749: ; d749
- call Functiond784
- ld a, [wd1ec]
- ld c, a
- ld a, [wd1ed]
- ld b, a
- ld a, [Buffer1]
- ld e, a
- ld a, [Buffer2]
- ld d, a
- call DrawPartyMenuHPBar
- ld c, e
- ld d, $6
- ld a, [wd10a]
- and $1
- ld b, a
- push de
- call Functiond771
- pop de
- call Functiond7b4
- ret
-; d771
-
-Functiond771: ; d771
- ld a, [wd10a]
- cp $2
- jr nz, .asm_d780
- ld a, $28
- add l
- ld l, a
- ld a, $0
- adc h
- ld h, a
-
-.asm_d780
- call DrawBattleHPBar
- ret
-; d784
-
-Functiond784: ; d784
- ld a, [wd10a]
- and a
- ret z
- cp $1
- jr z, .load_15
- ld de, $16
- jr .loaded_de
-
-.load_15
- ld de, $15
-
-.loaded_de
- push hl
- add hl, de
- ld a, " "
-rept 2
- ld [hli], a
-endr
- ld [hld], a
- dec hl
- ld a, [wd1ec]
- ld [StringBuffer2 + 1], a
- ld a, [wd1ed]
- ld [StringBuffer2], a
- ld de, StringBuffer2
- lb bc, 2, 3
- call PrintNum
- pop hl
- ret
-; d7b4
-
-Functiond7b4: ; d7b4
- ld a, [hCGB]
- and a
- ret z
- ld hl, wd1f0
- call SetHPPal
- ld a, [wd1f0]
- ld c, a
- callba Function8c43
- ret
-; d7c9
-
-Functiond7c9: ; d7c9
- ld a, [hCGB]
- and a
- jr nz, .cgb
- call DelayFrame
- call DelayFrame
- ret
-
-.cgb
- ld a, [wd10a]
- and a
- jr z, .load_0
- cp $1
- jr z, .load_1
- ld a, [CurPartyMon]
- cp $3
- jr nc, .c_is_1
- ld c, $0
- jr .c_is_0
-
-.c_is_1
- ld c, $1
-
-.c_is_0
- push af
- cp $2
- jr z, .skip_delay
- cp $5
- jr z, .skip_delay
- ld a, $2
- ld [hBGMapMode], a
- ld a, c
- ld [hBGMapThird], a
- call DelayFrame
-
-.skip_delay
- ld a, $1
- ld [hBGMapMode], a
- ld a, c
- ld [hBGMapThird], a
- call DelayFrame
- pop af
- cp $2
- jr z, .two_frames
- cp $5
- jr z, .two_frames
- ret
-
-.two_frames
- inc c
- ld a, $2
- ld [hBGMapMode], a
- ld a, c
- ld [hBGMapThird], a
- call DelayFrame
- ld a, $1
- ld [hBGMapMode], a
- ld a, c
- ld [hBGMapThird], a
- call DelayFrame
- ret
-
-.load_0
- ld c, $0
- jr .finish
-
-.load_1
- ld c, $1
-
-.finish
- call DelayFrame
- ld a, c
- ld [hBGMapThird], a
- call DelayFrame
- ret
-; d839
-
-Functiond839: ; d839
- ld a, [Buffer1]
- ld c, a
- ld b, $0
- ld hl, 0
- ld a, [wd1f1]
- cp $30
- jr nc, .coppy_buffer
- and a
- jr z, .return_zero
- call AddNTimes
- ld b, $0
-.loop
- ld a, l
- sub $30
- ld l, a
- ld a, h
- sbc $0
- ld h, a
- jr c, .done
- inc b
- jr .loop
-
-.done
- push bc
- ld bc, $80
- add hl, bc
- pop bc
- ld a, l
- sub $30
- ld l, a
- ld a, h
- sbc $0
- ld h, a
- jr c, .no_carry
- inc b
-
-.no_carry
- ld a, [wd1f5]
- cp b
- jr nc, .finish
- ld a, [wd1f6]
- cp b
- jr c, .finish
- ld a, b
-
-.finish
- ld [wd1ec], a
- ret
-
-.return_zero
- xor a
- ld [wd1ec], a
- ret
-
-.coppy_buffer
- ld a, [Buffer1]
- ld [wd1ec], a
- ret
-; d88c
-
-
-TryAddMonToParty: ; d88c
-; Check if to copy wild Pkmn or generate new Pkmn
- ; Whose is it?
- ld de, PartyCount
- ld a, [MonType]
- and $f
- jr z, .getpartylocation ; PARTYMON
- ld de, OTPartyCount
-
-.getpartylocation
- ; Do we have room for it?
- ld a, [de]
- inc a
- cp PARTY_LENGTH + 1
- ret nc
- ; Increase the party count
- ld [de], a
- ld a, [de] ; Why are we doing this?
- ld [$ffae], a ; HRAM backup
- add e
- ld e, a
- jr nc, .loadspecies
- inc d
-
-.loadspecies
- ; Load the species of the Pokemon into the party list.
- ; The terminator is usually here, but it'll be back.
- ld a, [CurPartySpecies]
- ld [de], a
- ; Load the terminator into the next slot.
- inc de
- ld a, -1
- ld [de], a
- ; Now let's load the OT name.
- ld hl, PartyMonOT
- ld a, [MonType]
- and $f
- jr z, .loadOTname
- ld hl, OTPartyMonOT
-
-.loadOTname
- ld a, [$ffae] ; Restore index from backup
- dec a
- call SkipNames
- ld d, h
- ld e, l
- ld hl, PlayerName
- ld bc, NAME_LENGTH
- call CopyBytes
- ld a, [MonType]
- and a
- jr nz, .skipnickname
- ld a, [CurPartySpecies]
- ld [wd265], a
- call GetPokemonName
- ld hl, PartyMonNicknames
- ld a, [$ffae]
- dec a
- call SkipNames
- ld d, h
- ld e, l
- ld hl, StringBuffer1
- ld bc, PKMN_NAME_LENGTH
- call CopyBytes
-
-.skipnickname
- ld hl, PartyMon1Species
- ld a, [MonType]
- and $f
- jr z, .initializeStats
- ld hl, OTPartyMon1Species
-
-.initializeStats
- ld a, [$ffae]
- dec a
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
-GeneratePartyMonStats: ; d906
- ld e, l
- ld d, h
- push hl
- ld a, [CurPartySpecies]
- ld [CurSpecies], a
- call GetBaseData
- ld a, [BaseDexNo]
- ld [de], a
- inc de
- ld a, [wBattleMode]
- and a
- ld a, $0
- jr z, .skipitem
- ld a, [EnemyMonItem]
-
-.skipitem
- ld [de], a
- inc de
- push de
- ld h, d
- ld l, e
- ld a, [wBattleMode]
- and a
- jr z, .randomlygeneratemoves
- ld a, [MonType]
- and a
- jr nz, .randomlygeneratemoves
- ld de, EnemyMonMoves
- rept NUM_MOVES + -1
- ld a, [de]
- inc de
- ld [hli], a
- endr
- ld a, [de]
- ld [hl], a
- jr .next
-
-.randomlygeneratemoves
- xor a
- rept NUM_MOVES + -1
- ld [hli], a
- endr
- ld [hl], a
- ld [Buffer1], a
- predef FillMoves
-
-.next
- pop de
-rept 4
- inc de
-endr
- ld a, [PlayerID]
- ld [de], a
- inc de
- ld a, [PlayerID + 1]
- ld [de], a
- inc de
- push de
- ld a, [CurPartyLevel]
- ld d, a
- callab CalcExpAtLevel
- pop de
- ld a, [hMultiplicand]
- ld [de], a
- inc de
- ld a, [$ffb5]
- ld [de], a
- inc de
- ld a, [$ffb6]
- ld [de], a
- inc de
- xor a
- ld b, $a
-.loop
- ld [de], a
- inc de
- dec b
- jr nz, .loop
- pop hl
- push hl
- ld a, [MonType]
- and $f
- jr z, .generateDVs
- push hl
- callba GetTrainerDVs
- pop hl
- jr .initializetrainermonstats
-
-.generateDVs
- ld a, [CurPartySpecies]
- ld [wd265], a
- dec a
- push de
- call CheckCaughtMon
- ld a, [wd265]
- dec a
- call SetSeenAndCaughtMon
- pop de
- pop hl
- push hl
- ld a, [wBattleMode]
- and a
- jr nz, .copywildmonstats
- call Random
- ld b, a
- call Random
- ld c, a
-
-.initializetrainermonstats
- ld a, b
- ld [de], a
- inc de
- ld a, c
- ld [de], a
- inc de
- push hl
- push de
-rept 2
- inc hl
-endr
- call FillPP
- pop de
- pop hl
-rept 4
- inc de
-endr
- ld a, 70
- ld [de], a
- inc de
- xor a
- ld [de], a
- inc de
- ld [de], a
- inc de
- ld [de], a
- inc de
- ld a, [CurPartyLevel]
- ld [de], a
- inc de
- xor a
- ld [de], a
- inc de
- ld [de], a
- inc de
- ld bc, 10
- add hl, bc
- ld a, $1
- ld c, a
- ld b, $0
- call CalcPkmnStatC
- ld a, [$ffb5]
- ld [de], a
- inc de
- ld a, [$ffb6]
- ld [de], a
- inc de
- jr .next2
-
-.copywildmonstats
- ld a, [EnemyMonDVs]
- ld [de], a
- inc de
- ld a, [EnemyMonDVs + 1]
- ld [de], a
- inc de
-
- push hl
- ld hl, EnemyMonPP
- ld b, NUM_MOVES
-.wildmonpploop
- ld a, [hli]
- ld [de], a
- inc de
- dec b
- jr nz, .wildmonpploop
- pop hl
-
- ld a, BASE_HAPPINESS
- ld [de], a
- inc de
- xor a
- ld [de], a
- inc de
- ld [de], a
- inc de
- ld [de], a
- inc de
- ld a, [CurPartyLevel]
- ld [de], a
- inc de
- ld hl, EnemyMonStatus
- ; Copy EnemyMonStatus
- ld a, [hli]
- ld [de], a
- inc de
- ; Copy EnemyMonUnused
- ld a, [hli]
- ld [de], a
- inc de
- ; Copy EnemyMonHP
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hl]
- ld [de], a
- inc de
-
-.next2
- ld a, [wBattleMode]
- dec a
- jr nz, .generatestats
- ld hl, EnemyMonMaxHP
- ld bc, 2*6 ; MaxHP + 5 Stats
- call CopyBytes
- pop hl
- jr .next3
-
-.generatestats
- pop hl
- ld bc, 2*5 ; 5 Stats
- add hl, bc
- ld b, $0 ; if b = 1, then the Stats of the Pkmn are calculated
- ; only the current HP aren't set to MaxHP after this
- call CalcPkmnStats
-
-.next3
- ld a, [MonType]
- and $f
- jr nz, .done
- ld a, [CurPartySpecies]
- cp UNOWN
- jr nz, .done
- ld hl, PartyMon1DVs
- ld a, [PartyCount]
- dec a
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- predef GetUnownLetter
- callab UpdateUnownDex
-
-.done
- scf ; When this function returns, the carry flag indicates success vs failure.
- ret
-; da6d
-
-
-FillPP: ; da6d
- push bc
- ld b, NUM_MOVES
-.loop
- ld a, [hli]
- and a
- jr z, .next
- dec a
- push hl
- push de
- push bc
- ld hl, Moves
- ld bc, MOVE_LENGTH
- call AddNTimes
- ld de, StringBuffer1
- ld a, BANK(Moves)
- call FarCopyBytes
- pop bc
- pop de
- pop hl
- ld a, [StringBuffer1 + MOVE_PP]
-
-.next
- ld [de], a
- inc de
- dec b
- jr nz, .loop
- pop bc
- ret
-; da96
-
-AddTempmonToParty: ; da96
- ld hl, PartyCount
- ld a, [hl]
- cp PARTY_LENGTH
- scf
- ret z
-
- inc a
- ld [hl], a
- ld c, a
- ld b, 0
- add hl, bc
- ld a, [CurPartySpecies]
- ld [hli], a
- ld [hl], $ff
-
- ld hl, PartyMon1Species
- ld a, [PartyCount]
- dec a
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld e, l
- ld d, h
- ld hl, TempMonSpecies
- call CopyBytes
-
- ld hl, PartyMonOT
- ld a, [PartyCount]
- dec a
- call SkipNames
- ld d, h
- ld e, l
- ld hl, OTPartyMonOT
- ld a, [CurPartyMon]
- call SkipNames
- ld bc, NAME_LENGTH
- call CopyBytes
-
- ld hl, PartyMonNicknames
- ld a, [PartyCount]
- dec a
- call SkipNames
- ld d, h
- ld e, l
- ld hl, OTPartyMonNicknames
- ld a, [CurPartyMon]
- call SkipNames
- ld bc, PKMN_NAME_LENGTH
- call CopyBytes
-
- ld a, [CurPartySpecies]
- ld [wNamedObjectIndexBuffer], a
- cp EGG
- jr z, .egg
- dec a
- call SetSeenAndCaughtMon
- ld hl, PartyMon1Happiness
- ld a, [PartyCount]
- dec a
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld [hl], BASE_HAPPINESS
-.egg
-
- ld a, [CurPartySpecies]
- cp UNOWN
- jr nz, .done
- ld hl, PartyMon1DVs
- ld a, [PartyCount]
- dec a
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- predef GetUnownLetter
- callab UpdateUnownDex
- ld a, [wdef4]
- and a
- jr nz, .done
- ld a, [UnownLetter]
- ld [wdef4], a
-.done
-
- and a
- ret
-
-
-SentGetPkmnIntoFromBox: ; db3f
-; Sents/Gets Pkmn into/from Box depending on Parameter
-; wPokemonWithdrawDepositParameter == 0: get Pkmn into Party
-; wPokemonWithdrawDepositParameter == 1: sent Pkmn into Box
-; wPokemonWithdrawDepositParameter == 2: get Pkmn from DayCare
-; wPokemonWithdrawDepositParameter == 3: put Pkmn into DayCare
-
- ld a, BANK(sBoxCount)
- call GetSRAMBank
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jr z, .check_IfPartyIsFull
- cp DAYCARE_WITHDRAW
- jr z, .check_IfPartyIsFull
- cp DAYCARE_DEPOSIT
- ld hl, wBreedMon1Species
- jr z, .breedmon
-
- ; we want to sent a Pkmn into the Box
- ; so check if there's enough space
- ld hl, sBoxCount
- ld a, [hl]
- cp MONS_PER_BOX
- jr nz, .there_is_room
- jp CloseSRAM_And_SetCarryFlag
-
-.check_IfPartyIsFull
- ld hl, PartyCount
- ld a, [hl]
- cp PARTY_LENGTH
- jp z, CloseSRAM_And_SetCarryFlag
-
-.there_is_room
- inc a
- ld [hl], a
- ld c, a
- ld b, 0
- add hl, bc
- ld a, [wPokemonWithdrawDepositParameter]
- cp DAYCARE_WITHDRAW
- ld a, [wBreedMon1Species]
- jr z, .okay1
- ld a, [CurPartySpecies]
-
-.okay1
- ld [hli], a
- ld [hl], $ff
- ld a, [wPokemonWithdrawDepositParameter]
- dec a
- ld hl, PartyMon1Species
- ld bc, PARTYMON_STRUCT_LENGTH
- ld a, [PartyCount]
- jr nz, .okay2
- ld hl, sBoxMon1Species
- ld bc, BOXMON_STRUCT_LENGTH
- ld a, [sBoxCount]
-
-.okay2
- dec a ; PartyCount - 1
- call AddNTimes
-
-.breedmon
- push hl
- ld e, l
- ld d, h
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- ld hl, sBoxMon1Species
- ld bc, BOXMON_STRUCT_LENGTH
- jr z, .okay3
- cp DAYCARE_WITHDRAW
- ld hl, wBreedMon1Species
- jr z, .okay4
- ld hl, PartyMon1Species
- ld bc, PARTYMON_STRUCT_LENGTH
-
-.okay3
- ld a, [CurPartyMon]
- call AddNTimes
-
-.okay4
- ld bc, BOXMON_STRUCT_LENGTH
- call CopyBytes
- ld a, [wPokemonWithdrawDepositParameter]
- cp DAYCARE_DEPOSIT
- ld de, wBreedMon1OT
- jr z, .okay5
- dec a
- ld hl, PartyMonOT
- ld a, [PartyCount]
- jr nz, .okay6
- ld hl, sBoxMonOT
- ld a, [sBoxCount]
-
-.okay6
- dec a
- call SkipNames
- ld d, h
- ld e, l
-
-.okay5
- ld hl, sBoxMonOT
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jr z, .okay7
- ld hl, wBreedMon1OT
- cp DAYCARE_WITHDRAW
- jr z, .okay8
- ld hl, PartyMonOT
-
-.okay7
- ld a, [CurPartyMon]
- call SkipNames
-
-.okay8
- ld bc, NAME_LENGTH
- call CopyBytes
- ld a, [wPokemonWithdrawDepositParameter]
- cp DAYCARE_DEPOSIT
- ld de, wBreedMon1Nick
- jr z, .okay9
- dec a
- ld hl, PartyMonNicknames
- ld a, [PartyCount]
- jr nz, .okay10
- ld hl, sBoxMonNicknames
- ld a, [sBoxCount]
-
-.okay10
- dec a
- call SkipNames
- ld d, h
- ld e, l
-
-.okay9
- ld hl, sBoxMonNicknames
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jr z, .okay11
- ld hl, wBreedMon1Nick
- cp DAYCARE_WITHDRAW
- jr z, .okay12
- ld hl, PartyMonNicknames
-
-.okay11
- ld a, [CurPartyMon]
- call SkipNames
-
-.okay12
- ld bc, PKMN_NAME_LENGTH
- call CopyBytes
- pop hl
-
- ld a, [wPokemonWithdrawDepositParameter]
- cp PC_DEPOSIT
- jr z, .took_out_of_box
- cp DAYCARE_DEPOSIT
- jp z, .CloseSRAM_And_ClearCarryFlag
-
- push hl
- srl a
- add $2
- ld [MonType], a
- predef CopyPkmnToTempMon
- callab CalcLevel
- ld a, d
- ld [CurPartyLevel], a
- pop hl
-
- ld b, h
- ld c, l
- ld hl, MON_LEVEL
- add hl, bc
- ld [hl], a
- ld hl, MON_MAXHP
- add hl, bc
- ld d, h
- ld e, l
- ld hl, MON_EXP + 2
- add hl, bc
-
- push bc
- ld b, $1
- call CalcPkmnStats
- pop bc
-
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jr nz, .CloseSRAM_And_ClearCarryFlag
- ld hl, MON_STATUS
- add hl, bc
- xor a
- ld [hl], a
- ld hl, MON_HP
- add hl, bc
- ld d, h
- ld e, l
- ld a, [CurPartySpecies]
- cp EGG
- jr z, .egg
-rept 2
- inc hl
-endr
- ld a, [hli]
- ld [de], a
- ld a, [hl]
- inc de
- ld [de], a
- jr .CloseSRAM_And_ClearCarryFlag
-
-.egg
- xor a
- ld [de], a
- inc de
- ld [de], a
- jr .CloseSRAM_And_ClearCarryFlag
-
-.took_out_of_box
- ld a, [sBoxCount]
- dec a
- ld b, a
- call Functiondcb6
-
-.CloseSRAM_And_ClearCarryFlag
- call CloseSRAM
- and a
- ret
-; dcb1
-
-CloseSRAM_And_SetCarryFlag: ; dcb1
- call CloseSRAM
- scf
- ret
-; dcb6
-
-
-Functiondcb6: ; dcb6
- ld a, b
- ld hl, sBoxMons
- ld bc, BOXMON_STRUCT_LENGTH
- call AddNTimes
- ld b, h
- ld c, l
- ld hl, MON_PP
- add hl, bc
- push hl
- push bc
- ld de, TempMonPP
- ld bc, NUM_MOVES
- call CopyBytes
- pop bc
- ld hl, MON_MOVES
- add hl, bc
- push hl
- ld de, TempMonMoves
- ld bc, NUM_MOVES
- call CopyBytes
- pop hl
- pop de
-
- ld a, [MenuSelection2]
- push af
- ld a, [MonType]
- push af
- ld b, 0
-.asm_dcec
- ld a, [hli]
- and a
- jr z, .asm_dd18
- ld [TempMonMoves+0], a
- ld a, BOXMON
- ld [MonType], a
- ld a, b
- ld [MenuSelection2], a
- push bc
- push hl
- push de
- callba GetMaxPPOfMove
- pop de
- pop hl
- ld a, [wd265]
- ld b, a
- ld a, [de]
- and %11000000
- add b
- ld [de], a
- pop bc
- inc de
- inc b
- ld a, b
- cp NUM_MOVES
- jr c, .asm_dcec
-
-.asm_dd18
- pop af
- ld [MonType], a
- pop af
- ld [MenuSelection2], a
- ret
-; dd21
-
-
-Functiondd21: ; dd21
- ld a, [wBreedMon1Species]
- ld [CurPartySpecies], a
- ld de, SFX_TRANSACTION
- call PlaySFX
- call WaitSFX
- call Functione698
- ld a, b
- ld [wd002], a
- ld a, e
- ld [CurPartyLevel], a
- xor a
- ld [wPokemonWithdrawDepositParameter], a
- jp Functiondd64
-; dd42
-
-Functiondd42: ; dd42
- ld a, [wBreedMon2Species]
- ld [CurPartySpecies], a
- ld de, SFX_TRANSACTION
- call PlaySFX
- call WaitSFX
- call Functione6b3
- ld a, b
- ld [wd002], a
- ld a, e
- ld [CurPartyLevel], a
- ld a, PC_DEPOSIT
- ld [wPokemonWithdrawDepositParameter], a
- jp Functiondd64
-; dd64
-
-Functiondd64: ; dd64
- ld hl, PartyCount
- ld a, [hl]
- cp PARTY_LENGTH
- jr nz, .room_in_party
- scf
- ret
-
-.room_in_party
- inc a
- ld [hl], a
- ld c, a
- ld b, 0
- add hl, bc
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- ld a, [wBreedMon1Species]
- ld de, wBreedMon1Nick
- jr z, .okay
- ld a, [wBreedMon2Species]
- ld de, wBreedMon2Nick
-
-.okay
- ld [hli], a
- ld [CurSpecies], a
- ld a, $ff
- ld [hl], a
- ld hl, PartyMonNicknames
- ld a, [PartyCount]
- dec a
- call SkipNames
- push hl
- ld h, d
- ld l, e
- pop de
- call CopyBytes
- push hl
- ld hl, PartyMonOT
- ld a, [PartyCount]
- dec a
- call SkipNames
- ld d, h
- ld e, l
- pop hl
- call CopyBytes
- push hl
- call Functionde1a
- pop hl
- ld bc, BOXMON_STRUCT_LENGTH
- call CopyBytes
- call GetBaseData
- call Functionde1a
- ld b, d
- ld c, e
- ld hl, MON_LEVEL
- add hl, bc
- ld a, [CurPartyLevel]
- ld [hl], a
- ld hl, MON_MAXHP
- add hl, bc
- ld d, h
- ld e, l
- ld hl, $a
- add hl, bc
- push bc
- ld b, $1
- call CalcPkmnStats
- ld hl, PartyMon1Moves
- ld a, [PartyCount]
- dec a
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- ld a, $1
- ld [Buffer1], a
- predef FillMoves
- ld a, [PartyCount]
- dec a
- ld [CurPartyMon], a
- callba HealPartyMon
- ld a, [CurPartyLevel]
- ld d, a
- callab CalcExpAtLevel
- pop bc
- ld hl, $8
- add hl, bc
- ld a, [hMultiplicand]
- ld [hli], a
- ld a, [hMultiplicand + 1]
- ld [hli], a
- ld a, [hMultiplicand + 2]
- ld [hl], a
- and a
- ret
-; de1a
-
-Functionde1a: ; de1a
- ld a, [PartyCount]
- dec a
- ld hl, PartyMon1Species
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- ret
-; de2a
-
-Functionde2a: ; de2a
- ld de, wBreedMon1Nick
- call Functionde44
- xor a
- ld [wPokemonWithdrawDepositParameter], a
- jp Functione039
-; de37
-
-Functionde37: ; de37
- ld de, wBreedMon2Nick
- call Functionde44
- xor a
- ld [wPokemonWithdrawDepositParameter], a
- jp Functione039
-; de44
-
-Functionde44: ; de44
- ld a, [CurPartyMon]
- ld hl, PartyMonNicknames
- call SkipNames
- call CopyBytes
- ld a, [CurPartyMon]
- ld hl, PartyMonOT
- call SkipNames
- call CopyBytes
- ld a, [CurPartyMon]
- ld hl, PartyMon1Species
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld bc, BOXMON_STRUCT_LENGTH
- jp CopyBytes
-
-
-SentPkmnIntoBox: ; de6e
-; Sents the Pkmn into one of Bills Boxes
-; the data comes mainly from 'EnemyMon:'
- ld a, BANK(sBoxCount)
- call GetSRAMBank
- ld de, sBoxCount
- ld a, [de]
- cp MONS_PER_BOX
- jp nc, Functiondf42
- inc a
- ld [de], a
-
- ld a, [CurPartySpecies]
- ld [CurSpecies], a
- ld c, a
-.asm_de85
- inc de
- ld a, [de]
- ld b, a
- ld a, c
- ld c, b
- ld [de], a
- inc a
- jr nz, .asm_de85
-
- call GetBaseData
- call ShiftBoxMon
-
- ld hl, PlayerName
- ld de, sBoxMonOT
- ld bc, NAME_LENGTH
- call CopyBytes
-
- ld a, [CurPartySpecies]
- ld [wd265], a
- call GetPokemonName
-
- ld de, sBoxMonNicknames
- ld hl, StringBuffer1
- ld bc, PKMN_NAME_LENGTH
- call CopyBytes
-
- ld hl, EnemyMon
- ld de, sBoxMon1
- ld bc, 1 + 1 + NUM_MOVES ; species + item + moves
- call CopyBytes
-
- ld hl, PlayerID
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hl]
- ld [de], a
- inc de
- push de
- ld a, [CurPartyLevel]
- ld d, a
- callab CalcExpAtLevel
- pop de
- ld a, [hMultiplicand]
- ld [de], a
- inc de
- ld a, [$ffb5]
- ld [de], a
- inc de
- ld a, [$ffb6]
- ld [de], a
- inc de
-
- ; Set all 5 Experience Values to 0
- xor a
- ld b, 2*5
-.asm_dee5
- ld [de], a
- inc de
- dec b
- jr nz, .asm_dee5
-
- 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, BASE_HAPPINESS
- ld [de], a
- inc de
- xor a
- ld [de], a
- inc de
- ld [de], a
- inc de
- ld [de], a
- inc de
- ld a, [CurPartyLevel]
- ld [de], a
- ld a, [CurPartySpecies]
- dec a
- call SetSeenAndCaughtMon
- ld a, [CurPartySpecies]
- cp UNOWN
- jr nz, .asm_df20
- ld hl, sBoxMon1DVs
- predef GetUnownLetter
- callab UpdateUnownDex
-
-.asm_df20
- ld hl, sBoxMon1Moves
- ld de, TempMonMoves
- ld bc, NUM_MOVES
- call CopyBytes
-
- ld hl, sBoxMon1PP
- ld de, TempMonPP
- ld bc, NUM_MOVES
- call CopyBytes
-
- ld b, 0
- call Functiondcb6
-
- call CloseSRAM
- scf
- ret
-; df42
-
-
-Functiondf42: ; df42
- call CloseSRAM
- and a
- ret
-; df47
-
-ShiftBoxMon: ; df47
- ld hl, sBoxMonOT
- ld bc, NAME_LENGTH
- call .asm_df5f
-
- ld hl, sBoxMonNicknames
- ld bc, PKMN_NAME_LENGTH
- call .asm_df5f
-
- ld hl, sBoxMons
- ld bc, BOXMON_STRUCT_LENGTH
-
-.asm_df5f
- ld a, [sBoxCount]
- cp 2
- ret c
-
- push hl
- call AddNTimes
- dec hl
- ld e, l
- ld d, h
- pop hl
-
- ld a, [sBoxCount]
- dec a
- call AddNTimes
- dec hl
-
- push hl
- ld a, [sBoxCount]
- dec a
- ld hl, 0
- call AddNTimes
- ld c, l
- ld b, h
- pop hl
-.loop
- ld a, [hld]
- ld [de], a
- dec de
- dec bc
- ld a, c
- or b
- jr nz, .loop
- ret
-; df8c
-
-GiveEgg:: ; df8c
- ld a, [CurPartySpecies]
- push af
- callab GetPreEvolution
- callab GetPreEvolution
- ld a, [CurPartySpecies]
- dec a
-
-; TryAddMonToParty sets Seen and Caught flags
-; when it is successful. This routine will make
-; sure that we aren't newly setting flags.
- push af
- call CheckCaughtMon
- pop af
- push bc
- call CheckSeenMon
- push bc
-
- call TryAddMonToParty
-
-; If we haven't caught this Pokemon before receiving
-; the Egg, reset the flag that was just set by
-; TryAddMonToParty.
- pop bc
- ld a, c
- and a
- jr nz, .skip_caught_flag
- ld a, [CurPartySpecies]
- dec a
- ld c, a
- ld d, $0
- ld hl, PokedexCaught
- ld b, RESET_FLAG
- predef FlagPredef
-
-.skip_caught_flag
-; If we haven't seen this Pokemon before receiving
-; the Egg, reset the flag that was just set by
-; TryAddMonToParty.
- pop bc
- ld a, c
- and a
- jr nz, .skip_seen_flag
- ld a, [CurPartySpecies]
- dec a
- ld c, a
- ld d, $0
- ld hl, PokedexSeen
- ld b, RESET_FLAG
- predef FlagPredef
-
-.skip_seen_flag
- pop af
- ld [CurPartySpecies], a
- ld a, [PartyCount]
- dec a
- ld bc, PARTYMON_STRUCT_LENGTH
- ld hl, PartyMon1Species
- call AddNTimes
- ld a, [CurPartySpecies]
- ld [hl], a
- ld hl, PartyCount
- ld a, [hl]
- ld b, 0
- ld c, a
- add hl, bc
- ld a, EGG
- ld [hl], a
- ld a, [PartyCount]
- dec a
- ld hl, PartyMonNicknames
- call SkipNames
- ld de, String_Egg
- call CopyName2
- ld a, [PartyCount]
- dec a
- ld hl, PartyMon1Happiness
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld a, [wc2cc]
- bit 1, a
- ld a, $1
- jr nz, .asm_e022
- ld a, [BaseEggSteps]
-
-.asm_e022
- ld [hl], a
- ld a, [PartyCount]
- dec a
- ld hl, PartyMon1HP
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- xor a
- ld [hli], a
- ld [hl], a
- and a
- ret
-; e035
-
-String_Egg: ; e035
- db "EGG@"
-; e039
-
-Functione039: ; e039
- ld hl, PartyCount
-
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jr z, .okay
-
- ld a, BANK(sBoxCount)
- call GetSRAMBank
- ld hl, sBoxCount
-
-.okay
- ld a, [hl]
- dec a
- ld [hli], a
- ld a, [CurPartyMon]
- ld c, a
- ld b, 0
- add hl, bc
- ld e, l
- ld d, h
- inc de
-.asm_e057
- ld a, [de]
- inc de
- ld [hli], a
- inc a
- jr nz, .asm_e057
- ld hl, PartyMonOT
- ld d, PARTY_LENGTH - 1
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jr z, .asm_e06d
- ld hl, sBoxMonOT
- ld d, MONS_PER_BOX - 1
-
-.asm_e06d
- ld a, [CurPartyMon]
- call SkipNames
- ld a, [CurPartyMon]
- cp d
- jr nz, .asm_e07e
- ld [hl], $ff
- jp .asm_60f0
-
-.asm_e07e
- ld d, h
- ld e, l
- ld bc, PKMN_NAME_LENGTH
- add hl, bc
- ld bc, PartyMonNicknames
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jr z, .asm_e090
- ld bc, sBoxMonNicknames
-.asm_e090
- call CopyDataUntil
-
- ld hl, PartyMons
- ld bc, PARTYMON_STRUCT_LENGTH
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jr z, .asm_e0a5
- ld hl, sBoxMons
- ld bc, BOXMON_STRUCT_LENGTH
-
-.asm_e0a5
- ld a, [CurPartyMon]
- call AddNTimes
- ld d, h
- ld e, l
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jr z, .asm_e0bc
- ld bc, BOXMON_STRUCT_LENGTH
- add hl, bc
- ld bc, sBoxMonOT
- jr .asm_e0c3
-
-.asm_e0bc
- ld bc, PARTYMON_STRUCT_LENGTH
- add hl, bc
- ld bc, PartyMonOT
-
-.asm_e0c3
- call CopyDataUntil
- ld hl, PartyMonNicknames
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jr z, .asm_e0d2
- ld hl, sBoxMonNicknames
-
-.asm_e0d2
- ld bc, PKMN_NAME_LENGTH
- ld a, [CurPartyMon]
- call AddNTimes
- ld d, h
- ld e, l
- ld bc, PKMN_NAME_LENGTH
- add hl, bc
- ld bc, PartyMonNicknamesEnd
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jr z, .asm_e0ed
- ld bc, sBoxMonNicknamesEnd
-
-.asm_e0ed
- call CopyDataUntil
-
-.asm_60f0
- ld a, [wPokemonWithdrawDepositParameter]
- and a
- jp nz, CloseSRAM
- ld a, [wLinkMode]
- and a
- ret nz
- ld a, BANK(sPartyMail)
- call GetSRAMBank
- ld hl, PartyCount
- ld a, [CurPartyMon]
- cp [hl]
- jr z, .asm_e131
- ld hl, sPartyMail
- ld bc, MAIL_STRUCT_LENGTH
- call AddNTimes
- push hl
- add hl, bc
- pop de
- ld a, [CurPartyMon]
- ld b, a
-.asm_e11a
- push bc
- push hl
- ld bc, MAIL_STRUCT_LENGTH
- call CopyBytes
- pop hl
- push hl
- ld bc, MAIL_STRUCT_LENGTH
- add hl, bc
- pop de
- pop bc
- inc b
- ld a, [PartyCount]
- cp b
- jr nz, .asm_e11a
-
-.asm_e131
- jp CloseSRAM
-; e134
-
-Functione134: ; e134
- ld a, MON_LEVEL
- call GetPartyParamLocation
- ld a, [hl]
- ld [MON_LEVEL], a ; wow
- ld a, MON_SPECIES
- call GetPartyParamLocation
- ld a, [hl]
- ld [CurSpecies], a
- call GetBaseData
- ld a, MON_MAXHP
- call GetPartyParamLocation
- ld d, h
- ld e, l
- push de
- ld a, MON_EXP + 2
- call GetPartyParamLocation
- ld b, $1
- call CalcPkmnStats
- pop de
- ld a, MON_HP
- call GetPartyParamLocation
- ld a, [de]
- inc de
- ld [hli], a
- ld a, [de]
- ld [hl], a
- ret
-; e167
-
-CalcPkmnStats: ; e167
-; Calculates all 6 Stats of a Pkmn
-; b = 0 or 1
-; 'c' counts from 1-6 and points with 'BaseStats' to the base value
-; results in $ffb5 and $ffb6 are saved in [de]
-
- ld c, $0
-.loop
- inc c
- call CalcPkmnStatC
- ld a, [hMultiplicand + 1]
- ld [de], a
- inc de
- ld a, [hMultiplicand + 2]
- ld [de], a
- inc de
- ld a, c
- cp STAT_SDEF
- jr nz, .loop
- ret
-; e17b
-
-CalcPkmnStatC: ; e17b
-; 'c' is 1-6 and points to the BaseStat
-; 1: HP
-; 2: Attack
-; 3: Defense
-; 4: Speed
-; 5: SpAtk
-; 6: SpDef
- push hl
- push de
- push bc
- ld a, b
- ld d, a
- push hl
- ld hl, BaseStats
- dec hl ; has to be decreased, because 'c' begins with 1
- ld b, $0
- add hl, bc
- ld a, [hl]
- ld e, a
- pop hl
- push hl
- ld a, c
- cp STAT_SDEF
- jr nz, .not_spdef
-rept 2
- dec hl
-endr
-
-.not_spdef
- sla c
- ld a, d
- and a
- jr z, .SkipSqrt
- add hl, bc
- push de
- ld a, [hld]
- ld e, a
- ld d, [hl]
- callba GetSquareRoot
- pop de
-
-.SkipSqrt
- srl c
- pop hl
- push bc
- ld bc, MON_DVS - MON_HP_EXP + 1
- add hl, bc
- pop bc
- ld a, c
- cp STAT_ATK
- jr z, .Attack
- cp STAT_DEF
- jr z, .Defense
- cp STAT_SPD
- jr z, .Speed
- cp STAT_SATK
- jr z, .Special
- cp STAT_SDEF
- jr z, .Special
-; DV_HP = (DV_ATK & 1) << 3 + (DV_DEF & 1) << 2 + (DV_SPD & 1) << 1 + (DV_SPC & 1)
- push bc
- ld a, [hl]
- swap a
- and $1
-rept 3
- add a
-endr
- ld b, a
- ld a, [hli]
- and $1
-rept 2
- add a
-endr
- add b
- ld b, a
- ld a, [hl]
- swap a
- and $1
- add a
- add b
- ld b, a
- ld a, [hl]
- and $1
- add b
- pop bc
- jr .GotDV
-
-.Attack
- ld a, [hl]
- swap a
- and $f
- jr .GotDV
-
-.Defense
- ld a, [hl]
- and $f
- jr .GotDV
-
-.Speed
- inc hl
- ld a, [hl]
- swap a
- and $f
- jr .GotDV
-
-.Special
- inc hl
- ld a, [hl]
- and $f
-
-.GotDV
- ld d, 0
- add e
- ld e, a
- jr nc, .no_overflow_1
- inc d
-
-.no_overflow_1
- sla e
- rl d
- srl b
- srl b
- ld a, b
- add e
- jr nc, .no_overflow_2
- inc d
-
-.no_overflow_2
- ld [hMultiplicand + 2], a
- ld a, d
- ld [hMultiplicand + 1], a
- xor a
- ld [hMultiplicand + 0], a
- ld a, [CurPartyLevel]
- ld [hMultiplier], a
- call Multiply
- ld a, [hProduct + 1]
- ld [hDividend + 0], a
- ld a, [hProduct + 2]
- ld [hDividend + 1], a
- ld a, [hProduct + 3]
- ld [hDividend + 2], a
- ld a, 100
- ld [hDivisor], a
- ld a, 3
- ld b, a
- call Divide
- ld a, c
- cp STAT_HP
- ld a, 5
- jr nz, .not_hp
- ld a, [CurPartyLevel]
- ld b, a
- ld a, [hQuotient + 2]
- add b
- ld [hMultiplicand + 2], a
- jr nc, .no_overflow_3
- ld a, [hQuotient + 1]
- inc a
- ld [hMultiplicand + 1], a
-
-.no_overflow_3
- ld a, 10
-
-.not_hp
- ld b, a
- ld a, [hQuotient + 2]
- add b
- ld [hMultiplicand + 2], a
- jr nc, .no_overflow_4
- ld a, [hQuotient + 1]
- inc a
- ld [hMultiplicand + 1], a
-
-.no_overflow_4
- ld a, [hQuotient + 1]
- cp (1000 / $100) + 1
- jr nc, .max_stat
- cp 1000 / $100
- jr c, .stat_value_okay
- ld a, [hQuotient + 2]
- cp 1000 % $100
- jr c, .stat_value_okay
-
-.max_stat
- ld a, 999 / $100
- ld [hMultiplicand + 1], a
- ld a, 999 % $100
- ld [hMultiplicand + 2], a
-
-.stat_value_okay
- pop bc
- pop de
- pop hl
- ret
-; e277
-
-GivePoke:: ; e277
- push de
- push bc
- xor a ; PARTYMON
- ld [MonType], a
- call TryAddMonToParty
- jr nc, .failed
- ld hl, PartyMonNicknames
- ld a, [PartyCount]
- dec a
- ld [CurPartyMon], a
- call SkipNames
- ld d, h
- ld e, l
- pop bc
- ld a, b
- ld b, $0
- push bc
- push de
- push af
- ld a, [CurItem]
- and a
- jr z, .done
- ld a, [CurPartyMon]
- ld hl, PartyMon1Item
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld a, [CurItem]
- ld [hl], a
- jr .done
-
-.failed
- ld a, [CurPartySpecies]
- ld [TempEnemyMonSpecies], a
- callab LoadEnemyMon
- call SentPkmnIntoBox
- jp nc, Functione3d4
- ld a, $2
- ld [MonType], a
- xor a
- ld [CurPartyMon], a
- ld de, wd050
- pop bc
- ld a, b
- ld b, $1
- push bc
- push de
- push af
- ld a, [CurItem]
- and a
- jr z, .done
- ld a, [CurItem]
- ld [sBoxMon1Item], a
-
-.done
- ld a, [CurPartySpecies]
- ld [wd265], a
- ld [TempEnemyMonSpecies], a
- call GetPokemonName
- ld hl, StringBuffer1
- ld de, wd050
- ld bc, PKMN_NAME_LENGTH
- call CopyBytes
- pop af
- and a
- jp z, .asm_e390
- pop de
- pop bc
- pop hl
- push bc
- push hl
- ld a, [ScriptBank]
- call GetFarHalfword
- ld bc, PKMN_NAME_LENGTH
- ld a, [ScriptBank]
- call FarCopyBytes
- pop hl
-rept 2
- inc hl
-endr
- ld a, [ScriptBank]
- call GetFarHalfword
- pop bc
- ld a, b
- and a
- push de
- push bc
- jr nz, .asm_e35e
-
- push hl
- ld a, [CurPartyMon]
- ld hl, PartyMonOT
- call SkipNames
- ld d, h
- ld e, l
- pop hl
-.otnameloop
- ld a, [ScriptBank]
- call GetFarByte
- ld [de], a
- inc hl
- inc de
- cp "@"
- jr nz, .otnameloop
- ld a, [ScriptBank]
- call GetFarByte
- ld b, a
- push bc
- ld a, [CurPartyMon]
- ld hl, PartyMon1ID
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld a, 01001 / $100
- ld [hli], a
- ld [hl], 01001 % $100
- pop bc
- callba SetGiftPartyMonCaughtData
- jr .skip_nickname
-
-.asm_e35e
- ld a, BANK(sBoxMonOT)
- call GetSRAMBank
- ld de, sBoxMonOT
-.loop
- ld a, [ScriptBank]
- call GetFarByte
- ld [de], a
- inc hl
- inc de
- cp "@"
- jr nz, .loop
- ld a, [ScriptBank]
- call GetFarByte
- ld b, a
- ld hl, sBoxMon1ID
- call Random
- ld [hli], a
- call Random
- ld [hl], a
- call CloseSRAM
- callba SetGiftBoxMonCaughtData
- jr .skip_nickname
-
-.asm_e390
- pop de
- pop bc
- push bc
- push de
- ld a, b
- and a
- jr z, .asm_e3a0
- callba SetBoxMonCaughtData
- jr .asm_e3a6
-
-.asm_e3a0
- callba SetCaughtData
-
-.asm_e3a6
- callba GiveANickname_YesNo
- pop de
- jr c, .skip_nickname
- call InitNickname
-
-.skip_nickname
- pop bc
- pop de
- ld a, b
- and a
- ret z
- ld hl, TextJump_WasSentToBillsPC
- call PrintText
- ld a, BANK(sBoxMonNicknames)
- call GetSRAMBank
- ld hl, wd050
- ld de, sBoxMonNicknames
- ld bc, PKMN_NAME_LENGTH
- call CopyBytes
- call CloseSRAM
- ld b, $1
- ret
-; e3d4
-
-Functione3d4: ; e3d4
- pop bc
- pop de
- ld b, $2
- ret
-; e3d9
-
-
-TextJump_WasSentToBillsPC: ; 0xe3d9
- ; was sent to BILL's PC.
- text_jump Text_WasSentToBillsPC
- db "@"
-; 0xe3de
-
-InitNickname: ; e3de
- push de
- call LoadStandardMenuDataHeader
- call DisableSpriteUpdates
- pop de
- push de
- ld b, $0
- callba NamingScreen
- pop hl
- ld de, StringBuffer1
- call InitName
- ld a, $4 ; XXX could this be in bank 4 in pokered?
- ld hl, ExitAllMenus
- rst FarCall
- ret
-; e3fd
+INCLUDE "engine/player_step.asm"
+INCLUDE "engine/anim_hp_bar.asm"
+INCLUDE "engine/move_mon.asm"
_BillsPC: ; e3fd
call .CheckCanUsePC
@@ -8444,7 +4870,7 @@ _BillsPC: ; e3fd
; 0xe43f
.LogOut: ; e43f (3:643f)
- call ReturnToCallingMenu
+ call CloseSubmenu
ret
.UseBillsPC: ; e443 (3:6443)
@@ -8455,7 +4881,7 @@ _BillsPC: ; e3fd
ld [wMenuCursorBuffer], a
call SetPalettes
xor a
- ld [wcf76], a
+ ld [wWhichIndexSet], a
ld [hBGMapMode], a
call DoNthMenu
jr c, .cancel
@@ -8468,7 +4894,7 @@ _BillsPC: ; e3fd
ld a, b
jr nc, .loop
.cancel
- call WriteBackup
+ call CloseWindow
ret
; e46f (3:646f)
@@ -8484,7 +4910,7 @@ _BillsPC: ; e3fd
db $80 ; flags
db 0 ; items
dw .items
- dw Function1f79
+ dw PlaceMenuStrings
dw .strings
; 0xe47f
@@ -8534,7 +4960,7 @@ BillsPC_MovePKMNMenu: ; e4cd
call ClearPCItemScreen
.quit
- call WriteBackup
+ call CloseWindow
and a
ret
; e4f9
@@ -8550,7 +4976,7 @@ BillsPC_DepositMenu: ; e4fe (3:64fe)
callba _DepositPKMN
call ReturnToMapFromSubmenu
call ClearPCItemScreen
- call WriteBackup
+ call CloseWindow
and a
ret
; e512 (3:6512)
@@ -8589,7 +5015,6 @@ Functione512: ; unused
db "@"
; 0xe538
-
CheckCurPartyMonFainted: ; e538
ld hl, PartyMon1HP
ld de, PARTYMON_STRUCT_LENGTH
@@ -8620,13 +5045,12 @@ CheckCurPartyMonFainted: ; e538
ret
; e559
-
BillsPC_WithdrawMenu: ; e559 (3:6559)
call LoadStandardMenuDataHeader
callba _WithdrawPKMN
call ReturnToMapFromSubmenu
call ClearPCItemScreen
- call WriteBackup
+ call CloseWindow
and a
ret
; e56d (3:656d)
@@ -8672,18 +5096,18 @@ ClearPCItemScreen: ; e58b
hlcoord 0,12
lb bc, 4, 18
call TextBox
- call Function3200
+ call WaitBGMap2
call SetPalettes ; load regular palettes?
ret
; 0xe5bb
-Functione5bb: ; e5bb
+CopyBoxmonToTempMon: ; e5bb
ld a, [CurPartyMon]
ld hl, sBoxMon1Species
- ld bc, $20
+ ld bc, BOXMON_STRUCT_LENGTH
call AddNTimes
ld de, TempMonSpecies
- ld bc, $20
+ ld bc, BOXMON_STRUCT_LENGTH
ld a, BANK(sBoxMon1Species)
call GetSRAMBank
call CopyBytes
@@ -8694,9 +5118,9 @@ Functione5bb: ; e5bb
Functione5d9: ; unreferenced
ld a, [wCurBox]
cp b
- jr z, .asm_e5f1
+ jr z, .same_box
ld a, b
- ld hl, Unknown_e66e
+ ld hl, .BoxAddrs
ld bc, 3
call AddNTimes
ld a, [hli]
@@ -8705,30 +5129,30 @@ Functione5d9: ; unreferenced
ld h, [hl]
ld l, a
pop af
- jr .asm_e5f6
+ jr .okay
-.asm_e5f1
+.same_box
ld a, BANK(sBoxCount)
ld hl, sBoxCount
-.asm_e5f6
+.okay
call GetSRAMBank
ld a, [hl]
- ld bc, $16
+ ld bc, 1 + MONS_PER_BOX + 1
add hl, bc
ld b, a
ld c, $0
ld de, wc608
ld a, b
and a
- jr z, .asm_e66a
-.asm_e608
+ jr z, .empty_box
+.loop
push hl
push bc
ld a, c
ld bc, 0
add hl, bc
- ld bc, $20
+ ld bc, BOXMON_STRUCT_LENGTH
call AddNTimes
ld a, [hl]
ld [de], a
@@ -8737,33 +5161,36 @@ Functione5d9: ; unreferenced
call GetBaseData
pop bc
pop hl
+
push hl
push bc
ld a, c
- ld bc, $35c
+ ld bc, MONS_PER_BOX * (BOXMON_STRUCT_LENGTH + NAME_LENGTH)
add hl, bc
call SkipNames
call CopyBytes
pop bc
pop hl
+
push hl
push bc
ld a, c
- ld bc, $1f
+ ld bc, MON_LEVEL
add hl, bc
- ld bc, $20
+ ld bc, BOXMON_STRUCT_LENGTH
call AddNTimes
ld a, [hl]
ld [de], a
inc de
pop bc
pop hl
+
push hl
push bc
ld a, c
- ld bc, $15
+ ld bc, MON_DVS
add hl, bc
- ld bc, $20
+ ld bc, BOXMON_STRUCT_LENGTH
call AddNTimes
ld a, [hli]
and $f0
@@ -8776,24 +5203,23 @@ Functione5d9: ; unreferenced
ld a, [BaseGender]
cp b
ld a, $1
- jr c, .asm_e662
+ jr c, .okay2
xor a
-
-.asm_e662
+.okay2
ld [de], a
inc de
pop bc
pop hl
+
inc c
dec b
- jr nz, .asm_e608
-
-.asm_e66a
+ jr nz, .loop
+.empty_box
call CloseSRAM
ret
; e66e
-Unknown_e66e: ; e66e
+.BoxAddrs: ; e66e
dba sBox1
dba sBox2
dba sBox3
@@ -8810,10 +5236,10 @@ Unknown_e66e: ; e66e
dba sBox14
; e698
-Functione698: ; e698
+GetBreedMon1LevelGrowth: ; e698
ld hl, wBreedMon1Stats
ld de, TempMon
- ld bc, $20
+ ld bc, BOXMON_STRUCT_LENGTH
call CopyBytes
callab CalcLevel
ld a, [wBreedMon1Level]
@@ -8825,10 +5251,10 @@ Functione698: ; e698
ret
; e6b3
-Functione6b3: ; e6b3
+GetBreedMon2LevelGrowth: ; e6b3
ld hl, wBreedMon2Stats
ld de, TempMon
- ld bc, $20
+ ld bc, BOXMON_STRUCT_LENGTH
call CopyBytes
callab CalcLevel
ld a, [wBreedMon2Level]
@@ -8840,7 +5266,6 @@ Functione6b3: ; e6b3
ret
; e6ce
-
BugContest_SetCaughtContestMon: ; e6ce
ld a, [wContestMon]
and a
@@ -8883,10 +5308,8 @@ BugContest_SetCaughtContestMon: ; e6ce
db "@"
; 0xe722
-
INCLUDE "items/item_effects.asm"
-
GetPokeBallWobble: ; f971 (3:7971)
; Returns whether a Poke Ball will wobble in the catch animation.
; Whether a Pokemon is caught is determined beforehand.
@@ -8908,12 +5331,12 @@ GetPokeBallWobble: ; f971 (3:7971)
cp 3 + 1
jr z, .finished
- ld a, [wc64e]
+ ld a, [wWildMon]
and a
ld c, 0 ; next
jr nz, .done
- ld hl, WobbleChances
+ ld hl, .WobbleProbabilities
ld a, [Buffer1]
ld b, a
.loop
@@ -8933,7 +5356,7 @@ GetPokeBallWobble: ; f971 (3:7971)
jr .done
.finished
- ld a, [wc64e]
+ ld a, [wWildMon]
and a
ld c, 1 ; caught
jr nz, .done
@@ -8949,8 +5372,9 @@ GetPokeBallWobble: ; f971 (3:7971)
ret
; f9ba (3:79ba)
-WobbleChances: ; f9ba
+.WobbleProbabilities: ; f9ba
; catch rate, chance of wobbling / 255
+; nLeft/255 = (nRight/255) ** 4
db 1, 63
db 2, 75
db 3, 84
@@ -8977,36 +5401,34 @@ WobbleChances: ; f9ba
db 255, 255
; f9ea
-
KnowsMove: ; f9ea
ld a, MON_MOVES
call GetPartyParamLocation
- ld a, [wd262]
+ ld a, [wPutativeTMHMMove]
ld b, a
ld c, NUM_MOVES
-.asm_f9f5
+.loop
ld a, [hli]
cp b
- jr z, .asm_f9fe
+ jr z, .knows_move
dec c
- jr nz, .asm_f9f5
+ jr nz, .loop
and a
ret
-.asm_f9fe
- ld hl, UnknownText_0xfa06
+.knows_move
+ ld hl, .Text_knows
call PrintText
scf
ret
; fa06
-UnknownText_0xfa06: ; 0xfa06
+.Text_knows: ; 0xfa06
; knows @ .
text_jump UnknownText_0x1c5ea8
db "@"
; 0xfa0b
-
SECTION "bank4", ROMX, BANK[$4]
INCLUDE "engine/pack.asm"
@@ -9044,9 +5466,9 @@ Special_GiveParkBalls: ; 135db
BugCatchingContestBattleScript:: ; 0x135eb
writecode VAR_BATTLETYPE, BATTLETYPE_CONTEST
- battlecheck
+ randomwildmon
startbattle
- returnafterbattle
+ reloadmapafterbattle
copybytetovar wParkBallsRemaining
iffalse BugCatchingContestOutOfBallsScript
end
@@ -9054,40 +5476,40 @@ BugCatchingContestBattleScript:: ; 0x135eb
BugCatchingContestOverScript:: ; 0x135f8
playsound SFX_ELEVATOR_END
- loadfont
- writetext UnknownText_0x1360f
- closetext
+ opentext
+ writetext BugCatchingContestText_BeeepTimesUp
+ waitbutton
jump BugCatchingContestReturnToGateScript
; 0x13603
BugCatchingContestOutOfBallsScript: ; 0x13603
playsound SFX_ELEVATOR_END
- loadfont
- writetext UnknownText_0x13614
- closetext
+ opentext
+ writetext BugCatchingContestText_ContestIsOver
+ waitbutton
BugCatchingContestReturnToGateScript: ; 0x1360b
- loadmovesprites
+ closetext
jumpstd bugcontestresultswarp
; 0x1360f
-UnknownText_0x1360f: ; 0x1360f
+BugCatchingContestText_BeeepTimesUp: ; 0x1360f
; ANNOUNCER: BEEEP! Time's up!
text_jump UnknownText_0x1bd2ca
db "@"
; 0x13614
-UnknownText_0x13614: ; 0x13614
+BugCatchingContestText_ContestIsOver: ; 0x13614
; ANNOUNCER: The Contest is over!
text_jump UnknownText_0x1bd2e7
db "@"
; 0x13619
RepelWoreOffScript:: ; 0x13619
- loadfont
+ opentext
writetext .text
+ waitbutton
closetext
- loadmovesprites
end
; 0x13620
@@ -9097,8 +5519,8 @@ RepelWoreOffScript:: ; 0x13619
db "@"
; 0x13625
-SignpostItemScript:: ; 0x13625
- loadfont
+HiddenItemScript:: ; 0x13625
+ opentext
copybytetovar EngineBuffer3
itemtotext 0, 0
writetext .found_text
@@ -9111,12 +5533,12 @@ SignpostItemScript:: ; 0x13625
; 0x1363e
.bag_full: ; 0x1363e
- keeptextopen
+ buttonsound
writetext .no_room_text
- closetext
+ waitbutton
.finish: ; 13643
- loadmovesprites
+ closetext
end
; 0x13645
@@ -9141,7 +5563,6 @@ SetMemEvent: ; 1364f
call EventFlagAction
ret
-
CheckFacingTileForStd:: ; 1365b
; Checks to see if the tile you're facing has a std script associated with it. If so, executes the script and returns carry.
ld a, c
@@ -9177,7 +5598,7 @@ CheckFacingTileForStd:: ; 1365b
dbw $97, tv
dbw $9d, window
dbw $9f, incenseburner
- db $ff ; end
+ db -1 ; end
; 1369a
Script_JumpStdFromRAM: ; 0x1369a
@@ -9252,375 +5673,35 @@ root set root+1
endr
; 13d96
-
SECTION "bank5", ROMX, BANK[$5]
-
-StopRTC: ; Unreferenced???
- ld a, SRAM_ENABLE
- ld [MBC3SRamEnable], a
- call LatchClock
- ld a, RTC_DH
- ld [MBC3SRamBank], a
- ld a, [MBC3RTC]
- set 6, a ; halt
- ld [MBC3RTC], a
- call CloseSRAM
- ret
-; 14019
-
-StartRTC: ; 14019
- ld a, SRAM_ENABLE
- ld [MBC3SRamEnable], a
- call LatchClock
- ld a, RTC_DH
- ld [MBC3SRamBank], a
- ld a, [MBC3RTC]
- res 6, a ; halt
- ld [MBC3RTC], a
- call CloseSRAM
- ret
-; 14032
-
-
-GetTimeOfDay:: ; 14032
-; get time of day based on the current hour
- ld a, [hHours] ; hour
- ld hl, TimesOfDay
-
-.check
-; if we're within the given time period,
-; get the corresponding time of day
- cp [hl]
- jr c, .match
-; else, get the next entry
-rept 2
- inc hl
-endr
-; try again
- jr .check
-
-.match
-; get time of day
- inc hl
- ld a, [hl]
- ld [TimeOfDay], a
- ret
-; 14044
-
-TimesOfDay: ; 14044
-; hours for the time of day
-; 04-09 morn | 10-17 day | 18-03 nite
- db 04, NITE
- db 10, MORN
- db 18, DAY
- db 24, NITE
- db -1, MORN
-; 1404e
-
-Unknown_1404e: ; Unreferenced
- db 20, 2
- db 40, 0
- db 60, 1
- db -1, 0
-; 14056
-
-
-StageRTCTimeForSave: ; 14056
- call UpdateTime
- ld hl, wRTC
- ld a, [CurDay]
- ld [hli], a
- ld a, [hHours]
- ld [hli], a
- ld a, [hMinutes]
- ld [hli], a
- ld a, [hSeconds]
- ld [hli], a
- ret
-; 1406a
-
-SaveRTC: ; 1406a
- ld a, $a
- ld [MBC3SRamEnable], a
- call LatchClock
- ld hl, MBC3RTC
- ld a, $c
- ld [MBC3SRamBank], a
- res 7, [hl]
- ld a, BANK(sRTCStatusFlags)
- ld [MBC3SRamBank], a
- xor a
- ld [sRTCStatusFlags], a
- call CloseSRAM
- ret
-; 14089
-
-
-
-StartClock:: ; 14089
- call GetClock
- call Function1409b
- call FixDays
- jr nc, .skip_set
- ; bit 5: Day count exceeds 139
- ; bit 6: Day count exceeds 255
- call RecordRTCStatus ; set flag on sRTCStatusFlags
-
-.skip_set
- call StartRTC
- ret
-; 1409b
-
-Function1409b: ; 1409b
- ld hl, hRTCDayHi
- bit 7, [hl]
- jr nz, .set_bit_7
- bit 6, [hl]
- jr nz, .set_bit_7
- xor a
- ret
-
-.set_bit_7
- ; Day count exceeds 16383
- ld a, %10000000
- call RecordRTCStatus ; set bit 7 on sRTCStatusFlags
- ret
-; 140ae
-
-Function140ae: ; 140ae
- call CheckRTCStatus
- ld c, a
- and %11000000 ; Day count exceeded 255 or 16383
- jr nz, .time_overflow
-
- ld a, c
- and %00100000 ; Day count exceeded 139
- jr z, .dont_update
-
- call UpdateTime
- ld a, [wRTC + 0]
- ld b, a
- ld a, [CurDay]
- cp b
- jr c, .dont_update
-
-.time_overflow
- callba ClearDailyTimers
- callba Function170923
-; mobile
- ld a, $5
- call GetSRAMBank
- ld a, [$aa8c]
- inc a
- ld [$aa8c], a
- ld a, [$b2fa]
- inc a
- ld [$b2fa], a
- call CloseSRAM
- ret
-
-.dont_update
- xor a
- ret
-; 140ed
-
-
-
-Function140ed:: ; 140ed
- call GetClock
- call FixDays
- ld hl, hRTCSeconds
- ld de, StartSecond
-
- ld a, [StringBuffer2 + 3]
- sub [hl]
- dec hl
- jr nc, .okay_secs
- add 60
-.okay_secs
- ld [de], a
- dec de
-
- ld a, [StringBuffer2 + 2]
- sbc [hl]
- dec hl
- jr nc, .okay_mins
- add 60
-.okay_mins
- ld [de], a
- dec de
-
- ld a, [StringBuffer2 + 1]
- sbc [hl]
- dec hl
- jr nc, .okay_hrs
- add 24
-.okay_hrs
- ld [de], a
- dec de
-
- ld a, [StringBuffer2]
- sbc [hl]
- dec hl
- jr nc, .okay_days
- add 140
- ld c, 7
- call SimpleDivide
-
-.okay_days
- ld [de], a
- ret
-; 1412a
-
+INCLUDE "engine/rtc.asm"
INCLUDE "engine/overworld.asm"
-
-Function1499a:: ; 1499a
- ld a, [PlayerNextTile]
- cp $60
- jr z, .warp
- cp $68
- jr z, .warp
- and $f0
- cp $70
- jr z, .warp
- and a
- ret
-
-.warp
- scf
- ret
-; 149af
-
-Function149af:: ; 149af
- ld a, [PlayerNextTile]
- cp $70
- jr z, .not_warp
- cp $76
- jr z, .not_warp
- cp $78
- jr z, .not_warp
- cp $7e
- jr z, .not_warp
- scf
- ret
-
-.not_warp
- xor a
- ret
-; 149c6
-
-CheckWarpCollision: ; 149c6
- ld de, 1
- ld hl, .blocks
- ld a, [PlayerNextTile]
- call IsInArray
- ret
-; 149d3
-
-.blocks: ; 149d3
- db $71 ; door
- db $79
- db $7a ; stairs
- db $73
- db $7b ; cave entrance
- db $74
- db $7c ; warp pad
- db $75
- db $7d
- db -1
-; 149dd
-
-CheckGrassCollision:: ; 149dd
- ld a, [PlayerNextTile]
- ld hl, .blocks
- ld de, 1
- call IsInArray
- ret
-; 149ea
-
-.blocks: ; 149ea
- db $08
- db $18 ; tall grass
- db $14 ; tall grass
- db $28
- db $29
- db $48
- db $49
- db $4a
- db $4b
- db $4c
- db -1
-; 149f5
-
-CheckCutCollision: ; 149f5
- ld a, c
- ld hl, .blocks
- ld de, 1
- call IsInArray
- ret
-; 14a00
-
-.blocks: ; 14a00
- db $12 ; cut tree
- db $1a ; cut tree
- db $10 ; tall grass
- db $18 ; tall grass
- db $14 ; tall grass
- db $1c ; tall grass
- db -1
-; 14a07
-
-Function14a07:: ; 14a07
- ld a, [PlayerNextTile]
- ld de, $1f
- cp $71 ; door
- ret z
- ld de, $13
- cp $7c ; warp pad
- ret z
- ld de, $23
- ret
-; 14a1a
-
+INCLUDE "engine/tile_events.asm"
INCLUDE "engine/save.asm"
-
INCLUDE "engine/spawn_points.asm"
-
INCLUDE "engine/map_setup.asm"
-
INCLUDE "engine/pokecenter_pc.asm"
-
INCLUDE "engine/mart.asm"
-
INCLUDE "engine/money.asm"
-
INCLUDE "items/marts.asm"
-
INCLUDE "event/mom.asm"
-
INCLUDE "event/daycare.asm"
-
INCLUDE "event/photo.asm"
-
INCLUDE "engine/breeding/egg.asm"
SECTION "Tileset Data 1", ROMX, BANK[TILESETS_1]
INCLUDE "tilesets/data_1.asm"
-
SECTION "Roofs", ROMX, BANK[ROOFS]
INCLUDE "tilesets/roofs.asm"
-
SECTION "Tileset Data 2", ROMX, BANK[TILESETS_2]
INCLUDE "tilesets/data_2.asm"
-
-
SECTION "bank8", ROMX, BANK[$8]
INCLUDE "engine/clock_reset.asm"
@@ -9629,7 +5710,6 @@ SECTION "Tileset Data 3", ROMX, BANK[TILESETS_3]
INCLUDE "tilesets/data_3.asm"
-
SECTION "bank9", ROMX, BANK[$9]
StringBufferPointers:: ; 24000
@@ -9644,263 +5724,6 @@ StringBufferPointers:: ; 24000
INCLUDE "engine/menu.asm"
-_BackUpTiles:: ; 24374
- ld a, [rSVBK]
- push af
- ld a, $7
- ld [rSVBK], a
-
- ld hl, wcf71
- ld e, [hl]
- inc hl
- ld d, [hl]
- push de
-
- ld b, $10
- ld hl, wMenuFlags
-.loop
- ld a, [hli]
- ld [de], a
- dec de
- dec b
- jr nz, .loop
-
-; If bit 6 or 7 of the menu flags is set, set bit 0 of the address
-; at 7:[wcf71], and draw the menu using the coordinates from the header.
-; Otherwise, reset bit 0 of 7:[wcf71].
- ld a, [wMenuFlags]
- bit 6, a
- jr nz, .bit_6
- bit 7, a
- jr z, .not_bit_7
-
-.bit_6
- ld hl, wcf71
- ld a, [hli]
- ld h, [hl]
- ld l, a
- set 0, [hl]
- call MenuBoxCoord2Tile
- call .copy
- call MenuBoxCoord2Attr
- call .copy
- jr .done
-
-.not_bit_7
- pop hl ; last-pushed register was de
- push hl
- ld a, [hld]
- ld l, [hl]
- ld h, a
- res 0, [hl]
-
-.done
- pop hl
- call .ret ; empty function
- ld a, h
- ld [de], a
- dec de
- ld a, l
- ld [de], a
- dec de
- ld hl, wcf71
- ld [hl], e
- inc hl
- ld [hl], d
-
- pop af
- ld [rSVBK], a
- ld hl, wcf78
- inc [hl]
- ret
-; 243cd
-
-.copy: ; 243cd
- call GetMenuBoxDims
- inc b
- inc c
- call .ret ; empty function
-
-.row
- push bc
- push hl
-
-.col
- ld a, [hli]
- ld [de], a
- dec de
- dec c
- jr nz, .col
-
- pop hl
- ld bc, SCREEN_WIDTH
- add hl, bc
- pop bc
- dec b
- jr nz, .row
-
- ret
-; 243e7
-
-.ret: ; 243e7
- ret
-; 243e8
-
-Function243e8:: ; 243e8
- xor a
- ld [hBGMapMode], a
-
- ld a, [rSVBK]
- push af
- ld a, $7
- ld [rSVBK], a
-
- call Function1c7e
- ld a, l
- or h
- jp z, Function2445d
- ld a, l
- ld [wcf71], a
- ld a, h
- ld [wcf72], a
- call Function1c47
- ld a, [wMenuFlags]
- bit 0, a
- jr z, .next
- ld d, h
- ld e, l
- call RestoreTileBackup
-
-.next
- call Function1c7e
- ld a, h
- or l
- jr z, .done
- call Function1c47
-
-.done
- pop af
- ld [rSVBK], a
- ld hl, wcf78
- dec [hl]
- ret
-; 24423
-
-
-Function24423: ; 24423
- ld a, [VramState]
- bit 0, a
- ret z
- xor a
- call GetSRAMBank
- hlcoord 0, 0
- ld de, sScratch
- ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
- call CopyBytes
- call CloseSRAM
- call OverworldTextModeSwitch
- xor a
- call GetSRAMBank
- ld hl, sScratch
- decoord 0, 0
- ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
-.asm_2444c
- ld a, [hl]
- cp $61
- jr c, .asm_24452
- ld [de], a
-
-.asm_24452
- inc hl
- inc de
- dec bc
- ld a, c
- or b
- jr nz, .asm_2444c
- call CloseSRAM
- ret
-; 2445d
-
-Function2445d: ; 2445d
- ld hl, UnknownText_0x24468
- call PrintText
- call WaitBGMap
-.asm_24466
- jr .asm_24466
-; 24468
-
-UnknownText_0x24468: ; 24468
- text_jump UnknownText_0x1c46b7
- db "@"
-; 2446d
-
-Function2446d:: ; 2446d
- ld a, [wMenuData2Flags]
- ld b, a
- ld hl, wcfa1
- ld a, [wMenuBorderTopCoord]
- inc a
- bit 6, b
- jr nz, .asm_2447d
- inc a
-
-.asm_2447d
- ld [hli], a
- ld a, [wMenuBorderLeftCoord]
- inc a
- ld [hli], a
- ld a, [wMenuData2Items]
- ld [hli], a
- ld a, $1
- ld [hli], a
- ld [hl], $0
- bit 5, b
- jr z, .asm_24492
- set 5, [hl]
-
-.asm_24492
- ld a, [wMenuFlags]
- bit 4, a
- jr z, .asm_2449b
- set 6, [hl]
-
-.asm_2449b
- inc hl
- xor a
- ld [hli], a
- ld a, $20
- ld [hli], a
- ld a, $1
- bit 0, b
- jr nz, .asm_244a9
- add $2
-
-.asm_244a9
- ld [hli], a
- ld a, [wMenuCursorBuffer]
- and a
- jr z, .asm_244b7
- ld c, a
- ld a, [wMenuData2Items]
- cp c
- jr nc, .asm_244b9
-
-.asm_244b7
- ld c, $1
-
-.asm_244b9
- ld [hl], c
- inc hl
- ld a, $1
- ld [hli], a
- xor a
-rept 3
- ld [hli], a
-endr
- ret
-; 244c3
-
-
UpdateItemDescription: ; 0x244c3
ld a, [MenuSelection]
ld [CurSpecies], a
@@ -9917,7 +5740,7 @@ UpdateItemDescription: ; 0x244c3
; 0x244e3
Pokepic:: ; 244e3
- ld hl, MenuDataHeader_0x24547
+ ld hl, PokepicMenuDataHeader
call CopyMenuDataHeader
call MenuBox
call UpdateSprites
@@ -9946,8 +5769,8 @@ Pokepic:: ; 244e3
ret
; 24528
-PokepicYesOrNo:: ; 24528
- ld hl, MenuDataHeader_0x24547
+ClosePokepic:: ; 24528
+ ld hl, PokepicMenuDataHeader
call CopyMenuDataHeader
call ClearMenuBoxInterior
call WaitBGMap
@@ -9961,7 +5784,7 @@ PokepicYesOrNo:: ; 24528
ret
; 24547
-MenuDataHeader_0x24547: ; 0x24547
+PokepicMenuDataHeader: ; 0x24547
db $40 ; flags
db 04, 06 ; start coords
db 13, 14 ; end coords
@@ -10040,822 +5863,8 @@ GetObjectTimeMask: ; 245a7 (9:45a7)
xor a
ret
-
-Function245af:: ; 245af
- xor a
- ld [wcf73], a
- ld [hBGMapMode], a
- inc a
- ld [hInMenu], a
- call ClearObjectStructsa
- call Function24764
- call Function247dd
- call Function245f1
- call ApplyTilemap
- xor a
- ld [hBGMapMode], a
- ret
-; 245cb
-
-Function245cb:: ; 245cb
-.loop
- call MenuJoyAction
- jp c, .exit
- call z, .zero
- jr .loop
-; 245d6
-
-.exit: ; 245d6
- call Function1ff8
- ld [wcf73], a
- ld a, 0
- ld [hInMenu], a
- ret
-; 245e1
-
-.zero: ; 245e1
- call Function245f1
- ld a, 1
- ld [hBGMapMode], a
- ld c, 3
- call DelayFrames
- xor a
- ld [hBGMapMode], a
- ret
-; 245f1
-
-Function245f1: ; 245f1
- xor a
- ld [hBGMapMode], a
- ld hl, Options
- ld a, [hl]
- push af
- set NO_TEXT_SCROLL, [hl]
- call Function247f0
- call Function2488b
- call Function248b8
- pop af
- ld [Options], a
- ret
-; 24609
-
-MenuJoyAction: ; 24609
-.loop
- call Function1bd3
- ld a, [hJoyLast]
- and D_PAD
- ld b, a
- ld a, [hJoyPressed]
- and BUTTONS
- or b
- bit 0, a ; A
- jp nz, .a_button
- bit 1, a ; B
- jp nz, .b_button
- bit 2, a ; Select
- jp nz, .select
- bit 3, a ; Start
- jp nz, .start
- bit 4, a ; Right
- jp nz, .d_right
- bit 5, a ; Left
- jp nz, .d_left
- bit 6, a ; Up
- jp nz, .d_up
- bit 7, a ; Down
- jp nz, .d_down
- jr .loop
-; 24640
-
-.unreferenced: ; unreferenced
- ld a, -1
- and a
- ret
-; 24644
-
-
-.a_button: ; 24644
- call Function1bee
- ld a, [MenuSelection2]
- dec a
- call Function248d5
- ld a, [MenuSelection]
- ld [CurItem], a
- ld a, [wcf75]
- ld [wItemQuantityBuffer], a
- call Function246fc
- dec a
- ld [wcf77], a
- ld [wd107], a
- ld a, [MenuSelection]
- cp -1
- jr z, .b_button
- ld a, A_BUTTON
- scf
- ret
-; 2466f
-
-.b_button: ; 2466f
- ld a, B_BUTTON
- scf
- ret
-; 24673
-
-.select: ; 24673
- ld a, [wMenuData2Flags]
- bit 7, a
- jp z, xor_a_dec_a
- ld a, [MenuSelection2]
- dec a
- call Function248d5
- ld a, [MenuSelection]
- cp -1
- jp z, xor_a_dec_a
- call Function246fc
- dec a
- ld [wcf77], a
- ld a, SELECT
- scf
- ret
-; 24695
-
-.start: ; 24695
- ld a, [wMenuData2Flags]
- bit 6, a
- jp z, xor_a_dec_a
- ld a, START
- scf
- ret
-; 246a1
-
-.d_left: ; 246a1
- ld hl, wcfa6
- bit 7, [hl]
- jp z, xor_a_dec_a
- ld a, [wMenuData2Flags]
- bit 3, a
- jp z, xor_a_dec_a
- ld a, D_LEFT
- scf
- ret
-; 246b5
-
-.d_right: ; 246b5
- ld hl, wcfa6
- bit 7, [hl]
- jp z, xor_a_dec_a
- ld a, [wMenuData2Flags]
- bit 2, a
- jp z, xor_a_dec_a
- ld a, D_RIGHT
- scf
- ret
-; 246c9
-
-.d_up: ; 246c9
- ld hl, wcfa6
- bit 7, [hl]
- jp z, xor_a
- ld hl, wMenuScrollPosition
- ld a, [hl]
- and a
- jr z, .xor_dec_up
- dec [hl]
- jp xor_a
-
-.xor_dec_up
- jp xor_a_dec_a
-; 246df
-
-.d_down: ; 246df
- ld hl, wcfa6
- bit 7, [hl]
- jp z, xor_a
- ld hl, wMenuScrollPosition
- ld a, [wMenuData2Items]
- add [hl]
- ld b, a
- ld a, [wd144]
- cp b
- jr c, .xor_dec_down
- inc [hl]
- jp xor_a
-
-.xor_dec_down
- jp xor_a_dec_a
-; 246fc
-
-Function246fc: ; 246fc
- ld a, [wMenuScrollPosition]
- ld c, a
- ld a, [MenuSelection2]
- add c
- ld c, a
- ret
-; 24706
-
-Function24706: ; 24706 (9:4706)
- call MenuBoxCoord2Tile
- ld de, SCREEN_WIDTH
- add hl, de
- ld de, 2 * SCREEN_WIDTH
- ld a, [wMenuData2Items]
-.asm_24713
- ld [hl], " "
- add hl, de
- dec a
- jr nz, .asm_24713
- ret
-
-ClearObjectStructsa: ; 2471a
-; Get the value of (wcf95):(wcf96,wcf97) and store it in wd144.
- ld hl, wcf96
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [wcf95]
- call GetFarByte
- ld [wd144], a
-; if ([wd144] + 1) < [wMenuData2Items] + [wMenuScrollPosition]: [wMenuScrollPosition] = max(([wd144] + 1) - [wMenuData2Items], 0)
- ld a, [wMenuData2Items]
- ld c, a
- ld a, [wMenuScrollPosition]
- add c
- ld c, a
- ld a, [wd144]
- inc a
- cp c
- jr nc, .skip
- ld a, [wMenuData2Items]
- ld c, a
- ld a, [wd144]
- inc a
- sub c
- jr nc, .store
- xor a
-
-.store
- ld [wMenuScrollPosition], a
-
-.skip
- ld a, [wMenuScrollPosition]
- ld c, a
- ld a, [wMenuCursorBuffer]
- add c
- ld b, a
- ld a, [wd144]
- inc a
- cp b
- jr c, .asm_2475a
- jr nc, .asm_24763
-
-.asm_2475a
- xor a
- ld [wMenuScrollPosition], a
- ld a, $1
- ld [wMenuCursorBuffer], a
-
-.asm_24763
- ret
-; 24764
-
-Function24764: ; 24764
- ld a, [wMenuData2Flags]
- ld c, a
- ld a, [wd144]
- ld b, a
- ld a, [wMenuBorderTopCoord]
- add $1
- ld [wcfa1], a
- ld a, [wMenuBorderLeftCoord]
- add $0
- ld [wcfa2], a
- ld a, [wMenuData2Items]
- cp b
- jr c, .asm_24786
- jr z, .asm_24786
- ld a, b
- inc a
-
-.asm_24786
- ld [wcfa3], a
- ld a, $1
- ld [wcfa4], a
- ld a, $8c
- bit 2, c
- jr z, .asm_24796
- set 0, a
-
-.asm_24796
- bit 3, c
- jr z, .asm_2479c
- set 1, a
-
-.asm_2479c
- ld [wcfa5], a
- xor a
- ld [wcfa6], a
- ld a, $20
- ld [wcfa7], a
- ld a, $c3
- bit 7, c
- jr z, .asm_247b0
- add $4
-
-.asm_247b0
- bit 6, c
- jr z, .asm_247b6
- add $8
-
-.asm_247b6
- ld [wcfa8], a
- ld a, [wcfa3]
- ld b, a
- ld a, [wMenuCursorBuffer]
- and a
- jr z, .asm_247c8
- cp b
- jr z, .asm_247ca
- jr c, .asm_247ca
-
-.asm_247c8
- ld a, $1
-
-.asm_247ca
- ld [MenuSelection2], a
- ld a, $1
- ld [wcfaa], a
- xor a
- ld [wcfac], a
- ld [wcfad], a
- ld [wcfab], a
- ret
-; 247dd
-
-Function247dd: ; 247dd
- ld a, [wd144]
- ld c, a
- ld a, [wd0e3]
- and a
- jr z, .asm_247ef
- dec a
- cp c
- jr c, .asm_247ef
- xor a
- ld [wd0e3], a
-
-.asm_247ef
- ret
-; 247f0
-
-Function247f0: ; 247f0
- call ClearWholeMenuBox
- ld a, [wMenuData2Flags]
- bit 4, a
- jr z, .asm_2480d
- ld a, [wMenuScrollPosition]
- and a
- jr z, .asm_2480d
- ld a, [wMenuBorderTopCoord]
- ld b, a
- ld a, [wMenuBorderRightCoord]
- ld c, a
- call Coord2Tile
- ld [hl], $61
-
-.asm_2480d
- call MenuBoxCoord2Tile
- ld bc, $15
- add hl, bc
- ld a, [wMenuData2Items]
- ld b, a
- ld c, $0
-.asm_2481a
- ld a, [wMenuScrollPosition]
- add c
- ld [wcf77], a
- ld a, c
- call Function248d5
- ld a, [MenuSelection]
- cp $ff
- jr z, .asm_24851
- push bc
- push hl
- call Function2486e
- pop hl
- ld bc, $28
- add hl, bc
- pop bc
- inc c
- ld a, c
- cp b
- jr nz, .asm_2481a
- ld a, [wMenuData2Flags]
- bit 4, a
- jr z, .asm_24850
- ld a, [wMenuBorderBottomCoord]
- ld b, a
- ld a, [wMenuBorderRightCoord]
- ld c, a
- call Coord2Tile
- ld [hl], $ee
-
-.asm_24850
- ret
-
-.asm_24851
- ld a, [wMenuData2Flags]
- bit 0, a
- jr nz, .asm_24866
- ld de, .string_2485f
- call PlaceString
- ret
-
-.string_2485f
- db "CANCEL@"
-
-.asm_24866
- ld d, h
- ld e, l
- ld hl, wcf98
- jp CallPointerAt
-; 2486e
-
-Function2486e: ; 2486e
- push hl
- ld d, h
- ld e, l
- ld hl, wcf98
- call CallPointerAt
- pop hl
- ld a, [wcf93]
- and a
- jr z, .asm_2488a
- ld e, a
- ld d, $0
- add hl, de
- ld d, h
- ld e, l
- ld hl, wcf9b
- call CallPointerAt
-
-.asm_2488a
- ret
-; 2488b
-
-Function2488b: ; 2488b
- ld a, [wd0e3]
- and a
- jr z, .asm_248b7
- ld b, a
- ld a, [wMenuScrollPosition]
- cp b
- jr nc, .asm_248b7
- ld c, a
- ld a, [wMenuData2Items]
- add c
- cp b
- jr c, .asm_248b7
- ld a, b
- sub c
- dec a
- add a
- add $1
- ld c, a
- ld a, [wMenuBorderTopCoord]
- add c
- ld b, a
- ld a, [wMenuBorderLeftCoord]
- add $0
- ld c, a
- call Coord2Tile
- ld [hl], $ec
-
-.asm_248b7
- ret
-; 248b8
-
-Function248b8: ; 248b8
- ld a, [wMenuData2Flags]
- bit 5, a
- ret z
- bit 1, a
- jr z, .asm_248c7
- ld a, [wd0e3]
- and a
- ret nz
-
-.asm_248c7
- ld a, [MenuSelection2]
- dec a
- call Function248d5
- ld hl, wcf9e
- call CallPointerAt
- ret
-; 248d5
-
-Function248d5: ; 248d5
- push de
- push hl
- ld e, a
- ld a, [wMenuScrollPosition]
- add e
- ld e, a
- ld d, $0
- ld hl, wcf96
- ld a, [hli]
- ld h, [hl]
- ld l, a
- inc hl
- ld a, [wcf94]
- cp $1
- jr z, .asm_248f2
- cp $2
- jr z, .asm_248f1
-
-.asm_248f1
- add hl, de
-
-.asm_248f2
- add hl, de
- ld a, [wcf95]
- call GetFarByte
- ld [MenuSelection], a
- ld [CurItem], a
- inc hl
- ld a, [wcf95]
- call GetFarByte
- ld [wcf75], a
- pop hl
- pop de
- ret
-; 2490c
-
-
-Function2490c: ; 2490c (9:490c)
- ld a, [wd0e3]
- and a
- jr z, .asm_2493d
- ld b, a
- ld a, [wcf77]
- inc a
- cp b
- jr z, .asm_24945
- ld a, [wcf77]
- call Function24a5c
- ld a, [hl]
- cp $ff
- ret z
- ld a, [wd0e3]
- dec a
- ld [wd0e3], a
- call Function249a7
- jp c, Function249d1
- ld a, [wcf77]
- ld c, a
- ld a, [wd0e3]
- cp c
- jr c, .asm_2497a
- jr .asm_2494a
-.asm_2493d
- ld a, [wcf77]
- inc a
- ld [wd0e3], a
- ret
-.asm_24945
- xor a
- ld [wd0e3], a
- ret
-.asm_2494a
- ld a, [wd0e3]
- call Function24a40
- ld a, [wcf77]
- ld d, a
- ld a, [wd0e3]
- ld e, a
- call Function24a6c
- push bc
- ld a, [wd0e3]
- call Function24a5c
- dec hl
- push hl
- call Function24a80
- add hl, bc
- ld d, h
- ld e, l
- pop hl
- pop bc
- call Function24aab
- ld a, [wcf77]
- call Function24a4d
- xor a
- ld [wd0e3], a
- ret
-.asm_2497a
- ld a, [wd0e3]
- call Function24a40
- ld a, [wcf77]
- ld d, a
- ld a, [wd0e3]
- ld e, a
- call Function24a6c
- push bc
- ld a, [wd0e3]
- call Function24a5c
- ld d, h
- ld e, l
- call Function24a80
- add hl, bc
- pop bc
- call CopyBytes
- ld a, [wcf77]
- call Function24a4d
- xor a
- ld [wd0e3], a
- ret
-
-Function249a7: ; 249a7 (9:49a7)
- ld a, [wd0e3]
- call Function24a5c
- ld d, h
- ld e, l
- ld a, [wcf77]
- call Function24a5c
- ld a, [de]
- cp [hl]
- jr nz, .asm_249cd
- ld a, [wcf77]
- call Function24a97
- cp $63
- jr z, .asm_249cd
- ld a, [wd0e3]
- call Function24a97
- cp $63
- jr nz, .asm_249cf
-.asm_249cd
- and a
- ret
-.asm_249cf
- scf
- ret
-
-Function249d1: ; 249d1 (9:49d1)
- ld a, [wd0e3]
- call Function24a5c
- inc hl
- push hl
- ld a, [wcf77]
- call Function24a5c
- inc hl
- ld a, [hl]
- pop hl
- add [hl]
- cp $64
- jr c, .asm_24a01
- sub $63
- push af
- ld a, [wcf77]
- call Function24a5c
- inc hl
- ld [hl], $63
- ld a, [wd0e3]
- call Function24a5c
- inc hl
- pop af
- ld [hl], a
- xor a
- ld [wd0e3], a
- ret
-.asm_24a01
- push af
- ld a, [wcf77]
- call Function24a5c
- inc hl
- pop af
- ld [hl], a
- ld hl, wcf96
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [wd0e3]
- cp [hl]
- jr nz, .asm_24a25
- dec [hl]
- ld a, [wd0e3]
- call Function24a5c
- ld [hl], $ff
- xor a
- ld [wd0e3], a
- ret
-.asm_24a25
- dec [hl]
- call Function24a80
- push bc
- ld a, [wd0e3]
- call Function24a5c
- pop bc
- push hl
- add hl, bc
- pop de
-.asm_24a34
- ld a, [hli]
- ld [de], a
- inc de
- cp $ff
- jr nz, .asm_24a34
- xor a
- ld [wd0e3], a
- ret
-
-Function24a40: ; 24a40 (9:4a40)
- call Function24a5c
- ld de, wd002
- call Function24a80
- call CopyBytes
- ret
-
-Function24a4d: ; 24a4d (9:4a4d)
- call Function24a5c
- ld d, h
- ld e, l
- ld hl, wd002
- call Function24a80
- call CopyBytes
- ret
-
-Function24a5c: ; 24a5c (9:4a5c)
- push af
- call Function24a80
- ld hl, wcf96
- ld a, [hli]
- ld h, [hl]
- ld l, a
- inc hl
- pop af
- call AddNTimes
- ret
-
-Function24a6c: ; 24a6c (9:4a6c)
- push hl
- call Function24a80
- ld a, d
- sub e
- jr nc, .asm_24a76
- dec a
- cpl
-.asm_24a76
- ld hl, 0
- call AddNTimes
- ld b, h
- ld c, l
- pop hl
- ret
-
-Function24a80: ; 24a80 (9:4a80)
- push hl
- ld a, [wcf94]
- ld c, a
- ld b, 0
- ld hl, Unknown_24a91
-rept 2
- add hl, bc
-endr
- ld c, [hl]
- inc hl
- ld b, [hl]
- pop hl
- ret
-; 24a91 (9:4a91)
-
-Unknown_24a91: ; 24a91
- dw 0, 1, 2
-; 24a97
-
-Function24a97: ; 24a97 (9:4a97)
- push af
- call Function24a80
- ld a, c
- cp $2
- jr nz, .asm_24aa7
- pop af
- call Function24a5c
- inc hl
- ld a, [hl]
- ret
-.asm_24aa7
- pop af
- ld a, $1
- ret
-
-Function24aab: ; 24aab (9:4aab)
- ld a, [hld]
- ld [de], a
- dec de
- dec bc
- ld a, b
- or c
- jr nz, Function24aab
- ret
+INCLUDE "engine/scrolling_menu.asm"
+INCLUDE "engine/switch_items.asm"
PlaceMenuItemName: ; 0x24ab4
push de
@@ -10880,7 +5889,7 @@ PlaceMenuItemQuantity: ; 0x24ac3
add hl, de
ld [hl], "×"
inc hl
- ld de, wcf75
+ ld de, MenuSelectionQuantity
lb bc, 1, 2
call PrintNum
@@ -10888,25 +5897,25 @@ PlaceMenuItemQuantity: ; 0x24ac3
ret
; 0x24ae8
-PlaceMoneyTopRightOW: ; 24ae8
+PlaceMoneyTopRight: ; 24ae8
ld hl, MenuDataHeader_0x24b15
call CopyMenuDataHeader
- jr Function24b01
+ jr PlaceMoneyDataHeader
-PlaceMoneyBottomLeftOW: ; 24af0
+PlaceMoneyBottomLeft: ; 24af0
ld hl, MenuDataHeader_0x24b1d
call CopyMenuDataHeader
- jr Function24b01
+ jr PlaceMoneyDataHeader
-PlaceMoneyTopRightMenu: ; 24af8
+PlaceMoneyAtTopLeftOfTextbox: ; 24af8
ld hl, MenuDataHeader_0x24b15
- ld de, $b
- call Function1e2e
+ lb de, 0, 11
+ call OffsetMenuDataHeader
-Function24b01: ; 24b01
+PlaceMoneyDataHeader: ; 24b01
call MenuBox
call MenuBoxCoord2Tile
- ld de, $15
+ ld de, SCREEN_WIDTH + 1
add hl, de
ld de, Money
lb bc, PRINTNUM_MONEY | 3, 6
@@ -11079,7 +6088,6 @@ String24c5e: ; 24c5e
db "LEVEL@"
; 24c64
-
FindApricornsInBag: ; 24c64
; Checks the bag for Apricorns.
ld hl, Buffer1
@@ -11103,9 +6111,8 @@ FindApricornsInBag: ; 24c64
ld a, [hl]
call .addtobuffer
.nope
-rept 2
inc hl
-endr
+ inc hl
jr .loop
.done
@@ -11139,719 +6146,9 @@ endr
db -1
; 24caf
-
-MonMenuOptionStrings: ; 24caf
- db "STATS@"
- db "SWITCH@"
- db "ITEM@"
- db "CANCEL@"
- db "MOVE@"
- db "MAIL@"
- db "ERROR!@"
-; 24cd9
-
-MonMenuOptions: ; 24cd9
-
-; Moves
- db MONMENU_FIELD_MOVE, MONMENU_CUT, CUT
- db MONMENU_FIELD_MOVE, MONMENU_FLY, FLY
- db MONMENU_FIELD_MOVE, MONMENU_SURF, SURF
- db MONMENU_FIELD_MOVE, MONMENU_STRENGTH, STRENGTH
- db MONMENU_FIELD_MOVE, MONMENU_FLASH, FLASH
- db MONMENU_FIELD_MOVE, MONMENU_WATERFALL, WATERFALL
- db MONMENU_FIELD_MOVE, MONMENU_WHIRLPOOL, WHIRLPOOL
- db MONMENU_FIELD_MOVE, MONMENU_DIG, DIG
- db MONMENU_FIELD_MOVE, MONMENU_TELEPORT, TELEPORT
- db MONMENU_FIELD_MOVE, MONMENU_SOFTBOILED, SOFTBOILED
- db MONMENU_FIELD_MOVE, MONMENU_HEADBUTT, HEADBUTT
- db MONMENU_FIELD_MOVE, MONMENU_ROCKSMASH, ROCK_SMASH
- db MONMENU_FIELD_MOVE, MONMENU_MILKDRINK, MILK_DRINK
- db MONMENU_FIELD_MOVE, MONMENU_SWEETSCENT, SWEET_SCENT
-
-; Options
- db MONMENU_MENUOPTION, MONMENU_STATS, 1 ; STATS
- db MONMENU_MENUOPTION, MONMENU_SWITCH, 2 ; SWITCH
- db MONMENU_MENUOPTION, MONMENU_ITEM, 3 ; ITEM
- db MONMENU_MENUOPTION, MONMENU_CANCEL, 4 ; CANCEL
- db MONMENU_MENUOPTION, MONMENU_MOVE, 5 ; MOVE
- db MONMENU_MENUOPTION, MONMENU_MAIL, 6 ; MAIL
- db MONMENU_MENUOPTION, MONMENU_ERROR, 7 ; ERROR!
-
- db -1
-; 24d19
-
-MonSubmenu: ; 24d19
- xor a
- ld [hBGMapMode], a
- call GetMonSubmenuItems
- callba Function8ea4a
- ld hl, .MenuDataHeader
- call LoadMenuDataHeader
- call .GetTopCoord
- call PopulateMonMenu
-
- ld a, 1
- ld [hBGMapMode], a
- call MonMenuLoop
- ld [MenuSelection], a
-
- call ExitMenu
- ret
-; 24d3f
-
-.MenuDataHeader: ; 24d3f
- db $40 ; tile backup
- db 00, 06 ; start coords
- db 17, 19 ; end coords
- dw 0
- db 1 ; default option
-; 24d47
-
-.GetTopCoord: ; 24d47
-; TopCoord = 1 + BottomCoord - 2 * (NumSubmenuItems + 1)
- ld a, [Buffer1]
- inc a
- add a
- ld b, a
- ld a, [wMenuBorderBottomCoord]
- sub b
- inc a
- ld [wMenuBorderTopCoord], a
- call MenuBox
- ret
-; 24d59
-
-MonMenuLoop: ; 24d59
-.loop
- ld a, $a0 ; flags
- ld [wMenuData2Flags], a
- ld a, [Buffer1] ; items
- ld [wMenuData2Items], a
- call Function1c10
- ld hl, wcfa5
- set 6, [hl]
- call Function1bc9
- ld de, SFX_READ_TEXT_2
- call PlaySFX
- ld a, [hJoyPressed]
- bit 0, a ; A
- jr nz, .select
- bit 1, a ; B
- jr nz, .cancel
- jr .loop
-
-.cancel
- ld a, MONMENU_CANCEL ; CANCEL
- ret
-
-.select
- ld a, [MenuSelection2]
- dec a
- ld c, a
- ld b, 0
- ld hl, Buffer2
- add hl, bc
- ld a, [hl]
- ret
-; 24d91
-
-PopulateMonMenu: ; 24d91
- call MenuBoxCoord2Tile
- ld bc, $2a ; 42
- add hl, bc
- ld de, Buffer2
-.loop
- ld a, [de]
- inc de
- cp -1
- ret z
- push de
- push hl
- call GetMonMenuString
- pop hl
- call PlaceString
- ld bc, $28 ; 40
- add hl, bc
- pop de
- jr .loop
-; 24db0
-
-GetMonMenuString: ; 24db0
- ld hl, MonMenuOptions + 1
- ld de, 3
- call IsInArray
- dec hl
- ld a, [hli]
- cp 1
- jr z, .NotMove
- inc hl
- ld a, [hl]
- ld [wd265], a
- call GetMoveName
- ret
-
-.NotMove
- inc hl
- ld a, [hl]
- dec a
- ld hl, MonMenuOptionStrings
- call GetNthString
- ld d, h
- ld e, l
- ret
-; 24dd4
-
-GetMonSubmenuItems: ; 24dd4
- call ResetMonSubmenu
- ld a, [CurPartySpecies]
- cp EGG
- jr z, .egg
- ld a, [wLinkMode]
- and a
- jr nz, .skip_moves
- ld a, MON_MOVES
- call GetPartyParamLocation
- ld d, h
- ld e, l
- ld c, NUM_MOVES
-.loop
- push bc
- push de
- ld a, [de]
- and a
- jr z, .next
- push hl
- call IsFieldMove
- pop hl
- jr nc, .next
- call AddMonMenuItem
-
-.next
- pop de
- inc de
- pop bc
- dec c
- jr nz, .loop
-
-.skip_moves
- ld a, MONMENU_STATS
- call AddMonMenuItem
- ld a, MONMENU_SWITCH
- call AddMonMenuItem
- ld a, MONMENU_MOVE
- call AddMonMenuItem
- ld a, [wLinkMode]
- and a
- jr nz, .skip2
- push hl
- ld a, MON_ITEM
- call GetPartyParamLocation
- ld d, [hl]
- callba ItemIsMail
- pop hl
- ld a, MONMENU_MAIL
- jr c, .ok
- ld a, MONMENU_ITEM
-
-.ok
- call AddMonMenuItem
-
-.skip2
- ld a, [Buffer1]
- cp NUM_MON_SUBMENU_ITEMS
- jr z, .ok2
- ld a, MONMENU_CANCEL
- call AddMonMenuItem
-
-.ok2
- call TerminateMonSubmenu
- ret
-
-.egg
- ld a, MONMENU_STATS
- call AddMonMenuItem
- ld a, MONMENU_SWITCH
- call AddMonMenuItem
- ld a, MONMENU_CANCEL
- call AddMonMenuItem
- call TerminateMonSubmenu
- ret
-; 24e52
-
-IsFieldMove: ; 24e52
- ld b, a
- ld hl, MonMenuOptions
-.next
- ld a, [hli]
- cp -1
- jr z, .nope
- cp MONMENU_MENUOPTION
- jr z, .nope
- ld d, [hl]
- inc hl
- ld a, [hli]
- cp b
- jr nz, .next
- ld a, d
- scf
-
-.nope
- ret
-; 24e68
-
-ResetMonSubmenu: ; 24e68
- xor a
- ld [Buffer1], a
- ld hl, Buffer2
- ld bc, NUM_MON_SUBMENU_ITEMS + 1
- call ByteFill
- ret
-; 24e76
-
-TerminateMonSubmenu: ; 24e76
- ld a, [Buffer1]
- ld e, a
- ld d, $0
- ld hl, Buffer2
- add hl, de
- ld [hl], -1
- ret
-; 24e83
-
-AddMonMenuItem: ; 24e83
- push hl
- push de
- push af
- ld a, [Buffer1]
- ld e, a
- inc a
- ld [Buffer1], a
- ld d, $0
- ld hl, Buffer2
- add hl, de
- pop af
- ld [hl], a
- pop de
- pop hl
- ret
-; 24e99
-
-Function24e99: ; 24e99
-; BattleMonMenu
- ld hl, MenuDataHeader_0x24ed4
- call CopyMenuDataHeader
- xor a
- ld [hBGMapMode], a
- call MenuBox
- call UpdateSprites
- call Function1c89
- call WaitBGMap
- call CopyMenuData2
- ld a, [wMenuData2Flags]
- bit 7, a
- jr z, .asm_24ed0
- call Function1c10
- ld hl, wcfa5
- set 6, [hl]
- call Function1bc9
- ld de, SFX_READ_TEXT_2
- call PlaySFX
- ld a, [hJoyPressed]
- bit 1, a
- jr z, .asm_24ed2
- ret z
-
-.asm_24ed0
- scf
- ret
-
-.asm_24ed2
- and a
- ret
-; 24ed4
-
-MenuDataHeader_0x24ed4: ; 24ed4
- db $00 ; flags
- db 11, 11 ; start coords
- db 17, 19 ; end coords
- dw MenuData2_0x24edc
- db 1 ; default option
-; 24edc
-
-MenuData2_0x24edc: ; 24edc
- db $c0 ; flags
- db 3 ; items
- db "SWITCH@"
- db "STATS@"
- db "CANCEL@"
-; 24ef2
-
-
-LoadBattleMenu: ; 24ef2
- ld hl, BattleMenuDataHeader
- call LoadMenuDataHeader
- ld a, [wd0d2]
- ld [wMenuCursorBuffer], a
- call Function2039
- ld a, [wMenuCursorBuffer]
- ld [wd0d2], a
- call ExitMenu
- ret
-; 24f0b
-
-
-SafariBattleMenu: ; 24f0b
-; untranslated
- ld hl, MenuDataHeader_0x24f4e
- call LoadMenuDataHeader
- jr Function24f19
-; 24f13
-
-ContestBattleMenu: ; 24f13
- ld hl, MenuDataHeader_0x24f89
- call LoadMenuDataHeader
-; 24f19
-
-Function24f19: ; 24f19
- ld a, [wd0d2]
- ld [wMenuCursorBuffer], a
- call InterpretMenu
- ld a, [wMenuCursorBuffer]
- ld [wd0d2], a
- call ExitMenu
- ret
-; 24f2c
-
-
-BattleMenuDataHeader: ; 24f2c
- db $40 ; flags
- db 12, 08 ; start coords
- db 17, 19 ; end coords
- dw MenuData_0x24f34
- db 1 ; default option
-; 24f34
-
-MenuData_0x24f34: ; 0x24f34
- db $81 ; flags
- dn 2, 2 ; rows, columns
- db 6 ; spacing
- dba Strings24f3d
- dbw BANK(MenuData_0x24f34), 0
-; 0x24f3d
-
-Strings24f3d: ; 0x24f3d
- db "FIGHT@"
- db "<PKMN>@"
- db "PACK@"
- db "RUN@"
-; 24f4e
-
-
-MenuDataHeader_0x24f4e: ; 24f4e
- db $40 ; flags
- db 12, 00 ; start coords
- db 17, 19 ; end coords
- dw MenuData_0x24f56
- db 1 ; default option
-; 24f56
-
-MenuData_0x24f56: ; 24f56
- db $81 ; flags
- dn 2, 2 ; rows, columns
- db 11 ; spacing
- dba Strings24f5f
- dba Function24f7c
-; 24f5f
-
-Strings24f5f: ; 24f5f
- db "サファりボール× @" ; "SAFARI BALL× @"
- db "エサをなげる@" ; "THROW BAIT"
- db "いしをなげる@" ; "THROW ROCK"
- db "にげる@" ; "RUN"
-; 24f7c
-
-Function24f7c: ; 24f7c
- hlcoord 17, 13
- ld de, wSafariBallsRemaining
- lb bc, PRINTNUM_LEADINGZEROS | 1, 2
- call PrintNum
- ret
-; 24f89
-
-
-MenuDataHeader_0x24f89: ; 24f89
- db $40 ; flags
- db 12, 02 ; start coords
- db 17, 19 ; end coords
- dw MenuData_0x24f91
- db 1 ; default option
-; 24f91
-
-MenuData_0x24f91: ; 24f91
- db $81 ; flags
- dn 2, 2 ; rows, columns
- db 12 ; spacing
- dba Strings24f9a
- dba Function24fb2
-; 24f9a
-
-Strings24f9a: ; 24f9a
- db "FIGHT@"
- db "<PKMN>", "@"
- db "PARKBALL× @"
- db "RUN@"
-; 24fb2
-
-Function24fb2: ; 24fb2
- hlcoord 13, 16
- ld de, wParkBallsRemaining
- lb bc, PRINTNUM_LEADINGZEROS | 1, 2
- call PrintNum
- ret
-; 24fbf
-
-
-Function24fbf: ; 24fbf
- ld hl, MenuDataHeader_0x250ed
- call LoadMenuDataHeader
- call Function24ff9
- ret
-; 24fc9
-
-
-Function24fc9: ; 24fc9
- callba GetItemPrice
-Function24fcf: ; 24fcf
- ld a, d
- ld [Buffer1], a
- ld a, e
- ld [Buffer2], a
- ld hl, MenuDataHeader_0x250f5
- call LoadMenuDataHeader
- call Function24ff9
- ret
-; 24fe1
-
-Function24fe1: ; 24fe1
- callba GetItemPrice
- ld a, d
- ld [Buffer1], a
- ld a, e
- ld [Buffer2], a
- ld hl, MenuDataHeader_0x250fd
- call LoadMenuDataHeader
- call Function24ff9
- ret
-; 24ff9
-
-Function24ff9: ; 24ff9
- ld a, $1
- ld [wItemQuantityChangeBuffer], a
-.loop
- call Function25072 ; update display
- call Function2500e ; joy action
- jr nc, .loop
- cp -1
- jr nz, .nope
- scf
- ret
-
-.nope
- and a
- ret
-; 2500e
-
-Function2500e: ; 2500e
- call Function354b ; get joypad
- bit B_BUTTON_F, c
- jr nz, .b
- bit A_BUTTON_F, c
- jr nz, .a
- bit D_DOWN_F, c
- jr nz, .down
- bit D_UP_F, c
- jr nz, .up
- bit D_LEFT_F, c
- jr nz, .left
- bit D_RIGHT_F, c
- jr nz, .right
- and a
- ret
-
-.b
- ld a, -1
- scf
- ret
-
-.a
- ld a, 0
- scf
- ret
-
-.down
- ld hl, wItemQuantityChangeBuffer
- dec [hl]
- jr nz, .finish_down
- ld a, [wItemQuantityBuffer]
- ld [hl], a
-
-.finish_down
- and a
- ret
-
-.up
- ld hl, wItemQuantityChangeBuffer
- inc [hl]
- ld a, [wItemQuantityBuffer]
- cp [hl]
- jr nc, .finish_up
- ld [hl], $1
-
-.finish_up
- and a
- ret
-
-.left
- ld a, [wItemQuantityChangeBuffer]
- sub $a
- jr c, .load_1
- jr z, .load_1
- jr .finish_left
-
-.load_1
- ld a, $1
-
-.finish_left
- ld [wItemQuantityChangeBuffer], a
- and a
- ret
-
-.right
- ld a, [wItemQuantityChangeBuffer]
- add $a
- ld b, a
- ld a, [wItemQuantityBuffer]
- cp b
- jr nc, .finish_right
- ld b, a
-
-.finish_right
- ld a, b
- ld [wItemQuantityChangeBuffer], a
- and a
- ret
-; 25072
-
-Function25072: ; 25072
- call MenuBox
- call MenuBoxCoord2Tile
- ld de, $15
- add hl, de
- ld [hl], $f1
- inc hl
- ld de, wItemQuantityChangeBuffer
- lb bc, PRINTNUM_LEADINGZEROS | 1, 2
- call PrintNum
- ld a, [wMenuData2Pointer]
- ld e, a
- ld a, [wMenuData2Pointer + 1]
- ld d, a
- ld a, [wMenuDataBank]
- call FarCall_de
- ret
-; 25097
-
-
-Function25097: ; 25097
- ret
-; 25098
-
-Function25098: ; 25098
- call Function250a9
- call Function250d1
- ret
-; 2509f
-
-Function2509f: ; 2509f
- call Function250a9
- call Function250c1
- call Function250d1
- ret
-; 250a9
-
-Function250a9: ; 250a9
- xor a
- ld [hMultiplicand + 0], a
- ld a, [Buffer1]
- ld [hMultiplicand + 1], a
- ld a, [Buffer2]
- ld [hMultiplicand + 2], a
- ld a, [wItemQuantityChangeBuffer]
- ld [hMultiplier], a
- push hl
- call Multiply
- pop hl
- ret
-; 250c1
-
-Function250c1: ; 250c1
- push hl
- ld hl, hMultiplicand
- ld a, [hl]
- srl a
- ld [hli], a
- ld a, [hl]
- rra
- ld [hli], a
- ld a, [hl]
- rra
- ld [hl], a
- pop hl
- ret
-; 250d1
-
-Function250d1: ; 250d1
- push hl
- ld hl, hMoneyTemp
- ld a, [hMultiplicand]
- ld [hli], a
- ld a, [$ffb5]
- ld [hli], a
- ld a, [$ffb6]
- ld [hl], a
- pop hl
- inc hl
- ld de, hMoneyTemp
- lb bc, PRINTNUM_MONEY | 3, 6
- call PrintNum
- call WaitBGMap
- ret
-; 250ed
-
-MenuDataHeader_0x250ed: ; 0x250ed
- db $40 ; flags
- db 09, 15 ; start coords
- db 11, 19 ; end coords
- dw Function25097
- db 0 ; default option
-; 0x250f5
-
-MenuDataHeader_0x250f5: ; 0x250f5
- db $40 ; flags
- db 15, 07 ; start coords
- db 17, 19 ; end coords
- dw Function25098
- db -1 ; default option
-; 0x250fd
-
-MenuDataHeader_0x250fd: ; 0x250fd
- db $40 ; flags
- db 15, 07 ; start coords
- db 17, 19 ; end coords
- dw Function2509f
- db 0 ; default option
-; 0x25105
-
+INCLUDE "engine/mon_menu.asm"
+INCLUDE "battle/menu.asm"
+INCLUDE "engine/buy_sell_toss.asm"
INCLUDE "engine/trainer_card.asm"
ProfOaksPC: ; 0x265d3
@@ -11878,7 +6175,7 @@ ProfOaksPCBoot ; 0x265ee
ret
; 0x26601
-Function26601: ; 0x26601
+ProfOaksPCRating: ; 0x26601
call Rate
push de
ld de, MUSIC_NONE
@@ -11902,7 +6199,7 @@ Rate: ; 0x26616
ld [wd003], a
; print appropriate rating
- call ClearOakRatingBuffers
+ call .UpdateRatingBuffers
ld hl, OakPCText3
call PrintText
call JoyWaitAorB
@@ -11915,17 +6212,17 @@ Rate: ; 0x26616
ret
; 0x26647
-ClearOakRatingBuffers: ; 0x26647
+.UpdateRatingBuffers: ; 0x26647
ld hl, StringBuffer3
ld de, wd002
- call ClearOakRatingBuffer
+ call .UpdateRatingBuffer
ld hl, StringBuffer4
ld de, wd003
- call ClearOakRatingBuffer
+ call .UpdateRatingBuffer
ret
; 0x2665a
-ClearOakRatingBuffer: ; 0x2665a
+.UpdateRatingBuffer: ; 0x2665a
push hl
ld a, "@"
ld bc, ITEM_NAME_LENGTH
@@ -11962,85 +6259,31 @@ endr
; 0x2667f
OakRatings: ; 0x2667f
-; db count (if number caught ≤ this number, then this entry is used)
-; dw sound effect
-; dw text pointer
-
- db 9
- dw SFX_DEX_FANFARE_LESS_THAN_20
- dw OakRating01
-
- db 19
- dw SFX_DEX_FANFARE_LESS_THAN_20
- dw OakRating02
-
- db 34
- dw SFX_DEX_FANFARE_20_49
- dw OakRating03
-
- db 49
- dw SFX_DEX_FANFARE_20_49
- dw OakRating04
-
- db 64
- dw SFX_DEX_FANFARE_50_79
- dw OakRating05
-
- db 79
- dw SFX_DEX_FANFARE_50_79
- dw OakRating06
-
- db 94
- dw SFX_DEX_FANFARE_80_109
- dw OakRating07
-
- db 109
- dw SFX_DEX_FANFARE_80_109
- dw OakRating08
-
- db 124
- dw SFX_CAUGHT_MON
- dw OakRating09
-
- db 139
- dw SFX_CAUGHT_MON
- dw OakRating10
-
- db 154
- dw SFX_DEX_FANFARE_140_169
- dw OakRating11
-
- db 169
- dw SFX_DEX_FANFARE_140_169
- dw OakRating12
-
- db 184
- dw SFX_DEX_FANFARE_170_199
- dw OakRating13
-
- db 199
- dw SFX_DEX_FANFARE_170_199
- dw OakRating14
-
- db 214
- dw SFX_DEX_FANFARE_200_229
- dw OakRating15
-
- db 229
- dw SFX_DEX_FANFARE_200_229
- dw OakRating16
-
- db 239
- dw SFX_DEX_FANFARE_230_PLUS
- dw OakRating17
-
- db 248
- dw SFX_DEX_FANFARE_230_PLUS
- dw OakRating18
+oakrating: MACRO
+ db \1
+ dw \2, \3
+endm
- db 255
- dw SFX_DEX_FANFARE_230_PLUS
- dw OakRating19
+; if you caught at most this many, play this sound, load this text
+ oakrating 9, SFX_DEX_FANFARE_LESS_THAN_20, OakRating01
+ oakrating 19, SFX_DEX_FANFARE_LESS_THAN_20, OakRating02
+ oakrating 34, SFX_DEX_FANFARE_20_49, OakRating03
+ oakrating 49, SFX_DEX_FANFARE_20_49, OakRating04
+ oakrating 64, SFX_DEX_FANFARE_50_79, OakRating05
+ oakrating 79, SFX_DEX_FANFARE_50_79, OakRating06
+ oakrating 94, SFX_DEX_FANFARE_80_109, OakRating07
+ oakrating 109, SFX_DEX_FANFARE_80_109, OakRating08
+ oakrating 124, SFX_CAUGHT_MON, OakRating09
+ oakrating 139, SFX_CAUGHT_MON, OakRating10
+ oakrating 154, SFX_DEX_FANFARE_140_169, OakRating11
+ oakrating 169, SFX_DEX_FANFARE_140_169, OakRating12
+ oakrating 184, SFX_DEX_FANFARE_170_199, OakRating13
+ oakrating 199, SFX_DEX_FANFARE_170_199, OakRating14
+ oakrating 214, SFX_DEX_FANFARE_200_229, OakRating15
+ oakrating 229, SFX_DEX_FANFARE_200_229, OakRating16
+ oakrating 239, SFX_DEX_FANFARE_230_PLUS, OakRating17
+ oakrating 248, SFX_DEX_FANFARE_230_PLUS, OakRating18
+ oakrating 255, SFX_DEX_FANFARE_230_PLUS, OakRating19
OakPCText1: ; 0x266de
text_jump _OakPCText1
@@ -12147,7 +6390,6 @@ PadCoords_de: ; 27092
ret
; 2709e
-
LevelUpHappinessMod: ; 2709e
ld a, [CurPartyMon]
ld hl, PartyMon1CaughtLocation
@@ -12183,12 +6425,11 @@ _ReturnToBattle_UseBall: ; 2715c
.gettutorialbackpic
callba GetTrainerBackpic
-
.continue
callba GetMonFrontpic
callba _LoadBattleFontsHPBar
call GetMemSGBLayout
- call WriteBackup
+ call CloseWindow
call LoadStandardMenuDataHeader
call WaitBGMap
jp SetPalettes
@@ -12284,12 +6525,11 @@ MoveEffects: ; 2732e
INCLUDE "battle/moves/move_effects.asm"
Function27a28: ; 27a28
- call Function2500e
+ call BuySellToss_InterpretJoypad
ld b, a
ret
; 27a2d
-
SECTION "bankA", ROMX, BANK[$A]
INCLUDE "engine/link.asm"
@@ -12476,7 +6716,6 @@ DetermineLinkBattleResult: ; 2b930
ret
; 2ba1a
-
ChrisBackpic: ; 2ba1a
INCBIN "gfx/misc/player.6x6.2bpp.lz"
; 2bbaa
@@ -12485,1388 +6724,26 @@ DudeBackpic: ; 2bbaa
INCBIN "gfx/misc/dude.6x6.2bpp.lz"
; 2bcea
-
SECTION "bankB", ROMX, BANK[$B]
-Function2c000: ; 2c000
- ld a, $e4
- ld [rOBP0], a
- call Function2c165
- call Function2c01c
- ld a, [wBattleMode]
- dec a
- ret z
- jp Function2c03a
-; 2c012
-
-
-
-Function2c012: ; 2c012
- ld a, $e4
- ld [rOBP0], a
- call Function2c165
- jp Function2c03a
-; 2c01c
-
-Function2c01c: ; 2c01c
- call Function2c0ad
- ld hl, PartyMon1HP
- ld de, PartyCount
- call Function2c059
- ld a, $60
- ld hl, wcfc4
- ld [hli], a
- ld [hl], a
- ld a, $8
- ld [wd003], a
- ld hl, Sprites
- jp Function2c143
-; 2c03a
-
-
-
-Function2c03a: ; 2c03a
- call Function2c0c5
- ld hl, OTPartyMon1HP
- ld de, OTPartyCount
- call Function2c059
- ld hl, wcfc4
- ld a, $48
- ld [hli], a
- ld [hl], $20
- ld a, $f8
- ld [wd003], a
- ld hl, Sprites + $18
- jp Function2c143
-; 2c059
-
-
-Function2c059: ; 2c059
- ld a, [de]
- push af
- ld de, Buffer1
- ld c, $6
- ld a, $34
-.asm_2c062
- ld [de], a
- inc de
- dec c
- jr nz, .asm_2c062
- pop af
- ld de, Buffer1
-.asm_2c06b
- push af
- call Function2c075
- inc de
- pop af
- dec a
- jr nz, .asm_2c06b
- ret
-; 2c075
-
-Function2c075: ; 2c075
- ld a, [hli]
- and a
- jr nz, .asm_2c07f
- ld a, [hl]
- and a
- ld b, $33
- jr z, .asm_2c08b
-
-.asm_2c07f
-rept 3
- dec hl
-endr
- ld a, [hl]
- and a
- ld b, $32
- jr nz, .asm_2c08e
- dec b
- jr .asm_2c08e
-
-.asm_2c08b
-rept 3
- dec hl
-endr
-
-.asm_2c08e
- ld a, b
- ld [de], a
- ld bc, $32
- add hl, bc
- ret
-; 2c095
-
-DrawPlayerExpBar: ; 2c095
- ld hl, .data_2c0a9
- ld de, wd004
- ld bc, 4
- call CopyBytes
- hlcoord 18, 10
- ld de, -1
- jr Function2c0f1
-
-.data_2c0a9
- db $73
- db $77
- db $6f
- db $76
-; 2c0ad
-
-Function2c0ad: ; 2c0ad
- ld hl, .data_2c0c1
- ld de, wd004
- ld bc, 4
- call CopyBytes
- hlcoord 18, 10
- ld de, -1
- jr Function2c0f1
-
-.data_2c0c1
- db $73, $5c, $6f, $76
-; 2c0c5
-
-Function2c0c5: ; 2c0c5
- ld hl, .data_2c0ed
- ld de, wd004
- ld bc, 4
- call CopyBytes
- hlcoord 1, 2
- ld de, 1
- call Function2c0f1
- ld a, [wBattleMode]
- dec a
- ret nz
- ld a, [TempEnemyMonSpecies]
- dec a
- call CheckCaughtMon
- ret z
- hlcoord 1, 1
- ld [hl], $5d
- ret
-
-.data_2c0ed
- db $6d
- db $74
- db $78
- db $76
-; 2c0f1
-
-Function2c0f1: ; 2c0f1
- ld a, [wd004]
- ld [hl], a
- ld bc, SCREEN_WIDTH
- add hl, bc
- ld a, [StartFlypoint]
- ld [hl], a
- ld b, $8
-.asm_2c0ff
- add hl, de
- ld a, [MovementBuffer]
- ld [hl], a
- dec b
- jr nz, .asm_2c0ff
- add hl, de
- ld a, [EndFlypoint]
- ld [hl], a
- ret
-; 2c10d
-
-
-Function2c10d: ; 2c10d
- call Function2c165
- ld hl, PartyMon1HP
- ld de, PartyCount
- call Function2c059
- ld hl, wcfc4
- ld a, $50
- ld [hli], a
- ld [hl], $40
- ld a, $8
- ld [wd003], a
- ld hl, Sprites
- call Function2c143
- ld hl, OTPartyMon1HP
- ld de, OTPartyCount
- call Function2c059
- ld hl, wcfc4
- ld a, "@"
- ld [hli], a
- ld [hl], $68
- ld hl, Sprites + $18
- jp Function2c143
-; 2c143
-
-Function2c143: ; 2c143
- ld de, Buffer1
- ld c, $6
-.loop
- ld a, [wcfc5]
- ld [hli], a
- ld a, [wcfc4]
- ld [hli], a
- ld a, [de]
- ld [hli], a
- ld a, $3
- ld [hli], a
- ld a, [wcfc4]
- ld b, a
- ld a, [wd003]
- add b
- ld [wcfc4], a
- inc de
- dec c
- jr nz, .loop
- ret
-; 2c165
-
-Function2c165: ; 2c165
- ld de, GFX_2c172
- ld hl, VTiles0 tile $31
- lb bc, BANK(GFX_2c172), 4
- call Get2bpp_2
- ret
-; 2c172
-
-GFX_2c172: ; 2c172
-INCBIN "gfx/battle/balls.2bpp"
-; 2c1b2
-
-_ShowLinkBattleParticipants: ; 2c1b2
- call ClearBGPalettes
- call LoadFontsExtra
- hlcoord 2, 3
- ld b, 9
- ld c, 14
- call TextBox
- hlcoord 4, 5
- ld de, PlayerName
- call PlaceString
- hlcoord 4, 10
- ld de, OTPlayerName
- call PlaceString
- hlcoord 9, 8
- ld a, $69
- ld [hli], a
- ld [hl], $6a
- callba Function2c10d ; no need to callba
- ld b, SCGB_08
- call GetSGBLayout
- call SetPalettes
- ld a, $e4
- ld [rOBP0], a
- ret
-; 2c1ef
-
+INCLUDE "battle/trainer_huds.asm"
TrainerClassNames:: ; 2c1ef
- db "LEADER@"
- db "LEADER@"
- db "LEADER@"
- db "LEADER@"
- db "LEADER@"
- db "LEADER@"
- db "LEADER@"
- db "LEADER@"
- db "RIVAL@"
- db "#MON PROF.@"
- db "ELITE FOUR@"
- db "<PKMN> TRAINER@"
- db "ELITE FOUR@"
- db "ELITE FOUR@"
- db "ELITE FOUR@"
- db "CHAMPION@"
- db "LEADER@"
- db "LEADER@"
- db "LEADER@"
- db "SCIENTIST@"
- db "LEADER@"
- db "YOUNGSTER@"
- db "SCHOOLBOY@"
- db "BIRD KEEPER@"
- db "LASS@"
- db "LEADER@"
- db "COOLTRAINER@"
- db "COOLTRAINER@"
- db "BEAUTY@"
- db "#MANIAC@"
- db "ROCKET@"
- db "GENTLEMAN@"
- db "SKIER@"
- db "TEACHER@"
- db "LEADER@"
- db "BUG CATCHER@"
- db "FISHER@"
- db "SWIMMER♂@"
- db "SWIMMER♀@"
- db "SAILOR@"
- db "SUPER NERD@"
- db "RIVAL@"
- db "GUITARIST@"
- db "HIKER@"
- db "BIKER@"
- db "LEADER@"
- db "BURGLAR@"
- db "FIREBREATHER@"
- db "JUGGLER@"
- db "BLACKBELT@"
- db "ROCKET@"
- db "PSYCHIC@"
- db "PICNICKER@"
- db "CAMPER@"
- db "ROCKET@"
- db "SAGE@"
- db "MEDIUM@"
- db "BOARDER@"
- db "#FAN@"
- db "KIMONO GIRL@"
- db "TWINS@"
- db "#FAN@"
- db "<PKMN> TRAINER@"
- db "LEADER@"
- db "OFFICER@"
- db "ROCKET@"
- db "MYSTICALMAN@"
-
-
-
-AI_Redundant: ; 2c41a
-; Check if move effect c will fail because it's already been used.
-; Return z if the move is a good choice.
-; Return nz if the move is a bad choice.
- ld a, c
- ld de, 3
- ld hl, .Moves
- call IsInArray
- jp nc, .NotRedundant
- inc hl
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-
-.Moves: ; 2c42c
- dbw EFFECT_DREAM_EATER, .DreamEater
- dbw EFFECT_HEAL, .Heal
- dbw EFFECT_LIGHT_SCREEN, .LightScreen
- dbw EFFECT_MIST, .Mist
- dbw EFFECT_FOCUS_ENERGY, .FocusEnergy
- dbw EFFECT_CONFUSE, .Confuse
- dbw EFFECT_TRANSFORM, .Transform
- dbw EFFECT_REFLECT, .Reflect
- dbw EFFECT_SUBSTITUTE, .Substitute
- dbw EFFECT_LEECH_SEED, .LeechSeed
- dbw EFFECT_DISABLE, .Disable
- dbw EFFECT_ENCORE, .Encore
- dbw EFFECT_SNORE, .Snore
- dbw EFFECT_SLEEP_TALK, .SleepTalk
- dbw EFFECT_MEAN_LOOK, .MeanLook
- dbw EFFECT_NIGHTMARE, .Nightmare
- dbw EFFECT_SPIKES, .Spikes
- dbw EFFECT_FORESIGHT, .Foresight
- dbw EFFECT_PERISH_SONG, .PerishSong
- dbw EFFECT_SANDSTORM, .Sandstorm
- dbw EFFECT_ATTRACT, .Attract
- dbw EFFECT_SAFEGUARD, .Safeguard
- dbw EFFECT_RAIN_DANCE, .RainDance
- dbw EFFECT_SUNNY_DAY, .SunnyDay
- dbw EFFECT_TELEPORT, .Teleport
- dbw EFFECT_MORNING_SUN, .MorningSun
- dbw EFFECT_SYNTHESIS, .Synthesis
- dbw EFFECT_MOONLIGHT, .Moonlight
- dbw EFFECT_SWAGGER, .Swagger
- dbw EFFECT_FUTURE_SIGHT, .FutureSight
- db -1
-
-.LightScreen: ; 2c487
- ld a, [EnemyScreens]
- bit SCREENS_LIGHT_SCREEN, a
- ret
-
-.Mist: ; 2c48d
- ld a, [EnemySubStatus4]
- bit SUBSTATUS_MIST, a
- ret
-
-.FocusEnergy: ; 2c493
- ld a, [EnemySubStatus4]
- bit SUBSTATUS_FOCUS_ENERGY, a
- ret
-
-.Confuse: ; 2c499
- ld a, [PlayerSubStatus3]
- bit SUBSTATUS_CONFUSED, a
- ret nz
- ld a, [PlayerScreens]
- bit SCREENS_SAFEGUARD, a
- ret
-
-.Transform: ; 2c4a5
- ld a, [EnemySubStatus5]
- bit SUBSTATUS_TRANSFORMED, a
- ret
-
-.Reflect: ; 2c4ab
- ld a, [EnemyScreens]
- bit SCREENS_REFLECT, a
- ret
-
-.Substitute: ; 2c4b1
- ld a, [EnemySubStatus4]
- bit SUBSTATUS_SUBSTITUTE, a
- ret
-
-.LeechSeed: ; 2c4b7
- ld a, [PlayerSubStatus4]
- bit SUBSTATUS_LEECH_SEED, a
- ret
-
-.Disable: ; 2c4bd
- ld a, [PlayerDisableCount]
- and a
- ret
-
-.Encore: ; 2c4c2
- ld a, [PlayerSubStatus5]
- bit SUBSTATUS_ENCORED, a
- ret
-
-.Snore:
-.SleepTalk: ; 2c4c8
- ld a, [EnemyMonStatus]
- and SLP
- jr z, .Redundant
- jr .NotRedundant
-
-.MeanLook: ; 2c4d1
- ld a, [EnemySubStatus5]
- bit SUBSTATUS_CANT_RUN, a
- ret
-
-.Nightmare: ; 2c4d7
- ld a, [BattleMonStatus]
- and a
- jr z, .Redundant
- ld a, [PlayerSubStatus1]
- bit SUBSTATUS_NIGHTMARE, a
- ret
-
-.Spikes: ; 2c4e3
- ld a, [PlayerScreens]
- bit SCREENS_SPIKES, a
- ret
-
-.Foresight: ; 2c4e9
- ld a, [PlayerSubStatus1]
- bit SUBSTATUS_IDENTIFIED, a
- ret
-
-.PerishSong: ; 2c4ef
- ld a, [PlayerSubStatus1]
- bit SUBSTATUS_PERISH, a
- ret
-
-.Sandstorm: ; 2c4f5
- ld a, [Weather]
- cp WEATHER_SANDSTORM
- jr z, .Redundant
- jr .NotRedundant
-
-.Attract: ; 2c4fe
- callba CheckOppositeGender
- jr c, .Redundant
- ld a, [PlayerSubStatus1]
- bit SUBSTATUS_IN_LOVE, a
- ret
-
-.Safeguard: ; 2c50c
- ld a, [EnemyScreens]
- bit SCREENS_SAFEGUARD, a
- ret
-
-.RainDance: ; 2c512
- ld a, [Weather]
- cp WEATHER_RAIN
- jr z, .Redundant
- jr .NotRedundant
-
-.SunnyDay: ; 2c51b
- ld a, [Weather]
- cp WEATHER_SUN
- jr z, .Redundant
- jr .NotRedundant
-
-.DreamEater: ; 2c524
- ld a, [BattleMonStatus]
- and SLP
- jr z, .Redundant
- jr .NotRedundant
-
-.Swagger: ; 2c52d
- ld a, [PlayerSubStatus3]
- bit SUBSTATUS_CONFUSED, a
- ret
-
-.FutureSight: ; 2c533
- ld a, [EnemyScreens]
- bit 5, a
- ret
-
-.Heal:
-.MorningSun:
-.Synthesis:
-.Moonlight: ; 2c539
- callba AICheckEnemyMaxHP
- jr nc, .NotRedundant
-
-.Teleport:
-.Redundant: ; 2c541
- ld a, 1
- and a
- ret
-
-.NotRedundant: ; 2c545
- xor a
- ret
+INCLUDE "text/trainer_class_names.asm"
+INCLUDE "battle/ai/redundant.asm"
INCLUDE "event/move_deleter.asm"
+INCLUDE "engine/mysterygift2.asm"
-Function2c642: ; 2c642 (b:4642)
- ld de, OverworldMap
- ld a, $1
- ld [de], a
- inc de
- ld a, BANK(sGameData)
- call GetSRAMBank
- ld hl, sPlayerData + PlayerID - wPlayerData
- ld a, [hli]
- ld [de], a
- ld b, a
- inc de
- ld a, [hl]
- ld [de], a
- ld c, a
- inc de
- push bc
- ld hl, sPlayerData + PlayerName - wPlayerData
- ld bc, NAME_LENGTH
- call CopyBytes
- push de
- ld hl, sPokemonData + PokedexCaught - wPokemonData
- ld b, (NUM_POKEMON + 7) / 8
- call CountSetBits
- pop de
- pop bc
- ld a, [wd265]
- ld [de], a
- inc de
- call CloseSRAM
- call Random
- and $1
- ld [de], a
- inc de
- call Function2c6ac
- ld [de], a
- inc de
- ld a, c
- ld c, b
- ld b, a
- call Function2c6ac
- ld [de], a
- inc de
- ld a, BANK(sBackupMysteryGiftItem)
- call GetSRAMBank
- ld a, [sBackupMysteryGiftItem]
- ld [de], a
- inc de
- ld a, [sBackupMysteryGiftItem + 1]
- ld [de], a
- ld a, $14
- ld [wca00], a
- call CloseSRAM
- ld hl, OverworldMap
- ld de, wc950
- ld bc, SCREEN_WIDTH
- jp CopyBytes
-
-Function2c6ac: ; 2c6ac (b:46ac)
- push de
- call Random
- cp $19 ; 10 percent
- jr c, .tenpercent
- call Random
- and $7
- ld d, a
- rl d
- ld e, $80
-.loop
- rlc e
- dec a
- jr nz, .loop
- ld a, e
- and c
- jr z, .skip
- ld a, $1
-.skip
- add d
- jr .done
-
-.tenpercent
- call Random
- cp $32 ; 20 percent
- jr c, .twopercent
- call Random
- and $3
- ld d, a
- rl d
- ld e, $80
-.loop2
- rlc e
- dec a
- jr nz, .loop2
- ld a, e
- and b
- jr z, .skip2
- ld a, $1
-.skip2
- add d
- add $10
- jr .done
-
-.twopercent
- call Random
- cp $32 ; 50 ; 20 percent
- jr c, .pointfourpercent
- ld a, b
- swap a
- and $7
- add $18
- jr .done
-
-.pointfourpercent
- ld a, b
- and $80
- ld a, $20
- jr z, .done
- ld a, $21
-
-.done
- pop de
- ret
-
-MysteryGiftGetItemHeldEffect: ; 2c708 (b:4708)
- ld a, c
- cp $25 ; 37
- jr nc, Function2c722
- ld hl, Unknown_2c725
- ld b, 0
- add hl, bc
- ld c, [hl]
- ret
-
-MysteryGiftGetDecoration: ; 2c715 (b:4715)
- ld a, c
- cp $25 ; 37
- jr nc, Function2c722
- ld hl, Unknown_2c74a
- ld b, 0
- add hl, bc
- ld c, [hl]
- ret
-
-Function2c722: ; 2c722 (b:4722)
- ld c, DECO_POLKADOT_BED ; GREAT_BALL
- ret
-; 2c725 (b:4725)
-
-Unknown_2c725: ; 2c725
-; May or may not be items.
- db BERRY
- db PRZCUREBERRY
- db MINT_BERRY
- db ICE_BERRY
- db BURNT_BERRY
- db PSNCUREBERRY
- db GUARD_SPEC
- db X_DEFEND
- db X_ATTACK
- db BITTER_BERRY
- db DIRE_HIT
- db X_SPECIAL
- db X_ACCURACY
- db EON_MAIL
- db MORPH_MAIL
- db MUSIC_MAIL
- db MIRACLEBERRY
- db GOLD_BERRY
- db REVIVE
- db GREAT_BALL
- db SUPER_REPEL
- db MAX_REPEL
- db ELIXER
- db ETHER
- db WATER_STONE
- db FIRE_STONE
- db LEAF_STONE
- db THUNDERSTONE
- db MAX_ETHER
- db MAX_ELIXER
- db MAX_REVIVE
- db SCOPE_LENS
- db HP_UP
- db PP_UP
- db RARE_CANDY
- db BLUESKY_MAIL
- db MIRAGE_MAIL
-; 2c74a
-
-Unknown_2c74a: ; 2c74a
-; May or may not be items.
- db DECO_SNES
- db DECO_BIG_SNORLAX_DOLL
- db DECO_BIG_ONIX_DOLL
- db DECO_BIG_LAPRAS_DOLL
- db DECO_DOLLS
- db DECO_PIKACHU_DOLL
- db DECO_SURF_PIKACHU_DOLL
- db DECO_CLEFAIRY_DOLL
- db DECO_JIGGLYPUFF_DOLL
- db DECO_BULBASAUR_DOLL
- db DECO_TROPICPLANT
- db DECO_JUMBOPLANT
- db DECO_TOWN_MAP
- db DECO_CHARMANDER_DOLL
- db DECO_POLIWAG_DOLL
- db DECO_DIGLETT_DOLL
- db DECO_BLUE_CARPET
- db DECO_YELLOW_CARPET
- db DECO_POSTERS
- db DECO_PIKACHU_POSTER
- db DECO_N64
- db DECO_BIG_DOLLS
- db DECO_BEDS
- db DECO_FEATHERY_BED
- db DECO_POLKADOT_BED
- db DECO_PIKACHU_BED
- db DECO_CARPETS
- db DECO_RED_CARPET
- db DECO_GREEN_CARPET
- db DECO_CLEFAIRY_POSTER
- db DECO_ODDISH_DOLL
- db DECO_MAGNAPLANT
- db DECO_GENGAR_DOLL
- db DECO_CONSOLES
- db DECO_PINK_BED
- db DECO_SQUIRTLE_DOLL
- db DECO_STARMIE_DOLL
-; 2c76f
-
-Function2c76f: ; 2c76f (b:476f)
- ld a, $1
- ld [hInMenu], a
- call Function2c8d3
- ld a, $0
- ld [hInMenu], a
- ret nc
- call Function1bee
- call WaitBGMap
- ld a, [CurItem]
- dec a
- ld [wd107], a
- ld hl, TMsHMs
- ld c, a
- ld b, $0
- add hl, bc
- ld a, [hl]
- ld [wItemQuantityBuffer], a
- call Function2c798
- scf
- ret
-
-Function2c798: ; 2c798 (b:4798)
- ld a, [CurItem]
- ld c, a
- callab GetNumberedTMHM
- ld a, c
- ld [CurItem], a
- ret
-
-ConvertCurItemIntoCurTMHM: ; 2c7a7 (b:47a7)
- ld a, [CurItem]
- ld c, a
- callab GetTMHMNumber
- ld a, c
- ld [wCurTMHM], a
- ret
-
-GetTMHMItemMove: ; 2c7b6 (b:47b6)
- call ConvertCurItemIntoCurTMHM
- predef GetTMHMMove
- ret
-
-Function2c7bf: ; 2c7bf (b:47bf)
- ld hl, Options
- ld a, [hl]
- push af
- res 4, [hl]
- ld a, [CurItem]
- cp TM01
- jr c, .NotTMHM
- call GetTMHMItemMove
- ld a, [wCurTMHM]
- ld [wd262], a
- call GetMoveName
- call CopyName1
- ld hl, UnknownText_0x2c8bf ; Booted up a TM
- ld a, [CurItem]
- cp HM01
- jr c, .TM
- ld hl, UnknownText_0x2c8c4 ; Booted up an HM
-.TM
- call PrintText
- ld hl, UnknownText_0x2c8c9
- call PrintText
- call YesNoBox
-.NotTMHM
- pop bc
- ld a, b
- ld [Options], a
- ret
-
-
-Function2c7fb: ; 2c7fb
- ld hl, StringBuffer2
- ld de, wd066
- ld bc, $c
- call CopyBytes
- call ClearBGPalettes
-
-Function2c80a: ; 2c80a
- callba LoadPartyMenuGFX
- callba InitPartyMenuWithCancel
- callba InitPartyMenuGFX
- ld a, $3
- ld [PartyMenuActionText], a
-.loopback
- callba WritePartyMenuTilemap
- callba PrintPartyMenuText
- call WaitBGMap
- call SetPalettes
- call DelayFrame
- callba PartyMenuSelect
- push af
- ld a, [CurPartySpecies]
- cp EGG
- pop bc ; now contains the former contents of af
- jr z, .egg
- push bc
- ld hl, wd066
- ld de, StringBuffer2
- ld bc, $c
- call CopyBytes
- pop af ; now contains the original contents of af
- ret
-
-.egg
- push hl
- push de
- push bc
- push af
- ld de, SFX_WRONG
- call PlaySFX
- call WaitSFX
- pop af
- pop bc
- pop de
- pop hl
- jr .loopback
-; 2c867
-
-Function2c867: ; 2c867
- predef CanLearnTMHMMove
-
- push bc
- ld a, [CurPartyMon]
- ld hl, PartyMonNicknames
- call GetNick
- pop bc
-
- ld a, c
- and a
- jr nz, .compatible
- push de
- ld de, SFX_WRONG
- call PlaySFX
- pop de
- ld hl, UnknownText_0x2c8ce
- call PrintText
- jr .nope
-
-.compatible
- callab KnowsMove
- jr c, .nope
-
- predef LearnMove
- ld a, b
- and a
- jr z, .nope
-
- callba MobileFn_106049
- ld a, [CurItem]
- call IsHM
- ret c
-
- ld c, HAPPINESS_LEARNMOVE
- callab ChangeHappiness
- call Function2cb0c
- jr .asm_2c8bd
-
-.nope
- and a
- ret
-
-.asm_2c8b8
- ld a, $2
- ld [wd0ec], a
-
-.asm_2c8bd
- scf
- ret
-; 2c8bf (b:48bf)
-
-UnknownText_0x2c8bf: ; 0x2c8bf
- ; Booted up a TM.
- text_jump UnknownText_0x1c0373
- db "@"
-; 0x2c8c4
-
-UnknownText_0x2c8c4: ; 0x2c8c4
- ; Booted up an HM.
- text_jump UnknownText_0x1c0384
- db "@"
-; 0x2c8c9
-
-UnknownText_0x2c8c9: ; 0x2c8c9
- ; It contained @ . Teach @ to a #MON?
- text_jump UnknownText_0x1c0396
- db "@"
-; 0x2c8ce
-
-UnknownText_0x2c8ce: ; 0x2c8ce
- ; is not compatible with @ . It can't learn @ .
- text_jump UnknownText_0x1c03c2
- db "@"
-; 0x2c8d3
-
-Function2c8d3: ; 2c8d3 (b:48d3)
- xor a
- ld [hBGMapMode], a
- call Function2c9e2
- ld a, $2
- ld [wcfa1], a
- ld a, $7
- ld [wcfa2], a
- ld a, $1
- ld [wcfa4], a
- ld a, $5
- sub d
- inc a
- cp $6
- jr nz, .asm_2c8f1
- dec a
-.asm_2c8f1
- ld [wcfa3], a
- ld a, $c
- ld [wcfa5], a
- xor a
- ld [wcfa6], a
- ld a, $20
- ld [wcfa7], a
- ld a, $f3
- ld [wcfa8], a
- ld a, [wTMHMPocketCursor]
- inc a
- ld [MenuSelection2], a
- ld a, $1
- ld [wcfaa], a
- jr Function2c946
-
-Function2c915: ; 2c915 (b:4915)
- call Function2c9e2
- call Function1bc9
- ld b, a
- ld a, [MenuSelection2]
- dec a
- ld [wTMHMPocketCursor], a
- xor a
- ld [hBGMapMode], a
- ld a, [wcfa6]
- bit 7, a
- jp nz, Function2c9b1
- ld a, b
- ld [wcf73], a
- bit 0, a
- jp nz, Function2c974
- bit 1, a
- jp nz, Function2c9a5
- bit 4, a
- jp nz, Function2c9af
- bit 5, a
- jp nz, Function2c9af
-
-Function2c946: ; 2c946 (b:4946)
- call Function2c98a
- jp nc, Function2c9af
- hlcoord 0, 12
- ld b, $4
- ld c, $12
- call TextBox
- ld a, [CurItem]
- cp $3a
- jr nc, Function2c915
- ld [wd265], a
- predef GetTMHMMove
- ld a, [wd265]
- ld [CurSpecies], a
- hlcoord 1, 14
- call PrintMoveDesc
- jp Function2c915
-
-Function2c974: ; 2c974 (b:4974)
- call Function2cad6
- call Function2cb2a
- ld a, [MenuSelection2]
- dec a
- ld b, a
- ld a, [wTMHMPocketScrollPosition]
- add b
- ld b, a
- ld a, [wd265]
- cp b
- jr z, asm_2c9a8
-
-Function2c98a: ; 2c98a (b:498a)
- call Function2cab5
- ld a, [MenuSelection2]
- ld b, a
-.asm_2c991
- inc c
- ld a, c
- cp $3a
- jr nc, .asm_2c99f
- ld a, [hli]
- and a
- jr z, .asm_2c991
- dec b
- jr nz, .asm_2c991
- ld a, c
-.asm_2c99f
- ld [CurItem], a
- cp $ff
- ret
-
-Function2c9a5: ; 2c9a5 (b:49a5)
- call Function2cad6
-
-asm_2c9a8: ; 2c9a8 (b:49a8)
- ld a, $2
- ld [wcf73], a
- and a
- ret
-
-Function2c9af: ; 2c9af (b:49af)
- and a
- ret
-
-Function2c9b1: ; 2c9b1 (b:49b1)
- ld a, b
- bit 7, a
- jr nz, .skip
- ld hl, wTMHMPocketScrollPosition
- ld a, [hl]
- and a
- jp z, Function2c915
- dec [hl]
- call Function2c9e2
- jp Function2c946
-
-.skip
- call Function2cab5
- ld b, $5
-.loop
- inc c
- ld a, c
- cp NUM_TMS + NUM_HMS + 1
- jp nc, Function2c915
- ld a, [hli]
- and a
- jr z, .loop
- dec b
- jr nz, .loop
- ld hl, wTMHMPocketScrollPosition
- inc [hl]
- call Function2c9e2
- jp Function2c946
-
-Function2c9e2: ; 2c9e2 (b:49e2)
- ld a, [BattleType]
- cp BATTLETYPE_TUTORIAL
- jp z, Function2caca
-
- hlcoord 5, 2
- lb bc, 10, 15
- ld a, " "
- call ClearBox
- call Function2cab5
- ld d, $5
-.loop2
- inc c
- ld a, c
- cp NUM_TMS + NUM_HMS + 1
- jr nc, .NotTMHM
- ld a, [hli]
- and a
- jr z, .loop2
- ld b, a
- ld a, c
- ld [wd265], a
- push hl
- push de
- push bc
- call Function2ca86
- push hl
- ld a, [wd265]
- cp NUM_TMS + 1
- jr nc, .HM
- ld de, wd265
- lb bc, PRINTNUM_LEADINGZEROS | 1, 2
- call PrintNum
- jr .okay
-
-.HM
- push af
- sub NUM_TMS
- ld [wd265], a
- ld [hl], "H"
- inc hl
- ld de, wd265
- lb bc, PRINTNUM_RIGHTALIGN | 1, 2
- call PrintNum
- pop af
- ld [wd265], a
-.okay
- predef GetTMHMMove
- ld a, [wd265]
- ld [wd262], a
- call GetMoveName
- pop hl
- ld bc, $3
- add hl, bc
- push hl
- call PlaceString
- pop hl
- pop bc
- ld a, c
- push bc
- cp NUM_TMS + 1
- jr nc, .hm2
- ld bc, $1d
- add hl, bc
- ld [hl], $f1
- inc hl
- ld a, "0" ; why are we doing this?
- pop bc
- push bc
- ld a, b
- ld [wd265], a
- ld de, wd265
- lb bc, 1, 2
- call PrintNum
-.hm2
- pop bc
- pop de
- pop hl
- dec d
- jr nz, .loop2
- jr .done
-
-.NotTMHM
- call Function2ca86
-rept 3
- inc hl
-endr
- push de
- ld de, String_2caae
- call PlaceString
- pop de
-.done
- ret
-
-Function2ca86: ; 2ca86 (b:4a86)
- hlcoord 5, 0
- ld bc, $28
- ld a, 6
- sub d
- ld e, a
-.loop
- add hl, bc
- dec e
- jr nz, .loop
- ret
-; 2ca95 (b:4a95)
-
-Function2ca95: ; 2ca95
- pop hl
- ld bc, 3
- add hl, bc
- predef GetTMHMMove
- ld a, [wd265]
- ld [wd262], a
- call GetMoveName
- push hl
- call PlaceString
- pop hl
- ret
-; 2caae
-
-String_2caae: ; 2caae
- db "CANCEL@"
-; 2cab5
-
-Function2cab5: ; 2cab5 (b:4ab5)
- ld hl, TMsHMs
- ld a, [wTMHMPocketScrollPosition]
- ld b, a
- inc b
- ld c, 0
-.loop
- inc c
- ld a, [hli]
- and a
- jr z, .loop
- dec b
- jr nz, .loop
- dec hl
- dec c
- ret
-
-Function2caca: ; 2caca (b:4aca)
- hlcoord 9, 3
- push de
- ld de, String_2caae
- call PlaceString
- pop de
- ret
-
-Function2cad6: ; 2cad6 (b:4ad6)
- push de
- ld de, SFX_READ_TEXT_2
- call PlaySFX
- pop de
- ret
-; 2cadf (b:4adf)
-
-Function2cadf: ; 2cadf
- call ConvertCurItemIntoCurTMHM
- call Function2cafa
- ld hl, UnknownText_0x2caf0
- jr nc, .asm_2caed
- ld hl, UnknownText_0x2caf5
-
-.asm_2caed
- jp PrintText
-; 2caf0
-
-UnknownText_0x2caf0: ; 0x2caf0
- ; You have no room for any more @ S.
- text_jump UnknownText_0x1c03fa
- db "@"
-; 0x2caf5
-
-UnknownText_0x2caf5: ; 0x2caf5
- ; You received @ !
- text_jump UnknownText_0x1c0421
- db "@"
-; 0x2cafa
-
-Function2cafa: ; 2cafa
- ld a, [wd265]
- dec a
- ld hl, TMsHMs
- ld b, 0
- ld c, a
- add hl, bc
- ld a, [hl]
- inc a
- cp NUM_TMS * 2
- ret nc
- ld [hl], a
- ret
-; 2cb0c
-
-Function2cb0c: ; 2cb0c (b:4b0c)
- call ConvertCurItemIntoCurTMHM
- ld a, [wd265]
- dec a
- ld hl, TMsHMs
- ld b, 0
- ld c, a
- add hl, bc
- ld a, [hl]
- and a
- ret z
- dec a
- ld [hl], a
- ret nz
- ld a, [wTMHMPocketScrollPosition]
- and a
- ret z
- dec a
- ld [wTMHMPocketScrollPosition], a
- ret
-
-Function2cb2a: ; 2cb2a (b:4b2a)
- ld b, $0
- ld c, $39
- ld hl, TMsHMs
-.asm_2cb31
- ld a, [hli]
- and a
- jr z, .asm_2cb36
- inc b
-.asm_2cb36
- dec c
- jr nz, .asm_2cb31
- ld a, b
- ld [wd265], a
- ret
-
-
-PrintMoveDesc: ; 2cb3e
- push hl
- ld hl, MoveDescriptions
- ld a, [CurSpecies]
- dec a
- ld c, a
- ld b, 0
-rept 2
- add hl, bc
-endr
- ld a, [hli]
- ld e, a
- ld d, [hl]
- pop hl
- jp PlaceString
-; 2cb52
+INCLUDE "engine/tmhm2.asm"
MoveDescriptions:: ; 2cb52
INCLUDE "battle/moves/move_descriptions.asm"
; 2ed44
-
-Function2ed44: ; 2ed44
+GivePokerusAndConvertBerries: ; 2ed44
call ConvertBerriesToBerryJuice
ld hl, PartyMon1PokerusStatus
ld a, [PartyCount]
@@ -13907,12 +6784,11 @@ Function2ed44: ; 2ed44
jr z, .randomPokerusLoop
ld b, a
and $f0
- jr z, .asm_2ed91
+ jr z, .load_pkrs
ld a, b
and $7
inc a
-
-.asm_2ed91
+.load_pkrs
ld b, a
swap b
and $3
@@ -13923,10 +6799,10 @@ Function2ed44: ; 2ed44
.monHasActivePokerus
call Random
- cp $55
+ cp 1 + 33 percent
ret nc ; 1/3 chance
ld a, [PartyCount]
- cp $1
+ cp 1
ret z ; only one mon, nothing to do
ld c, [hl]
ld a, b
@@ -14035,7 +6911,6 @@ ShowLinkBattleParticipants: ; 2ee18
ret
; 2ee2f
-
FindFirstAliveMon: ; 2ee2f
xor a
ld [hMapAnims], a
@@ -14071,7 +6946,6 @@ FindFirstAliveMon: ; 2ee2f
ret
; 2ee6c
-
PlayBattleMusic: ; 2ee6c
push hl
@@ -14174,13 +7048,12 @@ PlayBattleMusic: ; 2ee6c
ret
; 2ef18
-
ClearBattleRAM: ; 2ef18
xor a
- ld [wd0ec], a
+ ld [wPlayerAction], a
ld [wBattleResult], a
- ld hl, wd0d8
+ ld hl, wPartyMenuCursor
rept 3
ld [hli], a
endr
@@ -14217,26 +7090,25 @@ endr
callab ResetEnemyStatLevels
- call ResetTextRelatedRAM
+ call ClearWindowData
ld hl, hBGMapAddress
xor a
ld [hli], a
- ld [hl], $98
+ ld [hl], VBGMap0 / $100
ret
; 2ef6e
-
FillBox: ; 2ef6e
-; Fill wc2c6-aligned box width b height c
+; Fill wBoxAlignment-aligned box width b height c
; with iterating tile starting from hFillBox at hl.
; Predef $13
- ld de, 20
+ ld de, SCREEN_WIDTH
- ld a, [wc2c6]
+ ld a, [wBoxAlignment]
and a
- jr nz, .left
+ jr nz, .right
ld a, [hFillBox]
.x1
@@ -14257,7 +7129,7 @@ FillBox: ; 2ef6e
jr nz, .x1
ret
-.left
+.right
; Right-aligned.
push bc
ld b, 0
@@ -14285,25 +7157,21 @@ FillBox: ; 2ef6e
ret
; 2ef9f
-
SECTION "Tileset Data 4", ROMX, BANK[TILESETS_4]
INCLUDE "tilesets/data_4.asm"
-
-SECTION "bankD", ROMX, BANK[$D]
+SECTION "Effect Commands", ROMX, BANK[$D]
INCLUDE "battle/effect_commands.asm"
-
-SECTION "bankE", ROMX, BANK[$E]
+SECTION "Enemy Trainers", ROMX, BANK[$E]
INCLUDE "battle/ai/items.asm"
AIScoring: ; 38591
INCLUDE "battle/ai/scoring.asm"
-
GetTrainerClassName: ; 3952d
ld hl, RivalName
ld a, c
@@ -14326,8 +7194,8 @@ GetTrainerClassName: ; 3952d
ret
; 39550
-Function39550: ; 39550
- ld hl, wd26b
+GetOTName: ; 39550
+ ld hl, OTPlayerName
ld a, [wLinkMode]
and a
jr nz, .ok
@@ -14352,13 +7220,13 @@ Function39550: ; 39550
ret
; 3957b
-Function3957b: ; 3957b
+GetTrainerAttributes: ; 3957b
ld a, [TrainerClass]
ld c, a
- call Function39550
+ call GetOTName
ld a, [TrainerClass]
dec a
- ld hl, TrainerClassAttributes
+ ld hl, TrainerClassAttributes + TRNATTR_ITEM1
ld bc, NUM_TRAINER_ATTRIBUTES
call AddNTimes
ld de, wEnemyTrainerItem1
@@ -14374,491 +7242,22 @@ Function3957b: ; 3957b
INCLUDE "trainers/attributes.asm"
-
-ReadTrainerParty: ; 39771
- ld a, [InBattleTowerBattle]
- bit 0, a
- ret nz
-
- ld a, [wLinkMode]
- and a
- ret nz
-
- ld hl, OTPartyCount
- xor a
- ld [hli], a
- dec a
- ld [hl], a
-
- ld hl, OTPartyMons
- ld bc, OTPartyMonsEnd - OTPartyMons
- xor a
- call ByteFill
-
- ld a, [OtherTrainerClass]
- cp CAL
- jr nz, .not_cal2
- ld a, [OtherTrainerID]
- cp CAL2
- jr z, .cal2
- ld a, [OtherTrainerClass]
-.not_cal2
-
- dec a
- ld c, a
- ld b, 0
- ld hl, TrainerGroups
-rept 2
- add hl, bc
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
-
- ld a, [OtherTrainerID]
- ld b, a
-.skip_trainer
- dec b
- jr z, .got_trainer
-.loop
- ld a, [hli]
- cp $ff
- jr nz, .loop
- jr .skip_trainer
-.got_trainer
-
-.skip_name
- ld a, [hli]
- cp "@"
- jr nz, .skip_name
-
- ld a, [hli]
- ld c, a
- ld b, 0
- ld d, h
- ld e, l
- ld hl, TrainerTypes
-rept 2
- add hl, bc
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld bc, .done
- push bc
- jp [hl]
-
-.done
- jp ComputeTrainerReward
-
-.cal2
- ld a, BANK(sMysteryGiftTrainer)
- call GetSRAMBank
- ld de, sMysteryGiftTrainer
- call TrainerType2
- call CloseSRAM
- jr .done
-; 397e3
-
-TrainerTypes: ; 397e3
- dw TrainerType1 ; level, species
- dw TrainerType2 ; level, species, moves
- dw TrainerType3 ; level, species, item
- dw TrainerType4 ; level, species, item, moves
-; 397eb
-
-TrainerType1: ; 397eb
-; normal (level, species)
- ld h, d
- ld l, e
-.loop
- ld a, [hli]
- cp $ff
- ret z
-
- ld [CurPartyLevel], a
- ld a, [hli]
- ld [CurPartySpecies], a
- ld a, OTPARTYMON
- ld [MonType], a
- push hl
- predef TryAddMonToParty
- pop hl
- jr .loop
-; 39806
-
-TrainerType2: ; 39806
-; moves
- ld h, d
- ld l, e
-.loop
- ld a, [hli]
- cp $ff
- ret z
-
- ld [CurPartyLevel], a
- ld a, [hli]
- ld [CurPartySpecies], a
- ld a, OTPARTYMON
- ld [MonType], a
-
- push hl
- predef TryAddMonToParty
- ld a, [OTPartyCount]
- dec a
- ld hl, OTPartyMon1Moves
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- pop hl
-
- ld b, NUM_MOVES
-.copy_moves
- ld a, [hli]
- ld [de], a
- inc de
- dec b
- jr nz, .copy_moves
-
- push hl
-
- ld a, [OTPartyCount]
- dec a
- ld hl, OTPartyMon1Species
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- ld hl, MON_PP
- add hl, de
- push hl
- ld hl, MON_MOVES
- add hl, de
- pop de
-
- ld b, NUM_MOVES
-.copy_pp
- ld a, [hli]
- and a
- jr z, .copied_pp
-
- push hl
- push bc
- dec a
- ld hl, Moves + MOVE_PP
- 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, .copy_pp
-.copied_pp
-
- pop hl
- jr .loop
-; 39871
-
-TrainerType3: ; 39871
-; item
- ld h, d
- ld l, e
-.loop
- ld a, [hli]
- cp $ff
- ret z
-
- ld [CurPartyLevel], a
- ld a, [hli]
- ld [CurPartySpecies], a
- ld a, OTPARTYMON
- ld [MonType], a
- push hl
- predef TryAddMonToParty
- ld a, [OTPartyCount]
- dec a
- ld hl, OTPartyMon1Item
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- pop hl
- ld a, [hli]
- ld [de], a
- jr .loop
-; 3989d (e:589d)
-
-TrainerType4: ; 3989d
-; item + moves
- ld h, d
- ld l, e
-.loop
- ld a, [hli]
- cp $ff
- ret z
-
- ld [CurPartyLevel], a
- ld a, [hli]
- ld [CurPartySpecies], a
-
- ld a, OTPARTYMON
- ld [MonType], a
-
- push hl
- predef TryAddMonToParty
- ld a, [OTPartyCount]
- dec a
- ld hl, OTPartyMon1Item
- ld bc, PARTYMON_STRUCT_LENGTH
- 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, OTPartyMon1Moves
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- pop hl
-
- ld b, NUM_MOVES
-.copy_moves
- ld a, [hli]
- ld [de], a
- inc de
- dec b
- jr nz, .copy_moves
-
- push hl
-
- ld a, [OTPartyCount]
- dec a
- ld hl, OTPartyMon1
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- ld d, h
- ld e, l
- ld hl, MON_PP
- add hl, de
-
- push hl
- ld hl, MON_MOVES
- add hl, de
- pop de
-
- ld b, NUM_MOVES
-.copy_pp
- ld a, [hli]
- and a
- jr z, .copied_pp
-
- push hl
- push bc
- dec a
- ld hl, Moves + MOVE_PP
- 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, .copy_pp
-.copied_pp
-
- pop hl
- jr .loop
-; 3991b
-
-ComputeTrainerReward: ; 3991b (e:591b)
- ld hl, hProduct
- xor a
-rept 3
- ld [hli], a
-endr
- ld a, [wEnemyTrainerBaseReward]
- ld [hli], a
- ld a, [CurPartyLevel]
- ld [hl], a
- call Multiply
- ld hl, wBattleReward
- xor a
- ld [hli], a
- ld a, [hProduct + 2]
- ld [hli], a
- ld a, [hProduct + 3]
- ld [hl], a
- ret
-
-
-Battle_GetTrainerName:: ; 39939
- ld a, [InBattleTowerBattle]
- bit 0, a
- ld hl, wd26b
- jp nz, CopyTrainerName
-
- ld a, [OtherTrainerID]
- ld b, a
- ld a, [OtherTrainerClass]
- ld c, a
-
-GetTrainerName:: ; 3994c
- ld a, c
- cp CAL
- jr nz, .not_cal2
-
- ld a, BANK(sMysteryGiftTrainerHouseFlag)
- call GetSRAMBank
- ld a, [sMysteryGiftTrainerHouseFlag]
- and a
- call CloseSRAM
- jr z, .not_cal2
-
- ld a, BANK(sMysteryGiftPartnerName)
- call GetSRAMBank
- ld hl, sMysteryGiftPartnerName
- call CopyTrainerName
- jp CloseSRAM
-
-.not_cal2
- dec c
- push bc
- ld b, 0
- ld hl, TrainerGroups
-rept 2
- add hl, bc
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- pop bc
-
-.loop
- dec b
- jr z, CopyTrainerName
-
-.skip
- ld a, [hli]
- cp $ff
- jr nz, .skip
- jr .loop
-
-CopyTrainerName: ; 39984
- ld de, StringBuffer1
- push de
- ld bc, NAME_LENGTH
- call CopyBytes
- pop de
- ret
-; 39990
-
-Function39990: ; 39990
-; This function is useless.
- ld de, StringBuffer1
- push de
- ld bc, NAME_LENGTH
- pop de
- ret
-; 39999
+INCLUDE "trainers/read_party.asm"
INCLUDE "trainers/trainer_pointers.asm"
INCLUDE "trainers/trainers.asm"
-
-SECTION "bankF", ROMX, BANK[$F]
+SECTION "Battle Core", ROMX, BANK[$F]
INCLUDE "battle/core.asm"
INCLUDE "battle/effect_command_pointers.asm"
-
SECTION "bank10", ROMX, BANK[$10]
-
INCLUDE "engine/pokedex.asm"
-
-Function41a7f: ; 41a7f
- xor a
- ld [hBGMapMode], a
- callba Function1de247
- call Function41af7
- call DisableLCD
- call LoadStandardFont
- call LoadFontsExtra
- call Function414b7
- call Function4147b
- ld a, [wd265]
- ld [CurPartySpecies], a
- call Function407fd
- call Function40ba0
- hlcoord 0, 17
- ld [hl], $3b
- inc hl
- ld bc, $13
- ld a, " "
- call ByteFill
- callba Function4424d
- call EnableLCD
- call WaitBGMap
- call GetBaseData
- ld de, VTiles2
- predef GetFrontpic
- ld a, $4
- call Function41423
- ld a, [CurPartySpecies]
- call PlayCry
- ret
-; 41ad7
-
-
-Function41ad7: ; 41ad7 (10:5ad7)
- ld a, $3
- ld [hBGMapMode], a
- ld c, 4
- call DelayFrames
- ret
-
-Function41ae1: ; 41ae1 (10:5ae1)
- ld a, $4
- ld [hBGMapMode], a
- ld c, 4
- call DelayFrames
- ret
-
-Function41aeb: ; 41aeb (10:5aeb)
- ld a, [hCGB]
- and a
- jr z, .asm_41af3
- call Function41ae1
-.asm_41af3
- call Function41ad7
- ret
-
-
-Function41af7: ; 41af7
- xor a
- ld [hBGMapMode], a
- ret
-; 41afb
-
-
INCLUDE "battle/moves/moves.asm"
INCLUDE "engine/evolve.asm"
@@ -14867,233 +7266,10 @@ SECTION "bank11", ROMX, BANK[$11]
INCLUDE "engine/fruit_trees.asm"
+INCLUDE "battle/ai/move.asm"
-AIChooseMove: ; 440ce
-; Score each move in EnemyMonMoves starting from Buffer1. Lower is better.
-; Pick the move with the lowest score.
-
-; Wildmons attack at random.
- ld a, [wBattleMode]
- dec a
- ret z
-
- ld a, [wLinkMode]
- and a
- ret nz
-
-; No use picking a move if there's no choice.
- callba CheckSubstatus_RechargeChargedRampageBideRollout
- ret nz
-
-
-; The default score is 20. Unusable moves are given a score of 80.
- ld a, 20
- ld hl, Buffer1
-rept 3
- ld [hli], a
-endr
- ld [hl], a
-
-; Don't pick disabled moves.
- ld a, [EnemyDisabledMove]
- and a
- jr z, .CheckPP
-
- ld hl, EnemyMonMoves
- ld c, 0
-.CheckDisabledMove
- cp [hl]
- jr z, .ScoreDisabledMove
- inc c
- inc hl
- jr .CheckDisabledMove
-.ScoreDisabledMove
- ld hl, Buffer1
- ld b, 0
- add hl, bc
- ld [hl], 80
-
-; Don't pick moves with 0 PP.
-.CheckPP
- ld hl, Buffer1 - 1
- ld de, EnemyMonPP
- ld b, 0
-.CheckMovePP
- inc b
- ld a, b
- cp EnemyMonMovesEnd - EnemyMonMoves + 1
- jr z, .ApplyLayers
- inc hl
- ld a, [de]
- inc de
- and $3f
- jr nz, .CheckMovePP
- ld [hl], 80
- jr .CheckMovePP
-
-
-; Apply AI scoring layers depending on the trainer class.
-.ApplyLayers
- ld hl, TrainerClassAttributes + 3
-
- ; If we have a battle in BattleTower just load the Attributes of the first TrainerClass (Falkner)
- ; so we have always the same AI, regardless of the loaded class of trainer
- ld a, [InBattleTowerBattle]
- bit 0, a
- jr nz, .battle_tower_skip
-
- ld a, [TrainerClass]
- dec a
- ld bc, 7 ; Trainer2AI - Trainer1AI
- call AddNTimes
-
-.battle_tower_skip
- lb bc, CHECK_FLAG, 0
- push bc
- push hl
-
-.CheckLayer
- pop hl
- pop bc
-
- ld a, c
- cp 16 ; up to 16 scoring layers
- jr z, .DecrementScores
-
- push bc
- ld d, BANK(TrainerClassAttributes)
- predef FlagPredef
- ld d, c
- pop bc
-
- inc c
- push bc
- push hl
-
- ld a, d
- and a
- jr z, .CheckLayer
-
- ld hl, AIScoringPointers
- dec c
- ld b, 0
-rept 2
- add hl, bc
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, BANK(AIScoring)
- call FarCall_hl
-
- jr .CheckLayer
-
-; Decrement the scores of all moves one by one until one reaches 0.
-.DecrementScores
- ld hl, Buffer1
- ld de, EnemyMonMoves
- ld c, EnemyMonMovesEnd - EnemyMonMoves
-
-.DecrementNextScore
- ; If the enemy has no moves, this will infinite.
- ld a, [de]
- inc de
- and a
- jr z, .DecrementScores
-
- ; We are done whenever a score reaches 0
- dec [hl]
- jr z, .PickLowestScoreMoves
-
- ; If we just decremented the fourth move's score, go back to the first move
- inc hl
- dec c
- jr z, .DecrementScores
-
- jr .DecrementNextScore
-
-; In order to avoid bias towards the moves located first in memory, increment the scores
-; that were decremented one more time than the rest (in case there was a tie).
-; This means that the minimum score will be 1.
-.PickLowestScoreMoves
- ld a, c
-
-.move_loop
- inc [hl]
- dec hl
- inc a
- cp NUM_MOVES + 1
- jr nz, .move_loop
-
- ld hl, Buffer1
- ld de, EnemyMonMoves
- ld c, NUM_MOVES
-
-; Give a score of 0 to a blank move
-.loop2
- ld a, [de]
- and a
- jr nz, .skip_load
- ld [hl], a
-
-; Disregard the move if its score is not 1
-.skip_load
- ld a, [hl]
- dec a
- jr z, .keep
- xor a
- ld [hli], a
- jr .after_toss
-
-.keep
- ld a, [de]
- ld [hli], a
-.after_toss
- inc de
- dec c
- jr nz, .loop2
-
-; Randomly choose one of the moves with a score of 1
-.ChooseMove
- ld hl, Buffer1
- call Random
- and 3
- ld c, a
- ld b, 0
- add hl, bc
- ld a, [hl]
- and a
- jr z, .ChooseMove
-
- ld [CurEnemyMove], a
- ld a, c
- ld [CurEnemyMoveNum], a
- ret
-; 441af
-
-
-AIScoringPointers: ; 441af
- dw AI_Basic
- dw AI_Setup
- dw AI_Types
- dw AI_Offensive
- dw AI_Smart
- dw AI_Opportunist
- dw AI_Aggressive
- dw AI_Cautious
- dw AI_Status
- dw AI_Risky
- dw AI_None
- dw AI_None
- dw AI_None
- dw AI_None
- dw AI_None
- dw AI_None
-; 441cf
-
-
-Function441cf: ; 441cf
- ld hl, Unknown_441fc
+AnimateDexSearchSlowpoke: ; 441cf
+ ld hl, .FrameIDs
ld b, 25
.loop
ld a, [hli]
@@ -15101,53 +7277,53 @@ Function441cf: ; 441cf
; Wrap around
cp $fe
jr nz, .ok
- ld hl, Unknown_441fc
+ ld hl, .FrameIDs
ld a, [hli]
.ok
- ld [wc7db], a
+ ld [wDexSearchSlowpokeFrame], a
ld a, [hli]
ld c, a
push bc
push hl
- call Function44207
+ call DoDexSearchSlowpokeFrame
pop hl
pop bc
call DelayFrames
dec b
jr nz, .loop
xor a
- ld [wc7db], a
- call Function44207
+ ld [wDexSearchSlowpokeFrame], a
+ call DoDexSearchSlowpokeFrame
ld c, 32
call DelayFrames
ret
; 441fc
-Unknown_441fc: ; 441fc
+.FrameIDs: ; 441fc
+ ; frame ID, duration
db 0, 7
db 1, 7
db 2, 7
db 3, 7
db 4, 7
- db $fe
+ db -2
; 44207
-
-Function44207: ; 44207
- ld a, [wc7db]
- ld hl, Unknown_44228
+DoDexSearchSlowpokeFrame: ; 44207
+ ld a, [wDexSearchSlowpokeFrame]
+ ld hl, .SpriteData
ld de, Sprites
-.asm_44210
+.loop
ld a, [hli]
- cp $ff
+ cp -1
ret z
ld [de], a
inc de
ld a, [hli]
ld [de], a
inc de
- ld a, [wc7db]
+ ld a, [wDexSearchSlowpokeFrame]
ld b, a
add a
add b
@@ -15158,50 +7334,53 @@ Function44207: ; 44207
ld a, [hli]
ld [de], a
inc de
- jr .asm_44210
+ jr .loop
; 44228
-Unknown_44228: ; 44228
- db $58, $48, $00, $00
- db $58, $50, $01, $00
- db $58, $58, $02, $00
- db $60, $48, $10, $00
- db $60, $50, $11, $00
- db $60, $58, $12, $00
- db $68, $48, $20, $00
- db $68, $50, $21, $00
- db $68, $58, $22, $00
- db $ff
+.SpriteData: ; 44228
+ dsprite 11, 0, 9, 0, $00, $00
+ dsprite 11, 0, 10, 0, $01, $00
+ dsprite 11, 0, 11, 0, $02, $00
+ dsprite 12, 0, 9, 0, $10, $00
+ dsprite 12, 0, 10, 0, $11, $00
+ dsprite 12, 0, 11, 0, $12, $00
+ dsprite 13, 0, 9, 0, $20, $00
+ dsprite 13, 0, 10, 0, $21, $00
+ dsprite 13, 0, 11, 0, $22, $00
+ db -1
; 4424d
-Function4424d: ; 4424d
+DisplayDexEntry: ; 4424d
call GetPokemonName
hlcoord 9, 3
- call PlaceString
+ call PlaceString ; mon species
ld a, [wd265]
ld b, a
- call Function44333
+ call GetDexEntryPointer
ld a, b
push af
hlcoord 9, 5
- call FarString
+ call FarString ; dex species
ld h, b
ld l, c
push de
+; Print dex number
hlcoord 2, 8
- ld a, $5c
+ ld a, $5c ; No
ld [hli], a
- ld a, $5d
+ ld a, $5d ; .
ld [hli], a
ld de, wd265
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
call PrintNum
+; Check to see if we caught it. Get out of here if we haven't.
ld a, [wd265]
dec a
call CheckCaughtMon
pop hl
pop bc
ret z
+; Get the height of the Pokemon.
ld a, [CurPartySpecies]
ld [CurSpecies], a
inc hl
@@ -15212,12 +7391,11 @@ Function4424d: ; 4424d
ld d, l
ld e, h
pop hl
-rept 2
inc hl
-endr
+ inc hl
ld a, d
or e
- jr z, .asm_442b0
+ jr z, .skip_height
push hl
push de
ld hl, [sp+$0]
@@ -15227,11 +7405,11 @@ endr
lb bc, 2, 36
call PrintNum
hlcoord 14, 7
- ld [hl], "<ROCKET>"
+ ld [hl], $5e ; ft symbol
pop af
pop hl
-.asm_442b0
+.skip_height
pop af
push af
inc hl
@@ -15242,32 +7420,34 @@ endr
ld e, h
ld a, e
or d
- jr z, .skip
+ jr z, .skip_weight
push de
ld hl, [sp+$0]
ld d, h
ld e, l
hlcoord 11, 9
- lb bc, 2, 69
+ lb bc, 2, PRINTNUM_RIGHTALIGN | 5
call PrintNum
pop de
-.skip
+.skip_weight
+; Page 1
lb bc, 5, SCREEN_WIDTH - 2
hlcoord 2, 11
call ClearBox
hlcoord 1, 10
- ld bc, $13
- ld a, $61
+ ld bc, SCREEN_WIDTH - 1
+ ld a, $61 ; horizontal divider
call ByteFill
+ ; page number
hlcoord 1, 9
- ld [hl], "<CONT>"
+ ld [hl], $55
inc hl
- ld [hl], "<CONT>"
+ ld [hl], $55
hlcoord 1, 10
- ld [hl], "<......>"
+ ld [hl], $56 ; P.
inc hl
- ld [hl], "<DONE>"
+ ld [hl], $57 ; 1
pop de
inc de
pop af
@@ -15278,23 +7458,26 @@ endr
ld a, [wPokedexStatus]
or a
ret z
+
+; Page 2
push bc
push de
lb bc, 5, SCREEN_WIDTH - 2
hlcoord 2, 11
call ClearBox
hlcoord 1, 10
- ld bc, $13
+ ld bc, SCREEN_WIDTH - 1
ld a, $61
call ByteFill
+ ; page number
hlcoord 1, 9
- ld [hl], "<CONT>"
+ ld [hl], $55
inc hl
- ld [hl], "<CONT>"
+ ld [hl], $55
hlcoord 1, 10
- ld [hl], "<......>"
+ ld [hl], $56 ; P.
inc hl
- ld [hl], "<PROMPT>"
+ ld [hl], $58 ; 2
pop de
inc de
pop af
@@ -15307,16 +7490,16 @@ String_44331: ; 44331
db "#@"
; 44333
-Function44333: ; 44333
+GetDexEntryPointer: ; 44333
+; return dex entry pointer b:de
push hl
ld hl, PokedexDataPointerTable
ld a, b
dec a
ld d, 0
ld e, a
-rept 2
add hl, de
-endr
+ add hl, de
ld e, [hl]
inc hl
ld d, [hl]
@@ -15324,7 +7507,7 @@ endr
rlca
rlca
and $3
- ld hl, PokedexEntryBanks
+ ld hl, .PokedexEntryBanks
ld d, 0
ld e, a
add hl, de
@@ -15334,7 +7517,7 @@ endr
ret
; 44351
-PokedexEntryBanks: ; 44351
+.PokedexEntryBanks: ; 44351
GLOBAL PokedexEntries1
GLOBAL PokedexEntries2
@@ -15347,22 +7530,26 @@ GLOBAL PokedexEntries4
db BANK(PokedexEntries4)
; 44355
-Function44355: ; 44355
- call Function44333
+GetDexEntryPagePointer: ; 44355
+ call GetDexEntryPointer ; b:de
push hl
ld h, d
ld l, e
+; skip species name
.loop1
ld a, b
call GetFarByte
inc hl
cp "@"
jr nz, .loop1
+; skip height and weight
rept 4
inc hl
endr
+; if c != 1: skip entry
dec c
jr z, .done
+; skip entry
.loop2
ld a, b
call GetFarByte
@@ -15377,136 +7564,19 @@ endr
ret
; 44378
-
PokedexDataPointerTable: ; 0x44378
INCLUDE "data/pokedex/entry_pointers.asm"
INCLUDE "engine/mail.asm"
-SECTION "bank12", ROMX, BANK[$12]
-
-Function48000: ; 48000
- ld a, $1
- ld [wd474], a
- xor a
- ld [wd473], a
- ld [PlayerGender], a
- ld [wd475], a
- ld [wd476], a
- ld [wd477], a
- ld [wd478], a
- ld [wd002], a
- ld [wd003], a
- ; could have done "ld a, [wd479] \ and %11111100", saved four operations
- ld a, [wd479]
- res 0, a
- ld [wd479], a
- ld a, [wd479]
- res 1, a
- ld [wd479], a
- ret
-; 4802f
-
-INCLUDE "misc/mobile_12.asm"
-
-InitGender: ; 48dcb (12:4dcb)
- call Function48e14
- call Function48e47
- call Function48e64
- call Function3200
- call SetPalettes
- ld hl, TextJump_AreYouABoyOrAreYouAGirl
- call PrintText
- ld hl, .MenuDataHeader
- call LoadMenuDataHeader
- call Function3200
- call InterpretMenu2
- call WriteBackup
- ld a, [MenuSelection2]
- dec a
- ld [PlayerGender], a
- ld c, 10
- call DelayFrames
- ret
-; 48dfc (12:4dfc)
-
-.MenuDataHeader: ; 0x48dfc
- db $40 ; flags
- db 04, 06 ; start coords
- db 09, 12 ; end coords
- dw .MenuData2
- db 1 ; default option
-; 0x48e04
-
-.MenuData2: ; 0x48e04
- db $a1 ; flags
- db 2 ; items
- db "Boy@"
- db "Girl@"
-; 0x48e0f
-
-TextJump_AreYouABoyOrAreYouAGirl: ; 0x48e0f
- ; Are you a boy? Or are you a girl?
- text_jump Text_AreYouABoyOrAreYouAGirl
- db "@"
-; 0x48e14
-
-Function48e14: ; 48e14 (12:4e14)
- ld a, $10
- ld [MusicFade], a
- ld a, $0
- ld [MusicFadeIDLo], a
- ld a, $0
- ld [MusicFadeIDHi], a
- ld c, 8
- call DelayFrames
- call ClearBGPalettes
- call Function48000
- call LoadFontsExtra
- hlcoord 0, 0
- ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
- ld a, $0
- call ByteFill
- hlcoord 0, 0, AttrMap
- ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
- xor a
- call ByteFill
- ret
-
-Function48e47: ; 48e47 (12:4e47)
- ld hl, Palette_48e5c
- ld de, UnknBGPals
- ld bc, $8
- ld a, $5
- call FarCopyWRAM
- callba Function96a4
- ret
-; 48e5c (12:4e5c)
-
-Palette_48e5c: ; 48e5c
- RGB 31, 31, 31
- RGB 09, 30, 31
- RGB 01, 11, 31
- RGB 00, 00, 00
-; 48e64
-
-Function48e64: ; 48e64 (12:4e64)
- ld de, GFX_48e71
- ld hl, VTiles2 tile $00
- lb bc, BANK(GFX_48e71), 1
- call Get2bpp
- ret
-; 48e71 (12:4e71)
-
-GFX_48e71: ; 48e71
-INCBIN "gfx/unknown/048e71.2bpp"
+SECTION "Crystal Unique", ROMX, BANK[$12]
+INCLUDE "engine/init_gender.asm"
DrawKrisPackGFX: ; 48e81
ld hl, PackFGFXPointers
-rept 2
add hl, de
-endr
+ add hl, de
ld a, [hli]
ld e, a
ld d, [hl]
@@ -15517,10 +7587,10 @@ endr
; 48e93
PackFGFXPointers: ; 48e93
- dw PackFGFX + $f0 * 1
- dw PackFGFX + $f0 * 3
- dw PackFGFX + $f0 * 0
- dw PackFGFX + $f0 * 2
+ dw PackFGFX + (15 tiles) * 1
+ dw PackFGFX + (15 tiles) * 3
+ dw PackFGFX + (15 tiles) * 0
+ dw PackFGFX + (15 tiles) * 2
; 48e9b
PackFGFX: ; 48e9b
@@ -15532,59 +7602,57 @@ Special_MoveTutor: ; 4925b
call ClearBGPalettes
call ClearScreen
call DelayFrame
- ld b, SCGB_14
+ ld b, SCGB_PACKPALS
call GetSGBLayout
xor a
ld [wItemAttributeParamBuffer], a
- call Function492a5
+ call .GetMoveTutorMove
ld [wd265], a
- ld [wd262], a
+ ld [wPutativeTMHMMove], a
call GetMoveName
call CopyName1
- callba Function2c7fb
- jr c, .asm_4929c
- jr .asm_49291
-
-.asm_49289
- callba Function2c80a
- jr c, .asm_4929c
+ callba ChooseMonToLearnTMHM
+ jr c, .cancel
+ jr .enter_loop
-.asm_49291
- call Function492b9
- jr nc, .asm_49289
+.loop
+ callba ChooseMonToLearnTMHM_NoRefresh
+ jr c, .cancel
+.enter_loop
+ call CheckCanLearnMoveTutorMove
+ jr nc, .loop
xor a
ld [ScriptVar], a
- jr .asm_492a1
+ jr .quit
-.asm_4929c
- ld a, $ff
+.cancel
+ ld a, -1
ld [ScriptVar], a
-
-.asm_492a1
- call ReturnToCallingMenu
+.quit
+ call CloseSubmenu
ret
; 492a5
-Function492a5: ; 492a5
+.GetMoveTutorMove: ; 492a5
ld a, [ScriptVar]
- cp $1
- jr z, .asm_492b3
- cp $2
- jr z, .asm_492b6
+ cp 1
+ jr z, .flamethrower
+ cp 2
+ jr z, .thunderbolt
ld a, ICE_BEAM
ret
-.asm_492b3
+.flamethrower
ld a, FLAMETHROWER
ret
-.asm_492b6
+.thunderbolt
ld a, THUNDERBOLT
ret
; 492b9
-Function492b9: ; 492b9
- ld hl, MenuDataHeader_0x4930a
+CheckCanLearnMoveTutorMove: ; 492b9
+ ld hl, .MenuDataHeader
call LoadMenuDataHeader
predef CanLearnTMHMMove
@@ -15602,12 +7670,12 @@ Function492b9: ; 492b9
ld de, SFX_WRONG
call PlaySFX
pop de
- ld a, BANK(UnknownText_0x2c8ce)
- ld hl, UnknownText_0x2c8ce
+ ld a, BANK(Text_TMHMNotCompatible)
+ ld hl, Text_TMHMNotCompatible
call FarPrintText
jr .didnt_learn
-.can_learn
+.can_learn
callab KnowsMove
jr c, .didnt_learn
@@ -15631,627 +7699,13 @@ Function492b9: ; 492b9
ret
; 4930a
-MenuDataHeader_0x4930a: ; 0x4930a
+.MenuDataHeader: ; 0x4930a
db $40 ; flags
db 12, 00 ; start coords
db 17, 19 ; end coords
; 4930f
-Function4930f: ; 4930f (mobile)
- ld a, b
- cp SCGB_RAM
- jr nz, .not_ram
- ld a, [SGBPredef]
-.not_ram
- push af
- callba Function9673
- pop af
- ld l, a
- ld h, 0
- add hl, hl
- ld de, .jumptable
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld de, .done
- push de
- jp [hl]
-.done
- ret
-; 49330 (12:5330)
-
-.jumptable: ; 49330
- dw Function4936e
- dw Function4942f
- dw Function49706
-; 49336
-
-Function49336: ; 49336
-.asm_49336
- push bc
- push hl
-.asm_49338
- ld [hli], a
- dec c
- jr nz, .asm_49338
- pop hl
- ld bc, SCREEN_WIDTH
- add hl, bc
- pop bc
- dec b
- jr nz, .asm_49336
- ret
-; 49346
-
-
-Function49346: ; 49346 (12:5346)
- hlcoord 0, 0, AttrMap
- ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
- xor a
- call ByteFill
- ret
-
-Function49351: ; 49351 (12:5351)
- ld de, UnknBGPals
- ld hl, Palette_493e1
- ld bc, $28
- ld a, $5 ; BANK(UnknBGPals)
- call FarCopyWRAM
- ld de, UnknBGPals + $38
- ld hl, Palette_49418
- ld bc, $8
- ld a, $5 ; BANK(UnknBGPals)
- call FarCopyWRAM
- ret
-
-Function4936e: ; 4936e (12:536e)
- call Function49351
- call Function49346
- call Function49384
- callba Function96b3
- callba Function96a4
- ret
-
-Function49384: ; 49384 (12:5384)
- hlcoord 0, 0, AttrMap
- lb bc, 4, 1
- ld a, $1
- call Function49336
- lb bc, 2, 1
- ld a, $2
- call Function49336
- lb bc, 6, 1
- ld a, $3
- call Function49336
- hlcoord 1, 0, AttrMap
- ld a, $1
- lb bc, 3, 18
- call Function49336
- lb bc, 2, 18
- ld a, $2
- call Function49336
- lb bc, 12, 18
- ld a, $3
- call Function49336
- hlcoord 19, 0, AttrMap
- lb bc, 4, 1
- ld a, $1
- call Function49336
- lb bc, 2, 1
- ld a, $2
- call Function49336
- lb bc, 6, 1
- ld a, $3
- call Function49336
- hlcoord 0, 12, AttrMap
- ld bc, 6 * SCREEN_WIDTH
- ld a, $7
- call ByteFill
- ret
-; 493e1 (12:53e1)
-
-Palette_493e1: ; 493e1
- RGB 03, 07, 09
- RGB 26, 31, 00
- RGB 20, 16, 03
- RGB 31, 31, 31
-
- RGB 13, 24, 29
- RGB 11, 16, 30
- RGB 07, 11, 22
- RGB 05, 06, 18
-
- RGB 31, 31, 31
- RGB 20, 26, 31
- RGB 13, 24, 29
- RGB 11, 16, 30
-
- RGB 31, 31, 31
- RGB 20, 26, 31
- RGB 00, 00, 00
- RGB 00, 00, 00
-
- RGB 31, 31, 31
- RGB 20, 16, 08
- RGB 31, 00, 00
- RGB 00, 00, 00
-; 49409
-
-
-Function49409:: ; 49409
- ld hl, Palette_49418
- ld de, UnknBGPals + 8 * 7
- ld bc, 8
- ld a, $5
- call FarCopyWRAM
- ret
-; 49418
-
-Palette_49418: ; 49418
- RGB 31, 31, 31
- RGB 08, 19, 28
- RGB 05, 05, 16
- RGB 00, 00, 00
-; 49420
-
-Function49420:: ; 49420 (12:5420)
- ld hl, MansionPalette4
- ld de, UnknBGPals + $30
- ld bc, $8
- ld a, $5 ; BANK(UnknBGPals)
- call FarCopyWRAM
- ret
-; 4942f (12:542f)
-
-Function4942f: ; 4942f
- call Function49351
- ld de, UnknBGPals + $38
- ld hl, Palette_49478
- ld bc, $8
- ld a, $5 ; BANK(UnknBGPals)
- call FarCopyWRAM
- call Function49346
- hlcoord 0, 0, AttrMap
- ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
- xor a
- call ByteFill
- hlcoord 0, 14, AttrMap
- ld bc, 4 * SCREEN_WIDTH
- ld a, $7
- call ByteFill
- ld a, [wd002]
- bit 6, a
- jr z, .asm_49464
- call Function49480
- jr .asm_49467
-
-.asm_49464
- call Function49496
-
-.asm_49467
- callba Function96b3
- callba Function96a4
- ld a, $1
- ld [hCGBPalUpdate], a
- ret
-; 49478
-
-Palette_49478: ; 49478
- RGB 31, 31, 31
- RGB 26, 31, 00
- RGB 20, 16, 03
- RGB 00, 00, 00
-; 49480
-
-Function49480: ; 49480
- hlcoord 0, 0, AttrMap
- lb bc, 4, SCREEN_WIDTH
- ld a, $7
- call Function49336
- hlcoord 0, 2, AttrMap
- ld a, $4
- ld [hl], a
- hlcoord 19, 2, AttrMap
- ld [hl], a
- ret
-; 49496
-
-Function49496: ; 49496
- hlcoord 0, 0, AttrMap
- lb bc, 2, SCREEN_WIDTH
- ld a, $7
- call Function49336
- hlcoord 0, 1, AttrMap
- ld a, $4
- ld [hl], a
- hlcoord 19, 1, AttrMap
- ld [hl], a
- ret
-; 494ac
-
-LoadSpecialMapPalette: ; 494ac
- ld a, [wTileset]
- cp TILESET_POKECOM_CENTER
- jr z, .pokecom_2f
- cp TILESET_BATTLE_TOWER
- jr z, .battle_tower
- cp TILESET_ICE_PATH
- jr z, .ice_path
- cp TILESET_HOUSE_1
- jr z, .house
- cp TILESET_RADIO_TOWER
- jr z, .radio_tower
- cp TILESET_CELADON_MANSION
- jr z, .mansion_mobile
- jr .do_nothing
-
-.pokecom_2f
- call LoadPokeComPalette
- scf
- ret
-
-.battle_tower
- call LoadBattleTowerPalette
- scf
- ret
-
-.ice_path
- ld a, [wPermission] ; permission
- and 7
- cp 3 ; Hall of Fame
- jr z, .do_nothing
- call LoadIcePathPalette
- scf
- ret
-
-.house
- call LoadHousePalette
- scf
- ret
-
-.radio_tower
- call LoadRadioTowerPalette
- scf
- ret
-
-.mansion_mobile
- call LoadMansionPalette
- scf
- ret
-
-.do_nothing
- and a
- ret
-; 494f2
-
-LoadPokeComPalette: ; 494f2
- ld a, $5
- ld de, UnknBGPals
- ld hl, PokeComPalette
- ld bc, 8 palettes
- call FarCopyWRAM
- ret
-; 49501
-
-PokeComPalette: ; 49501
-INCLUDE "tilesets/pokecom.pal"
-; 49541
-
-LoadBattleTowerPalette: ; 49541
- ld a, $5
- ld de, UnknBGPals
- ld hl, BattleTowerPalette
- ld bc, 8 palettes
- call FarCopyWRAM
- ret
-; 49550
-
-BattleTowerPalette: ; 49550
-INCLUDE "tilesets/battle_tower.pal"
-; 49590
-
-LoadIcePathPalette: ; 49590
- ld a, $5
- ld de, UnknBGPals
- ld hl, IcePathPalette
- ld bc, 8 palettes
- call FarCopyWRAM
- ret
-; 4959f
-
-IcePathPalette: ; 4959f
-INCLUDE "tilesets/ice_path.pal"
-; 495df
-
-LoadHousePalette: ; 495df
- ld a, $5
- ld de, UnknBGPals
- ld hl, HousePalette
- ld bc, 8 palettes
- call FarCopyWRAM
- ret
-; 495ee
-
-HousePalette: ; 495ee
-INCLUDE "tilesets/house.pal"
-; 4962e
-
-LoadRadioTowerPalette: ; 4962e
- ld a, $5
- ld de, UnknBGPals
- ld hl, RadioTowerPalette
- ld bc, 8 palettes
- call FarCopyWRAM
- ret
-; 4963d
-
-RadioTowerPalette: ; 4963d
-INCLUDE "tilesets/radio_tower.pal"
-; 4967d
-
-MansionPalette1: ; 4967d
- RGB 30, 28, 26
- RGB 19, 19, 19
- RGB 13, 13, 13
- RGB 07, 07, 07
-
- RGB 30, 28, 26
- RGB 31, 19, 24
- RGB 30, 10, 06
- RGB 07, 07, 07
-
- RGB 18, 24, 09
- RGB 15, 20, 01
- RGB 09, 13, 00
- RGB 07, 07, 07
-
- RGB 30, 28, 26
- RGB 15, 16, 31
- RGB 09, 09, 31
- RGB 07, 07, 07
-
- RGB 30, 28, 26
- RGB 31, 31, 07
- RGB 31, 16, 01
- RGB 07, 07, 07
-
- RGB 26, 24, 17
- RGB 21, 17, 07
- RGB 16, 13, 03
- RGB 07, 07, 07
-
-MansionPalette3: ; 496ad
- RGB 30, 28, 26
- RGB 17, 19, 31
- RGB 14, 16, 31
- RGB 07, 07, 07
-
- RGB 31, 31, 16
- RGB 31, 31, 16
- RGB 14, 09, 00
- RGB 00, 00, 00
-; 496bd
-
-MansionPalette4: ; 496bd
- RGB 05, 05, 16
- RGB 08, 19, 28
- RGB 00, 00, 00
- RGB 31, 31, 31
-; 496c5
-
-LoadMansionPalette: ; 496c5
- ld a, $5
- ld de, UnknBGPals
- ld hl, MansionPalette1
- ld bc, 8 palettes
- call FarCopyWRAM
- ld a, $5
- ld de, UnknBGPals + 4 palettes
- ld hl, MansionPalette2
- ld bc, 1 palettes
- call FarCopyWRAM
- ld a, $5
- ld de, UnknBGPals + 3 palettes
- ld hl, MansionPalette3
- ld bc, 1 palettes
- call FarCopyWRAM
- ld a, $5
- ld de, UnknBGPals + 6 palettes
- ld hl, MansionPalette4
- ld bc, 1 palettes
- call FarCopyWRAM
- ret
-; 496fe
-
-MansionPalette2: ; 496fe
- RGB 25, 24, 23
- RGB 20, 19, 19
- RGB 14, 16, 31
- RGB 07, 07, 07
-; 49706
-
-Function49706: ; 49706
- ld hl, Palette_49732
- ld de, UnknBGPals
- ld bc, 1 palettes
- ld a, $5
- call FarCopyWRAM
- callba Function96a4
- call Function49346
- callba Function96b3
- ld hl, Palette_4973a
- ld de, UnknOBPals
- ld bc, 1 palettes
- ld a, $5
- call FarCopyWRAM
- ret
-; 49732
-
-Palette_49732: ; 49732
- RGB 31, 31, 31
- RGB 23, 16, 07
- RGB 23, 07, 07
- RGB 03, 07, 20
-; 4973a
-
-Palette_4973a: ; 4973a
- RGB 00, 00, 00
- RGB 07, 05, 31
- RGB 14, 18, 31
- RGB 31, 31, 31
-; 49742
-
-Function49742: ; 49742
- ld hl, Palette_49757
- ld de, UnknBGPals
- ld bc, $40
- ld a, $5
- call FarCopyWRAM
- callba Function96a4
- ret
-; 49757
-
-Palette_49757: ; 49757
- RGB 31, 31, 63
- RGB 00, 00, 00
- RGB 00, 00, 00
- RGB 00, 00, 00
-
- RGB 31, 31, 63
- RGB 00, 00, 00
- RGB 00, 00, 00
- RGB 00, 00, 00
-
- RGB 04, 02, 15
- RGB 21, 00, 21
- RGB 31, 00, 00
- RGB 31, 31, 31
-
- RGB 04, 02, 15
- RGB 21, 00, 21
- RGB 30, 16, 26
- RGB 31, 31, 31
-
- RGB 04, 02, 15
- RGB 21, 00, 21
- RGB 16, 16, 16
- RGB 31, 31, 31
-
- RGB 04, 02, 15
- RGB 21, 00, 21
- RGB 31, 12, 12
- RGB 31, 31, 31
-
- RGB 04, 02, 15
- RGB 21, 00, 21
- RGB 07, 08, 31
- RGB 31, 31, 31
-
- RGB 04, 02, 15
- RGB 21, 00, 21
- RGB 29, 28, 09
- RGB 31, 31, 31
-; 49797
-
-Function49797: ; 49797
- hlcoord 0, 0, AttrMap
- lb bc, 16, 2
- ld a, $4
- call Function49336
- ld a, $3
- ldcoord_a 0, 1, AttrMap
- ldcoord_a 0, 14, AttrMap
- hlcoord 2, 0, AttrMap
- lb bc, 8, 18
- ld a, $5
- call Function49336
- hlcoord 2, 8, AttrMap
- lb bc, 8, 18
- ld a, $6
- call Function49336
- hlcoord 0, 16, AttrMap
- lb bc, 2, SCREEN_WIDTH
- ld a, $4
- call Function49336
- ld a, $3
- lb bc, 6, 1
- hlcoord 6, 1, AttrMap
- call Function49336
- ld a, $3
- lb bc, 6, 1
- hlcoord 17, 1, AttrMap
- call Function49336
- ld a, $3
- lb bc, 6, 1
- hlcoord 6, 9, AttrMap
- call Function49336
- ld a, $3
- lb bc, 6, 1
- hlcoord 17, 9, AttrMap
- call Function49336
- ld a, $2
- hlcoord 2, 16, AttrMap
- ld [hli], a
- ld a, $7
-rept 3
- ld [hli], a
-endr
- ld a, $2
- ld [hl], a
- hlcoord 2, 17, AttrMap
- ld a, $3
- ld bc, 6
- call ByteFill
- ret
-; 49811
-
-Function49811: ; 49811
- ld hl, Palette_49826
- ld de, UnknBGPals + $10
- ld bc, $30
- ld a, $5
- call FarCopyWRAM
- callba Function96a4
- ret
-; 49826
-
-Palette_49826: ; 49826
- RGB 04, 02, 15
- RGB 07, 09, 31
- RGB 31, 00, 00
- RGB 31, 31, 31
-
- RGB 04, 02, 15
- RGB 07, 09, 31
- RGB 15, 23, 30
- RGB 31, 31, 31
-
- RGB 04, 02, 15
- RGB 07, 09, 31
- RGB 16, 16, 16
- RGB 31, 31, 31
-
- RGB 04, 02, 15
- RGB 07, 09, 31
- RGB 25, 07, 04
- RGB 31, 31, 31
-
- RGB 04, 02, 15
- RGB 07, 09, 31
- RGB 03, 22, 08
- RGB 31, 31, 31
-
- RGB 04, 02, 15
- RGB 07, 09, 31
- RGB 29, 28, 09
- RGB 31, 31, 31
-; 49856
-
-Function49856: ; 49856
- call Function49797
- ret
-; 4985a
+INCLUDE "predef/crystal.asm"
Unknown_4985a: ; unreferenced
db $ab, $03, $57, $24, $ac, $0e, $13, $32
@@ -16265,1223 +7719,10 @@ Unknown_4985a: ; unreferenced
INCLUDE "event/celebi.asm"
INCLUDE "engine/main_menu.asm"
-
-SpecialBeastsCheck: ; 0x4a6e8
-; Check if the player owns all three legendary beasts.
-; They must exist in either party or PC, and have the player's OT and ID.
-; Return the result in ScriptVar.
-
- ld a, RAIKOU
- ld [ScriptVar], a
- call CheckOwnMonAnywhere
- jr nc, .notexist
-
- ld a, ENTEI
- ld [ScriptVar], a
- call CheckOwnMonAnywhere
- jr nc, .notexist
-
- ld a, SUICUNE
- ld [ScriptVar], a
- call CheckOwnMonAnywhere
- jr nc, .notexist
-
- ; they exist
- ld a, 1
- ld [ScriptVar], a
- ret
-
-.notexist
- xor a
- ld [ScriptVar], a
- ret
-
-
-SpecialMonCheck: ; 0x4a711
-; Check if the player owns any monsters of the species in ScriptVar.
-; Return the result in ScriptVar.
-
- call CheckOwnMonAnywhere
- jr c, .exists
-
- ; doesn't exist
- xor a
- ld [ScriptVar], a
- ret
-
-.exists
- ld a, 1
- ld [ScriptVar], a
- ret
-
-
-CheckOwnMonAnywhere: ; 0x4a721
-; Check if the player owns any monsters of the species in ScriptVar.
-; It must exist in either party or PC, and have the player's OT and ID.
-
- ; If there are no monsters in the party,
- ; the player must not own any yet.
- ld a, [PartyCount]
- and a
- ret z
-
- ld d, a
- ld e, 0
- ld hl, PartyMon1Species
- ld bc, PartyMonOT
-
- ; Run CheckOwnMon on each Pokémon in the party.
-.partymon
- call CheckOwnMon
- ret c ; found!
-
- push bc
- ld bc, PARTYMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call UpdateOTPointer
- dec d
- jr nz, .partymon
-
- ; Run CheckOwnMon on each Pokémon in the PC.
- ld a, BANK(sBoxCount)
- call GetSRAMBank
- ld a, [sBoxCount]
- and a
- jr z, .boxes
-
- ld d, a
- ld hl, sBoxMon1Species
- ld bc, sBoxMonOT
-.openboxmon
- call CheckOwnMon
- jr nc, .loop
-
- ; found!
- call CloseSRAM
- ret
-
-.loop
- push bc
- ld bc, BOXMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call UpdateOTPointer
- dec d
- jr nz, .openboxmon
-
- ; Run CheckOwnMon on each monster in the other 13 PC boxes.
-.boxes
- call CloseSRAM
-
- ld c, 0
-.box
- ; Don't search the current box again.
- ld a, [wCurBox]
- and $f
- cp c
- jr z, .loopbox
-
- ; Load the box.
- ld hl, BoxAddressTable1
- ld b, 0
-rept 3
- add hl, bc
-endr
- ld a, [hli]
- call GetSRAMBank
- ld a, [hli]
- ld h, [hl]
- ld l, a
-
- ; Number of monsters in the box
- ld a, [hl]
- and a
- jr z, .loopbox
-
- push bc
-
- push hl
- ld de, sBoxMons - sBoxCount
- add hl, de
- ld d, h
- ld e, l
- pop hl
- push de
- ld de, sBoxMonOT - sBoxCount
- add hl, de
- ld b, h
- ld c, l
- pop hl
-
- ld d, a
-
-.boxmon
- call CheckOwnMon
- jr nc, .loopboxmon
-
- ; found!
- pop bc
- call CloseSRAM
- ret
-
-.loopboxmon
- push bc
- ld bc, BOXMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call UpdateOTPointer
- dec d
- jr nz, .boxmon
- pop bc
-
-.loopbox
- inc c
- ld a, c
- cp NUM_BOXES
- jr c, .box
-
- ; not found
- call CloseSRAM
- and a
- ret
-
-
-CheckOwnMon: ; 0x4a7ba
-; Check if a Pokémon belongs to the player and is of a specific species.
-
-; inputs:
-; hl, pointer to PartyMonNSpecies
-; bc, pointer to PartyMonNOT
-; ScriptVar should contain the species we're looking for
-
-; outputs:
-; sets carry if monster matches species, ID, and OT name.
-
- push bc
- push hl
- push de
- ld d, b
- ld e, c
-
-; check species
- ld a, [ScriptVar] ; species we're looking for
- ld b, [hl] ; species we have
- cp b
- jr nz, .notfound ; species doesn't match
-
-; check ID number
- ld bc, MON_ID
- add hl, bc ; now hl points to ID number
- ld a, [PlayerID]
- cp [hl]
- jr nz, .notfound ; ID doesn't match
- inc hl
- ld a, [PlayerID + 1]
- cp [hl]
- jr nz, .notfound ; ID doesn't match
-
-; check OT
-; This only checks five characters, which is fine for the Japanese version,
-; but in the English version the player name is 7 characters, so this is wrong.
-
- ld hl, PlayerName
-
- rept 4
- ld a, [de]
- cp [hl]
- jr nz, .notfound
- cp "@"
- jr z, .found ; reached end of string
- inc hl
- inc de
- endr
-
- ld a, [de]
- cp [hl]
- jr z, .found
-
-.notfound
- pop de
- pop hl
- pop bc
- and a
- ret
-
-.found
- pop de
- pop hl
- pop bc
- scf
- ret
-; 0x4a810
-
-BoxAddressTable1: ; 4a810
- dba sBox1
- dba sBox2
- dba sBox3
- dba sBox4
- dba sBox5
- dba sBox6
- dba sBox7
- dba sBox8
- dba sBox9
- dba sBox10
- dba sBox11
- dba sBox12
- dba sBox13
- dba sBox14
-; 4a83a
-
-UpdateOTPointer: ; 0x4a83a
- push hl
- ld hl, NAME_LENGTH
- add hl, bc
- ld b, h
- ld c, l
- pop hl
- ret
-; 0x4a843
-
-
-MobileCheckOwnMonAnywhere: ; 4a843
-; Like CheckOwnMonAnywhere, but only check for species.
-; OT/ID don't matter.
-
- ld a, [PartyCount]
- and a
- ret z
-
- ld d, a
- ld e, 0
- ld hl, PartyMon1Species
- ld bc, PartyMonOT
-.asm_4a851
- call Function4a8dc
- ret c
- push bc
- ld bc, PARTYMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call Function4a91e
- dec d
- jr nz, .asm_4a851
- ld a, BANK(sBoxCount)
- call GetSRAMBank
- ld a, [sBoxCount]
- and a
- jr z, .asm_4a888
- ld d, a
- ld hl, sBoxMon1Species
- ld bc, sBoxMonOT
-.asm_4a873
- call Function4a8dc
- jr nc, .asm_4a87c
- call CloseSRAM
- ret
-
-.asm_4a87c
- push bc
- ld bc, BOXMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call Function4a91e
- dec d
- jr nz, .asm_4a873
-
-.asm_4a888
- call CloseSRAM
- ld c, 0
-.asm_4a88d
- ld a, [wCurBox]
- and $f
- cp c
- jr z, .asm_4a8d1
- ld hl, BoxAddressTable2
- ld b, 0
-rept 3
- add hl, bc
-endr
- ld a, [hli]
- call GetSRAMBank
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [hl]
- and a
- jr z, .asm_4a8d1
- push bc
- push hl
- ld de, sBoxMons - sBoxCount
- add hl, de
- ld d, h
- ld e, l
- pop hl
- push de
- ld de, sBoxMonOT - sBoxCount
- add hl, de
- ld b, h
- ld c, l
- pop hl
- ld d, a
-.asm_4a8ba
- call Function4a8dc
- jr nc, .asm_4a8c4
- pop bc
- call CloseSRAM
- ret
-
-.asm_4a8c4
- push bc
- ld bc, BOXMON_STRUCT_LENGTH
- add hl, bc
- pop bc
- call Function4a91e
- dec d
- jr nz, .asm_4a8ba
- pop bc
-
-.asm_4a8d1
- inc c
- ld a, c
- cp NUM_BOXES
- jr c, .asm_4a88d
- call CloseSRAM
- and a
- ret
-; 4a8dc
-
-Function4a8dc: ; 4a8dc
- push bc
- push hl
- push de
- ld d, b
- ld e, c
- ld a, [ScriptVar]
- ld b, [hl]
- cp b
- jr nz, .no_match
- jr .match
-
-.no_match
- pop de
- pop hl
- pop bc
- and a
- ret
-
-.match
- pop de
- pop hl
- pop bc
- scf
- ret
-; 4a8f4
-
-BoxAddressTable2: ; 4a8f4
- dba sBox1
- dba sBox2
- dba sBox3
- dba sBox4
- dba sBox5
- dba sBox6
- dba sBox7
- dba sBox8
- dba sBox9
- dba sBox10
- dba sBox11
- dba sBox12
- dba sBox13
- dba sBox14
-; 4a91e
-
-Function4a91e: ; 4a91e
- push hl
- ld hl, NAME_LENGTH
- add hl, bc
- ld b, h
- ld c, l
- pop hl
- ret
-; 4a927
-
-
-FindItemInPCOrBag: ; 4a927
- ld a, [ScriptVar]
- ld [CurItem], a
- ld hl, PCItems
- call CheckItem
- jr c, .found
-
- ld a, [ScriptVar]
- ld [CurItem], a
- ld hl, NumItems
- call CheckItem
- jr c, .found
-
- xor a
- ld [ScriptVar], a
- ret
-
-.found
- ld a, 1
- ld [ScriptVar], a
- ret
-; 4a94e
-
-Function4a94e: ; 4a94e
- call FadeToMenu
- ld a, -1
- ld hl, wd002
- ld bc, 3
- call ByteFill
- xor a
- ld [wd018], a
- ld [wd019], a
- ld b, SCGB_14
- call GetSGBLayout
- call SetPalettes
- call Function4aa22
- jr c, .asm_4a985
- jr z, .asm_4a9a1
- jr .asm_4a97b
-
-.asm_4a974
- call Function4aa25
- jr c, .asm_4a985
- jr z, .asm_4a9a1
-
-.asm_4a97b
- call Function4ac58
- ld hl, wd019
- res 1, [hl]
- jr .asm_4a974
-
-.asm_4a985
- ld a, [wd018]
- and a
- jr nz, .asm_4a990
- call Function4aba8
- jr c, .asm_4a974
-
-.asm_4a990
- call ReturnToCallingMenu
- ld hl, wd002
- ld a, -1
- ld bc, 3
- call ByteFill
- scf
- jr .asm_4a9af
-
-.asm_4a9a1
- call Function4a9c3
- jr c, .asm_4a9b0
- call Function4a9d7
- jr c, .asm_4a974
- call ReturnToCallingMenu
- and a
-
-.asm_4a9af
- ret
-
-.asm_4a9b0
- ld de, SFX_WRONG
- call PlaySFX
- ld hl, UnknownText_0x4a9be
- call PrintText
- jr .asm_4a974
-; 4a9be
-
-UnknownText_0x4a9be: ; 0x4a9be
- ; Pick three #MON for battle.
- text_jump UnknownText_0x1c51d7
- db "@"
-; 0x4a9c3
-
-Function4a9c3: ; 4a9c3
- ld hl, wd002
- ld a, $ff
- cp [hl]
- jr z, .asm_4a9d5
- inc hl
- cp [hl]
- jr z, .asm_4a9d5
- inc hl
- cp [hl]
- jr z, .asm_4a9d5
- and a
- ret
-
-.asm_4a9d5
- scf
- ret
-; 4a9d7
-
-Function4a9d7: ; 4a9d7
- ld a, [wd002]
- ld hl, PartyMonNicknames
- call GetNick
- ld h, d
- ld l, e
- ld de, EndFlypoint
- ld bc, 6
- call CopyBytes
- ld a, [wd003]
- ld hl, PartyMonNicknames
- call GetNick
- ld h, d
- ld l, e
- ld de, wd00c
- ld bc, 6
- call CopyBytes
- ld a, [wd004]
- ld hl, PartyMonNicknames
- call GetNick
- ld h, d
- ld l, e
- ld de, wd012
- ld bc, 6
- call CopyBytes
- ld hl, UnknownText_0x4aa1d
- call PrintText
- call YesNoBox
- ret
-; 4aa1d
-
-UnknownText_0x4aa1d: ; 0x4aa1d
- ; , @ and @ . Use these three?
- text_jump UnknownText_0x1c51f4
- db "@"
-; 0x4aa22
-
-Function4aa22: ; 4aa22
- call ClearBGPalettes
-
-Function4aa25: ; 4aa25
- callba LoadPartyMenuGFX
- callba InitPartyMenuWithCancel
- call Function4aad3
-
-Function4aa34: ; 4aa34
- ld a, $9
- ld [PartyMenuActionText], a
- callba WritePartyMenuTilemap
- xor a
- ld [PartyMenuActionText], a
- callba PrintPartyMenuText
- call Function4aab6
- call WaitBGMap
- call SetPalettes
- call DelayFrame
- call Function4ab1a
- jr z, .asm_4aa66
- push af
- call Function4aafb
- jr c, .asm_4aa67
- call Function4ab06
- jr c, .asm_4aa67
- pop af
-
-.asm_4aa66
- ret
-
-.asm_4aa67
- ld hl, wd019
- set 1, [hl]
- pop af
- ret
-; 4aa6e
-
-Function4aa6e: ; 4aa6e
- pop af
- ld de, SFX_WRONG
- call PlaySFX
- call WaitSFX
- jr Function4aa34
-; 4aa7a
-
-Function4aa7a: ; 4aa7a
- ld hl, wd002
- ld d, $3
-.loop
- ld e, PARTY_LENGTH
- ld a, [hli]
- push de
- push hl
- cp -1
- jr z, .done
- ld hl, wSpriteAnimationStructs
- inc a
- ld d, a
-.inner_loop
- ld a, [hl]
- and a
- jr z, .next
- cp d
- jr z, .same_as_d
- jr .next
-
- ld a, $3
- jr .proceed
-
-.same_as_d
- ld a, $2
-
-.proceed
- push hl
- ld c, l
- ld b, h
- ld hl, $2
- add hl, bc
- ld [hl], a
- pop hl
-
-.next
- ld bc, $10
- add hl, bc
- dec e
- jr nz, .inner_loop
- pop hl
- pop de
- dec d
- jr nz, .loop
- jr .finished
-
-.done
- pop hl
- pop de
-
-.finished
- ret
-; 4aab6
-
-Function4aab6: ; 4aab6
- ld hl, wd002
- ld d, $3
-.loop
- ld a, [hli]
- cp -1
- jr z, .done
- push de
- push hl
- hlcoord 0, 1
- ld bc, $28
- call AddNTimes
- ld [hl], $ec
- pop hl
- pop de
- dec d
- jr nz, .loop
-
-.done
- ret
-; 4aad3
-
-Function4aad3: ; 4aad3
- ld hl, PartyCount
- ld a, [hli]
- and a
- ret z ; Nothing in your party
-
- ld c, a
- xor a
- ld [hObjectStructIndexBuffer], a
-.loop
- push bc
- push hl
- ld e, 0
- callba Function8e83f
- ld a, [hObjectStructIndexBuffer]
- inc a
- ld [hObjectStructIndexBuffer], a
- pop hl
- pop bc
- dec c
- jr nz, .loop
-
- call Function4aa7a
- callba Function8cf69
- ret
-; 4aafb
-
-Function4aafb: ; 4aafb
- ld a, [CurPartySpecies]
- cp EGG
- jr z, .egg
- and a
- ret
-
-.egg
- scf
- ret
-; 4ab06
-
-Function4ab06: ; 4ab06
- ld a, [CurPartyMon]
- ld bc, PARTYMON_STRUCT_LENGTH
- ld hl, PartyMon1HP
- call AddNTimes
- ld a, [hli]
- ld b, a
- ld a, [hl]
- or b
- jr nz, .NotFainted
- scf
-
-.NotFainted
- ret
-; 4ab1a
-
-Function4ab1a: ; 4ab1a
-.asm_4ab1a
- ld a, $fb
- ld [wcfa8], a
- ld a, $26
- ld [wcfa7], a
- ld a, $2
- ld [wcfa4], a
- call Function4adf7
- call Function1bc9
- call Function4abc3
- jr c, .asm_4ab1a
- push af
- call Function4ab99
- call nc, Function1bee
- pop af
- bit 1, a
- jr nz, .asm_4ab6d
- ld a, [PartyCount]
- inc a
- ld b, a
- ld a, [MenuSelection2]
- ld [wd0d8], a
- cp b
- jr z, .asm_4ab7e
- ld a, [MenuSelection2]
- dec a
- ld [CurPartyMon], a
- ld c, a
- ld b, $0
- ld hl, PartySpecies
- add hl, bc
- ld a, [hl]
- ld [CurPartySpecies], a
- ld de, SFX_READ_TEXT_2
- call PlaySFX
- call WaitSFX
- ld a, $1
- and a
- ret
-
-.asm_4ab6d
- ld a, [MenuSelection2]
- ld [wd0d8], a
-.asm_4ab73
- ld de, SFX_READ_TEXT_2
- call PlaySFX
- call WaitSFX
- scf
- ret
-
-.asm_4ab7e
- ld a, $1
- ld [wd018], a
- ld a, [wcfaa]
- cp $2
- jr z, .asm_4ab73
- ld de, SFX_READ_TEXT_2
- call PlaySFX
- call WaitSFX
- xor a
- ld [wd018], a
- and a
- ret
-; 4ab99
-
-Function4ab99: ; 4ab99
- bit 1, a
- jr z, .asm_4aba6
- ld a, [wd002]
- cp $ff
- jr z, .asm_4aba6
- scf
- ret
-
-.asm_4aba6
- and a
- ret
-; 4aba8
-
-Function4aba8: ; 4aba8
- ld hl, wd004
- ld a, [hl]
- cp $ff
- jr nz, .asm_4abbe
- dec hl
- ld a, [hl]
- cp $ff
- jr nz, .asm_4abbe
- dec hl
- ld a, [hl]
- cp $ff
- jr nz, .asm_4abbe
- and a
- ret
-
-.asm_4abbe
- ld a, $ff
- ld [hl], a
- scf
- ret
-; 4abc3
-
-Function4abc3: ; 4abc3
- bit 3, a
- jr z, .asm_4abd5
- ld a, [PartyCount]
- inc a
- ld [MenuSelection2], a
- ld a, $1
- ld [wcfaa], a
- jr .asm_4ac29
-
-.asm_4abd5
- bit 6, a
- jr z, .asm_4abeb
- ld a, [MenuSelection2]
- ld [MenuSelection2], a
- and a
- jr nz, .asm_4ac29
- ld a, [PartyCount]
- inc a
- ld [MenuSelection2], a
- jr .asm_4ac29
-
-.asm_4abeb
- bit 7, a
- jr z, .asm_4ac08
- ld a, [MenuSelection2]
- ld [MenuSelection2], a
- ld a, [PartyCount]
-rept 2
- inc a
-endr
- ld b, a
- ld a, [MenuSelection2]
- cp b
- jr nz, .asm_4ac29
- ld a, $1
- ld [MenuSelection2], a
- jr .asm_4ac29
-
-.asm_4ac08
- bit 4, a
- jr nz, .asm_4ac10
- bit 5, a
- jr z, .asm_4ac56
-
-.asm_4ac10
- ld a, [MenuSelection2]
- ld b, a
- ld a, [PartyCount]
- inc a
- cp b
- jr nz, .asm_4ac29
- ld a, [wcfaa]
- cp $1
- jr z, .asm_4ac26
- ld a, $1
- jr .asm_4ac29
-
-.asm_4ac26
- ld [wcfaa], a
-
-.asm_4ac29
- hlcoord 0, 1
- lb bc, 13, 1
- call ClearBox
- call Function4aab6
- ld a, [PartyCount]
- hlcoord 6, 1
-.asm_4ac3b
- ld bc, $28
- add hl, bc
- dec a
- jr nz, .asm_4ac3b
- ld [hl], $7f
- ld a, [MenuSelection2]
- ld b, a
- ld a, [PartyCount]
- inc a
- cp b
- jr z, .asm_4ac54
- ld a, $1
- ld [wcfaa], a
-
-.asm_4ac54
- scf
- ret
-
-.asm_4ac56
- and a
- ret
-; 4ac58
-
-Function4ac58: ; 4ac58
- lb bc, 2, 18
- hlcoord 1, 15
- call ClearBox
- callba Function8ea4a
- ld hl, MenuDataHeader_0x4aca2
- call LoadMenuDataHeader
- ld hl, wd019
- bit 1, [hl]
- jr z, .asm_4ac89
- hlcoord 11, 13
- ld b, $3
- ld c, $7
- call TextBox
- hlcoord 13, 14
- ld de, String_4ada7
- call PlaceString
- jr .asm_4ac96
-
-.asm_4ac89
- hlcoord 11, 9
- ld b, $7
- ld c, $7
- call TextBox
- call Function4ad68
-
-.asm_4ac96
- ld a, $1
- ld [hBGMapMode], a
- call Function4acaa
- call ExitMenu
- and a
- ret
-; 4aca2
-
-MenuDataHeader_0x4aca2: ; 0x4aca2
- db $40 ; flags
- db 09, 11 ; start coords
- db 17, 19 ; end coords
- dw NULL
- db 1 ; default option
-; 0x4acaa
-
-Function4acaa: ; 4acaa
-.asm_4acaa
- ld a, $a0
- ld [wMenuData2Flags], a
- ld a, [wd019]
- bit 1, a
- jr z, .asm_4acc2
- ld a, $2
- ld [wMenuData2Items], a
- ld a, $c
- ld [wMenuBorderTopCoord], a
- jr .asm_4accc
-
-.asm_4acc2
- ld a, $4
- ld [wMenuData2Items], a
- ld a, $8
- ld [wMenuBorderTopCoord], a
-
-.asm_4accc
- ld a, $b
- ld [wMenuBorderLeftCoord], a
- ld a, $1
- ld [wMenuCursorBuffer], a
- call Function1c10
- ld hl, wcfa5
- set 6, [hl]
- call Function1bc9
- ld de, SFX_READ_TEXT_2
- call PlaySFX
- ld a, [hJoyPressed]
- bit 0, a
- jr nz, .asm_4acf4
- bit 1, a
- jr nz, .asm_4acf3
- jr .asm_4acaa
-
-.asm_4acf3
- ret
-
-.asm_4acf4
- ld a, [wd019]
- bit 1, a
- jr nz, .asm_4ad0e
- ld a, [MenuSelection2]
- cp $1
- jr z, Function4ad17
- cp $2
- jp z, Function4ad56
- cp $3
- jp z, Function4ad60
- jr .asm_4acf3
-
-.asm_4ad0e
- ld a, [MenuSelection2]
- cp $1
- jr z, Function4ad56
- jr .asm_4acf3
-
-Function4ad17: ; 4ad17
- call Function4adb2
- jr z, .asm_4ad4a
- ld hl, wd002
- ld a, $ff
- cp [hl]
- jr z, .asm_4ad39
- inc hl
- cp [hl]
- jr z, .asm_4ad39
- inc hl
- cp [hl]
- jr z, .asm_4ad39
- ld de, SFX_WRONG
- call WaitPlaySFX
- ld hl, UnknownText_0x4ad51
- call PrintText
- ret
-
-.asm_4ad39
- ld a, [CurPartyMon]
- ld [hl], a
- call Function4a9c3
- ret c
- ld a, [wd019]
- set 0, a
- ld [wd019], a
- ret
-
-.asm_4ad4a
- ld a, $ff
- ld [hl], a
- call Function4adc2
- ret
-
-UnknownText_0x4ad51: ; 0x4ad51
- ; Only three #MON may enter.
- text_jump UnknownText_0x1c521c
- db "@"
-; 0x4ad56
-
-Function4ad56: ; 4ad56
- callba OpenPartyStats
- call Function3200
- ret
-; 4ad60
-
-Function4ad60: ; 4ad60
- callba ManagePokemonMoves
- ret
-; 4ad67
-
-Function4ad67: ; 4ad67
- ret
-; 4ad68
-
-Function4ad68: ; 4ad68
- hlcoord 13, 12
- ld de, String_4ad88
- call PlaceString
- call Function4adb2
- jr c, .asm_4ad7e
- hlcoord 13, 10
- ld de, String_4ada0
- jr .asm_4ad84
-
-.asm_4ad7e
- hlcoord 13, 10
- ld de, String_4ad9a
-
-.asm_4ad84
- call PlaceString
- ret
-; 4ad88
-
-String_4ad88: ; 4ad88
- db "つよさをみる"
- next "つかえるわざ"
- next "もどる@"
-; 4ad9a
-
-String_4ad9a: ; 4ad9a
- db "さんかする@"
-; 4ada0
-
-String_4ada0: ; 4ada0
- db "さんかしない@"
-; 4ada7
-
-String_4ada7: ; 4ada7
- db "つよさをみる"
- next "もどる@" ; BACK
-; 4adb2
-
-Function4adb2: ; 4adb2
- ld hl, wd002
- ld a, [CurPartyMon]
- cp [hl]
- ret z
- inc hl
- cp [hl]
- ret z
- inc hl
- cp [hl]
- ret z
- scf
- ret
-; 4adc2
-
-Function4adc2: ; 4adc2
- ld a, [wd002]
- cp $ff
- jr nz, .skip
- ld a, [wd003]
- cp $ff
- jr nz, .skip2
- ld a, [wd004]
- ld [wd002], a
- ld a, $ff
- ld [wd004], a
- jr .skip
-
-.skip2
- ld [wd002], a
- ld a, $ff
- ld [wd003], a
-
-.skip
- ld a, [wd003]
- cp $ff
- ret nz
- ld b, a
- ld a, [wd004]
- ld [wd003], a
- ld a, b
- ld [wd004], a
- ret
-; 4adf7
-
-Function4adf7: ; 4adf7
- ld a, [wd019]
- bit 0, a
- ret z
- ld a, [PartyCount]
- inc a
- ld [MenuSelection2], a
- ld a, $1
- ld [wcfaa], a
- ld a, [wd019]
- res 0, a
- ld [wd019], a
- ret
-; 4ae12
+INCLUDE "misc/mobile_menu.asm"
+INCLUDE "engine/search.asm"
+INCLUDE "misc/mobile_12_2.asm"
+; mobile battle selection
AskRememberPassword: ; 4ae12
call .DoMenu
@@ -17508,15 +7749,15 @@ AskRememberPassword: ; 4ae12
ld [wMenuBorderTopCoord], a
add $4
ld [wMenuBorderBottomCoord], a
- call BackUpTiles
- call InterpretMenu2
+ call PushWindow
+ call VerticalMenu
push af
ld c, 15
call DelayFrames
call Buena_ExitMenu
pop af
jr c, .refused
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $2
jr z, .refused
and a
@@ -17524,7 +7765,7 @@ AskRememberPassword: ; 4ae12
.refused
ld a, $2
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
scf
ret
; 4ae5e
@@ -17545,13 +7786,12 @@ Buena_ExitMenu: ; 4ae5e
ret
; 4ae78
-
SECTION "bank13", ROMX, BANK[$13]
SwapTextboxPalettes:: ; 4c000
hlcoord 0, 0
decoord 0, 0, AttrMap
- ld b, $12
+ ld b, SCREEN_HEIGHT
.loop
push bc
ld c, SCREEN_WIDTH
@@ -17637,10 +7877,8 @@ ScrollBGMapPalettes:: ; 4c03f
ret
; 4c075
-
INCLUDE "tilesets/palette_maps.asm"
-
TileCollisionTable:: ; 4ce1f
; 00 land
; 01 water
@@ -17707,7 +7945,6 @@ EmptyAllSRAMBanks: ; 4cf1f
ret
; 4cf45
-
SaveMenu_LoadEDTile: ; 4cf45 (13:4f45)
ld a, [hCGB]
and a
@@ -17731,11 +7968,11 @@ SaveMenu_LoadEDTile: ; 4cf45 (13:4f45)
ld a, 1 ; BANK(VBGMap2)
ld [rVBK], a
hlcoord 0, 0, AttrMap
- call Function4cf80
+ call .LoadEDTile
ld a, 0 ; BANK(VBGMap0)
ld [rVBK], a
hlcoord 0, 0
- call Function4cf80
+ call .LoadEDTile
.WaitLY2
ld a, [rLY]
cp $60
@@ -17748,7 +7985,7 @@ SaveMenu_LoadEDTile: ; 4cf45 (13:4f45)
ld [hBGMapMode], a
ret
-Function4cf80: ; 4cf80 (13:4f80)
+.LoadEDTile: ; 4cf80 (13:4f80)
ld [hSPBuffer], sp ; $ffd9
ld sp, hl
ld a, [hBGMapAddress + 1]
@@ -17786,7 +8023,6 @@ endr
ld sp, hl
ret
-
CheckSave:: ; 4cffe
ld a, BANK(s1_a008)
call GetSRAMBank
@@ -17809,27 +8045,24 @@ CheckSave:: ; 4cffe
ret
; 4d01e
-
INCLUDE "engine/map_triggers.asm"
-
-Function4d15b:: ; 4d15b
- ld hl, wc608
- ld a, [wd196]
+_LoadMapPart:: ; 4d15b
+ ld hl, wMisc
+ ld a, [wMetatileStandingY]
and a
- jr z, .skip
- ld bc, $30
+ jr z, .top_row
+ ld bc, WMISC_WIDTH * 2
add hl, bc
-.skip
- ld a, [wd197]
+.top_row
+ ld a, [wMetatileStandingX]
and a
- jr z, .next_dw
-rept 2
+ jr z, .left_column
+ inc hl
inc hl
-endr
-.next_dw
+.left_column
decoord 0, 0
ld b, SCREEN_HEIGHT
.loop
@@ -17942,49 +8175,46 @@ Shrink2Pic: ; 4d2d9
INCBIN "gfx/shrink2.2bpp.lz"
; 4d319
-Function4d319: ; 4d319
- ld a, [MenuSelection2]
+LinkMonStatsScreen: ; 4d319
+ ld a, [wMenuCursorY]
dec a
ld [CurPartyMon], a
call LowVolume
predef StatsScreenInit
ld a, [CurPartyMon]
inc a
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
call ClearScreen
call ClearBGPalettes
call MaxVolume
- callba Function28ef8
+ callba LoadTradeScreenBorder
callba Function4d354
- callba Function16d673
+ callba InitTradeSpeciesList
callba Function28eff
- call Function3200
+ call WaitBGMap2
ret
; 4d354
Function4d354: ; 4d354
call WaitBGMap
- call Function3200
+ call WaitBGMap2
ret
; 4d35b
-
-Function4d35b: ; 4d35b
+LinkTextbox2: ; 4d35b
ld h, d
ld l, e
push bc
push hl
- call Function4d37e
+ call .PlaceBorder
pop hl
pop bc
ld de, AttrMap - TileMap
add hl, de
-rept 2
inc b
-endr
-rept 2
+ inc b
+ inc c
inc c
-endr
ld a, $7
.row
push bc
@@ -18002,12 +8232,12 @@ endr
ret
; 4d37e
-Function4d37e: ; 4d37e
+.PlaceBorder: ; 4d37e
push hl
ld a, $76
ld [hli], a
inc a
- call Function4d3ab
+ call .PlaceRow
inc a
ld [hl], a
pop hl
@@ -18018,7 +8248,7 @@ Function4d37e: ; 4d37e
ld a, "┌"
ld [hli], a
ld a, " "
- call Function4d3ab
+ call .PlaceRow
ld [hl], "─"
pop hl
ld de, SCREEN_WIDTH
@@ -18028,22 +8258,22 @@ Function4d37e: ; 4d37e
ld a, "┐"
ld [hli], a
ld a, "│"
- call Function4d3ab
+ call .PlaceRow
ld [hl], "└"
ret
; 4d3ab
-Function4d3ab: ; 4d3ab
+.PlaceRow: ; 4d3ab
ld d, c
-.loop
+.row_loop
ld [hli], a
dec d
- jr nz, .loop
+ jr nz, .row_loop
ret
; 4d3b1
_ResetClock: ; 4d3b1
- callba Function8000
+ callba BlankScreen
ld b, SCGB_08
call GetSGBLayout
call LoadStandardFont
@@ -18054,9 +8284,9 @@ _ResetClock: ; 4d3b1
call PrintText
ld hl, .NoYes_MenuDataHeader
call CopyMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $1
ret z
call ClockResetPassword
@@ -18318,42 +8548,42 @@ ClockResetPassword: ; 4d41e
ret
; 4d54c
-Function4d54c: ; 4d54c
- callba Function8000
+_DeleteSaveData: ; 4d54c
+ callba BlankScreen
ld b, SCGB_08
call GetSGBLayout
call LoadStandardFont
call LoadFontsExtra
ld de, MUSIC_MAIN_MENU
call PlayMusic
- ld hl, UnknownText_0x4d580
+ ld hl, .Text_ClearAllSaveData
call PrintText
- ld hl, MenuDataHeader_0x4d585
+ ld hl, .NoYesMenuDataHeader
call CopyMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $1
ret z
callba EmptyAllSRAMBanks
ret
; 4d580
-UnknownText_0x4d580: ; 0x4d580
+.Text_ClearAllSaveData: ; 0x4d580
; Clear all save data?
text_jump UnknownText_0x1c564a
db "@"
; 0x4d585
-MenuDataHeader_0x4d585: ; 0x4d585
+.NoYesMenuDataHeader: ; 0x4d585
db $00 ; flags
db 07, 14 ; start coords
db 11, 19 ; end coords
- dw MenuData2_0x4d58d
+ dw .MenuData2
db 1 ; default option
; 0x4d58d
-MenuData2_0x4d58d: ; 0x4d58d
+.MenuData2: ; 0x4d58d
db $c0 ; flags
db 2 ; items
db "NO@"
@@ -18363,7 +8593,6 @@ MenuData2_0x4d58d: ; 0x4d58d
Tilesets::
INCLUDE "tilesets/tileset_headers.asm"
-
FlagPredef: ; 4d7c1
; Perform action b on flag c in flag array hl.
; If checking a flag, check flag array d:hl unless d is 0.
@@ -18436,9 +8665,9 @@ FlagPredef: ; 4d7c1
ret
; 4d7fd
-Function4d7fd: ; 4d7fd
- ld a, [wc702]
- ld hl, wEnemyTrappingMove
+GetTrademonFrontpic: ; 4d7fd
+ ld a, [wOTTrademonSpecies]
+ ld hl, wOTTrademonDVs
ld de, VTiles2
push de
push af
@@ -18452,23 +8681,23 @@ Function4d7fd: ; 4d7fd
ret
; 4d81e
-Function4d81e: ; 4d81e
- ld a, [wc702]
+AnimateTrademonFrontpic: ; 4d81e
+ ld a, [wOTTrademonSpecies]
call IsAPokemon
ret c
callba Function29549
- ld a, [wc702]
+ ld a, [wOTTrademonSpecies]
ld [CurPartySpecies], a
- ld a, [wEnemyTrappingMove]
+ ld a, [wOTTrademonDVs]
ld [TempMonDVs], a
- ld a, [wPlayerWrapCount]
+ ld a, [wOTTrademonDVs + 1]
ld [TempMonDVs + 1], a
ld b, SCGB_1A
call GetSGBLayout
- ld a, $e4
+ ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
- callba Function294c0
- ld a, [wc702]
+ callba TradeAnim_ShowGetmonFrontpic
+ ld a, [wOTTrademonSpecies]
ld [CurPartySpecies], a
hlcoord 7, 2
ld d, $0
@@ -18780,7 +9009,7 @@ CheckPartyFullAfterContest: ; 4d9e5
ld [wd265], a
call GetPokemonName
ld hl, StringBuffer1
- ld de, wd050
+ ld de, wMonOrItemNameBuffer
ld bc, PKMN_NAME_LENGTH
call CopyBytes
call GiveANickname_YesNo
@@ -18790,7 +9019,7 @@ CheckPartyFullAfterContest: ; 4d9e5
ld [CurPartyMon], a
xor a
ld [MonType], a
- ld de, wd050
+ ld de, wMonOrItemNameBuffer
callab InitNickname
.Party_SkipNickname
@@ -18800,7 +9029,7 @@ CheckPartyFullAfterContest: ; 4d9e5
call SkipNames
ld d, h
ld e, l
- ld hl, wd050
+ ld hl, wMonOrItemNameBuffer
call CopyBytes
ld a, [PartyCount]
dec a
@@ -18836,11 +9065,11 @@ CheckPartyFullAfterContest: ; 4d9e5
xor a
ld [CurPartyMon], a
ld hl, wContestMon
- ld de, wd018_Mon
+ ld de, wBufferMon
ld bc, BOXMON_STRUCT_LENGTH
call CopyBytes
ld hl, PlayerName
- ld de, wd00d_MonOT
+ ld de, wBufferMonOT
ld bc, NAME_LENGTH
call CopyBytes
callab Function51322
@@ -18852,9 +9081,9 @@ CheckPartyFullAfterContest: ; 4d9e5
jr c, .Box_SkipNickname
ld a, BOXMON
ld [MonType], a
- ld de, wd050_MonNick
+ ld de, wMonOrItemNameBuffer
callab InitNickname
- ld hl, wd050_MonNick
+ ld hl, wMonOrItemNameBuffer
.Box_SkipNickname
ld a, BANK(sBoxMonNicknames)
@@ -18893,7 +9122,6 @@ CheckPartyFullAfterContest: ; 4d9e5
ret
; 4db3b
-
GiveANickname_YesNo: ; 4db3b
ld hl, TextJump_GiveANickname
call PrintText
@@ -18906,7 +9134,6 @@ TextJump_GiveANickname: ; 0x4db44
db "@"
; 0x4db49
-
SetCaughtData: ; 4db49
ld a, [PartyCount]
dec a
@@ -18983,7 +9210,6 @@ SetGiftMonCaughtData: ; 4dbaf
ret
; 4dbb8
-
SetEggMonCaughtData: ; 4dbb8 (13:5bb8)
ld a, [CurPartyMon]
ld hl, PartyMon1CaughtLevel
@@ -19140,25 +9366,23 @@ RetroactivelyIgnoreEggs: ; 4dc67
jr .loop
; 4dc7b
-
INCLUDE "engine/stats_screen.asm"
CatchTutorial:: ; 4e554
ld a, [BattleType]
dec a
ld c, a
- ld hl, .jumptable
+ ld hl, .dw
ld b, 0
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
jp [hl]
; 4e564
-.jumptable: ; 4e564 (13:6564)
+.dw: ; 4e564 (13:6564)
dw .DudeTutorial
dw .DudeTutorial
dw .DudeTutorial
@@ -19200,26 +9424,25 @@ endr
ret
.LoadDudeData: ; 4e5b7 (13:65b7)
- ld hl, OTPartyMon1
- ld [hl], BULBASAUR
+ ld hl, wDudeNumItems
+ ld [hl], 1
inc hl
ld [hl], POTION
inc hl
- ld [hl], POUND
+ ld [hl], 1
inc hl
- ld [hl], $ff
- ld hl, OTPartyMon1Exp + 2
- ld [hl], $0
+ ld [hl], -1
+ ld hl, wDudeNumKeyItems
+ ld [hl], 0
inc hl
- ld [hl], $ff
- ld hl, OTPartyMon1CaughtGender
- ld a, $1
+ ld [hl], -1
+ ld hl, wDudeNumBalls
+ ld a, 1
ld [hli], a
- ld a, $5
-rept 2
+ ld a, POKE_BALL ; 5
ld [hli], a
-endr
- ld [hl], $ff
+ ld [hli], a
+ ld [hl], -1
ret
; 4e5da (13:65da)
@@ -19233,6 +9456,90 @@ endr
INCLUDE "engine/evolution_animation.asm"
+Function4e881: ; 4e881
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ call DisableLCD
+ call LoadStandardFont
+ call LoadFontsBattleExtra
+ hlbgcoord 0, 0
+ ld bc, VBGMap1 - VBGMap0
+ ld a, " "
+ call ByteFill
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ xor a
+ call ByteFill
+ xor a
+ ld [hSCY], a
+ ld [hSCX], a
+ call EnableLCD
+ ld hl, .SavingRecordDontTurnOff
+ call PrintText
+ call WaitBGMap2
+ call SetPalettes
+ ret
+; 4e8bd
+
+.SavingRecordDontTurnOff: ; 0x4e8bd
+ ; SAVING RECORD… DON'T TURN OFF!
+ text_jump UnknownText_0x1bd39e
+ db "@"
+; 0x4e8c2
+
+Function4e8c2: ; 4e8c2
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ call DisableLCD
+ call LoadStandardFont
+ call LoadFontsBattleExtra
+ hlbgcoord 0, 0
+ ld bc, VBGMap1 - VBGMap0
+ ld a, " "
+ call ByteFill
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ xor a
+ call ByteFill
+ ld hl, wd000 ; UnknBGPals
+ ld c, 4 * $10
+.load_white_palettes
+ ld a, (palred 31 + palgreen 31 + palblue 31) % $100
+ ld [hli], a
+ ld a, (palred 31 + palgreen 31 + palblue 31) / $100
+ ld [hli], a
+ dec c
+ jr nz, .load_white_palettes
+ xor a
+ ld [hSCY], a
+ ld [hSCX], a
+ call EnableLCD
+ call WaitBGMap2
+ call SetPalettes
+ ret
+; 4e906
+
+Function4e906: ; 4e906
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld hl, wDecompressScratch
+ ld bc, wBackupAttrMap - wDecompressScratch
+ ld a, " "
+ call ByteFill
+ hlbgcoord 0, 0
+ ld de, wDecompressScratch
+ ld b, $0
+ ld c, $40
+ call Request2bpp
+ pop af
+ ld [rSVBK], a
+ ret
+; 4e929
+
Function4e929: ; mobile function
ld h, b
ld l, c
@@ -19323,10 +9630,8 @@ FemaleTrainers: ; 4e976
FemaleTrainersEnd:
; 4e980
-
INCLUDE "battle/sliding_intro.asm"
-
Function4ea0a: ; 4ea0a
ld a, c
push af
@@ -19359,8 +9664,6 @@ Function4ea0a: ; 4ea0a
ret
; 4ea44
-
-
CheckBattleScene: ; 4ea44
; Return carry if battle scene is turned off.
@@ -19410,12 +9713,10 @@ CheckBattleScene: ; 4ea44
ret
; 4ea82
-
INCLUDE "misc/gbc_only.asm"
INCLUDE "event/poke_seer.asm"
-
SECTION "bank14", ROMX, BANK[$14]
INCLUDE "engine/party_menu.asm"
@@ -19447,7 +9748,7 @@ CopyPkmnToTempMon: ; 5084a
cp OTPARTYMON
jr z, .copywholestruct
ld bc, BOXMON_STRUCT_LENGTH
- callab Functione5bb
+ callab CopyBoxmonToTempMon
jr .done
.copywholestruct
@@ -19461,18 +9762,14 @@ CopyPkmnToTempMon: ; 5084a
ret
; 5088b
-
-Function5088b: ; 5088b
- ld bc, wd018_Mon
- jr Function50893
+CalcwBufferMonStats: ; 5088b
+ ld bc, wBufferMon
+ jr _TempMonStatsCalculation
; 50890
-Function50890: ; 50890
+CalcTempmonStats: ; 50890
ld bc, TempMon
- ; fallthrough
-; 50893
-
-Function50893: ; 50893
+_TempMonStatsCalculation: ; 50893
ld hl, MON_LEVEL
add hl, bc
ld a, [hl]
@@ -19481,7 +9778,7 @@ Function50893: ; 50893
add hl, bc
ld d, h
ld e, l
- ld hl, MON_EXP + 2
+ ld hl, MON_STAT_EXP - 1
add hl, bc
push bc
ld b, $1
@@ -19493,14 +9790,14 @@ Function50893: ; 50893
ld e, l
ld a, [CurPartySpecies]
cp EGG
- jr nz, .asm_508c1
+ jr nz, .not_egg
xor a
ld [de], a
inc de
ld [de], a
- jr .asm_508cd
+ jr .zero_status
-.asm_508c1
+.not_egg
push bc
ld hl, MON_MAXHP
add hl, bc
@@ -19508,7 +9805,7 @@ Function50893: ; 50893
call CopyBytes
pop bc
-.asm_508cd
+.zero_status
ld hl, MON_STATUS
add hl, bc
xor a
@@ -19562,19 +9859,16 @@ GetPkmnSpecies: ; 508d5
ret
; 5090d
-
INCLUDE "text/types.asm"
-
Function50a28: ; 50a28
ld hl, Strings50a42
ld a, [TrainerClass]
dec a
ld c, a
ld b, 0
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
@@ -19590,7 +9884,6 @@ endr
Strings50a42: ; 50a42
; Untranslated trainer class names from Red.
-
dw .Youngster
dw .BugCatcher
dw .Lass
@@ -19662,7 +9955,6 @@ Strings50a42: ; 50a42
.CooltrainerF db "エりート♀@"
; 50b0a
-
DrawPlayerHP: ; 50b0a
ld a, $1
jr DrawHP
@@ -19671,7 +9963,7 @@ DrawEnemyHP: ; 50b0e
ld a, $2
DrawHP: ; 50b10
- ld [wd10a], a
+ ld [wWhichHPBar], a
push hl
push bc
ld a, [MonType]
@@ -19707,7 +9999,7 @@ DrawHP: ; 50b10
ld c, e
.asm_50b41
- predef DrawPartyMenuHPBar
+ predef ComputeHPBarPixels
ld a, 6
ld d, a
ld c, a
@@ -19747,7 +10039,6 @@ DrawHP: ; 50b10
ret
; 50b7b
-
PrintTempMonStats: ; 50b7b
; Print TempMon's stats at hl, with spacing bc.
push bc
@@ -19790,7 +10081,6 @@ PrintTempMonStats: ; 50b7b
next "@"
; 50bdd
-
GetGender: ; 50bdd
; Return the gender of a given monster (CurPartyMon/CurOTMon/CurWildMon).
; When calling this function, a should be set to an appropriate MonType value.
@@ -19803,7 +10093,6 @@ GetGender: ; 50bdd
; This is determined by comparing the Attack and Speed DVs
; with the species' gender ratio.
-
; Figure out what type of monster struct we're looking at.
; 0: PartyMon
@@ -19833,7 +10122,6 @@ GetGender: ; 50bdd
ld hl, EnemyMonDVs
jr .DVs
-
; Get our place in the party/box.
.PartyMon
@@ -19841,7 +10129,6 @@ GetGender: ; 50bdd
ld a, [CurPartyMon]
call AddNTimes
-
.DVs
; sBoxMon data is read directly from SRAM.
@@ -19868,7 +10155,6 @@ GetGender: ; 50bdd
cp BOXMON
call z, CloseSRAM
-
; We need the gender ratio to do anything with this.
push bc
ld a, [CurPartySpecies]
@@ -19881,7 +10167,6 @@ GetGender: ; 50bdd
ld a, BANK(BaseData)
call GetFarByte
-
; The higher the ratio, the more likely the monster is to be female.
cp $ff
@@ -19911,27 +10196,27 @@ GetGender: ; 50bdd
ret
; 50c50
-Function50c50: ; 50c50
- ld a, [wd0eb]
+ListMovePP: ; 50c50
+ ld a, [wNumMoves]
inc a
ld c, a
- ld a, $4
+ ld a, NUM_MOVES
sub c
ld b, a
push hl
ld a, [Buffer1]
ld e, a
ld d, $0
- ld a, $3e
- call Function50cc9
+ ld a, $3e ; P
+ call .load_loop
ld a, b
and a
- jr z, .asm_50c6f
+ jr z, .skip
ld c, a
- ld a, $e3
- call Function50cc9
+ ld a, "-"
+ call .load_loop
-.asm_50c6f
+.skip
pop hl
rept 3
inc hl
@@ -19940,14 +10225,14 @@ endr
ld e, l
ld hl, TempMonMoves
ld b, 0
-.asm_50c7a
+.loop
ld a, [hli]
and a
- jr z, .asm_50cc8
+ jr z, .done
push bc
push hl
push de
- ld hl, MenuSelection2
+ ld hl, wMenuCursorY
ld a, [hl]
push af
ld [hl], b
@@ -19970,7 +10255,7 @@ endr
ld de, StringBuffer1 + 4
lb bc, 1, 2
call PrintNum
- ld a, $f3
+ ld a, "/"
ld [hli], a
ld de, wd265
lb bc, 1, 2
@@ -19987,19 +10272,18 @@ endr
inc b
ld a, b
cp NUM_MOVES
- jr nz, .asm_50c7a
+ jr nz, .loop
-.asm_50cc8
+.done
ret
; 50cc9
-Function50cc9: ; 50cc9
-.asm_50cc9
+.load_loop: ; 50cc9
ld [hli], a
ld [hld], a
add hl, de
dec c
- jr nz, .asm_50cc9
+ jr nz, .load_loop
ret
; 50cd0
@@ -20044,12 +10328,10 @@ Function50cdb: ; unreferenced predef
ret
; 50d0a
-
PlaceStatusString: ; 50d0a
push de
-rept 2
inc de
-endr
+ inc de
ld a, [de]
ld b, a
inc de
@@ -20140,7 +10422,7 @@ ListMoves: ; 50d6f
call PlaceString
pop bc
ld a, b
- ld [wd0eb], a
+ ld [wNumMoves], a
inc b
pop hl
push bc
@@ -20230,7 +10512,6 @@ Function50db9: ; 50db9
ret
; 50e1b
-
CalcLevel: ; 50e1b
ld a, [TempMonSpecies]
ld [CurSpecies], a
@@ -20264,14 +10545,11 @@ CalcLevel: ; 50e1b
ret
; 50e47
-
-
CalcExpAtLevel: ; 50e47
; (a/b)*n**3 + c*n**2 + d*n - e
ld a, [BaseGrowthRate]
-rept 2
add a
-endr
+ add a
ld c, a
ld b, 0
ld hl, GrowthRates
@@ -20422,15 +10700,15 @@ ENDM
_SwitchPartyMons:
ld a, [wd0e3]
dec a
- ld [wd1ec], a
+ ld [Buffer3], a
ld b, a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld [Buffer2], a ; wd1eb (aliases: MovementType)
cp b
jr z, .skip
call .SwapMonAndMail
- ld a, [wd1ec]
+ ld a, [Buffer3]
call .ClearSprite
ld a, [Buffer2] ; wd1eb (aliases: MovementType)
call .ClearSprite
@@ -20616,7 +10894,6 @@ GetUnownLetter: ; 51040
ret
; 51077
-
GetFrontpic: ; 51077
ld a, [CurPartySpecies]
ld [CurSpecies], a
@@ -20657,15 +10934,15 @@ _GetFrontpic: ; 510a5
ld a, $6
ld [rSVBK], a
ld a, b
- ld de, w6_d000 + $800
+ ld de, wDecompressScratch + $800
call FarDecompress
pop bc
- ld hl, w6_d000
- ld de, w6_d000 + $800
+ ld hl, wDecompressScratch
+ ld de, wDecompressScratch + $800
call Function512ab
pop hl
push hl
- ld de, w6_d000
+ ld de, wDecompressScratch
ld c, 7 * 7
ld a, [hROMBank]
ld b, a
@@ -20708,7 +10985,7 @@ Function51103: ; 51103
ld a, $1
ld [rVBK], a
push hl
- ld de, w6_d000
+ ld de, wDecompressScratch
ld c, 7 * 7
ld a, [hROMBank]
ld b, a
@@ -20739,7 +11016,7 @@ Function51103: ; 51103
call Function5114f
pop bc
pop hl
- ld de, w6_d000
+ ld de, wDecompressScratch
ld a, [hROMBank]
ld b, a
call Get2bpp
@@ -20749,7 +11026,7 @@ Function51103: ; 51103
; 5114f
Function5114f: ; 5114f
- ld hl, w6_d000
+ ld hl, wDecompressScratch
swap c
ld a, c
and $f
@@ -20758,12 +11035,12 @@ Function5114f: ; 5114f
and $f0
ld c, a
push bc
- call Function512f2
+ call LoadFrontpic
pop bc
.asm_51161
push bc
ld c, $0
- call Function512f2
+ call LoadFrontpic
pop bc
dec b
jr nz, .asm_51161
@@ -20808,14 +11085,14 @@ GetBackpic: ; 5116c
inc hl
ld a, d
call GetFarHalfword
- ld de, w6_d000
+ ld de, wDecompressScratch
pop af
call FarDecompress
- ld hl, w6_d000
+ ld hl, wDecompressScratch
ld c, 6 * 6
- call Function5127c
+ call FixBackpicAlignment
pop hl
- ld de, w6_d000
+ ld de, wDecompressScratch
ld a, [hROMBank]
ld b, a
call Get2bpp
@@ -20824,7 +11101,6 @@ GetBackpic: ; 5116c
ret
; 511c5
-
FixPicBank: ; 511c5
; This is a thing for some reason.
push hl
@@ -20886,7 +11162,6 @@ Function511ec: ; 511ec
ret
; 0x5120d
-
GetTrainerPic: ; 5120d
ld a, [TrainerClass]
and a
@@ -20914,10 +11189,10 @@ GetTrainerPic: ; 5120d
ld a, BANK(TrainerPicPointers)
call GetFarHalfword
pop af
- ld de, w6_d000
+ ld de, wDecompressScratch
call FarDecompress
pop hl
- ld de, w6_d000
+ ld de, wDecompressScratch
ld c, 7 * 7
ld a, [hROMBank]
ld b, a
@@ -20930,8 +11205,6 @@ GetTrainerPic: ; 5120d
ret
; 5125d
-
-
DecompressPredef: ; 5125d
; Decompress lz data from b:hl to scratch space at 6:d000, then copy it to address de.
@@ -20943,10 +11216,10 @@ DecompressPredef: ; 5125d
push de
push bc
ld a, b
- ld de, w6_d000
+ ld de, wDecompressScratch
call FarDecompress
pop bc
- ld de, w6_d000
+ ld de, wDecompressScratch
pop hl
ld a, [hROMBank]
ld b, a
@@ -20957,13 +11230,12 @@ DecompressPredef: ; 5125d
ret
; 5127c
-
-Function5127c: ; 5127c
+FixBackpicAlignment: ; 5127c
push de
push bc
- ld a, [wc2c6]
+ ld a, [wBoxAlignment]
and a
- jr z, .asm_512a8
+ jr z, .keep_dims
ld a, c
cp 7 * 7
ld de, 7 * 7 tiles
@@ -20989,7 +11261,7 @@ Function5127c: ; 5127c
or d
jr nz, .got_dims
-.asm_512a8
+.keep_dims
pop bc
pop de
ret
@@ -21002,39 +11274,39 @@ Function512ab: ; 512ab
cp 5
jr z, .five
-.seven
+.seven_loop
ld c, $70
- call Function512f2
+ call LoadFrontpic
dec b
- jr nz, .seven
+ jr nz, .seven_loop
ret
.six
ld c, $70
xor a
call .Fill
-.asm_512c3
+.six_loop
ld c, $10
xor a
call .Fill
ld c, $60
- call Function512f2
+ call LoadFrontpic
dec b
- jr nz, .asm_512c3
+ jr nz, .six_loop
ret
.five
ld c, $70
xor a
call .Fill
-.asm_512d8
+.five_loop
ld c, $20
xor a
call .Fill
ld c, $50
- call Function512f2
+ call LoadFrontpic
dec b
- jr nz, .asm_512d8
+ jr nz, .five_loop
ld c, $70
xor a
call .Fill
@@ -21047,21 +11319,21 @@ Function512ab: ; 512ab
ret
; 512f2
-Function512f2: ; 512f2
- ld a, [wc2c6]
+LoadFrontpic: ; 512f2
+ ld a, [wBoxAlignment]
and a
- jr nz, .asm_512ff
-.asm_512f8
+ jr nz, .x_flip
+.left_loop
ld a, [de]
inc de
ld [hli], a
dec c
- jr nz, .asm_512f8
+ jr nz, .left_loop
ret
-.asm_512ff
+.x_flip
push bc
-.asm_51300
+.right_loop
ld a, [de]
inc de
ld b, a
@@ -21072,7 +11344,7 @@ Function512f2: ; 512f2
endr
ld [hli], a
dec c
- jr nz, .asm_51300
+ jr nz, .right_loop
pop bc
ret
; 51322
@@ -21087,27 +11359,27 @@ Function51322: ; 51322
ld [wd265], a
ld hl, sBoxMonNicknames
ld bc, PKMN_NAME_LENGTH
- ld de, wd002
+ ld de, wBufferMonNick
call Function513e0
ld a, [sBoxCount]
dec a
ld [wd265], a
ld hl, sBoxMonOT
ld bc, NAME_LENGTH
- ld de, wd00d
+ ld de, wBufferMonOT
call Function513e0
ld a, [sBoxCount]
dec a
ld [wd265], a
ld hl, sBoxMons
ld bc, BOXMON_STRUCT_LENGTH
- ld de, wd018_Mon
+ ld de, wBufferMon
call Function513e0
- ld hl, wd018_MonMoves
+ ld hl, wBufferMonMoves
ld de, TempMonMoves
ld bc, NUM_MOVES
call CopyBytes
- ld hl, wd018_MonPP
+ ld hl, wBufferMonPP
ld de, TempMonPP
ld bc, NUM_MOVES
call CopyBytes
@@ -21125,21 +11397,21 @@ Function5138b: ; 5138b
ld [wd265], a
ld hl, PartyMonNicknames
ld bc, PKMN_NAME_LENGTH
- ld de, wd002
+ ld de, wBufferMonNick
call Function513e0
ld a, [PartyCount]
dec a
ld [wd265], a
ld hl, PartyMonOT
ld bc, NAME_LENGTH
- ld de, wd00d
+ ld de, wBufferMonOT
call Function513e0
ld a, [PartyCount]
dec a
ld [wd265], a
ld hl, PartyMons
ld bc, PARTYMON_STRUCT_LENGTH
- ld de, wd018_Mon
+ ld de, wBufferMon
call Function513e0
ret
; 513cb
@@ -21241,891 +11513,13 @@ UnknownEggPic:: ; 53d9c
INCBIN "gfx/misc/unknown_egg.5x5.2bpp.lz"
; 53e2e
-
SECTION "bank19", ROMX, BANK[$19]
INCLUDE "text/phone/extra.asm"
-
-
SECTION "bank20", ROMX, BANK[$20]
-
-DoPlayerMovement:: ; 80000
-
- call GetMovementInput
- ld a, movement_step_sleep_1
- ld [MovementAnimation], a
- xor a
- ld [wd041], a
- call GetPlayerMovement
- ld c, a
- ld a, [MovementAnimation]
- ld [wc2de], a
- ret
-; 80017
-
-
-GetMovementInput: ; 80017
-
- ld a, [hJoyDown]
- ld [CurInput], a
-
-; Standing downhill instead moves down.
-
- ld hl, BikeFlags
- bit 2, [hl] ; downhill
- ret z
-
- ld c, a
- and D_PAD
- ret nz
-
- ld a, c
- or D_DOWN
- ld [CurInput], a
- ret
-; 8002d
-
-
-GetPlayerMovement: ; 8002d
-
- ld a, [PlayerState]
- cp PLAYER_NORMAL
- jr z, .Normal
- cp PLAYER_SURF
- jr z, .Surf
- cp PLAYER_SURF_PIKA
- jr z, .Surf
- cp PLAYER_BIKE
- jr z, .Normal
- cp PLAYER_SLIP
- jr z, .Ice
-
-.Normal
- call CheckForcedMovementInput
- call GetMovementAction
- call CheckTileMovement
- ret c
- call CheckTurning
- ret c
- call TryStep
- ret c
- call TryJumpLedge
- ret c
- call CheckEdgeWarp
- ret c
- jr .NotMoving
-
-.Surf
- call CheckForcedMovementInput
- call GetMovementAction
- call CheckTileMovement
- ret c
- call CheckTurning
- ret c
- call TrySurfStep
- ret c
- jr .NotMoving
-
-.Ice
- call CheckForcedMovementInput
- call GetMovementAction
- call CheckTileMovement
- ret c
- call CheckTurning
- ret c
- call TryStep
- ret c
- call TryJumpLedge
- ret c
- call CheckEdgeWarp
- ret c
- ld a, [WalkingDirection]
- cp STANDING
- jr z, .HitWall
- call PlayBump
-.HitWall
- call StandInPlace
- xor a
- ret
-
-.NotMoving
- ld a, [WalkingDirection]
- cp STANDING
- jr z, .Standing
-
-; Walking into an edge warp won't bump.
- ld a, [EngineBuffer4]
- and a
- jr nz, .CantMove
- call PlayBump
-.CantMove
- call WalkInPlace
- xor a
- ret
-
-.Standing
- call StandInPlace
- xor a
- ret
-; 800b7
-
-
-CheckTileMovement: ; 800b7
-; Tiles such as waterfalls and warps move the player
-; in a given direction, overriding input.
-
- ld a, [PlayerNextTile]
- ld c, a
- call CheckWhirlpoolTile
- jr c, .asm_800c4
- ld a, 3
- scf
- ret
-
-.asm_800c4
- and $f0
- cp $30 ; moving water
- jr z, .water
- cp $40 ; moving land 1
- jr z, .land1
- cp $50 ; moving land 2
- jr z, .land2
- cp $70 ; warps
- jr z, .warps
- jr .asm_8013c
-
-.water
- ld a, c
- and 3
- ld c, a
- ld b, 0
- ld hl, .water_table
- add hl, bc
- ld a, [hl]
- ld [WalkingDirection], a
- jr .asm_8013e
-
-.water_table
- db RIGHT
- db LEFT
- db UP
- db DOWN
-
-.land1
- ld a, c
- and 7
- ld c, a
- ld b, 0
- ld hl, .land1_table
- add hl, bc
- ld a, [hl]
- cp STANDING
- jr z, .asm_8013c
- ld [WalkingDirection], a
- jr .asm_8013e
-
-.land1_table
- db STANDING
- db RIGHT
- db LEFT
- db UP
- db DOWN
- db STANDING
- db STANDING
- db STANDING
-
-.land2
- ld a, c
- and 7
- ld c, a
- ld b, 0
- ld hl, .land2_table
- add hl, bc
- ld a, [hl]
- cp STANDING
- jr z, .asm_8013c
- ld [WalkingDirection], a
- jr .asm_8013e
-
-.land2_table
- db RIGHT
- db LEFT
- db UP
- db DOWN
- db STANDING
- db STANDING
- db STANDING
- db STANDING
-
-.warps
- ld a, c
- cp $71 ; door
- jr z, .down
- cp $79
- jr z, .down
- cp $7a ; stairs
- jr z, .down
- cp $7b ; cave
- jr nz, .asm_8013c
-
-.down
- ld a, DOWN
- ld [WalkingDirection], a
- jr .asm_8013e
-
-.asm_8013c
- xor a
- ret
-
-.asm_8013e
- ld a, STEP_WALK
- call DoStep
- ld a, 5
- scf
- ret
-; 80147
-
-
-CheckTurning: ; 80147
-; If the player is turning, change direction first. This also lets
-; the player change facing without moving by tapping a direction.
-
- ld a, [wd04e]
- cp 0
- jr nz, .asm_80169
- ld a, [WalkingDirection]
- cp STANDING
- jr z, .asm_80169
-
- ld e, a
- ld a, [PlayerDirection]
- rrca
- rrca
- and 3
- cp e
- jr z, .asm_80169
-
- ld a, STEP_TURN
- call DoStep
- ld a, 2
- scf
- ret
-
-.asm_80169
- xor a
- ret
-; 8016b
-
-
-TryStep: ; 8016b
-
-; Surfing actually calls TrySurfStep directly instead of passing through here.
- ld a, [PlayerState]
- cp PLAYER_SURF
- jr z, TrySurfStep
- cp PLAYER_SURF_PIKA
- jr z, TrySurfStep
-
- call CheckLandPermissions
- jr c, .bump
-
- call IsNPCInFront
- and a
- jr z, .bump
- cp 2
- jr z, .bump
-
- ld a, [PlayerNextTile]
- call CheckIceTile
- jr nc, .ice
-
-; Downhill riding is slower when not moving down.
- call CheckRiding
- jr nz, .walk
-
- ld hl, BikeFlags
- bit 2, [hl] ; downhill
- jr z, .fast
-
- ld a, [WalkingDirection]
- cp DOWN
- jr z, .fast
-
- ld a, STEP_WALK
- call DoStep
- scf
- ret
-
-.fast
- ld a, STEP_BIKE
- call DoStep
- scf
- ret
-
-.walk
- ld a, STEP_WALK
- call DoStep
- scf
- ret
-
-.ice
- ld a, STEP_ICE
- call DoStep
- scf
- ret
-
-; unused?
- xor a
- ret
-
-.bump
- xor a
- ret
-; 801c0
-
-
-TrySurfStep: ; 801c0
-
- call CheckWaterPermissions
- ld [wd040], a
- jr c, .bump
-
- call IsNPCInFront
- ld [wd03f], a
- and a
- jr z, .bump
- cp 2
- jr z, .bump
-
- ld a, [wd040]
- and a
- jr nz, .ExitWater
-
- ld a, STEP_WALK
- call DoStep
- scf
- ret
-
-.ExitWater
- call WaterToLandSprite
- call PlayMapMusic
- ld a, STEP_WALK
- call DoStep
- ld a, 6
- scf
- ret
-
-.bump
- xor a
- ret
-; 801f3
-
-
-TryJumpLedge: ; 801f3
- ld a, [PlayerNextTile]
- ld e, a
- and $f0
- cp $a0 ; ledge
- jr nz, .DontJump
-
- ld a, e
- and 7
- ld e, a
- ld d, 0
- ld hl, .data_8021e
- add hl, de
- ld a, [FacingDirection]
- and [hl]
- jr z, .DontJump
-
- ld de, SFX_JUMP_OVER_LEDGE
- call PlaySFX
- ld a, STEP_LEDGE
- call DoStep
- ld a, 7
- scf
- ret
-
-.DontJump
- xor a
- ret
-
-.data_8021e
- db FACE_RIGHT
- db FACE_LEFT
- db FACE_UP
- db FACE_DOWN
- db FACE_RIGHT | FACE_DOWN
- db FACE_DOWN | FACE_LEFT
- db FACE_UP | FACE_RIGHT
- db FACE_UP | FACE_LEFT
-; 80226
-
-
-CheckEdgeWarp: ; 80226
-
-; Bug: Since no case is made for STANDING here, it will check
-; [.edgewarps + $ff]. This resolves to $3e at $8035a.
-; This causes wd041 to be nonzero when standing on tile $3e,
-; making bumps silent.
-
- ld a, [WalkingDirection]
- ld e, a
- ld d, 0
- ld hl, .EdgeWarps
- add hl, de
- ld a, [PlayerNextTile]
- cp [hl]
- jr nz, .nope
-
- ld a, 1
- ld [wd041], a
- ld a, [WalkingDirection]
- cp STANDING
- jr z, .nope
-
- ld e, a
- ld a, [PlayerDirection]
- rrca
- rrca
- and 3
- cp e
- jr nz, .nope
- call WarpCheck
- jr nc, .nope
-
- call StandInPlace
- scf
- ld a, 1
- ret
-
-.nope
- xor a
- ret
-
-.EdgeWarps
- db $70, $78, $76, $7e
-; 8025f
-
-
-DoStep: ; 8025f
- ld e, a
- ld d, 0
- ld hl, .Steps
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
-
- ld a, [WalkingDirection]
- ld e, a
- cp STANDING
- jp z, StandInPlace
-
- add hl, de
- ld a, [hl]
- ld [MovementAnimation], a
-
- ld hl, .WalkInPlace
- add hl, de
- ld a, [hl]
- ld [wd04e], a
-
- ld a, 4
- ret
-
-.Steps
- dw .Slow
- dw .Walk
- dw .Bike
- dw .Ledge
- dw .Ice
- dw .Turn
- dw .BackwardsLedge
- dw .WalkInPlace
-
-.Slow
- slow_step_down
- slow_step_up
- slow_step_left
- slow_step_right
-.Walk
- step_down
- step_up
- step_left
- step_right
-.Bike
- big_step_down
- big_step_up
- big_step_left
- big_step_right
-.Ledge
- jump_step_down
- jump_step_up
- jump_step_left
- jump_step_right
-.Ice
- fast_slide_step_down
- fast_slide_step_up
- fast_slide_step_left
- fast_slide_step_right
-.BackwardsLedge
- jump_step_up
- jump_step_down
- jump_step_right
- jump_step_left
-.Turn
- half_step_down
- half_step_up
- half_step_left
- half_step_right
-.WalkInPlace
- db $80 + movement_turn_head_down
- db $80 + movement_turn_head_up
- db $80 + movement_turn_head_left
- db $80 + movement_turn_head_right
-; 802b3
-
-
-StandInPlace: ; 802b3
- ld a, 0
- ld [wd04e], a
- ld a, movement_step_sleep_1
- ld [MovementAnimation], a
- xor a
- ret
-; 802bf
-
-
-WalkInPlace: ; 802bf
- ld a, 0
- ld [wd04e], a
- ld a, movement_step_bump
- ld [MovementAnimation], a
- xor a
- ret
-; 802cb
-
-
-CheckForcedMovementInput: ; 802cb
-; When sliding on ice, input is forced to remain in the same direction.
-
- call CheckStandingOnIce
- ret nc
-
- ld a, [wd04e]
- cp 0
- ret z
-
- and 3
- ld e, a
- ld d, 0
- ld hl, .data_802e8
- add hl, de
- ld a, [CurInput]
- and BUTTONS
- or [hl]
- ld [CurInput], a
- ret
-
-.data_802e8
- db D_DOWN, D_UP, D_LEFT, D_RIGHT
-; 802ec
-
-
-GetMovementAction: ; 802ec
-; Poll player input and update movement info.
-
- ld hl, .table
- ld de, .table2 - .table1
- ld a, [CurInput]
- bit 7, a
- jr nz, .down
- bit 6, a
- jr nz, .up
- bit 5, a
- jr nz, .left
- bit 4, a
- jr nz, .right
-; Standing
- jr .update
-
-.down add hl, de
-.up add hl, de
-.left add hl, de
-.right add hl, de
-
-.update
- ld a, [hli]
- ld [WalkingDirection], a
- ld a, [hli]
- ld [FacingDirection], a
- ld a, [hli]
- ld [WalkingX], a
- ld a, [hli]
- ld [WalkingY], a
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld a, [hl]
- ld [WalkingTile], a
- ret
-
-.table
-; struct:
-; walk direction
-; facing
-; x movement
-; y movement
-; tile collision pointer
-.table1
- db STANDING, FACE_CURRENT, 0, 0
- dw PlayerNextTile
-.table2
- db RIGHT, FACE_RIGHT, 1, 0
- dw TileRight
- db LEFT, FACE_LEFT, -1, 0
- dw TileLeft
- db UP, FACE_UP, 0, -1
- dw TileUp
- db DOWN, FACE_DOWN, 0, 1
- dw TileDown
-; 80341
-
-
-IsNPCInFront: ; 80341
-; Returns 0 if there is an NPC in front that you can't move
-; Returns 1 if there is no NPC in front
-; Returns 2 if there is a movable NPC in front
- ld a, 0
- ld [hMapObjectIndexBuffer], a
-; Load the next X coordinate into d
- ld a, [PlayerNextMapX]
- ld d, a
- ld a, [WalkingX]
- add d
- ld d, a
-; Load the next Y coordinate into e
- ld a, [PlayerNextMapY]
- ld e, a
- ld a, [WalkingY]
- add e
- ld e, a
-; Find an object struct with coordinates equal to d,e
- ld bc, ObjectStructs ; redundant
- callba IsNPCAtCoord
- jr nc, .nope
- call Function8036f
- jr c, .no_bump
-
-; .bump
- xor a
- ret
-
-.nope
- ld a, 1
- ret
-
-.no_bump
- ld a, 2
- ret
-; 8036f
-
-
-Function8036f: ; 8036f
-
- ld hl, BikeFlags
- bit 0, [hl] ; using strength
- jr z, .nope
-
- ld hl, OBJECT_DIRECTION_WALKING
- add hl, bc
- ld a, [hl]
- cp STANDING
- jr nz, .nope
-
- ld hl, OBJECT_PALETTE
- add hl, bc
- bit 6, [hl]
- jr z, .nope
-
- ld hl, OBJECT_FLAGS2
- add hl, bc
- set 2, [hl]
-
- ld a, [WalkingDirection]
- ld d, a
- ld hl, OBJECT_RANGE
- add hl, bc
- ld a, [hl]
- and $fc
- or d
- ld [hl], a
-
- scf
- ret
-
-.nope
- xor a
- ret
-; 8039e
-
-
-CheckLandPermissions: ; 8039e
-; Return 0 if walking onto land and tile permissions allow it.
-; Otherwise, return carry.
-
- ld a, [TilePermissions]
- ld d, a
- ld a, [FacingDirection]
- and d
- jr nz, .NotWalkable
-
- ld a, [WalkingTile]
- call CheckWalkable
- jr c, .NotWalkable
-
- xor a
- ret
-
-.NotWalkable
- scf
- ret
-; 803b4
-
-CheckWaterPermissions: ; 803b4
-; Return 0 if moving in water, or 1 if moving onto land.
-; Otherwise, return carry.
-
- ld a, [TilePermissions]
- ld d, a
- ld a, [FacingDirection]
- and d
- jr nz, .NotSurfable
-
- ld a, [WalkingTile]
- call CheckSurfable
- jr c, .NotSurfable
-
- and a
- ret
-
-.NotSurfable
- scf
- ret
-; 803ca
-
-
-CheckRiding: ; 803ca
-
- ld a, [PlayerState]
- cp PLAYER_BIKE
- ret z
- cp PLAYER_SLIP
- ret
-; 803d3
-
-
-CheckWalkable: ; 803d3
-; Return 0 if tile a is land. Otherwise, return carry.
-
- call GetTileCollision
- and a ; land
- ret z
- scf
- ret
-; 803da
-
-
-CheckSurfable: ; 803da
-; Return 0 if tile a is water, or 1 if land.
-; Otherwise, return carry.
-
- call GetTileCollision
- cp 1
- jr z, .Water
-
-; Can walk back onto land from water.
- and a
- jr z, .Land
-
- jr .Neither
-
-.Water
- xor a
- ret
-
-.Land
- ld a, 1
- and a
- ret
-
-.Neither
- scf
- ret
-; 803ee
-
-
-PlayBump: ; 803ee
-
- call CheckSFX
- ret c
- ld de, SFX_BUMP
- call PlaySFX
- ret
-; 803f9
-
-
-WaterToLandSprite: ; 803f9
- push bc
- ld a, PLAYER_NORMAL
- ld [PlayerState], a
- call ReplaceKrisSprite ; UpdateSprites
- pop bc
- ret
-; 80404
-
-
-CheckStandingOnIce:: ; 80404
- ld a, [wd04e]
- cp 0
- jr z, .nope
- cp $f0
- jr z, .nope
- ld a, [PlayerNextTile]
- call CheckIceTile
- jr nc, .yep
- ld a, [PlayerState]
- cp PLAYER_SLIP
- jr nz, .nope
-
-.yep
- scf
- ret
-
-.nope
- and a
- ret
-; 80422
-
-
-Function80422:: ; 80422
- ld hl, wc2de
- ld a, movement_step_sleep_1
- cp [hl]
- ret z
-
- ld [hl], a
- ld a, 0
- ld [wd04e], a
- ret
-; 80430
-
-
+INCLUDE "engine/player_movement.asm"
INCLUDE "engine/engine_flags.asm"
; 80648
@@ -22216,11 +11610,11 @@ ShowPlayerNamingChoices: ; 88297
ld hl, KrisNameMenuHeader
.GotGender
call LoadMenuDataHeader
- call InterpretMenu2
- ld a, [MenuSelection2]
+ call VerticalMenu
+ ld a, [wMenuCursorY]
dec a
call CopyNameFromMenu
- call WriteBackup
+ call CloseWindow
ret
; 882b5
@@ -22300,7 +11694,7 @@ GetPlayerIcon: ; 8832c
ret
; 8833e
-Function8833e: ; 8833e
+GetCardPic: ; 8833e
ld hl, ChrisCardPic
ld a, [PlayerGender]
bit 0, a
@@ -22331,7 +11725,6 @@ CardGFX: ; 887c5
INCBIN "gfx/misc/trainer_card.2bpp"
; 88825
-
GetPlayerBackpic: ; 88825
ld a, [PlayerGender]
bit 0, a
@@ -22378,17 +11771,15 @@ Function88840: ; 88840
ret
; 88874
-
-
DrawIntroPlayerPic: ; 88874
; Draw the player pic at (6,4).
; Get class
- ld e, 0
+ ld e, CHRIS
ld a, [PlayerGender]
bit 0, a
jr z, .GotClass
- ld e, 1
+ ld e, KRIS
.GotClass
ld a, e
ld [TrainerClass], a
@@ -22414,7 +11805,6 @@ DrawIntroPlayerPic: ; 88874
ret
; 888a9
-
ChrisPic: ; 888a9
INCBIN "gfx/misc/chris.7x7.2bpp"
; 88bb9
@@ -22423,7 +11813,6 @@ KrisPic: ; 88bb9
INCBIN "gfx/misc/kris.7x7.2bpp"
; 88ec9
-
GetKrisBackpic: ; 88ec9
; Kris's backpic is uncompressed.
ld de, KrisBackpic
@@ -22437,7 +11826,6 @@ KrisBackpic: ; 88ed6
INCBIN "gfx/misc/kris_back.6x6.2bpp"
; 89116
-
String_89116:
db "-----@"
; 8911c
@@ -22449,7 +11837,6 @@ INCLUDE "event/dratini.asm"
INCLUDE "event/battle_tower.asm"
INCLUDE "misc/mobile_22_2.asm"
-
SECTION "bank23", ROMX, BANK[$23]
Predef35: ; 8c000
@@ -22457,7 +11844,6 @@ Predef36:
ret
; 8c001
-
INCLUDE "engine/timeofdaypals.asm"
INCLUDE "engine/battle_start.asm"
@@ -22471,153 +11857,6 @@ Function8c7c9: ; unreferenced
; 8c7d4
INCLUDE "event/field_moves.asm"
-
-Function8caed: ; 8caed
- call DelayFrame
- ld a, [VramState]
- push af
- xor a
- ld [VramState], a
- call Function8cb9b
- depixel 10, 10, 4, 0
- ld a, SPRITE_ANIM_INDEX_0A
- call _InitSpriteAnimStruct
- ld hl, $3
- add hl, bc
- ld [hl], $84
- ld hl, $2
- add hl, bc
- ld [hl], $16
- ld a, $80
- ld [wcf64], a
-.asm_8cb14
- ld a, [wJumptableIndex]
- bit 7, a
- jr nz, .asm_8cb2e
- ld a, $0
- ld [wc3b5], a
- callab Function8cf7a
- call Function8cbc8
- call DelayFrame
- jr .asm_8cb14
-.asm_8cb2e
- pop af
- ld [VramState], a
- ret
-; 8cb33
-
-Function8cb33: ; 8cb33
- call DelayFrame
- ld a, [VramState]
- push af
- xor a
- ld [VramState], a
- call Function8cb9b
- depixel 31, 10, 4, 0
- ld a, SPRITE_ANIM_INDEX_0A
- call _InitSpriteAnimStruct
- ld hl, $3
- add hl, bc
- ld [hl], $84
- ld hl, $2
- add hl, bc
- ld [hl], $18
- ld hl, $f
- add hl, bc
- ld [hl], $58
- ld a, $40
- ld [wcf64], a
-.asm_8cb60
- ld a, [wJumptableIndex]
- bit 7, a
- jr nz, .asm_8cb7a
- ld a, $0
- ld [wc3b5], a
- callab Function8cf7a
- call Function8cbc8
- call DelayFrame
- jr .asm_8cb60
-.asm_8cb7a
- pop af
- ld [VramState], a
- call Function8cb82
- ret
-
-Function8cb82: ; 8cb82 (23:4b82)
- ld hl, Sprites + 2
- xor a
- ld c, $4
-.asm_8cb88
- ld [hli], a
-rept 3
- inc hl
-endr
- inc a
- dec c
- jr nz, .asm_8cb88
- ld hl, Sprites + $10
- ld bc, $90
- xor a
- call ByteFill
- ret
-
-Function8cb9b: ; 8cb9b (23:4b9b)
- callab Function8cf53
- ld de, CutGrassGFX
- ld hl, VTiles1 tile $00
- lb bc, BANK(CutGrassGFX), 4
- call Request2bpp
- ld a, [CurPartyMon]
- ld hl, PartySpecies
- ld e, a
- ld d, 0
- add hl, de
- ld a, [hl]
- ld [wd265], a
- ld e, $84
- callba Function8e9bc
- xor a
- ld [wJumptableIndex], a
- ret
-
-Function8cbc8: ; 8cbc8 (23:4bc8)
- call Function8cbe6
- ld hl, wcf64
- ld a, [hl]
- and a
- jr z, .asm_8cbe0
- dec [hl]
- cp $40
- ret c
- and $7
- ret nz
- ld de, SFX_FLY
- call PlaySFX
- ret
-.asm_8cbe0
- ld hl, wJumptableIndex
- set 7, [hl]
- ret
-
-Function8cbe6: ; 8cbe6 (23:4be6)
- ld hl, wcf65
- ld a, [hl]
- inc [hl]
- and $7
- ret nz
- ld a, [hl]
- and $18
- sla a
- add $40
- ld d, a
- ld e, $0
- ld a, SPRITE_ANIM_INDEX_18 ; fly land
- call _InitSpriteAnimStruct
- ld hl, $3
- add hl, bc
- ld [hl], $80
- ret
-
INCLUDE "event/magnet_train.asm"
Function8cf4f: ; 8cf4f
@@ -22625,9 +11864,9 @@ Function8cf4f: ; 8cf4f
ret
; 8cf53
-
INCLUDE "engine/sprites.asm"
+INCLUDE "engine/mon_icons.asm"
SECTION "bank24", ROMX, BANK[$24]
@@ -22638,13 +11877,11 @@ INCLUDE "engine/pokegear.asm"
INCLUDE "data/wild/fish.asm"
INCLUDE "engine/slot_machine.asm"
-
SECTION "Phone Engine", ROMX, BANK[$28]
INCLUDE "engine/more_phone_scripts.asm"
INCLUDE "engine/buena_phone_scripts.asm"
-
SECTION "Phone Text", ROMX, BANK[$29]
INCLUDE "text/phone/anthony_overworld.asm"
@@ -22669,7 +11906,6 @@ SECTION "Tileset Data 5", ROMX, BANK[TILESETS_5]
INCLUDE "tilesets/data_5.asm"
-
SECTION "bank2E", ROMX, BANK[$2E]
INCLUDE "engine/events_3.asm"
@@ -22686,16 +11922,16 @@ INCLUDE "engine/phone_scripts.asm"
TalkToTrainerScript:: ; 0xbe66a
faceplayer
- trainerstatus CHECK_FLAG
+ trainerflagaction CHECK_FLAG
iftrue AlreadyBeatenTrainerScript
- loadtrainerdata
- playrammusic
+ loadmemtrainer
+ encountermusic
jump StartBattleWithMapTrainerScript
; 0xbe675
SeenByTrainerScript:: ; 0xbe675
- loadtrainerdata
- playrammusic
+ loadmemtrainer
+ encountermusic
showemote EMOTE_SHOCK, LAST_TALKED, 30
callasm TrainerWalkToPlayer
applymovement2 MovementBuffer
@@ -22705,22 +11941,20 @@ SeenByTrainerScript:: ; 0xbe675
; 0xbe68a
StartBattleWithMapTrainerScript: ; 0xbe68a
- loadfont
+ opentext
trainertext $0
+ waitbutton
closetext
- loadmovesprites
- loadtrainerdata
+ loadmemtrainer
startbattle
- returnafterbattle
- trainerstatus SET_FLAG
+ reloadmapafterbattle
+ trainerflagaction SET_FLAG
loadvar wRunningTrainerBattleScript, -1
AlreadyBeatenTrainerScript:
scripttalkafter
; 0xbe699
-
-
SECTION "bank30", ROMX, BANK[$30]
INCLUDE "gfx/overworld/sprites_1.asm"
@@ -22729,54 +11963,53 @@ SECTION "bank31", ROMX, BANK[$31]
INCLUDE "gfx/overworld/sprites_2.asm"
-
SECTION "bank32", ROMX, BANK[$32]
INCLUDE "battle/bg_effects.asm"
INCLUDE "battle/anims.asm"
-Functioncbcdd: ; cbcdd
- call Functioncbce5
+LoadPoisonBGPals: ; cbcdd
+ call .LoadPals
ld a, [hCGB]
and a
ret nz
ret
; cbce5
-Functioncbce5: ; cbce5
+.LoadPals: ; cbce5
ld a, [hCGB]
and a
- jr nz, .asm_cbd06
+ jr nz, .cgb
ld a, [TimeOfDayPal]
and $3
cp $3
ld a, $0
- jr z, .asm_cbcf7
+ jr z, .convert_pals
ld a, $aa
-.asm_cbcf7
+.convert_pals
call DmgToCgbBGPals
ld c, 4
call DelayFrames
callba _UpdateTimePals
ret
-.asm_cbd06
+.cgb
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld hl, BGPals
ld c, $20
-.asm_cbd12
+.loop
; RGB 31, 21, 28
- ld a, $bc
+ ld a, (palred 31 + palgreen 21 + palblue 28) % $100
ld [hli], a
- ld a, $7e
+ ld a, (palred 31 + palgreen 21 + palblue 28) / $100
ld [hli], a
dec c
- jr nz, .asm_cbd12
+ jr nz, .loop
pop af
ld [rSVBK], a
ld a, $1
@@ -22791,7 +12024,6 @@ TheEndGFX:: ; cbd2e
INCBIN "gfx/credits/theend.2bpp"
; cbe2e
-
SECTION "bank33", ROMX, BANK[$33]
DisplayCaughtContestMonStats: ; cc000
@@ -22908,12 +12140,10 @@ Predef39: ; cc0d5
ret
; cc0d6
-
INCLUDE "battle/anim_commands.asm"
INCLUDE "battle/anim_objects.asm"
-
SECTION "Pic Animations 1", ROMX, BANK[$34]
INCLUDE "gfx/pics/animation.asm"
@@ -22954,55 +12184,50 @@ INCLUDE "gfx/pics/bitmasks.asm"
INCLUDE "gfx/pics/unown_bitmask_pointers.asm"
INCLUDE "gfx/pics/unown_bitmasks.asm"
-
SECTION "Pic Animations 2", ROMX, BANK[$35]
INCLUDE "gfx/pics/frame_pointers.asm"
INCLUDE "gfx/pics/kanto_frames.asm"
-
SECTION "bank36", ROMX, BANK[$36]
FontInversed: INCBIN "gfx/misc/font_inversed.1bpp"
-
SECTION "Pic Animations 3", ROMX, BANK[$36]
INCLUDE "gfx/pics/johto_frames.asm"
INCLUDE "gfx/pics/unown_frame_pointers.asm"
INCLUDE "gfx/pics/unown_frames.asm"
-
SECTION "Tileset Data 6", ROMX, BANK[TILESETS_6]
INCLUDE "tilesets/data_6.asm"
-
SECTION "bank38", ROMX, BANK[$38]
Functione0000: ; e0000
+; something to do with Unown printer
push de
xor a
call GetSRAMBank
ld hl, sScratch
ld bc, 0
-.asm_e000b
+.loop
push bc
push hl
push bc
ld de, wd002
- call Functione004e
- call Functione0057
+ call .Copy
+ call .Decompress
ld hl, Unknown_e008b
pop bc
-rept 2
add hl, bc
-endr
+ add hl, bc
ld a, [hli]
ld e, a
ld d, [hl]
ld hl, wd012
- call Functione004e
+ call .Copy
pop hl
ld bc, $10
add hl, bc
@@ -23010,10 +12235,11 @@ endr
inc c
ld a, c
cp $31
- jr c, .asm_e000b
+ jr c, .loop
+
ld hl, OverworldMap
ld de, sScratch
- ld bc, $310
+ ld bc, $31 tiles
call CopyBytes
pop hl
ld de, sScratch
@@ -23025,80 +12251,89 @@ endr
ret
; e004e
-Functione004e: ; e004e
+.Copy: ; e004e
ld c, $10
-.asm_e0050
+.loop_copy
ld a, [hli]
ld [de], a
inc de
dec c
- jr nz, .asm_e0050
+ jr nz, .loop_copy
ret
; e0057
-Functione0057: ; e0057
+.Decompress: ; e0057
ld hl, wd012
- ld e, $80
- ld d, $8
-.asm_e005e
+ ld e, %10000000
+ ld d, 8
+.loop_decompress
push hl
ld hl, wd002
- call Functione0078
+ call .CountSetBit
pop hl
ld a, b
ld [hli], a
push hl
ld hl, wd003
- call Functione0078
+ call .CountSetBit
pop hl
ld a, b
ld [hli], a
srl e
dec d
- jr nz, .asm_e005e
+ jr nz, .loop_decompress
ret
; e0078
-Functione0078: ; e0078
- ld b, $0
- ld c, $8
-.asm_e007c
+.CountSetBit: ; e0078
+ ld b, 0
+ ld c, 8
+.loop_count
ld a, [hli]
and e
- jr z, .asm_e0083
+ jr z, .clear
scf
- jr .asm_e0084
+ jr .apply
-.asm_e0083
+.clear
and a
-.asm_e0084
+.apply
rr b
inc hl
dec c
- jr nz, .asm_e007c
+ jr nz, .loop_count
ret
; e008b
+overworldmaptile EQUS "dw OverworldMap + $10 *"
+overworldmaprect: MACRO
+y = 0
+rept \1
+x = \1 * (\2 +- 1) + y
+rept \2
+ overworldmaptile x
+x = x +- \2
+endr
+y = y + 1
+endr
+endm
+
Unknown_e008b: ; e008b
- dw wcaa0, wca30, wc9c0, wc950, wc8e0, wc870, wc800
- dw wcab0, wca40, wc9d0, wc960, wc8f0, wc880, wc810
- dw wcac0, wca50, wc9e0, wc970, wc900, wc890, wc820
- dw wcad0, wca60, wc9f0, wc980, wc910, wc8a0, wc830
- dw wcae0, wca70, wca00, wc990, wc920, wc8b0, wc840
- dw wcaf0, wca80, wca10, wc9a0, wc930, wc8c0, wc850
- dw wcb00, wca90, wca20, wc9b0, wc940, wc8d0, wc860
+ overworldmaprect 7, 7
; e00ed
Unknown_e00ed:
; Graphics for an unused Game Corner
; game were meant to be here.
-Functione00ed: ; e00ed (38:40ed)
+ret_e00ed: ; e00ed (38:40ed)
+; How many coins?
ret
; e00ee (38:40ee)
INCLUDE "engine/card_flip.asm"
+INCLUDE "engine/unown_puzzle.asm"
INCLUDE "engine/dummy_game.asm"
INCLUDE "engine/billspc.asm"
@@ -23115,127 +12350,7 @@ SECTION "bank3E", ROMX, BANK[$3E]
INCLUDE "gfx/font.asm"
INCLUDE "engine/time_capsule/conversion.asm"
-
-UpdateUnownDex: ; fba18
- ld a, [UnownLetter]
- ld c, a
- ld b, 26
- ld hl, UnownDex
-.loop
- ld a, [hli]
- and a
- jr z, .done
- cp c
- ret z
- dec b
- jr nz, .loop
- ret
-
-.done
- dec hl
- ld [hl], c
- ret
-; fba2e
-
-
-Functionfba2e: ; fba2e (3e:7a2e)
- hlcoord 4, 15
- ld bc, 12
- ld a, " "
- call ByteFill
- ld a, [wc7dd]
- ld e, a
- ld d, 0
- ld hl, UnownDex
- add hl, de
- ld a, [hl]
- ld e, a
- ld d, 0
- ld hl, UnownWords
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld e, a
- ld d, [hl]
- hlcoord 4, 15
-.asm_fba52
- ld a, [de]
- cp $ff
- ret z
- inc de
- ld [hli], a
- jr .asm_fba52
-; fba5a (3e:7a5a)
-
-UnownWords: ; fba5a
- dw UnownWord1
- dw UnownWord1
- dw UnownWord2
- dw UnownWord3
- dw UnownWord4
- dw UnownWord5
- dw UnownWord6
- dw UnownWord7
- dw UnownWord8
- dw UnownWord9
- dw UnownWord10
- dw UnownWord11
- dw UnownWord12
- dw UnownWord13
- dw UnownWord14
- dw UnownWord15
- dw UnownWord16
- dw UnownWord17
- dw UnownWord18
- dw UnownWord19
- dw UnownWord20
- dw UnownWord21
- dw UnownWord22
- dw UnownWord23
- dw UnownWord24
- dw UnownWord25
- dw UnownWord26
-; fba90
-
-unownword: macro
-x = 1
- rept STRLEN(\1)
- db STRSUB(\1, x, 1) - $40
-x = x + 1
- endr
- db -1
-endm
-
-
-UnownWord1: unownword "ANGRY"
-UnownWord2: unownword "BEAR"
-UnownWord3: unownword "CHASE"
-UnownWord4: unownword "DIRECT"
-UnownWord5: unownword "ENGAGE"
-UnownWord6: unownword "FIND"
-UnownWord7: unownword "GIVE"
-UnownWord8: unownword "HELP"
-UnownWord9: unownword "INCREASE"
-UnownWord10: unownword "JOIN"
-UnownWord11: unownword "KEEP"
-UnownWord12: unownword "LAUGH"
-UnownWord13: unownword "MAKE"
-UnownWord14: unownword "NUZZLE"
-UnownWord15: unownword "OBSERVE"
-UnownWord16: unownword "PERFORM"
-UnownWord17: unownword "QUICKEN"
-UnownWord18: unownword "REASSURE"
-UnownWord19: unownword "SEARCH"
-UnownWord20: unownword "TELL"
-UnownWord21: unownword "UNDO"
-UnownWord22: unownword "VANISH"
-UnownWord23: unownword "WANT"
-UnownWord24: unownword "XXXXX"
-UnownWord25: unownword "YIELD"
-UnownWord26: unownword "ZOOM"
-; fbb32
-
+INCLUDE "engine/unowndex.asm"
INCLUDE "event/magikarp.asm"
INCLUDE "battle/hidden_power.asm"
@@ -23250,1054 +12365,15 @@ INCLUDE "engine/npctrade.asm"
INCLUDE "event/mom_phone.asm"
-INCLUDE "misc/mobile_40.asm"
+SECTION "bank40", ROMX, BANK[$40]
+INCLUDE "misc/mobile_40.asm"
SECTION "bank41", ROMX, BANK[$41]
-Function104000:: ; 104000
- ld hl, Function104006
- jp Function104177
-; 104006
-
-Function104006: ; 104006
- decoord 0, 0, AttrMap
- ld hl, w6_d400
- call Function104263
- decoord 0, 0
- ld hl, w6_d000
- call Function10425f
- ld a, $0
- ld [rVBK], a
- ld hl, w6_d000
- call Function10419d
- ld a, $1
- ld [rVBK], a
- ld hl, w6_d400
- call Function10419d
- ret
-; 10402d
-
-Function10402d:: ; 10402d
- ld hl, Function104033
- jp Function104177
-; 104033
-
-Function104033: ; 104033
- decoord 0, 0
- ld hl, w6_d000
- call Function10425f
- ld a, $0
- ld [rVBK], a
- ld hl, w6_d000
- call Function10419d
- ret
-; 104047
-
-Function104047: ; 104047
- ld hl, Function10404d
- jp Function104177
-; 10404d
-
-Function10404d: ; 10404d
- decoord 0, 0, AttrMap
- ld hl, w6_d400
- call Function104263
- ld a, $1
- ld [rVBK], a
- ld hl, w6_d400
- call Function10419d
- ret
-; 104061
-
-ReloadMapPart:: ; 104061
- ld hl, Function104067
- jp Function104177
-; 104067
-
-Function104067: ; 104067
- decoord 0, 0, AttrMap
- ld hl, w6_d400
- call Function104263
- decoord 0, 0
- ld hl, w6_d000
- call Function10425f
- call DelayFrame
- di
- ld a, [rVBK]
- push af
- ld a, $1
- ld [rVBK], a
- ld hl, w6_d400
- call Function1041ad
- ld a, $0
- ld [rVBK], a
- ld hl, w6_d000
- call Function1041ad
- pop af
- ld [rVBK], a
- ei
- ret
-
-Function104099: ; 104099
- ld hl, ReloadMapPart ; useless
- ld hl, Function1040a2
- jp Function104177
-; 1040a2
-
-Function1040a2: ; 1040a2
- decoord 0, 0, AttrMap
- ld hl, w6_d400
- call Function104263
- decoord 0, 0
- ld hl, w6_d000
- call Function10425f
- call DelayFrame
- di
- ld a, [rVBK]
- push af
- ld a, $1
- ld [rVBK], a
- ld hl, w6_d400
- call Function1041c1
- ld a, $0
- ld [rVBK], a
- ld hl, w6_d000
- call Function1041c1
- pop af
- ld [rVBK], a
- ei
- ret
-; 1040d4
-
-Function1040d4: ; 1040d4
- ld hl, Function1040da
- jp Function104177
-; 1040da
-
-Function1040da: ; 1040da
- ld a, $1
- ld [rVBK], a
- ld a, $3
- ld [rSVBK], a
- ld de, w3_d800
- ld a, [hBGMapAddress + 1]
- ld [rHDMA1], a
- ld a, [hBGMapAddress]
- ld [rHDMA2], a
- ld a, d
- ld [rHDMA3], a
- ld a, e
- ld [rHDMA4], a
- ld a, $23
- ld [hDMATransfer], a
- call Function1041a4
- ret
-; 1040fb
-
-Function1040fb: ; 1040fb
- ld hl, Function104101
- jp Function104177
-; 104101
-
-Function104101: ; 104101
- ld a, $1
- ld [rVBK], a
- ld a, $3
- ld [rSVBK], a
- ld hl, w3_d800
- call Function10419d
- ret
-; 104110
+INCLUDE "misc/gfx_41.asm"
-Function104110:: ; 104110
- ld hl, Function104116
- jp Function104177
-; 104116
-
-Function104116: ; 104116
- decoord 0, 0, AttrMap
- ld hl, w6_d400
- call Function104263
- decoord 0, 0
- ld hl, w6_d000
- call Function10425f
- call DelayFrame
- di
- ld a, [rVBK]
- push af
- ld a, $1
- ld [rVBK], a
- ld hl, w6_d400
- call Function1041b7
- ld a, $0
- ld [rVBK], a
- ld hl, w6_d000
- call Function1041b7
- pop af
- ld [rVBK], a
- ei
- ret
-; 104148
-
-Function104148: ; 104148 (41:4148)
- ld hl, Function10414e
- jp Function104177
-; 10414e (41:414e)
-
-Function10414e: ; 10414e
- decoord 0, 0, AttrMap
- ld hl, w6_d400
- call Function104263
- ld c, $ff
- decoord 0, 0
- ld hl, w6_d000
- call Function104265
- ld a, $1
- ld [rVBK], a
- ld hl, w6_d400
- call Function1041ad
- ld a, $0
- ld [rVBK], a
- ld hl, w6_d000
- call Function1041ad
- ret
-; 104177
-
-Function104177: ; 104177
- ld a, [hBGMapMode]
- push af
- ld a, [hMapAnims]
- push af
- xor a
- ld [hBGMapMode], a
- ld [hMapAnims], a
- ld a, [rSVBK]
- push af
- ld a, 6
- ld [rSVBK], a
- ld a, [rVBK]
- push af
- call Function10419c
- pop af
- ld [rVBK], a
- pop af
- ld [rSVBK], a
- pop af
- ld [hMapAnims], a
- pop af
- ld [hBGMapMode], a
- ret
-; 10419c
-
-Function10419c: ; 10419c
- jp [hl]
-; 10419d
-
-
-Function10419d: ; 10419d (41:419d)
- call Function10424e
- ld a, $23
- ld [hDMATransfer], a
-
-Function1041a4: ; 104a14
-.asm_1041a4
- call DelayFrame
- ld a, [hDMATransfer]
- and a
- jr nz, .asm_1041a4
- ret
-
-Function1041ad: ; 1041ad (41:41ad)
- ld a, [hBGMapAddress + 1]
- ld d, a
- ld a, [hBGMapAddress]
- ld e, a
- ld c, $24
- jr Function104209
-
-Function1041b7: ; 1041b7 (41:41b7)
- ld a, [hBGMapAddress + 1]
- ld d, a
- ld a, [hBGMapAddress]
- ld e, a
- ld c, $24
- jr asm_104205
-; 1041c1 (41:41c1)
-
-Function1041c1: ; 1041c1
- ld a, [hBGMapAddress + 1]
- ld d, a
- ld a, [hBGMapAddress]
- ld e, a
- ld c, $24
- ld a, h
- ld [rHDMA1], a
- ld a, l
- and $f0
- ld [rHDMA2], a
- ld a, d
- and $1f
- ld [rHDMA3], a
- ld a, e
- and $f0
- ld [rHDMA4], a
- ld a, c
- dec c
- or $80
- ld b, a
- ld a, $7f
- sub c
- ld d, a
-.loop1
- ld a, [rLY]
- cp d
- jr nc, .loop1
-.loop2
- ld a, [rSTAT]
- and $3
- jr z, .loop2
- ld a, b
- ld [rHDMA5], a
- ld a, [rLY]
- inc c
- ld hl, rLY
-.loop3
- cp [hl]
- jr z, .loop3
- ld a, [hl]
- dec c
- jr nz, .loop3
- ld hl, rHDMA5
- res 7, [hl]
- ret
-; 104205
-
-asm_104205:
- ld b, $7b
- jr asm_10420b
-
-
-Function104209:
-; LY magic
- ld b, $7f
-asm_10420b:
- ld a, h
- ld [rHDMA1], a
- ld a, l
- and $f0 ; high nybble
- ld [rHDMA2], a
- ld a, d
- and $1f ; lower 5 bits
- ld [rHDMA3], a
- ld a, e
- and $f0 ; high nybble
- ld [rHDMA4], a
- ld a, c
- dec c
- or $80 ; set 7, a
- ld e, a
- ld a, b
- sub c
- ld d, a
-.ly_loop
- ld a, [rLY]
- cp d
- jr nc, .ly_loop
-
- di
-.rstat_loop_1
- ld a, [rSTAT]
- and $3
- jr nz, .rstat_loop_1
-.rstat_loop_2
- ld a, [rSTAT]
- and $3
- jr z, .rstat_loop_2
- ld a, e
- ld [rHDMA5], a
- ld a, [rLY]
- inc c
- ld hl, rLY
-.final_ly_loop
- cp [hl]
- jr z, .final_ly_loop
- ld a, [hl]
- dec c
- jr nz, .final_ly_loop
- ld hl, rHDMA5
- res 7, [hl]
- ei
-
- ret
-; 10424e
-
-
-Function10424e: ; 10424e (41:424e)
- ld a, h
- ld [rHDMA1], a
- ld a, l
- ld [rHDMA2], a
- ld a, [hBGMapAddress + 1]
- and $1f
- ld [rHDMA3], a
- ld a, [hBGMapAddress]
- ld [rHDMA4], a
- ret
-
-Function10425f: ; 10425f (41:425f)
- ld c, $7f
- jr Function104265
-
-Function104263: ; 104263 (41:4263)
- ld c, $0
-
-Function104265: ; 104265 (41:4265)
-; back up the value of c to hMapObjectIndexBuffer
- ld a, [hMapObjectIndexBuffer]
- push af
- ld a, c
- ld [hMapObjectIndexBuffer], a
-
-; for each row on the screen
- ld c, SCREEN_HEIGHT
-.loop1
-; for each tile in the row
- ld b, SCREEN_WIDTH
-.loop2
-; copy from de to hl
- ld a, [de]
- inc de
- ld [hli], a
- dec b
- jr nz, .loop2
-
-; load the original value of c into hl 12 times
- ld a, [hMapObjectIndexBuffer]
- ld b, 12
-.loop3
- ld [hli], a
- dec b
- jr nz, .loop3
-
- dec c
- jr nz, .loop1
-
-; restore the original value of hMapObjectIndexBuffer
- pop af
- ld [hMapObjectIndexBuffer], a
- ret
-
-
-_Get2bpp:: ; 104284
- ; 2bpp when [rLCDC] & $80
- ; switch to WRAM bank 6
- ld a, [rSVBK]
- push af
- ld a, $6
- ld [rSVBK], a
-
- push bc
- push hl
-
- ; Copy c tiles of the 2bpp from b:de to w6_d000
- ld a, b ; bank
- ld l, c ; number of tiles
- ld h, $0
-rept 4
- add hl, hl ; multiply by 16 (16 bytes of a 2bpp = 8 x 8 tile)
-endr
- ld b, h
- ld c, l
- ld h, d ; address
- ld l, e
- ld de, w6_d000
- call FarCopyBytes
-
- pop hl
- pop bc
-
- push bc
- call DelayFrame
- pop bc
-
- ld d, h
- ld e, l
- ld hl, w6_d000
- call Function104209
-
- ; restore the previous bank
- pop af
- ld [rSVBK], a
- ret
-; 1042b2
-
-_Get1bpp:: ; 1042b2
- ; 1bpp when [rLCDC] & $80
-.loop
- ld a, c
- cp $10
- jp c, .bankswitch
- jp z, .bankswitch
- push bc
- push hl
- push de
- ld c, $10
- call .bankswitch
- pop de
- ld hl, $80
- add hl, de
- ld d, h
- ld e, l
- pop hl
- lb bc, 1, 0
- add hl, bc
- pop bc
- ld a, c
- sub $10
- ld c, a
- jr .loop
-; 1042d6
-
-.bankswitch: ; 1042d6
- ld a, [rSVBK]
- push af
- ld a, $6
- ld [rSVBK], a
-
- push bc
- push hl
-
- ld a, b
- ld l, c
- ld h, $0
-rept 3
- add hl, hl ; multiply by 8
-endr
- ld c, l
- ld b, h
- ld h, d
- ld l, e
- ld de, w6_d000
- call FarCopyBytesDouble_DoubleBankSwitch
-
- pop hl
- pop bc
-
- push bc
- call DelayFrame
- pop bc
-
- ld d, h
- ld e, l
- ld hl, w6_d000
- call Function104209
-
- pop af
- ld [rSVBK], a
- ret
-; 104303
-
-Function104303: ; 104303
- ld hl, Function104309
- jp Function104177
-; 104309
-
-Function104309:
- ld hl, w6_d000
- decoord 0, 0
- call Function10433a
- ld hl, w6_d000 + $80
- decoord 0, 0, AttrMap
- call Function10433a
- ld a, $1
- ld [rVBK], a
- ld c, $8
- ld hl, w6_d000 + $80
- debgcoord 0, 0, VBGMap1
- call Function104209
- ld a, $0
- ld [rVBK], a
- ld c, $8
- ld hl, w6_d000
- debgcoord 0, 0, VBGMap1
- call Function104209
- ret
-
-Function10433a: ; 10433a (41:433a)
- ld b, 4
-.outer_loop
- ld c, 20
-.inner_loop
- ld a, [de]
- ld [hli], a
- inc de
- dec c
- jr nz, .inner_loop
- ld a, l
- add $20 - 20
- ld l, a
- ld a, h
- adc $0
- ld h, a
- dec b
- jr nz, .outer_loop
- ret
-; 104350
-
-ShockEmote: INCBIN "gfx/emotes/shock.2bpp"
-QuestionEmote: INCBIN "gfx/emotes/question.2bpp"
-HappyEmote: INCBIN "gfx/emotes/happy.2bpp"
-SadEmote: INCBIN "gfx/emotes/sad.2bpp"
-HeartEmote: INCBIN "gfx/emotes/heart.2bpp"
-BoltEmote: INCBIN "gfx/emotes/bolt.2bpp"
-SleepEmote: INCBIN "gfx/emotes/sleep.2bpp"
-FishEmote: INCBIN "gfx/emotes/fish.2bpp"
-JumpShadowGFX: INCBIN "gfx/misc/shadow.2bpp"
-FishingRodGFX2: INCBIN "gfx/misc/fishing2.2bpp"
-BoulderDustGFX: INCBIN "gfx/misc/boulderdust.2bpp"
-FishingRodGFX4: INCBIN "gfx/misc/fishing4.2bpp"
-
-
-RunCallback_05_03: ; 1045b0
- call Clearwc7e8
- call ResetMapBufferEventFlags
- call ResetFlashIfOutOfCave
- call GetCurrentMapTrigger
- call ResetBikeFlags
- ld a, $5
- call RunMapCallback
-
-RunCallback_03: ; 1045c4
- callba ClearCmdQueue
- ld a, $3
- call RunMapCallback
- call GetMapHeaderTimeOfDayNybble
- ld [wc2d0], a
- ret
-
-
-EnterMapConnection: ; 1045d6
-; Return carry if a connection has been entered.
- ld a, [wPlayerStepDirection]
- and a
- jp z, EnterSouthConnection
- cp 1
- jp z, EnterNorthConnection
- cp 2
- jp z, EnterWestConnection
- cp 3
- jp z, EnterEastConnection
- ret
-; 1045ed
-
-
-EnterWestConnection: ; 1045ed
- ld a, [WestConnectedMapGroup]
- ld [MapGroup], a
- ld a, [WestConnectedMapNumber]
- ld [MapNumber], a
- ld a, [WestConnectionStripXOffset]
- ld [XCoord], a
- ld a, [WestConnectionStripYOffset]
- ld hl, YCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, WestConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- srl c
- jr z, .skip_to_load
- ld a, [WestConnectedMapWidth]
- add 6
- ld e, a
- ld d, 0
-
-.loop
- add hl, de
- dec c
- jr nz, .loop
-
-.skip_to_load
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- jp EnteredConnection
-; 104629
-
-
-EnterEastConnection: ; 104629
- ld a, [EastConnectedMapGroup]
- ld [MapGroup], a
- ld a, [EastConnectedMapNumber]
- ld [MapNumber], a
- ld a, [EastConnectionStripXOffset]
- ld [XCoord], a
- ld a, [EastConnectionStripYOffset]
- ld hl, YCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, EastConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- srl c
- jr z, .skip_to_load
- ld a, [EastConnectedMapWidth]
- add 6
- ld e, a
- ld d, 0
-
-.loop
- add hl, de
- dec c
- jr nz, .loop
-
-.skip_to_load
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- jp EnteredConnection
-; 104665
-
-
-EnterNorthConnection: ; 104665
- ld a, [NorthConnectedMapGroup]
- ld [MapGroup], a
- ld a, [NorthConnectedMapNumber]
- ld [MapNumber], a
- ld a, [NorthConnectionStripYOffset]
- ld [YCoord], a
- ld a, [NorthConnectionStripXOffset]
- ld hl, XCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, NorthConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld b, 0
- srl c
- add hl, bc
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- jp EnteredConnection
-; 104696
-
-
-EnterSouthConnection: ; 104696
- ld a, [SouthConnectedMapGroup]
- ld [MapGroup], a
- ld a, [SouthConnectedMapNumber]
- ld [MapNumber], a
- ld a, [SouthConnectionStripYOffset]
- ld [YCoord], a
- ld a, [SouthConnectionStripXOffset]
- ld hl, XCoord
- add [hl]
- ld [hl], a
- ld c, a
- ld hl, SouthConnectionWindow
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld b, 0
- srl c
- add hl, bc
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- ; fallthrough
-; 1046c4
-
-EnteredConnection: ; 1046c4
- scf
- ret
-; 1046c6
-
-LoadWarpData: ; 1046c6
- call Function1046df
- call Function104718
- ld a, [wd146]
- ld [WarpNumber], a
- ld a, [wd147]
- ld [MapGroup], a
- ld a, [wd148]
- ld [MapNumber], a
- ret
-
-Function1046df: ; 1046df (41:46df)
- call GetMapPermission
- call CheckOutdoorMap
- ret nz
- ld a, [wd147]
- ld b, a
- ld a, [wd148]
- ld c, a
- call GetAnyMapPermission
- call CheckIndoorMap
- ret nz
- ld a, [wd14a]
- cp $f
- jr nz, .asm_104705
- ld a, [wd14b]
- cp $a
- ret z
- cp $c
- ret z
-.asm_104705
- ld a, [wd149]
- ld [wdca9], a
- ld a, [wd14a]
- ld [wdcaa], a
- ld a, [wd14b]
- ld [wdcab], a
- ret
-
-Function104718: ; 104718 (41:4718)
- call GetMapPermission
- call CheckOutdoorMap
- ret nz
- ld a, [wd147]
- ld b, a
- ld a, [wd148]
- ld c, a
- call GetAnyMapPermission
- call CheckIndoorMap
- ret nz
- ld a, [wd147]
- ld b, a
- ld a, [wd148]
- ld c, a
- call GetAnyMapTileset
- ld a, c
- cp $7
- jr z, .asm_104743
- cp $15
- jr z, .asm_104743
- ret
-.asm_104743
- ld a, [wd14a]
- ld [wdcb2], a
- ld a, [wd14b]
- ld [wdcb3], a
- ret
-
-LoadMapTimeOfDay: ; 104750
- ld hl, VramState
- res 6, [hl]
- ld a, $1
- ld [wSpriteUpdatesEnabled], a
- callba Function8c0e5
- callba Function8c001
- call OverworldTextModeSwitch
- call Function104770
- call Function1047a3
- ret
-
-Function104770: ; 104770 (41:4770)
- ld a, VBGMap0 / $100
- ld [wBGMapAnchor + 1], a
- xor a
- ld [wBGMapAnchor], a
- ld [hSCY], a
- ld [hSCX], a
- callba Function5958
- ld a, [rVBK]
- push af
- ld a, $1
- ld [rVBK], a
- xor a
- lb bc, 4, 0
- hlbgcoord 0, 0
- call ByteFill
- pop af
- ld [rVBK], a
- ld a, $60
- lb bc, 4, 0
- hlbgcoord 0, 0
- call ByteFill
- ret
-
-Function1047a3: ; 1047a3 (41:47a3)
- decoord 0, 0
- call .copy
- ld a, [hCGB]
- and a
- ret z
-
- decoord 0, 0, AttrMap
- ld a, $1
- ld [rVBK], a
-.copy:
- hlbgcoord 0, 0
- ld c, SCREEN_WIDTH
- ld b, SCREEN_HEIGHT
-.row
- push bc
-.column
- ld a, [de]
- inc de
- ld [hli], a
- dec c
- jr nz, .column
- ld bc, $20 - SCREEN_WIDTH
- add hl, bc
- pop bc
- dec b
- jr nz, .row
- ld a, $0
- ld [rVBK], a
- ret
-
-LoadGraphics: ; 1047cf
- call LoadTilesetHeader
- call LoadTileset
- xor a
- ld [hMapAnims], a
- xor a
- ld [hTileAnimFrame], a
- callba RefreshSprites
- call LoadFontsExtra
- callba Function106594
- ret
-
-LoadMapPalettes: ; 1047eb
- ld b, SCGB_09
- jp GetSGBLayout
-; 1047f0
-
-RefreshMapSprites: ; 1047f0
- call ClearSprites
- callba ReturnFromMapSetupScript
- call GetMovementPermissions
- callba Function579d
- callba CheckReplaceKrisSprite
- ld hl, wPlayerSpriteSetupFlags
- bit 6, [hl]
- jr nz, .skip
- ld hl, VramState
- set 0, [hl]
- call Function2e31
-.skip
- ld a, [wPlayerSpriteSetupFlags]
- and $1c
- ld [wPlayerSpriteSetupFlags], a
- ret
-
-CheckMovingOffEdgeOfMap:: ; 104820 (41:4820)
- ld a, [wPlayerStepDirection]
- cp STANDING
- ret z
- and a ; DOWN
- jr z, .down
- cp UP
- jr z, .up
- cp LEFT
- jr z, .left
- cp RIGHT
- jr z, .right
- and a
- ret
-
-.down
- ld a, [PlayerNextMapY]
- sub 4
- ld b, a
- ld a, [MapHeight]
- add a
- cp b
- jr z, .ok
- and a
- ret
-
-.up
- ld a, [PlayerNextMapY]
- sub 4
- cp -1
- jr z, .ok
- and a
- ret
-
-.left
- ld a, [PlayerNextMapX]
- sub $4
- cp -1
- jr z, .ok
- and a
- ret
-
-.right
- ld a, [PlayerNextMapX]
- sub 4
- ld b, a
- ld a, [MapWidth]
- add a
- cp b
- jr z, .ok
- and a
- ret
-
-.ok
- scf
- ret
-
-
-GetCoordOfUpperLeftCorner:: ; 10486d
- ld hl, OverworldMap
- ld a, [XCoord]
- bit 0, a
- jr nz, .increment_then_halve1
- srl a
- add $1
- jr .resume
-
-.increment_then_halve1
- add $1
- srl a
-
-.resume
- ld c, a
- ld b, $0
- add hl, bc
- ld a, [MapWidth]
- add $6
- ld c, a
- ld b, $0
- ld a, [YCoord]
- bit 0, a
- jr nz, .increment_then_halve2
- srl a
- add $1
- jr .resume2
-
-.increment_then_halve2
- add $1
- srl a
-
-.resume2
- call AddNTimes
- ld a, l
- ld [wd194], a
- ld a, h
- ld [wd194 + 1], a
- ld a, [YCoord]
- and $1
- ld [wd196], a
- ld a, [XCoord]
- and $1
- ld [wd197], a
- ret
-; 1048ba
+INCLUDE "engine/warp_connection.asm"
INCLUDE "engine/mysterygift.asm"
@@ -24305,8 +12381,9 @@ INCLUDE "battle/used_move_text.asm"
INCLUDE "misc/mobile_41.asm"
-INCLUDE "misc/mobile_42.asm"
+SECTION "bank42", ROMX, BANK[$42]
+INCLUDE "misc/mobile_42.asm"
SECTION "Intro Logo", ROMX, BANK[$42]
@@ -24314,13 +12391,10 @@ IntroLogoGFX: ; 109407
INCBIN "gfx/intro/logo.2bpp.lz"
; 109847
-
INCLUDE "misc/unused_title.asm"
-
INCLUDE "engine/title.asm"
-
INCLUDE "misc/mobile_45.asm"
INCLUDE "misc/mobile_46.asm"
@@ -24331,6 +12405,7 @@ INCLUDE "misc/battle_tower_47.asm"
SECTION "bank5B", ROMX, BANK[$5B]
INCLUDE "misc/mobile_5b.asm"
+INCLUDE "engine/link_trade.asm"
SECTION "bank5C", ROMX, BANK[$5C]
@@ -24340,7 +12415,6 @@ SECTION "bank5D", ROMX, BANK[$5D]
INCLUDE "text/phone/extra3.asm"
-
SECTION "bank5E", ROMX, BANK[$5E]
_UpdateBattleHUDs:
@@ -24354,10 +12428,8 @@ _UpdateBattleHUDs:
ret
; 17801f (5e:401f)
-
INCLUDE "misc/mobile_5f.asm"
-
SECTION "Common Text 1", ROMX, BANK[$6C]
INCLUDE "text/stdtext.asm"
@@ -24380,7 +12452,6 @@ INCLUDE "text/phone/bill.asm"
INCLUDE "text/phone/elm.asm"
INCLUDE "text/phone/trainers1.asm"
-
SECTION "bank72", ROMX, BANK[$72]
ItemNames::
@@ -24393,375 +12464,17 @@ INCLUDE "battle/move_names.asm"
INCLUDE "engine/landmarks.asm"
-
SECTION "bank75", ROMX, BANK[$75]
-
SECTION "bank76", ROMX, BANK[$76]
-
SECTION "bank77", ROMX, BANK[$77]
UnownFont: ; 1dc000
INCBIN "gfx/misc/unown_font.2bpp"
; 1dc1b0
-Function1dc1b0: ; 1dc1b0
- hlcoord 0, 0
- ld de, wca90
- ld bc, 17 * SCREEN_WIDTH
- call CopyBytes
- ld hl, wcab5
- ld a, $62
- ld [hli], a
- inc a
- ld [hl], a
- ld hl, wcac9
- ld a, $64
- ld [hli], a
- inc a
- ld [hl], a
- ld hl, wcb45
- ld a, " "
- ld [hli], a
- ld [hl], a
- ld hl, wcb59
- ld a, $61
- ld [hli], a
- ld [hl], a
- ld hl, wcb6e
- lb bc, 5, 18
- call ClearBox
- ld a, [wd265]
- dec a
- call CheckCaughtMon
- push af
- ld a, [wd265]
- ld b, a
- ld c, $1
- callba Function44355
- pop af
- ld a, b
- ld hl, wcb6d
- call nz, FarString
- ld hl, wcaa3
- ld [hl], $35
- ld de, SCREEN_WIDTH
- add hl, de
- ld b, $f
-.asm_1dc20a
- ld [hl], $37
- add hl, de
- dec b
- jr nz, .asm_1dc20a
- ld [hl], $3a
- ret
-; 1dc213
-
-Function1dc213: ; 1dc213
- ld hl, wca90
- ld bc, $a0
- ld a, " "
- call ByteFill
- ld hl, wca90
- ld a, $36
- ld b, $6
- call Function1dc26a
- ld hl, wcaa3
- ld a, $37
- ld b, $6
- call Function1dc26a
- ld hl, wcb08
- ld [hl], $38
- inc hl
- ld a, $39
- ld bc, SCREEN_HEIGHT
- call ByteFill
- ld [hl], $3a
- ld hl, wcb1c
- ld bc, SCREEN_WIDTH
- ld a, $32
- call ByteFill
- ld a, [wd265]
- dec a
- call CheckCaughtMon
- push af
- ld a, [wd265]
- ld b, a
- ld c, $2
- callba Function44355
- pop af
- ld hl, wcaa5
- ld a, b
- call nz, FarString
- ret
-; 1dc26a
-
-Function1dc26a: ; 1dc26a
- push de
- ld de, SCREEN_WIDTH
-.asm_1dc26e
- ld [hl], a
- add hl, de
- dec b
- jr nz, .asm_1dc26e
- pop de
- ret
-; 1dc275
-
-GBPrinterStrings:
-String_1dc275: db "@"
-String_1dc276: next " CHECKING LINK...@"
-String_1dc289: next " TRANSMITTING...@"
-String_1dc29c: next " PRINTING...@"
-String_1dc2ad:
- db " Printer Error 1"
- next ""
- next "Check the Game Boy"
- next "Printer Manual."
- db "@"
-String_1dc2e2:
- db " Printer Error 2"
- next ""
- next "Check the Game Boy"
- next "Printer Manual."
- db "@"
-String_1dc317:
- db " Printer Error 3"
- next ""
- next "Check the Game Boy"
- next "Printer Manual."
- db "@"
-String_1dc34c:
- db " Printer Error 4"
- next ""
- next "Check the Game Boy"
- next "Printer Manual."
- db "@"
-; 1dc381
-
-Function1dc381: ; 1dc381
- call ClearBGPalettes
- call ClearTileMap
- call ClearSprites
- xor a
- ld [hBGMapMode], a
- call LoadFontsBattleExtra
-
- ld de, MobileHPIcon
- ld hl, VTiles2 tile $71
- lb bc, BANK(MobileHPIcon), 1
- call Request1bpp
-
- ld de, MobileLvIcon
- ld hl, VTiles2 tile $6e
- lb bc, BANK(MobileLvIcon), 1
- call Request1bpp
-
- ld de, ShinyIcon
- ld hl, VTiles2 tile $3f
- lb bc, BANK(ShinyIcon), 1
- call Get2bpp
-
- xor a
- ld [MonType], a
- callba CopyPkmnToTempMon
- hlcoord 0, 7
- ld b, 9
- ld c, 18
- call TextBox
- hlcoord 8, 2
- ld a, [TempMonLevel]
- call Function383d
- hlcoord 12, 2
- ld [hl], "◀" ; Filled left triangle
- inc hl
- ld de, TempMonMaxHP
- lb bc, 2, 3
- call PrintNum
- ld a, [CurPartySpecies]
- ld [wd265], a
- ld [CurSpecies], a
- ld hl, PartyMonNicknames
- call Function1dc50e
- hlcoord 8, 4
- call PlaceString
- hlcoord 9, 6
- ld [hl], "/"
- call GetPokemonName
- hlcoord 10, 6
- call PlaceString
- hlcoord 8, 0
- ld [hl], "№"
- inc hl
- ld [hl], "."
- inc hl
- ld de, wd265
- lb bc, PRINTNUM_LEADINGZEROS | 1, 3
- call PrintNum
- hlcoord 1, 9
- ld de, String1dc550
- call PlaceString
- ld hl, PartyMonOT
- call Function1dc50e
- hlcoord 4, 9
- call PlaceString
- hlcoord 1, 11
- ld de, String1dc559
- call PlaceString
- hlcoord 4, 11
- ld de, TempMonID
- lb bc, PRINTNUM_LEADINGZEROS | 2, 5
- call PrintNum
- hlcoord 1, 14
- ld de, String1dc554
- call PlaceString
- hlcoord 7, 14
- ld a, [TempMonMoves + 0]
- call Function1dc51a
- call Function1dc52c
- ld hl, TempMonDVs
- predef GetUnownLetter
- ld hl, wc2c6
- xor a
- ld [hl], a
- ld a, [CurPartySpecies]
- cp UNOWN
- jr z, .asm_1dc469
- inc [hl]
-
-.asm_1dc469
- hlcoord 0, 0
- call _PrepMonFrontpic
- call WaitBGMap
- ld b, SCGB_03
- call GetSGBLayout
- call SetPalettes
- ret
-; 1dc47b
-
-Function1dc47b: ; 1dc47b
- call ClearBGPalettes
- call ClearTileMap
- call ClearSprites
- xor a
- ld [hBGMapMode], a
- call LoadFontsBattleExtra
- xor a
- ld [MonType], a
- callba CopyPkmnToTempMon
- hlcoord 0, 0
- ld b, 15
- ld c, 18
- call TextBox
- ld bc, SCREEN_WIDTH
- decoord 0, 0
- hlcoord 0, 1
- call CopyBytes
- hlcoord 7, 0
- ld a, [TempMonMoves + 1]
- call Function1dc51a
- hlcoord 7, 2
- ld a, [TempMonMoves + 2]
- call Function1dc51a
- hlcoord 7, 4
- ld a, [TempMonMoves + 3]
- call Function1dc51a
- hlcoord 7, 7
- ld de, String1dc55d
- call PlaceString
- hlcoord 16, 7
- ld de, TempMonAttack
- call .PrintTempMonStats
- hlcoord 16, 9
- ld de, TempMonDefense
- call .PrintTempMonStats
- hlcoord 16, 11
- ld de, TempMonSpclAtk
- call .PrintTempMonStats
- hlcoord 16, 13
- ld de, TempMonSpclDef
- call .PrintTempMonStats
- hlcoord 16, 15
- ld de, TempMonSpeed
- call .PrintTempMonStats
- call WaitBGMap
- ld b, SCGB_03
- call GetSGBLayout
- call SetPalettes
- ret
-; 1dc507
-
-.PrintTempMonStats: ; 1dc507
- lb bc, 2, 3
- call PrintNum
- ret
-; 1dc50e
-
-Function1dc50e: ; 1dc50e
- ld bc, NAME_LENGTH
- ld a, [CurPartyMon]
- call AddNTimes
- ld e, l
- ld d, h
- ret
-; 1dc51a
-
-Function1dc51a: ; 1dc51a
- and a
- jr z, .no_move
-
- ld [wd265], a
- call GetMoveName
- jr .got_string
-
-.no_move
- ld de, String1dc584
-
-.got_string
- call PlaceString
- ret
-; 1dc52c
-
-Function1dc52c: ; 1dc52c
- callba GetGender
- ld a, " "
- jr c, .got_gender
- ld a, "♂"
- jr nz, .got_gender
- ld a, "♀"
-
-.got_gender
- hlcoord 17, 2
- ld [hl], a
- ld bc, TempMonDVs
- callba CheckShininess
- ret nc
- hlcoord 18, 2
- ld [hl], "<SHINY>"
- ret
-; 1dc550
-
-String1dc550: ; 1dc550
- db "OT/@"
-
-String1dc554: ; 1dc554
- db "MOVE@"
-
-String1dc559: ; 1dc559
- db "<ID>№.@"
-
-String1dc55d: ; 1dc55d
- db "ATTACK"
- next "DEFENSE"
- next "SPCL.ATK"
- next "SPCL.DEF"
- next "SPEED"
- db "@"
-
-String1dc584: ; 1dc584
- db "------------@"
-; 1dc591
+INCLUDE "misc/printer_77.asm"
MobileHPIcon: ; 1dc591
INCBIN "gfx/mobile/hp.1bpp"
@@ -24769,14 +12482,10 @@ INCBIN "gfx/mobile/hp.1bpp"
MobileLvIcon: ; 1dc599
INCBIN "gfx/mobile/lv.1bpp"
-
-
SECTION "Tileset Data 7", ROMX, BANK[TILESETS_7]
INCLUDE "tilesets/data_7.asm"
-
-
SECTION "bank77_2", ROMX, BANK[$77]
Function1dd6a9: ; 1dd6a9
@@ -24846,11 +12555,9 @@ String_AM: db "AM@" ; 1dd6fc
String_PM: db "PM@" ; 1dd6ff
; 1dd702
-
INCLUDE "engine/diploma.asm"
-
-Function1ddf1c: ; 1ddf1c
+LoadSGBPokedexGFX: ; 1ddf1c
ld hl, LZ_1ddf33
ld de, VTiles2 tile $31
call Decompress
@@ -24866,21 +12573,21 @@ Function1ddf26: ; 1ddf26 (77:5f26)
; 1ddf33 (77:5f33)
LZ_1ddf33: ; 1ddf33
-INCBIN "gfx/unknown/1ddf33.2bpp.lz"
+INCBIN "gfx/pokedex/sgb.2bpp.lz"
; 1de0d7
-Function1de0d7: ; 1de0d7
- ld hl, LZ_1de0e1
+LoadQuestionMarkPic: ; 1de0d7
+ ld hl, .QuestionMarkLZ
ld de, sScratch
call Decompress
ret
; 1de0e1
-LZ_1de0e1: ; 1de0e1
-INCBIN "gfx/unknown/1de0e1.2bpp.lz"
+.QuestionMarkLZ: ; 1de0e1
+INCBIN "gfx/pics/questionmark/front.2bpp.lz"
; 1de171
-Function1de171: ; 1de171 (77:6171)
+DrawPokedexListWindow: ; 1de171 (77:6171)
ld a, $32
hlcoord 0, 17
ld bc, 12
@@ -24890,46 +12597,49 @@ Function1de171: ; 1de171 (77:6171)
call ClearBox
ld a, $34
hlcoord 0, 0
- ld bc, $b
+ ld bc, 11
call ByteFill
ld a, $39
hlcoord 0, 16
- ld bc, $b
+ ld bc, 11
call ByteFill
hlcoord 5, 0
ld [hl], $3f
hlcoord 5, 16
ld [hl], $40
- ld a, [wc7d4]
- cp $1
- jr z, .asm_1de1bf
+ ld a, [wCurrentDexMode]
+ cp DEXMODE_OLD
+ jr z, .OldMode
+; scroll bar
hlcoord 11, 0
ld [hl], $50
ld a, $51
hlcoord 11, 1
ld b, SCREEN_HEIGHT - 3
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $52
- jr .asm_1de1d0
-.asm_1de1bf
+ jr .Done
+
+.OldMode
+; no scroll bar
hlcoord 11, 0
ld [hl], $66
ld a, $67
hlcoord 11, 1
ld b, SCREEN_HEIGHT - 3
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $68
-.asm_1de1d0
+.Done
ret
-Function1de1d1: ; 1de1d1 (77:61d1)
+DrawPokedexSearchResultsWindow: ; 1de1d1 (77:61d1)
ld a, $34
hlcoord 0, 0
- ld bc, $b
+ ld bc, 11
call ByteFill
ld a, $39
hlcoord 0, 10
- ld bc, $b
+ ld bc, 11
call ByteFill
hlcoord 5, 0
ld [hl], $3f
@@ -24940,35 +12650,36 @@ Function1de1d1: ; 1de1d1 (77:61d1)
ld a, $67
hlcoord 11, 1
ld b, SCREEN_HEIGHT / 2
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $68
ld a, $34
hlcoord 0, 11
- ld bc, $b
+ ld bc, 11
call ByteFill
ld a, $39
hlcoord 0, 17
- ld bc, $b
+ ld bc, 11
call ByteFill
hlcoord 11, 11
ld [hl], $66
ld a, $67
hlcoord 11, 12
ld b, 5
- call Function1de27f
+ call Bank77_FillColumn
ld [hl], $68
hlcoord 0, 12
lb bc, 5, 11
call ClearBox
- ld de, String_1de23c
+ ld de, .esults_D
hlcoord 0, 12
call PlaceString
ret
; 1de23c (77:623c)
-String_1de23c: ; 1de23c
-; At a glance, this is less coherent in the Japanese charset.
+.esults_D: ; 1de23c
+; (SEARCH R)
db "ESULTS<NEXT>"
+; (### FOUN)
next "D!@"
; 1de247
@@ -24987,16 +12698,16 @@ Function1de247: ; 1de247
ld [hl], $66
hlcoord 19, 1
ld a, $67
- ld b, SCREEN_HEIGHT - 3
- call Function1de27f
+ ld b, 15
+ call Bank77_FillColumn
ld [hl], $68
hlcoord 19, 17
ld [hl], $3c
xor a
ld b, SCREEN_HEIGHT
hlcoord 19, 0, AttrMap
- call Function1de27f
- call Function3200
+ call Bank77_FillColumn
+ call WaitBGMap2
pop hl
ld a, l
ld [hBGMapAddress], a
@@ -25005,7 +12716,7 @@ Function1de247: ; 1de247
ret
; 1de27f
-Function1de27f: ; 1de27f
+Bank77_FillColumn: ; 1de27f
push de
ld de, SCREEN_WIDTH
.loop
@@ -25017,8 +12728,6 @@ Function1de27f: ; 1de27f
ret
; 1de28a
-
-
_DudeAutoInput_A:: ; 1de28a
ld hl, DudeAutoInput_A
jr _DudeAutoInput
@@ -25040,7 +12749,6 @@ _DudeAutoInput: ; 1de299
ret
; 1de29f
-
DudeAutoInputs:
DudeAutoInput_A: ; 1de29f
@@ -25071,7 +12779,6 @@ DudeAutoInput_DownA: ; 1de2af
db NO_INPUT, $ff ; end
; 1de2c5
-
Function1de2c5: ; 1de2c5
ld hl, StringBuffer1
.loop
@@ -25233,28 +12940,22 @@ LeggiPostaInglese:
ret
; 1df238
-
SECTION "Tileset Data 8", ROMX, BANK[TILESETS_8]
INCLUDE "tilesets/data_8.asm"
-
SECTION "bank79", ROMX, BANK[$79]
-
SECTION "bank7A", ROMX, BANK[$7A]
-
SECTION "bank7B", ROMX, BANK[$7B]
INCLUDE "text/battle_tower.asm"
-
SECTION "bank7C", ROMX, BANK[$7C]
INCLUDE "data/battle_tower_2.asm"
-
SECTION "bank7D", ROMX, BANK[$7D]
db $cc, $6b, $1e ; XXX
@@ -25301,16 +13002,13 @@ Function1f5d9f: ; 1f5d9f
Unknown_1f5db4:
INCBIN "unknown/1f5db4.bin"
-
SECTION "bank7E", ROMX, BANK[$7E]
INCLUDE "data/battle_tower.asm"
INCLUDE "data/odd_eggs.asm"
-
SECTION "bank7F", ROMX, BANK[$7F]
-
SECTION "stadium2", ROMX[$8000-$220], BANK[$7F]
IF DEF(CRYSTAL11)