summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
authorPikalaxALT <PikalaxALT@gmail.com>2015-11-28 15:13:40 -0500
committerPikalaxALT <PikalaxALT@gmail.com>2015-11-28 15:13:40 -0500
commit8612a4a531b755b1d323e834980dab5ae896499c (patch)
tree10e38f0fb2bd99a4f7077c1d3c82662ae43b63a4 /engine
parent43903f543bb04344710d57862a2c5534fd3e5b4c (diff)
Renaming sections, further dissolving main.asm
Diffstat (limited to 'engine')
-rwxr-xr-xengine/breeding/egg.asm40
-rwxr-xr-xengine/crystal_intro.asm4
-rwxr-xr-xengine/debug.asm2
-rwxr-xr-xengine/dummy_game.asm6
-rw-r--r--engine/events.asm4
-rwxr-xr-xengine/evolution_animation.asm105
-rwxr-xr-xengine/evolve.asm4
-rwxr-xr-xengine/learn.asm257
-rwxr-xr-xengine/link.asm2
-rwxr-xr-xengine/math.asm196
-rw-r--r--engine/party_menu.asm2
-rw-r--r--engine/pokedex.asm80
-rwxr-xr-xengine/pokegear.asm6
-rwxr-xr-xengine/printer.asm4
-rw-r--r--engine/scripting.asm29
-rwxr-xr-xengine/sprites.asm148
-rwxr-xr-xengine/time_capsule/conversion.asm2
-rwxr-xr-xengine/town_map.asm2
-rwxr-xr-xengine/trade/animation.asm2
19 files changed, 666 insertions, 229 deletions
diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm
index 4e2130d65..6d6141c4f 100755
--- a/engine/breeding/egg.asm
+++ b/engine/breeding/egg.asm
@@ -678,7 +678,7 @@ Function1727f: ; 1727f (5:727f)
push hl
push de
push bc
- callab Function8cf69
+ callab PlaySpriteAnimations
call DelayFrame
pop bc
pop de
@@ -789,9 +789,9 @@ Function1736d: ; 1736d (5:736d)
ret nc
swap a
srl a
- add $4c
+ add 9 * 8 + 4
ld d, a
- ld e, $58
+ ld e, 11 * 8
ld a, SPRITE_ANIM_INDEX_19
call _InitSpriteAnimStruct
ld hl, $3
@@ -807,10 +807,10 @@ INCBIN "gfx/unknown/017393.2bpp"
Function173b3: ; 173b3 (5:73b3)
callba Function8cf53
- ld hl, Unknown_173ef
+ ld hl, .SpriteData
.loop
ld a, [hli]
- cp $ff
+ cp -1
jr z, .done
ld e, a
ld a, [hli]
@@ -823,16 +823,16 @@ Function173b3: ; 173b3 (5:73b3)
push bc
ld a, SPRITE_ANIM_INDEX_1C
call _InitSpriteAnimStruct
- ld hl, $3
+ ld hl, SpriteAnim1TileID - SpriteAnim1
add hl, bc
ld [hl], $0
pop de
ld a, e
- ld hl, $1
+ ld hl, SpriteAnim1Sprite01 - SpriteAnim1
add hl, bc
add [hl]
ld [hl], a
- ld hl, $b
+ ld hl, SpriteAnim1Sprite0b - SpriteAnim1
add hl, bc
ld [hl], d
pop hl
@@ -844,19 +844,19 @@ Function173b3: ; 173b3 (5:73b3)
ret
; 173ef (5:73ef)
-Unknown_173ef: ; 173ef
+.SpriteData: ; 173ef
; Probably OAM.
- db $54, $48, $00, $3c
- db $5c, $48, $01, $04
- db $54, $50, $00, $30
- db $5c, $50, $01, $10
- db $54, $58, $02, $24
- db $5c, $58, $03, $1c
- db $50, $4c, $00, $36
- db $60, $4c, $01, $0a
- db $50, $54, $02, $2a
- db $60, $54, $03, $16
- db $ff
+ dsprite 10, 4, 9, 0, $00, $3c
+ dsprite 11, 4, 9, 0, $01, $04
+ dsprite 10, 4, 10, 0, $00, $30
+ dsprite 11, 4, 10, 0, $01, $10
+ dsprite 10, 4, 11, 0, $02, $24
+ dsprite 11, 4, 11, 0, $03, $1c
+ dsprite 10, 0, 9, 4, $00, $36
+ dsprite 12, 0, 9, 4, $01, $0a
+ dsprite 10, 0, 10, 4, $02, $2a
+ dsprite 12, 0, 10, 4, $03, $16
+ db -1
; 17418
Function17418: ; 17418 (5:7418)
diff --git a/engine/crystal_intro.asm b/engine/crystal_intro.asm
index 69a068ff9..3f764526d 100755
--- a/engine/crystal_intro.asm
+++ b/engine/crystal_intro.asm
@@ -52,7 +52,7 @@ Functione4579: ; e4579
bit 7, a
jr nz, .finish
call PlaceGameFreakPresents
- callba Function8cf69
+ callba PlaySpriteAnimations
call DelayFrame
jr .joy_loop
@@ -406,7 +406,7 @@ CrystalIntro: ; e48ac
bit 7, a
jr nz, .done
call IntroSceneJumper
- callba Function8cf69
+ callba PlaySpriteAnimations
call DelayFrame
jp .loop
diff --git a/engine/debug.asm b/engine/debug.asm
index 0d2720990..1e00ae4f5 100755
--- a/engine/debug.asm
+++ b/engine/debug.asm
@@ -425,7 +425,7 @@ Function81adb: ; 81adb
.asm_81b7a
ld a, [wd265]
ld [TrainerClass], a
- callab Function3957b
+ callab GetTrainerAttributes
ld de, StringBuffer1
hlcoord 4, 1
call PlaceString
diff --git a/engine/dummy_game.asm b/engine/dummy_game.asm
index 4e8dad1a3..756486ff8 100755
--- a/engine/dummy_game.asm
+++ b/engine/dummy_game.asm
@@ -47,7 +47,7 @@ Functione1ebb: ; e1ebb (38:5ebb)
bit 7, a
jr nz, .asm_e1ed0
call Functione1ed2
- callab Function8cf69
+ callab PlaySpriteAnimations
call DelayFrame
and a
ret
@@ -89,7 +89,7 @@ Functione1ef3: ; e1ef3
; e1efb
Functione1efb: ; e1efb
- call Functione00ed
+ call ret_e00ed
jr nc, .asm_e1f06
ld hl, wJumptableIndex
set 7, [hl]
@@ -251,7 +251,7 @@ Functione1fcc: ; e1fcc
inc [hl]
Functione2000: ; e2000
- call Functione00ed
+ call ret_e00ed
jr nc, .asm_e200b
ld hl, wJumptableIndex
set 7, [hl]
diff --git a/engine/events.asm b/engine/events.asm
index 40e863cdc..d78a0a333 100644
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -491,11 +491,11 @@ endr
bit 3, [hl]
jr z, .nope
- ld hl, ScriptDelay + 2
+ ld hl, wPriorityScriptAddr
ld a, [hli]
ld h, [hl]
ld l, a
- ld a, [ScriptDelay + 1]
+ ld a, [wPriorityScriptBank]
call CallScript
scf
ret
diff --git a/engine/evolution_animation.asm b/engine/evolution_animation.asm
index 53abbfd23..5cf655980 100755
--- a/engine/evolution_animation.asm
+++ b/engine/evolution_animation.asm
@@ -21,7 +21,7 @@ EvolutionAnimation: ; 4e5e1
pop de
pop hl
- ld a, [wd1ed]
+ ld a, [Buffer4]
and a
ret z
@@ -99,7 +99,7 @@ _EvolutionAnimation: ; 4e607
call .ReplaceFrontpic
xor a
- ld [wd1ed], a
+ ld [Buffer4], a
ld a, [Buffer2]
ld [PlayerHPPal], a
@@ -136,7 +136,7 @@ _EvolutionAnimation: ; 4e607
.cancel_evo
ld a, $1
- ld [wd1ed], a
+ ld [Buffer4], a
ld a, [Buffer1]
ld [PlayerHPPal], a
@@ -252,7 +252,7 @@ endr
ret
.pressed_b
- ld a, [wd1e9]
+ ld a, [wForceEvolution]
and a
jr nz, .loop3
scf
@@ -270,7 +270,7 @@ Function4e794: ; 4e794
; 4e7a6
Function4e7a6: ; 4e7a6
- ld a, [wd1ed]
+ ld a, [Buffer4]
and a
ret nz
ld de, SFX_EVOLVED
@@ -286,7 +286,7 @@ Function4e7a6: ; 4e7a6
jr .loop
.done
- ld c, $20
+ ld c, 32
.loop2
call Function4e80c
dec c
@@ -299,7 +299,7 @@ Function4e7a6: ; 4e7a6
Function4e7cf: ; 4e7cf
ld hl, wJumptableIndex
ld a, [hl]
- cp $20
+ cp 32
ret nc
ld d, a
inc [hl]
@@ -317,8 +317,8 @@ Function4e7cf: ; 4e7cf
Function4e7e8: ; 4e7e8
push de
- lb de, $48, $58
- ld a, $13
+ depixel 9, 11
+ ld a, SPRITE_ANIM_INDEX_13
call _InitSpriteAnimStruct
ld hl, $b
add hl, bc
@@ -339,7 +339,7 @@ Function4e7e8: ; 4e7e8
Function4e80c: ; 4e80c
push bc
- callab Function8cf69
+ callab PlaySpriteAnimations
; a = (([hVBlankCounter] + 4) / 2) % NUM_PALETTES
ld a, [hVBlankCounter]
and $e
@@ -369,88 +369,3 @@ endr
EvolutionGFX:
INCBIN "gfx/evo/bubble_large.2bpp"
INCBIN "gfx/evo/bubble.2bpp"
-
-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 Function3200
- 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 Function3200
- call SetPalettes
- ret
-; 4e906
-
-Function4e906: ; 4e906
- ld a, [rSVBK]
- push af
- ld a, $6
- ld [rSVBK], a
- ld hl, w6_d000
- ld bc, w6_d400 - w6_d000
- ld a, " "
- call ByteFill
- hlbgcoord 0, 0
- ld de, w6_d000
- ld b, $0
- ld c, $40
- call Request2bpp
- pop af
- ld [rSVBK], a
- ret
-; 4e929
diff --git a/engine/evolve.asm b/engine/evolve.asm
index 6772db932..2ea3ee0a9 100755
--- a/engine/evolve.asm
+++ b/engine/evolve.asm
@@ -78,7 +78,7 @@ endr
cp EVOLVE_ITEM
jp z, .item
- ld a, [wd1e9]
+ ld a, [wForceEvolution]
and a
jp nz, .dont_evolve_2
@@ -179,7 +179,7 @@ endr
cp b
jp nz, .dont_evolve_3
- ld a, [wd1e9]
+ ld a, [wForceEvolution]
and a
jp z, .dont_evolve_3
ld a, [wLinkMode]
diff --git a/engine/learn.asm b/engine/learn.asm
new file mode 100755
index 000000000..cafbe6f43
--- /dev/null
+++ b/engine/learn.asm
@@ -0,0 +1,257 @@
+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
diff --git a/engine/link.asm b/engine/link.asm
index 8ba1702e9..619cc1375 100755
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -1891,7 +1891,7 @@ Function28b87: ; 28b87
dec a
ld [CurPartyMon], a
ld a, $1
- ld [wd1e9], a
+ ld [wForceEvolution], a
ld a, [wd003]
push af
ld hl, OTPartySpecies
diff --git a/engine/math.asm b/engine/math.asm
new file mode 100755
index 000000000..0cd6b0b47
--- /dev/null
+++ b/engine/math.asm
@@ -0,0 +1,196 @@
+_Multiply:: ; 66de
+
+; hMultiplier is one byte.
+ ld a, 8
+ ld b, a
+
+ xor a
+ ld [hProduct], 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, [hProduct]
+ 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, [hProduct]
+ rla
+ ld [hProduct], 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, .next
+
+ ld [hDividend + 0], a
+
+ ld a, d
+ ld [hDividend + 1], a
+
+ ld a, [hMathBuffer + 4]
+ inc a
+ ld [hMathBuffer + 4], a
+
+ jr .loop
+
+.next
+ 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, .next2
+
+ 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
+
+.next2
+ ld a, e
+ cp 1
+ jr nz, .okay
+ dec b
+
+.okay
+ 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
diff --git a/engine/party_menu.asm b/engine/party_menu.asm
index 06b774064..1c2c70eee 100644
--- a/engine/party_menu.asm
+++ b/engine/party_menu.asm
@@ -670,7 +670,7 @@ InitPartyMenuGFX: ; 503e0
pop bc
dec c
jr nz, .loop
- callab Function8cf69
+ callab PlaySpriteAnimations
ret
; 50405
diff --git a/engine/pokedex.asm b/engine/pokedex.asm
index d150ee471..78fe5fc45 100644
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -323,7 +323,7 @@ Function40217: ; 40217 (10:4217)
call Function4134f
call Function40bb1
ld [wc2d6], a
- callba Function4424d
+ callba DisplayDexEntry
call Function40ba0
call WaitBGMap
ld a, $a7
@@ -378,7 +378,7 @@ Function40292: ; 40292
ld [wPokedexStatus], a
call Function40bb1
ld [wc2d6], a
- callba Function4424d
+ callba DisplayDexEntry
call WaitBGMap
ret
; 402aa
@@ -394,7 +394,7 @@ Function402aa: ; 402aa (10:42aa)
call Function41478
call Function40bb1
ld [wc2d6], a
- callba Function4424d
+ callba DisplayDexEntry
call Function40ba0
call Function4143b
call WaitBGMap
@@ -498,7 +498,7 @@ Function4034f: ; 4034f
Function4038d: ; 4038d
call Function407fd
call Function40bb1
- callba Function4424d
+ callba DisplayDexEntry
call Function40ba0
ret
; 4039d
@@ -621,8 +621,8 @@ Function40443: ; 40443 (10:4443)
ld [wc7d6], a
call Function40fa8
xor a
- ld [wc7db], a
- callba Function44207
+ ld [wDexSearchSlowpokeFrame], a
+ callba DoDexSearchSlowpokeFrame
call WaitBGMap
ld a, $10
call Function41423
@@ -679,7 +679,7 @@ Function404b0: ; 404b0
Function404b7: ; 404b7
call Function41086
- callba Function441cf
+ callba AnimateDexSearchSlowpoke
ld a, [wc7d7]
and a
jr nz, .asm_404dc
@@ -2557,7 +2557,6 @@ Function41a2c: ; 41a2c
ret
; 41a58
-
Function41a58: ; 41a58 (10:5a58)
ld a, [UnownLetter]
push af
@@ -2576,3 +2575,68 @@ Function41a58: ; 41a58 (10:5a58)
pop af
ld [UnownLetter], a
ret
+; 41a7f
+
+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 DisplayDexEntry
+ 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
diff --git a/engine/pokegear.asm b/engine/pokegear.asm
index da6006853..a89e48b5e 100755
--- a/engine/pokegear.asm
+++ b/engine/pokegear.asm
@@ -24,7 +24,7 @@ PokeGear: ; 90b8d (24:4b8d)
bit 7, a
jr nz, .done
call Function90f04
- callba Function8cf69
+ callba PlaySpriteAnimations
call DelayFrame
jr .loop
@@ -1966,7 +1966,7 @@ _FlyMap: ; 91af3
jr nz, .pressedA
call FlyMapScroll
call GetMapCursorCoordinates
- callba Function8cf69
+ callba PlaySpriteAnimations
call DelayFrame
jr .loop
@@ -2901,7 +2901,7 @@ Function92311: ; unreferenced
jr nz, .pressedA
call Function923b8
call GetMapCursorCoordinates
- callba Function8cf69
+ callba PlaySpriteAnimations
call DelayFrame
jr .loop
diff --git a/engine/printer.asm b/engine/printer.asm
index 5330d6b3c..5db2f9ff2 100755
--- a/engine/printer.asm
+++ b/engine/printer.asm
@@ -672,7 +672,7 @@ PrintDexEntry: ; 8442c
call Function84000
ld a, $10
ld [wcbfa], a
- callba Function1dc1b0
+ callba PrintPage1
call ClearTileMap
ld a, $e4
call DmgToCgbBGPals
@@ -694,7 +694,7 @@ PrintDexEntry: ; 8442c
call Function84000
ld a, $3
ld [wcbfa], a
- callba Function1dc213
+ callba PrintPage2
call Function84742
ld a, $4
ld [wcf65], a
diff --git a/engine/scripting.asm b/engine/scripting.asm
index 966a537c7..698508cf4 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -316,11 +316,11 @@ Script_jumptextfaceplayer: ; 96e45
; text_pointer (RawTextPointerLabelParam)
ld a, [ScriptBank]
- ld [wd44e], a
+ ld [wScriptTextBank], a
call GetScriptByte
- ld [wd44f], a
+ ld [wScriptTextAddr], a
call GetScriptByte
- ld [wd450], a
+ ld [wScriptTextAddr + 1], a
ld b, BANK(JumpTextFacePlayerScript)
ld hl, JumpTextFacePlayerScript
jp ScriptJump
@@ -332,11 +332,11 @@ Script_jumptext: ; 96e5f
; text_pointer (RawTextPointerLabelParam)
ld a, [ScriptBank]
- ld [wd44e], a
+ ld [wScriptTextBank], a
call GetScriptByte
- ld [wd44f], a
+ ld [wScriptTextAddr], a
call GetScriptByte
- ld [wd450], a
+ ld [wScriptTextAddr + 1], a
ld b, BANK(JumpTextScript)
ld hl, JumpTextScript
jp ScriptJump
@@ -361,11 +361,11 @@ Script_farjumptext: ; 96e81
; text_pointer (PointerLabelBeforeBank)
call GetScriptByte
- ld [wd44e], a
+ ld [wScriptTextBank], a
call GetScriptByte
- ld [wd44f], a
+ ld [wScriptTextAddr], a
call GetScriptByte
- ld [wd450], a
+ ld [wScriptTextAddr + 1], a
ld b, BANK(JumpTextScript)
ld hl, JumpTextScript
jp ScriptJump
@@ -419,7 +419,7 @@ Script_repeattext: ; 96ebb
ld a, l
cp -1
jr nz, .done
- ld hl, wd44e
+ ld hl, wScriptTextBank
ld a, [hli]
ld b, a
ld a, [hli]
@@ -427,6 +427,7 @@ Script_repeattext: ; 96ebb
ld l, a
call MapTextbox
ret
+
.done
ret
; 96ed9
@@ -1862,11 +1863,11 @@ Script_priorityjump: ; 975aa
; pointer (ScriptPointerLabelParam)
ld a, [ScriptBank]
- ld [wd44e], a
+ ld [wPriorityScriptBank], a
call GetScriptByte
- ld [wd44f], a
+ ld [wPriorityScriptAddr], a
call GetScriptByte
- ld [wd450], a
+ ld [wPriorityScriptAddr + 1], a
ld hl, ScriptFlags
set 3, [hl]
ret
@@ -3217,8 +3218,6 @@ Script_credits: ; 97bf3
; script command 0xa2
callba RedCredits
- ; fallthrough
-
DisplayCredits:
call Script_resetfuncs
ld a, $3
diff --git a/engine/sprites.asm b/engine/sprites.asm
index f12ed1de8..77e3b68b7 100755
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -12,12 +12,12 @@ Function8cf53: ; 8cf53
; 8cf62
Function8cf62: ; 8cf62
- call Function8cf69
+ call PlaySpriteAnimations
call DelayFrame
ret
; 8cf69
-Function8cf69: ; 8cf69
+PlaySpriteAnimations: ; 8cf69
push hl
push de
push bc
@@ -35,7 +35,7 @@ Function8cf69: ; 8cf69
; 8cf7a
Function8cf7a: ; 8cf7a
- ld hl, wc314
+ ld hl, wSpriteAnimationStructs
ld e, 10 ; There are 10 structs here.
.loop
@@ -114,10 +114,10 @@ Function8cfa8: ; 8cfa8 (23:4fa8)
ret
InitSpriteAnimStruct:: ; 8cfd6
-; Find if there's any room in the wc314 array, which is 10x16
+; Find if there's any room in the wSpriteAnimationStructs array, which is 10x16
push de
push af
- ld hl, wc314
+ ld hl, wSpriteAnimationStructs
ld e, 10
.loop
ld a, [hl]
@@ -221,8 +221,8 @@ Function8d036: ; 8d036
Function8d03d: ; 8d03d (23:503d)
-; Clear the index field of every struct in the wc314 array.
- ld hl, wc314
+; Clear the index field of every struct in the wSpriteAnimationStructs array.
+ ld hl, wSpriteAnimationStructs
ld bc, $10
ld e, 10
xor a
@@ -622,7 +622,7 @@ endr
dw .sixteen
dw .seventeen
dw .eighteen
- dw .nineteen
+ dw .nineteen ; finish egg hatching animation
dw .twenty
dw .twentyone
dw .twentytwo ; flying sprite
@@ -761,7 +761,7 @@ endr
ld a, [hl]
add $3
ld [hl], a
- call .asm_8d6de
+ call .ApplyYOffset
ld hl, $7
add hl, bc
ld [hl], a
@@ -779,7 +779,7 @@ endr
inc a
ld [hl], a
ld d, $2
- call .asm_8d6de
+ call .ApplyYOffset
ld hl, $7
add hl, bc
ld [hl], a
@@ -818,13 +818,13 @@ endr
ld a, [hl]
push af
push de
- call .asm_8d6de
+ call .ApplyYOffset
ld hl, $7
add hl, bc
ld [hl], a
pop de
pop af
- call .asm_8d6e2
+ call .ApplyXOffset
ld hl, $6
add hl, bc
ld [hl], a
@@ -856,13 +856,13 @@ endr
ld a, [hl]
push af
push de
- call .asm_8d6de
+ call .ApplyYOffset
ld hl, $7
add hl, bc
ld [hl], a
pop de
pop af
- call .asm_8d6e2
+ call .ApplyXOffset
ld hl, $6
add hl, bc
ld [hl], a
@@ -947,14 +947,14 @@ endr
.asm_8d462
ld a, e
ld d, $20
- call .asm_8d6de
+ call .ApplyYOffset
ld hl, $7
add hl, bc
ld [hl], a
ret
.thirteen: ; 8d46e (23:546e)
- callab Functione00ed
+ callab ret_e00ed
ret
.fifteen: ; 8d475 (23:5475)
@@ -1014,7 +1014,7 @@ endr
jr c, .asm_8d4cd
dec [hl]
ld d, $28
- call .asm_8d6de
+ call .ApplyYOffset
ld hl, $7
add hl, bc
ld [hl], a
@@ -1049,7 +1049,7 @@ endr
ld hl, $c
add hl, bc
ld a, [hl]
- call Function8e72c
+ call ApplyYOffset
ld hl, $7
add hl, bc
ld [hl], a
@@ -1108,33 +1108,36 @@ endr
ret
.nineteen: ; 8d54a (23:554a)
- ld hl, $c
+ ld hl, SpriteAnim1Sprite0c - SpriteAnim1
add hl, bc
ld a, [hl]
cp $80
- jr nc, .asm_8d574
+ jr nc, .finish_nineteen
ld d, a
add $8
ld [hl], a
- ld hl, $b
+ ld hl, SpriteAnim1Sprite0b - SpriteAnim1
add hl, bc
ld a, [hl]
xor $20
ld [hl], a
+
push af
push de
- call .asm_8d6de
- ld hl, $7
+ call .ApplyYOffset
+ ld hl, SpriteAnim1YOffset - SpriteAnim1
add hl, bc
ld [hl], a
+
pop de
pop af
- call .asm_8d6e2
- ld hl, $6
+ call .ApplyXOffset
+ ld hl, SpriteAnim1XOffset - SpriteAnim1
add hl, bc
ld [hl], a
ret
-.asm_8d574
+
+.finish_nineteen
call Function8d036
ret
@@ -1165,13 +1168,13 @@ rept 3
endr
push af
push de
- call .asm_8d6de
+ call .ApplyYOffset
ld hl, $7
add hl, bc
ld [hl], a
pop de
pop af
- call .asm_8d6e2
+ call .ApplyXOffset
ld hl, $6
add hl, bc
ld [hl], a
@@ -1207,7 +1210,7 @@ endr
add hl, bc
ld a, [hl]
inc [hl]
- call .asm_8d6e2
+ call .ApplyXOffset
ld hl, $6
add hl, bc
ld [hl], a
@@ -1230,7 +1233,7 @@ endr
add hl, bc
ld a, [hl]
inc [hl]
- call .asm_8d6e2
+ call .ApplyXOffset
ld hl, $6
add hl, bc
ld [hl], a
@@ -1263,7 +1266,7 @@ endr
add hl, bc
ld a, [hl]
inc [hl]
- call .asm_8d6e2
+ call .ApplyXOffset
ld hl, $6
add hl, bc
ld [hl], a
@@ -1294,7 +1297,7 @@ endr
xor $ff
inc a
ld d, $20
- call .asm_8d6de
+ call .ApplyYOffset
ld hl, $7
add hl, bc
ld [hl], a
@@ -1313,7 +1316,7 @@ endr
xor $ff
inc a
ld d, $20
- call .asm_8d6de
+ call .ApplyYOffset
ld hl, $7
add hl, bc
ld [hl], a
@@ -1332,13 +1335,13 @@ endr
ld a, [hl]
push af
push de
- call .asm_8d6de
+ call .ApplyYOffset
ld hl, $7
add hl, bc
ld [hl], a
pop de
pop af
- call .asm_8d6e2
+ call .ApplyXOffset
ld hl, $6
add hl, bc
ld [hl], a
@@ -1393,12 +1396,12 @@ endr
ret
; 8d6de
-.asm_8d6de: ; 8d6de (23:56de)
- call Function8e72c
+.ApplyYOffset: ; 8d6de (23:56de)
+ call ApplyYOffset
ret
-.asm_8d6e2: ; 8d6e2 (23:56e2)
- call Function8e72a
+.ApplyXOffset: ; 8d6e2 (23:56e2)
+ call ApplyXOffset
ret
; 8d6e6 (23:56e6)
@@ -2839,17 +2842,17 @@ Unknown_8e706: ; Broken 2bpp pointers
dbbw $10, $24, $672a ; 16-tile 2bpp at 24:672a (inside Function926f7)
dbbw $10, $21, $672a ; 16-tile 2bpp at 21:672a (inside Function8671c)
-Function8e72a: ; 8e72a
+ApplyXOffset: ; 8e72a
add $10
-Function8e72c: ; 8e72c
+ApplyYOffset: ; 8e72c
and $3f
cp $20
- jr nc, .asm_8e737
+ jr nc, .xflip
call Function8e741
ld a, h
ret
-.asm_8e737
+.xflip
and $1f
call Function8e741
ld a, h
@@ -2862,7 +2865,7 @@ Function8e741: ; 8e741
ld e, a
ld a, d
ld d, 0
- ld hl, Unknown_8e75d
+ ld hl, .sinewave
rept 2
add hl, de
endr
@@ -2870,54 +2873,54 @@ endr
inc hl
ld d, [hl]
ld hl, 0
-.asm_8e750
+.loop
srl a
- jr nc, .asm_8e755
+ jr nc, .skip_add
add hl, de
-.asm_8e755
+.skip_add
sla e
rl d
and a
- jr nz, .asm_8e750
+ jr nz, .loop
ret
; 8e75d
-Unknown_8e75d: ; 8e75d
+.sinewave: ; 8e75d
sine_wave $100
-Function8e79d: ; 8e79d
+AnimateEndOfExpBar: ; 8e79d
ld a, [hSGB]
- ld de, GFX_8e7f4
+ ld de, EndOfExpBarGFX
and a
- jr z, .asm_8e7a8
- ld de, GFX_8e804
+ jr z, .load
+ ld de, SGBEndOfExpBarGFX
-.asm_8e7a8
- ld hl, VTiles0
- lb bc, BANK(GFX_8e7f4), 1
+.load
+ ld hl, VTiles0 tile $00
+ lb bc, BANK(EndOfExpBarGFX), 1
call Request2bpp
ld c, $8
ld d, $0
-.asm_8e7b5
+.loop
push bc
- call Function8e7c6
+ call .AnimateFrame
call DelayFrame
pop bc
rept 2
inc d
endr
dec c
- jr nz, .asm_8e7b5
+ jr nz, .loop
call ClearSprites
ret
; 8e7c6
-Function8e7c6: ; 8e7c6
+.AnimateFrame: ; 8e7c6
ld hl, Sprites
ld c, $8
-.asm_8e7cb
+.anim_loop
ld a, c
and a
ret z
@@ -2927,32 +2930,35 @@ Function8e7c6: ; 8e7c6
sla a
sla a
push af
+
push de
push hl
- call Function8e72c
+ call ApplyYOffset
pop hl
pop de
- add $68
+ add 13 * 8
ld [hli], a
+
pop af
push de
push hl
- call Function8e72a
+ call ApplyXOffset
pop hl
pop de
- add $54
+ add 10 * 8 + 4
ld [hli], a
+
ld a, $0
ld [hli], a
- ld a, $6
+ ld a, $6 ; OBJ 6
ld [hli], a
- jr .asm_8e7cb
+ jr .anim_loop
; 8e7f4
-GFX_8e7f4: ; 8e7f4
-INCBIN "gfx/unknown/08e7f4.2bpp"
-GFX_8e804: ; 8e804
-INCBIN "gfx/unknown/08e804.2bpp"
+EndOfExpBarGFX: ; 8e7f4
+INCBIN "gfx/battle/expbarend.2bpp"
+SGBEndOfExpBarGFX: ; 8e804
+INCBIN "gfx/battle/expbarend_sgb.2bpp"
ClearSpriteAnims: ; 8e814
push hl
diff --git a/engine/time_capsule/conversion.asm b/engine/time_capsule/conversion.asm
index 10f7ab5f3..50ddc23d7 100755
--- a/engine/time_capsule/conversion.asm
+++ b/engine/time_capsule/conversion.asm
@@ -359,7 +359,7 @@ NewPokedexEntry: ; fb877
call WaitPressAorB_BlinkCursor
ld a, $1
ld [wPokedexStatus], a
- callba Function4424d
+ callba DisplayDexEntry
call WaitPressAorB_BlinkCursor
pop af
ld [wPokedexStatus], a
diff --git a/engine/town_map.asm b/engine/town_map.asm
index c821e793a..e9a3a5001 100755
--- a/engine/town_map.asm
+++ b/engine/town_map.asm
@@ -92,7 +92,7 @@ Function919b0: ; 919b0
jr nz, .pressed_down
.loop2
push de
- callba Function8cf69
+ callba PlaySpriteAnimations
pop de
call DelayFrame
jr .loop
diff --git a/engine/trade/animation.asm b/engine/trade/animation.asm
index 0aaf0cb8b..ec02fc667 100755
--- a/engine/trade/animation.asm
+++ b/engine/trade/animation.asm
@@ -206,7 +206,7 @@ DoTradeAnimation: ; 29082
bit 7, a
jr nz, .finished
call .DoTradeAnimCommand
- callab Function8cf69
+ callab PlaySpriteAnimations
ld hl, wcf65
inc [hl]
call DelayFrame