summaryrefslogtreecommitdiff
path: root/engine
diff options
context:
space:
mode:
Diffstat (limited to 'engine')
-rwxr-xr-xengine/anim_hp_bar.asm430
-rw-r--r--engine/battle_start.asm18
-rwxr-xr-xengine/billspc.asm1449
-rwxr-xr-xengine/breeding/egg.asm395
-rw-r--r--engine/buena_phone_scripts.asm14
-rwxr-xr-xengine/buy_sell_toss.asm238
-rwxr-xr-xengine/card_flip.asm2240
-rwxr-xr-xengine/clock_reset.asm2
-rw-r--r--engine/color.asm352
-rwxr-xr-xengine/compose_mail.asm71
-rw-r--r--engine/credits.asm269
-rwxr-xr-xengine/crystal_intro.asm755
-rwxr-xr-xengine/debug.asm14
-rwxr-xr-xengine/decorations.asm40
-rwxr-xr-xengine/dummy_game.asm12
-rw-r--r--engine/events.asm47
-rw-r--r--engine/events_2.asm4
-rwxr-xr-xengine/events_3.asm2
-rwxr-xr-xengine/evolution_animation.asm191
-rwxr-xr-xengine/evolve.asm6
-rw-r--r--engine/fruit_trees.asm14
-rwxr-xr-xengine/healmachineanim.asm2
-rwxr-xr-xengine/init_gender.asm115
-rwxr-xr-xengine/intro_menu.asm64
-rwxr-xr-xengine/learn.asm257
-rwxr-xr-xengine/link.asm1018
-rwxr-xr-xengine/link_trade.asm363
-rwxr-xr-xengine/mail.asm16
-rwxr-xr-xengine/main_menu.asm1021
-rw-r--r--engine/map_objects.asm336
-rw-r--r--engine/map_setup.asm22
-rwxr-xr-xengine/mart.asm65
-rwxr-xr-xengine/math.asm196
-rwxr-xr-xengine/menu.asm754
-rwxr-xr-xengine/mon_icons.asm450
-rwxr-xr-xengine/mon_menu.asm344
-rw-r--r--engine/more_phone_scripts.asm776
-rw-r--r--engine/movement.asm28
-rwxr-xr-xengine/mysterygift.asm307
-rwxr-xr-xengine/mysterygift2.asm227
-rwxr-xr-xengine/namingscreen.asm62
-rwxr-xr-xengine/npc_movement.asm572
-rwxr-xr-xengine/npctrade.asm30
-rwxr-xr-xengine/options_menu.asm19
-rwxr-xr-xengine/overworld.asm2
-rw-r--r--engine/pack.asm888
-rw-r--r--engine/party_menu.asm61
-rw-r--r--engine/phone.asm8
-rw-r--r--engine/phone_scripts.asm936
-rwxr-xr-xengine/pokecenter_pc.asm32
-rw-r--r--engine/pokedex.asm990
-rwxr-xr-xengine/pokegear.asm310
-rw-r--r--engine/predef.asm8
-rwxr-xr-xengine/printer.asm120
-rw-r--r--engine/radio.asm2
-rwxr-xr-xengine/rtc.asm210
-rw-r--r--engine/save.asm50
-rw-r--r--engine/scripting.asm493
-rwxr-xr-xengine/scrolling_menu.asm543
-rwxr-xr-xengine/search.asm276
-rwxr-xr-xengine/selectmenu.asm26
-rwxr-xr-xengine/slot_machine.asm1815
-rw-r--r--engine/specials.asm64
-rwxr-xr-xengine/sprite_anims.asm897
-rwxr-xr-xengine/sprites.asm3138
-rwxr-xr-xengine/startmenu.asm184
-rwxr-xr-xengine/stats_screen.asm587
-rw-r--r--engine/std_scripts.asm415
-rwxr-xr-xengine/switch_items.asm275
-rwxr-xr-xengine/tile_events.asm110
-rwxr-xr-xengine/time.asm4
-rwxr-xr-xengine/time_capsule/conversion.asm69
-rw-r--r--engine/timeofdaypals.asm52
-rwxr-xr-xengine/timeset.asm212
-rwxr-xr-xengine/tmhm.asm2
-rwxr-xr-xengine/tmhm2.asm592
-rwxr-xr-xengine/town_map.asm8
-rwxr-xr-xengine/trade/animation.asm61
-rwxr-xr-xengine/unown_puzzle.asm878
-rwxr-xr-xengine/unowndex.asm119
-rwxr-xr-xengine/variables.asm56
-rwxr-xr-xengine/warp_connection.asm439
-rwxr-xr-xengine/wildmons.asm126
83 files changed, 16213 insertions, 12452 deletions
diff --git a/engine/anim_hp_bar.asm b/engine/anim_hp_bar.asm
new file mode 100755
index 000000000..3075ef323
--- /dev/null
+++ b/engine/anim_hp_bar.asm
@@ -0,0 +1,430 @@
+_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 6 * 8
+ jr nc, .player
+ and a
+ ret
+
+.player
+ scf
+ ret
+; d670
+
+Functiond670: ; d670
+; Buffer1-2: Max HP
+; Buffer3-4: Old HP
+; Buffer5-6: New HP
+ 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 ComputeHPBarPixels
+ ld a, e
+ ld [wd1f1], a
+
+ ld a, [Buffer5]
+ ld c, a
+ ld a, [Buffer6]
+ ld b, a
+ ld a, [Buffer1]
+ ld e, a
+ ld a, [Buffer2]
+ ld d, a
+ call ComputeHPBarPixels
+ ld a, e
+ ld [wd1f2], a
+
+ push hl
+ ld hl, Buffer3
+ 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, [Buffer3]
+ ld [wd1f5], a
+ ld a, [Buffer5]
+ ld [wd1f6], a
+ ld bc, 1
+ jr .asm_d6d9
+
+.asm_d6c1
+ ld a, [Buffer3]
+ ld [wd1f6], a
+ ld a, [Buffer5]
+ 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, Buffer3
+ 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 [Buffer3], 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 ComputeHPBarPixels
+ 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, [Buffer3]
+ ld c, a
+ ld a, [wd1ed]
+ ld b, a
+ ld a, [Buffer1]
+ ld e, a
+ ld a, [Buffer2]
+ ld d, a
+ call ComputeHPBarPixels
+ 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, .skip
+ ld a, $28
+ add l
+ ld l, a
+ ld a, $0
+ adc h
+ ld h, a
+.skip
+ 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, [Buffer3]
+ 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 6 * 8
+ jr nc, .coppy_buffer
+ and a
+ jr z, .return_zero
+ call AddNTimes
+ ld b, 0
+.loop
+ ld a, l
+ sub 6 * 8
+ 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 6 * 8
+ 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 [Buffer3], a
+ ret
+
+.return_zero
+ xor a
+ ld [Buffer3], a
+ ret
+
+.coppy_buffer
+ ld a, [Buffer1]
+ ld [Buffer3], a
+ ret
+; d88c
diff --git a/engine/battle_start.asm b/engine/battle_start.asm
index 845af9d2a..929ac04c1 100644
--- a/engine/battle_start.asm
+++ b/engine/battle_start.asm
@@ -1,11 +1,11 @@
Predef_StartBattle: ; 8c20f
call Function8c26d
ld a, [rBGP]
- ld [wcfc7], a
+ ld [wBGP], a
ld a, [rOBP0]
- ld [wcfc8], a
+ ld [wOBP0], a
ld a, [rOBP1]
- ld [wcfc9], a
+ ld [wOBP1], a
call DelayFrame
ld hl, hVBlank
ld a, [hl]
@@ -35,7 +35,7 @@ Predef_StartBattle: ; 8c20f
ld [rSVBK], a
ld a, %11111111
- ld [wcfc7], a
+ ld [wBGP], a
call DmgToCgbBGPals
call DelayFrame
xor a
@@ -120,7 +120,7 @@ Function8c2cf: ; 8c2cf
ld a, $6
ld [rSVBK], a
push hl
- ld hl, w6_d000
+ ld hl, wDecompressScratch
ld bc, $28 * $10
.loop
@@ -132,7 +132,7 @@ Function8c2cf: ; 8c2cf
jr nz, .loop
pop hl
- ld de, w6_d000
+ ld de, wDecompressScratch
ld b, BANK(Function8c2cf) ; BANK(@)
ld c, $28
call Request2bpp
@@ -264,8 +264,8 @@ StartTrainerBattle_Flash: ; 8c3ab (23:43ab)
ret
.DoFlashAnimation: ; 8c3b3 (23:43b3)
- ld a, [wd847]
- cp -1
+ ld a, [wTimeOfDayPalset]
+ cp %11111111 ; dark cave
jr z, .done
ld hl, wcf64
ld a, [hl]
@@ -278,7 +278,7 @@ StartTrainerBattle_Flash: ; 8c3ab (23:43ab)
ld a, [hl]
cp %00000001
jr z, .done
- ld [wcfc7], a
+ ld [wBGP], a
call DmgToCgbBGPals
and a
ret
diff --git a/engine/billspc.asm b/engine/billspc.asm
index a4dd02876..14f0509b2 100755
--- a/engine/billspc.asm
+++ b/engine/billspc.asm
@@ -13,19 +13,19 @@ _DepositPKMN: ; e2391 (38:6391)
ld [hInMenu], a
xor a
ld [hMapAnims], a
- call Functione2963
+ call BillsPC_InitRAM
xor a
- ld [wcb2e], a
+ ld [wBillsPC_LoadedBox], a
call DelayFrame
-.asm_e23b4
+.loop
call JoyTextDelay
ld a, [wJumptableIndex]
bit 7, a
- jr nz, .asm_e23c6
- call Functione23d5
+ jr nz, .done
+ call .RunJumptable
call DelayFrame
- jr .asm_e23b4
-.asm_e23c6
+ jr .loop
+.done
call ClearSprites
pop af
ld [hInMenu], a
@@ -35,106 +35,108 @@ _DepositPKMN: ; e2391 (38:6391)
ld [Options], a
ret
-Functione23d5: ; e23d5 (38:63d5)
+.RunJumptable: ; e23d5 (38:63d5)
ld a, [wJumptableIndex]
- ld hl, Jumptable_e23df
- call Functione33df
+ ld hl, .Jumptable
+ call BillsPC_Jumptable
jp [hl]
-Jumptable_e23df: ; e23df (38:63df)
- dw Functione23e9
- dw Functione241a
- dw Functione245d
- dw Functione247d
- dw Functione2992
+.Jumptable: ; e23df (38:63df)
+ jumptable_start
+ jumptable .Init
+ jumptable .HandleJoypad
+ jumptable .WhatsUp
+ jumptable .Submenu
+ jumptable BillsPC_EndJumptableLoop
-Functione23e9: ; e23e9 (38:63e9)
+.Init: ; e23e9 (38:63e9)
xor a
ld [hBGMapMode], a
call ClearSprites
- call Functione2d30
- call Functione2a8e
+ call CopyBoxmonSpecies
+ call BillsPC_BoxName
ld de, PCString_ChooseaPKMN
- call Functione2a6e
+ call BillsPC_PlaceString
ld a, $5
- ld [wcb2d], a
- call Functione2c2c
+ ld [wBillsPC_NumMonsOnScreen], a
+ call BillsPC_RefreshTextboxes
call PCMonInfo
ld a, $ff
ld [CurPartySpecies], a
- ld a, $17
- call Functione33d0
+ ld a, SCGB_17
+ call BillsPC_ApplyPalettes
call WaitBGMap
- call Functione2e01
- call Functione298d
+ call BillsPC_UpdateSelectionCursor
+ call BillsPC_IncrementJumptableIndex
ret
-Functione241a: ; e241a (38:641a)
+.HandleJoypad: ; e241a (38:641a)
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
and B_BUTTON
- jr nz, .asm_e2457
+ jr nz, .b_button
ld a, [hl]
and A_BUTTON
- jr nz, .asm_e2443
- call Functione29b5
+ jr nz, .a_button
+ call Withdraw_UpDown
and a
ret z
- call Functione2e01
+ call BillsPC_UpdateSelectionCursor
xor a
ld [hBGMapMode], a
- call Functione2c2c
+ call BillsPC_RefreshTextboxes
call PCMonInfo
ld a, $1
ld [hBGMapMode], a
call DelayFrame
call DelayFrame
ret
-.asm_e2443
- call Functione2def
+
+.a_button
+ call BillsPC_GetSelectedPokemonSpecies
and a
ret z
- cp $ff
- jr z, .asm_e2457
+ cp -1
+ jr z, .b_button
ld a, $2
ld [wJumptableIndex], a
ret
; e2452 (38:6452)
-.asm_e2452
+.go_back
ld hl, wJumptableIndex
dec [hl]
ret
-.asm_e2457
+.b_button
ld a, $4
ld [wJumptableIndex], a
ret
-Functione245d: ; e245d (38:645d)
+.WhatsUp: ; e245d (38:645d)
xor a
ld [hBGMapMode], a
call ClearSprites
- call Functione2def
+ call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, $17
- call Functione33d0
+ ld a, SCGB_17
+ call BillsPC_ApplyPalettes
ld de, PCString_WhatsUp
- call Functione2a6e
+ call BillsPC_PlaceString
ld a, $1
- ld [MenuSelection2], a
- call Functione298d
+ ld [wMenuCursorY], a
+ call BillsPC_IncrementJumptableIndex
ret
-Functione247d: ; e247d (38:647d)
+.Submenu: ; e247d (38:647d)
ld hl, BillsPCDepositMenuDataHeader
call CopyMenuDataHeader
- ld a, [MenuSelection2]
- call Function1d4b
- call InterpretMenu2
+ ld a, [wMenuCursorY]
+ call StoreTo_wMenuCursorBuffer
+ call VerticalMenu
jp c, BillsPCDepositFuncCancel
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
and $3
ld e, a
@@ -149,76 +151,79 @@ endr
jp [hl]
BillsPCDepositJumptable: ; e24a1 (38:64a1)
- dw BillsPCDepositFuncDeposit ; Deposit Pokemon
- dw BillsPCDepositFuncStats ; Pokemon Stats
- dw BillsPCDepositFuncRelease ; Release Pokemon
- dw BillsPCDepositFuncCancel ; Cancel
+ jumptable_start
+ jumptable BillsPCDepositFuncDeposit ; Deposit Pokemon
+ jumptable BillsPCDepositFuncStats ; Pokemon Stats
+ jumptable BillsPCDepositFuncRelease ; Release Pokemon
+ jumptable BillsPCDepositFuncCancel ; Cancel
BillsPCDepositFuncDeposit: ; e24a9 (38:64a9)
- call Functione2f18
+ call BillsPC_CheckMail_PreventBlackout
jp c, BillsPCDepositFuncCancel
- call Functione307c
- jr c, .no_overflow_31
+ call DepositPokemon
+ jr c, .box_full
ld a, $0
ld [wJumptableIndex], a
xor a
- ld [wcb2b], a
- ld [wcb2a], a
+ ld [wBillsPC_CursorPosition], a
+ ld [wBillsPC_ScrollPosition], a
ret
-.no_overflow_31
+
+.box_full
ld de, PCString_WhatsUp
- call Functione2a6e
+ call BillsPC_PlaceString
ret
BillsPCDepositFuncStats: ; e24c8 (38:64c8)
call LoadStandardMenuDataHeader
- call Functione2f7e
+ call BillsPC_StatsScreen
call ExitMenu
call PCMonInfo
- call Functione2def
+ call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, $17
- call Functione33d0
+ ld a, SCGB_17
+ call BillsPC_ApplyPalettes
ret
BillsPCDepositFuncRelease: ; e24e0 (38:64e0)
- call Functione2f18
+ call BillsPC_CheckMail_PreventBlackout
jr c, BillsPCDepositFuncCancel
- call Functione2f5f
+ call BillsPC_IsMonAnEgg
jr c, BillsPCDepositFuncCancel
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
push af
ld de, PCString_ReleasePKMN
- call Functione2a6e
+ call BillsPC_PlaceString
call LoadStandardMenuDataHeader
lb bc, 14, 11
call PlaceYesNoBox
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call ExitMenu
and a
- jr nz, .asm_e252c
- ld a, [wcb2b]
- ld hl, wcb2a
+ jr nz, .failed_release
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
ld [CurPartyMon], a
xor a
ld [wPokemonWithdrawDepositParameter], a
- callba Functione039
- call Functione3180
+ callba RemoveMonFromPartyOrBox
+ call ReleasePKMN_ByePKMN
ld a, $0
ld [wJumptableIndex], a
xor a
- ld [wcb2b], a
- ld [wcb2a], a
+ ld [wBillsPC_CursorPosition], a
+ ld [wBillsPC_ScrollPosition], a
pop af
ret
-.asm_e252c
+
+.failed_release
ld de, PCString_WhatsUp
- call Functione2a6e
+ call BillsPC_PlaceString
pop af
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
ret
BillsPCDepositFuncCancel: ; e2537 (38:6537)
@@ -231,11 +236,11 @@ BillsPCDepositMenuDataHeader: ; 0xe253d (38:653d)
db $40 ; flags
db 04, 09 ; start coords
db 13, 19 ; end coords
- dw BillsPCDepositMenuData
+ dw .MenuData2
db 1 ; default option
; 0xe2545
-BillsPCDepositMenuData: ; 0xe2545 (38:6545)
+.MenuData2: ; 0xe2545 (38:6545)
db $80 ; flags
db 4 ; items
db "DEPOSIT@"
@@ -244,18 +249,19 @@ BillsPCDepositMenuData: ; 0xe2545 (38:6545)
db "CANCEL@"
; 0xe2564 (38:6564)
-Functione2564: ; e2564
+BillsPC_ClearThreeBoxes: ; e2564
+; unreferenced
hlcoord 0, 0
- ld b, $4
- ld c, $8
+ ld b, 4
+ ld c, 8
call ClearBox
hlcoord 0, 4
- ld b, $a
- ld c, $9
+ ld b, 10
+ ld c, 9
call ClearBox
hlcoord 0, 14
- ld b, $2
- ld c, $8
+ ld b, 2
+ ld c, 8
call ClearBox
ret
; e2583
@@ -275,19 +281,19 @@ _WithdrawPKMN: ; e2583 (38:6583)
ld [hInMenu], a
xor a
ld [hMapAnims], a
- call Functione2963
- ld a, $f
- ld [wcb2e], a
+ call BillsPC_InitRAM
+ ld a, NUM_BOXES + 1
+ ld [wBillsPC_LoadedBox], a
call DelayFrame
-.asm_e25a7
+.loop
call JoyTextDelay
ld a, [wJumptableIndex]
bit 7, a
- jr nz, .no_overflow_49
- call Functione25c8
+ jr nz, .done
+ call .RunJumptable
call DelayFrame
- jr .asm_e25a7
-.no_overflow_49
+ jr .loop
+.done
call ClearSprites
pop af
ld [hInMenu], a
@@ -297,109 +303,109 @@ _WithdrawPKMN: ; e2583 (38:6583)
ld [Options], a
ret
-Functione25c8: ; e25c8 (38:65c8)
+.RunJumptable: ; e25c8 (38:65c8)
ld a, [wJumptableIndex]
- ld hl, .jumptable
- call Functione33df
+ ld hl, .Jumptable
+ call BillsPC_Jumptable
jp [hl]
-.jumptable: ; e25d2 (38:65d2)
- dw Functione25dc
- dw Functione2612
- dw Functione2655
- dw BillsPC_Withdraw
- dw Functione2992
+.Jumptable: ; e25d2 (38:65d2)
+ jumptable_start
+ jumptable .Init
+ jumptable .Joypad
+ jumptable .PrepSubmenu
+ jumptable BillsPC_Withdraw
+ jumptable BillsPC_EndJumptableLoop
-Functione25dc: ; e25dc (38:65dc)
- ld a, $f
- ld [wcb2e], a
+.Init: ; e25dc (38:65dc)
+ ld a, NUM_BOXES + 1
+ ld [wBillsPC_LoadedBox], a
xor a
ld [hBGMapMode], a
call ClearSprites
- call Functione2d30
- call Functione2a8e
+ call CopyBoxmonSpecies
+ call BillsPC_BoxName
ld de, PCString_ChooseaPKMN
- call Functione2a6e
+ call BillsPC_PlaceString
ld a, $5
- ld [wcb2d], a
- call Functione2c2c
+ ld [wBillsPC_NumMonsOnScreen], a
+ call BillsPC_RefreshTextboxes
call PCMonInfo
ld a, $ff
ld [CurPartySpecies], a
- ld a, $17
- call Functione33d0
+ ld a, SCGB_17
+ call BillsPC_ApplyPalettes
call WaitBGMap
- call Functione2e01
- call Functione298d
+ call BillsPC_UpdateSelectionCursor
+ call BillsPC_IncrementJumptableIndex
ret
-Functione2612: ; e2612 (38:6612)
+.Joypad: ; e2612 (38:6612)
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
and B_BUTTON
- jr nz, .asm_e264f
+ jr nz, .b_button
ld a, [hl]
and A_BUTTON
- jr nz, .asm_e263b
- call Functione29b5
+ jr nz, .a_button
+ call Withdraw_UpDown
and a
ret z
- call Functione2e01
+ call BillsPC_UpdateSelectionCursor
xor a
ld [hBGMapMode], a
- call Functione2c2c
+ call BillsPC_RefreshTextboxes
call PCMonInfo
ld a, $1
ld [hBGMapMode], a
call DelayFrame
call DelayFrame
ret
-.asm_e263b
- call Functione2def
+.a_button
+ call BillsPC_GetSelectedPokemonSpecies
and a
ret z
- cp $ff
- jr z, .asm_e264f
+ cp -1
+ jr z, .b_button
ld a, $2
ld [wJumptableIndex], a
- ret
-; e264a (38:664a)
+ ret ; e264a (38:664a)
-.asm_e264a
+.unused
ld hl, wJumptableIndex
dec [hl]
ret
-.asm_e264f
+.b_button
ld a, $4
ld [wJumptableIndex], a
ret
; e2655
-Functione2655: ; e2655 (38:6655)
+.PrepSubmenu: ; e2655 (38:6655)
xor a
ld [hBGMapMode], a
call ClearSprites
- call Functione2def
+ call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, $17
- call Functione33d0
+ ld a, SCGB_17
+ call BillsPC_ApplyPalettes
ld de, PCString_WhatsUp
- call Functione2a6e
+ call BillsPC_PlaceString
ld a, $1
- ld [MenuSelection2], a
- call Functione298d
+ ld [wMenuCursorY], a
+ call BillsPC_IncrementJumptableIndex
ret
BillsPC_Withdraw: ; e2675 (38:6675)
ld hl, .MenuDataHeader
call CopyMenuDataHeader
- ld a, [MenuSelection2]
- call Function1d4b
- call InterpretMenu2
+ ld a, [wMenuCursorY]
+ call StoreTo_wMenuCursorBuffer
+ call VerticalMenu
jp c, .cancel
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
and 3
ld e, a
@@ -421,67 +427,67 @@ endr
.withdraw: ; e26a1 (38:66a1)
- call Functione2f18
+ call BillsPC_CheckMail_PreventBlackout
jp c, .cancel
call TryWithdrawPokemon
jr c, .FailedWithdraw
ld a, $0
ld [wJumptableIndex], a
xor a
- ld [wcb2b], a
- ld [wcb2a], a
+ ld [wBillsPC_CursorPosition], a
+ ld [wBillsPC_ScrollPosition], a
ret
.FailedWithdraw
ld de, PCString_WhatsUp
- call Functione2a6e
+ call BillsPC_PlaceString
ret
.stats: ; e26c0 (38:66c0)
call LoadStandardMenuDataHeader
- call Functione2f7e
+ call BillsPC_StatsScreen
call ExitMenu
call PCMonInfo
- call Functione2def
+ call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, $17
- call Functione33d0
+ ld a, SCGB_17
+ call BillsPC_ApplyPalettes
ret
.release: ; e26d8 (38:66d8)
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
push af
- call Functione2f5f
+ call BillsPC_IsMonAnEgg
jr c, .FailedRelease
ld de, PCString_ReleasePKMN
- call Functione2a6e
+ call BillsPC_PlaceString
call LoadStandardMenuDataHeader
lb bc, 14, 11
call PlaceYesNoBox
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call ExitMenu
and a
jr nz, .FailedRelease
- ld a, [wcb2b]
- ld hl, wcb2a
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
ld [CurPartyMon], a
ld a, PC_DEPOSIT
ld [wPokemonWithdrawDepositParameter], a
- callba Functione039
- call Functione3180
+ callba RemoveMonFromPartyOrBox
+ call ReleasePKMN_ByePKMN
ld a, $0
ld [wJumptableIndex], a
xor a
- ld [wcb2b], a
- ld [wcb2a], a
+ ld [wBillsPC_CursorPosition], a
+ ld [wBillsPC_ScrollPosition], a
pop af
ret
.FailedRelease
ld de, PCString_WhatsUp
- call Functione2a6e
+ call BillsPC_PlaceString
pop af
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
ret
.cancel: ; e272b (38:672b)
@@ -522,18 +528,18 @@ _MovePKMNWithoutMail: ; e2759
ld [hInMenu], a
xor a
ld [hMapAnims], a
- call Functione2963
+ call BillsPC_InitRAM
ld a, [wCurBox]
and $f
inc a
- ld [wcb2e], a
+ ld [wBillsPC_LoadedBox], a
call DelayFrame
.asm_e2781
call JoyTextDelay
ld a, [wJumptableIndex]
bit 7, a
jr nz, .asm_e2793
- call Functione27a2
+ call .RunJumptable
call DelayFrame
jr .asm_e2781
@@ -548,61 +554,62 @@ _MovePKMNWithoutMail: ; e2759
ret
; e27a2
-Functione27a2: ; e27a2
+.RunJumptable: ; e27a2
ld a, [wJumptableIndex]
- ld hl, Jumptable_e27ac
- call Functione33df
+ ld hl, .Jumptable
+ call BillsPC_Jumptable
jp [hl]
; e27ac
-Jumptable_e27ac: ; e27ac
- dw Functione27ba
- dw Functione27eb
- dw Functione283d
- dw Functione285d
- dw Functione28df
- dw Functione2903
- dw Functione2992
+.Jumptable: ; e27ac
+ jumptable_start
+ jumptable .Init
+ jumptable .Joypad
+ jumptable .PrepSubmenu
+ jumptable .MoveMonWOMailSubmenu
+ jumptable .PrepInsertCursor
+ jumptable .Joypad2
+ jumptable BillsPC_EndJumptableLoop
; e27ba
-Functione27ba: ; e27ba
+.Init: ; e27ba
xor a
ld [hBGMapMode], a
call ClearSprites
- call Functione2d30
+ call CopyBoxmonSpecies
ld de, PCString_ChooseaPKMN
- call Functione2a6e
- ld a, $5
- ld [wcb2d], a
- call Functione2c2c
- call Functione2a80
+ call BillsPC_PlaceString
+ ld a, 5
+ ld [wBillsPC_NumMonsOnScreen], a
+ call BillsPC_RefreshTextboxes
+ call BillsPC_MoveMonWOMail_BoxNameAndArrows
call PCMonInfo
ld a, $ff
ld [CurPartySpecies], a
- ld a, $17
- call Functione33d0
+ ld a, SCGB_17
+ call BillsPC_ApplyPalettes
call WaitBGMap
- call Functione2e01
- call Functione298d
+ call BillsPC_UpdateSelectionCursor
+ call BillsPC_IncrementJumptableIndex
ret
; e27eb
-Functione27eb: ; e27eb
+.Joypad: ; e27eb
ld hl, hJoyPressed
ld a, [hl]
and B_BUTTON
- jr nz, .asm_e2837
+ jr nz, .b_button
ld a, [hl]
and A_BUTTON
- jr nz, .asm_e2823
- call Functione29d0
- jr c, .asm_e2816
+ jr nz, .a_button
+ call MovePkmnWithoutMail_DPad
+ jr c, .d_pad
and a
ret z
- call Functione2e01
+ call BillsPC_UpdateSelectionCursor
xor a
ld [hBGMapMode], a
- call Functione2c2c
+ call BillsPC_RefreshTextboxes
call PCMonInfo
ld a, $1
ld [hBGMapMode], a
@@ -610,63 +617,64 @@ Functione27eb: ; e27eb
call DelayFrame
ret
-.asm_e2816
+.d_pad
xor a
- ld [wcb2b], a
- ld [wcb2a], a
+ ld [wBillsPC_CursorPosition], a
+ ld [wBillsPC_ScrollPosition], a
ld a, $0
ld [wJumptableIndex], a
ret
-.asm_e2823
- call Functione2def
+.a_button
+ call BillsPC_GetSelectedPokemonSpecies
and a
ret z
- cp $ff
- jr z, .asm_e2837
+ cp -1
+ jr z, .b_button
ld a, $2
ld [wJumptableIndex], a
ret
+.unused
ld hl, wJumptableIndex
dec [hl]
ret
-.asm_e2837
+.b_button
ld a, $6
ld [wJumptableIndex], a
ret
; e283d
-Functione283d: ; e283d
+.PrepSubmenu: ; e283d
xor a
ld [hBGMapMode], a
call ClearSprites
- call Functione2def
+ call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, $17
- call Functione33d0
+ ld a, SCGB_17
+ call BillsPC_ApplyPalettes
ld de, PCString_WhatsUp
- call Functione2a6e
+ call BillsPC_PlaceString
ld a, $1
- ld [MenuSelection2], a
- call Functione298d
+ ld [wMenuCursorY], a
+ call BillsPC_IncrementJumptableIndex
ret
; e285d
-Functione285d: ; e285d
- ld hl, MenuDataHeader_0xe28c3
+.MoveMonWOMailSubmenu: ; e285d
+ ld hl, .MenuDataHeader
call CopyMenuDataHeader
- ld a, [MenuSelection2]
- call Function1d4b
- call InterpretMenu2
- jp c, Functione28bd
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
+ call StoreTo_wMenuCursorBuffer
+ call VerticalMenu
+ jp c, .Cancel
+ ld a, [wMenuCursorY]
dec a
and 3
ld e, a
ld d, 0
- ld hl, Jumptable_e2881
+ ld hl, .Jumptable2
rept 2
add hl, de
endr
@@ -676,53 +684,53 @@ endr
jp [hl]
; e2881
-Jumptable_e2881: ; e2881
- dw Functione2887
- dw Functione28a5
- dw Functione28bd
+.Jumptable2: ; e2881
+ dw .Move
+ dw .Stats
+ dw .Cancel
; e2887
-Functione2887: ; e2887
- call Functione2f18
- jp c, Functione28bd
- ld a, [wcb2a]
- ld [wcb2f], a
- ld a, [wcb2b]
- ld [wcb30], a
- ld a, [wcb2e]
- ld [wcb31], a
+.Move: ; e2887
+ call BillsPC_CheckMail_PreventBlackout
+ jp c, .Cancel
+ ld a, [wBillsPC_ScrollPosition]
+ ld [wBillsPC_BackupScrollPosition], a
+ ld a, [wBillsPC_CursorPosition]
+ ld [wBillsPC_BackupCursorPosition], a
+ ld a, [wBillsPC_LoadedBox]
+ ld [wBillsPC_BackupLoadedBox], a
ld a, $4
ld [wJumptableIndex], a
ret
; e28a5
-Functione28a5: ; e28a5
+.Stats: ; e28a5
call LoadStandardMenuDataHeader
- call Functione2f7e
+ call BillsPC_StatsScreen
call ExitMenu
call PCMonInfo
- call Functione2def
+ call BillsPC_GetSelectedPokemonSpecies
ld [CurPartySpecies], a
- ld a, $17
- call Functione33d0
+ ld a, SCGB_17
+ call BillsPC_ApplyPalettes
ret
; e28bd
-Functione28bd: ; e28bd
+.Cancel: ; e28bd
ld a, $0
ld [wJumptableIndex], a
ret
; e28c3
-MenuDataHeader_0xe28c3: ; 0xe28c3
+.MenuDataHeader: ; 0xe28c3
db $40 ; flags
db 04, 09 ; start coords
db 13, 19 ; end coords
- dw MenuData2_0xe28cb
+ dw .MenuData2
db 1 ; default option
; 0xe28cb
-MenuData2_0xe28cb: ; 0xe28cb
+.MenuData2: ; 0xe28cb
db $80 ; flags
db 3 ; items
db "MOVE@"
@@ -730,84 +738,84 @@ MenuData2_0xe28cb: ; 0xe28cb
db "CANCEL@"
; 0xe28df
-Functione28df: ; e28df
+.PrepInsertCursor: ; e28df
xor a
ld [hBGMapMode], a
- call Functione2d30
+ call CopyBoxmonSpecies
ld de, PCString_MoveToWhere
- call Functione2a6e
+ call BillsPC_PlaceString
ld a, $5
- ld [wcb2d], a
- call Functione2c2c
- call Functione2a80
+ ld [wBillsPC_NumMonsOnScreen], a
+ call BillsPC_RefreshTextboxes
+ call BillsPC_MoveMonWOMail_BoxNameAndArrows
call ClearSprites
- call Functione2e8c
+ call BillsPC_UpdateInsertCursor
call WaitBGMap
- call Functione298d
+ call BillsPC_IncrementJumptableIndex
ret
; e2903
-Functione2903: ; e2903
+.Joypad2: ; e2903
ld hl, hJoyPressed
ld a, [hl]
and B_BUTTON
- jr nz, .asm_e294b
+ jr nz, .b_button_2
ld a, [hl]
and A_BUTTON
- jr nz, .asm_e2938
- call Functione29f4
- jr c, .asm_e292b
+ jr nz, .a_button_2
+ call MovePkmnWithoutMail_DPad_2
+ jr c, .dpad_2
and a
ret z
- call Functione2e8c
+ call BillsPC_UpdateInsertCursor
xor a
ld [hBGMapMode], a
- call Functione2c2c
+ call BillsPC_RefreshTextboxes
ld a, $1
ld [hBGMapMode], a
call DelayFrame
call DelayFrame
ret
-.asm_e292b
+.dpad_2
xor a
- ld [wcb2b], a
- ld [wcb2a], a
+ ld [wBillsPC_CursorPosition], a
+ ld [wBillsPC_ScrollPosition], a
ld a, $4
ld [wJumptableIndex], a
ret
-.asm_e2938
- call Functione2ee5
- jr c, .asm_e2946
- call Functione31e7
+.a_button_2
+ call BillsPC_CheckSpaceInDestination
+ jr c, .no_space
+ call MovePKMNWitoutMail_InsertMon
ld a, $0
ld [wJumptableIndex], a
ret
-.asm_e2946
+.no_space
ld hl, wJumptableIndex
dec [hl]
ret
-.asm_e294b
- ld a, [wcb2f]
- ld [wcb2a], a
- ld a, [wcb30]
- ld [wcb2b], a
- ld a, [wcb31]
- ld [wcb2e], a
+.b_button_2
+ ld a, [wBillsPC_BackupScrollPosition]
+ ld [wBillsPC_ScrollPosition], a
+ ld a, [wBillsPC_BackupCursorPosition]
+ ld [wBillsPC_CursorPosition], a
+ ld a, [wBillsPC_BackupLoadedBox]
+ ld [wBillsPC_LoadedBox], a
ld a, $0
ld [wJumptableIndex], a
ret
; e2963
-Functione2963: ; e2963 (38:6963)
+BillsPC_InitRAM: ; e2963 (38:6963)
call ClearBGPalettes
call ClearSprites
call ClearTileMap
- call Functione33e8
- ld hl, OverworldMap
+ call BillsPC_InitGFX
+ ld hl, wBillsPCPokemonList
ld bc, $338
xor a
call ByteFill
@@ -816,185 +824,185 @@ Functione2963: ; e2963 (38:6963)
ld [wcf64], a
ld [wcf65], a
ld [wcf66], a
- ld [wcb2b], a
- ld [wcb2a], a
+ ld [wBillsPC_CursorPosition], a
+ ld [wBillsPC_ScrollPosition], a
ret
-Functione298d: ; e298d (38:698d)
+BillsPC_IncrementJumptableIndex: ; e298d (38:698d)
ld hl, wJumptableIndex
inc [hl]
ret
-Functione2992: ; e2992 (38:6992)
+BillsPC_EndJumptableLoop: ; e2992 (38:6992)
ld hl, wJumptableIndex
set 7, [hl]
ret
-Functione2998: ; e2998 (38:6998)
- ld a, [wcb2d]
+_StatsScreenDPad: ; e2998 (38:6998)
+ ld a, [wBillsPC_NumMonsOnScreen]
ld d, a
- ld a, [wcb2c]
+ ld a, [wBillsPC_NumMonsInBox]
and a
- jr z, .asm_e29b2
+ jr z, .empty
dec a
cp $1
- jr z, .asm_e29b2
+ jr z, .empty
ld e, a
ld a, [hl]
and D_UP
- jr nz, Functione2a18
+ jr nz, BillsPC_PressUp
ld a, [hl]
and D_DOWN
- jr nz, Functione2a2c
-.asm_e29b2
- jp Functione2a65
+ jr nz, BillsPC_PressDown
+.empty
+ jp BillsPC_JoypadDidNothing
-Functione29b5: ; e29b5 (38:69b5)
+Withdraw_UpDown: ; e29b5 (38:69b5)
ld hl, hJoyLast
- ld a, [wcb2d]
+ ld a, [wBillsPC_NumMonsOnScreen]
ld d, a
- ld a, [wcb2c]
+ ld a, [wBillsPC_NumMonsInBox]
ld e, a
and a
- jr z, .asm_e29cd
+ jr z, .empty
ld a, [hl]
and D_UP
- jr nz, Functione2a18
+ jr nz, BillsPC_PressUp
ld a, [hl]
and D_DOWN
- jr nz, Functione2a2c
-.asm_e29cd
- jp Functione2a65
+ jr nz, BillsPC_PressDown
+.empty
+ jp BillsPC_JoypadDidNothing
; e29d0 (38:69d0)
-Functione29d0: ; e29d0
+MovePkmnWithoutMail_DPad: ; e29d0
ld hl, hJoyLast
- ld a, [wcb2d]
+ ld a, [wBillsPC_NumMonsOnScreen]
ld d, a
- ld a, [wcb2c]
+ ld a, [wBillsPC_NumMonsInBox]
ld e, a
and a
- jr z, .asm_e29e8
+ jr z, .check_left_right
ld a, [hl]
and D_UP
- jr nz, Functione2a18
+ jr nz, BillsPC_PressUp
ld a, [hl]
and D_DOWN
- jr nz, Functione2a2c
+ jr nz, BillsPC_PressDown
-.asm_e29e8
+.check_left_right
ld a, [hl]
and D_LEFT
- jr nz, Functione2a48
+ jr nz, BillsPC_PressLeft
ld a, [hl]
and D_RIGHT
- jr nz, Functione2a56
- jr Functione2a65
+ jr nz, BillsPC_PressRight
+ jr BillsPC_JoypadDidNothing
-Functione29f4: ; e29f4
+MovePkmnWithoutMail_DPad_2: ; e29f4
ld hl, hJoyLast
- ld a, [wcb2d]
+ ld a, [wBillsPC_NumMonsOnScreen]
ld d, a
- ld a, [wcb2c]
+ ld a, [wBillsPC_NumMonsInBox]
ld e, a
and a
- jr z, .asm_e2a0c
+ jr z, .check_left_right
ld a, [hl]
and D_UP
- jr nz, Functione2a18
+ jr nz, BillsPC_PressUp
ld a, [hl]
and D_DOWN
- jr nz, Functione2a2c
+ jr nz, BillsPC_PressDown
-.asm_e2a0c
+.check_left_right
ld a, [hl]
and D_LEFT
- jr nz, Functione2a48
+ jr nz, BillsPC_PressLeft
ld a, [hl]
and D_RIGHT
- jr nz, Functione2a56
- jr Functione2a65
+ jr nz, BillsPC_PressRight
+ jr BillsPC_JoypadDidNothing
-Functione2a18: ; e2a18 (38:6a18)
- ld hl, wcb2b
+BillsPC_PressUp: ; e2a18 (38:6a18)
+ ld hl, wBillsPC_CursorPosition
ld a, [hl]
and a
- jr z, .asm_e2a22
+ jr z, .top
dec [hl]
- jr Functione2a68
+ jr BillsPC_UpDownDidSomething
-.asm_e2a22
- ld hl, wcb2a
+.top
+ ld hl, wBillsPC_ScrollPosition
ld a, [hl]
and a
- jr z, Functione2a65
+ jr z, BillsPC_JoypadDidNothing
dec [hl]
- jr Functione2a68
+ jr BillsPC_UpDownDidSomething
-Functione2a2c: ; e2a2c (38:6a2c)
- ld a, [wcb2b]
- ld hl, wcb2a
+BillsPC_PressDown: ; e2a2c (38:6a2c)
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
inc a
cp e
- jr nc, Functione2a65
+ jr nc, BillsPC_JoypadDidNothing
- ld hl, wcb2b
+ ld hl, wBillsPC_CursorPosition
ld a, [hl]
inc a
cp d
- jr nc, .asm_e2a42
+ jr nc, .not_bottom
inc [hl]
- jr Functione2a68
+ jr BillsPC_UpDownDidSomething
-.asm_e2a42
- ld hl, wcb2a
+.not_bottom
+ ld hl, wBillsPC_ScrollPosition
inc [hl]
- jr Functione2a68
+ jr BillsPC_UpDownDidSomething
; e2a48 (38:6a48)
-Functione2a48: ; e2a48
- ld hl, wcb2e
+BillsPC_PressLeft: ; e2a48
+ ld hl, wBillsPC_LoadedBox
ld a, [hl]
and a
- jr z, .asm_e2a52
+ jr z, .wrap_around
dec [hl]
- jr Functione2a6c
+ jr BillsPC_LeftRightDidSomething
-.asm_e2a52
- ld [hl], $e
- jr Functione2a6c
+.wrap_around
+ ld [hl], NUM_BOXES
+ jr BillsPC_LeftRightDidSomething
-Functione2a56: ; e2a56
- ld hl, wcb2e
+BillsPC_PressRight: ; e2a56
+ ld hl, wBillsPC_LoadedBox
ld a, [hl]
- cp $e
- jr z, .asm_e2a61
+ cp NUM_BOXES
+ jr z, .wrap_around
inc [hl]
- jr Functione2a6c
+ jr BillsPC_LeftRightDidSomething
-.asm_e2a61
- ld [hl], $0
- jr Functione2a6c
+.wrap_around
+ ld [hl], 0
+ jr BillsPC_LeftRightDidSomething
-Functione2a65: ; e2a65 (38:6a65)
+BillsPC_JoypadDidNothing: ; e2a65 (38:6a65)
xor a
and a
ret
-Functione2a68: ; e2a68 (38:6a68)
- ld a, $1
+BillsPC_UpDownDidSomething: ; e2a68 (38:6a68)
+ ld a, TRUE
and a
ret
; e2a6c (38:6a6c)
-Functione2a6c: ; e2a6c
+BillsPC_LeftRightDidSomething: ; e2a6c
scf
ret
; e2a6e
-Functione2a6e: ; e2a6e (38:6a6e)
+BillsPC_PlaceString: ; e2a6e (38:6a6e)
push de
hlcoord 0, 15
lb bc, 1, 18
@@ -1005,8 +1013,8 @@ Functione2a6e: ; e2a6e (38:6a6e)
ret
; e2a80 (38:6a80)
-Functione2a80: ; e2a80
- call Functione2a8e
+BillsPC_MoveMonWOMail_BoxNameAndArrows: ; e2a80
+ call BillsPC_BoxName
hlcoord 8, 1
ld [hl], $5f
hlcoord 19, 1
@@ -1014,12 +1022,12 @@ Functione2a80: ; e2a80
ret
; e2a8e
-Functione2a8e: ; e2a8e (38:6a8e)
+BillsPC_BoxName: ; e2a8e (38:6a8e)
hlcoord 8, 0
lb bc, 1, 10
call TextBox
- ld a, [wcb2e]
+ ld a, [wBillsPC_LoadedBox]
and a
jr z, .party
@@ -1038,14 +1046,14 @@ Functione2a8e: ; e2a8e (38:6a8e)
jr .print
.party
- ld de, String_e2abd
+ ld de, .PartyPKMN
.print
hlcoord 10, 1
call PlaceString
ret
; e2abd (38:6abd)
-String_e2abd:
+.PartyPKMN:
db "PARTY <PK><MN>@"
; e2ac6
@@ -1068,34 +1076,34 @@ PCMonInfo: ; e2ac6 (38:6ac6)
lb bc, 1, 3
call ClearBox
- call Functione2def
+ call BillsPC_GetSelectedPokemonSpecies
and a
ret z
- cp $ff
+ cp -1
ret z
ld [wd265], a
hlcoord 1, 4
xor a
ld b, 7
-.asm_e2ae9
+.row
ld c, 7
push af
push hl
-.asm_e2aed
+.col
ld [hli], a
add 7
dec c
- jr nz, .asm_e2aed
+ jr nz, .col
pop hl
- ld de, 20
+ ld de, SCREEN_WIDTH
add hl, de
pop af
inc a
dec b
- jr nz, .asm_e2ae9
+ jr nz, .row
- call Functione2b6d
+ call BillsPC_LoadMonStats
ld a, [wd265]
ld [CurPartySpecies], a
ld [CurSpecies], a
@@ -1105,10 +1113,9 @@ PCMonInfo: ; e2ac6 (38:6ac6)
ld de, VTiles2 tile $00
predef GetFrontpic
xor a
- ld [wcb32], a
+ ld [wBillsPC_MonHasMail], a
ld a, [CurPartySpecies]
ld [wd265], a
-
cp EGG
ret z
@@ -1122,14 +1129,14 @@ PCMonInfo: ; e2ac6 (38:6ac6)
ld a, $3
ld [MonType], a
callba GetGender
- jr c, .asm_e2b4f
+ jr c, .skip_gender
ld a, "♂"
jr nz, .printgender
ld a, "♀"
.printgender
hlcoord 5, 12
ld [hl], a
-.asm_e2b4f
+.skip_gender
ld a, [TempMonItem]
and a
@@ -1142,28 +1149,28 @@ PCMonInfo: ; e2ac6 (38:6ac6)
jr .printitem
.mail
ld a, $1
- ld [wcb32], a
+ ld [wBillsPC_MonHasMail], a
ld a, $5c ; mail icon
.printitem
hlcoord 7, 12
ld [hl], a
ret
-Functione2b6d: ; e2b6d (38:6b6d)
- ld a, [wcb2b]
- ld hl, wcb2a
+BillsPC_LoadMonStats: ; e2b6d (38:6b6d)
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
ld e, a
ld d, $0
- ld hl, wc801
+ ld hl, wBillsPCPokemonList + 1
rept 3
add hl, de
endr
ld a, [hl]
and a
- jr z, .asm_e2bc6
- cp $f
- jr z, .asm_e2bf5
+ jr z, .party
+ cp NUM_BOXES + 1
+ jr z, .sBox
ld b, a
call GetBoxPointer
ld a, b
@@ -1199,7 +1206,8 @@ endr
ld [de], a
call CloseSRAM
ret
-.asm_e2bc6
+
+.party
ld hl, PartyMon1Level
ld bc, PARTYMON_STRUCT_LENGTH
ld a, e
@@ -1224,7 +1232,7 @@ endr
ld [de], a
ret
-.asm_e2bf5
+.sBox
ld a, BANK(sBox)
call GetSRAMBank
ld hl, sBoxMon1Level
@@ -1255,7 +1263,7 @@ endr
call CloseSRAM
ret
-Functione2c2c: ; e2c2c (38:6c2c)
+BillsPC_RefreshTextboxes: ; e2c2c (38:6c2c)
hlcoord 8, 2
lb bc, 10, 10
call TextBox
@@ -1265,24 +1273,24 @@ Functione2c2c: ; e2c2c (38:6c2c)
hlcoord 19, 2
ld [hl], "┘"
- ld a, [wcb2a]
+ ld a, [wBillsPC_ScrollPosition]
ld e, a
ld d, 0
- ld hl, OverworldMap
+ ld hl, wBillsPCPokemonList
rept 3
add hl, de
endr
ld e, l
ld d, h
hlcoord 9, 4
- ld a, [wcb2d]
-.asm_e2c53
+ ld a, [wBillsPC_NumMonsOnScreen]
+.loop
push af
push de
push hl
- call Functione2c6e
+ call .PlaceNickname
pop hl
- ld de, $28
+ ld de, 2 * SCREEN_WIDTH
add hl, de
pop de
rept 3
@@ -1290,25 +1298,25 @@ rept 3
endr
pop af
dec a
- jr nz, .asm_e2c53
+ jr nz, .loop
ret
; e2c67 (38:6c67)
-String_e2c67:
+.CancelString:
db "CANCEL@"
; e2c6e
-Functione2c6e: ; e2c6e (38:6c6e)
+.PlaceNickname: ; e2c6e (38:6c6e)
ld a, [de]
and a
ret z
- cp $ff
- jr nz, .asm_e2c7c
- ld de, String_e2c67
+ cp -1
+ jr nz, .get_nickname
+ ld de, .CancelString
call PlaceString
ret
-.asm_e2c7c
+.get_nickname
inc de
ld a, [de]
ld b, a
@@ -1317,9 +1325,9 @@ Functione2c6e: ; e2c6e (38:6c6e)
ld e, a
ld a, b
and a
- jr z, .asm_e2cc8
- cp $f
- jr z, .asm_e2cf1
+ jr z, .party
+ cp NUM_BOXES + 1
+ jr z, .sBox
push hl
call GetBoxPointer
ld a, b
@@ -1333,7 +1341,7 @@ Functione2c6e: ; e2c6e (38:6c6e)
ld a, [hl]
pop hl
and a
- jr z, .asm_e2cc2
+ jr z, .boxfail
ld bc, sBoxMonNicknames - sBox
add hl, bc
ld bc, PKMN_NAME_LENGTH
@@ -1348,19 +1356,19 @@ Functione2c6e: ; e2c6e (38:6c6e)
call PlaceString
ret
-.asm_e2cc2
+.boxfail
call CloseSRAM
pop hl
- jr .asm_e2d23
+ jr .placeholder_string
-.asm_e2cc8
+.party
push hl
ld hl, PartySpecies
ld d, $0
add hl, de
ld a, [hl]
and a
- jr z, .asm_e2cee
+ jr z, .partyfail
ld hl, PartyMonNicknames
ld bc, PKMN_NAME_LENGTH
ld a, e
@@ -1373,11 +1381,11 @@ Functione2c6e: ; e2c6e (38:6c6e)
call PlaceString
ret
-.asm_e2cee
+.partyfail
pop hl
- jr .asm_e2d23
+ jr .placeholder_string
-.asm_e2cf1
+.sBox
push hl
ld a, BANK(sBox)
call GetSRAMBank
@@ -1386,7 +1394,7 @@ Functione2c6e: ; e2c6e (38:6c6e)
add hl, de
ld a, [hl]
and a
- jr z, .asm_e2d1f
+ jr z, .sBoxFail
ld hl, sBoxMonNicknames
ld bc, PKMN_NAME_LENGTH
ld a, e
@@ -1400,47 +1408,29 @@ Functione2c6e: ; e2c6e (38:6c6e)
call PlaceString
ret
-.asm_e2d1f
+.sBoxFail
call CloseSRAM
pop hl
-.asm_e2d23
- ld de, String_e2d2a
+.placeholder_string
+ ld de, .Placeholder
call PlaceString
ret
; e2d2a (38:6d2a)
-String_e2d2a:
+.Placeholder:
db "-----@"
; e2d30
-Functione2d30: ; e2d30 (38:6d30)
- xor a
- ld hl, OverworldMap
- ld bc, $5a
- call ByteFill
- ld de, OverworldMap
- xor a
- ld [wd003], a
- ld [wd004], a
- ld a, [wcb2e]
- and a
- jr z, .asm_e2d87
- cp $f
- jr z, .asm_e2db7
- ld b, a
- call GetBoxPointer
- ld a, b
- call GetSRAMBank
- inc hl
-.asm_e2d57
+copy_box_data: MACRO
+.loop\@
ld a, [hl]
- cp $ff
- jr z, .asm_e2d79
+ cp -1
+ jr z, .done\@
and a
- jr z, .asm_e2d79
+ jr z, .done\@
ld [de], a
inc de
- ld a, [wcb2e]
+ ld a, [wBillsPC_LoadedBox]
ld [de], a
inc de
ld a, [wd003]
@@ -1452,241 +1442,203 @@ Functione2d30: ; e2d30 (38:6d30)
ld a, [wd004]
inc a
ld [wd004], a
- jr .asm_e2d57
+ jr .loop\@
-.asm_e2d79
+.done\@
+IF \1
call CloseSRAM
- ld a, $ff
+ENDC
+ ld a, -1
ld [de], a
ld a, [wd004]
inc a
- ld [wcb2c], a
- ret
+ ld [wBillsPC_NumMonsInBox], a
+endm
-.asm_e2d87
- ld hl, PartySpecies
-.asm_e2d8a
- ld a, [hl]
- cp $ff
- jr z, .asm_e2dac
- and a
- jr z, .asm_e2dac
- ld [de], a
- inc de
- ld a, [wcb2e]
- ld [de], a
- inc de
- ld a, [wd003]
- ld [de], a
- inc a
+CopyBoxmonSpecies: ; e2d30 (38:6d30)
+ xor a
+ ld hl, wBillsPCPokemonList
+ ld bc, 3 * 30
+ call ByteFill
+ ld de, wBillsPCPokemonList
+ xor a
ld [wd003], a
- inc de
- inc hl
- ld a, [wd004]
- inc a
ld [wd004], a
- jr .asm_e2d8a
+ ld a, [wBillsPC_LoadedBox]
+ and a
+ jr z, .party
+ cp NUM_BOXES + 1
+ jr z, .sBox
+ ld b, a
+ call GetBoxPointer
+ ld a, b
+ call GetSRAMBank
+ inc hl
+ copy_box_data 1
+ ret
-.asm_e2dac
- ld a, $ff
- ld [de], a
- ld a, [wd004]
- inc a
- ld [wcb2c], a
+.party
+ ld hl, PartySpecies
+ copy_box_data 0
ret
-.asm_e2db7
+.sBox
ld a, BANK(sBox)
call GetSRAMBank
ld hl, sBoxSpecies
-.asm_e2dbf
- ld a, [hl]
- cp $ff
- jr z, .asm_e2de1
- and a
- jr z, .asm_e2de1
- ld [de], a
- inc de
- ld a, [wcb2e]
- ld [de], a
- inc de
- ld a, [wd003]
- ld [de], a
- inc a
- ld [wd003], a
- inc de
- inc hl
- ld a, [wd004]
- inc a
- ld [wd004], a
- jr .asm_e2dbf
-
-.asm_e2de1
- call CloseSRAM
- ld a, $ff
- ld [de], a
- ld a, [wd004]
- inc a
- ld [wcb2c], a
+ copy_box_data 1
ret
-Functione2def: ; e2def (38:6def)
- ld a, [wcb2b]
- ld hl, wcb2a
+BillsPC_GetSelectedPokemonSpecies: ; e2def (38:6def)
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
ld e, a
ld d, $0
- ld hl, OverworldMap
+ ld hl, wBillsPCPokemonList
rept 3
add hl, de
endr
ld a, [hl]
ret
-Functione2e01: ; e2e01 (38:6e01)
- ld a, [wcb2c]
+BillsPC_UpdateSelectionCursor: ; e2e01 (38:6e01)
+ ld a, [wBillsPC_NumMonsInBox]
and a
- jr nz, .asm_e2e0b
+ jr nz, .place_cursor
call ClearSprites
ret
-.asm_e2e0b
- ld hl, Unknown_e2e2b
+.place_cursor
+ ld hl, .OAM
ld de, Sprites
.loop
ld a, [hl]
- cp $ff
+ cp -1
ret z
- ld a, [wcb2b]
+ ld a, [wBillsPC_CursorPosition]
and $7
swap a
add [hl]
inc hl
ld [de], a
inc de
+rept 3
ld a, [hli]
ld [de], a
inc de
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hli]
- ld [de], a
- inc de
+endr
jr .loop
; e2e2b (38:6e2b)
-Unknown_e2e2b: ; e2e2b
- db $26, $50, $00, $00
- db $26, $58, $00, $00
- db $26, $60, $00, $00
- db $26, $68, $00, $00
- db $26, $70, $00, $00
- db $26, $78, $00, $00
- db $26, $80, $00, $00
- db $26, $88, $00, $00
- db $26, $90, $00, $00
- db $26, $97, $00, $00
- db $39, $50, $00, $40
- db $39, $58, $00, $40
- db $39, $60, $00, $40
- db $39, $68, $00, $40
- db $39, $70, $00, $40
- db $39, $78, $00, $40
- db $39, $80, $00, $40
- db $39, $88, $00, $40
- db $39, $90, $00, $40
- db $39, $97, $00, $40
- db $2e, $4e, $01, $00
- db $31, $4e, $01, $40
- db $2e, $99, $01, $20
- db $31, $99, $01, $60
- db $ff
+.OAM: ; e2e2b
+ dsprite 4, 6, 10, 0, $00, $00
+ dsprite 4, 6, 11, 0, $00, $00
+ dsprite 4, 6, 12, 0, $00, $00
+ dsprite 4, 6, 13, 0, $00, $00
+ dsprite 4, 6, 14, 0, $00, $00
+ dsprite 4, 6, 15, 0, $00, $00
+ dsprite 4, 6, 16, 0, $00, $00
+ dsprite 4, 6, 17, 0, $00, $00
+ dsprite 4, 6, 18, 0, $00, $00
+ dsprite 4, 6, 18, 7, $00, $00
+ dsprite 7, 1, 10, 0, $00, $40
+ dsprite 7, 1, 11, 0, $00, $40
+ dsprite 7, 1, 12, 0, $00, $40
+ dsprite 7, 1, 13, 0, $00, $40
+ dsprite 7, 1, 14, 0, $00, $40
+ dsprite 7, 1, 15, 0, $00, $40
+ dsprite 7, 1, 16, 0, $00, $40
+ dsprite 7, 1, 17, 0, $00, $40
+ dsprite 7, 1, 18, 0, $00, $40
+ dsprite 7, 1, 18, 7, $00, $40
+ dsprite 5, 6, 9, 6, $01, $00
+ dsprite 6, 1, 9, 6, $01, $40
+ dsprite 5, 6, 19, 1, $01, $20
+ dsprite 6, 1, 19, 1, $01, $60
+ db -1
; e2e8c
-Functione2e8c: ; e2e8c
- ld hl, Unknown_e2eac
+BillsPC_UpdateInsertCursor: ; e2e8c
+ ld hl, .OAM
ld de, Sprites
-.asm_e2e92
+.loop
ld a, [hl]
- cp $ff
+ cp -1
ret z
- ld a, [wcb2b]
+ ld a, [wBillsPC_CursorPosition]
and $7
swap a
add [hl]
inc hl
ld [de], a
inc de
+rept 3
ld a, [hli]
ld [de], a
inc de
- ld a, [hli]
- ld [de], a
- inc de
- ld a, [hli]
- ld [de], a
- inc de
- jr .asm_e2e92
+endr
+ jr .loop
; e2eac
-Unknown_e2eac: ; e2eac
- db $27, $50, $06, $00
- db $2b, $58, $00, $40
- db $2b, $60, $00, $40
- db $2b, $68, $00, $40
- db $2b, $70, $00, $40
- db $2b, $78, $00, $40
- db $2b, $80, $00, $40
- db $2b, $88, $00, $40
- db $2b, $90, $00, $40
- db $27, $98, $07, $00
- db $ff
+.OAM: ; e2eac
+ dsprite 4, 7, 10, 0, $06, $00
+ dsprite 5, 3, 11, 0, $00, $40
+ dsprite 5, 3, 12, 0, $00, $40
+ dsprite 5, 3, 13, 0, $00, $40
+ dsprite 5, 3, 14, 0, $00, $40
+ dsprite 5, 3, 15, 0, $00, $40
+ dsprite 5, 3, 16, 0, $00, $40
+ dsprite 5, 3, 17, 0, $00, $40
+ dsprite 5, 3, 18, 0, $00, $40
+ dsprite 4, 7, 19, 0, $07, $00
+ db -1
; e2ed5
-Functione2ed5: ; e2ed5
-.asm_e2ed5
+BillsPC_UnusedFillBox: ; e2ed5
+.row
push bc
push hl
-.asm_e2ed7
+.col
ld [hli], a
dec c
- jr nz, .asm_e2ed7
+ jr nz, .col
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec b
- jr nz, .asm_e2ed5
+ jr nz, .row
ret
; e2ee5
-Functione2ee5: ; e2ee5
- ld hl, wcb2e
- ld a, [wcb31]
+BillsPC_CheckSpaceInDestination: ; e2ee5
+; If moving within a box, no need to be here.
+ ld hl, wBillsPC_LoadedBox
+ ld a, [wBillsPC_BackupLoadedBox]
cp [hl]
- jr z, .asm_e2f00
- ld a, [wcb2e]
- and a
- jr z, .asm_e2ef8
- ld e, $15
- jr .asm_e2efa
+ jr z, .same_box
-.asm_e2ef8
- ld e, $7
+; Exceeding box or party capacity is a big no-no.
+ ld a, [wBillsPC_LoadedBox]
+ and a
+ jr z, .party
+ ld e, MONS_PER_BOX + 1
+ jr .compare
-.asm_e2efa
- ld a, [wcb2c]
+.party
+ ld e, PARTY_LENGTH + 1
+.compare
+ ld a, [wBillsPC_NumMonsInBox]
cp e
- jr nc, .asm_e2f02
-
-.asm_e2f00
+ jr nc, .no_room
+.same_box
and a
ret
-.asm_e2f02
+.no_room
ld de, PCString_TheresNoRoom
- call Functione2a6e
+ call BillsPC_PlaceString
ld de, SFX_WRONG
call WaitPlaySFX
call WaitSFX
@@ -1696,35 +1648,38 @@ Functione2ee5: ; e2ee5
ret
; e2f18
-Functione2f18: ; e2f18 (38:6f18)
- ld a, [wcb2e]
+BillsPC_CheckMail_PreventBlackout: ; e2f18 (38:6f18)
+ ld a, [wBillsPC_LoadedBox]
and a
jr nz, .Okay
- ld a, [wcb2c]
+ ld a, [wBillsPC_NumMonsInBox]
cp $3
jr c, .ItsYourLastPokemon
- ld a, [wcb2b]
- ld hl, wcb2a
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
ld [CurPartyMon], a
callba CheckCurPartyMonFainted
jr c, .AllOthersFainted
- ld a, [wcb32]
+ ld a, [wBillsPC_MonHasMail]
and a
jr nz, .HasMail
.Okay
and a
ret
+
.HasMail
ld de, PCString_RemoveMail
jr .NotOkay
+
.AllOthersFainted
ld de, PCString_NoMoreUsablePKMN
jr .NotOkay
+
.ItsYourLastPokemon
ld de, PCString_ItsYourLastPKMN
.NotOkay
- call Functione2a6e
+ call BillsPC_PlaceString
ld de, SFX_WRONG
call WaitPlaySFX
call WaitSFX
@@ -1733,15 +1688,16 @@ Functione2f18: ; e2f18 (38:6f18)
scf
ret
-Functione2f5f: ; e2f5f (38:6f5f)
+BillsPC_IsMonAnEgg: ; e2f5f (38:6f5f)
ld a, [CurPartySpecies]
cp EGG
- jr z, .asm_e2f68
+ jr z, .egg
and a
ret
-.asm_e2f68
+
+.egg
ld de, PCString_NoReleasingEGGS
- call Functione2a6e
+ call BillsPC_PlaceString
ld de, SFX_WRONG
call WaitPlaySFX
call WaitSFX
@@ -1750,60 +1706,60 @@ Functione2f5f: ; e2f5f (38:6f5f)
scf
ret
-Functione2f7e: ; e2f7e (38:6f7e)
+BillsPC_StatsScreen: ; e2f7e (38:6f7e)
call LowVolume
- call Functione2fd6
+ call BillsPC_CopyMon
ld a, $3
ld [MonType], a
predef StatsScreenInit
- call Functione33e8
+ call BillsPC_InitGFX
call MaxVolume
ret
-Functione2f95: ; e2f95 (38:6f95)
+StatsScreenDPad: ; e2f95 (38:6f95)
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
and A_BUTTON | B_BUTTON | D_RIGHT | D_LEFT
- ld [wcf73], a
+ ld [wMenuJoypad], a
jr nz, .pressed_a_b_right_left
ld a, [hl]
and D_DOWN | D_UP
- ld [wcf73], a
+ ld [wMenuJoypad], a
jr nz, .pressed_down_up
jr .pressed_a_b_right_left
.pressed_down_up
- call Functione2998
+ call _StatsScreenDPad
and a
- jr z, .asm_e2fd1
- call Functione2def
+ jr z, .did_nothing
+ call BillsPC_GetSelectedPokemonSpecies
ld [wd265], a
- call Functione2b6d
+ call BillsPC_LoadMonStats
ld a, [wd265]
ld [CurPartySpecies], a
ld [CurSpecies], a
ld hl, TempMonDVs
predef GetUnownLetter
call GetBaseData
- call Functione2fd6
+ call BillsPC_CopyMon
.pressed_a_b_right_left
ret
-.asm_e2fd1
+.did_nothing
xor a
- ld [wcf73], a
+ ld [wMenuJoypad], a
ret
-Functione2fd6: ; e2fd6 (38:6fd6)
- ld a, [wcb2b]
- ld hl, wcb2a
+BillsPC_CopyMon: ; e2fd6 (38:6fd6)
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
ld [CurPartyMon], a
- ld a, [wcb2e]
+ ld a, [wBillsPC_LoadedBox]
and a
- jr z, .asm_e3020
- cp $f
- jr nz, .asm_e3048
+ jr z, .party
+ cp NUM_BOXES + 1
+ jr nz, .box
ld a, BANK(sBox)
call GetSRAMBank
ld hl, sBoxSpecies
@@ -1816,14 +1772,14 @@ Functione2fd6: ; e2fd6 (38:6fd6)
ld bc, BOXMON_STRUCT_LENGTH
ld a, [CurPartyMon]
call AddNTimes
- ld de, wd018_Mon
+ ld de, wBufferMon
ld bc, PARTYMON_STRUCT_LENGTH
call CopyBytes
call CloseSRAM
- callba Function5088b
+ callba CalcwBufferMonStats
ret
-.asm_e3020
+.party
ld hl, PartySpecies
call CopySpeciesToTemp
ld hl, PartyMonNicknames
@@ -1834,12 +1790,12 @@ Functione2fd6: ; e2fd6 (38:6fd6)
ld bc, PARTYMON_STRUCT_LENGTH
ld a, [CurPartyMon]
call AddNTimes
- ld de, wd018_Mon
+ ld de, wBufferMon
ld bc, PARTYMON_STRUCT_LENGTH
call CopyBytes
ret
-.asm_e3048
+.box
ld b, a
call GetBoxPointer
ld a, b
@@ -1863,12 +1819,12 @@ Functione2fd6: ; e2fd6 (38:6fd6)
ld bc, BOXMON_STRUCT_LENGTH
call CopyMonToTemp
call CloseSRAM
- callba Function5088b
+ callba CalcwBufferMonStats
ret
-Functione307c: ; e307c (38:707c)
- ld a, [wcb2b]
- ld hl, wcb2a
+DepositPokemon: ; e307c (38:707c)
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
ld [CurPartyMon], a
ld hl, PartyMonNicknames
@@ -1880,7 +1836,7 @@ Functione307c: ; e307c (38:707c)
jr c, .asm_boxisfull
xor a
ld [wPokemonWithdrawDepositParameter], a
- callba Functione039
+ callba RemoveMonFromPartyOrBox
ld a, [CurPartySpecies]
call PlayCry
hlcoord 0, 0
@@ -1909,7 +1865,7 @@ Functione307c: ; e307c (38:707c)
.asm_boxisfull
ld de, PCString_BoxFull
- call Functione2a6e
+ call BillsPC_PlaceString
ld de, SFX_WRONG
call WaitPlaySFX
call WaitSFX
@@ -1919,8 +1875,8 @@ Functione307c: ; e307c (38:707c)
ret
TryWithdrawPokemon: ; e30fa (38:70fa)
- ld a, [wcb2b]
- ld hl, wcb2a
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
ld [CurPartyMon], a
ld a, BANK(sBoxMonNicknames)
@@ -1935,7 +1891,7 @@ TryWithdrawPokemon: ; e30fa (38:70fa)
jr c, .PartyFull
ld a, PC_DEPOSIT
ld [wPokemonWithdrawDepositParameter], a
- callba Functione039
+ callba RemoveMonFromPartyOrBox
ld a, [CurPartySpecies]
call PlayCry
hlcoord 0, 0
@@ -1964,7 +1920,7 @@ TryWithdrawPokemon: ; e30fa (38:70fa)
.PartyFull
ld de, PCString_PartyFull
- call Functione2a6e
+ call BillsPC_PlaceString
ld de, SFX_WRONG
call WaitPlaySFX
call WaitSFX
@@ -1974,7 +1930,7 @@ TryWithdrawPokemon: ; e30fa (38:70fa)
ret
-Functione3180: ; e3180 (38:7180)
+ReleasePKMN_ByePKMN: ; e3180 (38:7180)
hlcoord 0, 0
lb bc, 15, 8
call ClearBox
@@ -1988,11 +1944,11 @@ Functione3180: ; e3180 (38:7180)
call WaitBGMap
ld a, [CurPartySpecies]
call GetCryIndex
- jr c, .asm_e31ab
+ jr c, .skip_cry
ld e, c
ld d, b
call PlayCryHeader
-.asm_e31ab
+.skip_cry
ld a, [CurPartySpecies]
ld [wd265], a
@@ -2021,7 +1977,7 @@ Functione3180: ; e3180 (38:7180)
ret
; e31e7 (38:71e7)
-Functione31e7: ; e31e7
+MovePKMNWitoutMail_InsertMon: ; e31e7
push hl
push de
push bc
@@ -2030,7 +1986,7 @@ Functione31e7: ; e31e7
lb bc, 1, 18
call TextBox
hlcoord 1, 16
- ld de, String_e3233
+ ld de, .Saving_LeaveOn
call PlaceString
ld c, 20
call DelayFrames
@@ -2041,107 +1997,108 @@ Functione31e7: ; e31e7
ld a, [wCurBox]
push af
ld bc, 0
- ld a, [wcb31]
+ ld a, [wBillsPC_BackupLoadedBox]
and a
- jr nz, .asm_e3215
+ jr nz, .moving_from_box
set 0, c
-.asm_e3215
- ld a, [wcb2e]
+.moving_from_box
+ ld a, [wBillsPC_LoadedBox]
and a
- jr nz, .asm_e321d
+ jr nz, .moving_to_box
set 1, c
-.asm_e321d
- ld hl, Jumptable_e3245
+.moving_to_box
+ ld hl, .Jumptable
rept 2
add hl, bc
endr
ld a, [hli]
ld h, [hl]
ld l, a
- ld de, Functione322a
+ ld de, .jumptable_return
push de
jp [hl]
; e322a
-Functione322a: ; e322a
+.jumptable_return: ; e322a
pop af
ld e, a
callba Function14ad5
ret
; e3233
-String_e3233:
+.Saving_LeaveOn:
db "Saving… Leave ON!@"
; e3245
-Jumptable_e3245: ; e3245
- dw Functione324d
- dw Functione3267
- dw Functione327d
- dw Functione3284
+.Jumptable: ; e3245
+ jumptable_start
+ jumptable .BoxToBox
+ jumptable .PartyToBox
+ jumptable .BoxToParty
+ jumptable .PartyToParty
; e324d
-Functione324d: ; e324d
- ld hl, wcb31
- ld a, [wcb2e]
+.BoxToBox: ; e324d
+ ld hl, wBillsPC_BackupLoadedBox
+ ld a, [wBillsPC_LoadedBox]
cp [hl]
- jr z, .asm_e325d
- call Functione32b0
- call Functione32fa
+ jr z, .same_box
+ call .CopyFromBox
+ call .CopyToBox
ret
-.asm_e325d
- call Functione32b0
- call Functione328e
- call Functione32fa
+.same_box
+ call .CopyFromBox
+ call .CheckTrivialMove
+ call .CopyToBox
ret
; e3267
-Functione3267: ; e3267
- call Functione3316
+.PartyToBox: ; e3267
+ call .CopyFromParty
ld a, $1
ld [wc2cd], a
callba SaveGameData
xor a
ld [wc2cd], a
- call Functione32fa
+ call .CopyToBox
ret
; e327d
-Functione327d: ; e327d
- call Functione32b0
- call Functione3346
+.BoxToParty: ; e327d
+ call .CopyFromBox
+ call .CopyToParty
ret
; e3284
-Functione3284: ; e3284
- call Functione3316
- call Functione328e
- call Functione3346
+.PartyToParty: ; e3284
+ call .CopyFromParty
+ call .CheckTrivialMove
+ call .CopyToParty
ret
; e328e
-Functione328e: ; e328e
- ld a, [wcb2b]
- ld hl, wcb2a
+.CheckTrivialMove: ; e328e
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
ld e, a
- ld a, [wcb30]
- ld hl, wcb2f
+ ld a, [wBillsPC_BackupCursorPosition]
+ ld hl, wBillsPC_BackupScrollPosition
add [hl]
cp e
ret nc
- ld hl, wcb2b
+ ld hl, wBillsPC_CursorPosition
ld a, [hl]
and a
- jr z, .asm_e32a8
+ jr z, .top_of_screen
dec [hl]
ret
-.asm_e32a8
- ld hl, wcb2a
+.top_of_screen
+ ld hl, wBillsPC_ScrollPosition
ld a, [hl]
and a
ret z
@@ -2149,13 +2106,13 @@ Functione328e: ; e328e
ret
; e32b0
-Functione32b0: ; e32b0
- ld a, [wcb31]
+.CopyFromBox: ; e32b0
+ ld a, [wBillsPC_BackupLoadedBox]
dec a
ld e, a
callba MovePkmnWOMail_SaveGame
- ld a, [wcb30]
- ld hl, wcb2f
+ ld a, [wBillsPC_BackupCursorPosition]
+ ld hl, wBillsPC_BackupScrollPosition
add [hl]
ld [CurPartyMon], a
ld a, $1
@@ -2170,29 +2127,29 @@ Functione32b0: ; e32b0
ld bc, BOXMON_STRUCT_LENGTH
call CopyMonToTemp
call CloseSRAM
- callba Function5088b
+ callba CalcwBufferMonStats
ld a, PC_DEPOSIT
ld [wPokemonWithdrawDepositParameter], a
- callba Functione039
+ callba RemoveMonFromPartyOrBox
ret
; e32fa
-Functione32fa: ; e32fa
- ld a, [wcb2e]
+.CopyToBox: ; e32fa
+ ld a, [wBillsPC_LoadedBox]
dec a
ld e, a
callba MovePkmnWOMail_SaveGame
- ld a, [wcb2b]
- ld hl, wcb2a
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
ld [CurPartyMon], a
callba Function51322
ret
; e3316
-Functione3316: ; e3316
- ld a, [wcb30]
- ld hl, wcb2f
+.CopyFromParty: ; e3316
+ ld a, [wBillsPC_BackupCursorPosition]
+ ld hl, wBillsPC_BackupScrollPosition
add [hl]
ld [CurPartyMon], a
ld hl, PartySpecies
@@ -2206,13 +2163,13 @@ Functione3316: ; e3316
call CopyMonToTemp
xor a
ld [wPokemonWithdrawDepositParameter], a
- callba Functione039
+ callba RemoveMonFromPartyOrBox
ret
; e3346
-Functione3346: ; e3346
- ld a, [wcb2b]
- ld hl, wcb2a
+.CopyToParty: ; e3346
+ ld a, [wBillsPC_CursorPosition]
+ ld hl, wBillsPC_ScrollPosition
add [hl]
ld [CurPartyMon], a
callba Function5138b
@@ -2232,7 +2189,7 @@ CopyNicknameToTemp: ; e3363 (38:7363)
ld bc, PKMN_NAME_LENGTH
ld a, [CurPartyMon]
call AddNTimes
- ld de, wd002
+ ld de, wBufferMonNick
ld bc, PKMN_NAME_LENGTH
call CopyBytes
ret
@@ -2241,7 +2198,7 @@ CopyOTNameToTemp: ; e3376 (38:7376)
ld bc, NAME_LENGTH
ld a, [CurPartyMon]
call AddNTimes
- ld de, wd00d
+ ld de, wBufferMonOT
ld bc, NAME_LENGTH
call CopyBytes
ret
@@ -2249,7 +2206,7 @@ CopyOTNameToTemp: ; e3376 (38:7376)
CopyMonToTemp: ; e3389 (38:7389)
ld a, [CurPartyMon]
call AddNTimes
- ld de, wd018_Mon
+ ld de, wBufferMon
call CopyBytes
ret
@@ -2287,16 +2244,16 @@ endr
dba sBox14
; e33d0
-Functione33d0: ; e33d0 (38:73d0)
+BillsPC_ApplyPalettes: ; e33d0 (38:73d0)
ld b, a
call GetSGBLayout
- ld a, $e4
+ ld a, %11100100
call DmgToCgbBGPals
- ld a, $fc
- call Functioncf8
+ ld a, %11111100
+ call DmgToCgbObjPal0
ret
-Functione33df: ; e33df (38:73df)
+BillsPC_Jumptable: ; e33df (38:73df)
ld e, a
ld d, $0
rept 2
@@ -2307,17 +2264,17 @@ endr
ld l, a
ret
-Functione33e8: ; e33e8 (38:73e8)
+BillsPC_InitGFX: ; e33e8 (38:73e8)
call DisableLCD
ld hl, VTiles2 tile $00
- ld bc, $310
+ ld bc, $31 tiles
xor a
call ByteFill
call LoadStandardFont
call LoadFontsBattleExtra
ld hl, PCMailGFX
ld de, VTiles2 tile $5c
- ld bc, $40
+ ld bc, 4 tiles
call CopyBytes
ld hl, PCSelectLZ
ld de, VTiles0 tile $00
@@ -2353,12 +2310,12 @@ PCString_NoReleasingEGGS: db "No releasing EGGS!@"
_ChangeBox: ; e35aa (38:75aa)
call LoadStandardMenuDataHeader
- call Functione35e2
+ call BillsPC_ClearTilemap
.loop
xor a
ld [hBGMapMode], a
- call Functione36cf
- call Functione379c
+ call BillsPC_PrintBoxName
+ call BillsPC_PlaceChooseABoxString
ld hl, _ChangeBox_menudataheader
call CopyMenuDataHeader
xor a
@@ -2366,18 +2323,18 @@ _ChangeBox: ; e35aa (38:75aa)
hlcoord 0, 4
lb bc, 8, 9
call TextBox
- call HandleScrollingMenu
- ld a, [wcf73]
- cp $2
+ call ScrollingMenu
+ ld a, [wMenuJoypad]
+ cp B_BUTTON
jr z, .done
- call Functione37af
- call Functione36f9
+ call BillsPC_PlaceWhatsUpString
+ call BillsPC_ChangeBoxSubmenu
jr .loop
.done
call WriteBackup
ret
-Functione35e2: ; e35e2 (38:75e2)
+BillsPC_ClearTilemap: ; e35e2 (38:75e2)
xor a
ld [hBGMapMode], a
hlcoord 0, 0
@@ -2402,7 +2359,7 @@ _ChangeBox_menudataheader: ; 0xe35f1
dba .boxes
dba .boxnames
dba NULL
- dba Functione3632
+ dba BillsPC_PrintBoxCountAndCapacity
; e3609
.boxes: ; e3609
@@ -2434,7 +2391,7 @@ GetBoxName: ; e3626 (38:7626)
ret
; e3632 (38:7632)
-Functione3632: ; e3632
+BillsPC_PrintBoxCountAndCapacity: ; e3632
hlcoord 11, 7
lb bc, 5, 7
call TextBox
@@ -2442,7 +2399,7 @@ Functione3632: ; e3632
cp -1
ret z
hlcoord 12, 9
- ld de, String_e3663
+ ld de, .Pokemon
call PlaceString
call GetBoxCount
ld [wd265], a
@@ -2450,16 +2407,16 @@ Functione3632: ; e3632
ld de, wd265
lb bc, 1, 2
call PrintNum
- ld de, String_e3668
+ ld de, .out_of_20
call PlaceString
ret
; e3663
-String_e3663: ; e3663
+.Pokemon: ; e3663
db "#MON@"
; e3668
-String_e3668: ; e3668
+.out_of_20: ; e3668
; db "/20@"
db "/"
db "0" + MONS_PER_BOX / 10 ; "2"
@@ -2526,13 +2483,13 @@ endr
dba sBox14
; e36cf
-Functione36cf: ; e36cf (38:76cf)
+BillsPC_PrintBoxName: ; e36cf (38:76cf)
hlcoord 0, 0
ld b, 2
ld c, 18
call TextBox
hlcoord 1, 2
- ld de, String_e36f1
+ ld de, .Current
call PlaceString
ld a, [wCurBox]
and $f
@@ -2542,17 +2499,17 @@ Functione36cf: ; e36cf (38:76cf)
ret
; e36f1 (38:76f1)
-String_e36f1: ; e36f1
+.Current: ; e36f1
db "CURRENT@"
; e36f9
-Functione36f9: ; e36f9 (38:76f9)
+BillsPC_ChangeBoxSubmenu: ; e36f9 (38:76f9)
ld hl, .MenuDataHeader
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $1
jr z, .Switch
cp $2
@@ -2572,12 +2529,12 @@ Functione36f9: ; e36f9 (38:76f9)
dec a
ld c, a
callba PrintPCBox
- call Functione35e2
+ call BillsPC_ClearTilemap
and a
ret
.EmptyBox
- call Functione37be
+ call BillsPC_PlaceEmptyBoxString_SFX
and a
ret
@@ -2604,7 +2561,7 @@ Functione36f9: ; e36f9 (38:76f9)
ld e, l
ld d, h
ld hl, wd002
- ld c, $8
+ ld c, BOX_NAME_LENGTH - 1
call InitString
ld a, [MenuSelection]
dec a
@@ -2633,27 +2590,27 @@ Functione36f9: ; e36f9 (38:76f9)
db "QUIT@"
; 0xe379c
-Functione379c: ; e379c (38:779c)
- ld de, String_e37a1
- jr Functione37e3
+BillsPC_PlaceChooseABoxString: ; e379c (38:779c)
+ ld de, .ChooseABox
+ jr BillsPC_PlaceChangeBoxString
; e37a1 (38:77a1)
-String_e37a1: ; e37a1
+.ChooseABox: ; e37a1
db "Choose a BOX.@"
; e37af
-Functione37af: ; e37af (38:77af)
- ld de, String_e37b4
- jr Functione37e3
+BillsPC_PlaceWhatsUpString: ; e37af (38:77af)
+ ld de, .WhatsUp
+ jr BillsPC_PlaceChangeBoxString
; e37b4 (38:77b4)
-String_e37b4: ; e37b4
+.WhatsUp: ; e37b4
db "What's up?@"
; e37be
-Functione37be: ; e37be (38:77be)
- ld de, String_e37d3
- call Functione37e3
+BillsPC_PlaceEmptyBoxString_SFX: ; e37be (38:77be)
+ ld de, .NoMonString
+ call BillsPC_PlaceChangeBoxString
ld de, SFX_WRONG
call WaitPlaySFX
call WaitSFX
@@ -2662,11 +2619,11 @@ Functione37be: ; e37be (38:77be)
ret
; e37d3 (38:77d3)
-String_e37d3: ; e37d3
+.NoMonString: ; e37d3
db "There's no #MON.@"
; e37e3
-Functione37e3: ; e37e3 (38:77e3)
+BillsPC_PlaceChangeBoxString: ; e37e3 (38:77e3)
push de
hlcoord 0, 14
lb bc, 2, 18
diff --git a/engine/breeding/egg.asm b/engine/breeding/egg.asm
index ebf5e48d8..d5ac77802 100755
--- a/engine/breeding/egg.asm
+++ b/engine/breeding/egg.asm
@@ -1,7 +1,7 @@
-Function16e1d: ; 16e1d
- call Function16ed6
+CheckBreedmonCompatibility: ; 16e1d
+ call .CheckBreedingGroupCompatibility
ld c, $0
- jp nc, .asm_16eb7
+ jp nc, .done
ld a, [wBreedMon1Species]
ld [CurPartySpecies], a
ld a, [wBreedMon1DVs]
@@ -11,12 +11,12 @@ Function16e1d: ; 16e1d
ld a, $3
ld [MonType], a
predef GetGender
- jr c, .asm_16e70
+ jr c, .genderless
ld b, $1
- jr nz, .asm_16e48
+ jr nz, .breedmon2
inc b
-.asm_16e48
+.breedmon2
push bc
ld a, [wBreedMon2Species]
ld [CurPartySpecies], a
@@ -28,96 +28,105 @@ Function16e1d: ; 16e1d
ld [MonType], a
predef GetGender
pop bc
- jr c, .asm_16e70
+ jr c, .genderless
ld a, $1
- jr nz, .asm_16e6d
+ jr nz, .compare_gender
inc a
-.asm_16e6d
+.compare_gender
cp b
- jr nz, .asm_16e89
+ jr nz, .compute
-.asm_16e70
+.genderless
ld c, $0
ld a, [wBreedMon1Species]
cp DITTO
- jr z, .asm_16e82
+ jr z, .ditto1
ld a, [wBreedMon2Species]
cp DITTO
- jr nz, .asm_16eb7
- jr .asm_16e89
+ jr nz, .done
+ jr .compute
-.asm_16e82
+.ditto1
ld a, [wBreedMon2Species]
cp DITTO
- jr z, .asm_16eb7
+ jr z, .done
-.asm_16e89
- call Function16ebc
- ld c, $ff
- jp z, .asm_16eb7
+.compute
+ call .CheckDVs
+ ld c, 255
+ jp z, .done
ld a, [wBreedMon2Species]
ld b, a
ld a, [wBreedMon1Species]
cp b
- ld c, $fe
- jr z, .asm_16e9f
- ld c, $80
-.asm_16e9f
+ ld c, 254
+ jr z, .compare_ids
+ ld c, 128
+.compare_ids
+ ; Speed up
ld a, [wBreedMon1ID]
ld b, a
ld a, [wBreedMon2ID]
cp b
- jr nz, .asm_16eb7
+ jr nz, .done
ld a, [wBreedMon1ID + 1]
ld b, a
ld a, [wBreedMon2ID + 1]
cp b
- jr nz, .asm_16eb7
+ jr nz, .done
ld a, c
- sub $4d
+ sub 77
ld c, a
-.asm_16eb7
+.done
ld a, c
ld [wd265], a
ret
; 16ebc
-Function16ebc: ; 16ebc (5:6ebc)
+.CheckDVs: ; 16ebc (5:6ebc)
+; If Defense DVs match and the lower 3 bits of the Special DVs match,
+; maximize the chances of spawning an egg regardless of species.
ld a, [wBreedMon1DVs]
- and $f
+ and %1111
ld b, a
ld a, [wBreedMon2DVs]
- and $f
+ and %1111
cp b
ret nz
ld a, [wBreedMon1DVs + 1]
- and $7
+ and %111
ld b, a
ld a, [wBreedMon2DVs + 1]
- and $7
+ and %111
cp b
ret
; 16ed6
-Function16ed6: ; 16ed6
+.CheckBreedingGroupCompatibility: ; 16ed6
+; If either mon is in the No Eggs group,
+; they are not compatible.
ld a, [wBreedMon2Species]
ld [CurSpecies], a
call GetBaseData
ld a, [BaseEggGroups]
- cp $ff
- jr z, .asm_16f3a
+ cp NO_EGGS * $11
+ jr z, .Incompatible
+
ld a, [wBreedMon1Species]
ld [CurSpecies], a
call GetBaseData
ld a, [BaseEggGroups]
- cp $ff
- jr z, .asm_16f3a
+ cp NO_EGGS * $11
+ jr z, .Incompatible
+
+; Ditto is automatically compatible with everything.
+; If not Ditto, load the breeding groups into b/c and d/e.
ld a, [wBreedMon2Species]
cp DITTO
- jr z, .asm_16f3c
+ jr z, .Compatible
ld [CurSpecies], a
call GetBaseData
ld a, [BaseEggGroups]
@@ -128,9 +137,10 @@ Function16ed6: ; 16ed6
and $f0
swap a
ld c, a
+
ld a, [wBreedMon1Species]
cp DITTO
- jr z, .asm_16f3c
+ jr z, .Compatible
ld [CurSpecies], a
push bc
call GetBaseData
@@ -143,22 +153,24 @@ Function16ed6: ; 16ed6
and $f0
swap a
ld e, a
+
ld a, d
cp b
- jr z, .asm_16f3c
+ jr z, .Compatible
cp c
- jr z, .asm_16f3c
+ jr z, .Compatible
+
ld a, e
cp b
- jr z, .asm_16f3c
+ jr z, .Compatible
cp c
- jr z, .asm_16f3c
+ jr z, .Compatible
-.asm_16f3a
+.Incompatible
and a
ret
-.asm_16f3c
+.Compatible
scf
ret
; 16f3e
@@ -191,30 +203,30 @@ DoEggStep:: ; 16f3e
OverworldHatchEgg:: ; 16f5e
call ResetWindow
call LoadStandardMenuDataHeader
- call Function16f70
+ call HatchEggs
call ExitAllMenus
call RestartMapMusic
- jp LoadMoveSprites
+ jp CloseText
; 16f70
-Function16f70: ; 16f70 (5:6f70)
+HatchEggs: ; 16f70 (5:6f70)
ld de, PartySpecies
ld hl, PartyMon1Happiness
xor a
ld [CurPartyMon], a
-Function16f7a: ; 16f7a (5:6f7a)
+.loop: ; 16f7a (5:6f7a)
ld a, [de]
inc de
cp -1
- jp z, Function1708a
+ jp z, .done
push de
push hl
cp EGG
- jp nz, Function1707d
+ jp nz, .next
ld a, [hl]
and a
- jp nz, Function1707d
+ jp nz, .next
ld [hl], $78
push de
@@ -274,7 +286,7 @@ Function16f7a: ; 16f7a (5:6f7a)
ld [hl], a
pop hl
push hl
- ld bc, MON_EXP + 2
+ ld bc, MON_STAT_EXP - 1
add hl, bc
ld b, $0
predef CalcPkmnStats
@@ -304,7 +316,7 @@ Function16f7a: ; 16f7a (5:6f7a)
ld e, l
ld hl, PlayerName
call CopyBytes
- ld hl, UnknownText_0x1708b
+ ld hl, .Text_HatchEgg
call PrintText
ld a, [CurPartyMon]
ld hl, PartyMonNicknames
@@ -313,11 +325,12 @@ Function16f7a: ; 16f7a (5:6f7a)
ld d, h
ld e, l
push de
- ld hl, UnknownText_0x170ba
+ ld hl, .Text_NicknameHatchling
call PrintText
call YesNoBox
pop de
jr c, .nonickname
+
ld a, $1
ld [wd26b], a
xor a
@@ -328,32 +341,30 @@ Function16f7a: ; 16f7a (5:6f7a)
pop hl
ld de, StringBuffer1
call InitName
- jr Function1707d
+ jr .next
+
.nonickname
ld hl, StringBuffer1
ld bc, PKMN_NAME_LENGTH
call CopyBytes
-Function1707d: ; 1707d (5:707d)
+.next: ; 1707d (5:707d)
ld hl, CurPartyMon
inc [hl]
pop hl
ld de, PARTYMON_STRUCT_LENGTH
add hl, de
pop de
- jp Function16f7a
+ jp .loop
-Function1708a: ; 1708a (5:708a)
+.done: ; 1708a (5:708a)
ret
; 1708b (5:708b)
-UnknownText_0x1708b: ; 0x1708b
+.Text_HatchEgg: ; 0x1708b
; Huh? @ @
text_jump UnknownText_0x1c0db0
start_asm
-; 0x17090
-
-Function17090: ; 17090
ld hl, VramState
res 0, [hl]
push hl
@@ -361,38 +372,38 @@ Function17090: ; 17090
push bc
ld a, [CurPartySpecies]
push af
- call Function1728f
- ld hl, UnknownText_0x170b0
+ call EggHatch_AnimationSequence
+ ld hl, .ClearTextbox
call PrintText
pop af
ld [CurPartySpecies], a
pop bc
pop de
pop hl
- ld hl, UnknownText_0x170b5
+ ld hl, .CameOutOfItsEgg
ret
; 170b0 (5:70b0)
-UnknownText_0x170b0: ; 0x170b0
+.ClearTextbox: ; 0x170b0
;
text_jump UnknownText_0x1c0db8
db "@"
; 0x170b5
-UnknownText_0x170b5: ; 0x170b5
+.CameOutOfItsEgg: ; 0x170b5
; came out of its EGG!@ @
text_jump UnknownText_0x1c0dba
db "@"
; 0x170ba
-UnknownText_0x170ba: ; 0x170ba
+.Text_NicknameHatchling: ; 0x170ba
; Give a nickname to @ ?
text_jump UnknownText_0x1c0dd8
db "@"
; 0x170bf
-Function170bf: ; 170bf
- call Function17197
+InitEggMoves: ; 170bf
+ call GetHeritableMoves
ld d, h
ld e, l
ld b, NUM_MOVES
@@ -409,9 +420,9 @@ Function170bf: ; 170bf
inc hl
dec c
jr nz, .next
- call Function170e4
+ call GetEggMove
jr nc, .skip
- call Function17169
+ call LoadEggMove
.skip
inc de
@@ -422,7 +433,7 @@ Function170bf: ; 170bf
ret
; 170e4
-Function170e4: ; 170e4
+GetEggMove: ; 170e4
GLOBAL EggMoves
push bc
@@ -440,7 +451,7 @@ endr
ld a, BANK(EggMoves)
call GetFarByte
cp -1
- jr z, .found_mon
+ jr z, .reached_end
ld b, a
ld a, [de]
cp b
@@ -448,8 +459,8 @@ endr
inc hl
jr .loop
-.found_mon
- call Function1720b
+.reached_end
+ call GetBreedmonMovePointer
ld b, NUM_MOVES
.loop2
ld a, [de]
@@ -504,7 +515,7 @@ endr
ld a, [de]
cp b
jr nz, .loop5
- ld [wd262], a
+ ld [wPutativeTMHMMove], a
predef CanLearnTMHMMove
ld a, c
and a
@@ -521,7 +532,7 @@ endr
ret
; 17169
-Function17169: ; 17169
+LoadEggMove: ; 17169
push de
push bc
ld a, [de]
@@ -556,7 +567,7 @@ Function17169: ; 17169
ret
; 17197
-Function17197: ; 17197
+GetHeritableMoves: ; 17197
ld hl, wBreedMon2Moves
ld a, [wBreedMon1Species]
cp DITTO
@@ -564,7 +575,7 @@ Function17197: ; 17197
ld a, [wBreedMon2Species]
cp DITTO
jr z, .ditto2
- ld a, [wDittoInDaycare]
+ ld a, [wBreedMotherOrNonDitto]
and a
ret z
ld hl, wBreedMon1Moves
@@ -579,7 +590,7 @@ Function17197: ; 17197
ld [TempMonDVs], a
ld a, [wBreedMon2DVs + 1]
ld [TempMonDVs + 1], a
- ld a, $3
+ ld a, BREEDMON
ld [MonType], a
predef GetGender
jr c, .inherit_mon2_moves
@@ -595,7 +606,7 @@ Function17197: ; 17197
ld [TempMonDVs], a
ld a, [wBreedMon1DVs + 1]
ld [TempMonDVs + 1], a
- ld a, $3
+ ld a, BREEDMON
ld [MonType], a
predef GetGender
jr c, .inherit_mon1_moves
@@ -614,7 +625,7 @@ Function17197: ; 17197
ret
; 1720b
-Function1720b: ; 1720b
+GetBreedmonMovePointer: ; 1720b
ld hl, wBreedMon1Moves
ld a, [wBreedMon1Species]
cp DITTO
@@ -622,7 +633,7 @@ Function1720b: ; 1720b
ld a, [wBreedMon2Species]
cp DITTO
jr z, .ditto
- ld a, [wDittoInDaycare]
+ ld a, [wBreedMotherOrNonDitto]
and a
ret z
@@ -632,7 +643,7 @@ Function1720b: ; 1720b
; 17224
-Function17224: ; 17224 (5:7224)
+GetEggFrontpic: ; 17224 (5:7224)
push de
ld [CurPartySpecies], a
ld [CurSpecies], a
@@ -642,7 +653,7 @@ Function17224: ; 17224 (5:7224)
pop de
predef_jump GetFrontpic
-Function1723c: ; 1723c (5:723c)
+GetHatchlingFrontpic: ; 1723c (5:723c)
push de
ld [CurPartySpecies], a
ld [CurSpecies], a
@@ -652,7 +663,7 @@ Function1723c: ; 1723c (5:723c)
pop de
predef_jump FrontpicPredef
-Function17254: ; 17254 (5:7254)
+Hatch_UpdateFrontpicBGMapCenter: ; 17254 (5:7254)
push af
call WaitTop
push hl
@@ -670,98 +681,100 @@ Function17254: ; 17254 (5:7254)
lb bc, 7, 7
predef FillBox
pop af
- call Function17363
+ call Hatch_LoadFrontpicPal
call SetPalettes
jp WaitBGMap
-Function1727f: ; 1727f (5:727f)
+EggHatch_DoAnimFrame: ; 1727f (5:727f)
push hl
push de
push bc
- callab Function8cf69
+ callab PlaySpriteAnimations
call DelayFrame
pop bc
pop de
pop hl
ret
-Function1728f: ; 1728f (5:728f)
+EggHatch_AnimationSequence: ; 1728f (5:728f)
ld a, [wd265]
ld [wJumptableIndex], a
ld a, [CurSpecies]
push af
ld de, MUSIC_NONE
call PlayMusic
- callba Function8000
+ callba BlankScreen
call DisableLCD
ld hl, EggHatchGFX
ld de, VTiles0 tile $00
ld bc, $20
ld a, BANK(EggHatchGFX)
call FarCopyBytes
- callba Function8cf53
+ callba ClearSpriteAnims
ld de, VTiles2 tile $00
ld a, [wJumptableIndex]
- call Function1723c
+ call GetHatchlingFrontpic
ld de, VTiles2 tile $31
ld a, EGG
- call Function17224
+ call GetEggFrontpic
ld de, MUSIC_EVOLUTION
call PlayMusic
call EnableLCD
hlcoord 7, 4
- ld b, $98
- ld c, $31
+ ld b, VBGMap0 / $100
+ ld c, $31 ; Egg tiles start here
ld a, EGG
- call Function17254
- ld c, $50
+ call Hatch_UpdateFrontpicBGMapCenter
+ ld c, 80
call DelayFrames
xor a
ld [wcf64], a
ld a, [hSCX]
ld b, a
-.asm_172ee
+.outerloop
ld hl, wcf64
ld a, [hl]
inc [hl]
- cp $8
- jr nc, .asm_17327
+ cp 8
+ jr nc, .done
ld e, [hl]
-.asm_172f8
- ld a, $2
+.loop
+; wobble e times
+ ld a, 2
ld [hSCX], a
- ld a, $fe
- ld [wc3c0], a
- call Function1727f
- ld c, $2
+ ld a, -2
+ ld [wGlobalAnimXOffset], a
+ call EggHatch_DoAnimFrame
+ ld c, 2
call DelayFrames
- ld a, $fe
+ ld a, -2
ld [hSCX], a
- ld a, $2
- ld [wc3c0], a
- call Function1727f
- ld c, $2
+ ld a, 2
+ ld [wGlobalAnimXOffset], a
+ call EggHatch_DoAnimFrame
+ ld c, 2
call DelayFrames
dec e
- jr nz, .asm_172f8
- ld c, $10
+ jr nz, .loop
+ ld c, 16
call DelayFrames
- call Function1736d
- jr .asm_172ee
-.asm_17327
+ call EggHatch_CrackShell
+ jr .outerloop
+
+.done
ld de, SFX_EGG_HATCH
call PlaySFX
xor a
ld [hSCX], a
- ld [wc3c0], a
+ ld [wGlobalAnimXOffset], a
call ClearSprites
- call Function173b3
+ call Hatch_InitShellFragments
hlcoord 6, 3
- ld b, $98
- ld c, $0
+ ld b, VBGMap0 / $100
+ ld c, $00 ; Hatchling tiles start here
ld a, [wJumptableIndex]
- call Function17254
- call Function17418
+ call Hatch_UpdateFrontpicBGMapCenter
+ call Hatch_ShellFragmentLoop
call WaitSFX
ld a, [wJumptableIndex]
ld [CurPartySpecies], a
@@ -773,13 +786,13 @@ Function1728f: ; 1728f (5:728f)
ld [CurSpecies], a
ret
-Function17363: ; 17363 (5:7363)
+Hatch_LoadFrontpicPal: ; 17363 (5:7363)
ld [PlayerHPPal], a
ld b, SCGB_0B
ld c, $0
jp GetSGBLayout
-Function1736d: ; 1736d (5:736d)
+EggHatch_CrackShell: ; 1736d (5:736d)
ld a, [wcf64]
dec a
and $7
@@ -789,12 +802,12 @@ 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
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $0
ld de, SFX_EGG_CRACK
@@ -805,12 +818,12 @@ EggHatchGFX: ; 17393
INCBIN "gfx/unknown/017393.2bpp"
; 173b3
-Function173b3: ; 173b3 (5:73b3)
- callba Function8cf53
- ld hl, Unknown_173ef
+Hatch_InitShellFragments: ; 173b3 (5:73b3)
+ callba ClearSpriteAnims
+ ld hl, .SpriteData
.loop
ld a, [hli]
- cp $ff
+ cp -1
jr z, .done
ld e, a
ld a, [hli]
@@ -821,156 +834,162 @@ Function173b3: ; 173b3 (5:73b3)
ld b, a
push hl
push bc
+
ld a, SPRITE_ANIM_INDEX_1C
call _InitSpriteAnimStruct
- ld hl, $3
+
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $0
+
pop de
ld a, e
- ld hl, $1
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
add [hl]
ld [hl], a
- ld hl, $b
+
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld [hl], d
+
pop hl
jr .loop
.done
ld de, SFX_EGG_HATCH
call PlaySFX
- call Function1727f
+ call EggHatch_DoAnimFrame
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)
- ld c, $81
-.asm_1741a
- call Function1727f
+Hatch_ShellFragmentLoop: ; 17418 (5:7418)
+ ld c, 129
+.loop
+ call EggHatch_DoAnimFrame
dec c
- jr nz, .asm_1741a
+ jr nz, .loop
ret
Special_DayCareMon1: ; 17421
- ld hl, UnknownText_0x17467
+ ld hl, DayCareMon1Text
call PrintText
ld a, [wBreedMon1Species]
call PlayCry
ld a, [wDaycareLady]
bit 0, a
- jr z, Function1745f
- call KeepTextOpen
+ jr z, DayCareMonCursor
+ call ButtonSound
ld hl, wBreedMon2Nick
- call Function1746c
+ call DayCareMonCompatibilityText
jp PrintText
Special_DayCareMon2: ; 17440
- ld hl, UnknownText_0x17462
+ ld hl, DayCareMon2Text
call PrintText
ld a, [wBreedMon2Species]
call PlayCry
ld a, [wDaycareMan]
bit 0, a
- jr z, Function1745f
- call KeepTextOpen
+ jr z, DayCareMonCursor
+ call ButtonSound
ld hl, wBreedMon1Nick
- call Function1746c
+ call DayCareMonCompatibilityText
jp PrintText
-Function1745f: ; 1745f
+DayCareMonCursor: ; 1745f
jp WaitPressAorB_BlinkCursor
; 17462
-UnknownText_0x17462: ; 0x17462
+DayCareMon2Text: ; 0x17462
; It's @ that was left with the DAY-CARE LADY.
text_jump UnknownText_0x1c0df3
db "@"
; 0x17467
-UnknownText_0x17467: ; 0x17467
+DayCareMon1Text: ; 0x17467
; It's @ that was left with the DAY-CARE MAN.
text_jump UnknownText_0x1c0e24
db "@"
; 0x1746c
-Function1746c: ; 1746c
+DayCareMonCompatibilityText: ; 1746c
push bc
ld de, StringBuffer1
ld bc, NAME_LENGTH
call CopyBytes
- call Function16e1d
+ call CheckBreedmonCompatibility
pop bc
ld a, [wd265]
- ld hl, UnknownText_0x1749c
- cp $ff
- jr z, .asm_1749b
- ld hl, UnknownText_0x174a1
+ ld hl, .AllAlone
+ cp -1
+ jr z, .done
+ ld hl, .Incompatible
and a
- jr z, .asm_1749b
- ld hl, UnknownText_0x174a6
+ jr z, .done
+ ld hl, .HighCompatibility
cp 230
- jr nc, .asm_1749b
+ jr nc, .done
cp 70
- ld hl, UnknownText_0x174ab
- jr nc, .asm_1749b
- ld hl, UnknownText_0x174b0
+ ld hl, .ModerateCompatibility
+ jr nc, .done
+ ld hl, .SlightCompatibility
-.asm_1749b
+.done
ret
; 1749c
-UnknownText_0x1749c: ; 0x1749c
+.AllAlone: ; 0x1749c
; It's brimming with energy.
text_jump UnknownText_0x1c0e54
db "@"
; 0x174a1
-UnknownText_0x174a1: ; 0x174a1
+.Incompatible: ; 0x174a1
; It has no interest in @ .
text_jump UnknownText_0x1c0e6f
db "@"
; 0x174a6
-UnknownText_0x174a6: ; 0x174a6
+.HighCompatibility: ; 0x174a6
; It appears to care for @ .
text_jump UnknownText_0x1c0e8d
db "@"
; 0x174ab
-UnknownText_0x174ab: ; 0x174ab
+.ModerateCompatibility: ; 0x174ab
; It's friendly with @ .
text_jump UnknownText_0x1c0eac
db "@"
; 0x174b0
-UnknownText_0x174b0: ; 0x174b0
+.SlightCompatibility: ; 0x174b0
; It shows interest in @ .
text_jump UnknownText_0x1c0ec6
db "@"
; 0x174b5
-Function_174b5: ; 174b5
- ld hl, String_174b9
+DayCareMonPrintEmptyString: ; 174b5
+; unreferenced
+ ld hl, .string
ret
; 174b9
-String_174b9: ; 174b9
+.string: ; 174b9
db "@"
; 174ba
diff --git a/engine/buena_phone_scripts.asm b/engine/buena_phone_scripts.asm
index 98a7b72a3..0aad5e0ba 100644
--- a/engine/buena_phone_scripts.asm
+++ b/engine/buena_phone_scripts.asm
@@ -18,17 +18,17 @@ BuenaPhoneScript_CheckTimeOfDay1:
checkday
iftrue .day
writetext UnknownText_0xa0d42
- keeptextopen
+ buttonsound
end
.morn:
writetext UnknownText_0xa0c28
- keeptextopen
+ buttonsound
end
.day:
writetext UnknownText_0xa0c72
- keeptextopen
+ buttonsound
end
BuenaPhoneScript_AfterMidnight1:
@@ -43,22 +43,22 @@ BuenaPhoneScript_CheckTimeOfDay2:
checkday
iftrue .day
writetext UnknownText_0xa0e29
- keeptextopen
+ buttonsound
end
.morn:
writetext UnknownText_0xa0d96
- keeptextopen
+ buttonsound
end
.day:
writetext UnknownText_0xa0dcf
- keeptextopen
+ buttonsound
end
BuenaPhoneScript_AfterMidnight2:
writetext UnknownText_0xa0e01
- keeptextopen
+ buttonsound
end
BuenaPhoneScript_Rocket:
diff --git a/engine/buy_sell_toss.asm b/engine/buy_sell_toss.asm
new file mode 100755
index 000000000..7f2ad2727
--- /dev/null
+++ b/engine/buy_sell_toss.asm
@@ -0,0 +1,238 @@
+SelectQuantityToToss: ; 24fbf
+ ld hl, TossItem_MenuDataHeader
+ call LoadMenuDataHeader
+ call Toss_Sell_Loop
+ ret
+; 24fc9
+
+SelectQuantityToBuy: ; 24fc9
+ callba GetItemPrice
+RooftopSale_SelectQuantityToBuy: ; 24fcf
+ ld a, d
+ ld [Buffer1], a
+ ld a, e
+ ld [Buffer2], a
+ ld hl, BuyItem_MenuDataHeader
+ call LoadMenuDataHeader
+ call Toss_Sell_Loop
+ ret
+; 24fe1
+
+SelectQuantityToSell: ; 24fe1
+ callba GetItemPrice
+ ld a, d
+ ld [Buffer1], a
+ ld a, e
+ ld [Buffer2], a
+ ld hl, SellItem_MenuDataHeader
+ call LoadMenuDataHeader
+ call Toss_Sell_Loop
+ ret
+; 24ff9
+
+Toss_Sell_Loop: ; 24ff9
+ ld a, 1
+ ld [wItemQuantityChangeBuffer], a
+.loop
+ call BuySellToss_UpdateQuantityDisplay ; update display
+ call BuySellToss_InterpretJoypad ; joy action
+ jr nc, .loop
+ cp -1
+ jr nz, .nope ; pressed B
+ scf
+ ret
+
+.nope
+ and a
+ ret
+; 2500e
+
+BuySellToss_InterpretJoypad: ; 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 10
+ 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 10
+ 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
+
+BuySellToss_UpdateQuantityDisplay: ; 25072
+ call MenuBox
+ call MenuBoxCoord2Tile
+ ld de, SCREEN_WIDTH + 1
+ add hl, de
+ ld [hl], "×"
+ 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
+
+ret_25097: ; 25097
+ ret
+; 25098
+
+DisplayPurchasePrice: ; 25098
+ call BuySell_MultiplyPrice
+ call BuySell_DisplaySubtotal
+ ret
+; 2509f
+
+DisplaySellingPrice: ; 2509f
+ call BuySell_MultiplyPrice
+ call Sell_HalvePrice
+ call BuySell_DisplaySubtotal
+ ret
+; 250a9
+
+BuySell_MultiplyPrice: ; 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
+
+Sell_HalvePrice: ; 250c1
+ push hl
+ ld hl, hProduct + 1
+ 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
+
+BuySell_DisplaySubtotal: ; 250d1
+ push hl
+ ld hl, hMoneyTemp
+ ld a, [hProduct + 1]
+ ld [hli], a
+ ld a, [hProduct + 2]
+ ld [hli], a
+ ld a, [hProduct + 3]
+ ld [hl], a
+ pop hl
+ inc hl
+ ld de, hMoneyTemp
+ lb bc, PRINTNUM_MONEY | 3, 6
+ call PrintNum
+ call WaitBGMap
+ ret
+; 250ed
+
+TossItem_MenuDataHeader: ; 0x250ed
+ db $40 ; flags
+ db 09, 15 ; start coords
+ db 11, 19 ; end coords
+ dw ret_25097
+ db 0 ; default option
+; 0x250f5
+
+BuyItem_MenuDataHeader: ; 0x250f5
+ db $40 ; flags
+ db 15, 07 ; start coords
+ db 17, 19 ; end coords
+ dw DisplayPurchasePrice
+ db -1 ; default option
+; 0x250fd
+
+SellItem_MenuDataHeader: ; 0x250fd
+ db $40 ; flags
+ db 15, 07 ; start coords
+ db 17, 19 ; end coords
+ dw DisplaySellingPrice
+ db 0 ; default option
+; 0x25105
diff --git a/engine/card_flip.asm b/engine/card_flip.asm
index df9d895d1..fd55ff06b 100755
--- a/engine/card_flip.asm
+++ b/engine/card_flip.asm
@@ -1,3 +1,7 @@
+CARDFLIP_LIGHT_OFF EQU $ef
+CARDFLIP_LIGHT_ON EQU $f5
+CARDFLIP_DECK_SIZE EQU 4 * 6
+
_CardFlip: ; e00ee (38:40ee)
ld hl, Options
set 4, [hl]
@@ -10,28 +14,30 @@ _CardFlip: ; e00ee (38:40ee)
call DisableLCD
call LoadStandardFont
call LoadFontsExtra
- ld hl, LZ_e0d16
+
+ ld hl, CardFlipLZ01
ld de, VTiles2 tile $00
call Decompress
- ld hl, LZ_e0ea8
+ ld hl, CardFlipLZ02
ld de, VTiles2 tile $3e
call Decompress
- ld hl, LZ_e0cdb
+ ld hl, CardFlipLZ03
ld de, VTiles0 tile $00
call Decompress
- ld hl, GFX_e0cf6
+ ld hl, CardFlipOffButtonGFX
ld de, VTiles1 tile $6f
- ld bc, $10
+ ld bc, 1 tiles
call CopyBytes
- ld hl, GFX_e0d06
+ ld hl, CardFlipOnButtonGFX
ld de, VTiles1 tile $75
- ld bc, $10
+ ld bc, 1 tiles
call CopyBytes
- call Functione0521
- call Functione04c1
- call Functione0c37
+
+ call CardFlip_ShiftDigitsLeftTwoPixels
+ call CardFlip_InitTilemap
+ call CardFlip_InitAttrPals
call EnableLCD
- call Function3200
+ call WaitBGMap2
ld a, $e4
call DmgToCgbBGPals
ld de, $e4e4
@@ -40,8 +46,8 @@ _CardFlip: ; e00ee (38:40ee)
xor a
ld [wJumptableIndex], a
ld a, $2
- ld [wcf64], a
- ld [wcf65], a
+ ld [wCardFlipCursorY], a
+ ld [wCardFlipCursorX], a
ld de, MUSIC_GAME_CORNER
call PlayMusic
.MasterLoop
@@ -75,14 +81,15 @@ endr
; e01a0 (38:41a0)
.Jumptable: ; e01a0
- dw .AskPlayWithThree
- dw .DeductCoins
- dw .ChooseACard
- dw .PlaceYourBet
- dw .CheckTheCard
- dw .TabulateTheResult
- dw .PlayAgain
- dw .Quit
+ jumptable_start
+ jumptable .AskPlayWithThree
+ jumptable .DeductCoins
+ jumptable .ChooseACard
+ jumptable .PlaceYourBet
+ jumptable .CheckTheCard
+ jumptable .TabulateTheResult
+ jumptable .PlayAgain
+ jumptable .Quit
; e01b0
.Increment: ; e01b0
@@ -93,15 +100,15 @@ endr
.AskPlayWithThree: ; e01b5
ld hl, .PlayWithThreeCoinsText
- call Functione0489
+ call CardFlip_UpdateCoinBalanceDisplay
call YesNoBox
jr c, .SaidNo
- call Functione0366
+ call CardFlip_ShuffleDeck
call .Increment
ret
.SaidNo
- ld a, $7
+ ld a, 7 ; .QuitTableIndex
ld [wJumptableIndex], a
ret
; e01cd
@@ -124,8 +131,8 @@ endr
cp 3
jr nc, .deduct ; You have at least 3 coins.
ld hl, .NotEnoughCoinsText
- call Functione0489
- ld a, $7
+ call CardFlip_UpdateCoinBalanceDisplay
+ ld a, 7 ; .QuitTableIndex
ld [wJumptableIndex], a
ret
@@ -140,7 +147,7 @@ endr
call PlaySFX
xor a
ld [hBGMapMode], a
- call Functione049c
+ call CardFlip_PrintCoinBalance
ld a, $1
ld [hBGMapMode], a
call WaitSFX
@@ -159,29 +166,29 @@ endr
ld [hBGMapMode], a
hlcoord 0, 0
lb bc, 12, 9
- call Functione04e5
+ call CardFlip_FillGreenBox
hlcoord 9, 0
ld bc, SCREEN_WIDTH
- ld a, [wc6e8]
+ ld a, [wCardFlipNumCardsPlayed]
call AddNTimes
- ld [hl], $f5
+ ld [hl], CARDFLIP_LIGHT_ON
ld a, $1
ld [hBGMapMode], a
ld c, 20
call DelayFrames
hlcoord 2, 0
- call Functione03c1
+ call PlaceCardFaceDown
ld a, $1
ld [hBGMapMode], a
ld c, 20
call DelayFrames
hlcoord 2, 6
- call Functione03c1
+ call PlaceCardFaceDown
call WaitBGMap
ld hl, .ChooseACardText
- call Functione0489
+ call CardFlip_UpdateCoinBalanceDisplay
xor a
- ld [wcf66], a
+ ld [wCardFlipWhichCard], a
.loop
call JoyTextDelay
ld a, [hJoyLast]
@@ -189,10 +196,10 @@ endr
jr nz, .next
ld de, SFX_KINESIS
call PlaySFX
- call Functione0849
+ call PlaceOAMCardBorder
ld c, 4
call DelayFrames
- ld hl, wcf66
+ ld hl, wCardFlipWhichCard
ld a, [hl]
xor $1
ld [hl], a
@@ -204,7 +211,7 @@ endr
ld a, $3
.loop2
push af
- call Functione0849
+ call PlaceOAMCardBorder
ld c, 4
call DelayFrames
call ClearSprites
@@ -213,16 +220,16 @@ endr
pop af
dec a
jr nz, .loop2
- ld hl, wcf66
+ ld hl, wCardFlipWhichCard
ld a, [hl]
push af
xor $1
ld [hl], a
- call Functione03ac
+ call GetCoordsOfChosenCard
lb bc, 6, 5
- call Functione04e5
+ call CardFlip_FillGreenBox
pop af
- ld [wcf66], a
+ ld [wCardFlipWhichCard], a
call .Increment
ret
; e02b2
@@ -235,14 +242,14 @@ endr
.PlaceYourBet: ; e02b7
ld hl, .PlaceYourBetText
- call Functione0489
+ call CardFlip_UpdateCoinBalanceDisplay
.betloop
call JoyTextDelay
ld a, [hJoyLast]
and A_BUTTON
jr nz, .betdone
- call Functione089c
- call Functione0960
+ call ChooseCard_HandleJoypad
+ call CardFlip_UpdateCursorOAM
call DelayFrame
jr .betloop
@@ -260,36 +267,36 @@ endr
.CheckTheCard: ; e02da
xor a
ld [hVBlankCounter], a
- call Functione0960
+ call CardFlip_UpdateCursorOAM
call WaitSFX
ld de, SFX_CHOOSE_A_CARD
call PlaySFX
call WaitSFX
- ld a, [wc6e8]
+ ld a, [wCardFlipNumCardsPlayed]
ld e, a
ld d, 0
- ld hl, wc6d0
+ ld hl, wDeck
rept 2
add hl, de
endr
- ld a, [wcf66]
+ ld a, [wCardFlipWhichCard]
ld e, a
add hl, de
ld a, [hl]
- ld [CurEnemyMoveNum], a
+ ld [wCardFlipFaceUpCard], a
ld e, a
- ld hl, wc6ea
+ ld hl, wDiscardPile
add hl, de
- ld [hl], $1
- call Functione03ac
- call Functione03ec
- call Function3200
+ ld [hl], TRUE
+ call GetCoordsOfChosenCard
+ call CardFlip_DisplayCardFaceUp
+ call WaitBGMap2
call .Increment
ret
; e0314
.TabulateTheResult: ; e0314
- call Functione0637
+ call CardFlip_CheckWinCondition
call WaitPressAorB_BlinkCursor
call .Increment
ret
@@ -298,31 +305,31 @@ endr
.PlayAgain: ; e031e
call ClearSprites
ld hl, .PlayAgainText
- call Functione0489
+ call CardFlip_UpdateCoinBalanceDisplay
call YesNoBox
jr nc, .Continue
call .Increment
ret
.Continue
- ld a, [wc6e8]
+ ld a, [wCardFlipNumCardsPlayed]
inc a
- ld [wc6e8], a
- cp $c
+ ld [wCardFlipNumCardsPlayed], a
+ cp 12
jr c, .KeepTheCurrentDeck
- call Functione04c1
+ call CardFlip_InitTilemap
ld a, $1
ld [hBGMapMode], a
- call Functione0366
+ call CardFlip_ShuffleDeck
ld hl, .CardsShuffledText
call PrintText
jr .LoopAround
.KeepTheCurrentDeck
- call Functione0534
+ call CardFlip_BlankDiscardedCardSlot
.LoopAround
- ld a, $1
+ ld a, 1 ; .DeductCoinsTableIndex
ld [wJumptableIndex], a
ret
; e0356
@@ -345,73 +352,73 @@ endr
ret
; e0366
-Functione0366: ; e0366
- ld hl, wc6d0
- ld bc, $18
+CardFlip_ShuffleDeck: ; e0366
+ ld hl, wDeck
+ ld bc, CARDFLIP_DECK_SIZE
xor a
call ByteFill
- ld de, wc6d0
- ld c, $17
-.asm_e0375
+ ld de, wDeck
+ ld c, CARDFLIP_DECK_SIZE - 1
+.loop
call Random
and $1f
- cp $18
- jr nc, .asm_e0375
+ cp CARDFLIP_DECK_SIZE
+ jr nc, .loop
ld l, a
ld h, $0
add hl, de
ld a, [hl]
and a
- jr nz, .asm_e0375
+ jr nz, .loop
ld [hl], c
dec c
- jr nz, .asm_e0375
+ jr nz, .loop
xor a
- ld [wc6e8], a
- ld hl, wc6ea
- ld bc, $18
+ ld [wCardFlipNumCardsPlayed], a
+ ld hl, wDiscardPile
+ ld bc, CARDFLIP_DECK_SIZE
call ByteFill
ret
; e0398
-Functione0398: ; e0398
+CollapseCursorPosition: ; e0398
ld hl, 0
ld bc, 6
- ld a, [wcf64]
+ ld a, [wCardFlipCursorY]
call AddNTimes
ld b, $0
- ld a, [wcf65]
+ ld a, [wCardFlipCursorX]
ld c, a
add hl, bc
ret
; e03ac
-Functione03ac: ; e03ac
- ld a, [wcf66]
+GetCoordsOfChosenCard: ; e03ac
+ ld a, [wCardFlipWhichCard]
and a
- jr nz, .asm_e03ba
+ jr nz, .BottomCard
hlcoord 2, 0
- ld bc, $1018
- jr .asm_e03c0
+ bcpixel 2, 3
+ jr .done
-.asm_e03ba
+.BottomCard
hlcoord 2, 6
- ld bc, $4018
+ bcpixel 8, 3
-.asm_e03c0
+.done
ret
; e03c1
-Functione03c1: ; e03c1
+PlaceCardFaceDown: ; e03c1
xor a
ld [hBGMapMode], a
- ld de, Unknown_e03ce
+ ld de, .FaceDownCardTilemap
lb bc, 6, 5
- call Functione04f7
+ call CardFlip_CopyToBox
ret
; e03ce
-Unknown_e03ce: ; e03ce
+.FaceDownCardTilemap: ; e03ce
db $08, $09, $09, $09, $0a
db $0b, $28, $2b, $28, $0c
db $0b, $2c, $2d, $2e, $0c
@@ -420,60 +427,71 @@ Unknown_e03ce: ; e03ce
db $0d, $0e, $0e, $0e, $0f
; e03ec
-Functione03ec: ; e03ec
+CardFlip_DisplayCardFaceUp: ; e03ec
xor a
ld [hBGMapMode], a
push hl
push hl
- ld de, Unknown_e043b
+ ; Flip the card face up.
+ ld de, .FaceUpCardTilemap
lb bc, 6, 5
- call Functione04f7
- ld a, [CurEnemyMoveNum]
+ call CardFlip_CopyToBox
+
+ ; Get the level and species of the upturned card.
+ ld a, [wCardFlipFaceUpCard]
ld e, a
ld d, 0
- ld hl, Unknown_e0459
+ ld hl, .Deck
rept 2
add hl, de
endr
ld a, [hli]
ld e, a
ld d, [hl]
+
+ ; Place the level.
pop hl
- ld bc, $17
+ ld bc, 3 + SCREEN_WIDTH
add hl, bc
ld [hl], e
+
+ ; Place the Pokepic.
ld bc, SCREEN_HEIGHT
add hl, bc
ld a, d
ld de, SCREEN_WIDTH
- ld b, $3
-.asm_e0418
+ ld b, 3
+.row
push hl
- ld c, $3
-.asm_e041b
+ ld c, 3
+.col
ld [hli], a
inc a
dec c
- jr nz, .asm_e041b
+ jr nz, .col
pop hl
add hl, de
dec b
- jr nz, .asm_e0418
+ jr nz, .row
pop hl
+
+ ; Pointless CGB check
ld a, [hCGB]
and a
ret z
+
+ ; Set the attributes
ld de, AttrMap - TileMap
add hl, de
- ld a, [CurEnemyMoveNum]
+ ld a, [wCardFlipFaceUpCard]
and 3
inc a
lb bc, 6, 5
- call Functione04e7
+ call CardFlip_FillBox
ret
; e043b
-Unknown_e043b: ; e043b
+.FaceUpCardTilemap: ; e043b
db $18, $19, $19, $19, $1a
db $1b, $35, $7f, $7f, $1c
db $0b, $28, $28, $28, $0c
@@ -482,34 +500,35 @@ Unknown_e043b: ; e043b
db $1d, $1e, $1e, $1e, $1f
; e0459
-Unknown_e0459: ; e0459
- db $f7,$4e, $f7,$57, $f7,$69, $f7,$60
- db $f8,$4e, $f8,$57, $f8,$69, $f8,$60
- db $f9,$4e, $f9,$57, $f9,$69, $f9,$60
- db $fa,$4e, $fa,$57, $fa,$69, $fa,$60
- db $fb,$4e, $fb,$57, $fb,$69, $fb,$60
- db $fc,$4e, $fc,$57, $fc,$69, $fc,$60
+.Deck: ; e0459
+ ; level, pic anchor (3x3)
+ db "1",$4e, "1",$57, "1",$69, "1",$60
+ db "2",$4e, "2",$57, "2",$69, "2",$60
+ db "3",$4e, "3",$57, "3",$69, "3",$60
+ db "4",$4e, "4",$57, "4",$69, "4",$60
+ db "5",$4e, "5",$57, "5",$69, "5",$60
+ db "6",$4e, "6",$57, "6",$69, "6",$60
; e0489
-Functione0489: ; e0489
+CardFlip_UpdateCoinBalanceDisplay: ; e0489
push hl
hlcoord 0, 12
- ld b, $4
- ld c, $12
+ ld b, 4
+ ld c, SCREEN_WIDTH - 2
call TextBox
pop hl
call PrintTextBoxText
- call Functione049c
+ call CardFlip_PrintCoinBalance
ret
; e049c
-Functione049c: ; e049c
+CardFlip_PrintCoinBalance: ; e049c
hlcoord 9, 15
- ld b, $1
- ld c, $9
+ ld b, 1
+ ld c, 9
call TextBox
hlcoord 10, 16
- ld de, String_e04bc
+ ld de, .CoinStr
call PlaceString
hlcoord 15, 16
ld de, Coins
@@ -518,11 +537,11 @@ Functione049c: ; e049c
ret
; e04bc
-String_e04bc:
+.CoinStr:
db "COIN@"
; e04c1
-Functione04c1: ; e04c1 (38:44c1)
+CardFlip_InitTilemap: ; e04c1 (38:44c1)
xor a
ld [hBGMapMode], a
hlcoord 0, 0
@@ -530,55 +549,57 @@ Functione04c1: ; e04c1 (38:44c1)
ld a, $29
call ByteFill
hlcoord 9, 0
- ld de, Unknown_e110c
+ ld de, CardFlipTilemap
lb bc, 12, 11
- call Functione04f7
+ call CardFlip_CopyToBox
hlcoord 0, 12
lb bc, 4, 18
call TextBox
ret
; e04e5 (38:44e5)
-Functione04e5: ; e04e5
+CardFlip_FillGreenBox: ; e04e5
ld a, $29
-Functione04e7: ; e04e7 (38:44e7)
+CardFlip_FillBox: ; e04e7 (38:44e7)
+.row
push bc
push hl
-.asm_e04e9
+.col
ld [hli], a
dec c
- jr nz, .asm_e04e9
+ jr nz, .col
pop hl
- ld bc, $14
+ ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec b
- jr nz, Functione04e7
+ jr nz, .row
ret
-Functione04f7: ; e04f7 (38:44f7)
+CardFlip_CopyToBox: ; e04f7 (38:44f7)
+.row
push bc
push hl
-.asm_e04f9
+.col
ld a, [de]
inc de
ld [hli], a
dec c
- jr nz, .asm_e04f9
+ jr nz, .col
pop hl
- ld bc, $14
+ ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec b
- jr nz, Functione04f7
+ jr nz, .row
ret
; e0509 (38:4509)
-Functione0509: ; e0509
+CardFlip_CopyOAM: ; e0509
ld de, Sprites
ld a, [hli]
-.asm_e050d
+.loop
push af
ld a, [hli]
add b
@@ -596,38 +617,40 @@ Functione0509: ; e0509
inc de
pop af
dec a
- jr nz, .asm_e050d
+ jr nz, .loop
ret
; e0521
-Functione0521: ; e0521 (38:4521)
- ld de, VTiles1 tile $76
- ld hl, $8f62
- ld bc, $9e
+CardFlip_ShiftDigitsLeftTwoPixels: ; e0521 (38:4521)
+ ld de, VTiles1 tile ("0" & $7f)
+ ld hl, VTiles1 tile ("0" & $7f) + 2
+ ld bc, 10 tiles - 2
call CopyBytes
- ld hl, $8ffe
+ ld hl, VTiles1 tile $7f + 1 tiles - 2
xor a
ld [hli], a
ld [hl], a
ret
; e0534 (38:4534)
-Functione0534: ; e0534
+CardFlip_BlankDiscardedCardSlot: ; e0534
xor a
ld [hBGMapMode], a
- ld a, [CurEnemyMoveNum]
+ ld a, [wCardFlipFaceUpCard]
ld e, a
ld d, 0
- and 3
+
+ and 3 ; get mon
ld c, a
ld b, 0
+
ld a, e
- and $1c
+ and $1c ; get level
srl a
- add Jumptable_e0553 % $100
+ add .Jumptable % $100
ld l, a
ld a, 0
- adc Jumptable_e0553 / $100
+ adc .Jumptable / $100
ld h, a
ld a, [hli]
ld h, [hl]
@@ -635,21 +658,22 @@ Functione0534: ; e0534
jp [hl]
; e0553
-Jumptable_e0553: ; e0553
- dw Functione055f
- dw Functione0583
- dw Functione05a7
- dw Functione05cb
- dw Functione05ef
- dw Functione0613
+.Jumptable: ; e0553
+ jumptable_start
+ jumptable .Level1
+ jumptable .Level2
+ jumptable .Level3
+ jumptable .Level4
+ jumptable .Level5
+ jumptable .Level6
; e055f
-Functione055f: ; e055f
- ld hl, wc6e6 + 8
+.Level1: ; e055f
+ ld hl, wDiscardPile + 4
add hl, de
ld a, [hl]
and a
- jr nz, .asm_e0575
+ jr nz, .discarded2
hlcoord 13, 3
rept 2
add hl, bc
@@ -660,7 +684,7 @@ endr
ld [hl], $37
ret
-.asm_e0575
+.discarded2
hlcoord 13, 3
rept 2
add hl, bc
@@ -672,12 +696,12 @@ endr
ret
; e0583
-Functione0583: ; e0583
- ld hl, wc6e6
+.Level2: ; e0583
+ ld hl, wDiscardPile - 4
add hl, de
ld a, [hl]
and a
- jr nz, .asm_e0599
+ jr nz, .discarded1
hlcoord 13, 4
rept 2
add hl, bc
@@ -688,7 +712,7 @@ endr
ld [hl], $3a
ret
-.asm_e0599
+.discarded1
hlcoord 13, 4
rept 2
add hl, bc
@@ -700,12 +724,12 @@ endr
ret
; e05a7
-Functione05a7: ; e05a7
- ld hl, wc6e6 + 8
+.Level3: ; e05a7
+ ld hl, wDiscardPile + 4
add hl, de
ld a, [hl]
and a
- jr nz, .asm_e05bd
+ jr nz, .discarded4
hlcoord 13, 6
rept 2
add hl, bc
@@ -716,7 +740,7 @@ endr
ld [hl], $38
ret
-.asm_e05bd
+.discarded4
hlcoord 13, 6
rept 2
add hl, bc
@@ -728,12 +752,12 @@ endr
ret
; e05cb
-Functione05cb: ; e05cb
- ld hl, wc6e6
+.Level4: ; e05cb
+ ld hl, wDiscardPile - 4
add hl, de
ld a, [hl]
and a
- jr nz, .asm_e05e1
+ jr nz, .discarded3
hlcoord 13, 7
rept 2
add hl, bc
@@ -744,7 +768,7 @@ endr
ld [hl], $3a
ret
-.asm_e05e1
+.discarded3
hlcoord 13, 7
rept 2
add hl, bc
@@ -756,12 +780,12 @@ endr
ret
; e05ef
-Functione05ef: ; e05ef
- ld hl, wc6e6 + 8
+.Level5: ; e05ef
+ ld hl, wDiscardPile + 4
add hl, de
ld a, [hl]
and a
- jr nz, .asm_e0605
+ jr nz, .discarded6
hlcoord 13, 9
rept 2
add hl, bc
@@ -772,7 +796,7 @@ endr
ld [hl], $39
ret
-.asm_e0605
+.discarded6
hlcoord 13, 9
rept 2
add hl, bc
@@ -784,12 +808,12 @@ endr
ret
; e0613
-Functione0613: ; e0613
- ld hl, wc6e6
+.Level6: ; e0613
+ ld hl, wDiscardPile - 4
add hl, de
ld a, [hl]
and a
- jr nz, .asm_e0629
+ jr nz, .discarded5
hlcoord 13, 10
rept 2
add hl, bc
@@ -800,7 +824,7 @@ endr
ld [hl], $3a
ret
-.asm_e0629
+.discarded5
hlcoord 13, 10
rept 2
add hl, bc
@@ -812,10 +836,10 @@ endr
ret
; e0637
-Functione0637: ; e0637
- call Functione0398
+CardFlip_CheckWinCondition: ; e0637
+ call CollapseCursorPosition
add hl, hl
- ld de, Jumptable_e0643
+ ld de, .Jumptable
add hl, de
ld a, [hli]
ld h, [hl]
@@ -823,335 +847,343 @@ Functione0637: ; e0637
jp [hl]
; e0643
-Jumptable_e0643: ; e0643
- dw Functione06a3
- dw Functione06a3
- dw Functione06a6
- dw Functione06a6
- dw Functione06b0
- dw Functione06b0
- dw Functione06a3
- dw Functione06a3
- dw Functione06ec
- dw Functione06f6
- dw Functione0702
- dw Functione070e
- dw Functione06c2
- dw Functione0722
- dw Functione0770
- dw Functione0774
- dw Functione0778
- dw Functione077c
- dw Functione06c2
- dw Functione072c
- dw Functione0780
- dw Functione0784
- dw Functione0788
- dw Functione078c
- dw Functione06cc
- dw Functione0738
- dw Functione0790
- dw Functione0794
- dw Functione0798
- dw Functione079c
- dw Functione06cc
- dw Functione0744
- dw Functione07a0
- dw Functione07a4
- dw Functione07a8
- dw Functione07ac
- dw Functione06d8
- dw Functione0750
- dw Functione07b0
- dw Functione07b4
- dw Functione07b8
- dw Functione07bc
- dw Functione06d8
- dw Functione075c
- dw Functione07c0
- dw Functione07c4
- dw Functione07c8
- dw Functione07cc
+.Jumptable: ; e0643
+ jumptable_start
+ jumptable .Impossible
+ jumptable .Impossible
+ jumptable .PikaJiggly
+ jumptable .PikaJiggly
+ jumptable .PoliOddish
+ jumptable .PoliOddish
+
+ jumptable .Impossible
+ jumptable .Impossible
+ jumptable .Pikachu
+ jumptable .Jigglypuff
+ jumptable .Poliwag
+ jumptable .Oddish
+
+ jumptable .OneTwo
+ jumptable .One
+ jumptable .PikaOne
+ jumptable .JigglyOne
+ jumptable .PoliOne
+ jumptable .OddOne
+
+ jumptable .OneTwo
+ jumptable .Two
+ jumptable .PikaTwo
+ jumptable .JigglyTwo
+ jumptable .PoliTwo
+ jumptable .OddTwo
+
+ jumptable .ThreeFour
+ jumptable .Three
+ jumptable .PikaThree
+ jumptable .JigglyThree
+ jumptable .PoliThree
+ jumptable .OddThree
+
+ jumptable .ThreeFour
+ jumptable .Four
+ jumptable .PikaFour
+ jumptable .JigglyFour
+ jumptable .PoliFour
+ jumptable .OddFour
+
+ jumptable .FiveSix
+ jumptable .Five
+ jumptable .PikaFive
+ jumptable .JigglyFive
+ jumptable .PoliFive
+ jumptable .OddFive
+
+ jumptable .FiveSix
+ jumptable .Six
+ jumptable .PikaSix
+ jumptable .JigglySix
+ jumptable .PoliSix
+ jumptable .OddSix
; e06a3
-Functione06a3: ; e06a3
- jp Functione07db
+.Impossible: ; e06a3
+ jp .Lose
; e06a6
-Functione06a6: ; e06a6
- ld a, [CurEnemyMoveNum]
+.PikaJiggly: ; e06a6
+ ld a, [wCardFlipFaceUpCard]
and $2
- jp nz, Functione07db
- jr Functione06ba
+ jp nz, .Lose
+ jr .WinSix
-Functione06b0: ; e06b0
- ld a, [CurEnemyMoveNum]
+.PoliOddish: ; e06b0
+ ld a, [wCardFlipFaceUpCard]
and $2
- jr nz, Functione06ba
- jp Functione07db
+ jr nz, .WinSix
+ jp .Lose
-Functione06ba: ; e06ba
+.WinSix: ; e06ba
ld c, $6
ld de, SFX_2ND_PLACE
- jp Functione07eb
+ jp .Payout
; e06c2
-Functione06c2: ; e06c2
- ld a, [CurEnemyMoveNum]
+.OneTwo: ; e06c2
+ ld a, [wCardFlipFaceUpCard]
and $18
- jr z, Functione06e4
- jp Functione07db
+ jr z, .WinNine
+ jp .Lose
-Functione06cc: ; e06cc
- ld a, [CurEnemyMoveNum]
+.ThreeFour: ; e06cc
+ ld a, [wCardFlipFaceUpCard]
and $18
cp $8
- jr z, Functione06e4
- jp Functione07db
+ jr z, .WinNine
+ jp .Lose
-Functione06d8: ; e06d8
- ld a, [CurEnemyMoveNum]
+.FiveSix: ; e06d8
+ ld a, [wCardFlipFaceUpCard]
and $18
cp $10
- jr z, Functione06e4
- jp Functione07db
+ jr z, .WinNine
+ jp .Lose
-Functione06e4: ; e06e4
+.WinNine: ; e06e4
ld c, $9
ld de, SFX_2ND_PLACE
- jp Functione07eb
+ jp .Payout
; e06ec
-Functione06ec: ; e06ec
- ld a, [CurEnemyMoveNum]
+.Pikachu: ; e06ec
+ ld a, [wCardFlipFaceUpCard]
and $3
- jr z, Functione071a
- jp Functione07db
+ jr z, .WinTwelve
+ jp .Lose
-Functione06f6: ; e06f6
- ld a, [CurEnemyMoveNum]
+.Jigglypuff: ; e06f6
+ ld a, [wCardFlipFaceUpCard]
and $3
cp $1
- jr z, Functione071a
- jp Functione07db
+ jr z, .WinTwelve
+ jp .Lose
-Functione0702: ; e0702
- ld a, [CurEnemyMoveNum]
+.Poliwag: ; e0702
+ ld a, [wCardFlipFaceUpCard]
and $3
cp $2
- jr z, Functione071a
- jp Functione07db
+ jr z, .WinTwelve
+ jp .Lose
-Functione070e: ; e070e
- ld a, [CurEnemyMoveNum]
+.Oddish: ; e070e
+ ld a, [wCardFlipFaceUpCard]
and $3
cp $3
- jr z, Functione071a
- jp Functione07db
+ jr z, .WinTwelve
+ jp .Lose
-Functione071a: ; e071a
+.WinTwelve: ; e071a
ld c, $c
ld de, SFX_2ND_PLACE
- jp Functione07eb
+ jp .Payout
; e0722
-Functione0722: ; e0722
- ld a, [CurEnemyMoveNum]
+.One: ; e0722
+ ld a, [wCardFlipFaceUpCard]
and $1c
- jr z, Functione0768
- jp Functione07db
+ jr z, .WinEighteen
+ jp .Lose
-Functione072c: ; e072c
- ld a, [CurEnemyMoveNum]
+.Two: ; e072c
+ ld a, [wCardFlipFaceUpCard]
and $1c
cp $4
- jr z, Functione0768
- jp Functione07db
+ jr z, .WinEighteen
+ jp .Lose
-Functione0738: ; e0738
- ld a, [CurEnemyMoveNum]
+.Three: ; e0738
+ ld a, [wCardFlipFaceUpCard]
and $1c
cp $8
- jr z, Functione0768
- jp Functione07db
+ jr z, .WinEighteen
+ jp .Lose
-Functione0744: ; e0744
- ld a, [CurEnemyMoveNum]
+.Four: ; e0744
+ ld a, [wCardFlipFaceUpCard]
and $1c
cp $c
- jr z, Functione0768
- jp Functione07db
+ jr z, .WinEighteen
+ jp .Lose
-Functione0750: ; e0750
- ld a, [CurEnemyMoveNum]
+.Five: ; e0750
+ ld a, [wCardFlipFaceUpCard]
and $1c
cp $10
- jr z, Functione0768
- jp Functione07db
+ jr z, .WinEighteen
+ jp .Lose
-Functione075c: ; e075c
- ld a, [CurEnemyMoveNum]
+.Six: ; e075c
+ ld a, [wCardFlipFaceUpCard]
and $1c
cp $14
- jr z, Functione0768
- jp Functione07db
+ jr z, .WinEighteen
+ jp .Lose
-Functione0768: ; e0768
+.WinEighteen: ; e0768
ld c, $12
ld de, SFX_2ND_PLACE
- jp Functione07eb
+ jp .Payout
; e0770
-Functione0770: ; e0770
+.PikaOne: ; e0770
ld e, $0
- jr Functione07ce
+ jr .CheckWin72
-Functione0774: ; e0774
+.JigglyOne: ; e0774
ld e, $1
- jr Functione07ce
+ jr .CheckWin72
-Functione0778: ; e0778
+.PoliOne: ; e0778
ld e, $2
- jr Functione07ce
+ jr .CheckWin72
-Functione077c: ; e077c
+.OddOne: ; e077c
ld e, $3
- jr Functione07ce
+ jr .CheckWin72
-Functione0780: ; e0780
+.PikaTwo: ; e0780
ld e, $4
- jr Functione07ce
+ jr .CheckWin72
-Functione0784: ; e0784
+.JigglyTwo: ; e0784
ld e, $5
- jr Functione07ce
+ jr .CheckWin72
-Functione0788: ; e0788
+.PoliTwo: ; e0788
ld e, $6
- jr Functione07ce
+ jr .CheckWin72
-Functione078c: ; e078c
+.OddTwo: ; e078c
ld e, $7
- jr Functione07ce
+ jr .CheckWin72
-Functione0790: ; e0790
+.PikaThree: ; e0790
ld e, $8
- jr Functione07ce
+ jr .CheckWin72
-Functione0794: ; e0794
+.JigglyThree: ; e0794
ld e, $9
- jr Functione07ce
+ jr .CheckWin72
-Functione0798: ; e0798
+.PoliThree: ; e0798
ld e, $a
- jr Functione07ce
+ jr .CheckWin72
-Functione079c: ; e079c
+.OddThree: ; e079c
ld e, $b
- jr Functione07ce
+ jr .CheckWin72
-Functione07a0: ; e07a0
+.PikaFour: ; e07a0
ld e, $c
- jr Functione07ce
+ jr .CheckWin72
-Functione07a4: ; e07a4
+.JigglyFour: ; e07a4
ld e, $d
- jr Functione07ce
+ jr .CheckWin72
-Functione07a8: ; e07a8
+.PoliFour: ; e07a8
ld e, $e
- jr Functione07ce
+ jr .CheckWin72
-Functione07ac: ; e07ac
+.OddFour: ; e07ac
ld e, $f
- jr Functione07ce
+ jr .CheckWin72
-Functione07b0: ; e07b0
+.PikaFive: ; e07b0
ld e, $10
- jr Functione07ce
+ jr .CheckWin72
-Functione07b4: ; e07b4
+.JigglyFive: ; e07b4
ld e, $11
- jr Functione07ce
+ jr .CheckWin72
-Functione07b8: ; e07b8
+.PoliFive: ; e07b8
ld e, $12
- jr Functione07ce
+ jr .CheckWin72
-Functione07bc: ; e07bc
+.OddFive: ; e07bc
ld e, $13
- jr Functione07ce
+ jr .CheckWin72
-Functione07c0: ; e07c0
+.PikaSix: ; e07c0
ld e, $14
- jr Functione07ce
+ jr .CheckWin72
-Functione07c4: ; e07c4
+.JigglySix: ; e07c4
ld e, $15
- jr Functione07ce
+ jr .CheckWin72
-Functione07c8: ; e07c8
+.PoliSix: ; e07c8
ld e, $16
- jr Functione07ce
+ jr .CheckWin72
-Functione07cc: ; e07cc
+.OddSix: ; e07cc
ld e, $17
-Functione07ce: ; e07ce
- ld a, [CurEnemyMoveNum]
+.CheckWin72: ; e07ce
+ ld a, [wCardFlipFaceUpCard]
cp e
- jr nz, Functione07db
- ld c, $48
+ jr nz, .Lose
+ ld c, 72
ld de, SFX_2ND_PLACE
- jr Functione07eb
+ jr .Payout
-Functione07db: ; e07db
+.Lose: ; e07db
ld de, SFX_WRONG
call PlaySFX
- ld hl, UnknownText_0xe0816
- call Functione0489
+ ld hl, .Text_Darn
+ call CardFlip_UpdateCoinBalanceDisplay
call WaitSFX
ret
-Functione07eb: ; e07eb
+.Payout: ; e07eb
push bc
push de
- ld hl, UnknownText_0xe0811
- call Functione0489
+ ld hl, .Text_Yeah
+ call CardFlip_UpdateCoinBalanceDisplay
pop de
call PlaySFX
call WaitSFX
pop bc
-.asm_e07fb
+.loop
push bc
- call Functione0833
- jr c, .asm_e0804
- call Functione081b
+ call .IsCoinCaseFull
+ jr c, .full
+ call .AddCoinPlaySFX
-.asm_e0804
- call Functione049c
+.full
+ call CardFlip_PrintCoinBalance
ld c, 2
call DelayFrames
pop bc
dec c
- jr nz, .asm_e07fb
+ jr nz, .loop
ret
; e0811
-UnknownText_0xe0811: ; 0xe0811
+.Text_Yeah: ; 0xe0811
; Yeah!
text_jump UnknownText_0x1c5813
db "@"
; 0xe0816
-UnknownText_0xe0816: ; 0xe0816
+.Text_Darn: ; 0xe0816
; Darn…
text_jump UnknownText_0x1c581a
db "@"
; 0xe081b
-Functione081b: ; e081b
+.AddCoinPlaySFX: ; e081b
ld a, [Coins]
ld h, a
ld a, [Coins + 1]
@@ -1166,124 +1198,129 @@ Functione081b: ; e081b
ret
; e0833
-Functione0833: ; e0833
+.IsCoinCaseFull: ; e0833
ld a, [Coins]
cp 9999 / $100
- jr c, .asm_e0847
- jr z, .asm_e083e
- jr .asm_e0845
+ jr c, .less
+ jr z, .check_low
+ jr .more
-.asm_e083e
+.check_low
ld a, [Coins + 1]
cp 9999 % $100
- jr c, .asm_e0847
+ jr c, .less
-.asm_e0845
+.more
scf
ret
-.asm_e0847
+.less
and a
ret
; e0849
-Functione0849: ; e0849
- call Functione03ac
- ld hl, Unknown_e0853
- call Functione0509
+PlaceOAMCardBorder: ; e0849
+ call GetCoordsOfChosenCard
+ ld hl, .SpriteData
+ call CardFlip_CopyOAM
ret
; e0853
-Unknown_e0853: ; e0853
+.SpriteData: ; e0853
db 18
- db $00, $00, $04, $00
- db $00, $08, $06, $00
- db $00, $10, $06, $00
- db $00, $18, $06, $00
- db $00, $20, $04, $20
- db $08, $00, $05, $00
- db $08, $20, $05, $20
- db $10, $00, $05, $00
- db $10, $20, $05, $20
- db $18, $00, $05, $00
- db $18, $20, $05, $20
- db $20, $00, $05, $00
- db $20, $20, $05, $20
- db $28, $00, $04, $40
- db $28, $08, $06, $40
- db $28, $10, $06, $40
- db $28, $18, $06, $40
- db $28, $20, $04, $60
+ dsprite 0, 0, 0, 0, $04, $00
+ dsprite 0, 0, 1, 0, $06, $00
+ dsprite 0, 0, 2, 0, $06, $00
+ dsprite 0, 0, 3, 0, $06, $00
+ dsprite 0, 0, 4, 0, $04, $20
+
+ dsprite 1, 0, 0, 0, $05, $00
+ dsprite 1, 0, 4, 0, $05, $20
+
+ dsprite 2, 0, 0, 0, $05, $00
+ dsprite 2, 0, 4, 0, $05, $20
+
+ dsprite 3, 0, 0, 0, $05, $00
+ dsprite 3, 0, 4, 0, $05, $20
+
+ dsprite 4, 0, 0, 0, $05, $00
+ dsprite 4, 0, 4, 0, $05, $20
+
+ dsprite 5, 0, 0, 0, $04, $40
+ dsprite 5, 0, 1, 0, $06, $40
+ dsprite 5, 0, 2, 0, $06, $40
+ dsprite 5, 0, 3, 0, $06, $40
+ dsprite 5, 0, 4, 0, $04, $60
; e089c
-Functione089c: ; e089c
+ChooseCard_HandleJoypad: ; e089c
ld hl, hJoyLast
ld a, [hl]
and D_LEFT
- jp nz, Functione08b8
+ jp nz, .d_left
ld a, [hl]
and D_RIGHT
- jp nz, Functione08ef
+ jp nz, .d_right
ld a, [hl]
and D_UP
- jp nz, Functione090a
+ jp nz, .d_up
ld a, [hl]
and D_DOWN
- jp nz, Functione093d
+ jp nz, .d_down
ret
; e08b8
-Functione08b8: ; e08b8
- ld hl, wcf65
- ld a, [wcf64]
+.d_left: ; e08b8
+ ld hl, wCardFlipCursorX
+ ld a, [wCardFlipCursorY]
and a
- jr z, .asm_e08d5
+ jr z, .mon_pair_left
cp $1
- jr z, .asm_e08cc
+ jr z, .mon_group_left
ld a, [hl]
and a
ret z
dec [hl]
- jp Functione0959
+ jp .play_sound
-.asm_e08cc
+.mon_group_left
ld a, [hl]
cp $3
- jr c, .asm_e08e2
+ jr c, .left_to_number_gp
dec [hl]
- jp Functione0959
+ jp .play_sound
-.asm_e08d5
+.mon_pair_left
ld a, [hl]
and $e
ld [hl], a
cp $3
- jr c, .asm_e08e2
+ jr c, .left_to_number_gp
rept 2
dec [hl]
endr
- jp Functione0959
+ jp .play_sound
-.asm_e08e2
+.left_to_number_gp
ld a, $2
- ld [wcf64], a
+ ld [wCardFlipCursorY], a
ld a, $1
- ld [wcf65], a
- jp Functione0959
+ ld [wCardFlipCursorX], a
+ jp .play_sound
; e08ef
-Functione08ef: ; e08ef
- ld hl, wcf65
- ld a, [wcf64]
+.d_right: ; e08ef
+ ld hl, wCardFlipCursorX
+ ld a, [wCardFlipCursorY]
and a
- jr z, .asm_e08ff
+ jr z, .mon_pair_right
ld a, [hl]
cp $5
ret nc
inc [hl]
- jr Functione0959
+ jr .play_sound
-.asm_e08ff
+.mon_pair_right
ld a, [hl]
and $e
ld [hl], a
@@ -1292,59 +1329,59 @@ Functione08ef: ; e08ef
rept 2
inc [hl]
endr
- jr Functione0959
+ jr .play_sound
-Functione090a: ; e090a
- ld hl, wcf64
- ld a, [wcf65]
+.d_up: ; e090a
+ ld hl, wCardFlipCursorY
+ ld a, [wCardFlipCursorX]
and a
- jr z, .asm_e0925
+ jr z, .num_pair_up
cp $1
- jr z, .asm_e091d
+ jr z, .num_gp_up
ld a, [hl]
and a
ret z
dec [hl]
- jr Functione0959
+ jr .play_sound
-.asm_e091d
+.num_gp_up
ld a, [hl]
cp $3
- jr c, .asm_e0931
+ jr c, .up_to_mon_group
dec [hl]
- jr Functione0959
+ jr .play_sound
-.asm_e0925
+.num_pair_up
ld a, [hl]
and $e
ld [hl], a
cp $3
- jr c, .asm_e0931
+ jr c, .up_to_mon_group
rept 2
dec [hl]
endr
- jr Functione0959
+ jr .play_sound
-.asm_e0931
+.up_to_mon_group
ld a, $1
- ld [wcf64], a
+ ld [wCardFlipCursorY], a
ld a, $2
- ld [wcf65], a
- jr Functione0959
+ ld [wCardFlipCursorX], a
+ jr .play_sound
-Functione093d: ; e093d
- ld hl, wcf64
- ld a, [wcf65]
+.d_down: ; e093d
+ ld hl, wCardFlipCursorY
+ ld a, [wCardFlipCursorX]
and a
- jr z, .asm_e0950
- ld hl, wcf64
+ jr z, .num_pair_down
+ ld hl, wCardFlipCursorY
ld a, [hl]
cp $7
ret nc
inc [hl]
- jr Functione0959
+ jr .play_sound
-.asm_e0950
+.num_pair_down
ld a, [hl]
and $e
ld [hl], a
@@ -1354,27 +1391,27 @@ rept 2
inc [hl]
endr
-Functione0959: ; e0959
+.play_sound: ; e0959
ld de, SFX_POKEBALLS_PLACED_ON_TABLE
call PlaySFX
ret
; e0960
-Functione0960: ; e0960
+CardFlip_UpdateCursorOAM: ; e0960
call ClearSprites
ld a, [hCGB]
and a
- jr nz, .asm_e096d
+ jr nz, .skip
ld a, [hVBlankCounter]
and $4
ret nz
-.asm_e096d
- call Functione0398
+.skip
+ call CollapseCursorPosition
rept 2
add hl, hl
endr
- ld de, Unknown_e0981
+ ld de, .OAMData
add hl, de
ld a, [hli]
ld c, a
@@ -1383,253 +1420,271 @@ endr
ld a, [hli]
ld h, [hl]
ld l, a
- call Functione0509
+ call CardFlip_CopyOAM
ret
; e0981
-Unknown_e0981: ; e0981
- dbbw $58, $10, Unknown_e0c26
- dbbw $60, $10, Unknown_e0c26
- dbbw $68, $10, Unknown_e0b8d
- dbbw $68, $10, Unknown_e0b8d
- dbbw $88, $10, Unknown_e0b8d
- dbbw $88, $10, Unknown_e0b8d
-
- dbbw $58, $18, Unknown_e0c26
- dbbw $60, $18, Unknown_e0c26
- dbbw $68, $18, Unknown_e0a5a
- dbbw $78, $18, Unknown_e0a5a
- dbbw $88, $18, Unknown_e0a5a
- dbbw $98, $18, Unknown_e0a5a
-
- dbbw $58, $28, Unknown_e0b14
- dbbw $60, $28, Unknown_e0ac3
- dbbw $68, $28, Unknown_e0a41
- dbbw $78, $28, Unknown_e0a41
- dbbw $88, $28, Unknown_e0a41
- dbbw $98, $28, Unknown_e0a41
- dbbw $58, $28, Unknown_e0b14
-
- dbbw $60, $34, Unknown_e0ac3
- dbbw $68, $34, Unknown_e0a41
- dbbw $78, $34, Unknown_e0a41
- dbbw $88, $34, Unknown_e0a41
- dbbw $98, $34, Unknown_e0a41
-
- dbbw $58, $40, Unknown_e0b14
- dbbw $60, $40, Unknown_e0ac3
- dbbw $68, $40, Unknown_e0a41
- dbbw $78, $40, Unknown_e0a41
- dbbw $88, $40, Unknown_e0a41
- dbbw $98, $40, Unknown_e0a41
- dbbw $58, $40, Unknown_e0b14
-
- dbbw $60, $4c, Unknown_e0ac3
- dbbw $68, $4c, Unknown_e0a41
- dbbw $78, $4c, Unknown_e0a41
- dbbw $88, $4c, Unknown_e0a41
- dbbw $98, $4c, Unknown_e0a41
-
- dbbw $58, $58, Unknown_e0b14
- dbbw $60, $58, Unknown_e0ac3
- dbbw $68, $58, Unknown_e0a41
- dbbw $78, $58, Unknown_e0a41
- dbbw $88, $58, Unknown_e0a41
- dbbw $98, $58, Unknown_e0a41
- dbbw $58, $58, Unknown_e0b14
-
- dbbw $60, $64, Unknown_e0ac3
- dbbw $68, $64, Unknown_e0a41
- dbbw $78, $64, Unknown_e0a41
- dbbw $88, $64, Unknown_e0a41
- dbbw $98, $64, Unknown_e0a41
+.OAMData: ; e0981
+cardflip_cursor: MACRO
+if _NARG >= 5
+ dbpixel \1, \2, \3, \4
+ dw \5
+else
+ dbpixel \1, \2
+ dw \3
+endc
+endm
+
+
+ cardflip_cursor 11, 2, .Impossible
+ cardflip_cursor 12, 2, .Impossible
+ cardflip_cursor 13, 2, .PokeGroupPair
+ cardflip_cursor 13, 2, .PokeGroupPair
+ cardflip_cursor 17, 2, .PokeGroupPair
+ cardflip_cursor 17, 2, .PokeGroupPair
+
+ cardflip_cursor 11, 3, .Impossible
+ cardflip_cursor 12, 3, .Impossible
+ cardflip_cursor 13, 3, .PokeGroup
+ cardflip_cursor 15, 3, .PokeGroup
+ cardflip_cursor 17, 3, .PokeGroup
+ cardflip_cursor 19, 3, .PokeGroup
+
+ cardflip_cursor 11, 5, .NumGroupPair
+ cardflip_cursor 12, 5, .NumGroup
+ cardflip_cursor 13, 5, .SingleTile
+ cardflip_cursor 15, 5, .SingleTile
+ cardflip_cursor 17, 5, .SingleTile
+ cardflip_cursor 19, 5, .SingleTile
+
+ cardflip_cursor 11, 5, .NumGroupPair
+ cardflip_cursor 12, 6, 0, 4, .NumGroup
+ cardflip_cursor 13, 6, 0, 4, .SingleTile
+ cardflip_cursor 15, 6, 0, 4, .SingleTile
+ cardflip_cursor 17, 6, 0, 4, .SingleTile
+ cardflip_cursor 19, 6, 0, 4, .SingleTile
+
+ cardflip_cursor 11, 8, .NumGroupPair
+ cardflip_cursor 12, 8, .NumGroup
+ cardflip_cursor 13, 8, .SingleTile
+ cardflip_cursor 15, 8, .SingleTile
+ cardflip_cursor 17, 8, .SingleTile
+ cardflip_cursor 19, 8, .SingleTile
+
+ cardflip_cursor 11, 8, .NumGroupPair
+ cardflip_cursor 12, 9, 0, 4, .NumGroup
+ cardflip_cursor 13, 9, 0, 4, .SingleTile
+ cardflip_cursor 15, 9, 0, 4, .SingleTile
+ cardflip_cursor 17, 9, 0, 4, .SingleTile
+ cardflip_cursor 19, 9, 0, 4, .SingleTile
+
+ cardflip_cursor 11, 11, .NumGroupPair
+ cardflip_cursor 12, 11, .NumGroup
+ cardflip_cursor 13, 11, .SingleTile
+ cardflip_cursor 15, 11, .SingleTile
+ cardflip_cursor 17, 11, .SingleTile
+ cardflip_cursor 19, 11, .SingleTile
+
+ cardflip_cursor 11, 11, .NumGroupPair
+ cardflip_cursor 12, 12, 0, 4, .NumGroup
+ cardflip_cursor 13, 12, 0, 4, .SingleTile
+ cardflip_cursor 15, 12, 0, 4, .SingleTile
+ cardflip_cursor 17, 12, 0, 4, .SingleTile
+ cardflip_cursor 19, 12, 0, 4, .SingleTile
; e0a41
-Unknown_e0a41: ; e0a41
+.SingleTile: ; e0a41
db 6
- db $00, $ff, $00, $80
- db $00, $00, $02, $80
- db $00, $08, $03, $80
- db $05, $ff, $00, $c0
- db $05, $00, $02, $c0
- db $05, $08, $03, $80
-
-Unknown_e0a5a: ; e0a5a
+ dsprite 0, 0, -1, 7, $00, $80
+ dsprite 0, 0, 0, 0, $02, $80
+ dsprite 0, 0, 1, 0, $03, $80
+ dsprite 0, 5, -1, 7, $00, $c0
+ dsprite 0, 5, 0, 0, $02, $c0
+ dsprite 0, 5, 1, 0, $03, $80
+
+.PokeGroup: ; e0a5a
db 26
- db $00, $ff, $00, $80
- db $00, $00, $02, $80
- db $00, $08, $00, $a0
- db $08, $ff, $01, $80
- db $08, $08, $01, $a0
- db $10, $ff, $01, $80
- db $10, $08, $03, $80
- db $18, $ff, $01, $80
- db $18, $08, $03, $80
- db $20, $ff, $01, $80
- db $20, $08, $03, $80
- db $28, $ff, $01, $80
- db $28, $08, $03, $80
- db $30, $ff, $01, $80
- db $30, $08, $03, $80
- db $38, $ff, $01, $80
- db $38, $08, $03, $80
- db $40, $ff, $01, $80
- db $40, $08, $03, $80
- db $48, $ff, $01, $80
- db $48, $08, $03, $80
- db $50, $ff, $01, $80
- db $50, $08, $03, $80
- db $51, $ff, $00, $c0
- db $51, $00, $02, $c0
- db $51, $08, $03, $80
-
-Unknown_e0ac3: ; e0ac3
+ dsprite 0, 0, -1, 7, $00, $80
+ dsprite 0, 0, 0, 0, $02, $80
+ dsprite 0, 0, 1, 0, $00, $a0
+ dsprite 1, 0, -1, 7, $01, $80
+ dsprite 1, 0, 1, 0, $01, $a0
+ dsprite 2, 0, -1, 7, $01, $80
+ dsprite 2, 0, 1, 0, $03, $80
+ dsprite 3, 0, -1, 7, $01, $80
+ dsprite 3, 0, 1, 0, $03, $80
+ dsprite 4, 0, -1, 7, $01, $80
+ dsprite 4, 0, 1, 0, $03, $80
+ dsprite 5, 0, -1, 7, $01, $80
+ dsprite 5, 0, 1, 0, $03, $80
+ dsprite 6, 0, -1, 7, $01, $80
+ dsprite 6, 0, 1, 0, $03, $80
+ dsprite 7, 0, -1, 7, $01, $80
+ dsprite 7, 0, 1, 0, $03, $80
+ dsprite 8, 0, -1, 7, $01, $80
+ dsprite 8, 0, 1, 0, $03, $80
+ dsprite 9, 0, -1, 7, $01, $80
+ dsprite 9, 0, 1, 0, $03, $80
+ dsprite 10, 0, -1, 7, $01, $80
+ dsprite 10, 0, 1, 0, $03, $80
+ dsprite 10, 1, -1, 7, $00, $c0
+ dsprite 10, 1, 0, 0, $02, $c0
+ dsprite 10, 1, 1, 0, $03, $80
+
+.NumGroup: ; e0ac3
db 20
- db $00, $ff, $00, $80
- db $00, $00, $02, $80
- db $00, $08, $02, $80
- db $00, $10, $03, $80
- db $00, $18, $02, $80
- db $00, $20, $03, $80
- db $00, $28, $02, $80
- db $00, $30, $03, $80
- db $00, $38, $02, $80
- db $00, $40, $03, $80
- db $05, $ff, $00, $c0
- db $05, $00, $02, $c0
- db $05, $08, $02, $c0
- db $05, $10, $03, $80
- db $05, $18, $02, $c0
- db $05, $20, $03, $80
- db $05, $28, $02, $c0
- db $05, $30, $03, $80
- db $05, $38, $02, $c0
- db $05, $40, $03, $80
-
-Unknown_e0b14: ; e0b14
+ dsprite 0, 0, -1, 7, $00, $80
+ dsprite 0, 0, 0, 0, $02, $80
+ dsprite 0, 0, 1, 0, $02, $80
+ dsprite 0, 0, 2, 0, $03, $80
+ dsprite 0, 0, 3, 0, $02, $80
+ dsprite 0, 0, 4, 0, $03, $80
+ dsprite 0, 0, 5, 0, $02, $80
+ dsprite 0, 0, 6, 0, $03, $80
+ dsprite 0, 0, 7, 0, $02, $80
+ dsprite 0, 0, 8, 0, $03, $80
+ dsprite 0, 5, -1, 7, $00, $c0
+ dsprite 0, 5, 0, 0, $02, $c0
+ dsprite 0, 5, 1, 0, $02, $c0
+ dsprite 0, 5, 2, 0, $03, $80
+ dsprite 0, 5, 3, 0, $02, $c0
+ dsprite 0, 5, 4, 0, $03, $80
+ dsprite 0, 5, 5, 0, $02, $c0
+ dsprite 0, 5, 6, 0, $03, $80
+ dsprite 0, 5, 7, 0, $02, $c0
+ dsprite 0, 5, 8, 0, $03, $80
+
+.NumGroupPair: ; e0b14
db 30
- db $00, $00, $00, $80
- db $00, $08, $02, $80
- db $00, $10, $02, $80
- db $00, $18, $03, $80
- db $00, $20, $02, $80
- db $00, $28, $03, $80
- db $00, $30, $02, $80
- db $00, $38, $03, $80
- db $00, $40, $02, $80
- db $00, $48, $03, $80
- db $08, $00, $01, $80
- db $08, $18, $03, $80
- db $08, $28, $03, $80
- db $08, $38, $03, $80
- db $08, $48, $03, $80
- db $10, $00, $01, $80
- db $10, $18, $03, $80
- db $10, $28, $03, $80
- db $10, $38, $03, $80
- db $10, $48, $03, $80
- db $11, $00, $00, $c0
- db $11, $08, $02, $c0
- db $11, $10, $02, $c0
- db $11, $18, $03, $80
- db $11, $20, $03, $80
- db $11, $28, $03, $80
- db $11, $30, $03, $80
- db $11, $38, $03, $80
- db $11, $40, $03, $80
- db $11, $48, $03, $80
-
-Unknown_e0b8d: ; e0b8d
+ dsprite 0, 0, 0, 0, $00, $80
+ dsprite 0, 0, 1, 0, $02, $80
+ dsprite 0, 0, 2, 0, $02, $80
+ dsprite 0, 0, 3, 0, $03, $80
+ dsprite 0, 0, 4, 0, $02, $80
+ dsprite 0, 0, 5, 0, $03, $80
+ dsprite 0, 0, 6, 0, $02, $80
+ dsprite 0, 0, 7, 0, $03, $80
+ dsprite 0, 0, 8, 0, $02, $80
+ dsprite 0, 0, 9, 0, $03, $80
+ dsprite 1, 0, 0, 0, $01, $80
+ dsprite 1, 0, 3, 0, $03, $80
+ dsprite 1, 0, 5, 0, $03, $80
+ dsprite 1, 0, 7, 0, $03, $80
+ dsprite 1, 0, 9, 0, $03, $80
+ dsprite 2, 0, 0, 0, $01, $80
+ dsprite 2, 0, 3, 0, $03, $80
+ dsprite 2, 0, 5, 0, $03, $80
+ dsprite 2, 0, 7, 0, $03, $80
+ dsprite 2, 0, 9, 0, $03, $80
+ dsprite 2, 1, 0, 0, $00, $c0
+ dsprite 2, 1, 1, 0, $02, $c0
+ dsprite 2, 1, 2, 0, $02, $c0
+ dsprite 2, 1, 3, 0, $03, $80
+ dsprite 2, 1, 4, 0, $03, $80
+ dsprite 2, 1, 5, 0, $03, $80
+ dsprite 2, 1, 6, 0, $03, $80
+ dsprite 2, 1, 7, 0, $03, $80
+ dsprite 2, 1, 8, 0, $03, $80
+ dsprite 2, 1, 9, 0, $03, $80
+
+.PokeGroupPair: ; e0b8d
db 38
- db $00, $ff, $00, $80
- db $00, $18, $00, $a0
- db $08, $ff, $01, $80
- db $08, $18, $01, $a0
- db $10, $ff, $01, $80
- db $10, $18, $01, $a0
- db $18, $ff, $01, $80
- db $18, $08, $03, $80
- db $18, $18, $03, $80
- db $20, $ff, $01, $80
- db $20, $08, $03, $80
- db $20, $18, $03, $80
- db $28, $ff, $01, $80
- db $28, $08, $03, $80
- db $28, $18, $03, $80
- db $30, $ff, $01, $80
- db $30, $08, $03, $80
- db $30, $18, $03, $80
- db $38, $ff, $01, $80
- db $38, $08, $03, $80
- db $38, $18, $03, $80
- db $40, $ff, $01, $80
- db $40, $08, $03, $80
- db $40, $18, $03, $80
- db $48, $ff, $01, $80
- db $48, $08, $03, $80
- db $48, $18, $03, $80
- db $50, $ff, $01, $80
- db $50, $08, $03, $80
- db $50, $18, $03, $80
- db $58, $ff, $01, $80
- db $58, $08, $03, $80
- db $58, $18, $03, $80
- db $59, $ff, $00, $c0
- db $59, $00, $02, $c0
- db $59, $08, $03, $c0
- db $59, $10, $02, $c0
- db $59, $18, $03, $e0
-
-Unknown_e0c26: ; e0c26
+ dsprite 0, 0, -1, 7, $00, $80
+ dsprite 0, 0, 3, 0, $00, $a0
+ dsprite 1, 0, -1, 7, $01, $80
+ dsprite 1, 0, 3, 0, $01, $a0
+ dsprite 2, 0, -1, 7, $01, $80
+ dsprite 2, 0, 3, 0, $01, $a0
+ dsprite 3, 0, -1, 7, $01, $80
+ dsprite 3, 0, 1, 0, $03, $80
+ dsprite 3, 0, 3, 0, $03, $80
+ dsprite 4, 0, -1, 7, $01, $80
+ dsprite 4, 0, 1, 0, $03, $80
+ dsprite 4, 0, 3, 0, $03, $80
+ dsprite 5, 0, -1, 7, $01, $80
+ dsprite 5, 0, 1, 0, $03, $80
+ dsprite 5, 0, 3, 0, $03, $80
+ dsprite 6, 0, -1, 7, $01, $80
+ dsprite 6, 0, 1, 0, $03, $80
+ dsprite 6, 0, 3, 0, $03, $80
+ dsprite 7, 0, -1, 7, $01, $80
+ dsprite 7, 0, 1, 0, $03, $80
+ dsprite 7, 0, 3, 0, $03, $80
+ dsprite 8, 0, -1, 7, $01, $80
+ dsprite 8, 0, 1, 0, $03, $80
+ dsprite 8, 0, 3, 0, $03, $80
+ dsprite 9, 0, -1, 7, $01, $80
+ dsprite 9, 0, 1, 0, $03, $80
+ dsprite 9, 0, 3, 0, $03, $80
+ dsprite 10, 0, -1, 7, $01, $80
+ dsprite 10, 0, 1, 0, $03, $80
+ dsprite 10, 0, 3, 0, $03, $80
+ dsprite 11, 0, -1, 7, $01, $80
+ dsprite 11, 0, 1, 0, $03, $80
+ dsprite 11, 0, 3, 0, $03, $80
+ dsprite 11, 1, -1, 7, $00, $c0
+ dsprite 11, 1, 0, 0, $02, $c0
+ dsprite 11, 1, 1, 0, $03, $c0
+ dsprite 11, 1, 2, 0, $02, $c0
+ dsprite 11, 1, 3, 0, $03, $e0
+
+.Impossible: ; e0c26
db 4
- db $00, $00, $00, $80
- db $00, $08, $00, $a0
- db $08, $00, $00, $c0
- db $08, $08, $00, $e0
+ dsprite 0, 0, 0, 0, $00, $80
+ dsprite 0, 0, 1, 0, $00, $a0
+ dsprite 1, 0, 0, 0, $00, $c0
+ dsprite 1, 0, 1, 0, $00, $e0
; e0c37
-Functione0c37: ; e0c37 (38:4c37)
+CardFlip_InitAttrPals: ; e0c37 (38:4c37)
ld a, [hCGB]
and a
ret z
+
hlcoord 0, 0, AttrMap
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
xor a
call ByteFill
+
hlcoord 12, 1, AttrMap
lb bc, 2, 2
ld a, $1
- call Functione04e7
+ call CardFlip_FillBox
+
hlcoord 14, 1, AttrMap
lb bc, 2, 2
ld a, $2
- call Functione04e7
+ call CardFlip_FillBox
+
hlcoord 16, 1, AttrMap
lb bc, 2, 2
ld a, $3
- call Functione04e7
+ call CardFlip_FillBox
+
hlcoord 18, 1, AttrMap
lb bc, 2, 2
ld a, $4
- call Functione04e7
+ call CardFlip_FillBox
+
hlcoord 9, 0, AttrMap
lb bc, 12, 1
ld a, $1
- call Functione04e7
+ call CardFlip_FillBox
+
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
- ld hl, Palette_e0c93
+ ld hl, .palettes
ld de, UnknBGPals
- ld bc, $48
+ ld bc, 9 palettes
call CopyBytes
pop af
ld [rSVBK], a
ret
; e0c93 (38:4c93)
-Palette_e0c93: ; e0c93
+.palettes: ; e0c93
RGB 31, 31, 31
RGB 17, 07, 31
RGB 06, 19, 08
@@ -1676,22 +1731,22 @@ Palette_e0c93: ; e0c93
RGB 31, 00, 00
; e0cdb
-LZ_e0cdb: ; e0cdb
+CardFlipLZ03: ; e0cdb
INCBIN "gfx/unknown/0e0cdb.2bpp.lz"
-GFX_e0cf6: ; e0cf6
+CardFlipOffButtonGFX: ; e0cf6
INCBIN "gfx/unknown/0e0cf6.2bpp"
-GFX_e0d06: ; e0d06
+CardFlipOnButtonGFX: ; e0d06
INCBIN "gfx/unknown/0e0d06.2bpp"
-LZ_e0d16: ; e0d16
+CardFlipLZ01: ; e0d16
INCBIN "gfx/unknown/0e0d16.2bpp.lz"
-LZ_e0ea8: ; e0ea8
+CardFlipLZ02: ; e0ea8
INCBIN "gfx/unknown/0e0ea8.2bpp.lz"
-Unknown_e110c: ; e110c
+CardFlipTilemap: ; e110c
db $ef, $15, $27, $2a, $2a, $06, $27, $2a, $2a, $06, $27
db $ef, $07, $27, $3e, $3f, $42, $43, $46, $47, $4a, $4b
db $ef, $17, $26, $40, $41, $44, $45, $48, $49, $4c, $4d
@@ -1705,856 +1760,3 @@ Unknown_e110c: ; e110c
db $ef, $05, $14, $10, $13, $10, $13, $10, $13, $10, $13
db $ef, $16, $24, $20, $23, $20, $23, $20, $23, $20, $23
; e1190
-
-Functione1190: ; e1190
- ld a, [hInMenu]
- push af
- ld a, $1
- ld [hInMenu], a
- call ClearBGPalettes
- call ClearTileMap
- call ClearSprites
- xor a
- ld [hBGMapMode], a
- call DisableLCD
- ld hl, wc608
- ld bc, $1e0
- xor a
- call ByteFill
- ld hl, GFX_e17c5
- ld de, VTiles1 tile $60
- ld bc, $40
- call CopyBytes
- ld hl, LZ_e1805
- ld de, VTiles1 tile $6d
- call Decompress
- call Functione17a3
- hlcoord 0, 0
- ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
- ld a, $ee
- call ByteFill
- hlcoord 4, 3
- lb bc, 12, 12
- ld a, $ef
- call Functione13ee
- call Functione124e
- call Functione13fe
- call Functione127d
- xor a
- ld [hSCY], a
- ld [hSCX], a
- ld [rWY], a
- ld [wJumptableIndex], a
- ld [wcf64], a
- ld [wcf65], a
- ld [wcf66], a
- ld a, $93
- ld [rLCDC], a
- call WaitBGMap
- ld b, SCGB_18
- call GetSGBLayout
- ld a, $e4
- call DmgToCgbBGPals
- ld a, $24
- call Functioncf8
- xor a
- ld [wd0ec], a
- call DelayFrame
-.asm_e1217
- call JoyTextDelay
- ld a, [wJumptableIndex]
- bit 7, a
- jr nz, .asm_e123d
- call Functione12ca
- ld a, [wcf64]
- and a
- jr nz, .asm_e1230
- ld a, [hVBlankCounter]
- and $10
- jr z, .asm_e1235
-
-.asm_e1230
- call Functione14d9
- jr .asm_e1238
-
-.asm_e1235
- call ClearSprites
-
-.asm_e1238
- call DelayFrame
- jr .asm_e1217
-
-.asm_e123d
- pop af
- ld [hInMenu], a
- call ClearBGPalettes
- call ClearTileMap
- call ClearSprites
- ld a, $e3
- ld [rLCDC], a
- ret
-; e124e
-
-Functione124e: ; e124e
- ld c, $1
- ld b, $10
-.asm_e1252
- call Random
- and $f
- ld hl, Unknown_e126d
- ld e, a
- ld d, $0
- add hl, de
- ld e, [hl]
- ld hl, wc6d0
- add hl, de
- ld a, [hl]
- and a
- jr nz, .asm_e1252
- ld [hl], c
- inc c
- dec b
- jr nz, .asm_e1252
- ret
-; e126d
-
-Unknown_e126d: ; e126d
- db $00, $01, $02, $03
- db $04, $05, $06, $0b
- db $0c, $11, $12, $17
- db $18, $1d, $1e, $23
-; e127d
-
-Functione127d: ; e127d
- call Functione128d
- hlcoord 5, 16
- ld a, $f6
- ld c, $a
-.asm_e1287
- ld [hli], a
- inc a
- dec c
- jr nz, .asm_e1287
- ret
-; e128d
-
-Functione128d: ; e128d
- hlcoord 4, 15
- ld a, $f0
- ld [hli], a
- ld bc, $a
- ld a, $f1
- call ByteFill
- hlcoord 15, 15
- ld a, $f2
- ld [hli], a
- hlcoord 4, 16
- ld a, $f3
- ld [hli], a
- ld bc, $a
- ld a, $ef
- call ByteFill
- hlcoord 15, 16
- ld a, $f3
- ld [hli], a
- hlcoord 4, 17
- ld a, $f4
- ld [hli], a
- ld bc, $a
- ld a, $f1
- call ByteFill
- hlcoord 15, 17
- ld a, $f5
- ld [hl], a
- ret
-; e12ca
-
-Functione12ca: ; e12ca
- ld a, [wJumptableIndex]
- ld e, a
- ld d, 0
- ld hl, Jumptable_e12d9
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-; e12d9
-
-Jumptable_e12d9: ; e12d9
- dw Functione12db
-; e12db
-
-Functione12db: ; e12db
- ld a, [hJoyPressed]
- and START
- jp nz, Functione13de
- ld a, [hJoyPressed]
- and A_BUTTON
- jp nz, Functione1376
- ld hl, hJoyLast
- ld a, [hl]
- and D_UP
- jr nz, .asm_e1301
- ld a, [hl]
- and D_DOWN
- jr nz, .asm_e130d
- ld a, [hl]
- and D_LEFT
- jr nz, .asm_e1325
- ld a, [hl]
- and D_RIGHT
- jr nz, .asm_e1345
- ret
-
-.asm_e1301
- ld hl, wcf65
- ld a, [hl]
- cp $6
- ret c
- sub $6
- ld [hl], a
- jr .asm_e1364
-
-.asm_e130d
- ld hl, wcf65
- ld a, [hl]
- cp $19
- ret z
- cp $1a
- ret z
- cp $1b
- ret z
- cp $1c
- ret z
- cp $1e
- ret nc
- add $6
- ld [hl], a
- jr .asm_e1364
-
-.asm_e1325
- ld hl, wcf65
- ld a, [hl]
- and a
- ret z
- cp $6
- ret z
- cp $c
- ret z
- cp $12
- ret z
- cp $18
- ret z
- cp $1e
- ret z
- cp $23
- jr z, .asm_e1341
- dec [hl]
- jr .asm_e1364
-
-.asm_e1341
- ld [hl], $1e
- jr .asm_e1364
-
-.asm_e1345
- ld hl, wcf65
- ld a, [hl]
- cp $5
- ret z
- cp $b
- ret z
- cp $11
- ret z
- cp $17
- ret z
- cp $1d
- ret z
- cp $23
- ret z
- cp $1e
- jr z, .asm_e1362
- inc [hl]
- jr .asm_e1364
-
-.asm_e1362
- ld [hl], $23
-
-.asm_e1364
- ld a, [wcf64]
- and a
- jr nz, .asm_e136f
- ld de, SFX_POUND
- jr .asm_e1372
-
-.asm_e136f
- ld de, SFX_MOVE_PUZZLE_PIECE
-
-.asm_e1372
- call PlaySFX
- ret
-; e1376
-
-Functione1376: ; e1376
- ld a, [wcf64]
- and a
- jr nz, .asm_e139f
- call Functione1475
- and a
- jr z, Functione13e4
- ld de, SFX_MEGA_KICK
- call PlaySFX
- ld [hl], $0
- ld [wcf66], a
- call Functione14d9
- call Functione1441
- call WaitBGMap
- call WaitSFX
- ld a, $1
- ld [wcf64], a
- ret
-
-.asm_e139f
- call Functione1475
- and a
- jr nz, Functione13e4
- ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
- call PlaySFX
- ld a, [wcf66]
- ld [hl], a
- call Functione141f
- call WaitBGMap
- xor a
- ld [wcf66], a
- call Functione14d9
- xor a
- ld [wcf64], a
- call WaitSFX
- call Functione14a0
- ret nc
- call Functione128d
- call ClearSprites
- ld de, SFX_1ST_PLACE
- call PlaySFX
- call WaitSFX
- call SimpleWaitPressAorB
- ld a, $1
- ld [wd0ec], a
-
-Functione13de: ; e13de
- ld hl, wJumptableIndex
- set 7, [hl]
- ret
-
-Functione13e4: ; e13e4
- ld de, SFX_WRONG
- call PlaySFX
- call WaitSFX
- ret
-; e13ee
-
-Functione13ee: ; e13ee
- ld de, SCREEN_WIDTH
-.asm_e13f1
- push bc
- push hl
-.asm_e13f3
- ld [hli], a
- dec c
- jr nz, .asm_e13f3
- pop hl
- add hl, de
- pop bc
- dec b
- jr nz, .asm_e13f1
- ret
-; e13fe
-
-Functione13fe: ; e13fe
- xor a
- ld [wcf65], a
- ld c, $24
-.asm_e1404
- push bc
- call Functione1475
- ld [wcf66], a
- and a
- jr z, .asm_e1413
- call Functione141f
- jr .asm_e1416
-
-.asm_e1413
- call Functione1441
-
-.asm_e1416
- ld hl, wcf65
- inc [hl]
- pop bc
- dec c
- jr nz, .asm_e1404
- ret
-; e141f
-
-Functione141f: ; e141f
- ld a, $2
- call Functione1463
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push hl
- call Functione1481
- pop hl
- ld de, SCREEN_WIDTH
- ld b, $3
-.asm_e1431
- ld c, $3
- push hl
-.asm_e1434
- ld [hli], a
- inc a
- dec c
- jr nz, .asm_e1434
- add $9
- pop hl
- add hl, de
- dec b
- jr nz, .asm_e1431
- ret
-; e1441
-
-Functione1441: ; e1441
- ld a, $2
- call Functione1463
- ld a, [hli]
- ld h, [hl]
- ld l, a
- push hl
- ld a, $4
- call Functione1463
- ld a, [hl]
- pop hl
- ld de, SCREEN_WIDTH
- ld b, $3
-.asm_e1456
- ld c, $3
- push hl
-.asm_e1459
- ld [hli], a
- dec c
- jr nz, .asm_e1459
- pop hl
- add hl, de
- dec b
- jr nz, .asm_e1456
- ret
-; e1463
-
-Functione1463: ; e1463
- ld e, a
- ld d, 0
- ld hl, Unknown_e1559
- add hl, de
- ld a, [wcf65]
- ld e, a
-rept 4
- add hl, de
-endr
-rept 2
- add hl, de
-endr
- ret
-; e1475
-
-Functione1475: ; e1475
- ld hl, wc6d0
- ld a, [wcf65]
- ld e, a
- ld d, $0
- add hl, de
- ld a, [hl]
- ret
-; e1481
-
-Functione1481: ; e1481
- ld a, [wcf66]
- ld hl, Unknown_e148f
- add l
- ld l, a
- ld a, $0
- adc h
- ld h, a
- ld a, [hl]
- ret
-; e148f
-
-Unknown_e148f: ; e148f
- db $e0
- db $00, $03, $06, $09
- db $24, $27, $2a, $2d
- db $48, $4b, $4e, $51
- db $6c, $6f, $72, $75
-; e14a0
-
-Functione14a0: ; e14a0
- ld hl, Unknown_e14b5
- ld de, wc6d0
- ld c, $24
-.asm_e14a8
- ld a, [de]
- cp [hl]
- jr nz, .asm_e14b3
- inc de
- inc hl
- dec c
- jr nz, .asm_e14a8
- scf
- ret
-
-.asm_e14b3
- and a
- ret
-; e14b5
-
-Unknown_e14b5: ; e14b5
- db $00, $00, $00, $00, $00, $00
- db $00, $01, $02, $03, $04, $00
- db $00, $05, $06, $07, $08, $00
- db $00, $09, $0a, $0b, $0c, $00
- db $00, $0d, $0e, $0f, $10, $00
- db $00, $00, $00, $00, $00, $00
-; e14d9
-
-Functione14d9: ; e14d9
- call Functione1481
- ld [wd002], a
- xor a
- call Functione1463
- ld a, [hli]
- ld b, [hl]
- ld c, a
- ld a, [wd002]
- cp $e0
- jr z, .asm_e14f2
- ld hl, Unknown_e150f
- jr .asm_e14f5
-
-.asm_e14f2
- ld hl, Unknown_e1534
-
-.asm_e14f5
- ld de, Sprites
-.asm_e14f8
- ld a, [hli]
- cp $ff
- ret z
- add b
- ld [de], a
- inc de
- ld a, [hli]
- add c
- ld [de], a
- inc de
- ld a, [wd002]
- add [hl]
- ld [de], a
- inc hl
- inc de
- ld a, [hli]
- ld [de], a
- inc de
- jr .asm_e14f8
-; e150f
-
-Unknown_e150f: ; e150f
- db $f4, $f4, $00, $00
- db $f4, $fc, $01, $00
- db $f4, $04, $02, $00
- db $fc, $f4, $0c, $00
- db $fc, $fc, $0d, $00
- db $fc, $04, $0e, $00
- db $04, $f4, $18, $00
- db $04, $fc, $19, $00
- db $04, $04, $1a, $00
- db $ff
-
-Unknown_e1534: ; e1534
- db $f4, $f4, $00, $00
- db $f4, $fc, $01, $00
- db $f4, $04, $00, $20
- db $fc, $f4, $02, $00
- db $fc, $fc, $03, $00
- db $fc, $04, $02, $20
- db $04, $f4, $00, $40
- db $04, $fc, $01, $40
- db $04, $04, $00, $60
- db $ff
-
-Unknown_e1559: ; e1559
-
-macro_e1559: macro
- db \1, \2
- dwcoord \3, \4
- db \5, \6
-endm
-
- macro_e1559 $1c, $1c, 1, 0, $ee, $00
- macro_e1559 $34, $1c, 4, 0, $ee, $00
- macro_e1559 $4c, $1c, 7, 0, $ee, $00
- macro_e1559 $64, $1c, 10, 0, $ee, $00
- macro_e1559 $7c, $1c, 13, 0, $ee, $00
- macro_e1559 $94, $1c, 16, 0, $ee, $00
- macro_e1559 $1c, $34, 1, 3, $ee, $00
- macro_e1559 $34, $34, 4, 3, $ef, $00
- macro_e1559 $4c, $34, 7, 3, $ef, $00
- macro_e1559 $64, $34, 10, 3, $ef, $00
- macro_e1559 $7c, $34, 13, 3, $ef, $00
- macro_e1559 $94, $34, 16, 3, $ee, $00
- macro_e1559 $1c, $4c, 1, 6, $ee, $00
- macro_e1559 $34, $4c, 4, 6, $ef, $00
- macro_e1559 $4c, $4c, 7, 6, $ef, $00
- macro_e1559 $64, $4c, 10, 6, $ef, $00
- macro_e1559 $7c, $4c, 13, 6, $ef, $00
- macro_e1559 $94, $4c, 16, 6, $ee, $00
- macro_e1559 $1c, $64, 1, 9, $ee, $00
- macro_e1559 $34, $64, 4, 9, $ef, $00
- macro_e1559 $4c, $64, 7, 9, $ef, $00
- macro_e1559 $64, $64, 10, 9, $ef, $00
- macro_e1559 $7c, $64, 13, 9, $ef, $00
- macro_e1559 $94, $64, 16, 9, $ee, $00
- macro_e1559 $1c, $7c, 1, 12, $ee, $00
- macro_e1559 $34, $7c, 4, 12, $ef, $00
- macro_e1559 $4c, $7c, 7, 12, $ef, $00
- macro_e1559 $64, $7c, 10, 12, $ef, $00
- macro_e1559 $7c, $7c, 13, 12, $ef, $00
- macro_e1559 $94, $7c, 16, 12, $ee, $00
- macro_e1559 $1c, $94, 1, 15, $ee, $00
- macro_e1559 $34, $94, 4, 15, $ee, $00
- macro_e1559 $4c, $94, 7, 15, $ee, $00
- macro_e1559 $64, $94, 10, 15, $ee, $00
- macro_e1559 $7c, $94, 13, 15, $ee, $00
- macro_e1559 $94, $94, 16, 15, $ee, $00
-
-Functione1631: ; e1631
- ld hl, VTiles2
- ld de, VTiles0
- ld b, $6
-.asm_e1639
- push bc
- push hl
- push hl
- call Functione1654
- pop hl
- ld bc, 8
- add hl, bc
- call Functione1654
- pop hl
- ld bc, $60
- add hl, bc
- pop bc
- dec b
- jr nz, .asm_e1639
- call Functione16c7
- ret
-; e1654
-
-Functione1654: ; e1654
- ld c, $6
-.asm_e1656
- push bc
- push hl
- push hl
- ld c, $4
-.asm_e165b
- push bc
- ld a, [hli]
- and $f0
- swap a
- call Functione16aa
- ld c, a
- ld a, [hli]
- and $f0
- swap a
- call Functione16aa
- ld b, a
- ld a, c
- ld [de], a
- inc de
- ld a, b
- ld [de], a
- inc de
- ld a, c
- ld [de], a
- inc de
- ld a, b
- ld [de], a
- inc de
- pop bc
- dec c
- jr nz, .asm_e165b
- pop hl
- ld c, $4
-.asm_e1681
- push bc
- ld a, [hli]
- and $f
- call Functione16aa
- ld c, a
- ld a, [hli]
- and $f
- call Functione16aa
- ld b, a
- ld a, c
- ld [de], a
- inc de
- ld a, b
- ld [de], a
- inc de
- ld a, c
- ld [de], a
- inc de
- ld a, b
- ld [de], a
- inc de
- pop bc
- dec c
- jr nz, .asm_e1681
- pop hl
- ld bc, $10
- add hl, bc
- pop bc
- dec c
- jr nz, .asm_e1656
- ret
-; e16aa
-
-Functione16aa: ; e16aa
- push hl
- ld hl, Unknown_e16b7
- add l
- ld l, a
- ld a, 0
- adc h
- ld h, a
- ld a, [hl]
- pop hl
- ret
-; e16b7
-
-Unknown_e16b7: ; e16b7
- db $00, $03, $0c, $0f
- db $30, $33, $3c, $3f
- db $c0, $c3, $cc, $cf
- db $f0, $f3, $fc, $ff
-; e16c7
-
-Functione16c7: ; e16c7
- ld hl, Unknown_e1703
- ld a, $8
-.asm_e16cc
- push af
- push hl
- ld a, [hli]
- ld e, a
- ld a, [hli]
- ld d, a
- ld a, [hli]
- ld h, [hl]
- ld l, a
- call Functione16e2
- pop hl
-rept 4
- inc hl
-endr
- pop af
- dec a
- jr nz, .asm_e16cc
- ret
-; e16e2
-
-Functione16e2: ; e16e2
- lb bc, 4, 4
-.asm_e16e5
- push bc
-.asm_e16e6
- push de
- push hl
- ld b, $10
-.asm_e16ea
- ld a, [de]
- or [hl]
- ld [hli], a
- inc de
- dec b
- jr nz, .asm_e16ea
- pop hl
- ld de, $30
- add hl, de
- pop de
- dec c
- jr nz, .asm_e16e6
- ld bc, $180
- add hl, bc
- pop bc
- dec b
- jr nz, .asm_e16e5
- ret
-; e1703
-
-Unknown_e1703: ; e1703
- dw GFX_e1723 + $00, $8000
- dw GFX_e1723 + $10, $8010
- dw GFX_e1723 + $20, $8020
- dw GFX_e1723 + $30, $80c0
- dw GFX_e1723 + $40, $80e0
- dw GFX_e1723 + $50, $8180
- dw GFX_e1723 + $60, $8190
- dw GFX_e1723 + $70, $81a0
-; e1723
-
-GFX_e1723: ; e1723
-INCBIN "gfx/unknown/0e1723.2bpp"
-
-Functione17a3: ; e17a3
- ld a, [ScriptVar]
- and 3
- ld e, a
- ld d, 0
- ld hl, Unknown_e17bd
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld de, VTiles2
- call Decompress
- call Functione1631
- ret
-; e17bd
-
-Unknown_e17bd: ; e17bd
- dw LZ_e1bab
- dw LZ_e1c9b
- dw LZ_e19fb
- dw LZ_e18ab
-; e17c5
-
-GFX_e17c5: ; e17c5
-INCBIN "gfx/unknown/0e17c5.2bpp"
-
-LZ_e1805: ; e1805
-INCBIN "gfx/unknown/0e1805.2bpp.lz"
-
-LZ_e18ab: ; e18ab
-INCBIN "gfx/unknown/0e18ab.2bpp.lz"
-
-LZ_e19fb: ; e19fb
-INCBIN "gfx/unknown/0e19fb.2bpp.lz"
-
-LZ_e1bab: ; e1bab
-INCBIN "gfx/unknown/0e1bab.2bpp.lz"
-
-LZ_e1c9b: ; e1c9b
-INCBIN "gfx/unknown/0e1c9b.2bpp.lz"
diff --git a/engine/clock_reset.asm b/engine/clock_reset.asm
index e51db6249..20f46ce12 100755
--- a/engine/clock_reset.asm
+++ b/engine/clock_reset.asm
@@ -95,7 +95,7 @@ RestartClock: ; 20021 (8:4021)
ld [StringBuffer2 + 2], a
xor a
ld [StringBuffer2 + 3], a
- call Function677
+ call InitTime
call .PrintTime
ld hl, .Text_ClockReset
call PrintText
diff --git a/engine/color.asm b/engine/color.asm
index 7e7520816..7f7cdd7ad 100644
--- a/engine/color.asm
+++ b/engine/color.asm
@@ -88,20 +88,20 @@ Function8aa4: ; 8aa4
push de
push bc
ld hl, PalPacket_9ce6
- ld de, wcda9
+ ld de, wSGBPals
ld bc, PALPACKET_LENGTH
call CopyBytes
pop bc
pop de
ld a, c
- ld [wcda9 + 3], a
+ ld [wSGBPals + 3], a
ld a, b
- ld [wcda9 + 4], a
+ ld [wSGBPals + 4], a
ld a, e
- ld [wcda9 + 5], a
+ ld [wSGBPals + 5], a
ld a, d
- ld [wcda9 + 6], a
- ld hl, wcda9
+ ld [wSGBPals + 6], a
+ ld hl, wSGBPals
call Function9809
ld hl, BlkPacket_9a86
call Function9809
@@ -113,13 +113,13 @@ Function8ad1: ; 8ad1
ld hl, PalPacket_9c56 + 1
call CopyFourPalettes
call Function971a
- call Function9699
+ call WipeAttrMap
ret
; 8ade
-Function8ade: ; 8ade SGB layout $fc
- ld hl, wcd9b
- ld a, [wcda9]
+SGB_ApplyPartyMenuHPPals: ; 8ade SGB layout $fc
+ ld hl, wHPPals
+ ld a, [wSGBPals]
ld e, a
ld d, $0
add hl, de
@@ -128,17 +128,16 @@ Function8ade: ; 8ade SGB layout $fc
ld a, [de]
and a
ld e, $5
- jr z, .asm_8af7
+ jr z, .okay
dec a
ld e, $a
- jr z, .asm_8af7
+ jr z, .okay
ld e, $f
-
-.asm_8af7
+.okay
push de
- ld hl, wcda9 + 10
- ld bc, $0006
- ld a, [wcda9]
+ ld hl, wSGBPals + 10
+ ld bc, $6
+ ld a, [wSGBPals]
call AddNTimes
pop de
ld [hl], e
@@ -150,17 +149,17 @@ Function8b07: ; 8b07
ret z
ld hl, Palette8b2f
ld de, UnknBGPals
- ld bc, $0008
+ ld bc, 1 palettes
ld a, $5
call FarCopyWRAM
ld hl, Palette8b37
ld de, MartPointer
- ld bc, $0008
+ ld bc, 1 palettes
ld a, $5
call FarCopyWRAM
- call Function96a4
+ call ApplyPals
ld a, $1
ld [hCGBPalUpdate], a
ret
@@ -171,6 +170,7 @@ Palette8b2f: ; 8b2f
RGB 18, 23, 31
RGB 15, 20, 31
RGB 00, 00, 00
+
; 8b37
Palette8b37: ; 8b37
@@ -178,6 +178,7 @@ Palette8b37: ; 8b37
RGB 31, 31, 12
RGB 08, 16, 28
RGB 00, 00, 00
+
; 8b3f
Function8b3f: ; 8b3f
@@ -202,7 +203,7 @@ Function8b4d: ; 8b4d
.asm_8b5c
ld de, UnknOBPals
ld a, $3b
- call GetAthPalletFromPalettes9df6
+ call GetPredefPal
jp LoadHLPaletteIntoDE
; 8b67
@@ -218,7 +219,7 @@ Function8b67: ; 8b67
.asm_8b76
ld de, UnknOBPals
ld a, $3c
- call GetAthPalletFromPalettes9df6
+ call GetPredefPal
jp LoadHLPaletteIntoDE
; 8b81
@@ -231,39 +232,39 @@ Function8b81: ; 8b81
ld a, c
push af
ld hl, PalPacket_9ce6
- ld de, wcda9
+ ld de, wSGBPals
ld bc, PALPACKET_LENGTH
call CopyBytes
pop af
- call Function9775
+ call GetMonPalettePointer_
ld a, [hli]
- ld [wcda9 + 3], a
+ ld [wSGBPals + 3], a
ld a, [hli]
- ld [wcda9 + 4], a
+ ld [wSGBPals + 4], a
ld a, [hli]
- ld [wcda9 + 5], a
+ ld [wSGBPals + 5], a
ld a, [hl]
- ld [wcda9 + 6], a
- ld hl, wcda9
+ ld [wSGBPals + 6], a
+ ld hl, wSGBPals
jp Function9809
.asm_8bb2
ld de, UnknOBPals
ld a, c
- call Function9775
- call Function9643
+ call GetMonPalettePointer_
+ call LoadPalette_White_Col1_Col2_Black
ret
; 8bbd
Function8bbd: ; 8bbd
ld a, [TrainerClass]
- call Function976b
+ call GetTrainerPalettePointer
ld a, e
jr asm_8bd7
Function8bc6:
ld a, [CurPartySpecies]
- call Function97ee
+ call GetMonPalettePointer
ld a, e
bit 7, a
jr z, .asm_8bd7
@@ -276,7 +277,7 @@ endr
asm_8bd7
push hl
ld hl, UnknBGPals
- ld de, $0008
+ ld de, $8
.asm_8bde
and a
jr z, .asm_8be5
@@ -288,7 +289,7 @@ asm_8bd7
ld e, l
ld d, h
pop hl
- call Function9643
+ call LoadPalette_White_Col1_Col2_Black
ret
; 8bec
@@ -304,7 +305,7 @@ Function8bec: ; 8bec
ld c, a
ld a, [EnemyReflectCount]
hlcoord 0, 0, AttrMap
- ld de, $0014
+ ld de, $14
.asm_8c04
and a
jr z, .asm_8c0b
@@ -330,19 +331,19 @@ Function8c1d: ; 8c1d
and a
jr z, .asm_8c2d
ld a, [CurPartySpecies]
- call Function9775
+ call GetMonPalettePointer_
jr .asm_8c33
.asm_8c2d
ld a, [TrainerClass]
- call Function976b
+ call GetTrainerPalettePointer
.asm_8c33
ld de, UnknBGPals
- call Function9643
- call Function9699
- call Function96b3
- call Function96a4
+ call LoadPalette_White_Col1_Col2_Black
+ call WipeAttrMap
+ call ApplyAttrMap
+ call ApplyPals
ret
; 8c43
@@ -357,11 +358,11 @@ Function8c43: ; 8c43
ret
.asm_8c52
- ld de, BGPals + $10 + 2
+ ld de, BGPals + 2 palettes + 2
jr .asm_8c5a
.asm_8c57
- ld de, BGPals + $18 + 2
+ ld de, BGPals + 3 palettes + 2
.asm_8c5a
ld l, c
@@ -371,7 +372,7 @@ rept 2
endr
ld bc, Palettes_a8be
add hl, bc
- ld bc, $0004
+ ld bc, $4
ld a, $5
call FarCopyWRAM
ld a, $1
@@ -382,7 +383,7 @@ endr
ld e, c
inc e
hlcoord 11, 1, AttrMap
- ld bc, $0028
+ ld bc, $28
ld a, [CurPartyMon]
.asm_8c7b
and a
@@ -398,10 +399,10 @@ endr
ret
; 8c8a
-Function8c8a: ; 8c8a
+LoadStatsScreenPals: ; 8c8a
call CheckCGB
ret z
- ld hl, Unknown_8f6a
+ ld hl, StatsScreenPals
ld b, 0
dec c
rept 2
@@ -419,7 +420,7 @@ endr
ld [UnknBGPals + 8 * 2 + 1], a
pop af
ld [rSVBK], a
- call Function96a4
+ call ApplyPals
ld a, $1
ret
; 8cb4
@@ -436,7 +437,7 @@ endr
jr nz, .asm_8cf0
push hl
ld hl, PalPacket_9ce6
- ld de, wcda9
+ ld de, wSGBPals
ld bc, PALPACKET_LENGTH
call CopyBytes
pop hl
@@ -444,14 +445,14 @@ rept 2
inc hl
endr
ld a, [hli]
- ld [wcda9 + 3], a
+ ld [wSGBPals + 3], a
ld a, [hli]
- ld [wcda9 + 4], a
+ ld [wSGBPals + 4], a
ld a, [hli]
- ld [wcda9 + 5], a
+ ld [wSGBPals + 5], a
ld a, [hli]
- ld [wcda9 + 6], a
- ld hl, wcda9
+ ld [wSGBPals + 6], a
+ ld hl, wSGBPals
call Function9809
ld hl, BlkPacket_9a86
call Function9809
@@ -459,12 +460,12 @@ endr
.asm_8cf0
ld de, UnknBGPals
- ld bc, $0008
+ ld bc, 1 palettes
ld a, $5
call FarCopyWRAM
- call Function96a4
- call Function9699
- call Function96b3
+ call ApplyPals
+ call WipeAttrMap
+ call ApplyAttrMap
ret
; 8d05
@@ -518,6 +519,7 @@ Palettes_8d05: ; 8d05
RGB 31, 31, 00
RGB 00, 21, 00
RGB 00, 00, 00
+
; 8d55
INCLUDE "predef/cgb.asm"
@@ -529,9 +531,9 @@ Function95f0: ; 95f0
ld bc, 8
ld a, $5
call FarCopyWRAM
- call Function96a4
- call Function9699
- call Function96b3
+ call ApplyPals
+ call WipeAttrMap
+ call ApplyAttrMap
ret
; 9608
@@ -540,6 +542,7 @@ Palette_9608: ; 9608
RGB 09, 31, 31
RGB 10, 12, 31
RGB 00, 03, 19
+
; 9610
@@ -552,7 +555,7 @@ CopyPalettes: ; 9615
push bc
ld a, [hli]
push hl
- call GetAthPalletFromPalettes9df6
+ call GetPredefPal
call LoadHLPaletteIntoDE
pop hl
inc hl
@@ -562,7 +565,7 @@ CopyPalettes: ; 9615
ret
; 9625
-GetAthPalletFromPalettes9df6: ; 9625
+GetPredefPal: ; 9625
ld l, a
ld h, $0
rept 3 ; multiply by 8
@@ -590,29 +593,33 @@ LoadHLPaletteIntoDE: ; 9630
ret
; 9643
-Function9643: ; 9643
+LoadPalette_White_Col1_Col2_Black: ; 9643
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
- ld a, $ff
+
+ ld a, $7fff % $100
ld [de], a
inc de
- ld a, $7f
+ ld a, $7fff / $100
ld [de], a
inc de
- ld c, $4
+
+ ld c, 2 * 2
.loop
ld a, [hli]
ld [de], a
inc de
dec c
jr nz, .loop
+
xor a
ld [de], a
inc de
ld [de], a
inc de
+
pop af
ld [rSVBK], a
ret
@@ -667,7 +674,7 @@ endr
; 9699
-Function9699: ; 9699
+WipeAttrMap: ; 9699
hlcoord 0, 0, AttrMap
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
@@ -675,19 +682,19 @@ Function9699: ; 9699
ret
; 96a4
-Function96a4: ; 96a4
+ApplyPals: ; 96a4
ld hl, UnknBGPals
ld de, BGPals
- ld bc, $0080
+ ld bc, 16 palettes
ld a, $5
call FarCopyWRAM
ret
; 96b3
-Function96b3: ; 96b3
+ApplyAttrMap: ; 96b3
ld a, [rLCDC]
bit 7, a
- jr z, .asm_96d0
+ jr z, .UpdateVBank1
ld a, [hBGMapMode]
push af
ld a, $2
@@ -700,37 +707,36 @@ Function96b3: ; 96b3
ld [hBGMapMode], a
ret
-.asm_96d0
+.UpdateVBank1
hlcoord 0, 0, AttrMap
debgcoord 0, 0
- ld b, $12
+ ld b, SCREEN_HEIGHT
ld a, $1
ld [rVBK], a
-.asm_96dc
- ld c, $14
-.asm_96de
+.row
+ ld c, SCREEN_WIDTH
+.col
ld a, [hli]
ld [de], a
inc de
dec c
- jr nz, .asm_96de
- ld a, $c
+ jr nz, .col
+ ld a, BG_MAP_WIDTH - SCREEN_WIDTH
add e
- jr nc, .asm_96ea
+ jr nc, .okay
inc d
-
-.asm_96ea
+.okay
ld e, a
dec b
- jr nz, .asm_96dc
+ jr nz, .row
ld a, $0
ld [rVBK], a
ret
; 96f3
-Function96f3: ; 96f3 CGB layout $fc
- ld hl, wcd9b
- ld a, [wcda9]
+CGB_ApplyPartyMenuHPPals: ; 96f3 CGB layout $fc
+ ld hl, wHPPals
+ ld a, [wSGBPals]
ld e, a
ld d, $0
add hl, de
@@ -740,16 +746,15 @@ Function96f3: ; 96f3 CGB layout $fc
inc a
ld e, a
hlcoord 11, 2, AttrMap
- ld bc, $0028
- ld a, [wcda9]
-.asm_970b
+ ld bc, 2 * SCREEN_WIDTH
+ ld a, [wSGBPals]
+.loop
and a
- jr z, .asm_9712
+ jr z, .done
add hl, bc
dec a
- jr .asm_970b
-
-.asm_9712
+ jr .loop
+.done
lb bc, 2, 8
ld a, e
call FillBoxCGB
@@ -760,37 +765,37 @@ Function96f3: ; 96f3 CGB layout $fc
Function971a: ; 971a
ld hl, Palettes_b681
ld de, UnknOBPals
- ld bc, $0010
+ ld bc, 2 palettes
ld a, $5
call FarCopyWRAM
ret
; 9729
-Function9729: ; 9729
+GetBattlemonBackpicPalettePointer: ; 9729
push de
callba GetPartyMonDVs
ld c, l
ld b, h
ld a, [TempBattleMonSpecies]
- call Function974b
+ call GetPlayerOrMonPalettePointer
pop de
ret
; 973a
-Function973a: ; 973a
+GetEnemyFrontpicPalettePointer: ; 973a
push de
callba GetEnemyMonDVs
ld c, l
ld b, h
ld a, [TempEnemyMonSpecies]
- call Function9764
+ call GetFrontpicPalettePointer
pop de
ret
; 974b
-Function974b: ; 974b
+GetPlayerOrMonPalettePointer: ; 974b
and a
- jp nz, Function97f9
+ jp nz, GetMonNormalOrShinyPalettePointer
ld a, [wPlayerSpriteSetupFlags]
bit 2, a ; transformed to male
jr nz, .male
@@ -805,12 +810,12 @@ Function974b: ; 974b
ret
; 9764
-Function9764: ; 9764
+GetFrontpicPalettePointer: ; 9764
and a
- jp nz, Function97f9
+ jp nz, GetMonNormalOrShinyPalettePointer
ld a, [TrainerClass]
-Function976b: ; 976b
+GetTrainerPalettePointer: ; 976b
ld l, a
ld h, 0
rept 2
@@ -821,30 +826,26 @@ endr
ret
; 9775
-Function9775: ; 9775
- call Function97ee
+GetMonPalettePointer_: ; 9775
+ call GetMonPalettePointer
ret
; 9779
-Function9779: ; 9779
- ret
-; 977a
-
-Function977a: ; 977a
+Function9779: mobile ; 9779
call CheckCGB
ret z
ld hl, Palettes_979c
ld a, $90
ld [rOBPI], a
- ld c, $30
-.asm_9787
+ ld c, 6 palettes
+.loop
ld a, [hli]
ld [rOBPD], a
dec c
- jr nz, .asm_9787
+ jr nz, .loop
ld hl, Palettes_979c
ld de, UnknOBPals + 8 * 2
- ld bc, $0010
+ ld bc, 2 palettes
ld a, $5
call FarCopyWRAM
ret
@@ -855,26 +856,32 @@ Palettes_979c: ; 979c
RGB 25, 25, 25
RGB 13, 13, 13
RGB 00, 00, 00
+
RGB 31, 31, 31
RGB 31, 31, 07
RGB 31, 16, 01
RGB 00, 00, 00
+
RGB 31, 31, 31
RGB 31, 19, 24
RGB 30, 10, 06
RGB 00, 00, 00
+
RGB 31, 31, 31
RGB 12, 25, 01
RGB 05, 14, 00
RGB 00, 00, 00
+
RGB 31, 31, 31
RGB 08, 12, 31
RGB 01, 04, 31
RGB 00, 00, 00
+
RGB 31, 31, 31
RGB 24, 18, 07
RGB 20, 15, 03
RGB 00, 00, 00
+
; 97cc
Function97cc: ; 97cc
@@ -883,16 +890,16 @@ Function97cc: ; 97cc
ld a, $90
ld [rOBPI], a
ld a, $1c
- call GetAthPalletFromPalettes9df6
+ call GetPredefPal
call Function97e5
ld a, $21
- call GetAthPalletFromPalettes9df6
+ call GetPredefPal
call Function97e5
ret
; 97e5
Function97e5: ; 97e5
- ld c, $8
+ ld c, 1 palettes
.loop
ld a, [hli]
ld [rOBPD], a
@@ -901,7 +908,7 @@ Function97e5: ; 97e5
ret
; 97ee
-Function97ee: ; 97ee
+GetMonPalettePointer: ; 97ee
ld l, a
ld h, $0
rept 3
@@ -912,9 +919,9 @@ endr
ret
; 97f9
-Function97f9: ; 97f9
+GetMonNormalOrShinyPalettePointer: ; 97f9
push bc
- call Function97ee
+ call GetMonPalettePointer
pop bc
push hl
call CheckShininess
@@ -958,7 +965,6 @@ Function981a: ; 981a
ld a, $10
jr nz, .okay
ld a, $20
-
.okay
ld [rJOYP], a
ld a, $30
@@ -972,7 +978,7 @@ Function981a: ; 981a
ld [rJOYP], a
ld a, $30
ld [rJOYP], a
- call Function9a7a
+ call SGBDelayCycles
pop bc
dec b
jr nz, .loop
@@ -996,10 +1002,10 @@ Function9853: ; 9853
ld [hSGB], a
call Function98eb
call Function99b4
- call Function9a7a
+ call SGBDelayCycles
call Function993f
call Function992c
- call Function9a7a
+ call SGBDelayCycles
call Function993f
ld hl, PalPacket_9d66
call Function981a
@@ -1105,7 +1111,7 @@ Function9911: ; 9911
ld hl, PalPacket_9d56
call Function981a
call Function992c
- call Function9a7a
+ call SGBDelayCycles
call Function993f
ld hl, PalPacket_9d66
call Function981a
@@ -1139,7 +1145,7 @@ Function993f: ; 993f
Function994a: ; 994a
ld hl, PalPacket_9d26
call Function981a
- call Function9a7a
+ call SGBDelayCycles
ld a, [rJOYP]
and $3
cp $3
@@ -1149,26 +1155,26 @@ Function994a: ; 994a
rept 2
ld a, [rJOYP]
endr
- call Function9a7a
- call Function9a7a
+ call SGBDelayCycles
+ call SGBDelayCycles
ld a, $30
ld [rJOYP], a
- call Function9a7a
- call Function9a7a
+ call SGBDelayCycles
+ call SGBDelayCycles
ld a, $10
ld [rJOYP], a
rept 6
ld a, [rJOYP]
endr
- call Function9a7a
- call Function9a7a
+ call SGBDelayCycles
+ call SGBDelayCycles
ld a, $30
ld [rJOYP], a
rept 3
ld a, [rJOYP]
endr
- call Function9a7a
- call Function9a7a
+ call SGBDelayCycles
+ call SGBDelayCycles
ld a, [rJOYP]
and $3
cp $3
@@ -1186,7 +1192,7 @@ endr
Function99ab: ; 99ab
ld hl, PalPacket_9d16
call Function981a
- jp Function9a7a
+ jp SGBDelayCycles
; 99b4
Function99b4: ; 99b4
@@ -1217,20 +1223,20 @@ Function99d8: ; 99d8
ld b, $12
.asm_99ea
push bc
- ld bc, $000c
+ ld bc, $c
call CopyData
- ld bc, $0028
+ ld bc, $28
call ClearBytes
- ld bc, $000c
+ ld bc, $c
call CopyData
pop bc
dec b
jr nz, .asm_99ea
- ld bc, $0140
+ ld bc, $140
call CopyData
ld bc, Start
call ClearBytes
- ld bc, $0080
+ ld bc, 16 palettes
call CopyData
call DrawDefaultTiles
ld a, $e3
@@ -1250,9 +1256,9 @@ Function9a24: ; 9a24
ld b, $80
.asm_9a30
push bc
- ld bc, $0010
+ ld bc, 2 palettes
call CopyData
- ld bc, $0010
+ ld bc, 2 palettes
call ClearBytes
pop bc
dec b
@@ -1311,16 +1317,16 @@ DrawDefaultTiles: ; 0x9a64
ret
; 0x9a7a
-Function9a7a: ; 9a7a
- ld de, $1b58
-.asm_9a7d
+SGBDelayCycles: ; 9a7a
+ ld de, 7000
+.wait
nop
nop
nop
dec de
ld a, d
or e
- jr nz, .asm_9a7d
+ jr nz, .wait
ret
; 9a86
@@ -1803,6 +1809,7 @@ Palettes_9df6: ; 9df6
RGB 08, 11, 11
RGB 21, 21, 21
RGB 31, 31, 31
+
; a06e
SGBBorderMap: ; a06e
@@ -1916,6 +1923,7 @@ SGBBorderPalettes: ; a49e
RGB 31, 31, 25
RGB 31, 31, 25
RGB 31, 31, 25
+
; a51e
SGBBorder: ; a51e
@@ -1945,15 +1953,15 @@ INCLUDE "gfx/pics/palette_pointers.asm"
INCLUDE "gfx/trainers/palette_pointers.asm"
; b1de
-Functionb1de: ; b1de
+LoadMapPals: ; b1de
callba LoadSpecialMapPalette
- jr c, .asm_b230
+ jr c, .got_pals
ld a, [wPermission]
and 7
ld e, a
ld d, 0
- ld hl, Unknown_b279
+ ld hl, .TilesetColorsPointers
rept 2
add hl, de
endr
@@ -1975,8 +1983,8 @@ endr
ld a, $5
ld [rSVBK], a
ld hl, UnknBGPals
- ld b, $8
-.asm_b210
+ ld b, 8
+.outer_loop
ld a, [de]
push de
push hl
@@ -1990,37 +1998,37 @@ endr
ld e, l
ld d, h
pop hl
- ld c, 8
-.asm_b222
+ ld c, 1 palettes
+.inner_loop
ld a, [de]
inc de
ld [hli], a
dec c
- jr nz, .asm_b222
+ jr nz, .inner_loop
pop de
inc de
dec b
- jr nz, .asm_b210
+ jr nz, .outer_loop
pop af
ld [rSVBK], a
-.asm_b230
+.got_pals
ld a, [TimeOfDayPal]
and 3
- ld bc, $40
+ ld bc, 8 palettes
ld hl, MapObjectPals
call AddNTimes
ld de, UnknOBPals
- ld bc, $40
+ ld bc, 8 palettes
ld a, $5 ; BANK(UnknOBPals)
call FarCopyWRAM
ld a, [wPermission]
- cp 1
- jr z, .asm_b253
- cp 2
+ cp TOWN
+ jr z, .outside
+ cp ROUTE
ret nz
-.asm_b253
+.outside
ld a, [MapGroup]
ld l, a
ld h, 0
@@ -2032,19 +2040,19 @@ endr
ld a, [TimeOfDayPal]
and 3
cp NITE
- jr c, .asm_b26d
+ jr c, .morn_day
rept 4
inc hl
endr
-.asm_b26d
- ld de, UnknBGPals + 8 * 6 + 2
+.morn_day
+ ld de, UnknBGPals + 6 palettes + 2
ld bc, 4
ld a, $5
call FarCopyWRAM
ret
; b279
-Unknown_b279: ; b279
+.TilesetColorsPointers: ; b279
dw TilesetColors1
dw TilesetColors1
dw TilesetColors1
@@ -2085,6 +2093,7 @@ Palette_b309: ; b309
RGB 31, 19, 24
RGB 30, 10, 06
RGB 00, 00, 00
+
; b311
Palette_b311: ; b311
@@ -2092,6 +2101,7 @@ Palette_b311: ; b311
RGB 17, 19, 31
RGB 14, 16, 31
RGB 00, 00, 00
+
; b319
TilesetBGPalette: ; b319
@@ -2143,6 +2153,7 @@ Palettes_b641: ; b641
RGB 11, 11, 19
RGB 07, 07, 12
RGB 00, 00, 00
+
; b681
Palettes_b681: ; b681
@@ -2216,6 +2227,7 @@ Palettes_b681: ; b681
RGB 20, 15, 03
RGB 07, 07, 07
+
Palettes_b6f1: ; b6f1
RGB 31, 31, 31
RGB 18, 23, 31
@@ -2242,6 +2254,7 @@ Palettes_b6f1: ; b6f1
RGB 18, 23, 31
RGB 00, 00, 00
+
Palettes_b719: ; b719
RGB 31, 31, 31
RGB 07, 06, 03
@@ -2252,6 +2265,7 @@ Palettes_b719: ; b719
RGB 31, 31, 00
RGB 26, 22, 00
RGB 00, 00, 00
+
; b729
Palettes_b729: ; b729
@@ -2284,6 +2298,7 @@ Palettes_b729: ; b729
RGB 00, 31, 00
RGB 15, 07, 00
RGB 31, 00, 00
+
; b759
Palettes_b759: ; b759
@@ -2316,6 +2331,7 @@ Palettes_b759: ; b759
RGB 00, 31, 00
RGB 15, 07, 00
RGB 31, 00, 00
+
; b789
Palettes_b789: ; b789
@@ -2338,6 +2354,7 @@ Palettes_b789: ; b789
RGB 29, 26, 05
RGB 18, 18, 18
RGB 00, 00, 00
+
; b7a9
Palettes_b7a9: ; b7a9
@@ -2420,4 +2437,5 @@ Palettes_b7a9: ; b7a9
RGB 31, 31, 31
RGB 00, 00, 00
RGB 00, 00, 00
+
; b829
diff --git a/engine/compose_mail.asm b/engine/compose_mail.asm
index f02f99326..64165a13a 100755
--- a/engine/compose_mail.asm
+++ b/engine/compose_mail.asm
@@ -34,7 +34,7 @@ _ComposeMailMessage: ; 11e75 (mail?)
ld a, BANK(.MailIcon)
call FarCopyBytes
xor a
- ld hl, wc300
+ ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], a
@@ -43,7 +43,7 @@ _ComposeMailMessage: ; 11e75 (mail?)
ld a, SPRITE_ANIM_INDEX_00
call _InitSpriteAnimStruct
- ld hl, $2
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
ld [hl], $0
call .InitCharset
@@ -57,7 +57,7 @@ _ComposeMailMessage: ; 11e75 (mail?)
ld a, %11100100
call DmgToCgbBGPals
ld a, %11100100
- call Functioncf8
+ call DmgToCgbObjPal0
call Function11be0
ld hl, wc6d0
ld e, [hl]
@@ -67,6 +67,7 @@ _ComposeMailMessage: ; 11e75 (mail?)
add hl, de
ld [hl], $4e
ret
+
; 11ef4 (4:5ef4)
.MailIcon: ; 11ef4
@@ -77,6 +78,7 @@ INCBIN "gfx/icon/mail2.2bpp"
ld a, $21
ld [wc6d3], a
ret
+
; 11f7a (4:5f7a)
.Dummy: ; dummied out
@@ -123,13 +125,14 @@ INCBIN "gfx/icon/mail2.2bpp"
bit 7, a
jr nz, .exit_mail
call .DoJumptable
- callba Function8cf62
+ callba PlaySpriteAnimationsAndDelayFrame
call .Update
call DelayFrame
and a
ret
+
.exit_mail
- callab Function8cf53
+ callab ClearSpriteAnims
call ClearSprites
xor a
ld [hSCX], a
@@ -179,10 +182,10 @@ endr
ld [wc6d5], a
ld a, b
ld [wc6d6], a
- ld hl, $1
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld a, [hl]
- ld hl, $e
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld [hl], a
ld hl, wJumptableIndex
@@ -232,10 +235,10 @@ endr
ld c, [hl]
inc hl
ld b, [hl]
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $9
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $5
ret
@@ -268,44 +271,47 @@ endr
ld de, MailEntry_Uppercase
call .PlaceMailCharset
ret
+
.switch_to_lowercase
ld de, MailEntry_Lowercase
call .PlaceMailCharset
ret
+; called from engine/sprite_anims.asm
Function120c1: ; 120c1 (4:60c1)
call Function1210c
- ld hl, SpriteAnim1Sprite0d - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
ld e, a
swap e
- ld hl, SpriteAnim1YOffset - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], e
cp $5
ld de, Unknown_120f8
- ld a, $0
+ ld a, 0
jr nz, .asm_120df
ld de, Unknown_12102
- ld a, $1
+ ld a, 1
.asm_120df
- ld hl, SpriteAnim1Sprite0e - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
add [hl]
- ld hl, SpriteAnim1Sprite01 - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], a
- ld hl, SpriteAnim1Sprite0c - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld l, [hl]
- ld h, SpriteAnim1Index - SpriteAnim1
+ ld h, 0
add hl, de
ld a, [hl]
- ld hl, SpriteAnim1XOffset - SpriteAnim1
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
+
; 120f8 (4:60f8)
Unknown_120f8: ; 120f8
@@ -329,20 +335,23 @@ Function1210c: ; 1210c (4:610c)
and D_RIGHT
jr nz, .right
ret
+
.right
call Function1218b
and a
jr nz, .asm_12138
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $9
jr nc, .asm_12135
inc [hl]
ret
+
.asm_12135
ld [hl], $0
ret
+
.asm_12138
cp $3
jr nz, .asm_1213d
@@ -351,24 +360,27 @@ Function1210c: ; 1210c (4:610c)
ld e, a
add a
add e
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], a
ret
+
.left
call Function1218b
and a
jr nz, .asm_12159
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
and a
jr z, .asm_12156
dec [hl]
ret
+
.asm_12156
ld [hl], $9
ret
+
.asm_12159
cp $1
jr nz, .asm_1215f
@@ -380,29 +392,33 @@ endr
ld e, a
add a
add e
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], a
ret
+
.down
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
cp $5
jr nc, .asm_12175
inc [hl]
ret
+
.asm_12175
ld [hl], $0
ret
+
.up
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
and a
jr z, .asm_12182
dec [hl]
ret
+
.asm_12182
ld [hl], $5
ret
@@ -414,12 +430,12 @@ Function12185: ; 12185 (4:6185)
ld b, [hl]
Function1218b: ; 1218b (4:618b)
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
cp $5
jr nz, .asm_121aa
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $3
@@ -428,12 +444,15 @@ Function1218b: ; 1218b (4:618b)
jr c, .asm_121a7
ld a, $3
ret
+
.asm_121a4
ld a, $1
ret
+
.asm_121a7
ld a, $2
ret
+
.asm_121aa
xor a
ret
diff --git a/engine/credits.asm b/engine/credits.asm
index 6e2bef12d..77080b8b4 100644
--- a/engine/credits.asm
+++ b/engine/credits.asm
@@ -1,6 +1,5 @@
INCLUDE "includes.asm"
-
SECTION "Credits", ROMX, BANK[CREDITS]
const_def
@@ -118,12 +117,12 @@ const_value SET -7
const CREDITS_END
-Function109847:: ; 109847
- bit 6, b
+Credits:: ; 109847
+ bit 6, b ; Hall Of Fame
ld a, $0
- jr z, .asm_10984f
+ jr z, .okay
ld a, $40
-.asm_10984f
+.okay
ld [wJumptableIndex], a
ld a, [rSVBK]
@@ -135,17 +134,17 @@ Function109847:: ; 109847
call ClearTileMap
call ClearSprites
- ld hl, wca00
+ ld hl, wCreditsFaux2bpp
ld c, $80
ld de, $ff00
-.asm_10986a
+.load_loop
ld a, e
ld [hli], a
ld a, d
ld [hli], a
dec c
- jr nz, .asm_10986a
+ jr nz, .load_loop
ld de, CreditsBorderGFX
ld hl, VTiles2 tile $20
@@ -163,20 +162,20 @@ Function109847:: ; 109847
call Request2bpp
ld a, $ff
- ld [wcf64], a
+ ld [wCreditsBorderFrame], a
xor a
- ld [wcf65], a
+ ld [wCreditsBorderMon], a
- call Function109bca
+ call Credits_LoadBorderGFX
ld e, l
ld d, h
ld hl, VTiles2
- lb bc, BANK(CreditsMonsGFX), $10
+ lb bc, BANK(CreditsMonsGFX), 16
call Request2bpp
- call Function109a95
+ call ConstructCreditsTilemap
xor a
- ld [wcf66], a
+ ld [wCreditsLYOverride], a
ld hl, LYOverrides
ld bc, $100
@@ -200,16 +199,16 @@ Function109847:: ; 109847
ld [wcd21], a
ld [CreditsTimer], a
-.asm_1098de
- call Function109908
- call Function1098fd
- jr nz, .asm_1098ee
+.execution_loop
+ call Credits_HandleBButton
+ call Credits_HandleAButton
+ jr nz, .exit_credits
- call Function109926
+ call Credits_Jumptable
call DelayFrame
- jr .asm_1098de
+ jr .execution_loop
-.asm_1098ee
+.exit_credits
call ClearBGPalettes
xor a
ld [hLCDStatCustom], a
@@ -221,18 +220,18 @@ Function109847:: ; 109847
ret
; 1098fd
-Function1098fd: ; 1098fd
+Credits_HandleAButton: ; 1098fd
ld a, [hJoypadDown]
- and $1
+ and A_BUTTON
ret z
ld a, [wJumptableIndex]
bit 7, a
ret
; 109908
-Function109908: ; 109908
+Credits_HandleBButton: ; 109908
ld a, [hJoypadDown]
- and $2
+ and B_BUTTON
ret z
ld a, [wJumptableIndex]
bit 6, a
@@ -240,12 +239,11 @@ Function109908: ; 109908
ld hl, CreditsPos
ld a, [hli]
cp $d
- jr nc, .asm_10991e
+ jr nc, .okay
ld a, [hli]
and a
ret z
-
-.asm_10991e
+.okay
ld hl, CreditsTimer
ld a, [hl]
and a
@@ -254,12 +252,12 @@ Function109908: ; 109908
ret
; 109926
-Function109926: ; 109926
+Credits_Jumptable: ; 109926
ld a, [wJumptableIndex]
and $f
ld e, a
ld d, 0
- ld hl, Jumptable_109937
+ ld hl, .Jumptable
rept 2
add hl, de
endr
@@ -270,79 +268,80 @@ endr
; 109937
-Jumptable_109937: ; 109937 (42:5937)
- dw ParseCredits
- dw Function109951
- dw Function109951
- dw Function10995e
- dw Function109964
- dw Function10997b
- dw Function109986
- dw Function109951
- dw Function109951
- dw Function109951
- dw Function109964
- dw Function10997b
- dw Function109956
-
-
-Function109951: ; 109951 (42:5951)
+.Jumptable: ; 109937 (42:5937)
+ jumptable_start
+ jumptable ParseCredits
+ jumptable Credits_Next
+ jumptable Credits_Next
+ jumptable Credits_PrepBGMapUpdate
+ jumptable Credits_UpdateGFXRequestPath
+ jumptable Credits_RequestGFX
+ jumptable Credits_LYOverride
+ jumptable Credits_Next
+ jumptable Credits_Next
+ jumptable Credits_Next
+ jumptable Credits_UpdateGFXRequestPath
+ jumptable Credits_RequestGFX
+ jumptable Credits_LoopBack
+
+
+Credits_Next: ; 109951 (42:5951)
ld hl, wJumptableIndex
inc [hl]
ret
-Function109956: ; 109956 (42:5956)
+Credits_LoopBack: ; 109956 (42:5956)
ld hl, wJumptableIndex
ld a, [hl]
and $f0
ld [hl], a
ret
-Function10995e: ; 10995e (42:595e)
+Credits_PrepBGMapUpdate: ; 10995e (42:595e)
xor a
ld [hBGMapMode], a
- jp Function109951
+ jp Credits_Next
-Function109964: ; 109964 (42:5964)
- call Function109bca
+Credits_UpdateGFXRequestPath: ; 109964 (42:5964)
+ call Credits_LoadBorderGFX
ld a, l
ld [Requested2bppSource], a
ld a, h
ld [Requested2bppSource + 1], a
- ld a, $0
+ ld a, VTiles2 % $100
ld [Requested2bppDest], a
- ld a, $90
+ ld a, VTiles2 / $100
ld [Requested2bppDest + 1], a
- jr Function10997b
+ jr Credits_RequestGFX
-Function10997b: ; 10997b (42:597b)
+Credits_RequestGFX: ; 10997b (42:597b)
xor a
ld [hBGMapMode], a
ld a, $8
ld [Requested2bpp], a
- jp Function109951
+ jp Credits_Next
-Function109986: ; 109986 (42:5986)
+Credits_LYOverride: ; 109986 (42:5986)
ld a, [rLY]
cp $30
- jr c, Function109986
- ld a, [wcf66]
+ jr c, Credits_LYOverride
+ ld a, [wCreditsLYOverride]
rept 2
dec a
endr
- ld [wcf66], a
+ ld [wCreditsLYOverride], a
ld hl, LYOverrides + $1f
- call Function1099a3
+ call .Fill
ld hl, LYOverrides + $87
- call Function1099a3
- jp Function109951
+ call .Fill
+ jp Credits_Next
-Function1099a3: ; 1099a3 (42:59a3)
+.Fill: ; 1099a3 (42:59a3)
ld c, $8
-.asm_1099a5
+.loop
ld [hli], a
dec c
- jr nz, .asm_1099a5
+ jr nz, .loop
ret
; 1099aa
@@ -437,15 +436,15 @@ endr
.theend
; Display "The End" graphic.
- call Function109c11
+ call Credits_TheEnd
jr .loop
.scene
; Update the scene number and corresponding palette.
call .get
- ld [wcf65], a ; scene
+ ld [wCreditsBorderMon], a ; scene
xor a
- ld [wcf64], a ; frame
+ ld [wCreditsBorderFrame], a ; frame
call GetCreditsPalette
call SetPalettes ; update hw pal registers
jr .loop
@@ -453,7 +452,7 @@ endr
.clear
; Clear the banner.
ld a, $ff
- ld [wcf64], a ; frame
+ ld [wCreditsBorderFrame], a ; frame
jr .loop
.music
@@ -484,13 +483,13 @@ endr
ld [hBGMapMode], a
.done
- jp Function109951
+ jp Credits_Next
.end
; Stop execution.
ld hl, wJumptableIndex
set 7, [hl]
- ld a, $20
+ ld a, 32
ld [MusicFade], a
ld a, MUSIC_POST_CREDITS % $100
ld [MusicFadeID], a
@@ -521,91 +520,96 @@ endr
; 109a95
-Function109a95: ; 109a95 (42:5a95)
+ConstructCreditsTilemap: ; 109a95 (42:5a95)
xor a
ld [hBGMapMode], a
ld a, $c
ld [hBGMapAddress], a
+
ld a, $28
hlcoord 0, 0
- ld bc, $168
+ ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
call ByteFill
+
ld a, $7f
hlcoord 0, 4
- ld bc, $118
+ ld bc, (SCREEN_HEIGHT - 4) * SCREEN_WIDTH
call ByteFill
+
hlcoord 0, 4
ld a, $24
- call Function109b1d
+ call DrawCreditsBorder
+
hlcoord 0, 17
ld a, $20
- call Function109b1d
+ call DrawCreditsBorder
+
hlcoord 0, 0, AttrMap
- ld bc, $50
+ ld bc, 4 * SCREEN_WIDTH
xor a
call ByteFill
+
hlcoord 0, 4, AttrMap
- ld bc, $14
+ ld bc, SCREEN_WIDTH
ld a, $1
call ByteFill
+
hlcoord 0, 5, AttrMap
- ld bc, $f0
+ ld bc, 12 * SCREEN_WIDTH
ld a, $2
call ByteFill
+
hlcoord 0, 17, AttrMap
- ld bc, $14
+ ld bc, SCREEN_WIDTH
ld a, $1
call ByteFill
- call Function3200
+
+ call WaitBGMap2
xor a
ld [hBGMapMode], a
ld [hBGMapAddress], a
hlcoord 0, 0
- call Function109aff
- call Function3200
+ call .InitTopPortion
+ call WaitBGMap2
ret
-Function109aff: ; 109aff (42:5aff)
- ld b, $5
-.asm_109b01
+.InitTopPortion: ; 109aff (42:5aff)
+ ld b, 5
+.outer_loop
push hl
- ld de, $11
- ld c, $4
+ ld de, SCREEN_WIDTH - 3
+ ld c, 4
xor a
-.asm_109b08
- ld [hli], a
- inc a
- ld [hli], a
- inc a
+.inner_loop
+rept 3
ld [hli], a
inc a
+endr
ld [hl], a
inc a
add hl, de
dec c
- jr nz, .asm_109b08
+ jr nz, .inner_loop
pop hl
rept 4
inc hl
endr
dec b
- jr nz, .asm_109b01
+ jr nz, .outer_loop
ret
-Function109b1d: ; 109b1d (42:5b1d)
- ld c, $5
-.asm_109b1f
+DrawCreditsBorder: ; 109b1d (42:5b1d)
+ ld c, SCREEN_WIDTH / 4
+.loop
push af
+rept 3
ld [hli], a
inc a
- ld [hli], a
- inc a
- ld [hli], a
- inc a
+endr
ld [hli], a
pop af
dec c
- jr nz, .asm_109b1f
+ jr nz, .loop
ret
GetCreditsPalette: ; 109b2c
@@ -619,7 +623,7 @@ GetCreditsPalette: ; 109b2c
.GetPalAddress
; Each set of palette data is 24 bytes long.
- ld a, [wcf65] ; scene
+ ld a, [wCreditsBorderMon] ; scene
and 3
add a
add a ; * 8
@@ -724,18 +728,18 @@ CreditsPalettes:
RGB 31, 31, 31
; 109bca
-Function109bca: ; 109bca (42:5bca)
- ld hl, wcf64
+Credits_LoadBorderGFX: ; 109bca (42:5bca)
+ ld hl, wCreditsBorderFrame
ld a, [hl]
cp $ff
- jr z, .asm_109bed
+ jr z, .init
and 3
ld e, a
inc a
and 3
ld [hl], a
- ld a, [wcf65]
+ ld a, [wCreditsBorderMon]
and 3
rept 2
add a
@@ -744,50 +748,49 @@ endr
add a
ld e, a
ld d, 0
- ld hl, CreditsMonsFrames
+ ld hl, .Frames
add hl, de
ld a, [hli]
ld h, [hl]
ld l, a
ret
-.asm_109bed
- ld hl, wca00
+.init
+ ld hl, wCreditsFaux2bpp
ret
; 109bf1 (42:5bf1)
-CreditsMonsFrames: ; 109bf1
+.Frames: ; 109bf1
dw CreditsPichuGFX
- dw CreditsPichuGFX + $100
- dw CreditsPichuGFX + $200
- dw CreditsPichuGFX + $300
+ dw CreditsPichuGFX + 16 tiles
+ dw CreditsPichuGFX + 32 tiles
+ dw CreditsPichuGFX + 48 tiles
dw CreditsSmoochumGFX
- dw CreditsSmoochumGFX + $100
- dw CreditsSmoochumGFX + $200
- dw CreditsSmoochumGFX + $300
+ dw CreditsSmoochumGFX + 16 tiles
+ dw CreditsSmoochumGFX + 32 tiles
+ dw CreditsSmoochumGFX + 48 tiles
dw CreditsDittoGFX
- dw CreditsDittoGFX + $100
- dw CreditsDittoGFX + $200
- dw CreditsDittoGFX + $300
+ dw CreditsDittoGFX + 16 tiles
+ dw CreditsDittoGFX + 32 tiles
+ dw CreditsDittoGFX + 48 tiles
dw CreditsIgglybuffGFX
- dw CreditsIgglybuffGFX + $100
- dw CreditsIgglybuffGFX + $200
- dw CreditsIgglybuffGFX + $300
+ dw CreditsIgglybuffGFX + 16 tiles
+ dw CreditsIgglybuffGFX + 32 tiles
+ dw CreditsIgglybuffGFX + 48 tiles
; 109c11
-Function109c11: ; 109c11 (42:5c11)
+Credits_TheEnd: ; 109c11 (42:5c11)
ld a, $40
hlcoord 6, 9
- call Function109c1c
+ call .Load
hlcoord 6, 10
-
-Function109c1c: ; 109c1c (42:5c1c)
- ld c, $8
-.asm_109c1e
+.Load: ; 109c1c (42:5c1c)
+ ld c, 8
+.loop
ld [hli], a
inc a
dec c
- jr nz, .asm_109c1e
+ jr nz, .loop
ret
; 109c24 (42:5c24)
diff --git a/engine/crystal_intro.asm b/engine/crystal_intro.asm
index 69a068ff9..3f238550d 100755
--- a/engine/crystal_intro.asm
+++ b/engine/crystal_intro.asm
@@ -1,22 +1,4 @@
-Functione455c: ; e455c
- hlcoord 1, 1
- ld de, SCREEN_WIDTH
- ld c, $10
-.asm_e4564
- ld [hl], $7f
- add hl, de
- dec c
- jr nz, .asm_e4564
- hlcoord 1, 2
- ld bc, $28
- ld a, [wJumptableIndex]
- call AddNTimes
- ld [hl], $ed
- ret
-; e4579
-
-
-Functione4579: ; e4579
+Copyright_GFPresents: ; e4579
ld de, MUSIC_NONE
call PlayMusic
call ClearBGPalettes
@@ -42,7 +24,7 @@ Functione4579: ; e4579
call DelayFrames
call ClearTileMap
callba GBCOnlyScreen
- call Functione45e8
+ call .GetGFLogoGFX
.joy_loop
call JoyTextDelay
ld a, [hJoyLast]
@@ -52,22 +34,22 @@ Functione4579: ; e4579
bit 7, a
jr nz, .finish
call PlaceGameFreakPresents
- callba Function8cf69
+ callba PlaySpriteAnimations
call DelayFrame
jr .joy_loop
.pressed_button
- call Functione465e
+ call .StopGamefreakAnim
scf
ret
.finish
- call Functione465e
+ call .StopGamefreakAnim
and a
ret
; e45e8
-Functione45e8: ; e45e8
+.GetGFLogoGFX: ; e45e8
ld de, GameFreakLogo
ld hl, VTiles2
lb bc, BANK(GameFreakLogo), $1c
@@ -79,26 +61,26 @@ Functione45e8: ; e45e8
ld [rSVBK], a
ld hl, IntroLogoGFX
- ld de, w6_d000
+ ld de, wDecompressScratch
ld a, BANK(IntroLogoGFX)
call FarDecompress
ld hl, VTiles0
- ld de, w6_d000
+ ld de, wDecompressScratch
lb bc, 1, 8 tiles
call Request2bpp
ld hl, VTiles1
- ld de, w6_d000 + $80 tiles
+ ld de, wDecompressScratch + $80 tiles
lb bc, 1, 8 tiles
call Request2bpp
pop af
ld [rSVBK], a
- callba Function8cf53
+ callba ClearSpriteAnims
depixel 10, 11, 4, 0
- ld a, SPRITE_ANIM_INDEX_03
+ ld a, SPRITE_ANIM_INDEX_GAMEFREAK_LOGO
call _InitSpriteAnimStruct
ld hl, $7
add hl, bc
@@ -111,7 +93,7 @@ Functione45e8: ; e45e8
ld [hl], $30
xor a
ld [wJumptableIndex], a
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
ld [wcf65], a
ld [hSCX], a
ld [hSCY], a
@@ -124,8 +106,8 @@ Functione45e8: ; e45e8
ret
; e465e
-Functione465e: ; e465e
- callba Function8cf53
+.StopGamefreakAnim: ; e465e
+ callba ClearSpriteAnims
call ClearTileMap
call ClearSprites
ld c, 16
@@ -230,9 +212,8 @@ PlaceGameFreakPresents_3: ; e46dd
; e46ed
-
GameFreakLogoJumper: ; e46ed (39:46ed)
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld e, [hl]
ld d, 0
@@ -252,21 +233,20 @@ GameFreakLogoScenes: ; e46fd (39:46fd)
dw GameFreakLogoScene4
dw GameFreakLogoScene5
-
GameFreakLogoScene1: ; e4707 (39:4707)
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
ret
GameFreakLogoScene2: ; e470d (39:470d)
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
and a
jr z, .asm_e4747
ld d, a
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
and $3f
@@ -275,17 +255,17 @@ GameFreakLogoScene2: ; e470d (39:470d)
add $20
.asm_e4723
ld e, a
- callba Functionce765
- ld hl, $7
+ callba BattleAnim_Sine_e
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], e
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
dec [hl]
and $1f
ret nz
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
sub $30
@@ -293,11 +273,12 @@ GameFreakLogoScene2: ; e470d (39:470d)
ld de, SFX_DITTO_BOUNCE
call PlaySFX
ret
+
.asm_e4747
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $0
ld de, SFX_DITTO_POP_UP
@@ -305,18 +286,19 @@ GameFreakLogoScene2: ; e470d (39:470d)
ret
GameFreakLogoScene3: ; e4759 (39:4759)
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
cp $20
jr nc, .asm_e4764
inc [hl]
ret
+
.asm_e4764
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $0
ld de, SFX_DITTO_TRANSFORM
@@ -324,7 +306,7 @@ GameFreakLogoScene3: ; e4759 (39:4759)
ret
GameFreakLogoScene4: ; e4776 (39:4776)
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
cp $40
@@ -351,12 +333,12 @@ endr
ld a, $1
ld [hCGBPalUpdate], a
ret
+
.asm_e47a3
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
call PlaceGameFreakPresents_AdvanceIndex
-
GameFreakLogoScene5: ; e47ab (39:47ab)
ret
; e47ac (39:47ac)
@@ -369,19 +351,23 @@ GameFreakLogoPalettes: ; e47ac
RGB 23, 12, 27
RGB 23, 13, 26
RGB 23, 13, 24
+
RGB 24, 14, 22
RGB 24, 14, 20
RGB 24, 15, 18
RGB 24, 15, 16
+
RGB 25, 16, 14
RGB 25, 16, 12
RGB 25, 17, 10
RGB 25, 17, 08
+
RGB 26, 18, 06
RGB 26, 18, 04
RGB 26, 19, 02
RGB 26, 19, 00
-;' e47cc
+
+; e47cc
GameFreakLogo: ; e47cc
INCBIN "gfx/splash/logo.1bpp"
@@ -396,7 +382,7 @@ CrystalIntro: ; e48ac
push af
ld a, [hVBlank]
push af
- call Functione4901
+ call .InitRAMAddrs
.loop: ; e48bc
call JoyTextDelay
ld a, [hJoyLast]
@@ -406,7 +392,7 @@ CrystalIntro: ; e48ac
bit 7, a
jr nz, .done
call IntroSceneJumper
- callba Function8cf69
+ callba PlaySpriteAnimations
call DelayFrame
jp .loop
@@ -434,7 +420,7 @@ CrystalIntro: ; e48ac
ret
; e4901
-Functione4901: ; e4901
+.InitRAMAddrs: ; e4901
xor a
ld [hVBlank], a
ld a, $1
@@ -459,7 +445,6 @@ endr
jp [hl]
; e491e
-
IntroScenes: ; e491e (39:491e)
dw IntroScene1
dw IntroScene2
@@ -490,7 +475,6 @@ IntroScenes: ; e491e (39:491e)
dw IntroScene27
dw IntroScene28
-
NextIntroScene: ; e4956 (39:4956)
ld hl, wJumptableIndex
inc [hl]
@@ -498,7 +482,7 @@ NextIntroScene: ; e4956 (39:4956)
IntroScene1: ; e495b (39:495b)
; Setup the next scene.
- call Functione54a3
+ call Intro_ClearBGPals
call ClearSprites
call ClearTileMap
xor a
@@ -507,18 +491,18 @@ IntroScene1: ; e495b (39:495b)
ld [rVBK], a
ld hl, IntroTilemap001
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, $0
ld [rVBK], a
ld hl, IntroUnownsGFX
ld de, VTiles2 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
ld hl, IntroPulseGFX
ld de, VTiles0 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
ld hl, IntroTilemap002
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, [rSVBK]
push af
ld a, $5
@@ -540,8 +524,8 @@ IntroScene1: ; e495b (39:495b)
ld [hWX], a
ld a, $90
ld [hWY], a
- callba Function8cf53
- call Functione549e
+ callba ClearSpriteAnims
+ call Intro_SetCGBPalUpdate
xor a
ld [wIntroSceneFrameCounter], a
ld [wcf65], a
@@ -558,15 +542,15 @@ IntroScene2: ; e49d6 (39:49d6)
cp $60
jr nz, .DontPlaySound
push af
- ld de, $5858
- call Functione51dc
+ depixel 11, 11
+ call CrystalIntro_InitUnownAnim
ld de, SFX_INTRO_UNOWN_1
call PlaySFX
pop af
.DontPlaySound
ld [wcf65], a
xor a
- call Functione5223
+ call CrystalIntro_UnownFade
ret
.endscene
call NextIntroScene
@@ -574,7 +558,7 @@ IntroScene2: ; e49d6 (39:49d6)
IntroScene3: ; e49fd (39:49fd)
; More setup. Transition to the outdoor scene.
- call Functione54a3
+ call Intro_ClearBGPals
call ClearSprites
call ClearTileMap
xor a
@@ -583,15 +567,15 @@ IntroScene3: ; e49fd (39:49fd)
ld [rVBK], a
ld hl, IntroTilemap003
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, $0
ld [rVBK], a
ld hl, IntroBackgroundGFX
ld de, VTiles2 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
ld hl, IntroTilemap004
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, [rSVBK]
push af
ld a, $5
@@ -613,8 +597,8 @@ IntroScene3: ; e49fd (39:49fd)
ld [hWX], a
ld a, $90
ld [hWY], a
- call Functione5516
- call Functione549e
+ call Intro_ResetLYOverrides
+ call Intro_SetCGBPalUpdate
xor a
ld [wIntroSceneFrameCounter], a
call NextIntroScene
@@ -622,20 +606,21 @@ IntroScene3: ; e49fd (39:49fd)
IntroScene4: ; e4a69 (39:4a69)
; Scroll the outdoor panorama for a bit.
- call Functione552f
+ call Intro_PerspectiveScrollBG
ld hl, wIntroSceneFrameCounter
ld a, [hl]
cp $80
jr z, .endscene
inc [hl]
ret
+
.endscene
call NextIntroScene
ret
IntroScene5: ; e4a7a (39:4a7a)
; Go back to the Unown.
- call Functione54a3
+ call Intro_ClearBGPals
call ClearSprites
call ClearTileMap
xor a
@@ -645,18 +630,18 @@ IntroScene5: ; e4a7a (39:4a7a)
ld [rVBK], a
ld hl, IntroTilemap005
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, $0
ld [rVBK], a
ld hl, IntroUnownsGFX
ld de, VTiles2 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
ld hl, IntroPulseGFX
ld de, VTiles0 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
ld hl, IntroTilemap006
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, [rSVBK]
push af
ld a, $5
@@ -678,17 +663,17 @@ IntroScene5: ; e4a7a (39:4a7a)
ld [hWX], a
ld a, $90
ld [hWY], a
- callba Function8cf53
- call Functione549e
+ callba ClearSpriteAnims
+ call Intro_SetCGBPalUpdate
xor a
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
ld [wcf65], a
call NextIntroScene
ret
IntroScene6: ; e4af7 (39:4af7)
; Two more Unown (I, H) fade in.
- ld hl, wcf64
+ ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $80
@@ -700,74 +685,87 @@ IntroScene6: ; e4af7 (39:4af7)
cp $20
jr z, .FirstUnown
jr .NoUnown
+
.FirstUnown
push af
- ld de, $3878
- call Functione51dc
+ depixel 7, 15
+ call CrystalIntro_InitUnownAnim
ld de, SFX_INTRO_UNOWN_2
call PlaySFX
pop af
.NoUnown
ld [wcf65], a
xor a
- call Functione5223
+ call CrystalIntro_UnownFade
ret
+
.SecondUnown
push af
- ld de, $7030
- call Functione51dc
+ depixel 14, 6
+ call CrystalIntro_InitUnownAnim
ld de, SFX_INTRO_UNOWN_1
call PlaySFX
pop af
.StopUnown
ld [wcf65], a
ld a, $1
- call Functione5223
+ call CrystalIntro_UnownFade
ret
+
.endscene
call NextIntroScene
ret
IntroScene7: ; e4b3f (39:4b3f)
; Back to the outdoor scene.
- call Functione54a3
+ call Intro_ClearBGPals
call ClearSprites
call ClearTileMap
xor a
ld [hBGMapMode], a
+
ld a, $1
ld [rVBK], a
ld hl, IntroTilemap003
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
+
ld hl, IntroPichuWooperGFX
ld de, VTiles0 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
+
ld a, $0
ld [rVBK], a
ld hl, IntroSuicuneRunGFX
ld de, VTiles0 tile $00
- call Functione54de
+ call Intro_DecompressRequest2bpp_255Tiles
+
ld hl, IntroBackgroundGFX
ld de, VTiles2 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
+
ld hl, IntroTilemap004
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
+
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
+
ld hl, Palette_e5edd
ld de, UnknBGPals
ld bc, $80
call CopyBytes
+
ld hl, Palette_e5edd
ld de, BGPals
ld bc, $80
call CopyBytes
+
pop af
ld [rSVBK], a
+
xor a
ld [hSCX], a
ld [hSCY], a
@@ -775,14 +773,14 @@ IntroScene7: ; e4b3f (39:4b3f)
ld [hWX], a
ld a, $90
ld [hWY], a
- call Functione5516
- callba Function8cf53
+ call Intro_ResetLYOverrides
+ callba ClearSpriteAnims
depixel 13, 27, 4, 0
ld a, SPRITE_ANIM_INDEX_26
call _InitSpriteAnimStruct
ld a, $f0
- ld [wc3c0], a
- call Functione549e
+ ld [wGlobalAnimXOffset], a
+ call Intro_SetCGBPalUpdate
xor a
ld [wIntroSceneFrameCounter], a
ld [wcf65], a
@@ -795,24 +793,26 @@ IntroScene8: ; e4bd3 (39:4bd3)
ld a, [hl]
inc [hl]
cp $40
- jr z, .asm_e4be2
- jr nc, .asm_e4be8
- call Functione552f
+ jr z, .suicune_sound
+ jr nc, .animate_suicune
+ call Intro_PerspectiveScrollBG
ret
-.asm_e4be2
+
+.suicune_sound
ld de, SFX_INTRO_SUICUNE_3
call PlaySFX
-.asm_e4be8
- ld a, [wc3c0]
+.animate_suicune
+ ld a, [wGlobalAnimXOffset]
and a
- jr z, .asm_e4bf4
+ jr z, .finish
sub $8
- ld [wc3c0], a
+ ld [wGlobalAnimXOffset], a
ret
-.asm_e4bf4
+
+.finish
ld de, SFX_INTRO_SUICUNE_2
call PlaySFX
- callba Function8d03d
+ callba DeinitializeAllSprites
call NextIntroScene
ret
@@ -822,13 +822,16 @@ IntroScene9: ; e4c04 (39:4c04)
ld [hLCDStatCustom], a
call ClearSprites
hlcoord 0, 0, AttrMap
- ld bc, $f0
+ ; first 12 rows have palette 1
+ ld bc, 12 * SCREEN_WIDTH
ld a, $1
call ByteFill
- ld bc, $3c
+ ; middle 3 rows have palette 2
+ ld bc, 3 * SCREEN_WIDTH
ld a, $2
call ByteFill
- ld bc, $3c
+ ; last three rows have palette 3
+ ld bc, 3 * SCREEN_WIDTH
ld a, $3
call ByteFill
ld a, $2
@@ -836,7 +839,7 @@ IntroScene9: ; e4c04 (39:4c04)
call DelayFrame
call DelayFrame
call DelayFrame
- ld a, $c
+ ld a, $c ; $980c
ld [hBGMapAddress], a
call DelayFrame
call DelayFrame
@@ -844,16 +847,16 @@ IntroScene9: ; e4c04 (39:4c04)
xor a
ld [hBGMapMode], a
ld [hBGMapAddress], a
- ld [wc3c0], a
+ ld [wGlobalAnimXOffset], a
xor a
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
call NextIntroScene
ret
IntroScene10: ; e4c4f (39:4c4f)
; Wooper and Pichu enter.
- call Functione546d
- ld hl, wcf64
+ call Intro_RustleGrass
+ ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $c0
@@ -885,7 +888,7 @@ IntroScene10: ; e4c4f (39:4c4f)
IntroScene11: ; e4c86 (39:4c86)
; Back to Unown again.
- call Functione54a3
+ call Intro_ClearBGPals
call ClearSprites
call ClearTileMap
xor a
@@ -895,15 +898,15 @@ IntroScene11: ; e4c86 (39:4c86)
ld [rVBK], a
ld hl, IntroTilemap007
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, $0
ld [rVBK], a
ld hl, IntroUnownsGFX
ld de, VTiles2 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
ld hl, IntroTilemap008
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, [rSVBK]
push af
ld a, $5
@@ -925,8 +928,8 @@ IntroScene11: ; e4c86 (39:4c86)
ld [hWX], a
ld a, $90
ld [hWY], a
- callba Function8cf53
- call Functione549e
+ callba ClearSpriteAnims
+ call Intro_SetCGBPalUpdate
xor a
ld [wIntroSceneFrameCounter], a
ld [wcf65], a
@@ -935,14 +938,15 @@ IntroScene11: ; e4c86 (39:4c86)
IntroScene12: ; e4cfa (39:4cfa)
; Even more Unown.
- call Functione4d36
+ call .PlayUnownSound
ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $c0
- jr nc, .asm_e4d32
+ jr nc, .done
cp $80
- jr nc, .asm_e4d1d
+ jr nc, .second_half
+; first half
ld c, a
and $1f
sla a
@@ -951,9 +955,11 @@ IntroScene12: ; e4cfa (39:4cfa)
and $e0
srl a
swap a
- call Functione5223
+ call CrystalIntro_UnownFade
ret
-.asm_e4d1d
+
+.second_half
+; double speed
ld c, a
and $f
sla a
@@ -963,13 +969,14 @@ IntroScene12: ; e4cfa (39:4cfa)
and $70
or $40
swap a
- call Functione5223
+ call CrystalIntro_UnownFade
ret
-.asm_e4d32
+
+.done
call NextIntroScene
ret
-Functione4d36: ; e4d36 (39:4d36)
+.PlayUnownSound: ; e4d36 (39:4d36)
ld a, [wIntroSceneFrameCounter]
ld c, a
ld hl, .UnownSounds
@@ -1003,12 +1010,11 @@ endr
dbw $90, SFX_INTRO_UNOWN_2
dbw $a0, SFX_INTRO_UNOWN_1
dbw $b0, SFX_INTRO_UNOWN_2
- db $ff
-; e4d6d
+ db -1 ; e4d6d
IntroScene13: ; e4d6d (39:4d6d)
; Switch scenes again.
- call Functione54a3
+ call Intro_ClearBGPals
call ClearSprites
call ClearTileMap
xor a
@@ -1017,18 +1023,18 @@ IntroScene13: ; e4d6d (39:4d6d)
ld [rVBK], a
ld hl, IntroTilemap003
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, $0
ld [rVBK], a
ld hl, IntroSuicuneRunGFX
ld de, VTiles0 tile $00
- call Functione54de
+ call Intro_DecompressRequest2bpp_255Tiles
ld hl, IntroBackgroundGFX
ld de, VTiles2 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
ld hl, IntroTilemap004
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, [rSVBK]
push af
ld a, $5
@@ -1050,17 +1056,17 @@ IntroScene13: ; e4d6d (39:4d6d)
ld [hWX], a
ld a, $90
ld [hWY], a
- callba Function8cf53
+ callba ClearSpriteAnims
depixel 13, 11, 4, 0
ld a, SPRITE_ANIM_INDEX_26
call _InitSpriteAnimStruct
ld de, MUSIC_CRYSTAL_OPENING
call PlayMusic
xor a
- ld [wc3c0], a
- call Functione549e
+ ld [wGlobalAnimXOffset], a
+ call Intro_SetCGBPalUpdate
xor a
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
ld [wcf65], a
call NextIntroScene
ret
@@ -1070,7 +1076,7 @@ IntroScene14: ; e4dfa (39:4dfa)
ld a, [hSCX]
sub 10
ld [hSCX], a
- ld hl, wcf64
+ ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $80
@@ -1089,21 +1095,21 @@ IntroScene14: ; e4dfa (39:4dfa)
.asm_e4e1a
ld a, $1
ld [wcf65], a
- ld a, [wc3c0]
+ ld a, [wGlobalAnimXOffset]
cp $88
jr c, .asm_e4e2c
sub $8
- ld [wc3c0], a
+ ld [wGlobalAnimXOffset], a
ret
.asm_e4e2c
- callba Function8d03d
+ callba DeinitializeAllSprites
ret
.asm_e4e33
- ld a, [wc3c0]
+ ld a, [wGlobalAnimXOffset]
sub $2
- ld [wc3c0], a
+ ld [wGlobalAnimXOffset], a
ret
.done
@@ -1112,7 +1118,7 @@ IntroScene14: ; e4dfa (39:4dfa)
IntroScene15: ; e4e40 (39:4e40)
; Transition to a new scene.
- call Functione54a3
+ call Intro_ClearBGPals
call ClearSprites
call ClearTileMap
xor a
@@ -1121,23 +1127,23 @@ IntroScene15: ; e4e40 (39:4e40)
ld [rVBK], a
ld hl, IntroTilemap009
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, $0
ld [rVBK], a
ld hl, IntroSuicuneJumpGFX
ld de, VTiles2 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
ld hl, IntroUnownBackGFX
ld de, VTiles0 tile $00
- call Functione54c2
- ld de, GFX_e7a5d
+ call Intro_DecompressRequest2bpp_128Tiles
+ ld de, IntroGrass4GFX
ld hl, VTiles1 tile $00
- lb bc, BANK(GFX_e7a5d), 1
+ lb bc, BANK(IntroGrass4GFX), 1
call Request2bpp
ld hl, IntroTilemap010
debgcoord 0, 0
- call Functione54fa
- call Functione541b
+ call Intro_DecompressRequest2bpp_64Tiles
+ call Intro_LoadTilemap
ld a, [rSVBK]
push af
ld a, $5
@@ -1160,8 +1166,8 @@ IntroScene15: ; e4e40 (39:4e40)
ld [hWX], a
ld a, $90
ld [hWY], a
- callba Function8cf53
- call Functione549e
+ callba ClearSpriteAnims
+ call Intro_SetCGBPalUpdate
depixel 8, 5
ld a, SPRITE_ANIM_INDEX_2A
call _InitSpriteAnimStruct
@@ -1169,19 +1175,19 @@ IntroScene15: ; e4e40 (39:4e40)
ld a, SPRITE_ANIM_INDEX_2B
call _InitSpriteAnimStruct
xor a
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
ld [wcf65], a
call NextIntroScene
ret
IntroScene16: ; e4edc (39:4edc)
; Suicune shows its face. An Unown appears in front.
- ld hl, wcf64
+ ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $80
jr nc, .done
- call Functione5441
+ call Intro_Scene16_AnimateSuicune
ld a, [hSCY]
and a
ret z
@@ -1194,7 +1200,7 @@ IntroScene16: ; e4edc (39:4edc)
IntroScene17: ; e4ef5 (39:4ef5)
; ...
- call Functione54a3
+ call Intro_ClearBGPals
call ClearSprites
call ClearTileMap
xor a
@@ -1203,15 +1209,15 @@ IntroScene17: ; e4ef5 (39:4ef5)
ld [rVBK], a
ld hl, IntroTilemap011
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, $0
ld [rVBK], a
ld hl, IntroSuicuneCloseGFX
ld de, VTiles1 tile $00
- call Functione54de
+ call Intro_DecompressRequest2bpp_255Tiles
ld hl, IntroTilemap012
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, [rSVBK]
push af
ld a, $5
@@ -1233,17 +1239,17 @@ IntroScene17: ; e4ef5 (39:4ef5)
ld [hWX], a
ld a, $90
ld [hWY], a
- callba Function8cf53
- call Functione549e
+ callba ClearSpriteAnims
+ call Intro_SetCGBPalUpdate
xor a
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
ld [wcf65], a
call NextIntroScene
ret
IntroScene18: ; e4f67 (39:4f67)
; Suicune close up.
- ld hl, wcf64
+ ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $60
@@ -1260,7 +1266,7 @@ IntroScene18: ; e4f67 (39:4f67)
IntroScene19: ; e4f7e (39:4f7e)
; More setup.
- call Functione54a3
+ call Intro_ClearBGPals
call ClearSprites
call ClearTileMap
xor a
@@ -1269,23 +1275,23 @@ IntroScene19: ; e4f7e (39:4f7e)
ld [rVBK], a
ld hl, IntroTilemap013
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, $0
ld [rVBK], a
ld hl, IntroSuicuneBackGFX
ld de, VTiles2 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
ld hl, IntroUnownsGFX
ld de, VTiles1 tile $00
- call Functione54c2
- ld de, GFX_e7a5d
+ call Intro_DecompressRequest2bpp_128Tiles
+ ld de, IntroGrass4GFX
ld hl, VTiles1 tile $7f
- lb bc, BANK(GFX_e7a5d), 1
+ lb bc, BANK(IntroGrass4GFX), 1
call Request2bpp
ld hl, IntroTilemap014
debgcoord 0, 0
- call Functione54fa
- call Functione541b
+ call Intro_DecompressRequest2bpp_64Tiles
+ call Intro_LoadTilemap
ld a, [rSVBK]
push af
ld a, $5
@@ -1308,32 +1314,32 @@ IntroScene19: ; e4f7e (39:4f7e)
ld [hWX], a
ld a, $90
ld [hWY], a
- callba Function8cf53
- ld hl, wc300
+ callba ClearSpriteAnims
+ ld hl, wSpriteAnimDict
xor a
ld [hli], a
ld [hl], $7f
- call Functione549e
+ call Intro_SetCGBPalUpdate
depixel 12, 0
ld a, SPRITE_ANIM_INDEX_2B
call _InitSpriteAnimStruct
xor a
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
ld [wcf65], a
call NextIntroScene
ret
IntroScene20: ; e5019 (39:5019)
; Suicune running away. A bunch of Unown appear.
- ld hl, wcf64
+ ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $98
- jr nc, .asm_e5059
+ jr nc, .finished
cp $58
ret nc
cp $40
- jr nc, .asm_e5032
+ jr nc, .AppearUnown
cp $28
ret nc
ld a, [hSCY]
@@ -1341,7 +1347,7 @@ IntroScene20: ; e5019 (39:5019)
ld [hSCY], a
ret
-.asm_e5032
+.AppearUnown
sub $18
ld c, a
and $3
@@ -1353,56 +1359,56 @@ IntroScene20: ; e5019 (39:5019)
srl a
ld [wcf65], a
xor a
- call Functione5348
+ call Intro_Scene20_AppearUnown
ret
; e5049 (39:5049)
-
+; unused
ld a, c
and $1c
srl a
srl a
ld [wcf65], a
ld a, 1
- call Functione5348
+ call Intro_Scene20_AppearUnown
ret
-.asm_e5059
+.finished
call NextIntroScene
ret
IntroScene21: ; e505d (39:505d)
; Suicune gets more distant and turns black.
- call Functione5451
+ call Intro_ColoredSuicuneFrameSwap
ld c, 3
call DelayFrames
xor a
ld [hBGMapMode], a
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
ld [wcf65], a
call NextIntroScene
ret
IntroScene22: ; e5072 (39:5072)
- ld hl, wcf64
+ ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $8
jr nc, .done
ret
.done
- callba Function8d03d
+ callba DeinitializeAllSprites
call NextIntroScene
ret
IntroScene23: ; e5086 (39:5086)
xor a
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
call NextIntroScene
ret
IntroScene24: ; e508e (39:508e)
; Fade to white.
- ld hl, wcf64
+ ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $20
@@ -1411,25 +1417,27 @@ IntroScene24: ; e508e (39:508e)
ld c, a
and $3
ret nz
+
ld a, c
and $1c
sla a
- call Functione5172
+ call Intro_Scene24_ApplyPaletteFade
ret
.done
ld a, $40
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
call NextIntroScene
ret
IntroScene25: ; e50ad (39:50ad)
; Wait around a bit.
- ld a, [wcf64]
+ ld a, [wIntroSceneFrameCounter]
dec a
jr z, .done
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
ret
+
.done
call NextIntroScene
ret
@@ -1445,15 +1453,15 @@ IntroScene26: ; e50bb (39:50bb)
ld [rVBK], a
ld hl, IntroTilemap015
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, $0
ld [rVBK], a
ld hl, IntroCrystalUnownsGFX
ld de, VTiles2 tile $00
- call Functione54c2
+ call Intro_DecompressRequest2bpp_128Tiles
ld hl, IntroTilemap017
debgcoord 0, 0
- call Functione54fa
+ call Intro_DecompressRequest2bpp_64Tiles
ld a, [rSVBK]
push af
ld a, $5
@@ -1475,10 +1483,10 @@ IntroScene26: ; e50bb (39:50bb)
ld [hWX], a
ld a, $90
ld [hWY], a
- callba Function8cf53
- call Functione549e
+ callba ClearSpriteAnims
+ call Intro_SetCGBPalUpdate
xor a
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
ld [wcf65], a
call NextIntroScene
ret
@@ -1487,7 +1495,7 @@ IntroScene27: ; e512d (39:512d)
; Spell out C R Y S T A L with Unown.
ld hl, wcf65
inc [hl]
- ld hl, wcf64
+ ld hl, wIntroSceneFrameCounter
ld a, [hl]
inc [hl]
cp $80
@@ -1499,18 +1507,18 @@ IntroScene27: ; e512d (39:512d)
ld a, c
and $70
swap a
- call Functione539d
+ call Intro_FadeUnownWordPals
ret
.done
call NextIntroScene
ld a, $80
- ld [wcf64], a
+ ld [wIntroSceneFrameCounter], a
ret
IntroScene28: ; e5152 (39:5152)
; Cut out when the music ends, and lead into the title screen.
- ld hl, wcf64
+ ld hl, wIntroSceneFrameCounter
ld a, [hl]
and a
jr z, .done
@@ -1533,32 +1541,33 @@ IntroScene28: ; e5152 (39:5152)
set 7, [hl]
ret
-
-Functione5172: ; e5172 (39:5172)
- ld hl, Unknown_e519c
+Intro_Scene24_ApplyPaletteFade: ; e5172 (39:5172)
+; load the (a)th palette from .FadePals to all BGPals
+ ld hl, .FadePals
add l
ld l, a
ld a, $0
adc h
ld h, a
+
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
ld de, BGPals
- ld b, $8
-.asm_e5187
+ ld b, 8 ; number of BG pals
+.loop1
push hl
- ld c, $8
-.asm_e518a
+ ld c, 8 ; number of bytes per pal
+.loop2
ld a, [hli]
ld [de], a
inc de
dec c
- jr nz, .asm_e518a
+ jr nz, .loop2
pop hl
dec b
- jr nz, .asm_e5187
+ jr nz, .loop1
pop af
ld [rSVBK], a
ld a, $1
@@ -1566,7 +1575,7 @@ Functione5172: ; e5172 (39:5172)
ret
; e519c (39:519c)
-Unknown_e519c: ; e519c
+.FadePals: ; e519c
; Fade to white.
RGB 24, 12, 09
RGB 31, 31, 31
@@ -1607,49 +1616,50 @@ Unknown_e519c: ; e519c
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
+
; e51dc
-Functione51dc: ; e51dc (39:51dc)
+CrystalIntro_InitUnownAnim: ; e51dc (39:51dc)
push de
ld a, SPRITE_ANIM_INDEX_29
call _InitSpriteAnimStruct
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $8
ld a, $3c
- call Function3b3c
+ call ReinitSpriteAnimFrame
pop de
push de
ld a, SPRITE_ANIM_INDEX_29
call _InitSpriteAnimStruct
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $18
ld a, $3b
- call Function3b3c
+ call ReinitSpriteAnimFrame
pop de
push de
ld a, SPRITE_ANIM_INDEX_29
call _InitSpriteAnimStruct
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $28
ld a, $39
- call Function3b3c
+ call ReinitSpriteAnimFrame
pop de
ld a, SPRITE_ANIM_INDEX_29
call _InitSpriteAnimStruct
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $38
ld a, $3a
- call Function3b3c
+ call ReinitSpriteAnimFrame
ret
-Functione5223: ; e5223 (39:5223)
+CrystalIntro_UnownFade: ; e5223 (39:5223)
rept 3
add a
endr
@@ -1663,28 +1673,31 @@ endr
ld a, [wcf65]
and $3f
cp $1f
- jr z, .asm_e523e
- jr c, .asm_e523e
+ jr z, .okay
+ jr c, .okay
ld c, a
ld a, $3f
sub c
-.asm_e523e
+.okay
+
ld c, a
ld b, $0
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
+
push hl
push bc
ld hl, BGPals
- ld bc, $40
+ ld bc, 4 * 16
xor a
call ByteFill
pop bc
pop hl
+
push hl
- ld hl, Unknown_e5288
+ ld hl, .BWFade
rept 2
add hl, bc
endr
@@ -1696,8 +1709,9 @@ endr
ld [hli], a
ld a, d
ld [hli], a
+
push hl
- ld hl, Unknown_e52c8
+ ld hl, .BlackLBlueFade
rept 2
add hl, bc
endr
@@ -1709,8 +1723,9 @@ endr
ld [hli], a
ld a, d
ld [hli], a
+
push hl
- ld hl, Unknown_e5308
+ ld hl, .BlackBlueFade
rept 2
add hl, bc
endr
@@ -1722,6 +1737,7 @@ endr
ld [hli], a
ld a, d
ld [hli], a
+
pop af
ld [rSVBK], a
ld a, $1
@@ -1729,7 +1745,7 @@ endr
ret
; e5288 (39:5288)
-Unknown_e5288: ; e5288
+.BWFade: ; e5288
; Fade between black and white.
hue = 0
rept 32
@@ -1738,7 +1754,7 @@ hue = hue + 1
endr
; e52c8
-Unknown_e52c8: ; e52c8
+.BlackLBlueFade: ; e52c8
; Fade between black and light blue.
hue = 0
rept 32
@@ -1747,7 +1763,7 @@ hue = hue + 1
endr
; e5308
-Unknown_e5308: ; e5308
+.BlackBlueFade: ; e5308
; Fade between black and blue.
hue = 0
rept 32
@@ -1756,14 +1772,18 @@ hue = hue + 1
endr
; e5348
-Functione5348: ; e5348 (39:5348)
+Intro_Scene20_AppearUnown: ; e5348 (39:5348)
+; Spawn the palette for the nth Unown
and a
- jr nz, .asm_e5350
- ld hl, Palette_e538d
- jr .asm_e5353
-.asm_e5350
- ld hl, Palette_e5395
-.asm_e5353
+ jr nz, .load_pal_2
+
+ ld hl, .pal1
+ jr .got_pointer
+
+.load_pal_2
+ ld hl, .pal2
+
+.got_pointer
ld a, [wcf65]
and $7
rept 3
@@ -1774,17 +1794,21 @@ endr
push af
ld a, $5
ld [rSVBK], a
+
push bc
ld de, BGPals
+
ld a, c
add e
ld e, a
ld a, $0
adc d
ld d, a
- ld bc, $8
+
+ ld bc, 8
call CopyBytes
pop bc
+
ld de, UnknBGPals
ld a, c
add e
@@ -1792,8 +1816,10 @@ endr
ld a, $0
adc d
ld d, a
- ld bc, $8
+
+ ld bc, 8
call CopyBytes
+
pop af
ld [rSVBK], a
ld a, $1
@@ -1801,21 +1827,23 @@ endr
ret
; e538d (39:538d)
-Palette_e538d: ; e538d
+.pal1: ; e538d
RGB 24, 12, 09
RGB 31, 31, 31
RGB 12, 00, 31
RGB 00, 00, 00
+
; e5395
-Palette_e5395: ; e5395
+.pal2: ; e5395
RGB 24, 12, 09
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
+
; e539d
-Functione539d: ; e539d (39:539d)
+Intro_FadeUnownWordPals: ; e539d (39:539d)
rept 3
add a
endr
@@ -1830,12 +1858,14 @@ endr
add a
ld c, a
ld b, $0
+
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
+
push hl
- ld hl, Palette_e53db
+ ld hl, .FastFadePalettes
add hl, bc
ld a, [hli]
ld d, [hl]
@@ -1845,8 +1875,9 @@ endr
ld [hli], a
ld a, d
ld [hli], a
+
push hl
- ld hl, Palette_e53fb
+ ld hl, .SlowFadePalettes
add hl, bc
ld a, [hli]
ld d, [hl]
@@ -1856,6 +1887,7 @@ endr
ld [hli], a
ld a, d
ld [hli], a
+
pop af
ld [rSVBK], a
ld a, $1
@@ -1863,7 +1895,7 @@ endr
ret
; e53db (39:53db)
-Palette_e53db: ; e53db
+.FastFadePalettes: ; e53db
hue = 31
rept 8
RGB hue, hue, hue
@@ -1873,7 +1905,7 @@ hue = hue + -2
endr
; e53fb
-Palette_e53fb: ; e53fb
+.SlowFadePalettes: ; e53fb
hue = 31
rept 16
RGB hue, hue, hue
@@ -1881,76 +1913,80 @@ hue = hue + -1
endr
; e541b
-Functione541b: ; e541b (39:541b)
+Intro_LoadTilemap: ; e541b (39:541b)
ld a, [rSVBK]
push af
ld a, $6
ld [rSVBK], a
- ld hl, w6_d000
+
+ ld hl, wDecompressScratch
decoord 0, 0
ld b, SCREEN_HEIGHT
-.asm_e542a
+.row
ld c, SCREEN_WIDTH
-.asm_e542c
+.col
ld a, [hli]
ld [de], a
inc de
dec c
- jr nz, .asm_e542c
- ld a, $c
+ jr nz, .col
+ ; add hl, $20 - SCREEN_WIDTH
+ ld a, $20 - SCREEN_WIDTH
add l
ld l, a
ld a, $0
adc h
ld h, a
dec b
- jr nz, .asm_e542a
+ jr nz, .row
+
pop af
ld [rSVBK], a
ret
-Functione5441: ; e5441 (39:5441)
- ld a, [wcf64]
+Intro_Scene16_AnimateSuicune: ; e5441 (39:5441)
+ ld a, [wIntroSceneFrameCounter]
and $3
- jr z, Functione5451
+ jr z, Intro_ColoredSuicuneFrameSwap
cp $3
- jr z, .asm_e544d
+ jr z, .PrepareForSuicuneSwap
ret
-.asm_e544d
+
+.PrepareForSuicuneSwap
xor a
ld [hBGMapMode], a
ret
-Functione5451: ; e5451 (39:5451)
+Intro_ColoredSuicuneFrameSwap: ; e5451 (39:5451)
hlcoord 0, 0
ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
-.asm_e5457
+.loop
ld a, [hl]
and a
- jr z, .asm_e5462
+ jr z, .skip
cp $80
- jr nc, .asm_e5462
+ jr nc, .skip
xor $8
ld [hl], a
-.asm_e5462
+.skip
inc hl
dec bc
ld a, c
or b
- jr nz, .asm_e5457
+ jr nz, .loop
ld a, $1
ld [hBGMapMode], a
ret
-Functione546d: ; e546d (39:546d)
- ld a, [wcf64]
- cp $24
+Intro_RustleGrass: ; e546d (39:546d)
+ ld a, [wIntroSceneFrameCounter]
+ cp 36
ret nc
and $c
srl a
ld e, a
ld d, $0
- ld hl, Unknown_e5496
+ ld hl, .RustlingGrassPointers
add hl, de
ld a, [hli]
ld [Requested2bppSource], a
@@ -1960,32 +1996,34 @@ Functione546d: ; e546d (39:546d)
ld [Requested2bppDest], a
ld a, (VTiles2 tile $09) / $100
ld [Requested2bppDest + 1], a
- ld a, $4
- ld [Requested2bpp], a
+ ld a, 4
+ ld [Requested2bppSize], a
ret
; e5496 (39:5496)
-Unknown_e5496: ; e5496
- dw GFX_e799d
- dw GFX_e79dd
- dw GFX_e7a1d
- dw GFX_e79dd
+.RustlingGrassPointers: ; e5496
+ dw IntroGrass1GFX
+ dw IntroGrass2GFX
+ dw IntroGrass3GFX
+ dw IntroGrass2GFX
; e549e
-Functione549e: ; e549e (39:549e)
+Intro_SetCGBPalUpdate: ; e549e (39:549e)
ld a, $1
ld [hCGBPalUpdate], a
ret
-Functione54a3: ; e54a3 (39:54a3)
+Intro_ClearBGPals: ; e54a3 (39:54a3)
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
+
ld hl, BGPals
- ld bc, $80
+ ld bc, 16 * 8
xor a
call ByteFill
+
pop af
ld [rSVBK], a
ld a, $1
@@ -1994,83 +2032,99 @@ Functione54a3: ; e54a3 (39:54a3)
call DelayFrame
ret
-Functione54c2: ; e54c2 (39:54c2)
+Intro_DecompressRequest2bpp_128Tiles: ; e54c2 (39:54c2)
ld a, [rSVBK]
push af
ld a, $6
ld [rSVBK], a
+
push de
- ld de, w6_d000
+ ld de, wDecompressScratch
call Decompress
pop hl
- ld de, w6_d000
- ld bc, $180
+
+ ld de, wDecompressScratch
+ lb bc, $01, $80
call Request2bpp
+
pop af
ld [rSVBK], a
ret
-Functione54de: ; e54de (39:54de)
+Intro_DecompressRequest2bpp_255Tiles: ; e54de (39:54de)
ld a, [rSVBK]
push af
ld a, $6
ld [rSVBK], a
+
push de
- ld de, w6_d000
+ ld de, wDecompressScratch
call Decompress
pop hl
- ld de, w6_d000
- ld bc, $1ff
+
+ ld de, wDecompressScratch
+ lb bc, $01, $ff
call Request2bpp
+
pop af
ld [rSVBK], a
ret
-Functione54fa: ; e54fa (39:54fa)
+Intro_DecompressRequest2bpp_64Tiles: ; e54fa (39:54fa)
ld a, [rSVBK]
push af
ld a, $6
ld [rSVBK], a
+
push de
- ld de, w6_d000
+ ld de, wDecompressScratch
call Decompress
pop hl
- ld de, w6_d000
- ld bc, $140
+
+ ld de, wDecompressScratch
+ lb bc, $01, $40
call Request2bpp
+
pop af
ld [rSVBK], a
ret
-Functione5516: ; e5516 (39:5516)
+Intro_ResetLYOverrides: ; e5516 (39:5516)
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
+
ld hl, LYOverrides
- ld bc, $90
+ ld bc, LYOverridesEnd - LYOverrides
xor a
call ByteFill
+
pop af
ld [rSVBK], a
ld a, $43
ld [hLCDStatCustom], a
ret
-Functione552f: ; e552f (39:552f)
+Intro_PerspectiveScrollBG: ; e552f (39:552f)
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
- ld a, [wcf64]
+ ; Scroll the grass every frame.
+ ; Scroll the trees every other frame and at half speed.
+ ; This creates an illusion of perspective.
+ ld a, [wIntroSceneFrameCounter]
and $1
- jr z, .asm_e5548
+ jr z, .skip
+ ; trees in the back
ld hl, LYOverrides
ld a, [hl]
inc a
ld bc, $5f
call ByteFill
-.asm_e5548
+.skip
+ ; grass in the front
ld hl, LYOverrides + $5f
ld a, [hl]
rept 2
@@ -2109,62 +2163,77 @@ Palette_e5edd: ; e5edd
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 0, 4, 5
RGB 1, 8, 5
RGB 4, 12, 9
RGB 24, 12, 9
+
RGB 0, 4, 5
RGB 9, 6, 8
RGB 8, 16, 5
RGB 5, 10, 4
+
RGB 31, 31, 31
RGB 9, 6, 8
RGB 18, 9, 9
RGB 13, 8, 9
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 31, 31, 31
RGB 2, 5, 22
RGB 1, 5, 12
+
RGB 31, 31, 31
RGB 31, 10, 25
RGB 31, 21, 0
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 21, 31
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
@@ -2207,62 +2276,77 @@ Palette_365ad: ; e65ad
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
+
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
+
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
+
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
+
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
+
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
+
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
+
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 10, 0, 10
RGB 19, 0, 19
RGB 31, 0, 31
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
@@ -2285,62 +2369,77 @@ Palette_e679d: ; e679d
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
+
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
+
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
+
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
+
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
+
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
+
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
+
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
RGB 31, 31, 31
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
@@ -2363,62 +2462,77 @@ Palette_e6d6d: ; e6d6d
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 24, 12, 9
RGB 31, 31, 31
RGB 8, 9, 31
RGB 0, 0, 0
+
RGB 24, 12, 9
RGB 12, 20, 31
RGB 19, 8, 31
RGB 0, 0, 0
+
RGB 12, 20, 31
RGB 8, 9, 31
RGB 19, 8, 31
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 12, 20, 31
RGB 8, 9, 31
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
@@ -2453,62 +2567,77 @@ Palette_e77dd: ; e77dd
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 24, 12, 9
RGB 31, 31, 31
RGB 8, 9, 31
RGB 0, 0, 0
+
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
+
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
+
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
+
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
+
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
+
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
RGB 24, 12, 9
+
RGB 31, 31, 31
RGB 31, 31, 31
RGB 12, 0, 31
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 21, 9, 0
RGB 21, 9, 0
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
RGB 0, 0, 0
+
RGB 31, 31, 31
RGB 20, 20, 20
RGB 11, 11, 11
@@ -2518,14 +2647,12 @@ IntroUnownBackGFX: ; e785d
INCBIN "gfx/intro/unown_back.2bpp.lz"
; e799d
-GFX_e799d: ; e799d
-INCBIN "gfx/unknown/0e799d.2bpp"
-GFX_e79dd: ; e79dd
-INCBIN "gfx/unknown/0e79dd.2bpp"
-GFX_e7a1d: ; e7a1d
-INCBIN "gfx/unknown/0e7a1d.2bpp"
-
-GFX_e7a5d: ; e7a5d
-INCBIN "gfx/unknown/0e7a5d.2bpp"
-
+IntroGrass1GFX: ; e799d
+INCBIN "gfx/intro/grass1.2bpp"
+IntroGrass2GFX: ; e79dd
+INCBIN "gfx/intro/grass2.2bpp"
+IntroGrass3GFX: ; e7a1d
+INCBIN "gfx/intro/grass3.2bpp"
+IntroGrass4GFX: ; e7a5d
+INCBIN "gfx/intro/grass4.2bpp"
diff --git a/engine/debug.asm b/engine/debug.asm
index 0d2720990..10e446b75 100755
--- a/engine/debug.asm
+++ b/engine/debug.asm
@@ -395,7 +395,7 @@ Function81adb: ; 81adb
hlcoord 4, 1
call PlaceString
xor a
- ld [wc2c6], a
+ ld [wBoxAlignment], a
hlcoord 12, 3
call _PrepMonFrontpic
ld de, VTiles2 tile $31
@@ -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
@@ -542,7 +542,7 @@ Function81c33: ; 81c33
ret
.asm_81c69
- ld hl, wcda9
+ ld hl, wSGBPals
ld a, $1
ld [hli], a
ld a, $ff
@@ -562,7 +562,7 @@ rept 2
ld [hli], a
endr
ld [hl], a
- ld hl, wcda9
+ ld hl, wSGBPals
call Function81f0c
hlcoord 10, 2
ld de, wc608
@@ -828,7 +828,7 @@ Function81df4: ; 81df4
ld [wd265], a
predef GetTMHMMove
ld a, [wd265]
- ld [wd262], a
+ ld [wPutativeTMHMMove], a
call GetMoveName
hlcoord 10, 12
call PlaceString
@@ -1149,7 +1149,7 @@ TilesetColorTest:
ld [hMapAnims], a
call ClearSprites
call OverworldTextModeSwitch
- call Function3200
+ call WaitBGMap2
xor a
ld [hBGMapMode], a
ld de, DebugColorTestGFX + $10
@@ -1184,7 +1184,7 @@ TilesetColorTest:
call Function821d2
call Function821f4
call Function8220f
- call Function3200
+ call WaitBGMap2
ld [wJumptableIndex], a
ld a, $40
ld [hWY], a
diff --git a/engine/decorations.asm b/engine/decorations.asm
index 1fa5cac7e..22b6272a7 100755
--- a/engine/decorations.asm
+++ b/engine/decorations.asm
@@ -6,21 +6,21 @@ InitDecorations: ; 26751 (9:6751)
ret
_KrisDecorationMenu: ; 0x2675c
- ld a, [wcf76]
+ ld a, [wWhichIndexSet]
push af
ld hl, .MenuDataHeader
call LoadMenuDataHeader
xor a
- ld [wd1ee], a
+ ld [Buffer5], a
ld a, $1
- ld [wd1ef], a
+ ld [Buffer6], a
.top_loop
- ld a, [wd1ef]
+ ld a, [Buffer6]
ld [wMenuCursorBuffer], a
call .FindCategoriesWithOwnedDecos
call DoNthMenu
- ld a, [MenuSelection2]
- ld [wd1ef], a
+ ld a, [wMenuCursorY]
+ ld [Buffer6], a
jr c, .exit_menu
ld a, [MenuSelection]
ld hl, .pointers
@@ -30,8 +30,8 @@ _KrisDecorationMenu: ; 0x2675c
.exit_menu
call ExitMenu
pop af
- ld [wcf76], a
- ld a, [wd1ee]
+ ld [wWhichIndexSet], a
+ ld a, [Buffer5]
ld c, a
ret
; 0x2679a
@@ -74,7 +74,7 @@ _KrisDecorationMenu: ; 0x2675c
.FindCategoriesWithOwnedDecos: ; 26806
xor a
- ld [wcf76], a
+ ld [wWhichIndexSet], a
call .ClearStringBuffer2
call .FindOwndDecos
ld a, 7
@@ -374,7 +374,7 @@ PopulateDecoCategoryMenu: ; 2695b
cp 8
jr nc, .beyond_eight
xor a
- ld [wcf76], a
+ ld [wWhichIndexSet], a
ld hl, .NonscrollingMenuDataHeader
call LoadMenuDataHeader
call DoNthMenu
@@ -400,8 +400,8 @@ PopulateDecoCategoryMenu: ; 2695b
call InitScrollingMenu
xor a
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
- ld a, [wcf73]
+ call ScrollingMenu
+ ld a, [wMenuJoypad]
cp 2
jr z, .no_action_2
call DoDecorationAction2
@@ -803,7 +803,7 @@ DecoAction_TrySetItUp: ; 26d2d
call DecoAction_SetItUp
jr c, .failed
ld a, 1
- ld [wd1ee], a
+ ld [Buffer5], a
pop hl
ld a, [MenuSelection]
ld [hl], a
@@ -865,7 +865,7 @@ DecoAction_TryPutItAway: ; 26d86
jr z, .nothingthere
; Put it away.
ld a, $1
- ld [wd1ee], a
+ ld [Buffer5], a
ld a, [Buffer1]
ld [MenuSelection], a
ld hl, StringBuffer3
@@ -889,7 +889,7 @@ DecoAction_setupornament: ; 26db3
call DecoAction_SetItUp_Ornament
jr c, .cancel
ld a, $1
- ld [wd1ee], a
+ ld [Buffer5], a
jr DecoAction_FinishUp_Ornament
.cancel
@@ -981,7 +981,7 @@ DecoAction_PutItAway_Ornament: ; 26e46
ld hl, StringBuffer3
call GetDecorationName
ld a, $1
- ld [wd1ee], a
+ ld [Buffer5], a
xor a
ld [wd1ec], a
ld hl, DecoText_PutAwayTheDeco
@@ -1009,7 +1009,7 @@ DecoAction_AskWhichSide: ; 26e70
call ExitMenu
call CopyMenuData2
jr c, .nope
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp 3
jr z, .nope
ld [Buffer2], a
@@ -1244,11 +1244,11 @@ DecorationDesc_PosterPointers: ; 26f84
; 26f91
DecorationDesc_TownMapPoster: ; 0x26f91
- loadfont
+ opentext
writetext .TownMapText
- closetext
+ waitbutton
special Special_TownMap
- loadmovesprites
+ closetext
end
; 0x26f9b
diff --git a/engine/dummy_game.asm b/engine/dummy_game.asm
index 4e8dad1a3..e10633c88 100755
--- a/engine/dummy_game.asm
+++ b/engine/dummy_game.asm
@@ -10,7 +10,7 @@ Functione1e67: ; e1e67 (38:5e67)
call DisableLCD
ld b, SCGB_08
call GetSGBLayout
- callab Function8cf53
+ callab ClearSpriteAnims
ld hl, LZ_e2221
ld de, VTiles2 tile $00
call Decompress
@@ -39,7 +39,7 @@ Functione1e67: ; e1e67 (38:5e67)
ld a, $e4
call DmgToCgbBGPals
ld a, $e0
- call Functioncf8
+ call DmgToCgbObjPal0
ret
Functione1ebb: ; e1ebb (38:5ebb)
@@ -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]
@@ -416,7 +416,7 @@ Functione20e5: ; e20e5
; e2101
Functione2101: ; e2101
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld l, a
ld h, 0
diff --git a/engine/events.asm b/engine/events.asm
index 40e863cdc..4dbe202cd 100644
--- a/engine/events.asm
+++ b/engine/events.asm
@@ -1,6 +1,5 @@
INCLUDE "includes.asm"
-
SECTION "Events", ROMX, BANK[EVENTS]
OverworldLoop:: ; 966b0
@@ -23,7 +22,6 @@ OverworldLoop:: ; 966b0
dw .done
; 966cb
-
DisableEvents: ; 966cb
xor a
ld [ScriptFlags3], a
@@ -114,21 +112,16 @@ CheckWildEncountersScriptFlag: ; 9671e
ret
; 96724
-
StartMap: ; 96724
xor a
ld [ScriptVar], a
xor a
ld [ScriptRunning], a
ld hl, MapStatus
- ld bc, $3e ; 62
+ ld bc, wMapStatusEnd - MapStatus
call ByteFill
callba InitCallReceiveDelay
call ClearJoypad
- ; fallthrough
-; 9673e
-
-
EnterMap: ; 9673e
xor a
ld [wd453], a
@@ -157,17 +150,15 @@ EnterMap: ; 9673e
ret
; 9676d
-
-Function9676d: ; 9676d
+UnusedWait30Frames: ; 9676d
ld c, 30
call DelayFrames
ret
; 96773
-
HandleMap: ; 96773
call ResetOverworldDelay
- call Function967c1
+ call HandleMapTimeAndJoypad
callba HandleCmdQueue ; no need to farcall
call MapEvents
@@ -183,7 +174,6 @@ HandleMap: ; 96773
ret
; 96795
-
MapEvents: ; 96795
ld a, [MapEventStatus]
ld hl, .jumps
@@ -206,7 +196,6 @@ MapEvents: ; 96795
ret
; 967af
-
MaxOverworldDelay: ; 967af
db 2
; 967b0
@@ -226,7 +215,7 @@ NextOverworldFrame: ; 967b7
ret
; 967c1
-Function967c1: ; 967c1
+HandleMapTimeAndJoypad: ; 967c1
ld a, [MapEventStatus]
cp 1 ; no events
ret z
@@ -281,7 +270,6 @@ Function96812: ; 96812
ret
; 9681f
-
PlayerEvents: ; 9681f
xor a
@@ -313,7 +301,6 @@ PlayerEvents: ; 9681f
xor a
ret
-
.ok
push af
callba EnableScriptMode
@@ -335,7 +322,6 @@ PlayerEvents: ; 9681f
ret
; 96867
-
CheckTrainerBattle3: ; 96867
nop
nop
@@ -351,7 +337,6 @@ CheckTrainerBattle3: ; 96867
ret
; 96874
-
CheckTileEvent: ; 96874
; Check for warps, tile triggers or wild battles.
@@ -418,7 +403,6 @@ CheckTileEvent: ; 96874
ret
; 968c7
-
CheckWildEncounterCooldown:: ; 968c7
ld hl, wWildEncounterCooldown
ld a, [hl]
@@ -491,11 +475,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
@@ -543,7 +527,6 @@ CheckTimeEvents: ; 9693a
ret
; 96974
-
OWPlayerInput: ; 96974
call PlayerMovement
@@ -573,7 +556,6 @@ OWPlayerInput: ; 96974
ret
; 96999
-
CheckAPressOW: ; 96999
ld a, [hJoyPressed]
and A_BUTTON
@@ -588,7 +570,6 @@ CheckAPressOW: ; 96999
ret
; 969ac
-
PlayTalkObject: ; 969ac
push de
ld de, SFX_READ_TEXT_2
@@ -597,7 +578,6 @@ PlayTalkObject: ; 969ac
ret
; 969b5
-
TryObjectEvent: ; 969b5
callba CheckFacingObject
jr c, .IsObject
@@ -641,7 +621,7 @@ TryObjectEvent: ; 969b5
.pointers
dbw PERSONTYPE_SCRIPT, .script
- dbw PERSONTYPE_ITEMFRAGMENT, .itemfragment
+ dbw PERSONTYPE_ITEMBALL, .itemball
dbw PERSONTYPE_TRAINER, .trainer
; the remaining four are dummy events
dbw PERSONTYPE_3, .three
@@ -662,7 +642,7 @@ TryObjectEvent: ; 969b5
ret
; 96a12
-.itemfragment ; 96a12
+.itemball ; 96a12
ld hl, MAPOBJECT_SCRIPT_POINTER
add hl, bc
ld a, [hli]
@@ -704,7 +684,6 @@ TryObjectEvent: ; 969b5
ret
; 96a38
-
TryReadSign: ; 96a38
call CheckFacingSign
jr c, .IsSign
@@ -767,8 +746,8 @@ TryReadSign: ; 96a38
ld de, EngineBuffer1
ld bc, 3
call FarCopyBytes
- ld a, BANK(SignpostItemScript)
- ld hl, SignpostItemScript
+ ld a, BANK(HiddenItemScript)
+ ld hl, HiddenItemScript
call CallScript
scf
ret
@@ -810,7 +789,6 @@ endr
ret
; 96ad8
-
CheckSignFlag: ; 96ad8
ld hl, EngineBuffer4
ld a, [hli]
@@ -829,7 +807,6 @@ CheckSignFlag: ; 96ad8
ret
; 96af0
-
PlayerMovement: ; 96af0
callba DoPlayerMovement
ld a, c
@@ -896,7 +873,6 @@ PlayerMovement: ; 96af0
ret
; 96b30
-
CheckMenuOW: ; 96b30
xor a
ld [hMenuReturn], a
@@ -928,7 +904,6 @@ CheckMenuOW: ; 96b30
ret
; 96b58
-
StartMenuScript: ; 96b58
callasm StartMenu
jump StartMenuCallback
@@ -956,7 +931,6 @@ SelectMenuCallback: ; 96b66
end
; 96b79
-
CountStep: ; 96b79
; Don't count steps in link communication rooms.
ld a, [wLinkMode]
@@ -1024,7 +998,6 @@ CountStep: ; 96b79
ret
; 96bd3
-
.unreferenced: ; 96bd3
ld a, 7
scf
diff --git a/engine/events_2.asm b/engine/events_2.asm
index c9b673e81..97e2b76da 100644
--- a/engine/events_2.asm
+++ b/engine/events_2.asm
@@ -142,7 +142,7 @@ RandomEncounter:: ; 97cc0
; 97cf9
WildBattleScript: ; 97cf9
- battlecheck
+ randomwildmon
startbattle
returnafterbattle
end
@@ -627,7 +627,7 @@ CmdQueue_StoneTable: ; 97f42
ld hl, OBJECT_MOVEMENTTYPE
add hl, de
ld a, [hl]
- cp STEP_TYPE_19
+ cp STEP_TYPE_SKYFALL_TOP
jr nz, .next
ld hl, OBJECT_NEXT_TILE
diff --git a/engine/events_3.asm b/engine/events_3.asm
index f9f8ffedc..686a794b7 100755
--- a/engine/events_3.asm
+++ b/engine/events_3.asm
@@ -276,7 +276,7 @@ endr
ret
; b8172
-CheckForSignpostItems: ; b8172
+CheckForHiddenItems: ; b8172
; Checks to see if there are hidden items on the screen that have not yet been found. If it finds one, returns carry.
call GetMapScriptHeaderBank
ld [Buffer1], a
diff --git a/engine/evolution_animation.asm b/engine/evolution_animation.asm
index 835db8b52..1561c70fa 100755
--- a/engine/evolution_animation.asm
+++ b/engine/evolution_animation.asm
@@ -9,7 +9,7 @@ EvolutionAnimation: ; 4e5e1
ld a, [BaseDexNo]
push af
- call _EvolutionAnimation
+ call .EvolutionAnimation
pop af
ld [BaseDexNo], a
@@ -21,7 +21,7 @@ EvolutionAnimation: ; 4e5e1
pop de
pop hl
- ld a, [wd1ed]
+ ld a, [Buffer4]
and a
ret z
@@ -29,18 +29,18 @@ EvolutionAnimation: ; 4e5e1
ret
; 4e607
-_EvolutionAnimation: ; 4e607
+.EvolutionAnimation: ; 4e607
ld a, $e4
ld [rOBP0], a
ld de, MUSIC_NONE
call PlayMusic
- callba Function8cf53
+ callba ClearSpriteAnims
- ld de, EvolutionGFX
+ ld de, .GFX
ld hl, VTiles0
- lb bc, BANK(EvolutionGFX), 8
+ lb bc, BANK(.GFX), 8
call Request2bpp
xor a
@@ -76,7 +76,7 @@ _EvolutionAnimation: ; 4e607
ld a, $1
ld [hBGMapMode], a
- call Function4e794
+ call .check_statused
jr c, .skip_cry
ld a, [Buffer1]
@@ -99,22 +99,22 @@ _EvolutionAnimation: ; 4e607
call .ReplaceFrontpic
xor a
- ld [wd1ed], a
+ ld [Buffer4], a
ld a, [Buffer2]
ld [PlayerHPPal], a
ld c, $0
call .GetSGBLayout
- call Function4e7a6
- callba Function8cf53
- call Function4e794
- jr c, .asm_4e6de
+ call .PlayEvolvedSFX
+ callba ClearSpriteAnims
+ call .check_statused
+ jr c, .no_anim
- ld a, [wc2c6]
+ ld a, [wBoxAlignment]
push af
ld a, $1
- ld [wc2c6], a
+ ld [wBoxAlignment], a
ld a, [CurPartySpecies]
push af
@@ -128,24 +128,24 @@ _EvolutionAnimation: ; 4e607
pop af
ld [CurPartySpecies], a
pop af
- ld [wc2c6], a
+ ld [wBoxAlignment], a
ret
-.asm_4e6de
+.no_anim
ret
.cancel_evo
ld a, $1
- ld [wd1ed], a
+ ld [Buffer4], a
ld a, [Buffer1]
ld [PlayerHPPal], a
ld c, $0
call .GetSGBLayout
- call Function4e7a6
- callba Function8cf53
- call Function4e794
+ call .PlayEvolvedSFX
+ callba ClearSpriteAnims
+ call .check_statused
ret c
ld a, [PlayerHPPal]
@@ -167,11 +167,11 @@ _EvolutionAnimation: ; 4e607
.LoadFrontpic: ; 4e711
call GetBaseData
ld a, $1
- ld [wc2c6], a
+ ld [wBoxAlignment], a
ld de, VTiles2
predef FrontpicPredef
xor a
- ld [wc2c6], a
+ ld [wBoxAlignment], a
ret
; 4e726
@@ -252,14 +252,14 @@ endr
ret
.pressed_b
- ld a, [wd1e9]
+ ld a, [wForceEvolution]
and a
jr nz, .loop3
scf
ret
; 4e794
-Function4e794: ; 4e794
+.check_statused: ; 4e794
ld a, [CurPartyMon]
ld hl, PartyMon1Species
call GetPartyLocation
@@ -269,8 +269,8 @@ Function4e794: ; 4e794
ret
; 4e7a6
-Function4e7a6: ; 4e7a6
- ld a, [wd1ed]
+.PlayEvolvedSFX: ; 4e7a6
+ ld a, [Buffer4]
and a
ret nz
ld de, SFX_EVOLVED
@@ -279,70 +279,70 @@ Function4e7a6: ; 4e7a6
ld a, [hl]
push af
ld [hl], $0
-.loop
- call Function4e7cf
+.loop4
+ call .balls_of_light
jr nc, .done
- call Function4e80c
- jr .loop
+ call .AnimateBallsOfLight
+ jr .loop4
.done
- ld c, $20
-.loop2
- call Function4e80c
+ ld c, 32
+.loop5
+ call .AnimateBallsOfLight
dec c
- jr nz, .loop2
+ jr nz, .loop5
pop af
ld [wJumptableIndex], a
ret
; 4e7cf
-Function4e7cf: ; 4e7cf
+.balls_of_light: ; 4e7cf
ld hl, wJumptableIndex
ld a, [hl]
- cp $20
+ cp 32
ret nc
ld d, a
inc [hl]
and $1
- jr nz, .asm_4e7e6
+ jr nz, .done_balls
ld e, $0
- call Function4e7e8
+ call .GenerateBallOfLight
ld e, $10
- call Function4e7e8
+ call .GenerateBallOfLight
-.asm_4e7e6
+.done_balls
scf
ret
; 4e7e8
-Function4e7e8: ; 4e7e8
+.GenerateBallOfLight: ; 4e7e8
push de
- lb de, $48, $58
- ld a, $13
+ depixel 9, 11
+ ld a, SPRITE_ANIM_INDEX_13
call _InitSpriteAnimStruct
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld a, [wJumptableIndex]
- and $e
+ and %1110
sla a
pop de
add e
ld [hl], a
- ld hl, $3
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $0
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $10
ret
; 4e80c
-Function4e80c: ; 4e80c
+.AnimateBallsOfLight: ; 4e80c
push bc
- callab Function8cf69
+ callab PlaySpriteAnimations
; a = (([hVBlankCounter] + 4) / 2) % NUM_PALETTES
ld a, [hVBlankCounter]
- and $e
+ and %1110
srl a
rept 2
inc a
@@ -351,7 +351,7 @@ endr
ld b, a
ld hl, Sprites + 3 ; attributes
ld c, 40
-.loop
+.loop6
ld a, [hl]
or b
ld [hli], a
@@ -359,98 +359,13 @@ rept 3
inc hl
endr
dec c
- jr nz, .loop
+ jr nz, .loop6
pop bc
call DelayFrame
ret
; 4e831
-EvolutionGFX:
+.GFX:
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, UnknownText_0x4e8bd
- call PrintText
- call Function3200
- call SetPalettes
- ret
-; 4e8bd
-
-UnknownText_0x4e8bd: ; 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
- ld c, $40
-.asm_4e8ee
- ld a, -1
- ld [hli], a
- ld a, " "
- ld [hli], a
- dec c
- jr nz, .asm_4e8ee
- 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..4a959529a 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]
@@ -485,7 +485,7 @@ endr
.learn
ld a, d
- ld [wd262], a
+ ld [wPutativeTMHMMove], a
ld [wd265], a
call GetMoveName
call CopyName1
diff --git a/engine/fruit_trees.asm b/engine/fruit_trees.asm
index 28e6e8cec..cbbe5faaf 100644
--- a/engine/fruit_trees.asm
+++ b/engine/fruit_trees.asm
@@ -1,15 +1,15 @@
FruitTreeScript:: ; 44000
callasm GetCurTreeFruit
- loadfont
+ opentext
copybytetovar CurFruit
itemtotext $0, $0
writetext FruitBearingTreeText
- keeptextopen
+ buttonsound
callasm TryResetFruitTrees
callasm CheckFruitTree
iffalse .fruit
writetext NothingHereText
- closetext
+ waitbutton
jump .end
.fruit
@@ -17,7 +17,7 @@ FruitTreeScript:: ; 44000
copybytetovar CurFruit
giveitem ITEM_FROM_MEM
iffalse .packisfull
- keeptextopen
+ buttonsound
writetext ObtainedFruitText
callasm PickedFruitTree
specialsound
@@ -25,12 +25,12 @@ FruitTreeScript:: ; 44000
jump .end
.packisfull
- keeptextopen
+ buttonsound
writetext FruitPackIsFullText
- closetext
+ waitbutton
.end
- loadmovesprites
+ closetext
end
; 44041
diff --git a/engine/healmachineanim.asm b/engine/healmachineanim.asm
index 174d1ae5a..57f03a8df 100755
--- a/engine/healmachineanim.asm
+++ b/engine/healmachineanim.asm
@@ -13,7 +13,7 @@ HealMachineAnim: ; 12324
ld [Buffer2], a
call .DoJumptableFunctions
ld a, [Buffer2]
- call Functiond24
+ call DmgToCgbObjPal1
ret
; 1233e
diff --git a/engine/init_gender.asm b/engine/init_gender.asm
new file mode 100755
index 000000000..e4fbfd9e6
--- /dev/null
+++ b/engine/init_gender.asm
@@ -0,0 +1,115 @@
+InitCrystalData: ; 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 InitGenderScreen
+ call LoadGenderScreenPal
+ call LoadGenderScreenLightBlueTile
+ call WaitBGMap2
+ call SetPalettes
+ ld hl, TextJump_AreYouABoyOrAreYouAGirl
+ call PrintText
+ ld hl, .MenuDataHeader
+ call LoadMenuDataHeader
+ call WaitBGMap2
+ call VerticalMenu
+ call WriteBackup
+ ld a, [wMenuCursorY]
+ 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
+
+InitGenderScreen: ; 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 InitCrystalData
+ 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
+
+LoadGenderScreenPal: ; 48e47 (12:4e47)
+ ld hl, .Palette
+ ld de, UnknBGPals
+ ld bc, 1 palettes
+ ld a, $5
+ call FarCopyWRAM
+ callba ApplyPals
+ ret
+; 48e5c (12:4e5c)
+
+.Palette: ; 48e5c
+ RGB 31, 31, 31
+ RGB 09, 30, 31
+ RGB 01, 11, 31
+ RGB 00, 00, 00
+; 48e64
+
+LoadGenderScreenLightBlueTile: ; 48e64 (12:4e64)
+ ld de, .LightBlueTile
+ ld hl, VTiles2 tile $00
+ lb bc, BANK(.LightBlueTile), 1
+ call Get2bpp
+ ret
+; 48e71 (12:4e71)
+
+.LightBlueTile: ; 48e71
+INCBIN "gfx/intro/gender_screen.2bpp"
diff --git a/engine/intro_menu.asm b/engine/intro_menu.asm
index cf5bcf8a0..ddc728c4f 100755
--- a/engine/intro_menu.asm
+++ b/engine/intro_menu.asm
@@ -7,7 +7,7 @@ _MainMenu: ; 5ae8
ld [wMapMusic], a
call PlayMusic
callba MainMenu
- jp Function6219
+ jp StartTitleScreen
; 5b04
; unreferenced
@@ -50,7 +50,7 @@ NewGame_ClearTileMapEtc: ; 5b44
call ClearTileMap
call LoadFontsExtra
call LoadStandardFont
- call ResetTextRelatedRAM
+ call ClearWindowData
ret
; 5b54
@@ -353,7 +353,7 @@ LoadOrRegenerateLuckyIDNumber: ; 5d33
Continue: ; 5d65
callba TryLoadSaveFile
jr c, .FailToLoad
- callba Function150b9
+ callba _LoadData
call LoadStandardMenuDataHeader
call DisplaySaveInfoOnContinue
ld a, $1
@@ -450,9 +450,9 @@ ConfirmContinue: ; 5e34
call DelayFrame
call GetJoypad
ld hl, hJoyPressed
- bit 0, [hl]
+ bit A_BUTTON_F, [hl]
jr nz, .PressA
- bit 1, [hl]
+ bit B_BUTTON_F, [hl]
jr z, .loop
scf
ret
@@ -545,9 +545,9 @@ Continue_LoadMenuHeader: ; 5ebf
ld hl, .MenuDataHeader_NoDex
.pokedex_header
- call Function1e35
+ call _OffsetMenuDataHeader
call MenuBox
- call Function1c89
+ call PlaceVerticalMenuItems
ret
; 5ed9
@@ -685,7 +685,7 @@ OakSpeech: ; 0x5f99
ld [TrainerClass], a
call Intro_PrepTrainerPic
- ld b, SCGB_1C
+ ld b, SCGB_FRONTPICPALS
call GetSGBLayout
call Intro_RotatePalettesLeftFrontpic
@@ -706,7 +706,7 @@ OakSpeech: ; 0x5f99
ld [TempMonDVs], a
ld [TempMonDVs + 1], a
- ld b, SCGB_1C
+ ld b, SCGB_FRONTPICPALS
call GetSGBLayout
call Intro_WipeInFrontpic
@@ -723,7 +723,7 @@ OakSpeech: ; 0x5f99
ld [TrainerClass], a
call Intro_PrepTrainerPic
- ld b, SCGB_1C
+ ld b, SCGB_FRONTPICPALS
call GetSGBLayout
call Intro_RotatePalettesLeftFrontpic
@@ -736,7 +736,7 @@ OakSpeech: ; 0x5f99
ld [CurPartySpecies], a
callba DrawIntroPlayerPic
- ld b, SCGB_1C
+ ld b, SCGB_FRONTPICPALS
call GetSGBLayout
call Intro_RotatePalettesLeftFrontpic
@@ -783,7 +783,7 @@ OakText7: ; 0x606f
NamePlayer: ; 0x6074
callba MovePlayerPicRight
callba ShowPlayerNamingChoices
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
jr z, .NewName
call StorePlayerName
@@ -806,7 +806,7 @@ NamePlayer: ; 0x6074
ld [CurPartySpecies], a
callba DrawIntroPlayerPic
- ld b, SCGB_1C
+ ld b, SCGB_FRONTPICPALS
call GetSGBLayout
call RotateThreePalettesLeft
@@ -828,8 +828,8 @@ NamePlayer: ; 0x6074
Function60e9: ; Unreferenced
call LoadMenuDataHeader
- call InterpretMenu2
- ld a, [MenuSelection2]
+ call VerticalMenu
+ ld a, [wMenuCursorY]
dec a
call CopyNameFromMenu
call WriteBackup
@@ -1003,19 +1003,19 @@ Intro_PlacePlayerSprite: ; 61cd
.sprites ; 61fe
db 4
- db $4c, $48, 0
- db $4c, $50, 1
- db $54, $48, 2
- db $54, $50, 3
+ db 9 * 8 + 4, 9 * 8, 0
+ db 9 * 8 + 4, 10 * 8, 1
+ db 10 * 8 + 4, 9 * 8, 2
+ db 10 * 8 + 4, 10 * 8, 3
; 620b
-Function620b: ; 620b
- callab Functione4579
- jr c, Function6219
+CrystalIntroSequence: ; 620b
+ callab Copyright_GFPresents
+ jr c, StartTitleScreen
callba CrystalIntro
-Function6219: ; 6219
+StartTitleScreen: ; 6219
ld a, [rSVBK]
push af
ld a, $5
@@ -1036,7 +1036,7 @@ Function6219: ; 6219
ld hl, rLCDC
res 2, [hl]
call ClearScreen
- call Function3200
+ call WaitBGMap2
xor a
ld [hLCDStatCustom], a
ld [hSCX], a
@@ -1067,9 +1067,9 @@ endr
.jumptable
dw _MainMenu
- dw Function6389
- dw Function620b
- dw Function620b
+ dw DeleteSaveData
+ dw CrystalIntroSequence
+ dw CrystalIntroSequence
dw ResetClock
; 6274
@@ -1320,8 +1320,8 @@ TitleScreenEnd: ; 6375
ret
; 6389
-Function6389: ; 6389
- callba Function4d54c
+DeleteSaveData: ; 6389
+ callba _DeleteSaveData
jp Init
; 6392
@@ -1336,7 +1336,7 @@ Function639b: ; unreferenced
and $3
ret nz
ld bc, SpriteAnim10
- ld hl, SpriteAnim10FrameIndex - SpriteAnim10
+ ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc ; over-the-top compicated way to load wc3ae into hl
ld l, [hl]
ld h, 0
@@ -1410,7 +1410,7 @@ CopyrightString: ; 63fd
GameInit:: ; 642e
callba TryLoadSaveData
- call ResetTextRelatedRAM
+ call ClearWindowData
call ClearBGPalettes
call ClearTileMap
ld a, VBGMap0 / $100
@@ -1423,5 +1423,5 @@ GameInit:: ; 642e
ld a, $90
ld [hWY], a
call WaitBGMap
- jp Function620b
+ jp CrystalIntroSequence
; 6454
diff --git a/engine/learn.asm b/engine/learn.asm
new file mode 100755
index 000000000..e5ffabc62
--- /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, wMonOrItemNameBuffer
+ 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, [wPutativeTMHMMove]
+ 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 [w2DMenuCursorInitY], a
+ ld a, $6
+ ld [w2DMenuCursorInitX], a
+ ld a, [wNumMoves]
+ inc a
+ ld [w2DMenuNumRows], a
+ ld a, $1
+ ld [w2DMenuNumCols], a
+ ld [wMenuCursorY], a
+ ld [wMenuCursorX], a
+ ld a, $3
+ ld [wMenuJoypadFilter], a
+ ld a, $20
+ ld [w2DMenuFlags1], a
+ xor a
+ ld [w2DMenuFlags2], a
+ ld a, $20
+ ld [w2DMenuCursorOffsets], a
+ call StaticMenuJoypad
+ push af
+ call Call_LoadTempTileMapToTileMap
+ pop af
+ pop hl
+ bit 1, a
+ jr nz, .cancel
+ push hl
+ ld a, [wMenuCursorY]
+ 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..c7fd9dae3 100755
--- a/engine/link.asm
+++ b/engine/link.asm
@@ -14,38 +14,38 @@ LinkCommunications: ; 28000
call UpdateSprites
call LoadStandardFont
call LoadFontsBattleExtra
- callba Function16d69a
- call Function3200
+ callba LinkComms_LoadPleaseWaitTextboxBorderGFX
+ call WaitBGMap2
hlcoord 3, 8
- ld b, $2
- ld c, $c
+ ld b, 2
+ ld c, 12
ld d, h
ld e, l
- callba Function4d35b
+ callba LinkTextbox2
hlcoord 4, 10
- ld de, String28419
+ ld de, String_PleaseWait
call PlaceString
call Function28eff
- call Function3200
+ call WaitBGMap2
ld hl, wcf5d
xor a
ld [hli], a
ld [hl], $50
ld a, [wLinkMode]
cp LINK_TIMECAPSULE
- jp nz, Function28177
+ jp nz, Gen2ToGen2LinkComms
-Function2805d: ; 2805d
- call Function28426
- call Function28499
- call Function28434
+TimeCapsule: ; 2805d
+ call ClearLinkData
+ call Link_PrepPartyData_Gen1
+ call FixDataForLinkTransfer
xor a
ld [wPlayerLinkAction], a
call Function87d
ld a, [hLinkPlayerNumber]
cp $2
- jr nz, .asm_28091
- ld c, $3
+ jr nz, .player_1
+ ld c, 3
call DelayFrames
xor a
ld [hSerialSend], a
@@ -61,7 +61,7 @@ Function2805d: ; 2805d
ld a, $81
ld [rSC], a
-.asm_28091
+.player_1
ld de, MUSIC_NONE
call PlayMusic
ld c, $3
@@ -76,23 +76,23 @@ Function2805d: ; 2805d
call Function75f
ld a, $fe
ld [de], a
- ld hl, OverworldMap
- ld de, wd26b
+ ld hl, wLinkData
+ ld de, OTPlayerName
ld bc, $1a8
call Function75f
ld a, $fe
ld [de], a
- ld hl, wc608
+ ld hl, wMisc
ld de, wPlayerTrademonSpecies
- ld bc, wPlayerTrademonSpecies - wc608
+ ld bc, wPlayerTrademonSpecies - wMisc
call Function75f
xor a
ld [rIF], a
ld a, $1d
ld [rIE], a
- call Function287ab
- ld hl, wd26b
- call Function287ca
+ call Link_CopyRandomNumbers
+ ld hl, OTPlayerName
+ call Link_FindFirstNonControlCharacter_SkipZero
push hl
ld bc, NAME_LENGTH
add hl, bc
@@ -102,23 +102,23 @@ Function2805d: ; 2805d
jp z, Function28b22
cp $7
jp nc, Function28b22
- ld de, OverworldMap
+ ld de, wLinkData
ld bc, $1a2
- call Function2879e
+ call Link_CopyOTData
ld de, wPlayerTrademonSpecies
- ld hl, wc813
+ ld hl, wTimeCapsulePartyMon1Species
ld c, $2
-.asm_280fe
+.loop
ld a, [de]
inc de
and a
- jr z, .asm_280fe
+ jr z, .loop
cp $fd
- jr z, .asm_280fe
+ jr z, .loop
cp $fe
- jr z, .asm_280fe
+ jr z, .loop
cp $ff
- jr z, .asm_2811d
+ jr z, .next
push hl
push bc
ld b, $0
@@ -129,24 +129,24 @@ Function2805d: ; 2805d
ld [hl], a
pop bc
pop hl
- jr .asm_280fe
+ jr .loop
-.asm_2811d
+.next
ld hl, wc90f
dec c
- jr nz, .asm_280fe
- ld hl, OverworldMap
- ld de, wd26b
+ jr nz, .loop
+ ld hl, wLinkPlayerName
+ ld de, OTPlayerName
ld bc, NAME_LENGTH
call CopyBytes
ld de, OTPartyCount
ld a, [hli]
ld [de], a
inc de
-.asm_28135
+.party_loop
ld a, [hli]
- cp $ff
- jr z, .asm_2814e
+ cp -1
+ jr z, .done_party
ld [wd265], a
push hl
push de
@@ -156,11 +156,11 @@ Function2805d: ; 2805d
ld a, [wd265]
ld [de], a
inc de
- jr .asm_28135
+ jr .party_loop
-.asm_2814e
+.done_party
ld [de], a
- ld hl, wc813
+ ld hl, wTimeCapsulePartyMon1Species
call Function2868a
ld a, OTPartyMonOT % $100
ld [wd102], a
@@ -174,21 +174,21 @@ Function2805d: ; 2805d
call z, DelayFrames
ld de, MUSIC_ROUTE_30
call PlayMusic
- jp Function287e3
+ jp InitTradeMenuDisplay
; 28177
-Function28177: ; 28177
- call Function28426
- call Function28595
- call Function28434
+Gen2ToGen2LinkComms: ; 28177
+ call ClearLinkData
+ call Link_PrepPartyData_Gen2
+ call FixDataForLinkTransfer
call Function29dba
ld a, [ScriptVar]
and a
jp z, Function283b2
ld a, [hLinkPlayerNumber]
cp $2
- jr nz, .asm_281ae
- ld c, $3
+ jr nz, .Player1
+ ld c, 3
call DelayFrames
xor a
ld [hSerialSend], a
@@ -204,10 +204,10 @@ Function28177: ; 28177
ld a, $81
ld [rSC], a
-.asm_281ae
+.Player1
ld de, MUSIC_NONE
call PlayMusic
- ld c, $3
+ ld c, 3
call DelayFrames
xor a
ld [rIF], a
@@ -219,51 +219,51 @@ Function28177: ; 28177
call Function75f
ld a, $fe
ld [de], a
- ld hl, OverworldMap
- ld de, wd26b
+ ld hl, wLinkData
+ ld de, OTPlayerName
ld bc, $1c2
call Function75f
ld a, $fe
ld [de], a
- ld hl, wc608
+ ld hl, wMisc
ld de, wPlayerTrademonSpecies
ld bc, $c8
call Function75f
ld a, [wLinkMode]
cp LINK_TRADECENTER
- jr nz, .asm_281fd
+ jr nz, .not_trading
ld hl, wc9f4
ld de, wcb84
ld bc, $186
call Function283f2
-.asm_281fd
+.not_trading
xor a
ld [rIF], a
ld a, $1d
ld [rIE], a
ld de, MUSIC_NONE
call PlayMusic
- call Function287ab
- ld hl, wd26b
- call Function287ca
- ld de, OverworldMap
+ call Link_CopyRandomNumbers
+ ld hl, OTPlayerName
+ call Link_FindFirstNonControlCharacter_SkipZero
+ ld de, wLinkData
ld bc, $1b9
- call Function2879e
+ call Link_CopyOTData
ld de, wPlayerTrademonSpecies
- ld hl, wc813
+ ld hl, wLinkPlayerPartyMon1Species
ld c, $2
-.asm_28224
+.loop1
ld a, [de]
inc de
and a
- jr z, .asm_28224
+ jr z, .loop1
cp $fd
- jr z, .asm_28224
+ jr z, .loop1
cp $fe
- jr z, .asm_28224
+ jr z, .loop1
cp $ff
- jr z, .asm_28243
+ jr z, .next1
push hl
push bc
ld b, $0
@@ -274,93 +274,92 @@ Function28177: ; 28177
ld [hl], a
pop bc
pop hl
- jr .asm_28224
+ jr .loop1
-.asm_28243
+.next1
ld hl, wc90f
dec c
- jr nz, .asm_28224
+ jr nz, .loop1
ld a, [wLinkMode]
cp LINK_TRADECENTER
- jp nz, .asm_282fe
+ jp nz, .skip_mail
ld hl, wcb84
-.asm_28254
+.loop2
ld a, [hli]
cp $20
- jr nz, .asm_28254
-.asm_28259
+ jr nz, .loop2
+.loop3
ld a, [hli]
cp $fe
- jr z, .asm_28259
+ jr z, .loop3
cp $20
- jr z, .asm_28259
+ jr z, .loop3
dec hl
ld de, wcb84
- ld bc, $190
+ ld bc, $190 ; 400
call CopyBytes
ld hl, wcb84
- ld bc, $c6
-.asm_28272
+ ld bc, $c6 ; 198
+.loop4
ld a, [hl]
cp $21
- jr nz, .asm_28279
+ jr nz, .okay1
ld [hl], $fe
-
-.asm_28279
+.okay1
inc hl
dec bc
ld a, b
or c
- jr nz, .asm_28272
+ jr nz, .loop4
ld de, wcc9e
-.asm_28282
+.loop5
ld a, [de]
inc de
cp $ff
- jr z, .asm_28294
+ jr z, .start_copying_mail
ld hl, wcc4a
dec a
ld b, $0
ld c, a
add hl, bc
ld [hl], $fe
- jr .asm_28282
+ jr .loop5
-.asm_28294
+.start_copying_mail
ld hl, wcb84
ld de, wc9f4
- ld b, $6
-.asm_2829c
+ ld b, PARTY_LENGTH
+.copy_mail_loop
push bc
- ld bc, $21
+ ld bc, MAIL_MSG_LENGTH + 1
call CopyBytes
- ld a, $e
+ ld a, (MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1)) % $100
add e
ld e, a
- ld a, $0
+ ld a, (MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1)) / $100
adc d
ld d, a
pop bc
dec b
- jr nz, .asm_2829c
+ jr nz, .copy_mail_loop
ld de, wc9f4
- ld b, $6
-.asm_282b4
+ ld b, PARTY_LENGTH
+.copy_author_loop
push bc
- ld a, $21
+ ld a, (MAIL_MSG_LENGTH + 1) % $100
add e
ld e, a
- ld a, $0
+ ld a, (MAIL_MSG_LENGTH + 1) / $100
adc d
ld d, a
- ld bc, $e
+ ld bc, MAIL_STRUCT_LENGTH - (MAIL_MSG_LENGTH + 1)
call CopyBytes
pop bc
dec b
- jr nz, .asm_282b4
- ld b, $6
+ jr nz, .copy_author_loop
+ ld b, PARTY_LENGTH
ld de, wc9f4
-.asm_282cc
+.fix_mail_loop
push bc
push de
callba IsMailEuropean
@@ -385,14 +384,14 @@ Function28177: ; 28177
ld e, l
pop bc
dec b
- jr nz, .asm_282cc
+ jr nz, .fix_mail_loop
ld de, wcb0e
xor a
ld [de], a
-.asm_282fe
- ld hl, OverworldMap
- ld de, wd26b
+.skip_mail
+ ld hl, wLinkData
+ ld de, OTPlayerName
ld bc, NAME_LENGTH
call CopyBytes
ld de, OTPartyCount
@@ -416,7 +415,7 @@ Function28177: ; 28177
call z, DelayFrames
ld a, [wLinkMode]
cp LINK_COLOSSEUM
- jr nz, .asm_283a9
+ jr nz, .ready_to_trade
ld a, CAL
ld [OtherTrainerClass], a
call ClearScreen
@@ -427,7 +426,7 @@ Function28177: ; 28177
and $20
or $3
ld [hl], a
- ld hl, wd26b
+ ld hl, OTPlayerName
ld de, OTName
ld bc, NAME_LENGTH
call CopyBytes
@@ -463,32 +462,32 @@ Function28177: ; 28177
callba LoadPokemonData
jp Function28b22
-.asm_283a9
+.ready_to_trade
ld de, MUSIC_ROUTE_30
call PlayMusic
- jp Function287e3
+ jp InitTradeMenuDisplay
; 283b2
Function283b2: ; 283b2
- ld de, UnknownText_0x283ed
+ ld de, .TooMuchTimeHasElapsed
ld b, $a
-.asm_283b7
+.loop
call DelayFrame
- call LinkCommunicationsSignalDataReceived
+ call LinkDataReceived
dec b
- jr nz, .asm_283b7
+ jr nz, .loop
xor a
ld [hld], a
ld [hl], a
ld [hVBlank], a
push de
hlcoord 0, 12
- ld b, $4
- ld c, $12
+ ld b, 4
+ ld c, 18
push de
ld d, h
ld e, l
- callba Function4d35b
+ callba LinkTextbox2
pop de
pop hl
bccoord 1, 14
@@ -497,11 +496,11 @@ Function283b2: ; 283b2
call ClearScreen
ld b, SCGB_08
call GetSGBLayout
- call Function3200
+ call WaitBGMap2
ret
; 283ed
-UnknownText_0x283ed: ; 0x283ed
+.TooMuchTimeHasElapsed: ; 0x283ed
; Too much time has elapsed. Please try again.
text_jump UnknownText_0x1c4183
db "@"
@@ -510,7 +509,7 @@ UnknownText_0x283ed: ; 0x283ed
Function283f2: ; 283f2
ld a, $1
ld [hFFCC], a
-.asm_283f6
+.loop
ld a, [hl]
ld [hSerialSend], a
call Function78a
@@ -518,130 +517,128 @@ Function283f2: ; 283f2
ld b, a
inc hl
ld a, $30
-.asm_28401
+.delay_cycles
dec a
- jr nz, .asm_28401
+ jr nz, .delay_cycles
ld a, [hFFCC]
and a
ld a, b
pop bc
- jr z, .asm_28411
+ jr z, .load
dec hl
xor a
ld [hFFCC], a
- jr .asm_283f6
+ jr .loop
-.asm_28411
+.load
ld [de], a
inc de
dec bc
ld a, b
or c
- jr nz, .asm_283f6
+ jr nz, .loop
ret
; 28419
-String28419: ; 28419
+String_PleaseWait: ; 28419
db "PLEASE WAIT!@"
; 28426
-Function28426: ; 28426
- ld hl, OverworldMap
- lb bc, 5, SCREEN_WIDTH
-.asm_2842c
+ClearLinkData: ; 28426
+ ld hl, wLinkData
+ ld bc, wLinkDataEnd - wLinkData
+.loop
xor a
ld [hli], a
dec bc
ld a, b
or c
- jr nz, .asm_2842c
+ jr nz, .loop
ret
; 28434
-Function28434: ; 28434
+FixDataForLinkTransfer: ; 28434
ld hl, wd1f3
ld a, $fd
- ld b, $7
-.asm_2843b
+ ld b, LinkBattleRNs - wd1f3
+.loop1
ld [hli], a
dec b
- jr nz, .asm_2843b
- ld b, $a
-.asm_28441
+ jr nz, .loop1
+ ld b, TempEnemyMonSpecies - LinkBattleRNs
+.loop2
call Random
cp $fd
- jr nc, .asm_28441
+ jr nc, .loop2
ld [hli], a
dec b
- jr nz, .asm_28441
- ld hl, wc608
+ jr nz, .loop2
+ ld hl, wMisc
ld a, $fd
rept 3
ld [hli], a
endr
- ld b, $c8
+ ld b, wc6d3 - (wMisc + 3)
xor a
-.asm_28457
+.loop3
ld [hli], a
dec b
- jr nz, .asm_28457
- ld hl, wc818
- ld de, wc608 + 10
- ld bc, 0
-.asm_28464
+ jr nz, .loop3
+ ld hl, wTimeCapsulePartyMon1 - 1 + 6
+ ld de, wc612
+ lb bc, 0, 0
+.loop4
inc c
ld a, c
cp $fd
- jr z, .asm_2848c
+ jr z, .next1
ld a, b
dec a
- jr nz, .asm_2847f
+ jr nz, .next2
push bc
ld a, [wLinkMode]
cp LINK_TIMECAPSULE
ld b, $d
- jr z, .asm_2847a
+ jr z, .got_value
ld b, $27
-
-.asm_2847a
+.got_value
ld a, c
cp b
pop bc
- jr z, .asm_28495
-
-.asm_2847f
+ jr z, .done
+.next2
inc hl
ld a, [hl]
cp $fe
- jr nz, .asm_28464
+ jr nz, .loop4
ld a, c
ld [de], a
inc de
ld [hl], $ff
- jr .asm_28464
+ jr .loop4
-.asm_2848c
+.next1
ld a, $ff
ld [de], a
inc de
lb bc, 1, 0
- jr .asm_28464
+ jr .loop4
-.asm_28495
+.done
ld a, $ff
ld [de], a
ret
; 28499
-Function28499: ; 28499
- ld de, OverworldMap
+Link_PrepPartyData_Gen1: ; 28499
+ ld de, wLinkData
ld a, $fd
- ld b, $6
-.asm_284a0
+ ld b, 6
+.loop1
ld [de], a
inc de
dec b
- jr nz, .asm_284a0
+ jr nz, .loop1
ld hl, PlayerName
ld bc, NAME_LENGTH
call CopyBytes
@@ -650,10 +647,10 @@ Function28499: ; 28499
ld a, [hli]
ld [de], a
inc de
-.asm_284b5
+.loop2
ld a, [hli]
- cp $ff
- jr z, .asm_284ce
+ cp -1
+ jr z, .done_party
ld [wd265], a
push hl
push de
@@ -663,34 +660,34 @@ Function28499: ; 28499
ld a, [wd265]
ld [de], a
inc de
- jr .asm_284b5
+ jr .loop2
-.asm_284ce
+.done_party
ld [de], a
pop de
- ld hl, $8
+ ld hl, 1 + PARTY_LENGTH + 1
add hl, de
ld d, h
ld e, l
ld hl, PartyMon1Species
- ld c, $6
-.asm_284db
+ ld c, PARTY_LENGTH
+.mon_loop
push bc
- call Function284f6
+ call .ConvertPartyStruct2to1
ld bc, PARTYMON_STRUCT_LENGTH
add hl, bc
pop bc
dec c
- jr nz, .asm_284db
+ jr nz, .mon_loop
ld hl, PartyMonOT
- call .asm_284f0
+ call .copy_ot_nicks
ld hl, PartyMonNicknames
-.asm_284f0
- ld bc, $42
+.copy_ot_nicks
+ ld bc, PARTY_LENGTH * NAME_LENGTH
jp CopyBytes
; 284f6
-Function284f6: ; 284f6
+.ConvertPartyStruct2to1: ; 284f6
ld b, h
ld c, l
push de
@@ -703,7 +700,7 @@ Function284f6: ; 284f6
ld a, [wd265]
ld [de], a
inc de
- ld hl, $22
+ ld hl, MON_HP
add hl, bc
ld a, [hli]
ld [de], a
@@ -714,26 +711,26 @@ Function284f6: ; 284f6
xor a
ld [de], a
inc de
- ld hl, $20
+ ld hl, MON_STATUS
add hl, bc
ld a, [hl]
ld [de], a
inc de
ld a, [bc]
- cp $51
- jr z, .asm_28528
- cp $52
- jr nz, .asm_28530
+ cp MAGNEMITE
+ jr z, .steel_type
+ cp MAGNETON
+ jr nz, .skip_steel
-.asm_28528
- ld a, $17
+.steel_type
+ ld a, ELECTRIC
ld [de], a
inc de
ld [de], a
inc de
- jr .asm_28544
+ jr .done_steel
-.asm_28530
+.skip_steel
push bc
dec a
ld hl, BaseData + 7 ; type
@@ -744,15 +741,15 @@ Function284f6: ; 284f6
call FarCopyBytes
pop bc
-.asm_28544
+.done_steel
push bc
- ld hl, $1
+ ld hl, MON_ITEM
add hl, bc
- ld bc, $1a
+ ld bc, MON_HAPPINESS - MON_ITEM
call CopyBytes
pop bc
- ld hl, $1f
+ ld hl, MON_LEVEL
add hl, bc
ld a, [hl]
ld [de], a
@@ -760,9 +757,9 @@ Function284f6: ; 284f6
inc de
push bc
- ld hl, $24
+ ld hl, MON_MAXHP
add hl, bc
- ld bc, 8
+ ld bc, MON_SAT - MON_MAXHP
call CopyBytes
pop bc
@@ -781,19 +778,19 @@ Function284f6: ; 284f6
ld [BaseSpecialAttack], a
pop bc
- ld hl, $a
+ ld hl, MON_STAT_EXP - 1
add hl, bc
- ld c, $5
- ld b, $1
+ ld c, STAT_SATK
+ ld b, TRUE
predef CalcPkmnStatC
pop bc
pop de
- ld a, [$ffb5]
+ ld a, [hQuotient + 1]
ld [de], a
inc de
- ld a, [$ffb6]
+ ld a, [hQuotient + 2]
ld [de], a
inc de
ld h, b
@@ -801,10 +798,10 @@ Function284f6: ; 284f6
ret
; 28595
-Function28595: ; 28595
- ld de, wc800
- ld a, EGG
- ld b, PARTY_LENGTH
+Link_PrepPartyData_Gen2: ; 28595
+ ld de, wLinkData
+ ld a, $fd
+ ld b, 6
.loop1
ld [de], a
inc de
@@ -960,31 +957,31 @@ Function2868a: ; 2868a
push hl
ld d, h
ld e, l
- ld bc, wcbea
+ ld bc, wLinkOTPartyMonTypes
ld hl, wcbe8
ld a, c
ld [hli], a
ld [hl], b
ld hl, OTPartyMon1Species
- ld c, $6
+ ld c, PARTY_LENGTH
.loop
push bc
- call Function286ba
+ call .ConvertToGen2
pop bc
dec c
jr nz, .loop
pop hl
- lb bc, 1, 8
+ ld bc, PARTY_LENGTH * REDMON_STRUCT_LENGTH
add hl, bc
ld de, OTPartyMonOT
- ld bc, $42
+ ld bc, PARTY_LENGTH * NAME_LENGTH
call CopyBytes
ld de, OTPartyMonNicknames
- ld bc, $42
+ ld bc, PARTY_LENGTH * PKMN_NAME_LENGTH
jp CopyBytes
; 286ba
-Function286ba: ; 286ba
+.ConvertToGen2: ; 286ba
ld b, h
ld c, l
ld a, [de]
@@ -998,7 +995,7 @@ Function286ba: ; 286ba
ld a, [wd265]
ld [bc], a
ld [CurSpecies], a
- ld hl, $22
+ ld hl, MON_HP
add hl, bc
ld a, [de]
inc de
@@ -1007,7 +1004,7 @@ Function286ba: ; 286ba
inc de
ld [hl], a
inc de
- ld hl, $20
+ ld hl, MON_STATUS
add hl, bc
ld a, [de]
inc de
@@ -1025,9 +1022,9 @@ Function286ba: ; 286ba
ld a, l
ld [wcbe8], a
ld a, h
- ld [wcbe9], a
+ ld [wcbe8 + 1], a
push bc
- ld hl, $1
+ ld hl, MON_ITEM
add hl, bc
push hl
ld h, d
@@ -1036,7 +1033,7 @@ Function286ba: ; 286ba
push bc
ld a, [hli]
ld b, a
- call Function28771
+ call TimeCapsule_ReplaceTeruSama
ld a, b
ld [de], a
inc de
@@ -1067,29 +1064,29 @@ Function286ba: ; 286ba
push bc
ld d, h
ld e, l
- ld hl, $a
+ ld hl, MON_STAT_EXP - 1
add hl, bc
- ld c, $5
- ld b, $1
+ ld c, STAT_SATK
+ ld b, TRUE
predef CalcPkmnStatC
pop bc
pop hl
- ld a, [$ffb5]
+ ld a, [hQuotient + 1]
ld [hli], a
- ld a, [$ffb6]
+ ld a, [hQuotient + 2]
ld [hli], a
push hl
push bc
- ld hl, $a
+ ld hl, MON_STAT_EXP - 1
add hl, bc
- ld c, $6
- ld b, $1
+ ld c, STAT_SDEF
+ ld b, TRUE
predef CalcPkmnStatC
pop bc
pop hl
- ld a, [$ffb5]
+ ld a, [hQuotient + 1]
ld [hli], a
- ld a, [$ffb6]
+ ld a, [hQuotient + 2]
ld [hli], a
push hl
ld hl, $1b
@@ -1108,7 +1105,7 @@ endr
ret
; 28771
-Function28771: ; 28771
+TimeCapsule_ReplaceTeruSama: ; 28771
ld a, b
and a
ret z
@@ -1145,356 +1142,356 @@ Function28771: ; 28771
db ITEM_C3, BERRY
db ITEM_DC, BERRY
db HM_08, BERRY
- db $ff, BERRY
- db $00
+ db -1, BERRY
+ db 0
; 2879e
-Function2879e: ; 2879e
-.asm_2879e
+Link_CopyOTData: ; 2879e
+.loop
ld a, [hli]
cp $fe
- jr z, .asm_2879e
+ jr z, .loop
ld [de], a
inc de
dec bc
ld a, b
or c
- jr nz, .asm_2879e
+ jr nz, .loop
ret
; 287ab
-Function287ab: ; 287ab
+Link_CopyRandomNumbers: ; 287ab
ld a, [hLinkPlayerNumber]
cp $2
ret z
ld hl, EnemyMonSpecies
- call Function287d8
+ call Link_FindFirstNonControlCharacter_AllowZero
ld de, LinkBattleRNs
- ld c, $a
-.asm_287bb
+ ld c, 10
+.loop
ld a, [hli]
cp $fe
- jr z, .asm_287bb
+ jr z, .loop
cp $fd
- jr z, .asm_287bb
+ jr z, .loop
ld [de], a
inc de
dec c
- jr nz, .asm_287bb
+ jr nz, .loop
ret
; 287ca
-Function287ca: ; 287ca
-.asm_287ca
+Link_FindFirstNonControlCharacter_SkipZero: ; 287ca
+.loop
ld a, [hli]
and a
- jr z, .asm_287ca
+ jr z, .loop
cp $fd
- jr z, .asm_287ca
+ jr z, .loop
cp $fe
- jr z, .asm_287ca
+ jr z, .loop
dec hl
ret
; 287d8
-Function287d8: ; 287d8
-.asm_287d8
+Link_FindFirstNonControlCharacter_AllowZero: ; 287d8
+.loop
ld a, [hli]
cp $fd
- jr z, .asm_287d8
+ jr z, .loop
cp $fe
- jr z, .asm_287d8
+ jr z, .loop
dec hl
ret
; 287e3
-Function287e3: ; 287e3
+InitTradeMenuDisplay: ; 287e3
call ClearScreen
- call Function28ef8
- callba Function16d673
+ call LoadTradeScreenBorder
+ callba InitTradeSpeciesList
xor a
ld hl, wOtherPlayerLinkMode
rept 3
ld [hli], a
endr
ld [hl], a
- ld a, $1
- ld [MenuSelection2], a
+ ld a, 1
+ ld [wMenuCursorY], a
inc a
ld [wPlayerLinkAction], a
- jp Function2888b
+ jp LinkTrade_PlayerPartyMenu
; 28803
-Function28803: ; 28803
- ld a, $1
+LinkTrade_OTPartyMenu: ; 28803
+ ld a, OTPARTYMON
ld [MonType], a
- ld a, $c1
- ld [wcfa8], a
+ ld a, A_BUTTON | D_UP | D_DOWN
+ ld [wMenuJoypadFilter], a
ld a, [OTPartyCount]
- ld [wcfa3], a
- ld a, $1
- ld [wcfa4], a
- ld a, $9
- ld [wcfa1], a
- ld a, $6
- ld [wcfa2], a
- ld a, $1
- ld [wcfaa], a
- ld a, $10
- ld [wcfa7], a
+ ld [w2DMenuNumRows], a
+ ld a, 1
+ ld [w2DMenuNumCols], a
+ ld a, 9
+ ld [w2DMenuCursorInitY], a
+ ld a, 6
+ ld [w2DMenuCursorInitX], a
+ ld a, 1
+ ld [wMenuCursorX], a
+ ln a, 1, 0
+ ld [w2DMenuCursorOffsets], a
ld a, $20
- ld [wcfa5], a
+ ld [w2DMenuFlags1], a
xor a
- ld [wcfa6], a
+ ld [w2DMenuFlags2], a
-Function28835: ; 28835
- callba Function16d70c
+LinkTradeOTPartymonMenuLoop: ; 28835
+ callba LinkTradeMenu
ld a, d
and a
- jp z, Function2891c
- bit 0, a
- jr z, .asm_2885b
+ jp z, LinkTradePartiesMenuMasterLoop
+ bit A_BUTTON_F, a
+ jr z, .not_a_button
ld a, $1
ld [wd263], a
callab Function50db9
ld hl, OTPartyMon1Species
- callba Function4d319
- jp Function2891c
+ callba LinkMonStatsScreen
+ jp LinkTradePartiesMenuMasterLoop
-.asm_2885b
- bit 6, a
- jr z, .asm_28883
- ld a, [MenuSelection2]
+.not_a_button
+ bit D_UP_F, a
+ jr z, .not_d_up
+ ld a, [wMenuCursorY]
ld b, a
ld a, [OTPartyCount]
cp b
- jp nz, Function2891c
+ jp nz, LinkTradePartiesMenuMasterLoop
xor a
ld [MonType], a
- call Function1bf7
+ call HideCursor
push hl
push bc
ld bc, NAME_LENGTH
add hl, bc
- ld [hl], $7f
+ ld [hl], " "
pop bc
pop hl
ld a, [PartyCount]
- ld [MenuSelection2], a
- jr Function2888b
+ ld [wMenuCursorY], a
+ jr LinkTrade_PlayerPartyMenu
-.asm_28883
- bit 7, a
- jp z, Function2891c
+.not_d_up
+ bit D_DOWN_F, a
+ jp z, LinkTradePartiesMenuMasterLoop
jp Function28ac9
; 2888b
-Function2888b: ; 2888b
- callba Function49856
+LinkTrade_PlayerPartyMenu: ; 2888b
+ callba InitMG_Mobile_LinkTradePalMap
xor a
ld [MonType], a
- ld a, $c1
- ld [wcfa8], a
+ ld a, A_BUTTON | D_UP | D_DOWN
+ ld [wMenuJoypadFilter], a
ld a, [PartyCount]
- ld [wcfa3], a
- ld a, $1
- ld [wcfa4], a
- ld a, $1
- ld [wcfa1], a
- ld a, $6
- ld [wcfa2], a
- ld a, $1
- ld [wcfaa], a
- ld a, $10
- ld [wcfa7], a
+ ld [w2DMenuNumRows], a
+ ld a, 1
+ ld [w2DMenuNumCols], a
+ ld a, 1
+ ld [w2DMenuCursorInitY], a
+ ld a, 6
+ ld [w2DMenuCursorInitX], a
+ ld a, 1
+ ld [wMenuCursorX], a
+ ln a, 1, 0
+ ld [w2DMenuCursorOffsets], a
ld a, $20
- ld [wcfa5], a
+ ld [w2DMenuFlags1], a
xor a
- ld [wcfa6], a
- call Function3200
+ ld [w2DMenuFlags2], a
+ call WaitBGMap2
-Function288c5: ; 288c5
- callba Function16d70c
+LinkTradePartymonMenuLoop: ; 288c5
+ callba LinkTradeMenu
ld a, d
and a
- jr nz, .asm_288d2
- jp Function2891c
+ jr nz, .check_joypad
+ jp LinkTradePartiesMenuMasterLoop
-.asm_288d2
- bit 0, a
- jr z, .asm_288d9
+.check_joypad
+ bit A_BUTTON_F, a
+ jr z, .not_a_button
jp Function28926
-.asm_288d9
- bit 7, a
- jr z, .asm_288fe
- ld a, [MenuSelection2]
+.not_a_button
+ bit D_DOWN_F, a
+ jr z, .not_d_down
+ ld a, [wMenuCursorY]
dec a
- jp nz, Function2891c
- ld a, $1
+ jp nz, LinkTradePartiesMenuMasterLoop
+ ld a, OTPARTYMON
ld [MonType], a
- call Function1bf7
+ call HideCursor
push hl
push bc
ld bc, NAME_LENGTH
add hl, bc
- ld [hl], $7f
+ ld [hl], " "
pop bc
pop hl
- ld a, $1
- ld [MenuSelection2], a
- jp Function28803
-
-.asm_288fe
- bit 6, a
- jr z, Function2891c
- ld a, [MenuSelection2]
+ ld a, 1
+ ld [wMenuCursorY], a
+ jp LinkTrade_OTPartyMenu
+
+.not_d_down
+ bit D_UP_F, a
+ jr z, LinkTradePartiesMenuMasterLoop
+ ld a, [wMenuCursorY]
ld b, a
ld a, [PartyCount]
cp b
- jr nz, Function2891c
- call Function1bf7
+ jr nz, LinkTradePartiesMenuMasterLoop
+ call HideCursor
push hl
push bc
ld bc, NAME_LENGTH
add hl, bc
- ld [hl], $7f
+ ld [hl], " "
pop bc
pop hl
jp Function28ade
; 2891c
-Function2891c: ; 2891c
+LinkTradePartiesMenuMasterLoop: ; 2891c
ld a, [MonType]
and a
- jp z, Function288c5
- jp Function28835
+ jp z, LinkTradePartymonMenuLoop ; PARTYMON
+ jp LinkTradeOTPartymonMenuLoop ; OTPARTYMON
; 28926
Function28926: ; 28926
call LoadTileMapToTempTileMap
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
push af
hlcoord 0, 15
- ld b, $1
- ld c, $12
+ ld b, 1
+ ld c, 18
call Predef_LinkTextbox
hlcoord 2, 16
- ld de, String28ab4
+ ld de, .String_Stats_Trade
call PlaceString
callba Function4d354
-.asm_28946
- ld a, $7f
+.joy_loop
+ ld a, " "
ldcoord_a 11, 16
- ld a, $13
- ld [wcfa8], a
- ld a, $1
- ld [wcfa3], a
- ld a, $1
- ld [wcfa4], a
- ld a, $10
- ld [wcfa1], a
- ld a, $1
- ld [wcfa2], a
- ld a, $1
- ld [MenuSelection2], a
- ld [wcfaa], a
- ld a, $20
- ld [wcfa7], a
+ ld a, A_BUTTON | B_BUTTON | D_RIGHT
+ ld [wMenuJoypadFilter], a
+ ld a, 1
+ ld [w2DMenuNumRows], a
+ ld a, 1
+ ld [w2DMenuNumCols], a
+ ld a, 16
+ ld [w2DMenuCursorInitY], a
+ ld a, 1
+ ld [w2DMenuCursorInitX], a
+ ld a, 1
+ ld [wMenuCursorY], a
+ ld [wMenuCursorX], a
+ ln a, 2, 0
+ ld [w2DMenuCursorOffsets], a
xor a
- ld [wcfa5], a
- ld [wcfa6], a
- call Function1bd3
- bit 4, a
- jr nz, .asm_2898d
- bit 1, a
- jr z, .asm_289cd
-.asm_28983
+ ld [w2DMenuFlags1], a
+ ld [w2DMenuFlags2], a
+ call ScrollingMenuJoypad
+ bit D_RIGHT_F, a
+ jr nz, .d_right
+ bit B_BUTTON_F, a
+ jr z, .show_stats
+.b_button
pop af
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
call Call_LoadTempTileMapToTileMap
- jp Function2888b
+ jp LinkTrade_PlayerPartyMenu
-.asm_2898d
- ld a, $7f
+.d_right
+ ld a, " "
ldcoord_a 1, 16
- ld a, $23
- ld [wcfa8], a
- ld a, $1
- ld [wcfa3], a
- ld a, $1
- ld [wcfa4], a
- ld a, $10
- ld [wcfa1], a
- ld a, $b
- ld [wcfa2], a
- ld a, $1
- ld [MenuSelection2], a
- ld [wcfaa], a
- ld a, $20
- ld [wcfa7], a
+ ld a, A_BUTTON | B_BUTTON | D_LEFT
+ ld [wMenuJoypadFilter], a
+ ld a, 1
+ ld [w2DMenuNumRows], a
+ ld a, 1
+ ld [w2DMenuNumCols], a
+ ld a, 16
+ ld [w2DMenuCursorInitY], a
+ ld a, 11
+ ld [w2DMenuCursorInitX], a
+ ld a, 1
+ ld [wMenuCursorY], a
+ ld [wMenuCursorX], a
+ ln a, 2, 0
+ ld [w2DMenuCursorOffsets], a
xor a
- ld [wcfa5], a
- ld [wcfa6], a
- call Function1bd3
- bit 5, a
- jp nz, .asm_28946
- bit 1, a
- jr nz, .asm_28983
- jr .asm_289fe
-
-.asm_289cd
+ ld [w2DMenuFlags1], a
+ ld [w2DMenuFlags2], a
+ call ScrollingMenuJoypad
+ bit D_LEFT_F, a
+ jp nz, .joy_loop
+ bit B_BUTTON_F, a
+ jr nz, .b_button
+ jr .try_trade
+
+.show_stats
pop af
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
ld a, $4
ld [wd263], a
callab Function50db9
- callba Function4d319
+ callba LinkMonStatsScreen
call Call_LoadTempTileMapToTileMap
hlcoord 6, 1
lb bc, 6, 1
ld a, " "
- call Function28b77
+ call LinkEngine_FillBox
hlcoord 17, 1
lb bc, 6, 1
ld a, " "
- call Function28b77
- jp Function2888b
+ call LinkEngine_FillBox
+ jp LinkTrade_PlayerPartyMenu
-.asm_289fe
- call Function1bee
+.try_trade
+ call PlaceHollowCursor
pop af
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
dec a
ld [wd002], a
ld [wPlayerLinkAction], a
callba Function16d6ce
ld a, [wOtherPlayerLinkMode]
cp $f
- jp z, Function287e3
+ jp z, InitTradeMenuDisplay
ld [wd003], a
call Function28b68
- ld c, $64
+ ld c, 100
call DelayFrames
- callba Functionfb57e
- jr c, .asm_28a58
+ callba ValidateOTTrademon
+ jr c, .abnormal
callba Functionfb5dd
- jp nc, Function28b87
+ jp nc, LinkTrade
xor a
ld [wcf57], a
ld [wOtherPlayerLinkAction], a
hlcoord 0, 12
- ld b, $4
- ld c, $12
+ ld b, 4
+ ld c, 18
call Predef_LinkTextbox
callba Function4d354
- ld hl, UnknownText_0x28aaf
+ ld hl, .Text_CantTradeLastMon
bccoord 1, 14
call PlaceWholeStringInBoxAtOnce
- jr .asm_28a89
+ jr .cancel_trade
-.asm_28a58
+.abnormal
xor a
ld [wcf57], a
ld [wOtherPlayerLinkAction], a
@@ -1507,41 +1504,41 @@ Function28926: ; 28926
ld [wd265], a
call GetPokemonName
hlcoord 0, 12
- ld b, $4
- ld c, $12
+ ld b, 4
+ ld c, 18
call Predef_LinkTextbox
callba Function4d354
- ld hl, UnknownText_0x28ac4
+ ld hl, .Text_Abnormal
bccoord 1, 14
call PlaceWholeStringInBoxAtOnce
-.asm_28a89
+.cancel_trade
hlcoord 0, 12
- ld b, $4
- ld c, $12
+ ld b, 4
+ ld c, 18
call Predef_LinkTextbox
hlcoord 1, 14
- ld de, String28ece
+ ld de, String_TooBadTheTradeWasCanceled
call PlaceString
ld a, $1
ld [wPlayerLinkAction], a
callba Function16d6ce
- ld c, $64
+ ld c, 100
call DelayFrames
- jp Function287e3
+ jp InitTradeMenuDisplay
; 28aaf
-UnknownText_0x28aaf: ; 0x28aaf
+.Text_CantTradeLastMon: ; 0x28aaf
; If you trade that #MON, you won't be able to battle.
text_jump UnknownText_0x1c41b1
db "@"
; 0x28ab4
-String28ab4: ; 28ab4
+.String_Stats_Trade: ; 28ab4
db "STATS TRADE@"
-UnknownText_0x28ac4: ; 0x28ac4
+.Text_Abnormal: ; 0x28ac4
; Your friend's @ appears to be abnormal!
text_jump UnknownText_0x1c41e6
db "@"
@@ -1549,60 +1546,58 @@ UnknownText_0x28ac4: ; 0x28ac4
Function28ac9: ; 28ac9
- ld a, [MenuSelection2]
- cp $1
- jp nz, Function2891c
- call Function1bf7
+ ld a, [wMenuCursorY]
+ cp 1
+ jp nz, LinkTradePartiesMenuMasterLoop
+ call HideCursor
push hl
push bc
ld bc, NAME_LENGTH
add hl, bc
- ld [hl], $7f
+ ld [hl], " "
pop bc
pop hl
-
Function28ade: ; 28ade
-.asm_28ade
- ld a, $ed
+.loop1
+ ld a, "▶"
ldcoord_a 9, 17
-.asm_28ae3
+.loop2
call JoyTextDelay
ld a, [hJoyLast]
and a
- jr z, .asm_28ae3
- bit 0, a
- jr nz, .asm_28b0b
+ jr z, .loop2
+ bit A_BUTTON_F, a
+ jr nz, .a_button
push af
ld a, " "
ldcoord_a 9, 17
pop af
- bit 6, a
- jr z, .asm_28b03
+ bit D_UP_F, a
+ jr z, .d_up
ld a, [OTPartyCount]
- ld [MenuSelection2], a
- jp Function28803
+ ld [wMenuCursorY], a
+ jp LinkTrade_OTPartyMenu
-.asm_28b03
+.d_up
ld a, $1
- ld [MenuSelection2], a
- jp Function2888b
+ ld [wMenuCursorY], a
+ jp LinkTrade_PlayerPartyMenu
-.asm_28b0b
- ld a, $ec
+.a_button
+ ld a, "▷"
ldcoord_a 9, 17
ld a, $f
ld [wPlayerLinkAction], a
callba Function16d6ce
ld a, [wOtherPlayerLinkMode]
cp $f
- jr nz, .asm_28ade
-
+ jr nz, .loop1
Function28b22: ; 28b22
call RotateThreePalettesRight
call ClearScreen
ld b, SCGB_08
call GetSGBLayout
- call Function3200
+ call WaitBGMap2
xor a
ld [wcfbb], a
xor a
@@ -1616,6 +1611,7 @@ Function28b22: ; 28b22
; 28b42
Function28b42: ; 28b42
+; unreferenced
hlcoord 0, 16
ld a, "┘"
ld bc, 2 * SCREEN_WIDTH
@@ -1625,11 +1621,11 @@ Function28b42: ; 28b42
ld bc, SCREEN_WIDTH - 2
call ByteFill
hlcoord 2, 16
- ld de, String_28b61
+ ld de, .Cancel
jp PlaceString
; 28b61
-String_28b61: ; 28b61
+.Cancel: ; 28b61
db "CANCEL@"
; 28b68
@@ -1638,28 +1634,28 @@ Function28b68: ; 28b68
hlcoord 6, 9
ld bc, SCREEN_WIDTH
call AddNTimes
- ld [hl], $ec
+ ld [hl], "▷"
ret
; 28b77
-Function28b77: ; 28b77
-.asm_28b77
+LinkEngine_FillBox: ; 28b77
+.row
push bc
push hl
-.asm_28b79
+.col
ld [hli], a
dec c
- jr nz, .asm_28b79
+ jr nz, .col
pop hl
ld bc, SCREEN_WIDTH
add hl, bc
pop bc
dec b
- jr nz, .asm_28b77
+ jr nz, .row
ret
; 28b87
-Function28b87: ; 28b87
+LinkTrade: ; 28b87
xor a
ld [wcf57], a
ld [wOtherPlayerLinkAction], a
@@ -1693,39 +1689,39 @@ Function28b87: ; 28b87
call PlaceWholeStringInBoxAtOnce
call LoadStandardMenuDataHeader
hlcoord 10, 7
- ld b, $3
- ld c, $7
+ ld b, 3
+ ld c, 7
call Predef_LinkTextbox
ld de, String28eab
hlcoord 12, 8
call PlaceString
- ld a, $8
- ld [wcfa1], a
- ld a, $b
- ld [wcfa2], a
- ld a, $1
- ld [wcfa4], a
- ld a, $2
- ld [wcfa3], a
+ ld a, 8
+ ld [w2DMenuCursorInitY], a
+ ld a, 11
+ ld [w2DMenuCursorInitX], a
+ ld a, 1
+ ld [w2DMenuNumCols], a
+ ld a, 2
+ ld [w2DMenuNumRows], a
xor a
- ld [wcfa5], a
- ld [wcfa6], a
+ ld [w2DMenuFlags1], a
+ ld [w2DMenuFlags2], a
ld a, $20
- ld [wcfa7], a
- ld a, $3
- ld [wcfa8], a
- ld a, $1
- ld [MenuSelection2], a
- ld [wcfaa], a
+ ld [w2DMenuCursorOffsets], a
+ ld a, A_BUTTON | B_BUTTON
+ ld [wMenuJoypadFilter], a
+ ld a, 1
+ ld [wMenuCursorY], a
+ ld [wMenuCursorX], a
callba Function4d354
- call Function1bd3
+ call ScrollingMenuJoypad
push af
call Call_ExitMenu
- call Function3200
+ call WaitBGMap2
pop af
bit 1, a
jr nz, .asm_28c33
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
jr z, .asm_28c54
@@ -1737,7 +1733,7 @@ Function28b87: ; 28b87
ld c, 18
call Predef_LinkTextbox
hlcoord 1, 14
- ld de, String28ece
+ ld de, String_TooBadTheTradeWasCanceled
call PlaceString
callba Function16d6ce
jp Function28ea3
@@ -1754,7 +1750,7 @@ Function28b87: ; 28b87
ld c, 18
call Predef_LinkTextbox
hlcoord 1, 14
- ld de, String28ece
+ ld de, String_TooBadTheTradeWasCanceled
call PlaceString
jp Function28ea3
@@ -1837,7 +1833,7 @@ Function28b87: ; 28b87
callba GetCaughtGender
ld a, c
ld [wPlayerTrademonCaughtData], a
- ld hl, wd26b
+ ld hl, OTPlayerName
ld de, wOTTrademonSenderName
ld bc, NAME_LENGTH
call CopyBytes
@@ -1886,12 +1882,12 @@ Function28b87: ; 28b87
ld [wd002], a
xor a
ld [wPokemonWithdrawDepositParameter], a
- callab Functione039
+ callab RemoveMonFromPartyOrBox
ld a, [PartyCount]
dec a
ld [CurPartyMon], a
ld a, $1
- ld [wd1e9], a
+ ld [wForceEvolution], a
ld a, [wd003]
push af
ld hl, OTPartySpecies
@@ -1937,7 +1933,7 @@ Function28b87: ; 28b87
ld [CurPartyMon], a
callab EvolvePokemon
call ClearScreen
- call Function28ef8
+ call LoadTradeScreenBorder
call Function28eff
callba Function4d354
ld b, $1
@@ -1991,14 +1987,14 @@ Function28b87: ; 28b87
call DelayFrames
ld a, [wLinkMode]
cp LINK_TIMECAPSULE
- jp z, Function2805d
- jp Function28177
+ jp z, TimeCapsule
+ jp Gen2ToGen2LinkComms
; 28ea3
Function28ea3: ; 28ea3
ld c, 100
call DelayFrames
- jp Function287e3
+ jp InitTradeMenuDisplay
; 28eab
String28eab: ; 28eab
@@ -2014,7 +2010,7 @@ UnknownText_0x28eb8: ; 0x28eb8
String28ebd: ; 28ebd
db "Trade completed!@"
-String28ece: ; 28ece
+String_TooBadTheTradeWasCanceled: ; 28ece
db "Too bad! The trade"
next "was canceled!@"
@@ -2026,8 +2022,8 @@ Predef_LinkTextbox: ; 28eef
ret
; 28ef8
-Function28ef8: ; 28ef8
- callba Function16d696
+LoadTradeScreenBorder: ; 28ef8
+ callba _LoadTradeScreenBorder
ret
; 28eff
@@ -2038,6 +2034,7 @@ Function28eff: ; 28eff
; 28f09
Function28f09: ; 28f09
+; unreferenced
hlcoord 0, 0
ld b, 6
ld c, 18
@@ -2046,7 +2043,7 @@ Function28f09: ; 28f09
ld b, 6
ld c, 18
call Predef_LinkTextbox
- callba Functionfb60d
+ callba PlaceTradePartnerNamesAndParty
ret
; 28f24
@@ -2064,7 +2061,7 @@ Special_CheckTimeCapsuleCompatibility: ; 29bfb
ld b, PARTY_LENGTH ; 6
.loop
ld a, [hli]
- cp $ff
+ cp -1
jr z, .checkitem
cp CHIKORITA ; MEW + 1 ; 151 + 1
jr nc, .mon_too_new
@@ -2161,8 +2158,8 @@ Special_EnterTimeCapsule: ; 29c7b
ret
; 29c92
-Special_AbortLink: ; 29c92
- ld c, $3
+WaitForOtherPlayerToExit: ; 29c92
+ ld c, 3
call DelayFrames
ld a, -1
ld [hLinkPlayerNumber], a
@@ -2173,7 +2170,7 @@ Special_AbortLink: ; 29c92
ld [rSC], a
ld a, $81
ld [rSC], a
- ld c, $3
+ ld c, 3
call DelayFrames
xor a
ld [rSB], a
@@ -2188,7 +2185,7 @@ Special_AbortLink: ; 29c92
ld [rSB], a
ld [hSerialReceive], a
ld [rSC], a
- ld c, $3
+ ld c, 3
call DelayFrames
ld a, -1
ld [hLinkPlayerNumber], a
@@ -2295,9 +2292,9 @@ Special_WaitForLinkedFriend: ; 29d11
jr .asm_29d39
.asm_29d79
- call LinkCommunicationsSignalDataReceived
+ call LinkDataReceived
call DelayFrame
- call LinkCommunicationsSignalDataReceived
+ call LinkDataReceived
ld c, $32
call DelayFrames
ld a, $1
@@ -2348,16 +2345,16 @@ Function29dba: ; 29dba
call Function29e0c
ld a, [ScriptVar]
and a
- jr z, .asm_29e08
- ld bc, rIE
-.asm_29de0
+ jr z, .vblank
+ ld bc, -1
+.wait
dec bc
ld a, b
or c
- jr nz, .asm_29de0
+ jr nz, .wait
ld a, [wOtherPlayerLinkMode]
cp $5
- jr nz, .asm_29e03
+ jr nz, .script_var
ld a, $6
ld [wPlayerLinkAction], a
ld hl, wcf5b
@@ -2367,14 +2364,14 @@ Function29dba: ; 29dba
call Function29e0c
ld a, [wOtherPlayerLinkMode]
cp $6
- jr z, .asm_29e08
+ jr z, .vblank
-.asm_29e03
+.script_var
xor a
ld [ScriptVar], a
ret
-.asm_29e08
+.vblank
xor a
ld [hVBlank], a
ret
@@ -2426,7 +2423,7 @@ Function29e47: ; 29e47
ld b, $a
.asm_29e49
call DelayFrame
- call LinkCommunicationsSignalDataReceived
+ call LinkDataReceived
dec b
jr nz, .asm_29e49
ret
@@ -2467,9 +2464,9 @@ Special_CheckBothSelectedSameRoom: ; 29e82
ld a, [wd265]
call Function29f17
push af
- call LinkCommunicationsSignalDataReceived
+ call LinkDataReceived
call DelayFrame
- call LinkCommunicationsSignalDataReceived
+ call LinkDataReceived
pop af
ld b, a
ld a, [wd265]
@@ -2593,5 +2590,6 @@ Special_CableClubCheckWhichChris: ; 29f47
; 29f54
GFX_29f54: ; 29f54
+; unreferenced
INCBIN "gfx/unknown/029f54.2bpp"
; 29fe4
diff --git a/engine/link_trade.asm b/engine/link_trade.asm
new file mode 100755
index 000000000..395f1f3d3
--- /dev/null
+++ b/engine/link_trade.asm
@@ -0,0 +1,363 @@
+LinkCommsBorderGFX:
+INCBIN "gfx/unknown/16cfc1.2bpp"
+; 16d421
+
+__LoadTradeScreenBorder: ; 16d421
+ ld de, LinkCommsBorderGFX
+ ld hl, VTiles2
+ lb bc, BANK(LinkCommsBorderGFX), 70
+ call Get2bpp
+ ret
+; 16d42e
+
+Function16d42e: ; 16d42e
+ ld hl, Tilemap_16d465
+ decoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call CopyBytes
+ ret
+; 16d43b
+
+Function16d43b: ; 16d43b
+ call LoadStandardMenuDataHeader
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ callba __LoadTradeScreenBorder ; useless to farcall
+ callba Function16d42e ; useless to farcall
+ ld b, SCGB_08
+ call GetSGBLayout
+ call SetPalettes
+ call WaitBGMap
+ call JoyWaitAorB
+ call Call_ExitMenu
+ ret
+; 16d465
+
+Tilemap_16d465:
+INCBIN "gfx/unknown/16d465.tilemap"
+
+Tilemap_16d5cd:
+INCBIN "gfx/unknown/16d5cd.tilemap"
+
+Tilemap_16d5f5:
+INCBIN "gfx/unknown/16d5f5.tilemap"
+
+_LinkTextbox: ; 16d61d
+ ld h, d
+ ld l, e
+ push bc
+ push hl
+ call .draw_border
+ pop hl
+ pop bc
+
+ ld de, AttrMap - TileMap
+ add hl, de
+ inc b
+ inc b
+ inc c
+ inc c
+ ld a, $7
+.row
+ push bc
+ push hl
+.col
+ ld [hli], a
+ dec c
+ jr nz, .col
+ pop hl
+ ld de, SCREEN_WIDTH
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .row
+ ret
+; 16d640
+
+.draw_border: ; 16d640
+ push hl
+ ld a, $30
+ ld [hli], a
+ inc a
+ call .fill_row
+ inc a
+ ld [hl], a
+ pop hl
+ ld de, SCREEN_WIDTH
+ add hl, de
+.loop
+ push hl
+ ld a, $33
+ ld [hli], a
+ ld a, " "
+ call .fill_row
+ ld [hl], $34
+ pop hl
+ ld de, SCREEN_WIDTH
+ add hl, de
+ dec b
+ jr nz, .loop
+
+ ld a, $35
+ ld [hli], a
+ ld a, $36
+ call .fill_row
+ ld [hl], $37
+ ret
+; 16d66d
+
+.fill_row: ; 16d66d
+ ld d, c
+.loop4
+ ld [hli], a
+ dec d
+ jr nz, .loop4
+ ret
+; 16d673
+
+InitTradeSpeciesList: ; 16d673
+ call _LoadTradeScreenBorder
+ call Function16d6ae
+ callba InitMG_Mobile_LinkTradePalMap
+ callba PlaceTradePartnerNamesAndParty
+ hlcoord 10, 17
+ ld de, .CANCEL
+ call PlaceString
+ ret
+; 16d68f
+
+.CANCEL: ; 16d68f
+ db "CANCEL@"
+; 16d696
+
+_LoadTradeScreenBorder: ; 16d696
+ call __LoadTradeScreenBorder
+ ret
+; 16d69a
+
+
+LinkComms_LoadPleaseWaitTextboxBorderGFX: ; 16d69a
+ ld de, LinkCommsBorderGFX + $30 tiles
+ ld hl, VTiles2 tile $76
+ lb bc, BANK(LinkCommsBorderGFX), 8
+ call Get2bpp
+ ret
+; 16d6a7
+
+Function16d6a7: ; 16d6a7
+ callba Function49811
+ ret
+; 16d6ae
+
+Function16d6ae: ; 16d6ae
+ call Function16d42e
+ ld hl, Tilemap_16d5cd
+ decoord 0, 0
+ ld bc, 2 * SCREEN_WIDTH
+ call CopyBytes
+ ld hl, Tilemap_16d5f5
+ decoord 0, 16
+ ld bc, 2 * SCREEN_WIDTH
+ call CopyBytes
+ ret
+; 16d6ca
+
+LinkTextbox: ; 16d6ca
+ call _LinkTextbox
+ ret
+; 16d6ce
+
+Function16d6ce: ; 16d6ce
+ call LoadStandardMenuDataHeader
+ call Function16d6e1
+ callba Function87d
+ call Call_ExitMenu
+ call WaitBGMap2
+ ret
+; 16d6e1
+
+Function16d6e1: ; 16d6e1
+ hlcoord 4, 10
+ ld b, 1
+ ld c, 10
+ predef Predef_LinkTextbox
+ hlcoord 5, 11
+ ld de, .Waiting
+ call PlaceString
+ call WaitBGMap
+ call WaitBGMap2
+ ld c, 50
+ jp DelayFrames
+; 16d701
+
+.Waiting: ; 16d701
+ db "WAITING..!@"
+; 16d70c
+
+LinkTradeMenu: ; 16d70c
+ call .MenuAction
+ call .GetJoypad
+ ret
+; 16d713
+
+.GetJoypad: ; 16d713
+ push bc
+ push af
+ ld a, [hJoyLast]
+ and D_PAD
+ ld b, a
+ ld a, [hJoyPressed]
+ and BUTTONS
+ or b
+ ld b, a
+ pop af
+ ld a, b
+ pop bc
+ ld d, a
+ ret
+; 16d725
+
+.MenuAction: ; 16d725
+ ld hl, w2DMenuFlags2
+ res 7, [hl]
+ ld a, [hBGMapMode]
+ push af
+ call .loop
+ pop af
+ ld [hBGMapMode], a
+ ret
+
+.loop
+ call .UpdateCursor
+ call .UpdateBGMapAndOAM
+ call .loop2
+ jr nc, .done
+ callba _2DMenuInterpretJoypad
+ jr c, .done
+ ld a, [w2DMenuFlags1]
+ bit 7, a
+ jr nz, .done
+ call .GetJoypad
+ ld b, a
+ ld a, [wMenuJoypadFilter]
+ and b
+ jr z, .loop
+
+.done
+ ret
+; 16d759
+
+.UpdateBGMapAndOAM: ; 16d759
+ ld a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ld [hOAMUpdate], a
+ call WaitBGMap
+ pop af
+ ld [hOAMUpdate], a
+ xor a
+ ld [hBGMapMode], a
+ ret
+
+.loop2
+ call RTC
+ call .TryAnims
+ ret c
+ ld a, [w2DMenuFlags1]
+ bit 7, a
+ jr z, .loop2
+ and a
+ ret
+; 16d77a
+
+.UpdateCursor: ; 16d77a
+ ld hl, wCursorCurrentTile
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hl]
+ cp $1f
+ jr nz, .not_currently_selected
+ ld a, [wCursorOffCharacter]
+ ld [hl], a
+ push hl
+ push bc
+ ld bc, PKMN_NAME_LENGTH
+ add hl, bc
+ ld [hl], a
+ pop bc
+ pop hl
+
+.not_currently_selected
+ ld a, [w2DMenuCursorInitY]
+ ld b, a
+ ld a, [w2DMenuCursorInitX]
+ ld c, a
+ call Coord2Tile
+ ld a, [w2DMenuCursorOffsets]
+ swap a
+ and $f
+ ld c, a
+ ld a, [wMenuCursorY]
+ ld b, a
+ xor a
+ dec b
+ jr z, .skip
+.loop3
+ add c
+ dec b
+ jr nz, .loop3
+
+.skip
+ ld c, SCREEN_WIDTH
+ call AddNTimes
+ ld a, [w2DMenuCursorOffsets]
+ and $f
+ ld c, a
+ ld a, [wMenuCursorX]
+ ld b, a
+ xor a
+ dec b
+ jr z, .skip2
+.loop4
+ add c
+ dec b
+ jr nz, .loop4
+
+.skip2
+ ld c, a
+ add hl, bc
+ ld a, [hl]
+ cp $1f
+ jr z, .cursor_already_there
+ ld [wCursorOffCharacter], a
+ ld [hl], $1f
+ push hl
+ push bc
+ ld bc, PKMN_NAME_LENGTH
+ add hl, bc
+ ld [hl], $1f
+ pop bc
+ pop hl
+.cursor_already_there
+ ld a, l
+ ld [wCursorCurrentTile], a
+ ld a, h
+ ld [wCursorCurrentTile + 1], a
+ ret
+; 16d7e7
+
+.TryAnims: ; 16d7e7
+ ld a, [w2DMenuFlags1]
+ bit 6, a
+ jr z, .skip_anims
+ callba PlaySpriteAnimationsAndDelayFrame
+.skip_anims
+ call JoyTextDelay
+ call .GetJoypad
+ and a
+ ret z
+ scf
+ ret
+; 16d7fe
diff --git a/engine/mail.asm b/engine/mail.asm
index 82d27d4be..4c0af5f9b 100755
--- a/engine/mail.asm
+++ b/engine/mail.asm
@@ -177,7 +177,7 @@ CheckPokeItem:: ; 44654
jr c, .close_sram_return
xor a
ld [wPokemonWithdrawDepositParameter], a
- callba Functione039
+ callba RemoveMonFromPartyOrBox
ld a, $1
.close_sram_return
@@ -399,13 +399,13 @@ MailboxPC: ; 0x44806
ld [wMenuCursorBuffer], a
ld a, [OBPals + 8 * 6]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [OBPals + 8 * 6], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wCurMessageIndex], a
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp $2
jr z, .exit
call Function4484a
@@ -419,10 +419,10 @@ MailboxPC: ; 0x44806
Function4484a: ; 0x4484a
ld hl, MenuData44964
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
jr c, .exit
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld hl, .JumpTable
rst JumpTable
@@ -443,7 +443,7 @@ Function4484a: ; 0x4484a
dec a
ld b, a
call ReadMailMessage
- jp ReturnToCallingMenu
+ jp CloseSubmenu
; 0x44877
.PutInPack ; 0x44877
@@ -539,7 +539,7 @@ Function4484a: ; 0x4484a
call PrintText
.exit2
- jp ReturnToCallingMenu
+ jp CloseSubmenu
; 0x4493c
.HoldingMailText ; 0x4493c
diff --git a/engine/main_menu.asm b/engine/main_menu.asm
index efab46cda..2012bf5ff 100755
--- a/engine/main_menu.asm
+++ b/engine/main_menu.asm
@@ -11,17 +11,17 @@ MainMenu: ; 49cdc
call SetPalettes
ld hl, GameTimerPause
res 0, [hl]
- call Function49da4
- ld [wcf76], a
- call Function49e09
- ld hl, MenuDataHeader_0x49d14
+ call MainMenu_GetWhichMenu
+ ld [wWhichIndexSet], a
+ call MainMenu_PrintCurrentTimeAndDay
+ ld hl, .MenuDataHeader
call LoadMenuDataHeader
- call Function49de4
+ call MainMenuJoypadLoop
call WriteBackup
jr c, .quit
call ClearTileMap
ld a, [MenuSelection]
- ld hl, Jumptable_49d60
+ ld hl, .Jumptable
rst JumpTable
jr MainMenu
@@ -29,23 +29,23 @@ MainMenu: ; 49cdc
ret
; 49d14
-MenuDataHeader_0x49d14: ; 49d14
+.MenuDataHeader: ; 49d14
db $40 ; flags
db 00, 00 ; start coords
db 07, 16 ; end coords
- dw MenuData2_0x49d1c
+ dw .MenuData2
db 1 ; default option
; 49d1c
-MenuData2_0x49d1c: ; 49d1c
+.MenuData2: ; 49d1c
db $80 ; flags
db 0 ; items
dw MainMenuItems
- dw Function1f79
- dw MainMenuText
+ dw PlaceMenuStrings
+ dw .Strings
; 49d20
-MainMenuText: ; 49d24
+.Strings: ; 49d24
db "CONTINUE@"
db "NEW GAME@"
db "OPTION@"
@@ -53,13 +53,14 @@ MainMenuText: ; 49d24
db "MOBILE@"
db "MOBILE STUDIUM@"
-Jumptable_49d60: ; 0x49d60
- dw MainMenu_Continue
- dw MainMenu_NewGame
- dw MainMenu_Options
- dw MainMenu_MysteryGift
- dw MainMenu_Mobile
- dw MainMenu_MobileStudium
+.Jumptable: ; 0x49d60
+ jumptable_start
+ jumptable MainMenu_Continue
+ jumptable MainMenu_NewGame
+ jumptable MainMenu_Options
+ jumptable MainMenu_MysteryGift
+ jumptable MainMenu_Mobile
+ jumptable MainMenu_MobileStudium
; 0x49d6c
CONTINUE EQU 0
@@ -75,14 +76,14 @@ NewGameMenu: ; 0x49d6c
db 2
db NEW_GAME
db OPTION
- db $ff
+ db -1
ContinueMenu: ; 0x49d70
db 3
db CONTINUE
db NEW_GAME
db OPTION
- db $ff
+ db -1
MobileMysteryMenu: ; 0x49d75
db 5
@@ -91,7 +92,7 @@ MobileMysteryMenu: ; 0x49d75
db OPTION
db MYSTERY_GIFT
db MOBILE
- db $ff
+ db -1
MobileMenu: ; 0x49d7c
db 4
@@ -99,7 +100,7 @@ MobileMenu: ; 0x49d7c
db NEW_GAME
db OPTION
db MOBILE
- db $ff
+ db -1
MobileStudiumMenu: ; 0x49d82
db 5
@@ -108,7 +109,7 @@ MobileStudiumMenu: ; 0x49d82
db OPTION
db MOBILE
db MOBILE_STUDIUM
- db $ff
+ db -1
MysteryMobileStudiumMenu: ; 0x49d89
db 6
@@ -118,7 +119,7 @@ MysteryMobileStudiumMenu: ; 0x49d89
db MYSTERY_GIFT
db MOBILE
db MOBILE_STUDIUM
- db $ff
+ db -1
MysteryMenu: ; 0x49d91
db 4
@@ -126,7 +127,7 @@ MysteryMenu: ; 0x49d91
db NEW_GAME
db OPTION
db MYSTERY_GIFT
- db $ff
+ db -1
MysteryStudiumMenu: ; 0x49d97
db 5
@@ -135,7 +136,7 @@ MysteryStudiumMenu: ; 0x49d97
db OPTION
db MYSTERY_GIFT
db MOBILE_STUDIUM
- db $ff
+ db -1
StudiumMenu: ; 0x49d9e
db 4
@@ -143,17 +144,17 @@ StudiumMenu: ; 0x49d9e
db NEW_GAME
db OPTION
db MOBILE_STUDIUM
- db $ff
+ db -1
-Function49da4: ; 49da4
+MainMenu_GetWhichMenu: ; 49da4
nop
nop
nop
ld a, [wSaveFileExists]
and a
jr nz, .next
- ld a, $0
+ ld a, $0 ; New Game
ret
.next
@@ -164,12 +165,12 @@ Function49da4: ; 49da4
ld a, BANK(sNumDailyMysteryGiftPartnerIDs)
call GetSRAMBank
ld a, [sNumDailyMysteryGiftPartnerIDs]
- cp $ff
+ cp -1
call CloseSRAM
- jr nz, .done
+ jr nz, .mystery_gift
ld a, [StatusFlags]
bit 7, a
- ld a, $1
+ ld a, $1 ; Continue
jr z, .ok
jr .ok
@@ -177,10 +178,10 @@ Function49da4: ; 49da4
jr .ok2
.ok2
- ld a, $1
+ ld a, $1 ; Continue
ret
-.done
+.mystery_gift
ld a, [StatusFlags]
bit 7, a
jr z, .ok3
@@ -190,47 +191,47 @@ Function49da4: ; 49da4
jr .ok4
.ok4
- ld a, $6
+ ld a, $6 ; Mystery Gift
ret
; 49de4
-Function49de4: ; 49de4
+MainMenuJoypadLoop: ; 49de4
call SetUpMenu
-.asm_49de7
- call Function49e09
- ld a, [wcfa5]
+.loop
+ call MainMenu_PrintCurrentTimeAndDay
+ ld a, [w2DMenuFlags1]
set 5, a
- ld [wcfa5], a
+ ld [w2DMenuFlags1], a
call Function1f1a
- ld a, [wcf73]
- cp $2
- jr z, .asm_49e07
- cp $1
- jr z, .asm_49e02
- jr .asm_49de7
-
-.asm_49e02
+ ld a, [wMenuJoypad]
+ cp B_BUTTON
+ jr z, .b_button
+ cp A_BUTTON
+ jr z, .a_button
+ jr .loop
+
+.a_button
call PlayClickSFX
and a
ret
-.asm_49e07
+.b_button
scf
ret
; 49e09
-Function49e09: ; 49e09
+MainMenu_PrintCurrentTimeAndDay: ; 49e09
ld a, [wSaveFileExists]
and a
ret z
xor a
ld [hBGMapMode], a
- call Function49e27
+ call .PlaceBox
ld hl, Options
ld a, [hl]
push af
- set 4, [hl]
- call Function49e3d
+ set NO_TEXT_SCROLL, [hl]
+ call .PlaceTime
pop af
ld [Options], a
ld a, $1
@@ -239,34 +240,34 @@ Function49e09: ; 49e09
; 49e27
-Function49e27: ; 49e27
+.PlaceBox: ; 49e27
call CheckRTCStatus
and $80
- jr nz, .asm_49e39
+ jr nz, .TimeFail
hlcoord 0, 14
- ld b, $2
- ld c, $12
+ ld b, 2
+ ld c, 18
call TextBox
ret
-.asm_49e39
+.TimeFail
call SpeechTextBox
ret
; 49e3d
-Function49e3d: ; 49e3d
+.PlaceTime: ; 49e3d
ld a, [wSaveFileExists]
and a
ret z
call CheckRTCStatus
and $80
- jp nz, Function49e75
+ jp nz, .PrintTimeNotSet
call UpdateTime
call GetWeekday
ld b, a
decoord 1, 15
- call Function49e91
+ call .PlaceCurrentDay
decoord 4, 16
ld a, [hHours]
ld c, a
@@ -277,13 +278,13 @@ Function49e3d: ; 49e3d
lb bc, PRINTNUM_LEADINGZEROS | 1, 2
call PrintNum
ret
-; 49e70
-; 49e70
+.min
+; unreferenced
db "min.@"
; 49e75
-Function49e75: ; 49e75
+.PrintTimeNotSet: ; 49e75
hlcoord 1, 14
ld de, .TimeNotSet
call PlaceString
@@ -294,12 +295,13 @@ Function49e75: ; 49e75
db "TIME NOT SET@"
; 49e8c
-UnknownText_0x49e8c: ; 49e8c
+.UnusedText ; 49e8c
+ ; Clock time unknown
text_jump UnknownText_0x1c5182
db "@"
; 49e91
-Function49e91: ; 49e91
+.PlaceCurrentDay: ; 49e91
push de
ld hl, .Days
ld a, b
@@ -333,7 +335,7 @@ Function49ed0: ; 49ed0
call ClearTileMap
call LoadFontsExtra
call LoadStandardFont
- call ResetTextRelatedRAM
+ call ClearWindowData
ret
; 49ee0
@@ -357,886 +359,3 @@ MainMenu_MysteryGift: ; 49ef5
callba MysteryGift
ret
; 49efc
-
-MainMenu_Mobile: ; 49efc
- call ClearBGPalettes
- ld a, MUSIC_MOBILE_ADAPTER_MENU
- ld [wMapMusic], a
- ld de, MUSIC_MOBILE_ADAPTER_MENU
- call Function4a6c5
-Function49f0a: ; 49f0a
- call ClearBGPalettes
- call Function4a3a7
- call Function4a492
- call ClearBGPalettes
-Function49f16: ; 49f16
- call Function4a071
- ld c, 12
- call DelayFrames
- hlcoord 4, 0
- ld b, $a
- ld c, $a
- call Function48cdc
- hlcoord 6, 2
- ld de, MobileString1
- call PlaceString
- hlcoord 0, 12
- ld b, $4
- ld c, $12
- call TextBox
- xor a
- ld de, String_0x49fe9
- hlcoord 1, 14
- call PlaceString
- call Function3200
- call SetPalettes
- call Function1bc9
- ld hl, MenuSelection2
- ld b, [hl]
- push bc
- jr .asm_49f5d
-
-.asm_49f55
- call Function1bd3
- ld hl, MenuSelection2
- ld b, [hl]
- push bc
-
-.asm_49f5d
- bit 0, a
- jr nz, .asm_49f67
- bit 1, a
- jr nz, .asm_49f84
- jr .asm_49f97
-
-.asm_49f67
- ld hl, MenuSelection2
- ld a, [hl]
- cp $1
- jp z, Function4a098
- cp $2
- jp z, Function4a0b9
- cp $3
- jp z, Function4a0c2
- cp $4
- jp z, Function4a100
- ld a, $1
- call Function1ff8
-
-.asm_49f84
- pop bc
- call ClearBGPalettes
- call ClearTileMap
- ld a, MUSIC_MAIN_MENU
- ld [wMapMusic], a
- ld de, MUSIC_MAIN_MENU
- call Function4a6c5
- ret
-
-.asm_49f97
- ld hl, MenuSelection2
- ld a, [hl]
- dec a
- ld hl, MobileStrings2
- call GetNthString
- ld d, h
- ld e, l
- hlcoord 1, 13
- ld b, $4
- ld c, $12
- call ClearBox
- hlcoord 1, 14
- call PlaceString
- jp .asm_49fb7
-
-.asm_49fb7
- call Function4a071
- pop bc
- ld hl, MenuSelection2
- ld [hl], b
- ld b, $a
- ld c, $1
- hlcoord 5, 1
- call ClearBox
- jp .asm_49f55
-; 49fcc
-
-
-MobileString1: ; 49fcc
- db "めいしフ,ルダー"
- next "あいさつ"
- next "プロフィール"
- next "せ", $1e, "い"
- next "もどる"
- db "@"
-; 49fe9
-
-
-MobileStrings2:
-
-String_0x49fe9: ; 49fe9
- db "めいし¯つくったり"
- next "ほぞんしておける フ,ルダーです@"
-; 4a004
-
-String_0x4a004: ; 4a004
- db "モバイルたいせんや じぶんのめいしで"
- next "つかう あいさつ¯つくります@"
-; 4a026
-
-String_0x4a026: ; 4a026
- db "あなた%じゅうしょや ねんれいの"
- next "せ", $1e, "い¯かえられます@"
-; 4a042
-
-String_0x4a042: ; 4a042
- db "モバイルセンター", $1d, "せつぞくするとき"
- next "ひつような こと¯きめます@"
-; 4a062
-
-String_0x4a062: ; 4a062
- db "まえ%がめん ", $1d, "もどります"
- next "@"
-; 4a071
-
-Function4a071: ; 4a071 (12:6071)
- ld hl, wcfa1
- ld a, $2
- ld [hli], a
- ld a, $5
- ld [hli], a
- ld a, $5
- ld [hli], a
- ld a, $1
- ld [hli], a
- ld [hl], $0
- set 5, [hl]
- inc hl
- xor a
- ld [hli], a
- ld a, $20
- ld [hli], a
- ld a, $1
- add $40
- add $80
- add $2
- ld [hli], a
- ld a, $1
-rept 2
- ld [hli], a
-endr
- ret
-
-Function4a098: ; 4a098 (12:6098)
- ld a, $2
- call Function1ff8
- call Function1bee
- call WaitBGMap
- call LoadStandardMenuDataHeader
- callba Function89de0
- call Call_ExitMenu
- call Function49351
- call Function4a485
- pop bc
- jp Function49f16
-
-Function4a0b9: ; 4a0b9 (12:60b9)
- ld a, $2
- call Function1ff8
- pop bc
- jp Function4a4c4
-
-Function4a0c2: ; 4a0c2 (12:60c2)
- ld a, $2
- call Function1ff8
- ld a, BANK(sPlayerData)
- call GetSRAMBank
- ld hl, sPlayerData + PlayerName - wPlayerData
- ld de, PlayerName
- ld bc, $6
- call CopyBytes
- call CloseSRAM
- callba Function150b9
- ld c, 2
- call DelayFrames
- ld c, $1
- call InitMobileProfile
- push af
- call ClearBGPalettes
- pop af
- and a
- jr nz, .asm_4a0f9
- callba _SaveData
-.asm_4a0f9
- ld c, 5
- call DelayFrames
- jr asm_4a111
-
-Function4a100: ; 4a100 (12:6100)
- ld a, $2
- call Function1ff8
- call ClearBGPalettes
- call Function4a13b
- call ClearBGPalettes
- call ClearTileMap
-
-asm_4a111: ; 4a111 (12:6111)
- pop bc
- call LoadFontsExtra
- jp Function49f0a
-
-Function4a118: ; 4a118 (12:6118)
- ld hl, wcfa1
- ld a, $1
- ld [hli], a
- ld a, $d
- ld [hli], a
- ld a, $3
- ld [hli], a
- ld a, $1
- ld [hli], a
- ld [hl], $0
- set 5, [hl]
- inc hl
- xor a
- ld [hli], a
- ld a, $20
- ld [hli], a
- ld a, $1
- add $2
- ld [hli], a
- ld a, $1
-rept 2
- ld [hli], a
-endr
- ret
-
-Function4a13b: ; 4a13b (12:613b)
- call Function4a3a7
- call Function4a492
- call Function4a373
- ld c, 10
- call DelayFrames
-
-Function4a149: ; 4a149 (12:6149)
- hlcoord 1, 2
- ld b, $6
- ld c, $10
- call Function48cdc
- hlcoord 3, 4
- ld de, String_4a1ef
- call PlaceString
- hlcoord 0, 12
- ld b, $4
- ld c, $12
- call TextBox
- ld a, [MenuSelection2]
- dec a
- ld hl, Strings_4a23d
- call GetNthString
- ld d, h
- ld e, l
- hlcoord 1, 13
- ld b, $4
- ld c, $12
- call ClearBox
- hlcoord 1, 14
- call PlaceString
- callba Function104148
- call SetPalettes
- call Function1bc9
- ld hl, MenuSelection2
- ld b, [hl]
- push bc
- jr asm_4a19d
-
-Function4a195: ; 4a195 (12:6195)
- call Function1bd3
- ld hl, MenuSelection2
- ld b, [hl]
- push bc
-
-asm_4a19d: ; 4a19d (12:619d)
- bit 0, a
- jr nz, .asm_4a1a7
- bit 1, a
- jr nz, .asm_4a1ba
- jr .asm_4a1bc
-.asm_4a1a7
- ld hl, MenuSelection2
- ld a, [hl]
- cp $1
- jp z, Function4a20e
- cp $2
- jp z, Function4a221
- ld a, $1
- call Function1ff8
-.asm_4a1ba
- pop bc
- ret
-.asm_4a1bc
- ld hl, MenuSelection2
- ld a, [hl]
- dec a
- ld hl, Strings_4a23d
- call GetNthString
- ld d, h
- ld e, l
- hlcoord 1, 13
- ld b, $4
- ld c, $12
- call ClearBox
- hlcoord 1, 14
- call PlaceString
- jr .asm_4a1db
-.asm_4a1db
- call Function4a373
- pop bc
- ld hl, MenuSelection2
- ld [hl], b
- lb bc, 6, 1
- hlcoord 2, 3
- call ClearBox
- jp Function4a195
-; 4a1ef (12:61ef)
-
-String_4a1ef: ; 4a1ef
- db "モバイルセンター¯えらぶ"
- next "ログインパスワード¯いれる"
- next "もどる@"
-; 4a20e
-
-Function4a20e: ; 4a20e (12:620e)
- ld a, $1
- call Function1ff8
- callba Function1719c8
- call ClearBGPalettes
- call DelayFrame
- jr Function4a239
-
-Function4a221: ; 4a221 (12:6221)
- ld a, $1
- call Function1ff8
- call Function4a28a
- jr c, Function4a239
- call Function4a373
- ld a, $2
- ld [MenuSelection2], a
- jr .asm_4a235
-.asm_4a235
- pop bc
- jp Function4a149
-
-Function4a239: ; 4a239 (12:6239)
- pop bc
- jp Function4a13b
-; 4a23d (12:623d)
-
-Strings_4a23d: ; 4a23d
- db "いつも せつぞく¯する"
- next "モバイルセンター¯えらびます@"
-
- db "モバイルセンター", $1d, "せつぞくするとき"
- next "つかうパスワード¯ほぞんできます@"
-
- db "まえ%がめん ", $1d, "もどります@"
-
- db "@"
-; 4a28a
-
-Function4a28a: ; 4a28a (12:628a)
- hlcoord 2, 3
- lb bc, 6, 1
- ld a, " "
- call Function4a6d8
- call Function1bee
- call WaitBGMap
- call LoadStandardMenuDataHeader
- ld a, $5
- call GetSRAMBank
- ld a, [$aa4b]
- call CloseSRAM
- and a
- jr z, .asm_4a2df
- hlcoord 12, 0
- ld b, $5
- ld c, $6
- call Function48cdc
- hlcoord 14, 1
- ld de, String_4a34b
- call PlaceString
- callba Function104148
- call Function4a118
- call Function1bd3
- push af
- call PlayClickSFX
- pop af
- bit 1, a
- jr nz, .asm_4a33b
- ld a, [MenuSelection2]
- cp $2
- jr z, .asm_4a2f0
- cp $3
- jr z, .asm_4a33b
-.asm_4a2df
- callba Function11765d
- call ClearBGPalettes
- call Call_ExitMenu
- call LoadFontsExtra
- scf
- ret
-.asm_4a2f0
- call Function1bee
- ld hl, UnknownText_0x4a358
- call PrintText
- hlcoord 14, 7
- ld b, $3
- ld c, $4
- call TextBox
- callba Function104148
- ld hl, MenuDataHeader_0x4a362
- call LoadMenuDataHeader
- call InterpretMenu2
- bit 1, a
- jr nz, .asm_4a338
- ld a, [MenuSelection2]
- cp $2
- jr z, .asm_4a338
- ld a, $5
- call GetSRAMBank
- ld hl, $aa4b
- xor a
- ld bc, $11
- call ByteFill
- call CloseSRAM
- ld hl, UnknownText_0x4a35d
- call PrintText
- call JoyWaitAorB
-.asm_4a338
- call ExitMenu
-.asm_4a33b
- call Call_ExitMenu
- callba Function104148
- xor a
- ret
-; 4a346 (12:6346)
-
-MenuDataHeader_0x4a346: ; 0x4a346
- db $40 ; flags
- db 00, 12 ; start coords
- db 06, 19 ; end coords
-
-String_4a34b: ; 4a34b
- db "いれなおす"
- next "けす"
- next "もどる@"
-; 4a358
-
-UnknownText_0x4a358: ; 0x4a358
- ; Delete the saved LOG-IN PASSWORD?
- text_jump UnknownText_0x1c5196
- db "@"
-; 0x4a35d
-
-UnknownText_0x4a35d: ; 0x4a35d
- ; Deleted the LOG-IN PASSWORD.
- text_jump UnknownText_0x1c51b9
- db "@"
-; 0x4a362
-
-MenuDataHeader_0x4a362: ; 0x4a362
- db $40 ; flags
- db 07, 14 ; start coords
- db 11, 19 ; end coords
- dw MenuData2_0x4a36a
- db 2 ; default option
-; 0x4a36a
-
-MenuData2_0x4a36a: ; 0x4a36a
- db $e0 ; flags
- db 2 ; items
- db "はい@"
- db "いいえ@"
-; 0x4a373
-
-Function4a373: ; 4a373 (12:6373)
- ld hl, wcfa1
- ld a, $4
- ld [hli], a
- ld a, $2
- ld [hli], a
- ld a, $3
- ld [hli], a
- ld a, $1
- ld [hli], a
- ld [hl], $0
- set 5, [hl]
- inc hl
- xor a
- ld [hli], a
- ld a, $20
- ld [hli], a
- ld a, $1
- add $40
- add $80
- add $2
- ld [hli], a
- ld a, $1
-rept 2
- ld [hli], a
-endr
- ret
-; 4a39a (12:639a)
-
-Function4a39a: ; 4a39a
- call Function4a485
- call Function4a492
- call Function4a3aa
- call SetPalettes
- ret
-; 4a3a7
-
-Function4a3a7: ; 4a3a7 (12:63a7)
- call Function4a485
-Function4a3aa: ; 4a3aa
- hlcoord 0, 0
- lb bc, 3, 1
- xor a
- call Function4a6d8
- lb bc, 1, 1
- ld a, $1
- call Function4a6d8
- lb bc, 1, 1
- xor a
- call Function4a6d8
- lb bc, 1, 1
- ld a, $1
- call Function4a6d8
- lb bc, 4, 1
- ld a, $2
- call Function4a6d8
- lb bc, 1, 1
- ld a, $3
- call Function4a6d8
- lb bc, 1, 1
- ld a, " "
- call Function4a6d8
- hlcoord 1, 0
- ld a, $1
- lb bc, 3, 18
- call Function4a6d8
- lb bc, 1, 18
- ld a, $0
- call Function4a6d8
- lb bc, 1, 18
- ld a, $1
- call Function4a6d8
- lb bc, 1, 18
- ld a, $2
- call Function4a6d8
- lb bc, 11, 18
- ld a, " "
- call Function4a6d8
- hlcoord 19, 0
- lb bc, 3, 1
- ld a, $0
- call Function4a6d8
- lb bc, 1, 1
- ld a, $1
- call Function4a6d8
- lb bc, 1, 1
- xor a
- call Function4a6d8
- lb bc, 1, 1
- ld a, $1
- call Function4a6d8
- lb bc, 4, 1
- ld a, $2
- call Function4a6d8
- lb bc, 1, 1
- ld a, $3
- call Function4a6d8
- lb bc, 1, 1
- ld a, " "
- call Function4a6d8
- ret
-; 4a449 (12:6449)
-
-Function4a449: ; 4a449
- ld bc, 3 * SCREEN_WIDTH
- ld a, $0
- hlcoord 0, 0
- call ByteFill
- ld bc, 2 * SCREEN_WIDTH
- ld a, $1
- call ByteFill
- ld bc, 2 * SCREEN_WIDTH
- ld a, $0
- call ByteFill
- ld bc, 2 * SCREEN_WIDTH
- ld a, $1
- call ByteFill
- ld bc, SCREEN_WIDTH
- ld a, $2
- call ByteFill
- ld bc, SCREEN_WIDTH
- ld a, $3
- call ByteFill
- ld bc, SCREEN_WIDTH
- ld a, " "
- call ByteFill
- ret
-; 4a485
-
-Function4a485: ; 4a485 (12:6485)
- ld de, GFX_49c0c
- ld hl, VTiles2 tile $00
- lb bc, BANK(GFX_49c0c), $d
- call Get2bpp
- ret
-
-Function4a492: ; 4a492 (12:6492)
- call Function4936e
- ret
-
-
-MainMenu_MobileStudium: ; 4a496
- ld a, [StartDay]
- ld b, a
- ld a, [StartHour]
- ld c, a
- ld a, [StartMinute]
- ld d, a
- ld a, [StartSecond]
- ld e, a
- push bc
- push de
- callba MobileStudium
- call ClearBGPalettes
- pop de
- pop bc
- ld a, b
- ld [StartDay], a
- ld a, c
- ld [StartHour], a
- ld a, d
- ld [StartMinute], a
- ld a, e
- ld [StartSecond], a
- ret
-; 4a4c4
-
-
-Function4a4c4: ; 4a4c4 (12:64c4)
- call ClearBGPalettes
- call Function4a3a7
- call Function4a492
- call Function4a680
- call ClearBGPalettes
- ld c, 20
- call DelayFrames
- hlcoord 2, 0
- ld b, $a
- ld c, $e
- call Function48cdc
- hlcoord 4, 2
- ld de, String_4a5c5
- call PlaceString
- hlcoord 4, 4
- ld de, String_4a5cd
- call PlaceString
- hlcoord 4, 6
- ld de, String_4a5da
- call PlaceString
- hlcoord 4, 8
- ld de, String_4a5e6
- call PlaceString
- hlcoord 4, 10
- ld de, String_4a5f2
- call PlaceString
- hlcoord 0, 12
- ld b, $4
- ld c, $12
- call TextBox
- xor a
- ld hl, Strings_4a5f6
- ld d, h
- ld e, l
- hlcoord 1, 14
- call PlaceString
- ld a, $1
- ld hl, Strings_4a5f6
- call GetNthString
- ld d, h
- ld e, l
- hlcoord 1, 16
- call PlaceString
- call Function3200
- call SetPalettes
- call Function1bc9
- ld hl, MenuSelection2
- ld b, [hl]
- push bc
- jr asm_4a54d
-
-Function4a545: ; 4a545 (12:6545)
- call Function1bd3
- ld hl, MenuSelection2
- ld b, [hl]
- push bc
-
-asm_4a54d: ; 4a54d (12:654d)
- bit 0, a
- jr nz, .asm_4a557
- bit 1, a
- jr nz, .asm_4a574
- jr .asm_4a57e
-.asm_4a557
- ld hl, MenuSelection2
- ld a, [hl]
- cp $1
- jp z, Function4a6ab
- cp $2
- jp z, Function4a6ab
- cp $3
- jp z, Function4a6ab
- cp $4
- jp z, Function4a6ab
- ld a, $1
- call Function1ff8
-.asm_4a574
- pop bc
- call ClearBGPalettes
- call ClearTileMap
- jp Function49f0a
-.asm_4a57e
- ld hl, MenuSelection2
- ld a, [hl]
- dec a
- add a
- push af
- ld hl, Strings_4a5f6
- call GetNthString
- ld d, h
- ld e, l
- hlcoord 1, 13
- ld b, $4
- ld c, $12
- call ClearBox
- hlcoord 1, 14
- call PlaceString
- pop af
- inc a
- ld hl, Strings_4a5f6
- call GetNthString
- ld d, h
- ld e, l
- hlcoord 1, 16
- call PlaceString
- jp Function4a5b0
-
-Function4a5b0: ; 4a5b0 (12:65b0)
- call Function4a680
- pop bc
- ld hl, MenuSelection2
- ld [hl], b
- ld b, $a
- ld c, $1
- hlcoord 3, 1
- call ClearBox
- jp Function4a545
-; 4a5c5 (12:65c5)
-
-String_4a5c5: ; 4a5c5
- db "じこしょうかい@"
-String_4a5cd: ; 4a5cd
- db "たいせん ", $4a, "はじまるとき@"
-String_4a5da: ; 4a5da
- db "たいせん ", $1d, "かったとき@"
-String_4a5e6: ; 4a5e6
- db "たいせん ", $1d, "まけたとき@"
-String_4a5f2: ; 4a5f2
- db "もどる@"
-; 4a5f6
-
-Strings_4a5f6: ; 4a5f6
- db "めいし や ニュース ", $1d, "のせる@"
- db "あなた%あいさつです@"
- db "モバイル たいせん", $4a, "はじまるとき@"
- db "あいて", $1d, "みえる あいさつです@"
- db "モバイル たいせんで かったとき@"
- db "あいて", $1d, "みえる あいさつです@"
- db "モバイル たいせんで まけたとき@"
- db "あいて", $1d, "みえる あいさつです@"
- db "まえ%がめん ", $1d, "もどります@"
- db "@"
-; 4a680
-
-Function4a680: ; 4a680 (12:6680)
- ld hl, wcfa1
- ld a, $2
- ld [hli], a
- ld a, $3
- ld [hli], a
- ld a, $5
- ld [hli], a
- ld a, $1
- ld [hli], a
- ld [hl], $0
- set 5, [hl]
- inc hl
- xor a
- ld [hli], a
- ld a, $20
- ld [hli], a
- ld a, $1
- add $40
- add $80
- add $2
- ld [hli], a
- ld a, $1
-rept 2
- ld [hli], a
-endr
- xor a
-rept 3
- ld [hli], a
-endr
- ret
-
-Function4a6ab: ; 4a6ab (12:66ab)
- ld a, $2
- call Function1ff8
- call ClearBGPalettes
- ld b, SCGB_08
- call GetSGBLayout
- callba Function11c1ab
- pop bc
- call LoadFontsExtra
- jp Function4a4c4
-
-Function4a6c5: ; 4a6c5 (12:66c5)
- ld a, $5
- ld [MusicFade], a
- ld a, e
- ld [MusicFadeIDLo], a
- ld a, d
- ld [MusicFadeIDHi], a
- ld c, 22
- call DelayFrames
- ret
-
-Function4a6d8: ; 4a6d8 (12:66d8)
- push bc
- push hl
-.asm_4a6da
- ld [hli], a
- dec c
- jr nz, .asm_4a6da
- pop hl
- ld bc, $14
- add hl, bc
- pop bc
- dec b
- jr nz, Function4a6d8
- ret
diff --git a/engine/map_objects.asm b/engine/map_objects.asm
index 13e4f73bf..3c509642c 100644
--- a/engine/map_objects.asm
+++ b/engine/map_objects.asm
@@ -49,7 +49,7 @@ sprite_movement_data: macro
; 4357
-Function4357:: ; 4357
+DeleteMapObject:: ; 4357
push bc
ld hl, OBJECT_MAP_OBJECT_INDEX
add hl, bc
@@ -76,14 +76,14 @@ Function4357:: ; 4357
; 437b
Function437b: ; 437b
- call Function4386
+ call .CheckObjectStillVisible
ret c
call Function43f3
call Function4427
ret
; 4386
-Function4386: ; 4386
+.CheckObjectStillVisible: ; 4386
ld hl, OBJECT_FLAGS2
add hl, bc
res 6, [hl]
@@ -143,7 +143,7 @@ Function4386: ; 4386
add hl, bc
bit 1, [hl]
jr nz, .yes2
- call Function4357
+ call DeleteMapObject
scf
ret
@@ -167,26 +167,26 @@ Function43f3: ; 43f3
bit 5, [hl]
jr nz, .bit5
- cp STEP_TYPE_STANDING
+ cp STEP_TYPE_SLEEP
jr z, .one
jr .ok
.zero
- call Function47bc
+ call ObjectMovementReset
ld hl, OBJECT_FLAGS2
add hl, bc
bit 5, [hl]
jr nz, .bit5
.one
- call Function47dd
+ call MapObjectMovementPattern
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld a, [hl]
and a
ret z
- cp STEP_TYPE_STANDING
+ cp STEP_TYPE_SLEEP
ret z
.ok
@@ -553,7 +553,7 @@ Function45ed: ; 45ed
ret
; 4600
-Function4600: ; 4600
+CopyNextCoordsTileToStandingCoordsTile: ; 4600
ld hl, OBJECT_NEXT_MAP_X
add hl, bc
@@ -604,7 +604,7 @@ Function462a: ; 462a
ret
; 463f
-Function463f: ; 463f
+UpdateTallGrassFlags: ; 463f
ld hl, OBJECT_FLAGS2
add hl, bc
bit 3, [hl] ; is current tile grass?
@@ -651,7 +651,7 @@ UselessAndA: ; 4679
ret
; 467b
-Function467b: ; 467b
+EndSpriteMovement: ; 467b
xor a
ld hl, OBJECT_STEP_FRAME
add hl, bc
@@ -668,7 +668,7 @@ endr
ret
; 4690
-Function4690: ; 4690
+InitStep: ; 4690
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld [hl], a
@@ -676,7 +676,6 @@ Function4690: ; 4690
add hl, bc
bit FIXED_FACING, [hl]
jr nz, GetNextTile
-
rept 2
add a
endr
@@ -684,7 +683,6 @@ endr
ld hl, OBJECT_FACING
add hl, bc
ld [hl], a
-
GetNextTile: ; 46a6
call GetStepVector
@@ -794,7 +792,7 @@ GetStepVectorSign: ; 4730
ret ; 129 - 255
; 4738
-Function4738: ; 4738
+UpdatePlayerStep: ; 4738
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld a, [hl]
@@ -913,7 +911,7 @@ SetValueObjectStructField28: ; 47b6
ret
; 47bc
-Function47bc: ; 47bc
+ObjectMovementReset: ; 47bc
ld hl, OBJECT_NEXT_MAP_X
add hl, bc
ld d, [hl]
@@ -926,15 +924,15 @@ Function47bc: ; 47bc
ld hl, OBJECT_NEXT_TILE
add hl, bc
ld [hl], a
- call Function4600
- call Function467b
+ call CopyNextCoordsTileToStandingCoordsTile
+ call EndSpriteMovement
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 47dd
-Function47dd: ; 47dd
+MapObjectMovementPattern: ; 47dd
call ClearObjectStructField28
call GetSpriteMovementFunction
ld a, [hl]
@@ -944,34 +942,35 @@ Function47dd: ; 47dd
; 47e9
.Pointers ; 47e9
- dw .Null_00 ; 00
- dw .RandomWalkY ; 01
- dw .RandomWalkX ; 02
- dw .RandomWalkXY ; 03
- dw .RandomSpin1 ; 04
- dw .RandomSpin2 ; 05
- dw .Standing ; 06
- dw .ObeyDPad ; 07
- dw .Movement08 ; 08
- dw .Movement09 ; 09
- dw .Movement0a ; 0a
- dw .Movement0b ; 0b
- dw .Movement0c ; 0c
- dw .Movement0d ; 0d
- dw .Movement0e ; 0e
- dw .Follow ; 0f
- dw .Script ; 10
- dw .Strength ; 11
- dw .FollowNotExact ; 12
- dw .MovementShadow ; 13
- dw .MovementEmote ; 14
- dw .MovementBigStanding ; 15
- dw .MovementBouncing ; 16
- dw .MovementScreenShake ; 17
- dw .MovementSpinClockwise ; 18
- dw .MovementSpinCounterclockwise ; 19
- dw .MovementBoulderDust ; 1a
- dw .MovementShakingGrass ; 1b
+ jumptable_start
+ jumptable .Null_00 ; 00
+ jumptable .RandomWalkY ; 01
+ jumptable .RandomWalkX ; 02
+ jumptable .RandomWalkXY ; 03
+ jumptable .RandomSpin1 ; 04
+ jumptable .RandomSpin2 ; 05
+ jumptable .Standing ; 06
+ jumptable .ObeyDPad ; 07
+ jumptable .Movement08 ; 08
+ jumptable .Movement09 ; 09
+ jumptable .Movement0a ; 0a
+ jumptable .Movement0b ; 0b
+ jumptable .Movement0c ; 0c
+ jumptable .Movement0d ; 0d
+ jumptable .Movement0e ; 0e
+ jumptable .Follow ; 0f
+ jumptable .Script ; 10
+ jumptable .Strength ; 11
+ jumptable .FollowNotExact ; 12
+ jumptable .MovementShadow ; 13
+ jumptable .MovementEmote ; 14
+ jumptable .MovementBigStanding ; 15
+ jumptable .MovementBouncing ; 16
+ jumptable .MovementScreenShake ; 17
+ jumptable .MovementSpinClockwise ; 18
+ jumptable .MovementSpinCounterclockwise ; 19
+ jumptable .MovementBoulderDust ; 1a
+ jumptable .MovementShakingGrass ; 1b
; 4821
.Null_00: ; 4821
@@ -1030,7 +1029,7 @@ Function47dd: ; 47dd
.Standing: ; 4869
call Function462a
- call Function467b
+ call EndSpriteMovement
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_STAND
@@ -1110,14 +1109,14 @@ Function47dd: ; 47dd
ld a, [hl]
and %00000011
or 0
- call Function4690
+ call InitStep
call Function6ec1
jr c, .ok2
ld de, SFX_STRENGTH
call PlaySFX
call SpawnStrengthBoulderDust
- call Function463f
+ call UpdateTallGrassFlags
ld hl, OBJECT_STEP_TYPE
add hl, bc
ld [hl], STEP_TYPE_0F
@@ -1211,7 +1210,7 @@ Function47dd: ; 47dd
; 4958
.MovementBigStanding: ; 4958
- call Function467b
+ call EndSpriteMovement
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld [hl], STANDING
@@ -1225,7 +1224,7 @@ Function47dd: ; 47dd
; 496e
.MovementBouncing: ; 496e
- call Function467b
+ call EndSpriteMovement
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld [hl], STANDING
@@ -1253,7 +1252,7 @@ Function47dd: ; 47dd
; 4996
.MovementSpinInit: ; 4996
- call Function467b
+ call EndSpriteMovement
call IncrementObjectMovementByteIndex
.MovementSpinRepeat: ; 499c
ld hl, OBJECT_ACTION
@@ -1329,12 +1328,12 @@ Function47dd: ; 47dd
add hl, de
ld a, [hl]
and 3
- ld d, $e
+ ld d, 1 * 8 + 6
cp DOWN
jr z, .ok_13
cp UP
jr z, .ok_13
- ld d, $c
+ ld d, 1 * 8 + 4
.ok_13
ld hl, OBJECT_SPRITE_Y_OFFSET
@@ -1345,12 +1344,12 @@ Function47dd: ; 47dd
ld [hl], 0
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_13
+ ld [hl], STEP_TYPE_TRACKING_OBJECT
ret
; 4a21
.MovementEmote: ; 4a21
- call Function467b
+ call EndSpriteMovement
call ._MovementShadow_Grass_Emote_BoulderDust
ld hl, OBJECT_ACTION
add hl, bc
@@ -1360,18 +1359,18 @@ Function47dd: ; 47dd
ld [hl], 0
ld hl, OBJECT_SPRITE_Y_OFFSET
add hl, bc
- ld [hl], -$10
+ ld [hl], -2 * 8
ld hl, OBJECT_SPRITE_X_OFFSET
add hl, bc
ld [hl], 0
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_13
+ ld [hl], STEP_TYPE_TRACKING_OBJECT
ret
; 4a46
.MovementBoulderDust: ; 4a46
- call Function467b
+ call EndSpriteMovement
call ._MovementShadow_Grass_Emote_BoulderDust
ld hl, OBJECT_ACTION
add hl, bc
@@ -1405,7 +1404,7 @@ endr
ld [hl], e
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_13
+ ld [hl], STEP_TYPE_TRACKING_OBJECT
ret
; 4a81
@@ -1418,7 +1417,7 @@ endr
; 4a89
.MovementShakingGrass: ; 4a89
- call Function467b
+ call EndSpriteMovement
call ._MovementShadow_Grass_Emote_BoulderDust
ld hl, OBJECT_ACTION
add hl, bc
@@ -1432,7 +1431,7 @@ endr
ld [hl], a
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_13
+ ld [hl], STEP_TYPE_TRACKING_OBJECT
ret
; 4aa8
@@ -1454,7 +1453,7 @@ endr
; 4abc
.MovementScreenShake: ; 4abc
- call Function467b
+ call EndSpriteMovement
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_00
@@ -1493,11 +1492,11 @@ endr
; 4af0
.RandomWalkContinue: ; 4af0
- call Function4690
+ call InitStep
call Function6ec1 ; check whether the object can move in that direction
jr c, .NewDuration
- call Function463f
+ call UpdateTallGrassFlags
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_STEP
@@ -1519,7 +1518,7 @@ endr
ret
.NewDuration: ; 4b17
- call Function467b
+ call EndSpriteMovement
call Function462a
RandomStepDuration_Slow: ; 4b1d
call Random
@@ -1550,32 +1549,33 @@ SetRandomStepDuration: ; 4b2d
Pointers4b45: ; 4b45
; These pointers use OBJECT_STEP_TYPE. See constants/sprite_constants.asm
- dw Function47bc ; 00
- dw Function47dd ; 01
- dw Function4e2b ; 02 npc walk
- dw Function4ddd ; 03
- dw Function4e21 ; 04
- dw Function4e0c ; 05
- dw Function4e56 ; 06 player walk
- dw Function4e47 ; 07
- dw Function4b86 ; 08 npc jump step
- dw Function4bbf ; 09 player jump step
- dw Function4e83 ; 0a half step
- dw Function4dff ; 0b
- dw Function4c18 ; 0c teleport from
- dw Function4c89 ; 0d teleport to
- dw Function4d14 ; 0e skyfall
- dw Function4ecd ; 0f
- dw Function4d7e ; 10
- dw Function4daf ; 11
- dw Function4dc8 ; 12
- dw Function4f04 ; 13
- dw Function4f33 ; 14
- dw Function4f33 ; 15
- dw Function4f77 ; 16
- dw Function4f7a ; 17
- dw Function4df0 ; 18
- dw Function4f83 ; 19
+ jumptable_start
+ jumptable ObjectMovementReset ; 00
+ jumptable MapObjectMovementPattern ; 01
+ jumptable NPCStep ; 02 npc walk
+ jumptable Function4ddd ; 03
+ jumptable Function4e21 ; 04
+ jumptable Function4e0c ; 05
+ jumptable PlayerStep ; 06 player walk
+ jumptable Function4e47 ; 07
+ jumptable NPCJump ; 08 npc jump step
+ jumptable PlayerJump ; 09 player jump step
+ jumptable PlayerOrNPCHalfStep ; 0a half step
+ jumptable Function4dff ; 0b
+ jumptable TeleportFrom ; 0c teleport from
+ jumptable TeleportTo ; 0d teleport to
+ jumptable Skyfall ; 0e skyfall
+ jumptable Function4ecd ; 0f
+ jumptable GotBiteStep ; 10
+ jumptable RockSmashStep ; 11
+ jumptable ReturnDigStep ; 12
+ jumptable Function4f04 ; 13
+ jumptable Function4f33 ; 14
+ jumptable Function4f33 ; 15
+ jumptable Function4f77 ; 16
+ jumptable Function4f7a ; 17
+ jumptable Function4df0 ; 18
+ jumptable SkyfallTop ; 19
; 4b79
Function4b79: ; 4b79
@@ -1585,11 +1585,11 @@ Function4b79: ; 4b79
ret nz
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4b86
-Function4b86: ; 4b86
+NPCJump: ; 4b86
call Object28AnonymousJumptable
; anonymous jumptable
dw Function4b8d
@@ -1603,7 +1603,7 @@ Function4b8d: ; 4b8d
add hl, bc
dec [hl]
ret nz
- call Function4600
+ call CopyNextCoordsTileToStandingCoordsTile
call GetNextTile
ld hl, OBJECT_FLAGS2
add hl, bc
@@ -1619,34 +1619,34 @@ Function4ba9: ; 4ba9
add hl, bc
dec [hl]
ret nz
- call Function4600
+ call CopyNextCoordsTileToStandingCoordsTile
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4bbf
-Function4bbf: ; 4bbf
+PlayerJump: ; 4bbf
call Object28AnonymousJumptable
; anonymous jumptable
- dw Function4bca
- dw Function4bd2
- dw Function4bf2
- dw Function4bfd
+ dw .initjump
+ dw .stepjump
+ dw .initland
+ dw .stepland
; 4bca
-Function4bca: ; 4bca
+.initjump: ; 4bca
ld hl, wPlayerStepFlags
set 7, [hl]
call IncrementObjectStructField28
-Function4bd2: ; 4bd2
+.stepjump: ; 4bd2
call UpdateJumpPosition
- call Function4738
+ call UpdatePlayerStep
ld hl, OBJECT_STEP_DURATION
add hl, bc
dec [hl]
ret nz
- call Function4600
+ call CopyNextCoordsTileToStandingCoordsTile
ld hl, OBJECT_FLAGS2
add hl, bc
res 3, [hl]
@@ -1657,28 +1657,28 @@ Function4bd2: ; 4bd2
ret
; 4bf2
-Function4bf2: ; 4bf2
+.initland: ; 4bf2
call GetNextTile
ld hl, wPlayerStepFlags
set 7, [hl]
call IncrementObjectStructField28
-Function4bfd: ; 4bfd
+.stepland: ; 4bfd
call UpdateJumpPosition
- call Function4738
+ call UpdatePlayerStep
ld hl, OBJECT_STEP_DURATION
add hl, bc
dec [hl]
ret nz
ld hl, wPlayerStepFlags
set 6, [hl]
- call Function4600
+ call CopyNextCoordsTileToStandingCoordsTile
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4c18
-Function4c18: ; 4c18
+TeleportFrom: ; 4c18
call Object28AnonymousJumptable
; anonymous jumptable
dw Function4c23
@@ -1745,11 +1745,11 @@ Function4c5d: ; 4c5d
ld [hl], 0
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4c89
-Function4c89: ; 4c89
+TeleportTo: ; 4c89
call Object28AnonymousJumptable
; anonymous jumptable
dw Function4c9a
@@ -1837,11 +1837,11 @@ Function4d01: ; 4d01
ld [hl], 0
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4d14
-Function4d14: ; 4d14
+Skyfall: ; 4d14
call Object28AnonymousJumptable
; anonymous jumptable
dw Function4d1f
@@ -1902,11 +1902,11 @@ Function4d6b: ; 4d6b
ld [hl], 0
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4d7e
-Function4d7e: ; 4d7e
+GotBiteStep: ; 4d7e
call Object28AnonymousJumptable
; anonymous jumptable
dw Function4d85
@@ -1936,11 +1936,11 @@ Function4d94: ; 4d94
ld [hl], 0
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4daf
-Function4daf: ; 4daf
+RockSmashStep: ; 4daf
call Function4db5
jp Function4b79
; 4db5
@@ -1961,7 +1961,7 @@ Function4db5: ; 4db5
ret
; 4dc8
-Function4dc8: ; 4dc8
+ReturnDigStep: ; 4dc8
ld hl, OBJECT_STEP_DURATION
add hl, bc
ld a, [hl]
@@ -1987,7 +1987,7 @@ Function4ddd: ; 4ddd
ret nz
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4df0
@@ -1999,7 +1999,7 @@ Function4df0: ; 4df0
add hl, bc
dec [hl]
ret nz
- jp Function4357
+ jp DeleteMapObject
; 4dff
Function4dff: ; 4dff
@@ -2009,7 +2009,7 @@ Function4dff: ; 4dff
ret nz
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4e0c
@@ -2028,27 +2028,27 @@ Function4e13: ; 4e13
ld [hl], a
call IncrementObjectStructField28
Function4e21: ; 4e21
- call Function4fb2
+ call MobileFn_4fb2
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld [hl], STANDING
ret
; 4e2b
-Function4e2b: ; 4e2b
- call Function4fb2
+NPCStep: ; 4e2b
+ call MobileFn_4fb2
call AddStepVector
ld hl, OBJECT_STEP_DURATION
add hl, bc
dec [hl]
ret nz
- call Function4600
+ call CopyNextCoordsTileToStandingCoordsTile
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld [hl], STANDING
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4e47
@@ -2058,24 +2058,24 @@ Function4e47: ; 4e47
add hl, bc
dec [hl]
ret nz
- call Function4600
+ call CopyNextCoordsTileToStandingCoordsTile
jp RandomStepDuration_Slow
; 4e56
-Function4e56: ; 4e56
+PlayerStep: ; 4e56
; AnimateStep?
call Object28AnonymousJumptable
; anonymous jumptable
- dw Function4e5d
- dw Function4e65
+ dw .init
+ dw .step
; 4e5d
-Function4e5d: ; 4e5d
+.init: ; 4e5d
ld hl, wPlayerStepFlags
set 7, [hl]
call IncrementObjectStructField28
-Function4e65: ; 4e65
- call Function4738
+.step: ; 4e65
+ call UpdatePlayerStep
ld hl, OBJECT_STEP_DURATION
add hl, bc
dec [hl]
@@ -2083,26 +2083,26 @@ Function4e65: ; 4e65
ld hl, wPlayerStepFlags
set 6, [hl]
- call Function4600
+ call CopyNextCoordsTileToStandingCoordsTile
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld [hl], STANDING
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4e83
-Function4e83: ; 4e83
+PlayerOrNPCHalfStep: ; 4e83
call Object28AnonymousJumptable
; anonymous jumptable
- dw Function4e8e
- dw Function4ea4
- dw Function4ead
- dw Function4ec0
+ dw .init1
+ dw .step1
+ dw .init2
+ dw .step2
; 4e8e
-Function4e8e: ; 4e8e
+.init1: ; 4e8e
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld [hl], STANDING
@@ -2114,14 +2114,14 @@ Function4e8e: ; 4e8e
add hl, bc
ld [hl], 2
call IncrementObjectStructField28
-Function4ea4: ; 4ea4
+.step1: ; 4ea4
ld hl, OBJECT_STEP_DURATION
add hl, bc
dec [hl]
ret nz
call IncrementObjectStructField28
-Function4ead: ; 4ead
- ld hl, OBJECT_29
+.init2: ; 4ead
+ ld hl, OBJECT_29 ; new facing
add hl, bc
ld a, [hl]
ld hl, OBJECT_FACING
@@ -2129,16 +2129,16 @@ Function4ead: ; 4ead
ld [hl], a
ld hl, OBJECT_STEP_DURATION
add hl, bc
- ld [hl], $2
+ ld [hl], 2
call IncrementObjectStructField28
-Function4ec0: ; 4ec0
+.step2: ; 4ec0
ld hl, OBJECT_STEP_DURATION
add hl, bc
dec [hl]
ret nz
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4ecd
@@ -2164,13 +2164,13 @@ Function4ecd: ; 4ecd
ld hl, OBJECT_FLAGS2
add hl, bc
res 2, [hl]
- call Function4600
+ call CopyNextCoordsTileToStandingCoordsTile
ld hl, OBJECT_DIRECTION_WALKING
add hl, bc
ld [hl], STANDING
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4f04
@@ -2206,7 +2206,7 @@ Function4f04: ; 4f04
ret nz
.nope
- jp Function4357
+ jp DeleteMapObject
; 4f33
Function4f33: ; 4f33
@@ -2245,7 +2245,7 @@ Function4f43: ; 4f43
ret
.ok
- call Function4357
+ call DeleteMapObject
ret
; 4f6c
@@ -2267,12 +2267,12 @@ Function4f77: ; 4f77
Function4f7a: ; 4f7a
call Object28AnonymousJumptable
; anonymous jumptable
- dw Function4f83
- dw Function4f83
- dw Function4f83
+ dw SkyfallTop
+ dw SkyfallTop
+ dw SkyfallTop
; 4f83
-Function4f83: ; 4f83
+SkyfallTop: ; 4f83
call Object28AnonymousJumptable
; anonymous jumptable
dw Function4f8a
@@ -2302,15 +2302,11 @@ Function4f99: ; 4f99
ld [hl], 0
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 4fb2
-Function4fb2: ; 4fb2
- ret
-; 4fb3
-
-Function4fb3: ; 4fb3
+MobileFn_4fb2: mobile
ld hl, OBJECT_29
add hl, bc
inc [hl]
@@ -2839,7 +2835,7 @@ Function5688: ; 5688
ld hl, OBJECT_NEXT_TILE
add hl, bc
ld [hl], a
- callba Function463f ; no need to farcall
+ callba UpdateTallGrassFlags ; no need to farcall
ret
; 56a3
@@ -2996,12 +2992,12 @@ Function56cd: ; 56cd
; 576a
Function576a:: ; 576a
- call Function5771
+ call .ResetStepVector
call Function5781
ret
; 5771
-Function5771: ; 5771
+.ResetStepVector: ; 5771
xor a
ld [wPlayerStepVectorX], a
ld [wPlayerStepVectorY], a
@@ -3040,7 +3036,7 @@ Function579d: ; 579d
ld [wd04e], a
ld [PlayerObjectStepFrame], a
call Function57bc
- callba CheckWarpCollision
+ callba CheckWarpFacingDown
call c, SpawnInFacingDown
call SpawnInCustomFacing
ret
diff --git a/engine/map_setup.asm b/engine/map_setup.asm
index 7444c7fbe..8f7b0e333 100644
--- a/engine/map_setup.asm
+++ b/engine/map_setup.asm
@@ -33,11 +33,9 @@ MapSetupScripts: ; 15377
MapSetupScript_Teleport: ; 1538f
db map_prolong_sprites
-
MapSetupScript_Fly: ; 15390
db map_fade_out_palettes
db map_keep_roam
-
MapSetupScript_Warp: ; 15392
db map_lcd_off
db map_sound_off
@@ -61,7 +59,7 @@ MapSetupScript_Warp: ; 15392
db map_fade_in_palettes
db map_animations_on
db map_wildmons
- db map_end_setup_script
+ db map_end
MapSetupScript_BadWarp: ; 153a9
db map_load_spawn
@@ -85,7 +83,7 @@ MapSetupScript_BadWarp: ; 153a9
db map_fade_in_palettes
db map_animations_on
db map_wildmons
- db map_end_setup_script
+ db map_end
MapSetupScript_Connection: ; 153bf
db map_animations_off
@@ -104,14 +102,12 @@ MapSetupScript_Connection: ; 153bf
db map_wildmons
db map_update_roam
db map_animations_on
- db map_end_setup_script
+ db map_end
MapSetupScript_Fall: ; 153d0
db map_prolong_sprites
-
MapSetupScript_Door: ; 153d1
db map_fade_out_palettes
-
MapSetupScript_Train: ; 153d2
db map_load_warp
db map_attributes
@@ -133,7 +129,7 @@ MapSetupScript_Train: ; 153d2
db map_animations_on
db map_wildmons
db map_update_roam
- db map_end_setup_script
+ db map_end
MapSetupScript_ReloadMap: ; 153e7
db map_fade
@@ -151,7 +147,7 @@ MapSetupScript_ReloadMap: ; 153e7
db map_fade_in_palettes
db map_animations_on
db map_wildmons
- db map_end_setup_script
+ db map_end
MapSetupScript_LinkReturn: ; 153f7
db map_fade
@@ -170,7 +166,7 @@ MapSetupScript_LinkReturn: ; 153f7
db map_animations_on
db map_wildmons
db map_text_scroll_off
- db map_end_setup_script
+ db map_end
MapSetupScript_Continue: ; 15408
db map_lcd_off
@@ -190,12 +186,12 @@ MapSetupScript_Continue: ; 15408
db map_fade_in_palettes
db map_animations_on
db map_wildmons
- db map_end_setup_script
+ db map_end
MapSetupScript_Submenu: ; 1541a
db map_load_blocks
db map_connection_blocks
- db map_end_setup_script
+ db map_end
ReadMapSetupScript: ; 1541d
@@ -252,7 +248,7 @@ MapSetupCommands: ; 15440
dba RotatePalettesRightMapAndMusic ; 06
dba EnterMapMusic ; 07
dba ForceMapMusic ; 08
- dba RotatePalettesLeftMusic ; 09
+ dba FadeInMusic ; 09
dba LoadBlockData ; 0a
dba LoadNeighboringBlockData ; 0b
dba SaveScreen ; 0c
diff --git a/engine/mart.asm b/engine/mart.asm
index 87c805c25..b4e655573 100755
--- a/engine/mart.asm
+++ b/engine/mart.asm
@@ -70,10 +70,10 @@ BargainShop: ; 15a84
Pharmacist: ; 15aae
call FarReadMart
call LoadStandardMenuDataHeader
- ld hl, UnknownText_0x15e90
+ ld hl, Text_Pharmacist_Intro
call MartTextBox
call BuyMenu
- ld hl, UnknownText_0x15eae
+ ld hl, Text_Pharmacist_ComeAgain
call MartTextBox
ret
; 15ac4
@@ -185,9 +185,9 @@ StandardMart: ; 15b47
.TopMenu: ; 15b6e
ld hl, MenuDataHeader_BuySell
call CopyMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
jr c, .quit
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $1
jr z, .buy
cp $2
@@ -369,7 +369,7 @@ BargainShopData: ; 15c51
BuyMenu: ; 15c62
call FadeToMenu
- callba Function8000
+ callba BlankScreen
xor a
ld [wd045 + 1], a
ld a, 1
@@ -377,7 +377,7 @@ BuyMenu: ; 15c62
.loop
call BuyMenuLoop ; menu loop
jr nc, .loop
- call ReturnToCallingMenu
+ call CloseSubmenu
ret
; 15c7d
@@ -470,7 +470,7 @@ endr
BuyMenuLoop: ; 15cef
- callba PlaceMoneyTopRightOW
+ callba PlaceMoneyTopRight
call UpdateSprites
ld hl, MenuDataHeader_Buy
call CopyMenuDataHeader
@@ -478,13 +478,13 @@ BuyMenuLoop: ; 15cef
ld [wMenuCursorBuffer], a
ld a, [wd045 + 1]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wd045 + 1], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wd045], a
call SpeechTextBox
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp B_BUTTON
jr z, .set_carry
cp A_BUTTON
@@ -493,7 +493,7 @@ BuyMenuLoop: ; 15cef
.useless_pointer
call MartAskPurchaseQuantity
jr c, .cancel
- call Function15d97
+ call MartConfirmPurchase
jr c, .cancel
ld de, Money
ld bc, hMoneyTemp
@@ -546,12 +546,12 @@ StandardMartAskPurchaseQuantity:
ld [wItemQuantityBuffer], a
ld a, MARTTEXT_HOW_MANY
call LoadBuyMenuText
- callba Function24fc9
+ callba SelectQuantityToBuy
call ExitMenu
ret
; 15d97
-Function15d97: ; 15d97
+MartConfirmPurchase: ; 15d97
predef PartyMonItemName
ld a, MARTTEXT_COSTS_THIS_MUCH
call LoadBuyMenuText
@@ -606,7 +606,7 @@ RooftopSaleAskPurchaseQuantity:
call .GetSalePrice
ld a, 99
ld [wItemQuantityBuffer], a
- callba Function24fcf
+ callba RooftopSale_SelectQuantityToBuy
call ExitMenu
ret
; 15df9
@@ -662,7 +662,7 @@ MenuDataHeader_Buy: ; 0x15e18
; 15e30
.PrintBCDPrices: ; 15e30
- ld a, [wcf77]
+ ld a, [wScrollingMenuCursorPosition]
ld c, a
ld b, 0
ld hl, wMartItem1BCD
@@ -764,7 +764,7 @@ Text_BargainShop_ComeAgain: ; 0x15e8b
db "@"
; 0x15e90
-UnknownText_0x15e90: ; 0x15e90
+Text_Pharmacist_Intro: ; 0x15e90
; What's up? Need some medicine?
text_jump UnknownText_0x1c4e5f
db "@"
@@ -800,7 +800,7 @@ Text_Pharmacy_InsufficientFunds: ; 0x15ea9
db "@"
; 0x15eae
-UnknownText_0x15eae: ; 0x15eae
+Text_Pharmacist_ComeAgain: ; 0x15eae
; All right. See you around.
text_jump UnknownText_0x1c4ef6
db "@"
@@ -809,37 +809,36 @@ UnknownText_0x15eae: ; 0x15eae
SellMenu: ; 15eb3
call DisableSpriteUpdates
- callba Function106a5
-.asm_15ebc
- callba Function106be
+ callba DepositSellInitPackBuffers
+.loop
+ callba DepositSellPack
ld a, [wcf66]
and a
- jp z, Function15ece
- call Function15ee0
- jr .asm_15ebc
-; 15ece
+ jp z, .quit
+ call .TryToSellItem
+ jr .loop
-Function15ece: ; 15ece
- call Function2b74
+.quit
+ call ReturnToMapWithSpeechTextbox
and a
ret
; 15ed3
-Function15ed3: ; unreferenced
- ld hl, UnknownText_0x15edb
+.NothingToSell: ; unreferenced
+ ld hl, .NothingToSellText
call MenuTextBoxBackup
and a
ret
; 15edb
-UnknownText_0x15edb: ; 0x15edb
+.NothingToSellText: ; 0x15edb
; You don't have anything to sell.
text_jump UnknownText_0x1c4f12
db "@"
; 0x15ee0
-Function15ee0: ; 15ee0
+.TryToSellItem: ; 15ee0
callba CheckItemMenu
ld a, [wItemAttributeParamBuffer]
ld hl, .jumptable
@@ -875,8 +874,8 @@ Function15ee0: ; 15ee0
.okay_to_sell
ld hl, Text_Mart_SellHowMany
call PrintText
- callba PlaceMoneyTopRightMenu
- callba Function24fe1
+ callba PlaceMoneyAtTopLeftOfTextbox
+ callba SelectQuantityToSell
call ExitMenu
jr c, .declined
hlcoord 1, 14
@@ -899,7 +898,7 @@ Function15ee0: ; 15ee0
ld hl, Text_Mart_SoldForAmount
call PrintTextBoxText
call PlayTransactionSound
- callba PlaceMoneyBottomLeftOW
+ callba PlaceMoneyBottomLeft
call JoyWaitAorB
.declined
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/menu.asm b/engine/menu.asm
index 6978a0e54..074b2a28c 100755
--- a/engine/menu.asm
+++ b/engine/menu.asm
@@ -1,54 +1,57 @@
-Function2400e:: ; 2400e
+_2DMenu_:: ; 2400e
ld hl, CopyMenuData2
- ld a, [wcf94]
+ ld a, [wMenuData2_2DMenuItemStringsBank]
rst FarCall
- call Function24085
+
+ call Draw2DMenu
call UpdateSprites
call ApplyTilemap
- call Function2408f
+ call Get2DMenuSelection
ret
; 24022
-Function24022:: ; 24022
+_InterpretBattleMenu:: ; 24022
ld hl, CopyMenuData2
- ld a, [wcf94]
+ ld a, [wMenuData2_2DMenuItemStringsBank]
rst FarCall
- call Function24085
+
+ call Draw2DMenu
callba MobileTextBorder
call UpdateSprites
call ApplyTilemap
- call Function2408f
+ call Get2DMenuSelection
ret
; 2403c
-Function2403c:: ; 2403c
+_InterpretMobileMenu:: ; 2403c
ld hl, CopyMenuData2
- ld a, [wcf94]
+ ld a, [wMenuData2_2DMenuItemStringsBank]
rst FarCall
- call Function24085
+
+ call Draw2DMenu
callba MobileTextBorder
call UpdateSprites
call ApplyTilemap
- call Function2411a
- ld hl, wcfa5
+ call Init2DMenuCursorPosition
+ ld hl, w2DMenuFlags1
set 7, [hl]
-.asm_2405a
+.loop
call DelayFrame
callba Function10032e
ld a, [wcd2b]
and a
- jr nz, .asm_24076
- call Function241ba
- ld a, [wcfa8]
+ jr nz, .quit
+ call MobileMenuJoypad
+ ld a, [wMenuJoypadFilter]
and c
- jr z, .asm_2405a
- call Function24098
+ jr z, .loop
+ call Mobile_GetMenuSelection
ret
-.asm_24076
- ld a, [wcfa4]
+.quit
+ ld a, [w2DMenuNumCols]
ld c, a
- ld a, [wcfa3]
+ ld a, [w2DMenuNumRows]
call SimpleMultiply
ld [wMenuCursorBuffer], a
and a
@@ -57,174 +60,173 @@ Function2403c:: ; 2403c
-Function24085: ; 24085
+Draw2DMenu: ; 24085
xor a
ld [hBGMapMode], a
call MenuBox
- call Function240db
+ call Place2DMenuItemStrings
ret
; 2408f
-Function2408f: ; 2408f
- call Function2411a
- call Function1bc9
- call Function1ff8
-
-Function24098: ; 24098
+Get2DMenuSelection: ; 2408f
+ call Init2DMenuCursorPosition
+ call StaticMenuJoypad
+ call MenuClickSound
+Mobile_GetMenuSelection: ; 24098
ld a, [wMenuData2Flags]
bit 1, a
- jr z, .asm_240a6
- call Function1bdd
- bit 2, a
- jr nz, .asm_240c9
+ jr z, .skip
+ call GetMenuJoypad
+ bit SELECT_F, a
+ jr nz, .quit1
-.asm_240a6
+.skip
ld a, [wMenuData2Flags]
bit 0, a
- jr nz, .asm_240b4
- call Function1bdd
- bit 1, a
- jr nz, .asm_240cb
+ jr nz, .skip2
+ call GetMenuJoypad
+ bit B_BUTTON_F, a
+ jr nz, .quit2
-.asm_240b4
- ld a, [wcfa4]
+.skip2
+ ld a, [w2DMenuNumCols]
ld c, a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call SimpleMultiply
ld c, a
- ld a, [wcfaa]
+ ld a, [wMenuCursorX]
add c
ld [wMenuCursorBuffer], a
and a
ret
-.asm_240c9
+.quit1
scf
ret
-.asm_240cb
+.quit2
scf
ret
; 240cd
-Function240cd: ; 240cd
+GetMenuNumberOfColumns: ; 240cd
ld a, [wMenuData2Items]
and $f
ret
; 240d3
-Function240d3: ; 240d3
+GetMenuNumberOfRows: ; 240d3
ld a, [wMenuData2Items]
swap a
and $f
ret
; 240db
-Function240db: ; 240db
- ld hl, wcf95
+Place2DMenuItemStrings: ; 240db
+ ld hl, wMenuData2_2DMenuItemStringsAddr
ld e, [hl]
inc hl
ld d, [hl]
call GetMenuTextStartCoord
call Coord2Tile
- call Function240d3
+ call GetMenuNumberOfRows
ld b, a
-.asm_240eb
+.row
push bc
push hl
- call Function240cd
+ call GetMenuNumberOfColumns
ld c, a
-.asm_240f1
+.col
push bc
- ld a, [wcf94]
- call Function201c
+ ld a, [wMenuData2_2DMenuItemStringsBank]
+ call Place2DMenuItemName
inc de
- ld a, [wcf93]
+ ld a, [wMenuData2Spacing]
ld c, a
- ld b, $0
+ ld b, 0
add hl, bc
pop bc
dec c
- jr nz, .asm_240f1
+ jr nz, .col
pop hl
- ld bc, $28
+ ld bc, 2 * SCREEN_WIDTH
add hl, bc
pop bc
dec b
- jr nz, .asm_240eb
- ld hl, wcf98
+ jr nz, .row
+ ld hl, wMenuData2_2DMenuFunctionAddr
ld a, [hli]
ld h, [hl]
ld l, a
or h
ret z
- ld a, [wcf97]
+ ld a, [wMenuData2_2DMenuFunctionBank]
rst FarCall
ret
; 2411a
-Function2411a: ; 2411a (9:411a)
+Init2DMenuCursorPosition: ; 2411a (9:411a)
call GetMenuTextStartCoord
ld a, b
- ld [wcfa1], a
+ ld [w2DMenuCursorInitY], a
dec c
ld a, c
- ld [wcfa2], a
- call Function240d3
- ld [wcfa3], a
- call Function240cd
- ld [wcfa4], a
- call Function24179
- call Function2418a
- call Function24193
- ld a, [wcfa4]
+ ld [w2DMenuCursorInitX], a
+ call GetMenuNumberOfRows
+ ld [w2DMenuNumRows], a
+ call GetMenuNumberOfColumns
+ ld [w2DMenuNumCols], a
+ call .InitFlags_a
+ call .InitFlags_b
+ call .InitFlags_c
+ ld a, [w2DMenuNumCols]
ld e, a
ld a, [wMenuCursorBuffer]
ld b, a
xor a
- ld d, $0
-.asm_24146
+ ld d, 0
+.loop
inc d
add e
cp b
- jr c, .asm_24146
+ jr c, .loop
sub e
ld c, a
ld a, b
sub c
and a
- jr z, .asm_24157
+ jr z, .reset1
cp e
- jr z, .asm_24159
- jr c, .asm_24159
-.asm_24157
- ld a, $1
-.asm_24159
- ld [wcfaa], a
- ld a, [wcfa3]
+ jr z, .okay1
+ jr c, .okay1
+.reset1
+ ld a, 1
+.okay1
+ ld [wMenuCursorX], a
+ ld a, [w2DMenuNumRows]
ld e, a
ld a, d
and a
- jr z, .asm_24169
+ jr z, .reset2
cp e
- jr z, .asm_2416b
- jr c, .asm_2416b
-.asm_24169
- ld a, $1
-.asm_2416b
- ld [MenuSelection2], a
+ jr z, .okay2
+ jr c, .okay2
+.reset2
+ ld a, 1
+.okay2
+ ld [wMenuCursorY], a
xor a
- ld [wcfab], a
- ld [wcfac], a
- ld [wcfad], a
+ ld [wCursorOffCharacter], a
+ ld [wCursorCurrentTile], a
+ ld [wCursorCurrentTile + 1], a
ret
; 24179
-Function24179: ; 24179
+.InitFlags_a: ; 24179
xor a
- ld hl, wcfa5
+ ld hl, w2DMenuFlags1
ld [hli], a
ld [hld], a
ld a, [wMenuData2Flags]
@@ -235,89 +237,85 @@ Function24179: ; 24179
ret
; 2418a
-Function2418a: ; 2418a
- ld a, [wcf93]
+.InitFlags_b: ; 2418a
+ ld a, [wMenuData2Spacing]
or $20
- ld [wcfa7], a
+ ld [w2DMenuCursorOffsets], a
ret
; 24193
-Function24193: ; 24193
+.InitFlags_c: ; 24193
ld hl, wMenuData2Flags
- ld a, $1
+ ld a, A_BUTTON
bit 0, [hl]
- jr nz, .asm_2419e
- or $2
-
-.asm_2419e
+ jr nz, .skip
+ or B_BUTTON
+.skip
bit 1, [hl]
- jr z, .asm_241a4
- or $4
-
-.asm_241a4
- ld [wcfa8], a
+ jr z, .skip2
+ or SELECT
+.skip2
+ ld [wMenuJoypadFilter], a
ret
; 241a8
-Function241a8:: ; 241a8
- call Function24329
-Function241ab:: ; 241ab
- ld hl, wcfa6
+_StaticMenuJoypad:: ; 241a8
+ call Place2DMenuCursor
+_ScrollingMenuJoypad:: ; 241ab
+ ld hl, w2DMenuFlags2
res 7, [hl]
ld a, [hBGMapMode]
push af
- call Function24216
+ call MenuJoypadLoop
pop af
ld [hBGMapMode], a
ret
; 241ba
-Function241ba: ; 241ba
- ld hl, wcfa6
+MobileMenuJoypad: ; 241ba
+ ld hl, w2DMenuFlags2
res 7, [hl]
ld a, [hBGMapMode]
push af
- call Function2431a
- call Function24249
- jr nc, .asm_241cd
- call Function24270
-
-.asm_241cd
+ call Move2DMenuCursor
+ call Do2DMenuRTCJoypad
+ jr nc, .skip_joypad
+ call _2DMenuInterpretJoypad
+.skip_joypad
pop af
ld [hBGMapMode], a
- call Function1bdd
+ call GetMenuJoypad
ld c, a
ret
; 241d5
Function241d5: ; 241d5
- call Function24329
+; Unreferenced
+ call Place2DMenuCursor
.loop
- call Function2431a
+ call Move2DMenuCursor
call Function10402d ; BUG: This function is in another bank.
; Pointer in current bank (9) is bogus.
- call Function241fa
+ call .loop2
jr nc, .done
- call Function24270
+ call _2DMenuInterpretJoypad
jr c, .done
- ld a, [wcfa5]
+ ld a, [w2DMenuFlags1]
bit 7, a
jr nz, .done
- call Function1bdd
+ call GetMenuJoypad
ld c, a
- ld a, [wcfa8]
+ ld a, [wMenuJoypadFilter]
and c
jr z, .loop
.done
ret
-; 241fa
-Function241fa: ; 241fa
-.loop
- call Function24259
+.loop2
+ call Menu_WasButtonPressed
ret c
ld c, 1
ld b, 3
@@ -326,36 +324,36 @@ Function241fa: ; 241fa
ret c
callba Function100337
ret c
- ld a, [wcfa5]
+ ld a, [w2DMenuFlags1]
bit 7, a
- jr z, .loop
+ jr z, .loop2
and a
ret
; 24216
-Function24216: ; 24216
-.asm_24216
- call Function2431a
- call Function24238
- call Function24249
- jr nc, .asm_24237
- call Function24270
- jr c, .asm_24237
- ld a, [wcfa5]
+MenuJoypadLoop: ; 24216
+.loop
+ call Move2DMenuCursor
+ call .BGMap_OAM
+ call Do2DMenuRTCJoypad
+ jr nc, .done
+ call _2DMenuInterpretJoypad
+ jr c, .done
+ ld a, [w2DMenuFlags1]
bit 7, a
- jr nz, .asm_24237
- call Function1bdd
+ jr nz, .done
+ call GetMenuJoypad
ld b, a
- ld a, [wcfa8]
+ ld a, [wMenuJoypadFilter]
and b
- jr z, .asm_24216
+ jr z, .loop
-.asm_24237
+.done
ret
; 24238
-Function24238: ; 24238
+.BGMap_OAM: ; 24238
ld a, [hOAMUpdate]
push af
ld a, $1
@@ -368,220 +366,478 @@ Function24238: ; 24238
ret
; 24249
-Function24249: ; 24249
-.asm_24249
+Do2DMenuRTCJoypad: ; 24249
+.loopRTC
call RTC
- call Function24259
+ call Menu_WasButtonPressed
ret c
- ld a, [wcfa5]
+ ld a, [w2DMenuFlags1]
bit 7, a
- jr z, .asm_24249
+ jr z, .loopRTC
and a
ret
; 24259
-Function24259: ; 24259
- ld a, [wcfa5]
+Menu_WasButtonPressed: ; 24259
+ ld a, [w2DMenuFlags1]
bit 6, a
- jr z, .asm_24266
- callab Function8cf62
+ jr z, .skip_to_joypad
+ callab PlaySpriteAnimationsAndDelayFrame
-.asm_24266
+.skip_to_joypad
call JoyTextDelay
- call Function1bdd
+ call GetMenuJoypad
and a
ret z
scf
ret
; 24270
-Function24270: ; 24270
- call Function1bdd
- bit 0, a
- jp nz, Function24318
- bit 1, a
- jp nz, Function24318
- bit 2, a
- jp nz, Function24318
- bit 3, a
- jp nz, Function24318
- bit 4, a
- jr nz, .asm_242fa
- bit 5, a
- jr nz, .asm_242dc
- bit 6, a
- jr nz, .asm_242be
- bit 7, a
- jr nz, .asm_242a0
+_2DMenuInterpretJoypad: ; 24270
+ call GetMenuJoypad
+ bit A_BUTTON_F, a
+ jp nz, .a_b_start_select
+ bit B_BUTTON_F, a
+ jp nz, .a_b_start_select
+ bit SELECT_F, a
+ jp nz, .a_b_start_select
+ bit START_F, a
+ jp nz, .a_b_start_select
+ bit D_RIGHT_F, a
+ jr nz, .d_right
+ bit D_LEFT_F, a
+ jr nz, .d_left
+ bit D_UP_F, a
+ jr nz, .d_up
+ bit D_DOWN_F, a
+ jr nz, .d_down
and a
ret
-.asm_24299: ; 24299
- ld hl, wcfa6
+.set_bit_7: ; 24299
+ ld hl, w2DMenuFlags2
set 7, [hl]
scf
ret
-.asm_242a0
- ld hl, MenuSelection2
- ld a, [wcfa3]
+.d_down
+ ld hl, wMenuCursorY
+ ld a, [w2DMenuNumRows]
cp [hl]
- jr z, .asm_242ac
+ jr z, .check_wrap_around_down
inc [hl]
xor a
ret
-.asm_242ac
- ld a, [wcfa5]
+.check_wrap_around_down
+ ld a, [w2DMenuFlags1]
bit 5, a
- jr nz, .asm_242ba
+ jr nz, .wrap_around_down
bit 3, a
- jp nz, .asm_24299
+ jp nz, .set_bit_7
xor a
ret
-.asm_242ba
+.wrap_around_down
ld [hl], $1
xor a
ret
-.asm_242be
- ld hl, MenuSelection2
+.d_up
+ ld hl, wMenuCursorY
ld a, [hl]
dec a
- jr z, .asm_242c8
+ jr z, .check_wrap_around_up
ld [hl], a
xor a
ret
-.asm_242c8
- ld a, [wcfa5]
+.check_wrap_around_up
+ ld a, [w2DMenuFlags1]
bit 5, a
- jr nz, .asm_242d6
+ jr nz, .wrap_around_up
bit 2, a
- jp nz, .asm_24299
+ jp nz, .set_bit_7
xor a
ret
-.asm_242d6
- ld a, [wcfa3]
+.wrap_around_up
+ ld a, [w2DMenuNumRows]
ld [hl], a
xor a
ret
-.asm_242dc
- ld hl, wcfaa
+.d_left
+ ld hl, wMenuCursorX
ld a, [hl]
dec a
- jr z, .asm_242e6
+ jr z, .check_wrap_around_left
ld [hl], a
xor a
ret
-.asm_242e6
- ld a, [wcfa5]
+.check_wrap_around_left
+ ld a, [w2DMenuFlags1]
bit 4, a
- jr nz, .asm_242f4
+ jr nz, .wrap_around_left
bit 1, a
- jp nz, .asm_24299
+ jp nz, .set_bit_7
xor a
ret
-.asm_242f4
- ld a, [wcfa4]
+.wrap_around_left
+ ld a, [w2DMenuNumCols]
ld [hl], a
xor a
ret
-.asm_242fa
- ld hl, wcfaa
- ld a, [wcfa4]
+.d_right
+ ld hl, wMenuCursorX
+ ld a, [w2DMenuNumCols]
cp [hl]
- jr z, .asm_24306
+ jr z, .check_wrap_around_right
inc [hl]
xor a
ret
-.asm_24306
- ld a, [wcfa5]
+.check_wrap_around_right
+ ld a, [w2DMenuFlags1]
bit 4, a
- jr nz, .asm_24314
+ jr nz, .wrap_around_right
bit 0, a
- jp nz, .asm_24299
+ jp nz, .set_bit_7
xor a
ret
-.asm_24314
+.wrap_around_right
ld [hl], $1
xor a
ret
; 24318
-Function24318: ; 24318
+.a_b_start_select: ; 24318
xor a
ret
; 2431a
-Function2431a: ; 2431a
- ld hl, wcfac
+Move2DMenuCursor: ; 2431a
+ ld hl, wCursorCurrentTile
ld a, [hli]
ld h, [hl]
ld l, a
ld a, [hl]
- cp $ed
- jr nz, Function24329
- ld a, [wcfab]
+ cp "▶"
+ jr nz, Place2DMenuCursor
+ ld a, [wCursorOffCharacter]
ld [hl], a
-
-Function24329: ; 24329
- ld a, [wcfa1]
+Place2DMenuCursor: ; 24329
+ ld a, [w2DMenuCursorInitY]
ld b, a
- ld a, [wcfa2]
+ ld a, [w2DMenuCursorInitX]
ld c, a
call Coord2Tile
- ld a, [wcfa7]
+ ld a, [w2DMenuCursorOffsets]
swap a
and $f
ld c, a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld b, a
xor a
dec b
- jr z, .asm_24348
-.asm_24344
+ jr z, .got_row
+.row_loop
add c
dec b
- jr nz, .asm_24344
+ jr nz, .row_loop
-.asm_24348
- ld c, $14
+.got_row
+ ld c, SCREEN_WIDTH
call AddNTimes
- ld a, [wcfa7]
+ ld a, [w2DMenuCursorOffsets]
and $f
ld c, a
- ld a, [wcfaa]
+ ld a, [wMenuCursorX]
ld b, a
xor a
dec b
- jr z, .asm_2435f
-.asm_2435b
+ jr z, .got_col
+.col_loop
add c
dec b
- jr nz, .asm_2435b
+ jr nz, .col_loop
-.asm_2435f
+.got_col
ld c, a
add hl, bc
ld a, [hl]
- cp $ed
- jr z, .asm_2436b
- ld [wcfab], a
- ld [hl], $ed
+ cp "▶"
+ jr z, .cursor_on
+ ld [wCursorOffCharacter], a
+ ld [hl], "▶"
-.asm_2436b
+.cursor_on
ld a, l
- ld [wcfac], a
+ ld [wCursorCurrentTile], a
ld a, h
- ld [wcfad], a
+ ld [wCursorCurrentTile + 1], a
ret
; 24374
+
+_PushWindow:: ; 24374
+ ld a, [rSVBK]
+ push af
+ ld a, $7
+ ld [rSVBK], a
+
+ ld hl, wWindowStackPointer
+ 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:[wWindowStackPointer], and draw the menu using the coordinates from the header.
+; Otherwise, reset bit 0 of 7:[wWindowStackPointer].
+ ld a, [wMenuFlags]
+ bit 6, a
+ jr nz, .bit_6
+ bit 7, a
+ jr z, .not_bit_7
+
+.bit_6
+ ld hl, wWindowStackPointer
+ 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, wWindowStackPointer
+ ld [hl], e
+ inc hl
+ ld [hl], d
+
+ pop af
+ ld [rSVBK], a
+ ld hl, wWindowStackSize
+ 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
+
+_ExitMenu:: ; 243e8
+ xor a
+ ld [hBGMapMode], a
+
+ ld a, [rSVBK]
+ push af
+ ld a, $7
+ ld [rSVBK], a
+
+ call GetWindowStackTop
+ ld a, l
+ or h
+ jp z, Error_Cant_ExitMenu
+ ld a, l
+ ld [wWindowStackPointer], a
+ ld a, h
+ ld [wWindowStackPointer + 1], a
+ call PopWindow
+ ld a, [wMenuFlags]
+ bit 0, a
+ jr z, .loop
+ ld d, h
+ ld e, l
+ call RestoreTileBackup
+
+.loop
+ call GetWindowStackTop
+ ld a, h
+ or l
+ jr z, .done
+ call PopWindow
+
+.done
+ pop af
+ ld [rSVBK], a
+ ld hl, wWindowStackSize
+ dec [hl]
+ ret
+; 24423
+
+Function24423: ; 24423
+; Unreferenced
+ 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
+.loop
+ ld a, [hl]
+ cp $61
+ jr c, .next
+ ld [de], a
+.next
+ inc hl
+ inc de
+ dec bc
+ ld a, c
+ or b
+ jr nz, .loop
+ call CloseSRAM
+ ret
+; 2445d
+
+Error_Cant_ExitMenu: ; 2445d
+ ld hl, .Text_NoWindowsAvailableForPopping
+ call PrintText
+ call WaitBGMap
+.InfiniteLoop
+ jr .InfiniteLoop
+; 24468
+
+.Text_NoWindowsAvailableForPopping: ; 24468
+ text_jump UnknownText_0x1c46b7
+ db "@"
+; 2446d
+
+_InitVerticalMenuCursor:: ; 2446d
+ ld a, [wMenuData2Flags]
+ ld b, a
+ ld hl, w2DMenuCursorInitY
+ ld a, [wMenuBorderTopCoord]
+ inc a
+ bit 6, b
+ jr nz, .skip_offset
+ inc a
+.skip_offset
+ ld [hli], a
+; w2DMenuCursorInitX
+ ld a, [wMenuBorderLeftCoord]
+ inc a
+ ld [hli], a
+; w2DMenuNumRows
+ ld a, [wMenuData2Items]
+ ld [hli], a
+; w2DMenuNumCols
+ ld a, 1
+ ld [hli], a
+; w2DMenuFlags1
+ ld [hl], $0
+ bit 5, b
+ jr z, .skip_bit_5
+ set 5, [hl]
+.skip_bit_5
+ ld a, [wMenuFlags]
+ bit 4, a
+ jr z, .skip_bit_6
+ set 6, [hl]
+.skip_bit_6
+ inc hl
+; w2DMenuFlags2
+ xor a
+ ld [hli], a
+; w2DMenuCursorOffsets
+ ln a, 2, 0
+ ld [hli], a
+; wMenuJoypadFilter
+ ld a, A_BUTTON
+ bit 0, b
+ jr nz, .skip_bit_1
+ add B_BUTTON
+.skip_bit_1
+ ld [hli], a
+; wMenuCursorY
+ ld a, [wMenuCursorBuffer]
+ and a
+ jr z, .load_at_the_top
+ ld c, a
+ ld a, [wMenuData2Items]
+ cp c
+ jr nc, .load_position
+.load_at_the_top
+ ld c, 1
+.load_position
+ ld [hl], c
+ inc hl
+; wMenuCursorX
+ ld a, 1
+ ld [hli], a
+; wCursorOffCharacter, wCursorCurrentTile
+ xor a
+rept 3
+ ld [hli], a
+endr
+ ret
+; 244c3
diff --git a/engine/mon_icons.asm b/engine/mon_icons.asm
new file mode 100755
index 000000000..8d998408c
--- /dev/null
+++ b/engine/mon_icons.asm
@@ -0,0 +1,450 @@
+LoadOverworldMonIcon: ; 8e82b
+ ld a, e
+ call ReadMonMenuIcon
+ ld l, a
+ ld h, 0
+ add hl, hl
+ ld de, IconPointers
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ ld b, BANK(Icons)
+ ld c, 8
+ ret
+; 8e83f
+
+Function8e83f: ; 8e83f
+ push hl
+ push de
+ push bc
+ call Function8e849
+ pop bc
+ pop de
+ pop hl
+ ret
+; 8e849
+
+Function8e849: ; 8e849
+ ld d, 0
+ ld hl, .jumptable
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 8e854
+
+
+.jumptable: ; 8e854 (23:6854)
+ dw Function8e8d5 ; init
+ dw Function8e961
+ dw Function8e97d
+ dw Function8e99a
+ dw Function8e898
+ dw Function8e8b1
+ dw Function8e862
+
+
+Function8e862: ; 8e862 (23:6862)
+ call InitPartyMenuIcon
+ call Function8e86c
+ call SetPartyMonIconAnimSpeed
+ ret
+
+Function8e86c: ; 8e86c (23:686c)
+ push bc
+ ld a, [hObjectStructIndexBuffer]
+ ld hl, PartyMon1Item
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ pop bc
+ ld a, [hl]
+ and a
+ jr z, .asm_8e890
+ push hl
+ push bc
+ ld d, a
+ callab ItemIsMail
+ pop bc
+ pop hl
+ jr c, .asm_8e88e
+ ld a, $6
+ jr .asm_8e892
+.asm_8e88e
+ ld a, $5
+ ; jr .asm_8e892
+.asm_8e890
+ ld a, $4
+.asm_8e892
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+ add hl, bc
+ ld [hl], a
+ ret
+
+Function8e898: ; 8e898 (23:6898)
+ call Function8e8d5
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld a, $0
+ ld [hl], a
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld a, 9 * 8
+ ld [hl], a
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ ld a, 9 * 8
+ ld [hl], a
+ ret
+
+Function8e8b1: ; 8e8b1 (23:68b1)
+ call InitPartyMenuIcon
+ call SetPartyMonIconAnimSpeed
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld a, $0
+ ld [hl], a
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld a, 3 * 8
+ ld [hl], a
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ ld a, 12 * 8
+ ld [hl], a
+ ld a, c
+ ld [wc608], a
+ ld a, b
+ ld [wc608 + 1], a
+ ret
+
+Function8e8d5: ; 8e8d5 (23:68d5)
+ call InitPartyMenuIcon
+ call .SpawnItemIcon
+ call SetPartyMonIconAnimSpeed
+ ret
+
+.SpawnItemIcon: ; 8e8df (23:68df)
+ push bc
+ ld a, [hObjectStructIndexBuffer]
+ ld hl, PartyMon1Item
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ pop bc
+ ld a, [hl]
+ and a
+ ret z
+ push hl
+ push bc
+ ld d, a
+ callab ItemIsMail
+ pop bc
+ pop hl
+ jr c, .mail
+ ld a, $3
+ jr .okay
+
+.mail
+ ld a, $2
+.okay
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
+ add hl, bc
+ ld [hl], a
+ ret
+
+InitPartyMenuIcon: ; 8e908 (23:6908)
+ ld a, [wCurIconTile]
+ push af
+ ld a, [hObjectStructIndexBuffer]
+ ld hl, PartySpecies
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ call GetMemIconGFX
+ ld a, [hObjectStructIndexBuffer]
+; y coord
+rept 4
+ add a
+endr
+ add $1c
+ ld d, a
+; x coord
+ ld e, $10
+; type is partymon icon
+ ld a, SPRITE_ANIM_INDEX_00
+ call InitSpriteAnimStruct
+ pop af
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
+ add hl, bc
+ ld [hl], a
+ ret
+
+SetPartyMonIconAnimSpeed: ; 8e936 (23:6936)
+ push bc
+ ld a, [hObjectStructIndexBuffer]
+ ld b, a
+ call .getspeed
+ ld a, b
+ pop bc
+ ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
+ add hl, bc
+ ld [hl], a
+ rlca
+ rlca
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld [hl], a
+ ret
+
+.getspeed: ; 8e94c (23:694c)
+ callba PlacePartymonHPBar
+ call GetHPPal
+ ld e, d
+ ld d, 0
+ ld hl, .speeds
+ add hl, de
+ ld b, [hl]
+ ret
+; 8e95e (23:695e)
+
+.speeds: ; 8e95e
+ db $00, $40, $80
+; 8e961
+
+Function8e961: ; 8e961 (23:6961)
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ xor a
+ call GetIconGFX
+ depixel 4, 4, 4, 0
+ ld a, SPRITE_ANIM_INDEX_00
+ call InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], $0
+ ret
+
+Function8e97d: ; 8e97d (23:697d)
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ xor a
+ call GetIconGFX
+ ld d, 3 * 8 + 2
+ ld e, 4 * 8 + 4
+ ld a, SPRITE_ANIM_INDEX_00
+ call InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], SPRITE_ANIM_SEQ_NULL
+ ret
+
+Function8e99a: ; 8e99a (23:699a)
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ ld a, $62
+ ld [wCurIconTile], a
+ call GetMemIconGFX
+ ret
+
+GetSpeciesIcon: ; 8e9ac
+; Load species icon into VRAM at tile a
+ push de
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ pop de
+ ld a, e
+ call GetIconGFX
+ ret
+; 8e9bc
+
+
+FlyFunction_GetMonIcon: ; 8e9bc (23:69bc)
+ push de
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ pop de
+ ld a, e
+ call GetIcon_a
+ ret
+; 8e9cc (23:69cc)
+
+GetMonIcon2: ; 8e9cc
+; unreferenced
+ push de
+ ld a, [wd265]
+ call ReadMonMenuIcon
+ ld [CurIcon], a
+ pop de
+ call GetIcon_de
+ ret
+; 8e9db
+
+GetMemIconGFX: ; 8e9db (23:69db)
+ ld a, [wCurIconTile]
+GetIconGFX: ; 8e9de
+ call GetIcon_a
+ ld de, $80 ; 8 tiles
+ add hl, de
+ ld de, HeldItemIcons
+ lb bc, BANK(HeldItemIcons), 2
+ call GetGFXUnlessMobile
+ ld a, [wCurIconTile]
+ add 10
+ ld [wCurIconTile], a
+ ret
+
+HeldItemIcons:
+INCBIN "gfx/icon/mail.2bpp"
+INCBIN "gfx/icon/item.2bpp"
+; 8ea17
+
+GetIcon_de: ; 8ea17
+; Load icon graphics into VRAM starting from tile de.
+ ld l, e
+ ld h, d
+ jr GetIcon
+
+GetIcon_a: ; 8ea1b
+; Load icon graphics into VRAM starting from tile a.
+ ld l, a
+ ld h, 0
+
+GetIcon: ; 8ea1e
+; Load icon graphics into VRAM starting from tile hl.
+
+; One tile is 16 bytes long.
+rept 4
+ add hl, hl
+endr
+
+ ld de, VTiles0
+ add hl, de
+ push hl
+
+; The icons are contiguous, in order and of the same
+; size, so the pointer table is somewhat redundant.
+ ld a, [CurIcon]
+ push hl
+ ld l, a
+ ld h, 0
+ add hl, hl
+ ld de, IconPointers
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ pop hl
+
+ lb bc, BANK(Icons), 8
+ call GetGFXUnlessMobile
+
+ pop hl
+ ret
+; 8ea3f
+
+GetGFXUnlessMobile: ; 8ea3f
+ ld a, [wLinkMode]
+ cp LINK_MOBILE
+ jp nz, Request2bpp
+ jp Get2bpp_2
+; 8ea4a
+
+FreezeMonIcons: ; 8ea4a
+ ld hl, wSpriteAnimationStructs
+ ld e, PARTY_LENGTH
+ ld a, [wMenuCursorY]
+ ld d, a
+.loop
+ ld a, [hl]
+ and a
+ jr z, .next
+ cp d
+ jr z, .loadwithtwo
+ ld a, SPRITE_ANIM_SEQ_NULL
+ jr .ok
+
+.loadwithtwo
+ ld a, SPRITE_ANIM_SEQ_02
+
+.ok
+ push hl
+ ld c, l
+ ld b, h
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], a
+ pop hl
+
+.next
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ret
+; 8ea71
+
+UnfreezeMonIcons: ; 8ea71
+ ld hl, wSpriteAnimationStructs
+ ld e, PARTY_LENGTH
+.loop
+ ld a, [hl]
+ and a
+ jr z, .next
+ push hl
+ ld c, l
+ ld b, h
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], SPRITE_ANIM_SEQ_01
+ pop hl
+.next
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ret
+; 8ea8c (23:6a8c)
+
+HoldSwitchmonIcon: ; 8ea8c
+ ld hl, wSpriteAnimationStructs
+ ld e, PARTY_LENGTH
+ ld a, [wSwitchMon]
+ ld d, a
+.loop
+ ld a, [hl]
+ and a
+ jr z, .next
+ cp d
+ jr z, .is_switchmon
+ ld a, SPRITE_ANIM_SEQ_03
+ jr .join_back
+
+.is_switchmon
+ ld a, SPRITE_ANIM_SEQ_02
+.join_back
+ push hl
+ ld c, l
+ ld b, h
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld [hl], a
+ pop hl
+.next
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ret
+
+INCLUDE "menu/mon_icons.asm"
diff --git a/engine/mon_menu.asm b/engine/mon_menu.asm
new file mode 100755
index 000000000..f560b1b15
--- /dev/null
+++ b/engine/mon_menu.asm
@@ -0,0 +1,344 @@
+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 FreezeMonIcons
+ 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 InitVerticalMenuCursor
+ ld hl, w2DMenuFlags1
+ set 6, [hl]
+ call StaticMenuJoypad
+ 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, [wMenuCursorY]
+ 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
+
+BattleMonMenu: ; 24e99
+ ld hl, MenuDataHeader_0x24ed4
+ call CopyMenuDataHeader
+ xor a
+ ld [hBGMapMode], a
+ call MenuBox
+ call UpdateSprites
+ call PlaceVerticalMenuItems
+ call WaitBGMap
+ call CopyMenuData2
+ ld a, [wMenuData2Flags]
+ bit 7, a
+ jr z, .set_carry
+ call InitVerticalMenuCursor
+ ld hl, w2DMenuFlags1
+ set 6, [hl]
+ call StaticMenuJoypad
+ ld de, SFX_READ_TEXT_2
+ call PlaySFX
+ ld a, [hJoyPressed]
+ bit B_BUTTON_F, a
+ jr z, .clear_carry
+ ret z
+
+.set_carry
+ scf
+ ret
+
+.clear_carry
+ 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
diff --git a/engine/more_phone_scripts.asm b/engine/more_phone_scripts.asm
index f0c835e92..d44f5b475 100644
--- a/engine/more_phone_scripts.asm
+++ b/engine/more_phone_scripts.asm
@@ -1,8 +1,8 @@
UnknownScript_0xa0000:
special RandomPhoneMon
- farscall UnknownScript_0xbde3f
- if_equal $0, UnknownScript_0xa0013
- farscall UnknownScript_0xbe51e
+ farscall PhoneScript_Random2
+ if_equal 0, UnknownScript_0xa0013
+ farscall PhoneScript_Generic_Male
farjump UnknownScript_0xa003e
UnknownScript_0xa0013:
@@ -10,9 +10,9 @@ UnknownScript_0xa0013:
UnknownScript_0xa0017:
special RandomPhoneMon
- farscall UnknownScript_0xbde3f
- if_equal $0, UnknownScript_0xa002a
- farscall UnknownScript_0xbe5d0
+ farscall PhoneScript_Random2
+ if_equal 0, UnknownScript_0xa002a
+ farscall PhoneScript_Generic_Female
farjump UnknownScript_0xa0055
UnknownScript_0xa002a:
@@ -28,31 +28,31 @@ UnknownScript_0xa0036:
UnknownScript_0xa003e:
special RandomPhoneWildMon
- farscall UnknownScript_0xbde3f
- if_equal $0, UnknownScript_0xa0051
+ farscall PhoneScript_Random2
+ if_equal 0, UnknownScript_0xa0051
farscall UnknownScript_0xa017a
- farjump UnknownScript_0xa0484
+ farjump PhoneScript_HangupText_Male
UnknownScript_0xa0051:
farjump UnknownScript_0xa006c
UnknownScript_0xa0055:
special RandomPhoneWildMon
- farscall UnknownScript_0xbde3f
- if_equal $0, UnknownScript_0xa0068
+ farscall PhoneScript_Random2
+ if_equal 0, UnknownScript_0xa0068
farscall UnknownScript_0xa0226
- farjump UnknownScript_0xa053a
+ farjump PhoneScript_HangupText_Female
UnknownScript_0xa0068:
farjump UnknownScript_0xa0074
UnknownScript_0xa006c:
farscall UnknownScript_0xa0278
- farjump UnknownScript_0xa0484
+ farjump PhoneScript_HangupText_Male
UnknownScript_0xa0074:
farscall UnknownScript_0xa0324
- farjump UnknownScript_0xa053a
+ farjump PhoneScript_HangupText_Female
UnknownScript_0xa007c:
checkcode VAR_CALLERID
@@ -76,87 +76,87 @@ UnknownScript_0xa007c:
.Jack:
farwritetext UnknownText_0x1740c0
- keeptextopen
+ buttonsound
end
.Gaven:
farwritetext UnknownText_0x174a24
- keeptextopen
+ buttonsound
end
.Jose:
farwritetext UnknownText_0x174f2f
- keeptextopen
+ buttonsound
end
.Joey:
farwritetext UnknownText_0x175530
- keeptextopen
+ buttonsound
end
.Wade:
farwritetext UnknownText_0x1757d4
- keeptextopen
+ buttonsound
end
.Ralph:
farwritetext UnknownText_0x175bc4
- keeptextopen
+ buttonsound
end
.Anthony:
farwritetext UnknownText_0x176a2f
- keeptextopen
+ buttonsound
end
.Todd:
farwritetext UnknownText_0x176e5d
- keeptextopen
+ buttonsound
end
.Arnie:
farwritetext UnknownText_0x649dc
- keeptextopen
+ buttonsound
end
.Alan:
farwritetext UnknownText_0x64cbd
- keeptextopen
+ buttonsound
end
.Chad:
farwritetext UnknownText_0x65271
- keeptextopen
+ buttonsound
end
.Derek:
farwritetext UnknownText_0x65ab2
- keeptextopen
+ buttonsound
end
.Tully:
farwritetext UnknownText_0x65de4
- keeptextopen
+ buttonsound
end
.Brent:
farwritetext UnknownText_0x660be
- keeptextopen
+ buttonsound
end
.Vance:
farwritetext UnknownText_0x66980
- keeptextopen
+ buttonsound
end
.Wilton:
farwritetext UnknownText_0x66afc
- keeptextopen
+ buttonsound
end
.Parry:
farwritetext UnknownText_0x66f9f
- keeptextopen
+ buttonsound
end
UnknownScript_0xa0128:
@@ -172,42 +172,42 @@ UnknownScript_0xa0128:
.Beverly:
farwritetext UnknownText_0x174688
- keeptextopen
+ buttonsound
end
.Beth:
farwritetext UnknownText_0x174c7f
- keeptextopen
+ buttonsound
end
.Reena:
farwritetext UnknownText_0x1752f5
- keeptextopen
+ buttonsound
end
.Liz:
farwritetext UnknownText_0x175fda
- keeptextopen
+ buttonsound
end
.Gina:
farwritetext UnknownText_0x1771fd
- keeptextopen
+ buttonsound
end
.Dana:
farwritetext UnknownText_0x64f74
- keeptextopen
+ buttonsound
end
.Tiffany:
farwritetext UnknownText_0x665ad
- keeptextopen
+ buttonsound
end
.Erin:
farwritetext UnknownText_0x6717a
- keeptextopen
+ buttonsound
end
UnknownScript_0xa017a:
@@ -232,87 +232,87 @@ UnknownScript_0xa017a:
.Jack:
farwritetext UnknownText_0x174106
- keeptextopen
+ buttonsound
end
.Gaven:
farwritetext UnknownText_0x174a80
- keeptextopen
+ buttonsound
end
.Jose:
farwritetext UnknownText_0x174f90
- keeptextopen
+ buttonsound
end
.Joey:
farwritetext UnknownText_0x175591
- keeptextopen
+ buttonsound
end
.Wade:
farwritetext UnknownText_0x175869
- keeptextopen
+ buttonsound
end
.Ralph:
farwritetext UnknownText_0x175c24
- keeptextopen
+ buttonsound
end
.Anthony:
farwritetext UnknownText_0x176aef
- keeptextopen
+ buttonsound
end
.Todd:
farwritetext UnknownText_0x176e9c
- keeptextopen
+ buttonsound
end
.Arnie:
farwritetext UnknownText_0x64a13
- keeptextopen
+ buttonsound
end
.Alan:
farwritetext UnknownText_0x64cf3
- keeptextopen
+ buttonsound
end
.Chad:
farwritetext UnknownText_0x65318
- keeptextopen
+ buttonsound
end
.Derek:
farwritetext UnknownText_0x65b29
- keeptextopen
+ buttonsound
end
.Tully:
farwritetext UnknownText_0x65e42
- keeptextopen
+ buttonsound
end
.Brent:
farwritetext UnknownText_0x6613c
- keeptextopen
+ buttonsound
end
.Vance:
farwritetext UnknownText_0x669b2
- keeptextopen
+ buttonsound
end
.Wilton:
farwritetext UnknownText_0x66b3e
- keeptextopen
+ buttonsound
end
.Parry:
farwritetext UnknownText_0x66fc0
- keeptextopen
+ buttonsound
end
UnknownScript_0xa0226:
@@ -328,42 +328,42 @@ UnknownScript_0xa0226:
.Beverly:
farwritetext UnknownText_0x1746c3
- keeptextopen
+ buttonsound
end
.Beth:
farwritetext UnknownText_0x174cf6
- keeptextopen
+ buttonsound
end
.Reena:
farwritetext UnknownText_0x17536b
- keeptextopen
+ buttonsound
end
.Liz:
farwritetext UnknownText_0x17602d
- keeptextopen
+ buttonsound
end
.Gina:
farwritetext UnknownText_0x177237
- keeptextopen
+ buttonsound
end
.Dana:
farwritetext UnknownText_0x64fb2
- keeptextopen
+ buttonsound
end
.Tiffany:
farwritetext UnknownText_0x66605
- keeptextopen
+ buttonsound
end
.Erin:
farwritetext UnknownText_0x671a4
- keeptextopen
+ buttonsound
end
UnknownScript_0xa0278:
@@ -388,87 +388,87 @@ UnknownScript_0xa0278:
.Jack:
farwritetext UnknownText_0x174165
- keeptextopen
+ buttonsound
end
.Gaven:
farwritetext UnknownText_0x174b2d
- keeptextopen
+ buttonsound
end
.Jose:
farwritetext UnknownText_0x174ffd
- keeptextopen
+ buttonsound
end
.Joey:
farwritetext UnknownText_0x175611
- keeptextopen
+ buttonsound
end
.Wade:
farwritetext UnknownText_0x1758e4
- keeptextopen
+ buttonsound
end
.Ralph:
farwritetext UnknownText_0x175c9f
- keeptextopen
+ buttonsound
end
.Anthony:
farwritetext UnknownText_0x176b45
- keeptextopen
+ buttonsound
end
.Todd:
farwritetext UnknownText_0x176eee
- keeptextopen
+ buttonsound
end
.Arnie:
farwritetext UnknownText_0x64a71
- keeptextopen
+ buttonsound
end
.Alan:
farwritetext UnknownText_0x64d4f
- keeptextopen
+ buttonsound
end
.Chad:
farwritetext UnknownText_0x65399
- keeptextopen
+ buttonsound
end
.Derek:
farwritetext UnknownText_0x65bc8
- keeptextopen
+ buttonsound
end
.Tully:
farwritetext UnknownText_0x65eac
- keeptextopen
+ buttonsound
end
.Brent:
farwritetext UnknownText_0x6618c
- keeptextopen
+ buttonsound
end
.Vance:
farwritetext UnknownText_0x669ed
- keeptextopen
+ buttonsound
end
.Wilton:
farwritetext UnknownText_0x66b8f
- keeptextopen
+ buttonsound
end
.Parry:
farwritetext UnknownText_0x67001
- keeptextopen
+ buttonsound
end
UnknownScript_0xa0324:
@@ -484,53 +484,53 @@ UnknownScript_0xa0324:
.Beverly:
farwritetext UnknownText_0x174734
- keeptextopen
+ buttonsound
end
.Beth:
farwritetext UnknownText_0x174d86
- keeptextopen
+ buttonsound
end
.Reena:
farwritetext UnknownText_0x1753c5
- keeptextopen
+ buttonsound
end
.Liz:
farwritetext UnknownText_0x176095
- keeptextopen
+ buttonsound
end
.Gina:
farwritetext UnknownText_0x177297
- keeptextopen
+ buttonsound
end
.Dana:
farwritetext UnknownText_0x6501c
- keeptextopen
+ buttonsound
end
.Tiffany:
farwritetext UnknownText_0x66688
- keeptextopen
+ buttonsound
end
.Erin:
farwritetext UnknownText_0x671eb
- keeptextopen
+ buttonsound
end
UnknownScript_0xa0376:
- farscall UnknownScript_0xa0386
- farjump UnknownScript_0xa0484
+ farscall PhoneScript_RematchText_Male
+ farjump PhoneScript_HangupText_Male
UnknownScript_0xa037e:
- farscall UnknownScript_0xa0432
- farjump UnknownScript_0xa053a
+ farscall PhoneScript_RematchText_Female
+ farjump PhoneScript_HangupText_Female
-UnknownScript_0xa0386:
+PhoneScript_RematchText_Male:
checkcode VAR_CALLERID
if_equal PHONE_SCHOOLBOY_JACK, .Jack
if_equal PHONE_SAILOR_HUEY, .Huey
@@ -552,90 +552,90 @@ UnknownScript_0xa0386:
.Jack:
farwritetext UnknownText_0x1741e1
- keeptextopen
+ buttonsound
end
.Huey:
farwritetext UnknownText_0x1748ea
- keeptextopen
+ buttonsound
end
.Gaven:
farwritetext UnknownText_0x174bc5
- keeptextopen
+ buttonsound
end
.Jose:
farwritetext UnknownText_0x17507d
- keeptextopen
+ buttonsound
end
.Joey:
farwritetext UnknownText_0x175693
- keeptextopen
+ buttonsound
end
.Wade:
farwritetext UnknownText_0x175976
- keeptextopen
+ buttonsound
end
.Ralph:
farwritetext UnknownText_0x175d40
- keeptextopen
+ buttonsound
end
.Anthony:
farwritetext UnknownText_0x176bee
- keeptextopen
+ buttonsound
end
.Todd:
farwritetext UnknownText_0x176f60
- keeptextopen
+ buttonsound
end
.Arnie:
farwritetext UnknownText_0x64ada
- keeptextopen
+ buttonsound
end
.Alan:
farwritetext UnknownText_0x64da4
- keeptextopen
+ buttonsound
end
.Chad:
farwritetext UnknownText_0x65419
- keeptextopen
+ buttonsound
end
.Tully:
farwritetext UnknownText_0x65f17
- keeptextopen
+ buttonsound
end
.Brent:
farwritetext UnknownText_0x66214
- keeptextopen
+ buttonsound
end
.Vance:
farwritetext UnknownText_0x66a3a
- keeptextopen
+ buttonsound
end
.Wilton:
farwritetext UnknownText_0x66bf3
- keeptextopen
+ buttonsound
end
.Parry:
farwritetext UnknownText_0x67096
- keeptextopen
+ buttonsound
end
-UnknownScript_0xa0432:
+PhoneScript_RematchText_Female:
checkcode VAR_CALLERID
if_equal PHONE_COOLTRAINERF_BETH, .Beth
if_equal PHONE_COOLTRAINERF_REENA, .Reena
@@ -647,37 +647,37 @@ UnknownScript_0xa0432:
.Beth:
farwritetext UnknownText_0x174e4e
- keeptextopen
+ buttonsound
end
.Reena:
farwritetext UnknownText_0x17543a
- keeptextopen
+ buttonsound
end
.Liz:
farwritetext UnknownText_0x17610a
- keeptextopen
+ buttonsound
end
.Gina:
farwritetext UnknownText_0x1772e2
- keeptextopen
+ buttonsound
end
.Dana:
farwritetext UnknownText_0x65091
- keeptextopen
+ buttonsound
end
.Tiffany:
farwritetext UnknownText_0x66730
- keeptextopen
+ buttonsound
end
.Erin:
farwritetext UnknownText_0x6722e
- keeptextopen
+ buttonsound
end
UnknownScript_0xa047a:
@@ -688,7 +688,7 @@ UnknownScript_0xa047f:
farwritetext UnknownText_0x66796
end
-UnknownScript_0xa0484:
+PhoneScript_HangupText_Male:
checkcode VAR_CALLERID
if_equal PHONE_SCHOOLBOY_JACK, .Jack
if_equal PHONE_SAILOR_HUEY, .Huey
@@ -791,7 +791,7 @@ UnknownScript_0xa0484:
farwritetext UnknownText_0x670eb
end
-UnknownScript_0xa053a:
+PhoneScript_HangupText_Female:
checkcode VAR_CALLERID
if_equal PHONE_POKEFAN_BEVERLY, .Beverly
if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -840,7 +840,7 @@ UnknownScript_0xa0584:
farjump UnknownScript_0xa0000
UnknownScript_0xa058e:
- farjump UnknownScript_0xa0484
+ farjump PhoneScript_HangupText_Male
UnknownScript_0xa0592:
scall UnknownScript_0xa05a0
@@ -848,7 +848,7 @@ UnknownScript_0xa0592:
farjump UnknownScript_0xa0017
UnknownScript_0xa059c:
- farjump UnknownScript_0xa053a
+ farjump PhoneScript_HangupText_Female
UnknownScript_0xa05a0:
special RandomPhoneRareWildMon
@@ -861,38 +861,38 @@ UnknownScript_0xa05a4:
.Wade:
farwritetext UnknownText_0x1759f7
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
.Derek:
farwritetext UnknownText_0x65c66
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa05be:
farwritetext UnknownText_0x64032
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa05c6:
farwritetext UnknownText_0x177378
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa05ce:
farwritetext UnknownText_0x64b5f
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa05d6:
farwritetext UnknownText_0x175dd9
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa05de:
farwritetext UnknownText_0x176c61
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa05e6:
checkcode VAR_CALLERID
@@ -952,271 +952,271 @@ UnknownScript_0xa061e:
UnknownScript_0xa0644:
farwritetext UnknownText_0x176feb
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa064c:
farwritetext UnknownText_0x66dc5
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0654:
- random $b
- if_equal $0, UnknownScript_0xa0682
- if_equal $1, UnknownScript_0xa068a
- if_equal $2, UnknownScript_0xa0692
- if_equal $3, UnknownScript_0xa069a
- if_equal $4, UnknownScript_0xa06a2
- if_equal $5, UnknownScript_0xa06aa
- if_equal $6, UnknownScript_0xa06b2
- if_equal $7, UnknownScript_0xa06ba
- if_equal $8, UnknownScript_0xa06c2
- if_equal $9, UnknownScript_0xa06ca
- if_equal $a, UnknownScript_0xa06d2
+ random 11
+ if_equal 0, UnknownScript_0xa0682
+ if_equal 1, UnknownScript_0xa068a
+ if_equal 2, UnknownScript_0xa0692
+ if_equal 3, UnknownScript_0xa069a
+ if_equal 4, UnknownScript_0xa06a2
+ if_equal 5, UnknownScript_0xa06aa
+ if_equal 6, UnknownScript_0xa06b2
+ if_equal 7, UnknownScript_0xa06ba
+ if_equal 8, UnknownScript_0xa06c2
+ if_equal 9, UnknownScript_0xa06ca
+ if_equal 10, UnknownScript_0xa06d2
UnknownScript_0xa0682:
farwritetext UnknownText_0x174261
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa068a:
farwritetext UnknownText_0x17429d
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0692:
farwritetext UnknownText_0x1742ee
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa069a:
farwritetext UnknownText_0x174340
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa06a2:
farwritetext UnknownText_0x174391
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa06aa:
farwritetext UnknownText_0x1743e3
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa06b2:
farwritetext UnknownText_0x174433
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa06ba:
farwritetext UnknownText_0x174485
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa06c2:
farwritetext UnknownText_0x1744d6
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa06ca:
farwritetext UnknownText_0x174522
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa06d2:
farwritetext UnknownText_0x174571
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa06da:
- random $a
- if_equal $0, UnknownScript_0xa0704
- if_equal $1, UnknownScript_0xa070c
- if_equal $2, UnknownScript_0xa0714
- if_equal $3, UnknownScript_0xa071c
- if_equal $4, UnknownScript_0xa0724
- if_equal $5, UnknownScript_0xa072c
- if_equal $6, UnknownScript_0xa0734
- if_equal $7, UnknownScript_0xa073c
- if_equal $8, UnknownScript_0xa0744
- if_equal $9, UnknownScript_0xa074c
+ random 10
+ if_equal 0, UnknownScript_0xa0704
+ if_equal 1, UnknownScript_0xa070c
+ if_equal 2, UnknownScript_0xa0714
+ if_equal 3, UnknownScript_0xa071c
+ if_equal 4, UnknownScript_0xa0724
+ if_equal 5, UnknownScript_0xa072c
+ if_equal 6, UnknownScript_0xa0734
+ if_equal 7, UnknownScript_0xa073c
+ if_equal 8, UnknownScript_0xa0744
+ if_equal 9, UnknownScript_0xa074c
UnknownScript_0xa0704:
farwritetext UnknownText_0x176223
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa070c:
farwritetext UnknownText_0x1762c3
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0714:
farwritetext UnknownText_0x17638a
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa071c:
farwritetext UnknownText_0x176424
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0724:
farwritetext UnknownText_0x1764eb
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa072c:
farwritetext UnknownText_0x176599
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0734:
farwritetext UnknownText_0x1766ac
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa073c:
farwritetext UnknownText_0x17674f
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0744:
farwritetext UnknownText_0x176816
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa074c:
farwritetext UnknownText_0x17686d
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0754:
- random $a
- if_equal $0, UnknownScript_0xa077e
- if_equal $1, UnknownScript_0xa0786
- if_equal $2, UnknownScript_0xa078e
- if_equal $3, UnknownScript_0xa0796
- if_equal $4, UnknownScript_0xa079e
- if_equal $5, UnknownScript_0xa07a6
- if_equal $6, UnknownScript_0xa07ae
- if_equal $7, UnknownScript_0xa07b6
- if_equal $8, UnknownScript_0xa07be
- if_equal $9, UnknownScript_0xa07c6
+ random 10
+ if_equal 0, UnknownScript_0xa077e
+ if_equal 1, UnknownScript_0xa0786
+ if_equal 2, UnknownScript_0xa078e
+ if_equal 3, UnknownScript_0xa0796
+ if_equal 4, UnknownScript_0xa079e
+ if_equal 5, UnknownScript_0xa07a6
+ if_equal 6, UnknownScript_0xa07ae
+ if_equal 7, UnknownScript_0xa07b6
+ if_equal 8, UnknownScript_0xa07be
+ if_equal 9, UnknownScript_0xa07c6
UnknownScript_0xa077e:
farwritetext UnknownText_0x65481
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0786:
farwritetext UnknownText_0x654ea
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa078e:
farwritetext UnknownText_0x65555
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0796:
farwritetext UnknownText_0x655c7
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa079e:
farwritetext UnknownText_0x65628
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa07a6:
farwritetext UnknownText_0x6569b
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa07ae:
farwritetext UnknownText_0x6574a
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa07b6:
farwritetext UnknownText_0x65810
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa07be:
farwritetext UnknownText_0x658c6
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa07c6:
farwritetext UnknownText_0x65969
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa07ce:
- random $a
- if_equal $0, UnknownScript_0xa07f8
- if_equal $1, UnknownScript_0xa0800
- if_equal $2, UnknownScript_0xa0808
- if_equal $3, UnknownScript_0xa0810
- if_equal $4, UnknownScript_0xa0818
- if_equal $5, UnknownScript_0xa0820
- if_equal $6, UnknownScript_0xa0828
- if_equal $7, UnknownScript_0xa0830
- if_equal $8, UnknownScript_0xa0838
- if_equal $9, UnknownScript_0xa0840
+ random 10
+ if_equal 0, UnknownScript_0xa07f8
+ if_equal 1, UnknownScript_0xa0800
+ if_equal 2, UnknownScript_0xa0808
+ if_equal 3, UnknownScript_0xa0810
+ if_equal 4, UnknownScript_0xa0818
+ if_equal 5, UnknownScript_0xa0820
+ if_equal 6, UnknownScript_0xa0828
+ if_equal 7, UnknownScript_0xa0830
+ if_equal 8, UnknownScript_0xa0838
+ if_equal 9, UnknownScript_0xa0840
UnknownScript_0xa07f8:
farwritetext UnknownText_0x662bc
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0800:
farwritetext UnknownText_0x662fc
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0808:
farwritetext UnknownText_0x66335
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0810:
farwritetext UnknownText_0x66366
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0818:
farwritetext UnknownText_0x663a1
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0820:
farwritetext UnknownText_0x663e6
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0828:
farwritetext UnknownText_0x66421
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0830:
farwritetext UnknownText_0x6645f
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0838:
farwritetext UnknownText_0x6649b
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0840:
farwritetext UnknownText_0x664dd
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0848:
checkevent EVENT_OPENED_MT_SILVER
@@ -1244,232 +1244,232 @@ UnknownScript_0xa0848:
checkflag ENGINE_PLAINBADGE
iftrue UnknownScript_0xa0898
farwritetext UnknownText_0x646a3
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0898:
farwritetext UnknownText_0x64099
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08a0:
farwritetext UnknownText_0x640e6
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08a8:
farwritetext UnknownText_0x6416d
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08b0:
farwritetext UnknownText_0x641e8
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08b8:
farwritetext UnknownText_0x64247
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08c0:
farwritetext UnknownText_0x642bb
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08c8:
farwritetext UnknownText_0x643d4
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08d0:
farwritetext UnknownText_0x64448
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08d8:
farwritetext UnknownText_0x6455b
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08e0:
farwritetext UnknownText_0x645ff
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08e8:
farwritetext UnknownText_0x646df
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08f0:
farwritetext UnknownText_0x647d8
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa08f8:
farwritetext UnknownText_0x1745c2
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0900:
farwritetext UnknownText_0x17485b
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0908:
farwritetext UnknownText_0x17496b
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0910:
farwritetext UnknownText_0x174c29
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0918:
farwritetext UnknownText_0x174ec5
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0920:
farwritetext UnknownText_0x17519b
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0928:
farwritetext UnknownText_0x17549b
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0930:
farwritetext UnknownText_0x17571d
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0938:
farwritetext UnknownText_0x175abe
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0940:
farwritetext UnknownText_0x175eaf
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0948:
farwritetext UnknownText_0x1768b0
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0950:
farwritetext UnknownText_0x176d32
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0958:
farwritetext UnknownText_0x1770fb
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0960:
farwritetext UnknownText_0x177465
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0968:
farwritetext UnknownText_0x64bc6
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0970:
farwritetext UnknownText_0x64e90
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0978:
farwritetext UnknownText_0x65161
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0980:
farwritetext UnknownText_0x65a23
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0988:
farwritetext UnknownText_0x65d5c
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0990:
farwritetext UnknownText_0x65ff2
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0998:
farwritetext UnknownText_0x6651e
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa09a0:
farwritetext UnknownText_0x66882
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa09a8:
farwritetext UnknownText_0x66aa5
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa09b0:
farwritetext UnknownText_0x66ca7
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa09b8:
farwritetext UnknownText_0x67106
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa09c0:
farwritetext UnknownText_0x67294
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa09c8:
- random $3
- if_equal $0, UnknownScript_0xa09d6
- if_equal $1, UnknownScript_0xa09de
- if_equal $2, UnknownScript_0xa09e6
+ random 3
+ if_equal 0, UnknownScript_0xa09d6
+ if_equal 1, UnknownScript_0xa09de
+ if_equal 2, UnknownScript_0xa09e6
UnknownScript_0xa09d6:
farwritetext UnknownText_0x64846
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa09de:
farwritetext UnknownText_0x64881
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa09e6:
farwritetext UnknownText_0x648dc
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa09ee:
checkcode VAR_KENJI_BREAK
- if_equal $2, UnknownScript_0xa0a00
- if_equal $1, UnknownScript_0xa0a08
+ if_equal 2, UnknownScript_0xa0a00
+ if_equal 1, UnknownScript_0xa0a08
farwritetext UnknownText_0x66e17
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0a00:
farwritetext UnknownText_0x66e67
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0a08:
checkmorn
@@ -1478,18 +1478,18 @@ UnknownScript_0xa0a08:
iftrue UnknownScript_0xa0a25
setevent EVENT_KENJI_ON_BREAK
farwritetext UnknownText_0x66f11
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0a1d:
farwritetext UnknownText_0x66ed3
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0a25:
farwritetext UnknownText_0x66f52
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0a2d:
farwritetext UnknownText_0x174638
@@ -1589,53 +1589,53 @@ UnknownScript_0xa0aa0:
UnknownScript_0xa0aa5:
farwritetext UnknownText_0x174895
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0aad:
farwritetext UnknownText_0x17529c
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0ab5:
farwritetext UnknownText_0x175b6d
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0abd:
farwritetext UnknownText_0x17750e
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0ac5:
farwritetext UnknownText_0x64f1a
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0acd:
farwritetext UnknownText_0x6520f
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0ad5:
farwritetext UnknownText_0x65da6
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0add:
farwritetext UnknownText_0x66087
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0ae5:
farwritetext UnknownText_0x6691d
- keeptextopen
- jump UnknownScript_0xa053a
+ buttonsound
+ jump PhoneScript_HangupText_Female
UnknownScript_0xa0aed:
farwritetext UnknownText_0x66d45
- keeptextopen
- jump UnknownScript_0xa0484
+ buttonsound
+ jump PhoneScript_HangupText_Male
UnknownScript_0xa0af5:
farwritetext UnknownText_0x175f70
diff --git a/engine/movement.asm b/engine/movement.asm
index 86a2eb6fb..fc297cfee 100644
--- a/engine/movement.asm
+++ b/engine/movement.asm
@@ -88,7 +88,7 @@ MovementPointers: ; 5075
dw Movement_56 ; 56
dw Movement_rock_smash ; 57
dw Movement_return_dig ; 58
- dw Movement_59 ; 59
+ dw Movement_skyfall_top ; 59
; 5129
@@ -113,10 +113,10 @@ Movement_skyfall: ; 5137
ret
; 513e
-Movement_59: ; 513e
+Movement_skyfall_top: ; 513e
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_19
+ ld [hl], STEP_TYPE_SKYFALL_TOP
ret
; 5145
@@ -193,7 +193,7 @@ Movement_fish_cast_rod: ; 51ab
ld [hl], PERSON_ACTION_FISHING
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 51b8
@@ -219,7 +219,7 @@ Movement_step_end: ; 51c1
ld hl, OBJECT_STEP_TYPE
add hl, bc
- ld [hl], STEP_TYPE_STANDING
+ ld [hl], STEP_TYPE_SLEEP
ret
; 51db
@@ -248,7 +248,7 @@ Movement_48: ; 51db
; 51fd
Movement_remove_person: ; 51fd
- call Function4357
+ call DeleteMapObject
ld hl, wObjectFollow_Leader
ld a, [hMapObjectIndexBuffer]
cp [hl]
@@ -726,7 +726,7 @@ Movement_half_step_right: ; 53fc
jr HalfStep
HalfStep: ; 5400
- ld hl, OBJECT_29
+ ld hl, OBJECT_29 ; new facing
add hl, bc
ld [hl], a
@@ -741,8 +741,8 @@ HalfStep: ; 5400
; 5412
NormalStep: ; 5412
- call Function4690
- call Function463f
+ call InitStep
+ call UpdateTallGrassFlags
ld hl, OBJECT_ACTION
add hl, bc
ld [hl], PERSON_ACTION_STEP
@@ -778,8 +778,8 @@ NormalStep: ; 5412
; 5446
TurningStep: ; 5446
- call Function4690
- call Function463f
+ call InitStep
+ call UpdateTallGrassFlags
ld hl, OBJECT_ACTION
add hl, bc
@@ -804,8 +804,8 @@ TurningStep: ; 5446
SlideStep: ; 5468
- call Function4690
- call Function463f
+ call InitStep
+ call UpdateTallGrassFlags
ld hl, OBJECT_ACTION
add hl, bc
@@ -830,7 +830,7 @@ SlideStep: ; 5468
JumpStep: ; 548a
- call Function4690
+ call InitStep
ld hl, OBJECT_31
add hl, bc
ld [hl], $0
diff --git a/engine/mysterygift.asm b/engine/mysterygift.asm
index 43cbe52d1..987c6ac2a 100755
--- a/engine/mysterygift.asm
+++ b/engine/mysterygift.asm
@@ -15,7 +15,9 @@ DoMysteryGift: ; 1048ba (41:48ba)
ld [wca02], a
ld a, [rIE]
push af
+
call Function104a95
+
ld d, a
xor a
ld [rIF], a
@@ -37,7 +39,7 @@ DoMysteryGift: ; 1048ba (41:48ba)
cp $6c
jp nz, .CommunicationError
ld a, [wc900]
- cp $3
+ cp 3
jr z, .skip_checks
call .CheckAlreadyGotFiveGiftsToday
ld hl, .Text_MaxFiveGifts ; Only 5 gifts a day
@@ -46,28 +48,28 @@ DoMysteryGift: ; 1048ba (41:48ba)
ld hl, .Text_MaxOneGiftPerPerson ; Only one gift a day per person
jp c, .PrintTextAndExit
.skip_checks
- ld a, [wc962]
+ ld a, [wMysteryGiftPlayerBackupItem]
and a
jp nz, .GiftWaiting
ld a, [wc912]
and a
jp nz, .FriendNotReady
ld a, [wc900]
- cp $3
+ cp 3
jr z, .skip_append_save
call .AddMysteryGiftPartnerID
ld a, [wc900]
- cp $4
+ cp 4
jr z, .skip_append_save
call .SaveMysteryGiftTrainerName
callba RestoreMobileEventIndex
callba MobileFn_1060a9
callba BackupMobileEventIndex
.skip_append_save
- ld a, [wc90f]
+ ld a, [wMysteryGiftPartnerSentDeco]
and a
jr z, .item
- ld a, [wc911]
+ ld a, [wMysteryGiftPartnerWhichDeco]
ld c, a
callba MysteryGiftGetDecoration
push bc
@@ -85,7 +87,7 @@ DoMysteryGift: ; 1048ba (41:48ba)
.item
call GetMysteryGiftBank
- ld a, [wc910]
+ ld a, [wMysteryGiftPartnerWhichItem]
ld c, a
callba MysteryGiftGetItemHeldEffect
ld a, c
@@ -249,7 +251,7 @@ Function104a95: ; 104a95 (41:4a95)
ld a, [hPrintNum9]
cp $2
jr z, Function104b22
- ld hl, $ffb3
+ ld hl, hPrintNum1
ld b, $1
call Function104d56
jr nz, .ly_loop
@@ -323,7 +325,7 @@ Function104b22: ; 104b22 (41:4b22)
jp Function104bd0
Function104b40: ; 104b40 (41:4b40)
- ld hl, $ffb3
+ ld hl, hPrintNum1
ld b, $1
call Function104d56
ret nz
@@ -333,14 +335,14 @@ Function104b49: ; 104b49 (41:4b49)
ld a, [hPrintNum10]
cp $6c
ret nz
- ld a, [$ffb3]
+ ld a, [hPrintNum1]
cp $96
jp nz, Function104d32
ld a, $90
- ld [$ffb3], a
+ ld [hPrintNum1], a
call Function104d38
ret nz
- ld hl, $ffb3
+ ld hl, hPrintNum1
ld b, $1
call Function104d4e
ret nz
@@ -362,8 +364,8 @@ Function104b49: ; 104b49 (41:4b49)
Function104b88: ; 104b88 (41:4b88)
ld a, $96
- ld [$ffb3], a
- ld hl, $ffb3
+ ld [hPrintNum1], a
+ ld hl, hPrintNum1
ld b, $1
call Function104d4e
ret nz
@@ -373,7 +375,7 @@ Function104b88: ; 104b88 (41:4b88)
ret nz
call Function104d43
ret nz
- ld hl, $ffb3
+ ld hl, hPrintNum1
ld b, $1
call Function104d56
ret nz
@@ -381,7 +383,7 @@ Function104b88: ; 104b88 (41:4b88)
ld a, [hPrintNum10]
cp $6c
ret nz
- ld a, [$ffb3]
+ ld a, [hPrintNum1]
cp $90
jp nz, Function104d32
call Function104d38
@@ -407,13 +409,13 @@ Function104bd0: ; 104bd0 (41:4bd0)
dec [hl]
jr z, .asm_104c18
ld hl, wMysteryGiftTrainerData
- ld de, wc900
- ld bc, $14
+ ld de, wMysteryGiftPartnerData
+ ld bc, wMysteryGiftPartnerDataEnd - wMysteryGiftPartnerData
call CopyBytes
ld a, [wMysteryGiftTrainerData]
cp $3
jr nc, .asm_104c18
- callba Function10510b
+ callba StagePartyDataForMysteryGift
call Function1050fb
ld a, $26
ld [wca02], a
@@ -479,7 +481,7 @@ Function104c2d: ; 104c2d (41:4c2d)
jp Function104d1c
Function104c8a: ; 104c8a (41:4c8a)
- ld hl, $ffb3
+ ld hl, hPrintNum1
ld b, $1
call Function104d56
ret nz
@@ -487,14 +489,14 @@ Function104c8a: ; 104c8a (41:4c8a)
ld a, [hPrintNum10]
cp $6c
ret nz
- ld a, [$ffb3]
+ ld a, [hPrintNum1]
cp $3c
jp nz, Function104d32
swap a
- ld [$ffb3], a
+ ld [hPrintNum1], a
call Function104d38
ret nz
- ld hl, $ffb3
+ ld hl, hPrintNum1
ld b, $1
call Function104d4e
ret nz
@@ -516,8 +518,8 @@ Function104c8a: ; 104c8a (41:4c8a)
Function104cd2: ; 104cd2 (41:4cd2)
ld a, $3c
- ld [$ffb3], a
- ld hl, $ffb3
+ ld [hPrintNum1], a
+ ld hl, hPrintNum1
ld b, $1
call Function104d4e
ret nz
@@ -527,7 +529,7 @@ Function104cd2: ; 104cd2 (41:4cd2)
ret nz
call Function104d43
ret nz
- ld hl, $ffb3
+ ld hl, hPrintNum1
ld b, $1
call Function104d56
ret nz
@@ -535,7 +537,7 @@ Function104cd2: ; 104cd2 (41:4cd2)
ld a, [hPrintNum10]
cp $6c
ret nz
- ld a, [$ffb3]
+ ld a, [hPrintNum1]
swap a
cp $3c
jp nz, Function104d32
@@ -702,22 +704,23 @@ Function104ddd: ; 104ddd (41:4ddd)
ld e, d
ld a, $1
ld [hPrintNum9], a
-.asm_104de4
+.loop
call Function105038
ld b, $2
ld c, rRP % $100
ld a, [hMoneyTemp + 1]
bit 1, a
- jr z, .asm_104df6
+ jr z, .next
ld a, $10
ld [hPrintNum10], a
ret
-.asm_104df6
+
+.next
bit 0, a
jr nz, asm_104e3a
ld a, [$ff00+c]
and b
- jr nz, .asm_104de4
+ jr nz, .loop
Function104dfe: ; 104dfe (41:4dfe)
ld c, rRP % $100
@@ -1181,11 +1184,11 @@ RestoreMysteryGift: ; 1050ea (41:50ea)
Function1050fb: ; 1050fb (41:50fb)
ld hl, wMysteryGiftTrainerData
xor a
- ld b, $26
-.asm_105101
+ ld b, wMysteryGiftTrainerDataEnd - wMysteryGiftTrainerData
+.loop
ld [hli], a
dec b
- jr nz, .asm_105101
+ jr nz, .loop
ret
@@ -1195,29 +1198,35 @@ GetMysteryGiftBank: ; 105106
; 10510b
-Function10510b: ; 10510b (41:510b)
+StagePartyDataForMysteryGift: ; 10510b (41:510b)
+; You will be sending this data to your mystery gift partner.
+; Structure is the same as a trainer with species and moves
+; defined.
ld a, BANK(sPokemonData)
call GetSRAMBank
- ld de, OverworldMap
+ ld de, wMysteryGiftStaging
ld bc, sPokemonData + PartyMons - wPokemonData
ld hl, sPokemonData + PartySpecies - wPokemonData
-.asm_105119
+.loop
ld a, [hli]
- cp $ff
- jr z, .asm_105148
+ cp -1
+ jr z, .party_end
cp EGG
- jr z, .asm_10513e
+ jr z, .next
push hl
+ ; copy level
ld hl, MON_LEVEL
add hl, bc
ld a, [hl]
ld [de], a
inc de
+ ; copy species
ld hl, MON_SPECIES
add hl, bc
ld a, [hl]
ld [de], a
inc de
+ ; copy moves
ld hl, MON_MOVES
add hl, bc
push bc
@@ -1225,16 +1234,16 @@ Function10510b: ; 10510b (41:510b)
call CopyBytes
pop bc
pop hl
-.asm_10513e
+.next
push hl
ld hl, PARTYMON_STRUCT_LENGTH
add hl, bc
ld b, h
ld c, l
pop hl
- jr .asm_105119
-.asm_105148
- ld a, $ff
+ jr .loop
+.party_end
+ ld a, -1
ld [de], a
ld a, $26
ld [wca00], a
@@ -1246,7 +1255,7 @@ Function105153: ; 105153 (41:5153)
ld hl, MysteryGiftGFX
ld de, VTiles2 tile $00
ld a, BANK(MysteryGiftGFX)
- ld bc, Function105688 - MysteryGiftGFX
+ ld bc, MysteryGiftGFXEnd - MysteryGiftGFX
call FarCopyBytes
hlcoord 0, 0
ld a, $42
@@ -1267,13 +1276,13 @@ Function105153: ; 105153 (41:5153)
ld [hl], a
hlcoord 7, 1
ld a, $12
- call Function10522e
+ call .Load5GFX
hlcoord 2, 2
ld a, $17
- call Function105236
+ call .Load16GFX
hlcoord 2, 3
ld a, $27
- call Function105236
+ call .Load16GFX
hlcoord 9, 4
ld a, $37
ld [hli], a
@@ -1283,19 +1292,19 @@ Function105153: ; 105153 (41:5153)
ld [hl], $4
hlcoord 1, 3
ld a, $5
- call Function105246
+ call .Load14Column
ld a, $9
hlcoord 18, 5
- call Function105242
+ call .Load11Column
hlcoord 2, 5
ld a, $b
- call Function105251
+ call .Load16Row
hlcoord 2, 16
ld a, $7
- call Function105251
+ call .Load16Row
hlcoord 2, 5
ld a, $d
- call Function10522e
+ call .Load5GFX
hlcoord 7, 5
ld [hl], $c
hlcoord 18, 5
@@ -1306,16 +1315,16 @@ Function105153: ; 105153 (41:5153)
ld [hl], $6
hlcoord 2, 6
ld a, $3a
- call Function105251
+ call .Load16Row
hlcoord 2, 15
ld a, $40
- call Function105251
+ call .Load16Row
hlcoord 2, 6
ld a, $3c
- call Function10523e
+ call .Load9Column
hlcoord 17, 6
ld a, $3e
- call Function10523e
+ call .Load9Column
hlcoord 2, 6
ld [hl], $39
hlcoord 17, 6
@@ -1331,55 +1340,55 @@ Function105153: ; 105153 (41:5153)
call SetPalettes
ret
-Function10522e: ; 10522e (41:522e)
- ld b, $5
- jr asm_105238
+.Load5GFX: ; 10522e (41:522e)
+ ld b, 5
+ jr .gfx_loop
; 105232 (41:5232)
-Function105232: ; unreferenced
- ld b, 6
- jr asm_105238
+.Load6GFX: ; unreferenced
+ ld b, 6
+ jr .gfx_loop
-Function105236: ; 105236 (41:5236)
- ld b, $10
+.Load16GFX: ; 105236 (41:5236)
+ ld b, 16
-asm_105238: ; 105238 (41:5238)
+.gfx_loop: ; 105238 (41:5238)
ld [hli], a
inc a
dec b
- jr nz, asm_105238
+ jr nz, .gfx_loop
ret
-Function10523e: ; 10523e (41:523e)
- ld b, $9
- jr asm_105248
+.Load9Column: ; 10523e (41:523e)
+ ld b, 9
+ jr .col_loop
-Function105242: ; 105242 (41:5242)
- ld b, $b
- jr asm_105248
+.Load11Column: ; 105242 (41:5242)
+ ld b, 11
+ jr .col_loop
-Function105246: ; 105246 (41:5246)
- ld b, $e
+.Load14Column: ; 105246 (41:5246)
+ ld b, 14
-asm_105248: ; 105248 (41:5248)
+.col_loop: ; 105248 (41:5248)
ld [hl], a
- ld de, $14
+ ld de, SCREEN_WIDTH
add hl, de
dec b
- jr nz, asm_105248
+ jr nz, .col_loop
ret
-Function105251: ; 105251 (41:5251)
- ld b, $10
-.asm_105253
+.Load16Row: ; 105251 (41:5251)
+ ld b, 16
+.row_loop
ld [hli], a
dec b
- jr nz, .asm_105253
+ jr nz, .row_loop
ret
MysteryGiftGFX: ; 105258
INCBIN "gfx/misc/mystery_gift.2bpp"
-
+MysteryGiftGFXEnd:
Function105688: ; 105688 (41:5688)
call ClearTileMap
@@ -1411,15 +1420,15 @@ Function105688: ; 105688 (41:5688)
ld c, 60
call DelayFrames
call Function105777
- ld hl, Text_10575e
+ ld hl, Text_ReceivedCard
call PrintText
ld de, wMysteryGiftTrainerData
callba Function8ac70
ld a, c
ld [wd265], a
- ld hl, Text_105768
+ ld hl, Text_CardNotRegistered
jr c, asm_105726
- ld hl, Text_105763
+ ld hl, Text_ListedCardAsNumber
jr asm_105726
Function1056eb: ; 1056eb (41:56eb)
@@ -1453,12 +1462,12 @@ endr
Function105712: ; 105712 (41:5712)
call Function105777
- ld hl, Text_10576d
+ ld hl, Text_MGLinkCanceled
jr asm_105726
Function10571a: ; 10571a (41:571a)
call Function105777
- ld hl, Text_105772
+ ld hl, Text_MGCommError
call PrintText
jp Function105688
@@ -1471,30 +1480,30 @@ asm_105726: ; 105726 (41:5726)
String_10572e: ; 10572e
db "エーボタン¯おすと"
- next "つうしん", $4a, "おこなわれるよ!"
+ next "つうしん<PKMN>おこなわれるよ!"
next "ビーボタン¯おすと"
next "つうしん¯ちゅうし します"
db "@"
; 10575e
-Text_10575e: ; 10575e
+Text_ReceivedCard: ; 10575e
text_jump UnknownText_0x1c051a
db "@"
-Text_105763: ; 105763
+Text_ListedCardAsNumber: ; 105763
text_jump UnknownText_0x1c0531
db "@"
-Text_105768: ; 105768
+Text_CardNotRegistered: ; 105768
text_jump UnknownText_0x1c0555
db "@"
-Text_10576d: ; 10576d
+Text_MGLinkCanceled: ; 10576d
text_jump UnknownText_0x1c0573
db "@"
-Text_105772: ; 105772
+Text_MGCommError: ; 105772
text_jump UnknownText_0x1c0591
db "@"
; 105777
@@ -1571,30 +1580,30 @@ Function1057d7: ; 1057d7 (41:57d7)
ld [hl], a
hlcoord 4, 2
ld a, $13
- call Function1058ca
+ call .Load11Row
hlcoord 4, 3
ld a, $1e
- call Function1058ce
+ call .Load12Row
hlcoord 4, 4
ld a, $2a
- call Function1058ce
+ call .Load12Row
hlcoord 1, 2
ld [hl], $4
hlcoord 1, 3
ld a, $5
- call Function1058de
+ call .Load14Column
ld a, $9
hlcoord 18, 5
- call Function1058da
+ call .Load11Column
hlcoord 2, 5
ld a, $b
- call Function1058e9
+ call .Load16Row
hlcoord 2, 16
ld a, $7
- call Function1058e9
+ call .Load16Row
hlcoord 2, 5
ld a, $d
- call Function1058c6
+ call .Load6Row
hlcoord 8, 5
ld [hl], $c
hlcoord 18, 5
@@ -1605,16 +1614,16 @@ Function1057d7: ; 1057d7 (41:57d7)
ld [hl], $6
hlcoord 2, 6
ld a, $37
- call Function1058e9
+ call .Load16Row
hlcoord 2, 15
ld a, $3d
- call Function1058e9
+ call .Load16Row
hlcoord 2, 6
ld a, $39
- call Function1058d6
+ call .Load9Column
hlcoord 17, 6
ld a, $3b
- call Function1058d6
+ call .Load9Column
hlcoord 2, 6
ld [hl], $36
hlcoord 17, 6
@@ -1624,78 +1633,78 @@ Function1057d7: ; 1057d7 (41:57d7)
hlcoord 17, 15
ld [hl], $3e
ld de, Sprites
- ld hl, OAM_1058f0
+ ld hl, .OAM_data
ld bc, $40
call CopyBytes
call EnableLCD
call WaitBGMap
ld b, $2
- callba Function4930f
+ callba GetMysteryGift_MobileAdapterLayout
jp SetPalettes
-Function1058c6: ; 1058c6 (41:58c6)
- ld b, $6
- jr asm_1058d0
+.Load6Row: ; 1058c6 (41:58c6)
+ ld b, 6
+ jr .row_loop
-Function1058ca: ; 1058ca (41:58ca)
- ld b, $b
- jr asm_1058d0
+.Load11Row: ; 1058ca (41:58ca)
+ ld b, 11
+ jr .row_loop
-Function1058ce: ; 1058ce (41:58ce)
- ld b, $c
+.Load12Row: ; 1058ce (41:58ce)
+ ld b, 12
-asm_1058d0: ; 1058d0 (41:58d0)
+.row_loop: ; 1058d0 (41:58d0)
ld [hli], a
inc a
dec b
- jr nz, asm_1058d0
+ jr nz, .row_loop
ret
-Function1058d6: ; 1058d6 (41:58d6)
- ld b, $9
- jr asm_1058e0
+.Load9Column: ; 1058d6 (41:58d6)
+ ld b, 9
+ jr .column_loop
-Function1058da: ; 1058da (41:58da)
- ld b, $b
- jr asm_1058e0
+.Load11Column: ; 1058da (41:58da)
+ ld b, 11
+ jr .column_loop
-Function1058de: ; 1058de (41:58de)
- ld b, $e
+.Load14Column: ; 1058de (41:58de)
+ ld b, 14
-asm_1058e0: ; 1058e0 (41:58e0)
+.column_loop: ; 1058e0 (41:58e0)
ld [hl], a
ld de, SCREEN_WIDTH
add hl, de
dec b
- jr nz, asm_1058e0
+ jr nz, .column_loop
ret
-Function1058e9: ; 1058e9 (41:58e9)
- ld b, $10
-.asm_1058eb
+.Load16Row: ; 1058e9 (41:58e9)
+ ld b, 16
+.row_loop_no_inc
ld [hli], a
dec b
- jr nz, .asm_1058eb
+ jr nz, .row_loop_no_inc
ret
; 1058f0 (41:58f0)
-OAM_1058f0: ; 1058f0
- db $11, $34, $00, $00
- db $11, $3c, $01, $00
- db $11, $44, $02, $00
- db $11, $4c, $03, $00
- db $19, $34, $04, $00
- db $19, $3c, $05, $00
- db $19, $44, $06, $00
- db $19, $4c, $07, $00
- db $01, $5c, $00, $00
- db $01, $64, $01, $00
- db $01, $6c, $02, $00
- db $01, $74, $03, $00
- db $09, $5c, $04, $00
- db $09, $64, $05, $00
- db $09, $6c, $06, $00
- db $09, $74, $07, $00
+.OAM_data: ; 1058f0
+ dsprite 2, 1, 6, 4, $00, $00
+ dsprite 2, 1, 7, 4, $01, $00
+ dsprite 2, 1, 8, 4, $02, $00
+ dsprite 2, 1, 9, 4, $03, $00
+ dsprite 3, 1, 6, 4, $04, $00
+ dsprite 3, 1, 7, 4, $05, $00
+ dsprite 3, 1, 8, 4, $06, $00
+ dsprite 3, 1, 9, 4, $07, $00
+ dsprite 0, 1, 11, 4, $00, $00
+ dsprite 0, 1, 12, 4, $01, $00
+ dsprite 0, 1, 13, 4, $02, $00
+ dsprite 0, 1, 14, 4, $03, $00
+ dsprite 1, 1, 11, 4, $04, $00
+ dsprite 1, 1, 12, 4, $05, $00
+ dsprite 1, 1, 13, 4, $06, $00
+ dsprite 1, 1, 14, 4, $07, $00
; japanese mystery gift gfx
MysteryGiftJP_GFX: ; 105930
diff --git a/engine/mysterygift2.asm b/engine/mysterygift2.asm
new file mode 100755
index 000000000..30d02d9d9
--- /dev/null
+++ b/engine/mysterygift2.asm
@@ -0,0 +1,227 @@
+Function2c642: ; 2c642 (b:4642)
+ ld de, wMysteryGiftStaging
+ ld a, $1
+ ld [de], a
+ inc de ; wc801
+ 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 ; wc803
+ push bc
+ ld hl, sPlayerData + PlayerName - wPlayerData
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ push de ; wc80e
+ ld hl, sPokemonData + PokedexCaught - wPokemonData
+ ld b, EndPokedexCaught - PokedexCaught
+ call CountSetBits
+ pop de
+ pop bc
+ ld a, [wd265]
+ ld [de], a
+ inc de ; wc80f
+ call CloseSRAM
+ call Random
+ and $1
+ ld [de], a
+ inc de ; wc810
+ call .RandomSample
+ ld [de], a
+ inc de ; wc811
+ ld a, c
+ ld c, b
+ ld b, a
+ call .RandomSample
+ ld [de], a
+ inc de ; wc812
+ 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, wMysteryGiftStaging
+ ld de, wMysteryGiftPlayerData
+ ld bc, wMysteryGiftPlayerDataEnd - wMysteryGiftPlayerData
+ jp CopyBytes
+
+.RandomSample: ; 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, MysteryGiftFallbackItem
+ ld hl, MysteryGiftItems
+ ld b, 0
+ add hl, bc
+ ld c, [hl]
+ ret
+
+MysteryGiftGetDecoration: ; 2c715 (b:4715)
+ ld a, c
+ cp $25 ; 37
+ jr nc, MysteryGiftFallbackItem
+ ld hl, MysteryGiftDecos
+ ld b, 0
+ add hl, bc
+ ld c, [hl]
+ ret
+
+MysteryGiftFallbackItem: ; 2c722 (b:4722)
+ ld c, DECO_POLKADOT_BED ; GREAT_BALL
+ ret
+; 2c725 (b:4725)
+
+MysteryGiftItems: ; 2c725
+ 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
+
+MysteryGiftDecos: ; 2c74a
+ 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
diff --git a/engine/namingscreen.asm b/engine/namingscreen.asm
index 93cd97199..f36e9b5eb 100755
--- a/engine/namingscreen.asm
+++ b/engine/namingscreen.asm
@@ -1,7 +1,7 @@
_NamingScreen: ; 0x116b7
call DisableSpriteUpdates
call NamingScreen
- call Function2b74
+ call ReturnToMapWithSpeechTextbox
ret
; 0x116c1
@@ -174,9 +174,9 @@ Function117f5: ; 117f5 (4:57f5)
ld [hli], a
ld [hl], a
depixel 4, 4, 4, 0
- ld a, SPRITE_ANIM_INDEX_0A
+ ld a, SPRITE_ANIM_INDEX_WALK_CYCLE
call _InitSpriteAnimStruct
- ld hl, $1
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], $0
hlcoord 5, 2
@@ -220,7 +220,7 @@ Function11847: ; 11847 (4:5847)
ld [hli], a
ld [hl], a
pop de
- ld b, SPRITE_ANIM_INDEX_0A
+ ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
ld a, d
cp $7a
jr nz, .asm_11873
@@ -338,14 +338,14 @@ Function11915: ; 11915
bit 7, a
jr nz, .asm_11930
call Function11968
- callba Function8cf62
+ callba PlaySpriteAnimationsAndDelayFrame
call Function11940
call DelayFrame
and a
ret
.asm_11930
- callab Function8cf53
+ callab ClearSpriteAnims
call ClearSprites
xor a
ld [hSCX], a
@@ -411,10 +411,10 @@ Function1197b: ; 1197b (4:597b)
ld [wc6d5], a
ld a, b
ld [wc6d6], a
- ld hl, $1
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld a, [hl]
- ld hl, $e
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld [hl], a
ld hl, wJumptableIndex
@@ -454,10 +454,10 @@ Function119a1: ; 119a1 (4:59a1)
ld c, [hl]
inc hl
ld b, [hl]
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $8
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $4
call Function1189c
@@ -497,7 +497,7 @@ Function11a0b: ; 11a0b (4:5a0b)
ld b, [hl]
Function11a11: ; 11a11 (4:5a11)
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
push bc
@@ -509,7 +509,7 @@ Function11a11: ; 11a11 (4:5a11)
cp b
pop bc
jr nz, .asm_11a39
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $3
@@ -530,12 +530,12 @@ Function11a11: ; 11a11 (4:5a11)
Function11a3b: ; 11a3b (4:5a3b)
call Function11a8b
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
ld e, a
swap e
- ld hl, $7
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], e
ld d, $4
@@ -550,19 +550,19 @@ Function11a3b: ; 11a3b (4:5a3b)
ld de, Unknown_11a82
ld a, $1
.asm_11a60
- ld hl, $e
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
add [hl]
- ld hl, $1
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], a
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld l, [hl]
ld h, $0
add hl, de
ld a, [hl]
- ld hl, $6
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
@@ -593,7 +593,7 @@ Function11a8b: ; 11a8b (4:5a8b)
call Function11a11
and a
jr nz, .asm_11ab7
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $8
@@ -611,7 +611,7 @@ Function11a8b: ; 11a8b (4:5a8b)
ld e, a
add a
add e
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], a
ret
@@ -619,7 +619,7 @@ Function11a8b: ; 11a8b (4:5a8b)
call Function11a11
and a
jr nz, .asm_11ad8
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
and a
@@ -640,12 +640,12 @@ endr
ld e, a
add a
add e
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], a
ret
.down
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
call Function1189c
@@ -663,7 +663,7 @@ endr
ld [hl], $0
ret
.up
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
and a
@@ -826,10 +826,10 @@ Function11c11: ; 11c11 (4:5c11)
ld c, [hl]
inc hl
ld b, [hl]
- ld hl, $6
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld a, [hl]
- ld hl, $4
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
add [hl]
sub $8
@@ -837,10 +837,10 @@ Function11c11: ; 11c11 (4:5c11)
srl a
srl a
ld e, a
- ld hl, $7
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld a, [hl]
- ld hl, $5
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
add [hl]
sub $10
@@ -866,7 +866,7 @@ Function11c11: ; 11c11 (4:5c11)
Function11c51: ; 11c51
call ClearSprites
- callab Function8cf53
+ callab ClearSpriteAnims
call LoadStandardFont
call LoadFontsExtra
@@ -898,9 +898,9 @@ Function11c51: ; 11c51
ld [hl], $7e
xor a
ld [hSCY], a
- ld [wc3bf], a
+ ld [wGlobalAnimYOffset], a
ld [hSCX], a
- ld [wc3c0], a
+ ld [wGlobalAnimXOffset], a
ld [wJumptableIndex], a
ld [wcf64], a
ld [hBGMapMode], a
diff --git a/engine/npc_movement.asm b/engine/npc_movement.asm
new file mode 100755
index 000000000..bc270305b
--- /dev/null
+++ b/engine/npc_movement.asm
@@ -0,0 +1,572 @@
+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
diff --git a/engine/npctrade.asm b/engine/npctrade.asm
index 71ab03ee3..3499a0134 100755
--- a/engine/npctrade.asm
+++ b/engine/npctrade.asm
@@ -40,7 +40,7 @@ NPCTrade:: ; fcba8
; Select givemon from party
ld b, 6
- callba Function5001d
+ callba SelectTradeOrDaycareMon
ld a, TRADE_CANCEL
jr c, .done
@@ -88,7 +88,7 @@ NPCTrade:: ; fcba8
ld [wcf64], a
pop af
ld [wJumptableIndex], a
- call Function2b74
+ call ReturnToMapWithSpeechTextbox
ret
; fcc23
@@ -100,23 +100,23 @@ CheckTradeGender: ; fcc23
call GetTradeAttribute
ld a, [hl]
and a
- jr z, .asm_fcc46
+ jr z, .matching
cp 1
- jr z, .asm_fcc3e
+ jr z, .check_male
callba GetGender
- jr nz, .asm_fcc48
- jr .asm_fcc46
+ jr nz, .not_matching
+ jr .matching
-.asm_fcc3e
+.check_male
callba GetGender
- jr z, .asm_fcc48
+ jr z, .not_matching
-.asm_fcc46
+.matching
and a
ret
-.asm_fcc48
+.not_matching
scf
ret
; fcc4a
@@ -211,7 +211,7 @@ DoNPCTrade: ; fcc63
xor a
ld [MonType], a
ld [wPokemonWithdrawDepositParameter], a
- callab Functione039
+ callab RemoveMonFromPartyOrBox
predef TryAddMonToParty
ld e, TRADE_DIALOG
@@ -219,9 +219,9 @@ DoNPCTrade: ; fcc63
ld a, [hl]
cp TRADE_COMPLETE
ld b, RESET_FLAG
- jr c, .asm_fcd1c
+ jr c, .incomplete
ld b, SET_FLAG
-.asm_fcd1c
+.incomplete
callba SetGiftPartyMonCaughtData
ld e, TRADE_NICK
@@ -291,7 +291,7 @@ DoNPCTrade: ; fcc63
ld a, [PartyCount]
dec a
ld [CurPartyMon], a
- callba Functione134
+ callba ComputeNPCTrademonStats
pop af
ld [CurPartyMon], a
pop hl
@@ -399,7 +399,7 @@ GetTradeMonNames: ; fce1b
ld a, [hl]
call GetTradeMonName
- ld de, wd050
+ ld de, wMonOrItemNameBuffer
call CopyTradeName
ld hl, StringBuffer1
diff --git a/engine/options_menu.asm b/engine/options_menu.asm
index ed2c21f30..2e8b0424b 100755
--- a/engine/options_menu.asm
+++ b/engine/options_menu.asm
@@ -47,7 +47,7 @@ _OptionsMenu: ; e41d0
jr c, .ExitOptions
.dpad
- call Functione455c
+ call Options_UpdateCursorPosition
ld c, 3
call DelayFrames
jr .joypad_loop
@@ -563,3 +563,20 @@ OptionsControl: ; e452a
scf
ret
; e455c
+
+Options_UpdateCursorPosition: ; e455c
+ hlcoord 1, 1
+ ld de, SCREEN_WIDTH
+ ld c, $10
+.loop
+ ld [hl], " "
+ add hl, de
+ dec c
+ jr nz, .loop
+ hlcoord 1, 2
+ ld bc, 2 * SCREEN_WIDTH
+ ld a, [wJumptableIndex]
+ call AddNTimes
+ ld [hl], "▶"
+ ret
+; e4579
diff --git a/engine/overworld.asm b/engine/overworld.asm
index fa4d02e7c..748ab4649 100755
--- a/engine/overworld.asm
+++ b/engine/overworld.asm
@@ -266,7 +266,7 @@ GetMonSprite: ; 14259
and a
jr z, .NoBreedmon
- callba Function8e82b
+ callba LoadOverworldMonIcon
ld l, 1
ld h, 0
diff --git a/engine/pack.asm b/engine/pack.asm
index 0b7d35ece..dc29a6994 100644
--- a/engine/pack.asm
+++ b/engine/pack.asm
@@ -1,181 +1,183 @@
-
Pack: ; 10000
ld hl, Options
set NO_TEXT_SCROLL, [hl]
- call Function1068a
+ call InitPackBuffers
.loop
call JoyTextDelay
ld a, [wJumptableIndex]
bit 7, a
jr nz, .done
- call Function10026
+ call .RunJumptable
call DelayFrame
jr .loop
.done
- ld a, [wcf65]
+ ld a, [wCurrPocket]
ld [wLastPocket], a
ld hl, Options
res NO_TEXT_SCROLL, [hl]
ret
; 10026
-Function10026: ; 10026
+.RunJumptable: ; 10026
ld a, [wJumptableIndex]
- ld hl, Jumptable_10030
- call Function1086b
+ ld hl, .Jumptable
+ call Pack_GetJumptablePointer
jp [hl]
-; 10030
-
-
-Jumptable_10030: ; 10030 (4:4030)
- dw Function10046
- dw Function10056
- dw Function10067
- dw Function10186
- dw Function10198
- dw Function10094
- dw Function100a6
- dw Function100d3
- dw Function100e8
- dw Function10874
- dw Function1087e
+; 10030
-Function10046: ; 10046 (4:4046)
+.Jumptable: ; 10030 (4:4030)
+ jumptable_start
+ jumptable .InitGFX ; 0
+ jumptable .InitItemsPocket ; 1
+ jumptable .ItemsPocketMenu ; 2
+ jumptable .InitBallsPocket ; 3
+ jumptable .BallsPocketMenu ; 4
+ jumptable .InitKeyItemsPocket ; 5
+ jumptable .KeyItemsPocketMenu ; 6
+ jumptable .InitTMHMPocket ; 7
+ jumptable .TMHMPocketMenu ; 8
+ jumptable Pack_QuitNoScript ; 9
+ jumptable Pack_QuitRunScript ; 10
+
+.InitGFX: ; 10046 (4:4046)
xor a
ld [hBGMapMode], a
- call Function10955
+ call Pack_InitGFX
ld a, [wcf64]
ld [wJumptableIndex], a
- call Function10a40
+ call Pack_InitColors
ret
-Function10056: ; 10056 (4:4056)
+.InitItemsPocket: ; 10056 (4:4056)
xor a
- ld [wcf65], a
+ ld [wCurrPocket], a
call ClearPocketList
call DrawPocketName
call WaitBGMap_DrawPackGFX
- call Function10866
+ call Pack_JumptableNext
ret
-Function10067: ; 10067 (4:4067)
- ld hl, MenuDataHeader_0x10a4f
+.ItemsPocketMenu: ; 10067 (4:4067)
+ ld hl, ItemsPocketMenuDataHeader
call CopyMenuDataHeader
ld a, [wItemsPocketCursor]
ld [wMenuCursorBuffer], a
ld a, [wItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wItemsPocketCursor], a
ld b, $7
ld c, $3
- call Function108d4
+ call Pack_InterpretJoypad
ret c
- call Function101c5
+ call .ItemBallsKey_LoadSubmenu
ret
-Function10094: ; 10094 (4:4094)
+.InitKeyItemsPocket: ; 10094 (4:4094)
ld a, $2
- ld [wcf65], a
+ ld [wCurrPocket], a
call ClearPocketList
call DrawPocketName
call WaitBGMap_DrawPackGFX
- call Function10866
+ call Pack_JumptableNext
ret
-Function100a6: ; 100a6 (4:40a6)
- ld hl, MenuDataHeader_0x10a7f
+.KeyItemsPocketMenu: ; 100a6 (4:40a6)
+ ld hl, KeyItemsPocketMenuDataHeader
call CopyMenuDataHeader
ld a, [wKeyItemsPocketCursor]
ld [wMenuCursorBuffer], a
ld a, [wKeyItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wKeyItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wKeyItemsPocketCursor], a
ld b, $3
ld c, $7
- call Function108d4
+ call Pack_InterpretJoypad
ret c
- call Function101c5
+ call .ItemBallsKey_LoadSubmenu
ret
-Function100d3: ; 100d3 (4:40d3)
+.InitTMHMPocket: ; 100d3 (4:40d3)
ld a, $3
- ld [wcf65], a
+ ld [wCurrPocket], a
call ClearPocketList
call DrawPocketName
xor a
ld [hBGMapMode], a
call WaitBGMap_DrawPackGFX
- call Function10866
+ call Pack_JumptableNext
ret
-Function100e8: ; 100e8 (4:40e8)
- callba Function2c76f
+.TMHMPocketMenu: ; 100e8 (4:40e8)
+ callba TMHMPocket
ld b, $5
ld c, $1
- call Function108d4
+ call Pack_InterpretJoypad
ret c
callba _CheckTossableItem
ld a, [wItemAttributeParamBuffer]
and a
- jr nz, .asm_1010a
- ld hl, MenuDataHeader_0x1013b
- ld de, Jumptable_10153
- jr .asm_10110
-.asm_1010a
- ld hl, MenuDataHeader_0x10124
- ld de, Jumptable_10137
-.asm_10110
+ jr nz, .use_quit
+ ld hl, .MenuDataHeader2
+ ld de, .Jumptable2
+ jr .load_jump
+
+.use_quit
+ ld hl, .MenuDataHeader1
+ ld de, .Jumptable1
+.load_jump
push de
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
pop hl
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
- call Function1086b
+ call Pack_GetJumptablePointer
jp [hl]
-; 10124 (4:4124)
-MenuDataHeader_0x10124: ; 0x10124
+; 10124 (4:4124)
+.MenuDataHeader1: ; 0x10124
db $40 ; flags
db 07, 13 ; start coords
db 11, 19 ; end coords
- dw MenuData2_0x1012c
+ dw .MenuData2_1
db 1 ; default option
; 0x1012c
-MenuData2_0x1012c: ; 0x1012c
+.MenuData2_1: ; 0x1012c
db $c0 ; flags
db 2 ; items
db "USE@"
db "QUIT@"
; 0x10137
-Jumptable_10137: ; 10137
- dw Function10159
- dw QuitItemSubmenu
+.Jumptable1: ; 10137
+ jumptable_start
+ jumptable .UseItem
+ jumptable QuitItemSubmenu
+
; 1013b
-MenuDataHeader_0x1013b: ; 0x1013b
+.MenuDataHeader2: ; 0x1013b
db $40 ; flags
db 05, 13 ; start coords
db 11, 19 ; end coords
- dw MenuData2_0x10143
+ dw .MenuData2_2
db 1 ; default option
; 0x10143
-MenuData2_0x10143: ; 0x10143
+.MenuData2_2: ; 0x10143
db $c0 ; flags
db 3 ; items
db "USE@"
@@ -183,61 +185,61 @@ MenuData2_0x10143: ; 0x10143
db "QUIT@"
; 0x10153
-Jumptable_10153: ; 10153
- dw Function10159
+.Jumptable2: ; 10153
+ dw .UseItem
dw GiveItem
dw QuitItemSubmenu
; 10159
-Function10159: ; 10159
- callba Function2c7bf
+.UseItem: ; 10159
+ callba AskTeachTMHM
ret c
- callba Function2c7fb
- jr c, .asm_10179
+ callba ChooseMonToLearnTMHM
+ jr c, .declined
ld hl, Options
ld a, [hl]
push af
- res 4, [hl]
- callba Function2c867
+ res NO_TEXT_SCROLL, [hl]
+ callba TeachTMHM
pop af
ld [Options], a
-.asm_10179
+.declined
xor a
ld [hBGMapMode], a
- call Function10955
+ call Pack_InitGFX
call WaitBGMap_DrawPackGFX
- call Function10a40
+ call Pack_InitColors
ret
-Function10186: ; 10186 (4:4186)
+.InitBallsPocket: ; 10186 (4:4186)
ld a, $1
- ld [wcf65], a
+ ld [wCurrPocket], a
call ClearPocketList
call DrawPocketName
call WaitBGMap_DrawPackGFX
- call Function10866
+ call Pack_JumptableNext
ret
-Function10198: ; 10198 (4:4198)
- ld hl, MenuDataHeader_0x10aaf
+.BallsPocketMenu: ; 10198 (4:4198)
+ ld hl, BallsPocketMenuDataHeader
call CopyMenuDataHeader
ld a, [wBallsPocketCursor]
ld [wMenuCursorBuffer], a
ld a, [wBallsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wBallsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wBallsPocketCursor], a
ld b, $1
ld c, $5
- call Function108d4
+ call Pack_InterpretJoypad
ret c
- call Function101c5
+ call .ItemBallsKey_LoadSubmenu
ret
-Function101c5: ; 101c5 (4:41c5)
+.ItemBallsKey_LoadSubmenu: ; 101c5 (4:41c5)
callba _CheckTossableItem
ld a, [wItemAttributeParamBuffer]
and a
@@ -268,45 +270,45 @@ Function101c5: ; 101c5 (4:41c5)
.usable
ld hl, MenuDataHeader_UsableKeyItem
- ld de, Jumptable_1026a
+ ld de, Jumptable_UseGiveTossRegisterQuit
jr .build_menu
.selectable_usable
ld hl, MenuDataHeader_UsableItem
- ld de, Jumptable_10291
+ ld de, Jumptable_UseGiveTossQuit
jr .build_menu
.tossable_selectable
ld hl, MenuDataHeader_UnusableItem
- ld de, Jumptable_102ac
+ ld de, Jumptable_UseQuit
jr .build_menu
.tossable_unselectable
ld hl, MenuDataHeader_UnusableKeyItem
- ld de, Jumptable_102c7
+ ld de, Jumptable_UseRegisterQuit
jr .build_menu
.unusable
ld hl, MenuDataHeader_HoldableKeyItem
- ld de, Jumptable_102ea
+ ld de, Jumptable_GiveTossRegisterQuit
jr .build_menu
.selectable_unusable
ld hl, MenuDataHeader_HoldableItem
- ld de, Jumptable_1030b
+ ld de, Jumptable_GiveTossQuit
.build_menu
push de
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
pop hl
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
- call Function1086b
+ call Pack_GetJumptablePointer
jp [hl]
-; 10249 (4:4249)
+; 10249 (4:4249)
MenuDataHeader_UsableKeyItem: ; 0x10249
db $40 ; flags
db 01, 13 ; start coords
@@ -325,12 +327,13 @@ MenuDataHeader_UsableKeyItem: ; 0x10249
db "QUIT@"
; 0x1026a
-Jumptable_1026a: ; 1026a
- dw UseItem
- dw GiveItem
- dw TossMenu
- dw RegisterItem
- dw QuitItemSubmenu
+Jumptable_UseGiveTossRegisterQuit: ; 1026a
+ jumptable_start
+ jumptable UseItem
+ jumptable GiveItem
+ jumptable TossMenu
+ jumptable RegisterItem
+ jumptable QuitItemSubmenu
; 10274
MenuDataHeader_UsableItem: ; 0x10274
@@ -350,11 +353,12 @@ MenuDataHeader_UsableItem: ; 0x10274
db "QUIT@"
; 0x10291
-Jumptable_10291: ; 10291
- dw UseItem
- dw GiveItem
- dw TossMenu
- dw QuitItemSubmenu
+Jumptable_UseGiveTossQuit: ; 10291
+ jumptable_start
+ jumptable UseItem
+ jumptable GiveItem
+ jumptable TossMenu
+ jumptable QuitItemSubmenu
; 10299
MenuDataHeader_UnusableItem: ; 0x10299
@@ -372,9 +376,10 @@ MenuDataHeader_UnusableItem: ; 0x10299
db "QUIT@"
; 0x102ac
-Jumptable_102ac: ; 102ac
- dw UseItem
- dw QuitItemSubmenu
+Jumptable_UseQuit: ; 102ac
+ jumptable_start
+ jumptable UseItem
+ jumptable QuitItemSubmenu
; 102b0
MenuDataHeader_UnusableKeyItem: ; 0x102b0
@@ -393,10 +398,11 @@ MenuDataHeader_UnusableKeyItem: ; 0x102b0
db "QUIT@"
; 0x102c7
-Jumptable_102c7: ; 102c7
- dw UseItem
- dw RegisterItem
- dw QuitItemSubmenu
+Jumptable_UseRegisterQuit: ; 102c7
+ jumptable_start
+ jumptable UseItem
+ jumptable RegisterItem
+ jumptable QuitItemSubmenu
; 102cd
MenuDataHeader_HoldableKeyItem: ; 0x102cd
@@ -416,11 +422,12 @@ MenuDataHeader_HoldableKeyItem: ; 0x102cd
db "QUIT@"
; 0x102ea
-Jumptable_102ea: ; 102ea
- dw GiveItem
- dw TossMenu
- dw RegisterItem
- dw QuitItemSubmenu
+Jumptable_GiveTossRegisterQuit: ; 102ea
+ jumptable_start
+ jumptable GiveItem
+ jumptable TossMenu
+ jumptable RegisterItem
+ jumptable QuitItemSubmenu
; 102f2
MenuDataHeader_HoldableItem: ; 0x102f2
@@ -439,10 +446,12 @@ MenuDataHeader_HoldableItem: ; 0x102f2
db "QUIT@"
; 0x1030b
-Jumptable_1030b: ; 1030b
- dw GiveItem
- dw TossMenu
- dw QuitItemSubmenu
+Jumptable_GiveTossQuit: ; 1030b
+ jumptable_start
+ jumptable GiveItem
+ jumptable TossMenu
+ jumptable QuitItemSubmenu
+
; 10311
UseItem: ; 10311
@@ -454,18 +463,19 @@ UseItem: ; 10311
; 1031f
.jumptable: ; 1031f (4:431f)
- dw .Oak
- dw .Oak
- dw .Oak
- dw .Oak
- dw .Current
- dw .Party
- dw .Field
+ jumptable_start
+ jumptable .Oak
+ jumptable .Oak
+ jumptable .Oak
+ jumptable .Oak
+ jumptable .Current
+ jumptable .Party
+ jumptable .Field
; 1035c
.Oak: ; 1032d (4:432d)
ld hl, Text_ThisIsntTheTime
- call Function10889
+ call Pack_PrintTextNoScroll
ret
.Current: ; 10334 (4:4334)
@@ -479,29 +489,29 @@ UseItem: ; 10311
call DoItemEffect
xor a
ld [hBGMapMode], a
- call Function10955
+ call Pack_InitGFX
call WaitBGMap_DrawPackGFX
- call Function10a40
+ call Pack_InitColors
ret
+
.NoPokemon
ld hl, TextJump_YouDontHaveAPkmn
- call Function10889
+ call Pack_PrintTextNoScroll
ret
.Field: ; 10355 (4:4355)
call DoItemEffect
- ld a, [wd0ec]
+ ld a, [wItemEffectSucceeded]
and a
jr z, .Oak
ld a, $a
ld [wJumptableIndex], a
ret
; 10364 (4:4364)
-
TossMenu: ; 10364
ld hl, Text_ThrowAwayHowMany
- call Function10889
- callba Function24fbf
+ call Pack_PrintTextNoScroll
+ callba SelectQuantityToToss
push af
call ExitMenu
pop af
@@ -515,39 +525,39 @@ TossMenu: ; 10364
pop af
jr c, .finish
ld hl, NumItems
- ld a, [ItemCountBuffer]
+ ld a, [CurItemQuantity]
call TossItem
call Pack_GetItemName
ld hl, Text_ThrewAway
- call Function10889
-
+ call Pack_PrintTextNoScroll
.finish
ret
; 1039d
Function1039d: ; 1039d
- ld a, [wcf65]
+; unreferenced
+ ld a, [wCurrPocket]
and a
- jr z, .asm_103b2
+ jr z, .items
dec a
- jr z, .asm_103aa
+ jr z, .balls
dec a
- jr z, .asm_103ba
+ jr z, .key
ret
-.asm_103aa
+.balls
xor a
ld [wBallsPocketCursor], a
ld [wBallsPocketScrollPosition], a
ret
-.asm_103b2
+.items
xor a
ld [wItemsPocketCursor], a
ld [wItemsPocketScrollPosition], a
ret
-.asm_103ba
+.key
xor a
ld [wKeyItemsPocketCursor], a
ld [wKeyItemsPocketScrollPosition], a
@@ -558,13 +568,13 @@ RegisterItem: ; 103c2
callba CheckSelectableItem
ld a, [wItemAttributeParamBuffer]
and a
- jr nz, .asm_103f6
- ld a, [wcf65]
+ jr nz, .cant_register
+ ld a, [wCurrPocket]
rrca
rrca
and $c0
ld b, a
- ld a, [ItemCountBuffer]
+ ld a, [CurItemQuantity]
inc a
and $3f
or b
@@ -575,22 +585,22 @@ RegisterItem: ; 103c2
ld de, SFX_FULL_HEAL
call WaitPlaySFX
ld hl, Text_RegisteredItem
- call Function10889
+ call Pack_PrintTextNoScroll
ret
-.asm_103f6
+.cant_register
ld hl, Text_CantRegister
- call Function10889
+ call Pack_PrintTextNoScroll
ret
; 103fd
GiveItem: ; 103fd
ld a, [PartyCount]
and a
- jp z, Function10486
+ jp z, .NoPokemon
ld a, [Options]
push af
- res 4, a
+ res NO_TEXT_SCROLL, a
ld [Options], a
ld a, $8
ld [PartyMenuActionText], a
@@ -598,55 +608,52 @@ GiveItem: ; 103fd
callba LoadPartyMenuGFX
callba InitPartyMenuWithCancel
callba InitPartyMenuGFX
-.asm_10427
+.loop
callba WritePartyMenuTilemap
callba PrintPartyMenuText
call WaitBGMap
call SetPalettes
call DelayFrame
callba PartyMenuSelect
- jr c, .asm_10475
-
+ jr c, .finish
ld a, [CurPartySpecies]
cp EGG
- jr nz, .asm_10453
-
- ld hl, TextJump_AnEGGCantHoldAnItem
+ jr nz, .give
+ ld hl, .Egg
call PrintText
- jr .asm_10427
+ jr .loop
-.asm_10453
+.give
ld a, [wJumptableIndex]
push af
ld a, [wcf64]
push af
call GetCurNick
ld hl, StringBuffer1
- ld de, wd050
+ ld de, wMonOrItemNameBuffer
ld bc, PKMN_NAME_LENGTH
call CopyBytes
- call Function12bd9
+ call TryGiveItemToPartymon
pop af
ld [wcf64], a
pop af
ld [wJumptableIndex], a
-.asm_10475
+.finish
pop af
ld [Options], a
xor a
ld [hBGMapMode], a
- call Function10955
+ call Pack_InitGFX
call WaitBGMap_DrawPackGFX
- call Function10a40
+ call Pack_InitColors
ret
-Function10486: ; 10486 (4:4486)
+.NoPokemon: ; 10486 (4:4486)
ld hl, TextJump_YouDontHaveAPkmn
- call Function10889
+ call Pack_PrintTextNoScroll
ret
; 1048d (4:448d)
-
-TextJump_AnEGGCantHoldAnItem: ; 0x1048d
+.Egg: ; 0x1048d
; An EGG can't hold an item.
text_jump Text_AnEGGCantHoldAnItem
db "@"
@@ -656,192 +663,191 @@ QuitItemSubmenu: ; 10492
ret
; 10493
-
BattlePack: ; 10493
ld hl, Options
- set 4, [hl]
- call Function1068a
+ set NO_TEXT_SCROLL, [hl]
+ call InitPackBuffers
.loop
call JoyTextDelay
ld a, [wJumptableIndex]
bit 7, a
jr nz, .end
- call Function104b9
+ call .RunJumptable
call DelayFrame
jr .loop
.end
- ld a, [wcf65]
+ ld a, [wCurrPocket]
ld [wLastPocket], a
ld hl, Options
- res 4, [hl]
+ res NO_TEXT_SCROLL, [hl]
ret
; 104b9
-Function104b9: ; 104b9
+.RunJumptable: ; 104b9
ld a, [wJumptableIndex]
- ld hl, Jumptable_104c3
- call Function1086b
+ ld hl, .Jumptable
+ call Pack_GetJumptablePointer
jp [hl]
-; 104c3
-
-
-Jumptable_104c3: ; 104c3 (4:44c3)
- dw Function104d9
- dw Function104e9
- dw Function104fa
- dw Function10594
- dw Function105a6
- dw Function10527
- dw Function10539
- dw Function10566
- dw Function10581
- dw Function10874
- dw Function1087e
+; 104c3
-Function104d9: ; 104d9 (4:44d9)
+.Jumptable: ; 104c3 (4:44c3)
+ jumptable_start
+ jumptable .InitGFX ; 0
+ jumptable .InitItemsPocket ; 1
+ jumptable .ItemsPocketMenu ; 2
+ jumptable .InitBallsPocket ; 3
+ jumptable .BallsPocketMenu ; 4
+ jumptable .InitKeyItemsPocket ; 5
+ jumptable .KeyItemsPocketMenu ; 6
+ jumptable .InitTMHMPocket ; 7
+ jumptable .TMHMPocketMenu ; 8
+ jumptable Pack_QuitNoScript ; 9
+ jumptable Pack_QuitRunScript ; 10
+
+.InitGFX: ; 104d9 (4:44d9)
xor a
ld [hBGMapMode], a
- call Function10955
+ call Pack_InitGFX
ld a, [wcf64]
ld [wJumptableIndex], a
- call Function10a40
+ call Pack_InitColors
ret
-Function104e9: ; 104e9 (4:44e9)
+.InitItemsPocket: ; 104e9 (4:44e9)
xor a
- ld [wcf65], a
+ ld [wCurrPocket], a
call ClearPocketList
call DrawPocketName
call WaitBGMap_DrawPackGFX
- call Function10866
+ call Pack_JumptableNext
ret
-Function104fa: ; 104fa (4:44fa)
- ld hl, MenuDataHeader_0x10a4f
+.ItemsPocketMenu: ; 104fa (4:44fa)
+ ld hl, ItemsPocketMenuDataHeader
call CopyMenuDataHeader
ld a, [wItemsPocketCursor]
ld [wMenuCursorBuffer], a
ld a, [wItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wItemsPocketCursor], a
ld b, $7
ld c, $3
- call Function108d4
+ call Pack_InterpretJoypad
ret c
- call Function105d3
+ call ItemSubmenu
ret
-Function10527: ; 10527 (4:4527)
+.InitKeyItemsPocket: ; 10527 (4:4527)
ld a, $2
- ld [wcf65], a
+ ld [wCurrPocket], a
call ClearPocketList
call DrawPocketName
call WaitBGMap_DrawPackGFX
- call Function10866
+ call Pack_JumptableNext
ret
-Function10539: ; 10539 (4:4539)
- ld hl, MenuDataHeader_0x10a7f
+.KeyItemsPocketMenu: ; 10539 (4:4539)
+ ld hl, KeyItemsPocketMenuDataHeader
call CopyMenuDataHeader
ld a, [wKeyItemsPocketCursor]
ld [wMenuCursorBuffer], a
ld a, [wKeyItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wKeyItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wKeyItemsPocketCursor], a
ld b, $3
ld c, $7
- call Function108d4
+ call Pack_InterpretJoypad
ret c
- call Function105d3
+ call ItemSubmenu
ret
-Function10566: ; 10566 (4:4566)
+.InitTMHMPocket: ; 10566 (4:4566)
ld a, $3
- ld [wcf65], a
+ ld [wCurrPocket], a
call ClearPocketList
call DrawPocketName
xor a
ld [hBGMapMode], a
call WaitBGMap_DrawPackGFX
ld hl, Text_PackEmptyString
- call Function10889
- call Function10866
+ call Pack_PrintTextNoScroll
+ call Pack_JumptableNext
ret
-Function10581: ; 10581 (4:4581)
- callba Function2c76f
+.TMHMPocketMenu: ; 10581 (4:4581)
+ callba TMHMPocket
ld b, $5
ld c, $1
- call Function108d4
+ call Pack_InterpretJoypad
ret c
xor a
- call Function105dc
+ call TMHMSubmenu
ret
-Function10594: ; 10594 (4:4594)
+.InitBallsPocket: ; 10594 (4:4594)
ld a, $1
- ld [wcf65], a
+ ld [wCurrPocket], a
call ClearPocketList
call DrawPocketName
call WaitBGMap_DrawPackGFX
- call Function10866
+ call Pack_JumptableNext
ret
-Function105a6: ; 105a6 (4:45a6)
- ld hl, MenuDataHeader_0x10aaf
+.BallsPocketMenu: ; 105a6 (4:45a6)
+ ld hl, BallsPocketMenuDataHeader
call CopyMenuDataHeader
ld a, [wBallsPocketCursor]
ld [wMenuCursorBuffer], a
ld a, [wBallsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wBallsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wBallsPocketCursor], a
ld b, $1
ld c, $5
- call Function108d4
+ call Pack_InterpretJoypad
ret c
- call Function105d3
+ call ItemSubmenu
ret
-Function105d3: ; 105d3 (4:45d3)
+ItemSubmenu: ; 105d3 (4:45d3)
callba CheckItemContext
ld a, [wItemAttributeParamBuffer]
-
-Function105dc: ; 105dc (4:45dc)
+TMHMSubmenu: ; 105dc (4:45dc)
and a
jr z, .NoUse
ld hl, .UsableMenuDataHeader
ld de, .UsableJumptable
jr .proceed
+
.NoUse
ld hl, .UnusableMenuDataHeader
ld de, .UnusableJumptable
.proceed
push de
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
pop hl
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
- call Function1086b
+ call Pack_GetJumptablePointer
jp [hl]
-; 10601 (4:4601)
+; 10601 (4:4601)
.UsableMenuDataHeader: ; 0x10601
db $40 ; flags
db 07, 13 ; start coords
@@ -858,8 +864,9 @@ Function105dc: ; 105dc (4:45dc)
; 0x10614
.UsableJumptable: ; 10614
- dw .Use
- dw .Quit
+ jumptable_start
+ jumptable .Use
+ jumptable .Quit
; 10618
.UnusableMenuDataHeader: ; 0x10618
@@ -877,7 +884,8 @@ Function105dc: ; 105dc (4:45dc)
; 0x10627
.UnusableJumptable: ; 10627
- dw .Quit
+ jumptable_start
+ jumptable .Quit
; 10629
.Use: ; 10629
@@ -888,72 +896,70 @@ Function105dc: ; 105dc (4:45dc)
ret
.ItemFunctionJumptable: ; 10637 (4:4637)
- dw .Oak
- dw .Oak
- dw .Oak
- dw .Oak
- dw .Unused
- dw .BattleField
- dw .BattleOnly
-
+ jumptable_start
+ jumptable .Oak
+ jumptable .Oak
+ jumptable .Oak
+ jumptable .Oak
+ jumptable .Unused
+ jumptable .BattleField
+ jumptable .BattleOnly
.Oak: ; 10645 (4:4645)
ld hl, Text_ThisIsntTheTime
- call Function10889
+ call Pack_PrintTextNoScroll
ret
.Unused: ; 1064c (4:464c)
call DoItemEffect
- ld a, [wd0ec]
+ ld a, [wItemEffectSucceeded]
and a
- jr nz, .asm_1066c
+ jr nz, .ReturnToBattle
ret
.BattleField: ; 10656 (4:4656)
call DoItemEffect
- ld a, [wd0ec]
+ ld a, [wItemEffectSucceeded]
and a
- jr nz, .asm_1067e
+ jr nz, .quit_run_script
xor a
ld [hBGMapMode], a
- call Function10955
+ call Pack_InitGFX
call WaitBGMap_DrawPackGFX
- call Function10a40
+ call Pack_InitColors
ret
-.asm_1066c: ; 1066c (4:466c)
+.ReturnToBattle: ; 1066c (4:466c)
call ClearBGPalettes
- jr .asm_1067e
+ jr .quit_run_script
.BattleOnly: ; 10671 (4:4671)
call DoItemEffect
- ld a, [wd0ec]
+ ld a, [wItemEffectSucceeded]
and a
jr z, .Oak
cp $2
- jr z, .asm_10684
-.asm_1067e: ; 1067e (4:467e)
- ld a, $a
+ jr z, .didnt_use_item
+.quit_run_script: ; 1067e (4:467e)
+ ld a, Pack_QuitRunScriptTableIndex
ld [wJumptableIndex], a
ret
-.asm_10684: ; 10684 (4:4684)
+.didnt_use_item: ; 10684 (4:4684)
xor a
- ld [wd0ec], a
+ ld [wItemEffectSucceeded], a
ret
; 10689 (4:4689)
-
.Quit: ; 10689
ret
; 1068a
-
-Function1068a: ; 1068a
+InitPackBuffers: ; 1068a
xor a
ld [wJumptableIndex], a
ld a, [wLastPocket]
and $3
- ld [wcf65], a
+ ld [wCurrPocket], a
inc a
add a
dec a
@@ -961,75 +967,74 @@ Function1068a: ; 1068a
xor a
ld [wcf66], a
xor a
- ld [wd0e3], a
+ ld [wSwitchItem], a
ret
; 106a5
-Function106a5: ; 106a5
+DepositSellInitPackBuffers: ; 106a5
xor a
ld [hBGMapMode], a
ld [wJumptableIndex], a
ld [wcf64], a
- ld [wcf65], a
+ ld [wCurrPocket], a
ld [wcf66], a
- ld [wd0e3], a
- call Function10955
- call Function10a40
+ ld [wSwitchItem], a
+ call Pack_InitGFX
+ call Pack_InitColors
ret
; 106be
-Function106be: ; 106be
-.asm_106be
- call Function106c7
- call Function1076f
- jr c, .asm_106be
+DepositSellPack: ; 106be
+.loop
+ call .RunJumptable
+ call DepositSellTutorial_InterpretJoypad
+ jr c, .loop
ret
; 106c7
-Function106c7: ; 106c7
+.RunJumptable: ; 106c7
ld a, [wJumptableIndex]
- ld hl, Jumptable_106d1
- call Function1086b
+ ld hl, .Jumptable
+ call Pack_GetJumptablePointer
jp [hl]
-; 106d1
-
-
-Jumptable_106d1: ; 106d1 (4:46d1)
- dw .ItemsPocket
- dw .BallsPocket
- dw .KeyItemsPocket
- dw .TMHMPocket
+; 106d1
+.Jumptable: ; 106d1 (4:46d1)
+ jumptable_start
+ jumptable .ItemsPocket
+ jumptable .BallsPocket
+ jumptable .KeyItemsPocket
+ jumptable .TMHMPocket
.ItemsPocket: ; 106d9 (4:46d9)
xor a
call InitPocket
- ld hl, MenuDataHeader_0x10a67
+ ld hl, PC_Mart_ItemsPocketMenuDataHeader
call CopyMenuDataHeader
ld a, [wItemsPocketCursor]
ld [wMenuCursorBuffer], a
ld a, [wItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wItemsPocketCursor], a
ret
.KeyItemsPocket: ; 106ff (4:46ff)
ld a, 2
call InitPocket
- ld hl, MenuDataHeader_0x10a97
+ ld hl, PC_Mart_KeyItemsPocketMenuDataHeader
call CopyMenuDataHeader
ld a, [wKeyItemsPocketCursor]
ld [wMenuCursorBuffer], a
ld a, [wKeyItemsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wKeyItemsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wKeyItemsPocketCursor], a
ret
@@ -1037,7 +1042,7 @@ Jumptable_106d1: ; 106d1 (4:46d1)
ld a, 3
call InitPocket
call WaitBGMap_DrawPackGFX
- callba Function2c76f
+ callba TMHMPocket
ld a, [CurItem]
ld [CurItem], a
ret
@@ -1045,75 +1050,74 @@ Jumptable_106d1: ; 106d1 (4:46d1)
.BallsPocket: ; 1073b (4:473b)
ld a, 1
call InitPocket
- ld hl, MenuDataHeader_0x10ac7
+ ld hl, PC_Mart_BallsPocketMenuDataHeader
call CopyMenuDataHeader
ld a, [wBallsPocketCursor]
ld [wMenuCursorBuffer], a
ld a, [wBallsPocketScrollPosition]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wBallsPocketScrollPosition], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wBallsPocketCursor], a
ret
InitPocket: ; 10762 (4:4762)
- ld [wcf65], a
+ ld [wCurrPocket], a
call ClearPocketList
call DrawPocketName
call WaitBGMap_DrawPackGFX
ret
-
-Function1076f: ; 1076f
- ld hl, wcf73
+DepositSellTutorial_InterpretJoypad: ; 1076f
+ ld hl, wMenuJoypad
ld a, [hl]
- and $1
- jr nz, .asm_10788
+ and A_BUTTON
+ jr nz, .a_button
ld a, [hl]
- and $2
- jr nz, .asm_1078f
+ and B_BUTTON
+ jr nz, .b_button
ld a, [hl]
- and $20
- jr nz, .asm_10795
+ and D_LEFT
+ jr nz, .d_left
ld a, [hl]
- and $10
- jr nz, .asm_107a8
+ and D_RIGHT
+ jr nz, .d_right
scf
ret
-.asm_10788
- ld a, $1
+.a_button
+ ld a, TRUE
ld [wcf66], a
and a
ret
-.asm_1078f
+.b_button
xor a
ld [wcf66], a
and a
ret
-.asm_10795
+.d_left
ld a, [wJumptableIndex]
dec a
and $3
ld [wJumptableIndex], a
push de
- ld de, SFX_UNKNOWN_62
+ ld de, SFX_SWITCH_POCKETS
call PlaySFX
pop de
scf
ret
-.asm_107a8
+.d_right
ld a, [wJumptableIndex]
inc a
and $3
ld [wJumptableIndex], a
push de
- ld de, SFX_UNKNOWN_62
+ ld de, SFX_SWITCH_POCKETS
call PlaySFX
pop de
scf
@@ -1121,131 +1125,130 @@ Function1076f: ; 1076f
; 107bb
TutorialPack: ; 107bb
- call Function106a5
+ call DepositSellInitPackBuffers
ld a, [InputType]
or a
jr z, .loop
callba _DudeAutoInput_RightA
-
.loop
- call Function107d7
- call Function1076f
+ call .RunJumptable
+ call DepositSellTutorial_InterpretJoypad
jr c, .loop
xor a
ld [wcf66], a
ret
; 107d7
-Function107d7: ; 107d7
+.RunJumptable: ; 107d7
ld a, [wJumptableIndex]
ld hl, .jumptable
- call Function1086b
+ call Pack_GetJumptablePointer
jp [hl]
-; 107e1
+; 107e1
.jumptable: ; 107e1 (4:47e1)
- dw Function107e9
- dw Function1083b
- dw Function10807
- dw Function10826
+ jumptable_start
+ jumptable .Items
+ jumptable .Balls
+ jumptable .KeyItems
+ jumptable .TMHM
-
-Function107e9: ; 107e9 (4:47e9)
+.Items: ; 107e9 (4:47e9)
xor a
- ld hl, MenuDataHeader_0x107ef
- jr Function1085a
-; 107ef (4:47ef)
+ ld hl, .ItemsMenuDataHeader
+ jr .DisplayPocket
-MenuDataHeader_0x107ef: ; 0x107ef
+; 107ef (4:47ef)
+.ItemsMenuDataHeader: ; 0x107ef
db $40 ; flags
db 01, 07 ; start coords
db 11, 19 ; end coords
- dw .MenuData2
+ dw .ItemsMenuData2
db 1 ; default option
; 0x107f7
-.MenuData2: ; 0x107f7
+.ItemsMenuData2: ; 0x107f7
db $ae ; flags
db 5, 8 ; rows, columns
db 2 ; horizontal spacing
- dbw 0, OTPartyMons
+ dbw 0, wDudeNumItems
dba PlaceMenuItemName
dba PlaceMenuItemQuantity
dba UpdateItemDescription
; 10807
-Function10807: ; 10807 (4:4807)
+.KeyItems: ; 10807 (4:4807)
ld a, 2
- ld hl, MenuDataHeader_0x1080e
- jr Function1085a
-; 1080e (4:480e)
+ ld hl, .KeyItemsMenuDataHeader
+ jr .DisplayPocket
-MenuDataHeader_0x1080e: ; 0x1080e
+; 1080e (4:480e)
+.KeyItemsMenuDataHeader: ; 0x1080e
db $40 ; flags
db 01, 07 ; start coords
db 11, 19 ; end coords
- dw .MenuData2
+ dw .KeyItemsMenuData2
db 1 ; default option
; 0x10816
-.MenuData2: ; 0x10816
+.KeyItemsMenuData2: ; 0x10816
db $ae ; flags
db 5, 8 ; rows, columns
db 1 ; horizontal spacing
- dbw 0, OTPartyMon1Exp + 2
+ dbw 0, wDudeNumKeyItems
dba PlaceMenuItemName
dba PlaceMenuItemQuantity
dba UpdateItemDescription
; 10826
-Function10826: ; 10826 (4:4826)
+.TMHM: ; 10826 (4:4826)
ld a, 3
call InitPocket
call WaitBGMap_DrawPackGFX
- callba Function2c76f
+ callba TMHMPocket
ld a, [CurItem]
ld [CurItem], a
ret
-Function1083b: ; 1083b (4:483b)
+.Balls: ; 1083b (4:483b)
ld a, 1
- ld hl, MenuDataHeader_0x10842
- jr Function1085a
-; 10842 (4:4842)
+ ld hl, .BallsMenuDataHeader
+ jr .DisplayPocket
-MenuDataHeader_0x10842: ; 0x10842
+; 10842 (4:4842)
+.BallsMenuDataHeader: ; 0x10842
db $40 ; flags
db 01, 07 ; start coords
db 11, 19 ; end coords
- dw .MenuData2
+ dw .BallsMenuData2
db 1 ; default option
; 0x1084a
-.MenuData2: ; 0x1084a
+.BallsMenuData2: ; 0x1084a
db $ae ; flags
db 5, 8 ; rows, columns
db 2 ; horizontal spacing
- dbw 0, OTPartyMon1CaughtGender
+ dbw 0, wDudeNumBalls
dba PlaceMenuItemName
dba PlaceMenuItemQuantity
dba UpdateItemDescription
; 1085a
-Function1085a: ; 1085a (4:485a)
+.DisplayPocket: ; 1085a (4:485a)
push hl
call InitPocket
pop hl
call CopyMenuDataHeader
- call HandleScrollingMenu
+ call ScrollingMenu
ret
-Function10866: ; 10866 (4:4866)
+Pack_JumptableNext: ; 10866 (4:4866)
ld hl, wJumptableIndex
inc [hl]
ret
-Function1086b: ; 1086b
+Pack_GetJumptablePointer: ; 1086b
ld e, a
ld d, 0
rept 2
@@ -1257,24 +1260,24 @@ endr
ret
; 10874
-Function10874: ; 10874 (4:4874)
+Pack_QuitNoScript: ; 10874 (4:4874)
ld hl, wJumptableIndex
set 7, [hl]
xor a
ld [wcf66], a
ret
-Function1087e: ; 1087e (4:487e)
+Pack_QuitRunScript: ; 1087e (4:487e)
ld hl, wJumptableIndex
set 7, [hl]
- ld a, $1
+ ld a, TRUE
ld [wcf66], a
ret
-Function10889: ; 10889 (4:4889)
+Pack_PrintTextNoScroll: ; 10889 (4:4889)
ld a, [Options]
push af
- set 4, a
+ set NO_TEXT_SCROLL, a
ld [Options], a
call PrintText
pop af
@@ -1283,10 +1286,8 @@ Function10889: ; 10889 (4:4889)
WaitBGMap_DrawPackGFX: ; 1089a (4:489a)
call WaitBGMap
-
-
DrawPackGFX: ; 1089d
- ld a, [wcf65]
+ ld a, [wCurrPocket]
and $3
ld e, a
ld d, $0
@@ -1296,7 +1297,6 @@ DrawPackGFX: ; 1089d
ld a, [PlayerGender]
bit 0, a
jr nz, .female
-
.male_dude
ld hl, PackGFXPointers
rept 2
@@ -1322,85 +1322,91 @@ PackGFXPointers: ; 108cc
dw PackGFX + $f0 * 2
; 108d4
-Function108d4: ; 108d4 (4:48d4)
- ld hl, wcf73
- ld a, [wd0e3]
+Pack_InterpretJoypad: ; 108d4 (4:48d4)
+ ld hl, wMenuJoypad
+ ld a, [wSwitchItem]
and a
- jr nz, .asm_10931
+ jr nz, .switching_item
ld a, [hl]
- and $1
- jr nz, .asm_108f8
+ and A_BUTTON
+ jr nz, .a_button
ld a, [hl]
- and $2
- jr nz, .asm_108fa
+ and B_BUTTON
+ jr nz, .b_button
ld a, [hl]
- and $20
- jr nz, .asm_10901
+ and D_LEFT
+ jr nz, .d_left
ld a, [hl]
- and $10
- jr nz, .asm_10912
+ and D_RIGHT
+ jr nz, .d_right
ld a, [hl]
- and $4
- jr nz, .asm_10923
+ and SELECT
+ jr nz, .select
scf
ret
-.asm_108f8
+
+.a_button
and a
ret
-.asm_108fa
- ld a, $9
+
+.b_button
+ ld a, Pack_QuitNoScriptTableIndex
ld [wJumptableIndex], a
scf
ret
-.asm_10901
+
+.d_left
ld a, b
ld [wJumptableIndex], a
ld [wcf64], a
push de
- ld de, SFX_UNKNOWN_62
+ ld de, SFX_SWITCH_POCKETS
call PlaySFX
pop de
scf
ret
-.asm_10912
+
+.d_right
ld a, c
ld [wJumptableIndex], a
ld [wcf64], a
push de
- ld de, SFX_UNKNOWN_62
+ ld de, SFX_SWITCH_POCKETS
call PlaySFX
pop de
scf
ret
-.asm_10923
- callba Function2490c
+
+.select
+ callba SwitchItemsInBag
ld hl, Text_MoveItemWhere
- call Function10889
+ call Pack_PrintTextNoScroll
scf
ret
-.asm_10931
+
+.switching_item
ld a, [hl]
- and $5
- jr nz, .asm_1093d
+ and A_BUTTON | SELECT
+ jr nz, .place_insert
ld a, [hl]
- and $2
- jr nz, .asm_1094f
+ and B_BUTTON
+ jr nz, .end_switch
scf
ret
-.asm_1093d
- callba Function2490c
+
+.place_insert
+ callba SwitchItemsInBag
ld de, SFX_SWITCH_POKEMON
call WaitPlaySFX
ld de, SFX_SWITCH_POKEMON
call WaitPlaySFX
-.asm_1094f
+.end_switch
xor a
- ld [wd0e3], a
+ ld [wSwitchItem], a
scf
ret
-
-Function10955: ; 10955
+Pack_InitGFX: ; 10955
call ClearBGPalettes
call ClearTileMap
call ClearSprites
@@ -1410,18 +1416,15 @@ Function10955: ; 10955
ld bc, $60 tiles
ld a, BANK(PackMenuGFX)
call FarCopyBytes
-
; Background (blue if male, pink if female)
hlcoord 0, 1
ld bc, 11 * SCREEN_WIDTH
ld a, $24
call ByteFill
-
; This is where the items themselves will be listed.
hlcoord 5, 1
lb bc, 11, 15
call ClearBox
-
; ◀▶ POCKET ▼▲ ITEMS
hlcoord 0, 0
ld a, $28
@@ -1431,10 +1434,8 @@ Function10955: ; 10955
inc a
dec c
jr nz, .loop
-
call DrawPocketName
call PlacePackGFX
-
; Place the textbox for displaying the item description
hlcoord 0, SCREEN_HEIGHT - 4 - 2
lb bc, 4, SCREEN_WIDTH - 2
@@ -1463,13 +1464,11 @@ PlacePackGFX: ; 109a5
; 109bb
DrawPocketName: ; 109bb
- ld a, [wcf65]
-
+ ld a, [wCurrPocket]
; * 15
ld d, a
swap a
sub d
-
ld d, 0
ld e, a
ld hl, .tilemap
@@ -1499,15 +1498,12 @@ DrawPocketName: ; 109bb
db $00, $04, $04, $04, $01 ; top border
db $06, $07, $08, $09, $0a ; Items
db $02, $05, $05, $05, $03 ; bottom border
-
db $00, $04, $04, $04, $01 ; top border
db $15, $16, $17, $18, $19 ; Balls
db $02, $05, $05, $05, $03 ; bottom border
-
db $00, $04, $04, $04, $01 ; top border
db $0b, $0c, $0d, $0e, $0f ; Key Items
db $02, $05, $05, $05, $03 ; bottom border
-
db $00, $04, $04, $04, $01 ; top border
db $10, $11, $12, $13, $14 ; TM/HM
db $02, $05, $05, $05, $03 ; bottom border
@@ -1536,25 +1532,24 @@ ClearPocketList: ; 10a36 (4:4a36)
call ClearBox
ret
-
-Function10a40: ; 10a40
+Pack_InitColors: ; 10a40
call WaitBGMap
- ld b, SCREEN_WIDTH
+ ld b, SCGB_PACKPALS
call GetSGBLayout
call SetPalettes
call DelayFrame
ret
; 10a4f
-MenuDataHeader_0x10a4f: ; 0x10a4f
+ItemsPocketMenuDataHeader: ; 0x10a4f
db $40 ; flags
db 01, 07 ; start coords
db 11, 19 ; end coords
- dw MenuData2_0x10a57
+ dw .MenuData2
db 1 ; default option
; 0x10a57
-MenuData2_0x10a57: ; 0x10a57
+.MenuData2: ; 0x10a57
db $ae ; flags
db 5, 8 ; rows, columns
db 2 ; horizontal spacing
@@ -1564,15 +1559,15 @@ MenuData2_0x10a57: ; 0x10a57
dba UpdateItemDescription
; 10a67
-MenuDataHeader_0x10a67: ; 0x10a67
+PC_Mart_ItemsPocketMenuDataHeader: ; 0x10a67
db $40 ; flags
db 01, 07 ; start coords
db 11, 19 ; end coords
- dw MenuData2_0x10a6f
+ dw .MenuData2
db 1 ; default option
; 0x10a6f
-MenuData2_0x10a6f: ; 0x10a6f
+.MenuData2: ; 0x10a6f
db $2e ; flags
db 5, 8 ; rows, columns
db 2 ; horizontal spacing
@@ -1582,15 +1577,15 @@ MenuData2_0x10a6f: ; 0x10a6f
dba UpdateItemDescription
; 10a7f
-MenuDataHeader_0x10a7f: ; 0x10a7f
+KeyItemsPocketMenuDataHeader: ; 0x10a7f
db $40 ; flags
db 01, 07 ; start coords
db 11, 19 ; end coords
- dw MenuData2_0x10a87
+ dw .MenuData2
db 1 ; default option
; 0x10a87
-MenuData2_0x10a87: ; 0x10a87
+.MenuData2: ; 0x10a87
db $ae ; flags
db 5, 8 ; rows, columns
db 1 ; horizontal spacing
@@ -1600,15 +1595,15 @@ MenuData2_0x10a87: ; 0x10a87
dba UpdateItemDescription
; 10a97
-MenuDataHeader_0x10a97: ; 0x10a97
+PC_Mart_KeyItemsPocketMenuDataHeader: ; 0x10a97
db $40 ; flags
db 01, 07 ; start coords
db 11, 19 ; end coords
- dw MenuData2_0x10a9f
+ dw .MenuData2
db 1 ; default option
; 0x10a9f
-MenuData2_0x10a9f: ; 0x10a9f
+.MenuData2: ; 0x10a9f
db $2e ; flags
db 5, 8 ; rows, columns
db 1 ; horizontal spacing
@@ -1618,15 +1613,15 @@ MenuData2_0x10a9f: ; 0x10a9f
dba UpdateItemDescription
; 10aaf
-MenuDataHeader_0x10aaf: ; 0x10aaf
+BallsPocketMenuDataHeader: ; 0x10aaf
db $40 ; flags
db 01, 07 ; start coords
db 11, 19 ; end coords
- dw MenuData2_0x10ab7
+ dw .MenuData2
db 1 ; default option
; 0x10ab7
-MenuData2_0x10ab7: ; 0x10ab7
+.MenuData2: ; 0x10ab7
db $ae ; flags
db 5, 8 ; rows, columns
db 2 ; horizontal spacing
@@ -1636,15 +1631,15 @@ MenuData2_0x10ab7: ; 0x10ab7
dba UpdateItemDescription
; 10ac7
-MenuDataHeader_0x10ac7: ; 0x10ac7
+PC_Mart_BallsPocketMenuDataHeader: ; 0x10ac7
db $40 ; flags
db 01, 07 ; start coords
db 11, 19 ; end coords
- dw MenuData2_0x10acf
+ dw .MenuData2
db 1 ; default option
; 0x10acf
-MenuData2_0x10acf: ; 0x10acf
+.MenuData2: ; 0x10acf
db $2e ; flags
db 5, 8 ; rows, columns
db 2 ; horizontal spacing
@@ -1723,6 +1718,5 @@ TextJump_YouCantUseItInABattle: ; 0x10b11
PackMenuGFX:
INCBIN "gfx/misc/pack_menu.2bpp"
-
PackGFX:
INCBIN "gfx/misc/pack.2bpp"
diff --git a/engine/party_menu.asm b/engine/party_menu.asm
index 06b774064..35f6e3d47 100644
--- a/engine/party_menu.asm
+++ b/engine/party_menu.asm
@@ -8,12 +8,12 @@ SelectMonFromParty: ; 50000
call SetPalettes
call DelayFrame
call PartyMenuSelect
- call Function2b74
+ call ReturnToMapWithSpeechTextbox
ret
; 5001d
-Function5001d: ; 5001d
+SelectTradeOrDaycareMon: ; 5001d
ld a, b
ld [PartyMenuActionText], a
call DisableSpriteUpdates
@@ -25,7 +25,7 @@ Function5001d: ; 5001d
call SetPalettes
call DelayFrame
call PartyMenuSelect
- call Function2b74
+ call ReturnToMapWithSpeechTextbox
ret
; 5003f
@@ -41,7 +41,7 @@ Function5003f: ; 5003f
LoadPartyMenuGFX: ; 5004f
call LoadFontsBattleExtra
callab Function8ad1 ; engine/color.asm
- callab ClearSpriteAnims
+ callab ClearSpriteAnims2
ret
; 5005f
@@ -125,7 +125,7 @@ endr
PlacePartyHPBar: ; 500cf
xor a
- ld [wcda9], a
+ ld [wSGBPals], a
ld a, [PartyCount]
and a
ret z
@@ -143,17 +143,16 @@ PlacePartyHPBar: ; 500cf
ld d, $6
ld b, $0
call DrawBattleHPBar
- ld hl, wcd9b
- ld a, [wcda9]
+ ld hl, wHPPals
+ ld a, [wSGBPals]
ld c, a
ld b, $0
add hl, bc
call SetHPPal
- ld b, SCGB_FC
+ ld b, SCGB_PARTY_MENU_HP_PALS
call GetSGBLayout
-
.skip
- ld hl, wcda9
+ ld hl, wSGBPals
inc [hl]
pop hl
ld de, 2 * SCREEN_WIDTH
@@ -190,7 +189,7 @@ PlacePartymonHPBar: ; 50117
ld d, a
ld a, [hli]
ld e, a
- predef DrawPartyMenuHPBar
+ predef ComputeHPBarPixels
ret
; 50138
@@ -670,7 +669,7 @@ InitPartyMenuGFX: ; 503e0
pop bc
dec c
jr nz, .loop
- callab Function8cf69
+ callab PlaySpriteAnimations
ret
; 50405
@@ -679,10 +678,10 @@ InitPartyMenuWithCancel: ; 50405
xor a
ld [wSwitchMon], a
ld de, PartyMenuAttributes
- call InitMenu3
+ call SetMenuAttributes
ld a, [PartyCount]
inc a
- ld [wcfa3], a ; list length
+ ld [w2DMenuNumRows], a ; list length
dec a
ld b, a
ld a, [wPartyMenuCursor]
@@ -693,21 +692,21 @@ InitPartyMenuWithCancel: ; 50405
jr c, .done
.skip
- ld a, $1
+ ld a, 1
.done
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
ld a, A_BUTTON | B_BUTTON
- ld [wcfa8], a
+ ld [wMenuJoypadFilter], a
ret
; 5042d
InitPartyMenuNoCancel: ; 0x5042d
; no cancel
ld de, PartyMenuAttributes
- call InitMenu3
+ call SetMenuAttributes
ld a, [PartyCount]
- ld [wcfa3], a ; list length
+ ld [w2DMenuNumRows], a ; list length
ld b, a
ld a, [wPartyMenuCursor]
and a
@@ -716,34 +715,38 @@ InitPartyMenuNoCancel: ; 0x5042d
cp b
jr c, .done
.skip
- ld a, $1
+ ld a, 1
.done
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
ld a, A_BUTTON | B_BUTTON
- ld [wcfa8], a
+ ld [wMenuJoypadFilter], a
ret
; 5044f (14:444f)
PartyMenuAttributes: ; 5044f
; cursor y
; cursor x
-; list length
-; ?
+; num rows
+; num cols
; bit 6: animate sprites bit 5: wrap around
; ?
; distance between items (hi: y, lo: x)
; allowed buttons (mask)
- db $01, $00, $00, $01, $60, $00, $20, $00
+ db 1, 0
+ db 0, 1
+ db $60, $00
+ dn 2, 0
+ db 0
; 50457
PartyMenuSelect: ; 0x50457
; sets carry if exitted menu.
- call Function1bc9
- call Function1bee
+ call StaticMenuJoypad
+ call PlaceHollowCursor
ld a, [PartyCount]
inc a
ld b, a
- ld a, [MenuSelection2] ; menu selection?
+ ld a, [wMenuCursorY] ; menu selection?
cp b
jr z, .exitmenu ; CANCEL
ld [wPartyMenuCursor], a
@@ -751,7 +754,7 @@ PartyMenuSelect: ; 0x50457
ld b, a
bit 1, b
jr nz, .exitmenu ; B button?
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld [CurPartyMon], a
ld c, a
diff --git a/engine/phone.asm b/engine/phone.asm
index ab0ecb84a..805f221a7 100644
--- a/engine/phone.asm
+++ b/engine/phone.asm
@@ -274,7 +274,7 @@ endr
push hl
call LoadCallerScript
pop hl
- ld de, wd048
+ ld de, wPhoneScriptPointer
ld a, [hli]
ld [de], a
inc de
@@ -442,10 +442,10 @@ WrongNumber: ; 90233
Script_ReceivePhoneCall: ; 0x90241
refreshscreen $0
callasm RingTwice_StartCall
- ptcall wd048
- closetext
+ ptcall wPhoneScriptPointer
+ waitbutton
callasm HangUp
- loadmovesprites
+ closetext
callasm InitCallReceiveDelay
end
; 0x90255
diff --git a/engine/phone_scripts.asm b/engine/phone_scripts.asm
index 5d0795766..e8af05f36 100644
--- a/engine/phone_scripts.asm
+++ b/engine/phone_scripts.asm
@@ -1,3 +1,6 @@
+SWARM_DUNSPARCE EQU 0
+SWARM_YANMA EQU 1
+
UnusedPhoneScript: ; 0xbcea5
farwritetext UnusedPhoneText
end
@@ -19,7 +22,7 @@ MomPhoneScript: ; 0xbceaa
checkevent EVENT_IN_YOUR_ROOM
iftrue MomPhoneHangUpScript
farwritetext MomPhoneGreetingText
- keeptextopen
+ buttonsound
mapnametotext $0
checkcode VAR_ROOFPALETTE
if_equal $1, UnknownScript_0xbcee7
@@ -28,7 +31,7 @@ MomPhoneScript: ; 0xbceaa
UnknownScript_0xbcedf: ; 0xbcedf
farwritetext UnknownText_0x1b4021
- keeptextopen
+ buttonsound
jump UnknownScript_0xbcf37
UnknownScript_0xbcee7: ; 0xbcee7
@@ -39,37 +42,37 @@ UnknownScript_0xbcee7: ; 0xbcee7
if_equal GROUP_AZALEA_TOWN, .azalea
if_equal GROUP_GOLDENROD_CITY, .goldenrod
farwritetext MomPhoneGenericAreaText
- keeptextopen
+ buttonsound
jump UnknownScript_0xbcf37
.newbark ; 0xbcf05
farwritetext MomPhoneNewBarkText
- keeptextopen
+ buttonsound
jump UnknownScript_0xbcf37
.cherrygrove ; 0xbcf0d
farwritetext MomPhoneCherrygroveText
- keeptextopen
+ buttonsound
jump UnknownScript_0xbcf37
.violet ; 0xbcf15
- displaylocation SPROUT_TOWER, 1
+ landmarktotext SPROUT_TOWER, 1
jump UnknownScript_0xbcedf
.azalea ; 0xbcf1b
- displaylocation SLOWPOKE_WELL, 1
+ landmarktotext SLOWPOKE_WELL, 1
jump UnknownScript_0xbcedf
.goldenrod ; 0xbcf21
- displaylocation RADIO_TOWER, 1
+ landmarktotext RADIO_TOWER, 1
jump UnknownScript_0xbcedf
UnknownScript_0xbcf27: ; 0xbcf27
farwritetext UnknownText_0x1b411c
- keeptextopen
+ buttonsound
jump UnknownScript_0xbcf37
UnknownScript_0xbcf2f: ; 0xbcf2f
farwritetext UnknownText_0x1b4150
- keeptextopen
+ buttonsound
jump UnknownScript_0xbcf37
UnknownScript_0xbcf37: ; 0xbcf37
@@ -113,13 +116,13 @@ UnknownScript_0xbcf79: ; 0xbcf79
MomPhoneSaveMoneyScript: ; 0xbcf87
setflag ENGINE_MOM_SAVING_MONEY
farwritetext UnknownText_0x1b4289
- keeptextopen
+ buttonsound
jump MomPhoneHangUpScript
MomPhoneWontSaveMoneyScript: ; 0xbcf92
clearflag ENGINE_MOM_SAVING_MONEY
farwritetext MomPhoneWontSaveMoneyText
- keeptextopen
+ buttonsound
jump MomPhoneHangUpScript
MomPhoneHangUpScript: ; 0xbcf9d
@@ -155,22 +158,22 @@ BillPhoneScript1: ; 0xbcfc5
checknite
iftrue .nitegreet
farwritetext BillPhoneMornGreetingText
- keeptextopen
+ buttonsound
jump .main
.daygreet ; 0xbcfd7
farwritetext BillPhoneDayGreetingText
- keeptextopen
+ buttonsound
jump .main
.nitegreet ; 0xbcfdf
farwritetext BillPhoneNiteGreetingText
- keeptextopen
+ buttonsound
jump .main
.main ; 0xbcfe7
farwritetext BillPhoneGeneriText
- keeptextopen
+ buttonsound
checkcode VAR_BOXSPACE
RAM2MEM $0
if_equal $0, .full
@@ -188,7 +191,7 @@ BillPhoneScript1: ; 0xbcfc5
BillPhoneScript2: ; 0xbd007
farwritetext BillPhoneNewlyFullText
- closetext
+ waitbutton
end
; Elm
@@ -302,7 +305,7 @@ JackPhoneScript1:
trainertotext SCHOOLBOY, JACK1, $0
checkflag ENGINE_JACK
iftrue UnknownScript_0xbd0f3
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_JACK_MONDAY_MORNING
iftrue UnknownScript_0xbd0ef
checkcode VAR_WEEKDAY
@@ -314,23 +317,23 @@ UnknownScript_0xbd0ef:
farjump UnknownScript_0xa08f8
UnknownScript_0xbd0f3:
- displaylocation NATIONAL_PARK, $2
+ landmarktotext NATIONAL_PARK, $2
farjump UnknownScript_0xa0a2d
JackPhoneScript2:
trainertotext SCHOOLBOY, JACK1, $0
- farscall UnknownScript_0xbe1b6
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_GreetPhone_Male
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd13b
checkflag ENGINE_JACK
iftrue UnknownScript_0xbd11e
checkflag ENGINE_JACK_MONDAY_MORNING
iftrue UnknownScript_0xbd11e
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd12d
UnknownScript_0xbd11e:
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd137
farjump UnknownScript_0xa0000
@@ -338,7 +341,7 @@ UnknownScript_0xbd12a:
setflag ENGINE_JACK_MONDAY_MORNING
UnknownScript_0xbd12d:
- displaylocation NATIONAL_PARK, $2
+ landmarktotext NATIONAL_PARK, $2
setflag ENGINE_JACK
farjump UnknownScript_0xa0376
@@ -352,21 +355,21 @@ UnknownScript_0xbd13b:
BeverlyPhoneScript1:
trainertotext POKEFANF, BEVERLY1, $0
- farscall UnknownScript_0xbe0b6
+ farscall PhoneScript_AnswerPhone_Female
checkflag ENGINE_BEVERLY_HAS_NUGGET
iftrue UnknownScript_0xbd151
farjump UnknownScript_0xa0900
UnknownScript_0xbd151:
- displaylocation NATIONAL_PARK, $2
+ landmarktotext NATIONAL_PARK, $2
farjump UnknownScript_0xa0aa5
BeverlyPhoneScript2:
trainertotext POKEFANF, BEVERLY1, $0
- farscall UnknownScript_0xbe41e
+ farscall PhoneScript_GreetPhone_Female
checkflag ENGINE_BEVERLY_HAS_NUGGET
iftrue UnknownScript_0xbd16e
- farscall UnknownScript_0xbde45
+ farscall PhoneScript_Random4
if_equal $0, UnknownScript_0xbd172
UnknownScript_0xbd16e:
@@ -374,7 +377,7 @@ UnknownScript_0xbd16e:
UnknownScript_0xbd172:
setflag ENGINE_BEVERLY_HAS_NUGGET
- displaylocation NATIONAL_PARK, $2
+ landmarktotext NATIONAL_PARK, $2
farjump UnknownScript_0xa061e
; Huey
@@ -383,7 +386,7 @@ HueyPhoneScript1:
trainertotext SAILOR, HUEY1, $0
checkflag ENGINE_HUEY
iftrue UnknownScript_0xbd1a2
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_HUEY_WEDNESDAY_NIGHT
iftrue UnknownScript_0xbd19b
checkcode VAR_WEEKDAY
@@ -396,28 +399,28 @@ UnknownScript_0xbd19b:
farjump UnknownScript_0xa0908
UnknownScript_0xbd1a2:
- displaylocation LIGHTHOUSE, $2
+ landmarktotext LIGHTHOUSE, $2
farjump UnknownScript_0xa0a32
HueyPhoneScript2:
trainertotext SAILOR, HUEY1, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_HUEY
iftrue UnknownScript_0xbd1c9
checkflag ENGINE_HUEY_WEDNESDAY_NIGHT
iftrue UnknownScript_0xbd1c9
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd1d0
if_equal $1, UnknownScript_0xbd1d0
UnknownScript_0xbd1c9:
- farjump UnknownScript_0xbe622
+ farjump PhoneScript_MonFlavorText
UnknownScript_0xbd1cd:
setflag ENGINE_HUEY_WEDNESDAY_NIGHT
UnknownScript_0xbd1d0:
- displaylocation LIGHTHOUSE, $2
+ landmarktotext LIGHTHOUSE, $2
setflag ENGINE_HUEY
farjump UnknownScript_0xa0376
@@ -427,7 +430,7 @@ GavenPhoneScript1:
trainertotext COOLTRAINERM, GAVEN3, $0
checkflag ENGINE_GAVEN
iftrue UnknownScript_0xbd1fd
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_GAVEN_THURSDAY_MORNING
iftrue UnknownScript_0xbd1f9
checkcode VAR_WEEKDAY
@@ -439,21 +442,21 @@ UnknownScript_0xbd1f9:
farjump UnknownScript_0xa0910
UnknownScript_0xbd1fd:
- displaylocation ROUTE_26, $2
+ landmarktotext ROUTE_26, $2
farjump UnknownScript_0xa0a37
GavenPhoneScript2:
trainertotext COOLTRAINERM, GAVEN3, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_GAVEN
iftrue UnknownScript_0xbd220
checkflag ENGINE_GAVEN_THURSDAY_MORNING
iftrue UnknownScript_0xbd220
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd22f
UnknownScript_0xbd220:
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd239
farjump UnknownScript_0xa0000
@@ -461,7 +464,7 @@ UnknownScript_0xbd22c:
setflag ENGINE_GAVEN_THURSDAY_MORNING
UnknownScript_0xbd22f:
- displaylocation ROUTE_26, $2
+ landmarktotext ROUTE_26, $2
setflag ENGINE_GAVEN
farjump UnknownScript_0xa0376
@@ -474,7 +477,7 @@ BethPhoneScript1:
trainertotext COOLTRAINERF, BETH1, $0
checkflag ENGINE_BETH
iftrue UnknownScript_0xbd260
- farscall UnknownScript_0xbe0b6
+ farscall PhoneScript_AnswerPhone_Female
checkflag ENGINE_BETH_FRIDAY_AFTERNOON
iftrue UnknownScript_0xbd25c
checkcode VAR_WEEKDAY
@@ -486,17 +489,17 @@ UnknownScript_0xbd25c:
farjump UnknownScript_0xa0918
UnknownScript_0xbd260:
- displaylocation ROUTE_26, $2
+ landmarktotext ROUTE_26, $2
farjump UnknownScript_0xa0a3c
BethPhoneScript2:
trainertotext COOLTRAINERF, BETH1, $0
- farscall UnknownScript_0xbe41e
+ farscall PhoneScript_GreetPhone_Female
checkflag ENGINE_BETH
iftrue UnknownScript_0xbd283
checkflag ENGINE_BETH_FRIDAY_AFTERNOON
iftrue UnknownScript_0xbd283
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd28a
UnknownScript_0xbd283:
@@ -506,7 +509,7 @@ UnknownScript_0xbd287:
setflag ENGINE_BETH_FRIDAY_AFTERNOON
UnknownScript_0xbd28a:
- displaylocation ROUTE_26, $2
+ landmarktotext ROUTE_26, $2
setflag ENGINE_BETH
farjump UnknownScript_0xa037e
@@ -516,7 +519,7 @@ JosePhoneScript1:
trainertotext BIRD_KEEPER, JOSE2, $0
checkflag ENGINE_JOSE
iftrue UnknownScript_0xbd2bd
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_JOSE_SATURDAY_NIGHT
iftrue UnknownScript_0xbd2b9
checkflag ENGINE_JOSE_HAS_STAR_PIECE
@@ -530,29 +533,29 @@ UnknownScript_0xbd2b9:
farjump UnknownScript_0xa0920
UnknownScript_0xbd2bd:
- displaylocation ROUTE_27, $2
+ landmarktotext ROUTE_27, $2
farjump UnknownScript_0xa0a41
UnknownScript_0xbd2c4:
- displaylocation ROUTE_27, $2
+ landmarktotext ROUTE_27, $2
farjump UnknownScript_0xa0a41
JosePhoneScript2:
trainertotext BIRD_KEEPER, JOSE2, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_JOSE
iftrue UnknownScript_0xbd2f5
checkflag ENGINE_JOSE_SATURDAY_NIGHT
iftrue UnknownScript_0xbd2f5
checkflag ENGINE_JOSE_HAS_STAR_PIECE
iftrue UnknownScript_0xbd2f5
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd304
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd312
UnknownScript_0xbd2f5:
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd30e
farjump UnknownScript_0xa0000
@@ -560,7 +563,7 @@ UnknownScript_0xbd301:
setflag ENGINE_JOSE_SATURDAY_NIGHT
UnknownScript_0xbd304:
- displaylocation ROUTE_27, $2
+ landmarktotext ROUTE_27, $2
setflag ENGINE_JOSE
farjump UnknownScript_0xa0376
@@ -569,7 +572,7 @@ UnknownScript_0xbd30e:
UnknownScript_0xbd312:
setflag ENGINE_JOSE_HAS_STAR_PIECE
- displaylocation ROUTE_27, $2
+ landmarktotext ROUTE_27, $2
farjump UnknownScript_0xa05e6
; Reena
@@ -578,7 +581,7 @@ ReenaPhoneScript1:
trainertotext COOLTRAINERF, REENA1, $0
checkflag ENGINE_REENA
iftrue UnknownScript_0xbd33f
- farscall UnknownScript_0xbe0b6
+ farscall PhoneScript_AnswerPhone_Female
checkflag ENGINE_REENA_SUNDAY_MORNING
iftrue UnknownScript_0xbd33b
checkcode VAR_WEEKDAY
@@ -590,17 +593,17 @@ UnknownScript_0xbd33b:
farjump UnknownScript_0xa0928
UnknownScript_0xbd33f:
- displaylocation ROUTE_27, $2
+ landmarktotext ROUTE_27, $2
farjump UnknownScript_0xa0a46
ReenaPhoneScript2:
trainertotext COOLTRAINERF, REENA1, $0
- farscall UnknownScript_0xbe41e
+ farscall PhoneScript_GreetPhone_Female
checkflag ENGINE_REENA
iftrue UnknownScript_0xbd362
checkflag ENGINE_REENA_SUNDAY_MORNING
iftrue UnknownScript_0xbd362
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd369
UnknownScript_0xbd362:
@@ -610,7 +613,7 @@ UnknownScript_0xbd366:
setflag ENGINE_REENA_SUNDAY_MORNING
UnknownScript_0xbd369:
- displaylocation ROUTE_27, $2
+ landmarktotext ROUTE_27, $2
setflag ENGINE_REENA
farjump UnknownScript_0xa037e
@@ -620,7 +623,7 @@ JoeyPhoneScript1:
trainertotext YOUNGSTER, JOEY1, $0
checkflag ENGINE_JOEY
iftrue UnknownScript_0xbd399
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_JOEY_MONDAY_AFTERNOON
iftrue UnknownScript_0xbd392
checkcode VAR_WEEKDAY
@@ -633,17 +636,17 @@ UnknownScript_0xbd392:
farjump UnknownScript_0xa0930
UnknownScript_0xbd399:
- displaylocation ROUTE_30, $2
+ landmarktotext ROUTE_30, $2
farjump UnknownScript_0xa0a4b
JoeyPhoneScript2:
trainertotext YOUNGSTER, JOEY1, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_JOEY
iftrue UnknownScript_0xbd3c0
checkflag ENGINE_JOEY_MONDAY_AFTERNOON
iftrue UnknownScript_0xbd3c0
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd3c7
if_equal $1, UnknownScript_0xbd3c7
@@ -654,7 +657,7 @@ UnknownScript_0xbd3c4:
setflag ENGINE_JOEY_MONDAY_AFTERNOON
UnknownScript_0xbd3c7:
- displaylocation ROUTE_30, $2
+ landmarktotext ROUTE_30, $2
setflag ENGINE_JOEY
farjump UnknownScript_0xa0376
@@ -664,7 +667,7 @@ WadePhoneScript1:
trainertotext BUG_CATCHER, WADE1, $0
checkflag ENGINE_WADE
iftrue UnknownScript_0xbd41a
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_WADE_TUESDAY_NIGHT
iftrue UnknownScript_0xbd3f6
checkflag ENGINE_WADE_HAS_ITEM
@@ -675,7 +678,7 @@ WadePhoneScript1:
iftrue UnknownScript_0xbd484
UnknownScript_0xbd3f6:
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd412
checkflag ENGINE_DAILY_BUG_CONTEST
iftrue UnknownScript_0xbd412
@@ -691,17 +694,17 @@ UnknownScript_0xbd416:
farjump UnknownScript_0xa05a4
UnknownScript_0xbd41a:
- displaylocation ROUTE_31, $2
+ landmarktotext ROUTE_31, $2
farjump UnknownScript_0xa0a50
UnknownScript_0xbd421:
- displaylocation ROUTE_31, $2
+ landmarktotext ROUTE_31, $2
farjump UnknownScript_0xa0ab5
WadePhoneScript2:
trainertotext BUG_CATCHER, WADE1, $0
- farscall UnknownScript_0xbe1b6
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_GreetPhone_Male
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd44c
checkflag ENGINE_DAILY_BUG_CONTEST
iftrue UnknownScript_0xbd44c
@@ -717,15 +720,15 @@ UnknownScript_0xbd44c:
iftrue UnknownScript_0xbd474
checkflag ENGINE_WADE_HAS_ITEM
iftrue UnknownScript_0xbd474
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd495
checkflag ENGINE_FLYPOINT_GOLDENROD
iffalse UnknownScript_0xbd474
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd487
UnknownScript_0xbd474:
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd491
farjump UnknownScript_0xa0000
@@ -736,7 +739,7 @@ UnknownScript_0xbd484:
setflag ENGINE_WADE_TUESDAY_NIGHT
UnknownScript_0xbd487:
- displaylocation ROUTE_31, $2
+ landmarktotext ROUTE_31, $2
setflag ENGINE_WADE
farjump UnknownScript_0xa0376
@@ -745,7 +748,7 @@ UnknownScript_0xbd491:
UnknownScript_0xbd495:
setflag ENGINE_WADE_HAS_ITEM
- displaylocation ROUTE_31, $2
+ landmarktotext ROUTE_31, $2
clearevent EVENT_WADE_HAS_BERRY
clearevent EVENT_WADE_HAS_PSNCUREBERRY
clearevent EVENT_WADE_HAS_PRZCUREBERRY
@@ -779,59 +782,56 @@ UnknownScript_0xbd4ce:
RalphPhoneScript1:
trainertotext FISHER, RALPH1, $0
checkflag ENGINE_RALPH
- iftrue UnknownScript_0xbd4fb
- farscall UnknownScript_0xbde4e
+ iftrue Ralph_Rematch
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_RALPH_WEDNESDAY_MORNING
- iftrue UnknownScript_0xbd4f1
+ iftrue Ralph_CheckSwarm
checkcode VAR_WEEKDAY
- if_not_equal WEDNESDAY, UnknownScript_0xbd4f1
+ if_not_equal WEDNESDAY, Ralph_CheckSwarm
checkmorn
- iftrue UnknownScript_0xbd537
-
-UnknownScript_0xbd4f1:
+ iftrue Ralph_WednesdayMorning
+Ralph_CheckSwarm:
checkflag ENGINE_SPECIAL_WILDDATA
- iftrue UnknownScript_0xbd502
+ iftrue Ralph_ReportSwarm
farjump UnknownScript_0xa0940
-UnknownScript_0xbd4fb:
- displaylocation ROUTE_32, $2
+Ralph_Rematch:
+ landmarktotext ROUTE_32, $2
farjump UnknownScript_0xa0a55
-UnknownScript_0xbd502:
- displaylocation ROUTE_32, $2
+Ralph_ReportSwarm:
+ landmarktotext ROUTE_32, $2
farjump UnknownScript_0xa0af5
RalphPhoneScript2:
trainertotext FISHER, RALPH1, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_FLYPOINT_GOLDENROD
- iffalse UnknownScript_0xbd52b
+ iffalse Ralph_CheckSwarm2
checkflag ENGINE_RALPH
- iftrue UnknownScript_0xbd52b
+ iftrue Ralph_CheckSwarm2
checkflag ENGINE_RALPH_WEDNESDAY_MORNING
- iftrue UnknownScript_0xbd52b
- farscall UnknownScript_0xbde3f
- if_equal $0, UnknownScript_0xbd53a
-
-UnknownScript_0xbd52b:
- farscall UnknownScript_0xbde48
- if_equal $0, UnknownScript_0xbd544
+ iftrue Ralph_CheckSwarm2
+ farscall PhoneScript_Random2
+ if_equal $0, Ralph_FightMe
+Ralph_CheckSwarm2:
+ farscall PhoneScript_Random5
+ if_equal $0, Ralph_SetUpSwarm
farjump UnknownScript_0xa0000
-UnknownScript_0xbd537:
+Ralph_WednesdayMorning:
setflag ENGINE_RALPH_WEDNESDAY_MORNING
-
-UnknownScript_0xbd53a:
- displaylocation ROUTE_32, $2
+Ralph_FightMe:
+ landmarktotext ROUTE_32, $2
setflag ENGINE_RALPH
farjump UnknownScript_0xa0376
-UnknownScript_0xbd544:
+Ralph_SetUpSwarm:
checkflag ENGINE_SPECIAL_WILDDATA
iftrue UnknownScript_0xbd55c
setflag ENGINE_SPECIAL_WILDDATA
pokenamemem QWILFISH, $1
- displaylocation ROUTE_32, $2
+ landmarktotext ROUTE_32, $2
writebyte $1
special Special_ActivateFishingSwarm
farjump UnknownScript_0xa05d6
@@ -845,7 +845,7 @@ LizPhoneScript1:
trainertotext PICNICKER, LIZ1, $0
checkflag ENGINE_LIZ
iftrue UnknownScript_0xbd586
- farscall UnknownScript_0xbe0b6
+ farscall PhoneScript_AnswerPhone_Female
checkflag ENGINE_LIZ_THURSDAY_AFTERNOON
iftrue UnknownScript_0xbd57f
checkcode VAR_WEEKDAY
@@ -858,25 +858,25 @@ UnknownScript_0xbd57f:
farjump UnknownScript_0xa0948
UnknownScript_0xbd586:
- displaylocation ROUTE_32, $2
+ landmarktotext ROUTE_32, $2
farjump UnknownScript_0xa0a5a
LizPhoneScript2:
trainertotext PICNICKER, LIZ1, $0
- farscall UnknownScript_0xbde45
+ farscall PhoneScript_Random4
if_equal $0, UnknownScript_0xbd5d0
- farscall UnknownScript_0xbe41e
+ farscall PhoneScript_GreetPhone_Female
checkflag ENGINE_LIZ
iftrue UnknownScript_0xbd5a9
checkflag ENGINE_LIZ_THURSDAY_AFTERNOON
iftrue UnknownScript_0xbd5a9
UnknownScript_0xbd5a9:
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd5d4
checkflag ENGINE_FLYPOINT_GOLDENROD
iffalse UnknownScript_0xbd5bf
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd5c6
UnknownScript_0xbd5bf:
@@ -886,7 +886,7 @@ UnknownScript_0xbd5c3:
setflag ENGINE_LIZ_THURSDAY_AFTERNOON
UnknownScript_0xbd5c6:
- displaylocation ROUTE_32, $2
+ landmarktotext ROUTE_32, $2
setflag ENGINE_LIZ
farjump UnknownScript_0xa037e
@@ -950,7 +950,7 @@ AnthonyPhoneScript1:
trainertotext HIKER, ANTHONY2, $0
checkflag ENGINE_ANTHONY
iftrue UnknownScript_0xbd65d
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_ANTHONY_FRIDAY_NIGHT
iftrue UnknownScript_0xbd653
checkcode VAR_WEEKDAY
@@ -964,27 +964,27 @@ UnknownScript_0xbd653:
farjump UnknownScript_0xa0950
UnknownScript_0xbd65d:
- displaylocation ROUTE_33, $2
+ landmarktotext ROUTE_33, $2
farjump UnknownScript_0xa0a5f
UnknownScript_0xbd664:
- displaylocation ROUTE_33, $2
+ landmarktotext ROUTE_33, $2
farjump UnknownScript_0xa0afa
AnthonyPhoneScript2:
trainertotext HIKER, ANTHONY2, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_FLYPOINT_GOLDENROD
iffalse UnknownScript_0xbd68d
checkflag ENGINE_ANTHONY
iftrue UnknownScript_0xbd68d
checkflag ENGINE_ANTHONY_FRIDAY_NIGHT
iftrue UnknownScript_0xbd68d
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd69c
UnknownScript_0xbd68d:
- farscall UnknownScript_0xbde48
+ farscall PhoneScript_Random5
if_equal $0, UnknownScript_0xbd6a6
farjump UnknownScript_0xa0000
@@ -992,7 +992,7 @@ UnknownScript_0xbd699:
setflag ENGINE_ANTHONY_FRIDAY_NIGHT
UnknownScript_0xbd69c:
- displaylocation ROUTE_33, $2
+ landmarktotext ROUTE_33, $2
setflag ENGINE_ANTHONY
farjump UnknownScript_0xa0376
@@ -1001,8 +1001,8 @@ UnknownScript_0xbd6a6:
iftrue UnknownScript_0xbd6bd
setflag ENGINE_DUNSPARCE_SWARM
pokenamemem DUNSPARCE, $1
- loadwilddata $0, DARK_CAVE_VIOLET_ENTRANCE
- displaylocation DARK_CAVE, $2
+ swarm SWARM_DUNSPARCE, DARK_CAVE_VIOLET_ENTRANCE
+ landmarktotext DARK_CAVE, $2
farjump UnknownScript_0xa05de
UnknownScript_0xbd6bd:
@@ -1014,7 +1014,7 @@ ToddPhoneScript1:
trainertotext CAMPER, TODD1, $0
checkflag ENGINE_TODD
iftrue UnknownScript_0xbd6ea
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_TODD_SATURDAY_MORNING
iftrue UnknownScript_0xbd6e0
checkcode VAR_WEEKDAY
@@ -1028,7 +1028,7 @@ UnknownScript_0xbd6e0:
farjump UnknownScript_0xa0958
UnknownScript_0xbd6ea:
- displaylocation ROUTE_34, $2
+ landmarktotext ROUTE_34, $2
farjump UnknownScript_0xa0a64
UnknownScript_0xbd6f1:
@@ -1036,22 +1036,22 @@ UnknownScript_0xbd6f1:
ToddPhoneScript2:
trainertotext CAMPER, TODD1, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_TODD
iftrue UnknownScript_0xbd717
checkflag ENGINE_TODD_SATURDAY_MORNING
iftrue UnknownScript_0xbd717
checkflag ENGINE_FLYPOINT_GOLDENROD
iffalse UnknownScript_0xbd71f
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd72e
UnknownScript_0xbd717:
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd73c
UnknownScript_0xbd71f:
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd738
farjump UnknownScript_0xa0000
@@ -1059,7 +1059,7 @@ UnknownScript_0xbd72b:
setflag ENGINE_TODD_SATURDAY_MORNING
UnknownScript_0xbd72e:
- displaylocation ROUTE_34, $2
+ landmarktotext ROUTE_34, $2
setflag ENGINE_TODD
farjump UnknownScript_0xa0376
@@ -1076,7 +1076,7 @@ GinaPhoneScript1:
trainertotext PICNICKER, GINA1, $0
checkflag ENGINE_GINA
iftrue UnknownScript_0xbd776
- farscall UnknownScript_0xbe0b6
+ farscall PhoneScript_AnswerPhone_Female
checkflag ENGINE_GINA_SUNDAY_AFTERNOON
iftrue UnknownScript_0xbd768
checkflag ENGINE_GINA_HAS_LEAF_STONE
@@ -1095,16 +1095,16 @@ UnknownScript_0xbd772:
farjump UnknownScript_0xa05c6
UnknownScript_0xbd776:
- displaylocation ROUTE_34, $2
+ landmarktotext ROUTE_34, $2
farjump UnknownScript_0xa0a69
UnknownScript_0xbd77d:
- displaylocation ROUTE_34, $2
+ landmarktotext ROUTE_34, $2
farjump UnknownScript_0xa0abd
GinaPhoneScript2:
trainertotext PICNICKER, GINA1, $0
- farscall UnknownScript_0xbe41e
+ farscall PhoneScript_GreetPhone_Female
checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
iftrue UnknownScript_0xbd7d9
checkflag ENGINE_GINA
@@ -1115,15 +1115,15 @@ GinaPhoneScript2:
iftrue UnknownScript_0xbd7c8
checkevent EVENT_GINA_GAVE_LEAF_STONE
iftrue UnknownScript_0xbd7b2
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd7dd
UnknownScript_0xbd7b2:
- farscall UnknownScript_0xbde4b
+ farscall PhoneScript_Random11
if_equal $0, UnknownScript_0xbd7dd
checkflag ENGINE_FLYPOINT_GOLDENROD
iffalse UnknownScript_0xbd7c8
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd7cf
UnknownScript_0xbd7c8:
@@ -1133,7 +1133,7 @@ UnknownScript_0xbd7cc:
setflag ENGINE_GINA_SUNDAY_AFTERNOON
UnknownScript_0xbd7cf:
- displaylocation ROUTE_34, $2
+ landmarktotext ROUTE_34, $2
setflag ENGINE_GINA
farjump UnknownScript_0xa037e
@@ -1142,14 +1142,14 @@ UnknownScript_0xbd7d9:
UnknownScript_0xbd7dd:
setflag ENGINE_GINA_HAS_LEAF_STONE
- displaylocation ROUTE_34, $2
+ landmarktotext ROUTE_34, $2
farjump UnknownScript_0xa061e
; Irwin
IrwinPhoneScript1:
trainertotext JUGGLER, IRWIN1, $0
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
iftrue UnknownScript_0xbd7f9
farjump UnknownScript_0xa09c8
@@ -1159,7 +1159,7 @@ UnknownScript_0xbd7f9:
IrwinPhoneScript2:
trainertotext JUGGLER, IRWIN1, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_ROCKETS_IN_RADIO_TOWER
iftrue UnknownScript_0xbd80f
farjump UnknownScript_0xa0848
@@ -1173,7 +1173,7 @@ ArniePhoneScript1:
trainertotext BUG_CATCHER, ARNIE1, $0
checkflag ENGINE_ARNIE
iftrue UnknownScript_0xbd83c
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_ARNIE_TUESDAY_MORNING
iftrue UnknownScript_0xbd832
checkcode VAR_WEEKDAY
@@ -1187,27 +1187,27 @@ UnknownScript_0xbd832:
farjump UnknownScript_0xa0968
UnknownScript_0xbd83c:
- displaylocation ROUTE_35, $2
+ landmarktotext ROUTE_35, $2
farjump UnknownScript_0xa0a6e
UnknownScript_0xbd843:
- displaylocation ROUTE_35, $2
+ landmarktotext ROUTE_35, $2
farjump UnknownScript_0xa0aff
ArniePhoneScript2:
trainertotext BUG_CATCHER, ARNIE1, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_ARNIE
iftrue UnknownScript_0xbd866
checkflag ENGINE_ARNIE_TUESDAY_MORNING
iftrue UnknownScript_0xbd866
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd87d
UnknownScript_0xbd866:
- farscall UnknownScript_0xbde48
+ farscall PhoneScript_Random5
if_equal $0, UnknownScript_0xbd887
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd89e
farjump UnknownScript_0xa0000
@@ -1215,17 +1215,17 @@ UnknownScript_0xbd87a:
setflag ENGINE_ARNIE_TUESDAY_MORNING
UnknownScript_0xbd87d:
- displaylocation ROUTE_35, $2
+ landmarktotext ROUTE_35, $2
setflag ENGINE_ARNIE
farjump UnknownScript_0xa0376
-UnknownScript_0xbd887:
+UnknownScript_0xbd887: ; start swarm
checkflag ENGINE_YANMA_SWARM
iftrue UnknownScript_0xbd8a2
setflag ENGINE_YANMA_SWARM
pokenamemem YANMA, $1
- loadwilddata $1, ROUTE_35
- displaylocation ROUTE_35, $2
+ swarm SWARM_YANMA, ROUTE_35
+ landmarktotext ROUTE_35, $2
farjump UnknownScript_0xa05ce
UnknownScript_0xbd89e:
@@ -1240,7 +1240,7 @@ AlanPhoneScript1:
trainertotext SCHOOLBOY, ALAN1, $0
checkflag ENGINE_ALAN
iftrue UnknownScript_0xbd8cf
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_ALAN_WEDNESDAY_AFTERNOON
iftrue UnknownScript_0xbd8cb
checkflag ENGINE_ALAN_HAS_FIRE_STONE
@@ -1254,31 +1254,31 @@ UnknownScript_0xbd8cb:
farjump UnknownScript_0xa0970
UnknownScript_0xbd8cf:
- displaylocation ROUTE_36, $2
+ landmarktotext ROUTE_36, $2
farjump UnknownScript_0xa0a73
UnknownScript_0xbd8d6:
- displaylocation ROUTE_36, $2
+ landmarktotext ROUTE_36, $2
farjump UnknownScript_0xa0ac5
AlanPhoneScript2:
trainertotext SCHOOLBOY, ALAN1, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_ALAN
iftrue UnknownScript_0xbd915
checkflag ENGINE_ALAN_WEDNESDAY_AFTERNOON
iftrue UnknownScript_0xbd915
checkflag ENGINE_ALAN_HAS_FIRE_STONE
iftrue UnknownScript_0xbd915
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd91c
checkevent EVENT_ALAN_GAVE_FIRE_STONE
iftrue UnknownScript_0xbd90d
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd926
UnknownScript_0xbd90d:
- farscall UnknownScript_0xbde4b
+ farscall PhoneScript_Random11
if_equal $0, UnknownScript_0xbd926
UnknownScript_0xbd915:
@@ -1288,13 +1288,13 @@ UnknownScript_0xbd919:
setflag ENGINE_ALAN_WEDNESDAY_AFTERNOON
UnknownScript_0xbd91c:
- displaylocation ROUTE_36, $2
+ landmarktotext ROUTE_36, $2
setflag ENGINE_ALAN
farjump UnknownScript_0xa0376
UnknownScript_0xbd926:
setflag ENGINE_ALAN_HAS_FIRE_STONE
- displaylocation ROUTE_36, $2
+ landmarktotext ROUTE_36, $2
farjump UnknownScript_0xa05e6
; Dana
@@ -1303,7 +1303,7 @@ DanaPhoneScript1:
trainertotext LASS, DANA1, $0
checkflag ENGINE_DANA
iftrue UnknownScript_0xbd959
- farscall UnknownScript_0xbe0b6
+ farscall PhoneScript_AnswerPhone_Female
checkflag ENGINE_DANA_THURSDAY_NIGHT
iftrue UnknownScript_0xbd955
checkflag ENGINE_DANA_HAS_THUNDERSTONE
@@ -1317,35 +1317,35 @@ UnknownScript_0xbd955:
farjump UnknownScript_0xa0978
UnknownScript_0xbd959:
- displaylocation ROUTE_38, $2
+ landmarktotext ROUTE_38, $2
farjump UnknownScript_0xa0a78
UnknownScript_0xbd960:
- displaylocation ROUTE_38, $2
+ landmarktotext ROUTE_38, $2
farjump UnknownScript_0xa0acd
DanaPhoneScript2:
trainertotext LASS, DANA1, $0
- farscall UnknownScript_0xbe41e
+ farscall PhoneScript_GreetPhone_Female
checkflag ENGINE_DANA
iftrue UnknownScript_0xbd99f
checkflag ENGINE_DANA_THURSDAY_NIGHT
iftrue UnknownScript_0xbd99f
checkflag ENGINE_DANA_HAS_THUNDERSTONE
iftrue UnknownScript_0xbd99f
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd9ae
checkevent EVENT_DANA_GAVE_THUNDERSTONE
iftrue UnknownScript_0xbd997
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbd9bc
UnknownScript_0xbd997:
- farscall UnknownScript_0xbde4b
+ farscall PhoneScript_Random11
if_equal $0, UnknownScript_0xbd9bc
UnknownScript_0xbd99f:
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbd9b8
farjump UnknownScript_0xa0017
@@ -1353,7 +1353,7 @@ UnknownScript_0xbd9ab:
setflag ENGINE_DANA_THURSDAY_NIGHT
UnknownScript_0xbd9ae:
- displaylocation ROUTE_38, $2
+ landmarktotext ROUTE_38, $2
setflag ENGINE_DANA
farjump UnknownScript_0xa037e
@@ -1362,7 +1362,7 @@ UnknownScript_0xbd9b8:
UnknownScript_0xbd9bc:
setflag ENGINE_DANA_HAS_THUNDERSTONE
- displaylocation ROUTE_38, $2
+ landmarktotext ROUTE_38, $2
farjump UnknownScript_0xa061e
; Chad
@@ -1371,7 +1371,7 @@ ChadPhoneScript1:
trainertotext SCHOOLBOY, CHAD1, $0
checkflag ENGINE_CHAD
iftrue UnknownScript_0xbd9e9
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_CHAD_FRIDAY_MORNING
iftrue UnknownScript_0xbd9e5
checkcode VAR_WEEKDAY
@@ -1383,23 +1383,23 @@ UnknownScript_0xbd9e5:
farjump UnknownScript_0xa0980
UnknownScript_0xbd9e9:
- displaylocation ROUTE_38, $2
+ landmarktotext ROUTE_38, $2
farjump UnknownScript_0xa0a7d
ChadPhoneScript2:
trainertotext SCHOOLBOY, CHAD1, $0
- farscall UnknownScript_0xbe1b6
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_GreetPhone_Male
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbda31
checkflag ENGINE_CHAD
iftrue UnknownScript_0xbda14
checkflag ENGINE_CHAD_FRIDAY_MORNING
iftrue UnknownScript_0xbda14
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbda23
UnknownScript_0xbda14:
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbda2d
farjump UnknownScript_0xa0000
@@ -1407,7 +1407,7 @@ UnknownScript_0xbda20:
setflag ENGINE_CHAD_FRIDAY_MORNING
UnknownScript_0xbda23:
- displaylocation ROUTE_38, $2
+ landmarktotext ROUTE_38, $2
setflag ENGINE_CHAD
farjump UnknownScript_0xa0376
@@ -1419,10 +1419,10 @@ UnknownScript_0xbda31:
DerekPhoneScript1:
trainertotext POKEFANM, DEREK1, $0
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_DEREK_HAS_NUGGET
iftrue UnknownScript_0xbda67
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbda5f
checkflag ENGINE_DAILY_BUG_CONTEST
iftrue UnknownScript_0xbda5f
@@ -1438,13 +1438,13 @@ UnknownScript_0xbda63:
farjump UnknownScript_0xa05a4
UnknownScript_0xbda67:
- displaylocation ROUTE_39, $2
+ landmarktotext ROUTE_39, $2
farjump UnknownScript_0xa0ad5
DerekPhoneScript2:
trainertotext POKEFANM, DEREK1, $0
- farscall UnknownScript_0xbe1b6
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_GreetPhone_Male
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbda92
checkflag ENGINE_DAILY_BUG_CONTEST
iftrue UnknownScript_0xbda92
@@ -1454,7 +1454,7 @@ DerekPhoneScript2:
if_equal SATURDAY, UnknownScript_0xbda9e
UnknownScript_0xbda92:
- farscall UnknownScript_0xbde45
+ farscall PhoneScript_Random4
if_equal $0, UnknownScript_0xbdaa2
farjump UnknownScript_0xa0000
@@ -1463,14 +1463,14 @@ UnknownScript_0xbda9e:
UnknownScript_0xbdaa2:
setflag ENGINE_DEREK_HAS_NUGGET
- displaylocation ROUTE_39, $2
+ landmarktotext ROUTE_39, $2
farjump UnknownScript_0xa05e6
TullyPhoneScript1:
trainertotext FISHER, TULLY1, $0
checkflag ENGINE_TULLY
iftrue UnknownScript_0xbdad5
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_TULLY_SUNDAY_NIGHT
iftrue UnknownScript_0xbdad1
checkflag ENGINE_TULLY_HAS_WATER_STONE
@@ -1484,31 +1484,31 @@ UnknownScript_0xbdad1:
farjump UnknownScript_0xa0990
UnknownScript_0xbdad5:
- displaylocation ROUTE_42, $2
+ landmarktotext ROUTE_42, $2
farjump UnknownScript_0xa0a82
UnknownScript_0xbdadc:
- displaylocation ROUTE_42, $2
+ landmarktotext ROUTE_42, $2
farjump UnknownScript_0xa0add
TullyPhoneScript2:
trainertotext FISHER, TULLY1, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_TULLY
iftrue UnknownScript_0xbdb1b
checkflag ENGINE_TULLY_SUNDAY_NIGHT
iftrue UnknownScript_0xbdb1b
checkflag ENGINE_TULLY_HAS_WATER_STONE
iftrue UnknownScript_0xbdb1b
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbdb22
checkevent EVENT_TULLY_GAVE_WATER_STONE
iftrue UnknownScript_0xbdb13
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbdb2c
UnknownScript_0xbdb13:
- farscall UnknownScript_0xbde4b
+ farscall PhoneScript_Random11
if_equal $0, UnknownScript_0xbdb2c
UnknownScript_0xbdb1b:
@@ -1518,20 +1518,20 @@ UnknownScript_0xbdb1f:
setflag ENGINE_TULLY_SUNDAY_NIGHT
UnknownScript_0xbdb22:
- displaylocation ROUTE_42, $2
+ landmarktotext ROUTE_42, $2
setflag ENGINE_TULLY
farjump UnknownScript_0xa0376
UnknownScript_0xbdb2c:
setflag ENGINE_TULLY_HAS_WATER_STONE
- displaylocation ROUTE_42, $2
+ landmarktotext ROUTE_42, $2
farjump UnknownScript_0xa05e6
BrentPhoneScript1:
trainertotext POKEMANIAC, BRENT1, $0
checkflag ENGINE_BRENT
iftrue UnknownScript_0xbdb59
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_BRENT_MONDAY_MORNING
iftrue UnknownScript_0xbdb55
checkcode VAR_WEEKDAY
@@ -1543,19 +1543,19 @@ UnknownScript_0xbdb55:
farjump UnknownScript_0xa0998
UnknownScript_0xbdb59:
- displaylocation ROUTE_43, $2
+ landmarktotext ROUTE_43, $2
farjump UnknownScript_0xa0a87
BrentPhoneScript2:
trainertotext POKEMANIAC, BRENT1, $0
- farscall UnknownScript_0xbe1b6
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_GreetPhone_Male
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbdb95
checkflag ENGINE_BRENT
iftrue UnknownScript_0xbdb84
checkflag ENGINE_BRENT_MONDAY_MORNING
iftrue UnknownScript_0xbdb84
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbdb8b
UnknownScript_0xbdb84:
@@ -1565,7 +1565,7 @@ UnknownScript_0xbdb88:
setflag ENGINE_BRENT_MONDAY_MORNING
UnknownScript_0xbdb8b:
- displaylocation ROUTE_43, $2
+ landmarktotext ROUTE_43, $2
setflag ENGINE_BRENT
farjump UnknownScript_0xa0376
@@ -1576,7 +1576,7 @@ TiffanyPhoneScript1:
trainertotext PICNICKER, TIFFANY3, $0
checkflag ENGINE_TIFFANY
iftrue UnknownScript_0xbdbc2
- farscall UnknownScript_0xbe0b6
+ farscall PhoneScript_AnswerPhone_Female
checkflag ENGINE_TIFFANY_TUESDAY_AFTERNOON
iftrue UnknownScript_0xbdbbe
checkflag ENGINE_TIFFANY_HAS_PINK_BOW
@@ -1590,33 +1590,33 @@ UnknownScript_0xbdbbe:
farjump UnknownScript_0xa09a0
UnknownScript_0xbdbc2:
- displaylocation ROUTE_43, $2
+ landmarktotext ROUTE_43, $2
farjump UnknownScript_0xa0a8c
UnknownScript_0xbdbc9:
- displaylocation ROUTE_43, $2
+ landmarktotext ROUTE_43, $2
farjump UnknownScript_0xa0ae5
TiffanyPhoneScript2:
trainertotext PICNICKER, TIFFANY3, $0
- farscall UnknownScript_0xbde45
+ farscall PhoneScript_Random4
if_equal $0, UnknownScript_0xbdc21
- farscall UnknownScript_0xbe41e
+ farscall PhoneScript_GreetPhone_Female
checkflag ENGINE_TIFFANY
iftrue UnknownScript_0xbdc10
checkflag ENGINE_TIFFANY_TUESDAY_AFTERNOON
iftrue UnknownScript_0xbdc10
checkflag ENGINE_TIFFANY_HAS_PINK_BOW
iftrue UnknownScript_0xbdc10
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbdc17
checkevent EVENT_TIFFANY_GAVE_PINK_BOW
iftrue UnknownScript_0xbdc08
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbdc69
UnknownScript_0xbdc08:
- farscall UnknownScript_0xbde4b
+ farscall PhoneScript_Random11
if_equal $0, UnknownScript_0xbdc69
UnknownScript_0xbdc10:
@@ -1626,7 +1626,7 @@ UnknownScript_0xbdc14:
setflag ENGINE_TIFFANY_TUESDAY_AFTERNOON
UnknownScript_0xbdc17:
- displaylocation ROUTE_43, $2
+ landmarktotext ROUTE_43, $2
setflag ENGINE_TIFFANY
farjump UnknownScript_0xa037e
@@ -1668,7 +1668,7 @@ UnknownScript_0xbdc65:
UnknownScript_0xbdc69:
setflag ENGINE_TIFFANY_HAS_PINK_BOW
- displaylocation ROUTE_43, $2
+ landmarktotext ROUTE_43, $2
farjump UnknownScript_0xa061e
; Vance
@@ -1677,7 +1677,7 @@ VancePhoneScript1:
trainertotext BIRD_KEEPER, VANCE1, $0
checkflag ENGINE_VANCE
iftrue UnknownScript_0xbdc96
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_VANCE_WEDNESDAY_NIGHT
iftrue UnknownScript_0xbdc92
checkcode VAR_WEEKDAY
@@ -1689,17 +1689,17 @@ UnknownScript_0xbdc92:
farjump UnknownScript_0xa09a8
UnknownScript_0xbdc96:
- displaylocation ROUTE_44, $2
+ landmarktotext ROUTE_44, $2
farjump UnknownScript_0xa0a91
VancePhoneScript2:
trainertotext BIRD_KEEPER, VANCE1, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_VANCE
iftrue UnknownScript_0xbdcbd
checkflag ENGINE_VANCE_WEDNESDAY_NIGHT
iftrue UnknownScript_0xbdcbd
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbdcc4
if_equal $1, UnknownScript_0xbdcc4
@@ -1710,7 +1710,7 @@ UnknownScript_0xbdcc1:
setflag ENGINE_VANCE_WEDNESDAY_NIGHT
UnknownScript_0xbdcc4:
- displaylocation ROUTE_44, $2
+ landmarktotext ROUTE_44, $2
setflag ENGINE_VANCE
farjump UnknownScript_0xa0376
@@ -1718,7 +1718,7 @@ WiltonPhoneScript1:
trainertotext FISHER, WILTON1, $0
checkflag ENGINE_WILTON
iftrue UnknownScript_0xbdcf7
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_WILTON_THRUSDAY_MORNING
iftrue UnknownScript_0xbdcf3
checkflag ENGINE_WILTON_HAS_ITEM
@@ -1732,25 +1732,25 @@ UnknownScript_0xbdcf3:
farjump UnknownScript_0xa09b0
UnknownScript_0xbdcf7:
- displaylocation ROUTE_44, $2
+ landmarktotext ROUTE_44, $2
farjump UnknownScript_0xa0a96
UnknownScript_0xbdcfe:
- displaylocation ROUTE_44, $2
+ landmarktotext ROUTE_44, $2
farjump UnknownScript_0xa0aed
WiltonPhoneScript2:
trainertotext FISHER, WILTON1, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_WILTON
iftrue UnknownScript_0xbdd2f
checkflag ENGINE_WILTON_THRUSDAY_MORNING
iftrue UnknownScript_0xbdd2f
checkflag ENGINE_WILTON_HAS_ITEM
iftrue UnknownScript_0xbdd2f
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbdd36
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbdd40
UnknownScript_0xbdd2f:
@@ -1760,13 +1760,13 @@ UnknownScript_0xbdd33:
setflag ENGINE_WILTON_THRUSDAY_MORNING
UnknownScript_0xbdd36:
- displaylocation ROUTE_44, $2
+ landmarktotext ROUTE_44, $2
setflag ENGINE_WILTON
farjump UnknownScript_0xa0376
UnknownScript_0xbdd40:
setflag ENGINE_WILTON_HAS_ITEM
- displaylocation ROUTE_44, $2
+ landmarktotext ROUTE_44, $2
clearevent EVENT_WILTON_HAS_ULTRA_BALL
clearevent EVENT_WILTON_HAS_GREAT_BALL
clearevent EVENT_WILTON_HAS_POKE_BALL
@@ -1794,12 +1794,12 @@ UnknownScript_0xbdd6d:
KenjiPhoneScript1:
trainertotext BLACKBELT_T, KENJI3, $0
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
farjump UnknownScript_0xa09ee
KenjiPhoneScript2:
trainertotext BLACKBELT_T, KENJI3, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
farjump UnknownScript_0xa064c
; Parry
@@ -1808,7 +1808,7 @@ ParryPhoneScript1:
trainertotext HIKER, PARRY1, $0
checkflag ENGINE_PARRY
iftrue UnknownScript_0xbddac
- farscall UnknownScript_0xbde4e
+ farscall PhoneScript_AnswerPhone_Male
checkflag ENGINE_PARRY_FRIDAY_AFTERNOON
iftrue UnknownScript_0xbdda8
checkcode VAR_WEEKDAY
@@ -1820,17 +1820,17 @@ UnknownScript_0xbdda8:
farjump UnknownScript_0xa09b8
UnknownScript_0xbddac:
- displaylocation ROUTE_45, $2
+ landmarktotext ROUTE_45, $2
farjump UnknownScript_0xa0a9b
ParryPhoneScript2:
trainertotext HIKER, PARRY1, $0
- farscall UnknownScript_0xbe1b6
+ farscall PhoneScript_GreetPhone_Male
checkflag ENGINE_PARRY
iftrue UnknownScript_0xbddd3
checkflag ENGINE_PARRY_FRIDAY_AFTERNOON
iftrue UnknownScript_0xbddd3
- farscall UnknownScript_0xbde3f
+ farscall PhoneScript_Random2
if_equal $0, UnknownScript_0xbddda
if_equal $1, UnknownScript_0xbddda
@@ -1841,7 +1841,7 @@ UnknownScript_0xbddd7:
setflag ENGINE_PARRY_FRIDAY_AFTERNOON
UnknownScript_0xbddda:
- displaylocation ROUTE_45, $2
+ landmarktotext ROUTE_45, $2
setflag ENGINE_PARRY
farjump UnknownScript_0xa0376
@@ -1851,7 +1851,7 @@ ErinPhoneScript1:
trainertotext PICNICKER, ERIN1, $0
checkflag ENGINE_ERIN
iftrue UnknownScript_0xbde07
- farscall UnknownScript_0xbe0b6
+ farscall PhoneScript_AnswerPhone_Female
checkflag ENGINE_ERIN_SATURDAY_NIGHT
iftrue UnknownScript_0xbde03
checkcode VAR_WEEKDAY
@@ -1863,17 +1863,17 @@ UnknownScript_0xbde03:
farjump UnknownScript_0xa09c0
UnknownScript_0xbde07:
- displaylocation ROUTE_46, $2
+ landmarktotext ROUTE_46, $2
farjump UnknownScript_0xa0aa0
ErinPhoneScript2:
trainertotext PICNICKER, ERIN1, $0
- farscall UnknownScript_0xbe41e
+ farscall PhoneScript_GreetPhone_Female
checkflag ENGINE_ERIN
iftrue UnknownScript_0xbde2e
checkflag ENGINE_ERIN_SATURDAY_NIGHT
iftrue UnknownScript_0xbde2e
- farscall UnknownScript_0xbde42
+ farscall PhoneScript_Random3
if_equal $0, UnknownScript_0xbde35
if_equal $1, UnknownScript_0xbde35
@@ -1884,35 +1884,35 @@ UnknownScript_0xbde32:
setflag ENGINE_ERIN_SATURDAY_NIGHT
UnknownScript_0xbde35:
- displaylocation ROUTE_46, $2
+ landmarktotext ROUTE_46, $2
setflag ENGINE_ERIN
farjump UnknownScript_0xa037e
-UnknownScript_0xbde3f:
- random $2
+PhoneScript_Random2:
+ random 2
end
-UnknownScript_0xbde42:
- random $3
+PhoneScript_Random3:
+ random 3
end
-UnknownScript_0xbde45:
- random $4
+PhoneScript_Random4:
+ random 4
end
-UnknownScript_0xbde48:
- random $5
+PhoneScript_Random5:
+ random 5
end
-UnknownScript_0xbde4b:
- random $b
+PhoneScript_Random11:
+ random 11
end
-UnknownScript_0xbde4e:
+PhoneScript_AnswerPhone_Male:
checkday
- iftrue UnknownScript_0xbdf22
+ iftrue PhoneScript_AnswerPhone_Male_Day
checknite
- iftrue UnknownScript_0xbdfec
+ iftrue PhoneScript_AnswerPhone_Male_Nite
checkcode VAR_CALLERID
if_equal PHONE_SCHOOLBOY_JACK, .Jack
if_equal PHONE_SAILOR_HUEY, .Huey
@@ -1937,105 +1937,105 @@ UnknownScript_0xbde4e:
.Jack:
farwritetext UnknownText_0x1b4dc5
- keeptextopen
+ buttonsound
end
.Huey:
farwritetext UnknownText_0x1b5073
- keeptextopen
+ buttonsound
end
.Gaven:
farwritetext UnknownText_0x1b5270
- keeptextopen
+ buttonsound
end
.Jose:
farwritetext UnknownText_0x1b55ae
- keeptextopen
+ buttonsound
end
.Joey:
farwritetext UnknownText_0x1b589a
- keeptextopen
+ buttonsound
end
.Wade:
farwritetext UnknownText_0x1b5a3b
- keeptextopen
+ buttonsound
end
.Ralph:
farwritetext UnknownText_0x1b5c10
- keeptextopen
+ buttonsound
end
.Anthony:
farwritetext UnknownText_0x1b5f7a
- keeptextopen
+ buttonsound
end
.Todd:
farwritetext UnknownText_0x1b60f5
- keeptextopen
+ buttonsound
end
.Irwin:
farwritetext UnknownText_0x1b638c
- keeptextopen
+ buttonsound
end
.Arnie:
farwritetext UnknownText_0x1b6454
- keeptextopen
+ buttonsound
end
.Alan:
farwritetext UnknownText_0x1b659d
- keeptextopen
+ buttonsound
end
.Chad:
farwritetext UnknownText_0x1b67e2
- keeptextopen
+ buttonsound
end
.Derek:
farwritetext UnknownText_0x1b69a8
- keeptextopen
+ buttonsound
end
.Tully:
farwritetext UnknownText_0x1b6b39
- keeptextopen
+ buttonsound
end
.Brent:
farwritetext UnknownText_0x1b6c96
- keeptextopen
+ buttonsound
end
.Vance:
farwritetext UnknownText_0x1b7019
- keeptextopen
+ buttonsound
end
.Wilton:
farwritetext UnknownText_0x1b71d5
- keeptextopen
+ buttonsound
end
.Kenji:
farwritetext UnknownText_0x1b730b
- keeptextopen
+ buttonsound
end
.Parry:
farwritetext UnknownText_0x1b73c7
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbdf22:
+PhoneScript_AnswerPhone_Male_Day:
checkcode VAR_CALLERID
if_equal PHONE_SCHOOLBOY_JACK, .Jack
if_equal PHONE_SAILOR_HUEY, .Huey
@@ -2060,105 +2060,105 @@ UnknownScript_0xbdf22:
.Jack:
farwritetext UnknownText_0x1b4ded
- keeptextopen
+ buttonsound
end
.Huey:
farwritetext UnknownText_0x1b509b
- keeptextopen
+ buttonsound
end
.Gaven:
farwritetext UnknownText_0x1b52a5
- keeptextopen
+ buttonsound
end
.Jose:
farwritetext UnknownText_0x1b55da
- keeptextopen
+ buttonsound
end
.Joey:
farwritetext UnknownText_0x1b58c2
- keeptextopen
+ buttonsound
end
.Wade:
farwritetext UnknownText_0x1b5a74
- keeptextopen
+ buttonsound
end
.Ralph:
farwritetext UnknownText_0x1b5c63
- keeptextopen
+ buttonsound
end
.Anthony:
farwritetext UnknownText_0x1b5f9e
- keeptextopen
+ buttonsound
end
.Todd:
farwritetext UnknownText_0x1b611b
- keeptextopen
+ buttonsound
end
.Irwin:
farwritetext UnknownText_0x1b63a8
- keeptextopen
+ buttonsound
end
.Arnie:
farwritetext UnknownText_0x1b647e
- keeptextopen
+ buttonsound
end
.Alan:
farwritetext UnknownText_0x1b65c7
- keeptextopen
+ buttonsound
end
.Chad:
farwritetext UnknownText_0x1b680e
- keeptextopen
+ buttonsound
end
.Derek:
farwritetext UnknownText_0x1b69d2
- keeptextopen
+ buttonsound
end
.Tully:
farwritetext UnknownText_0x1b6b65
- keeptextopen
+ buttonsound
end
.Brent:
farwritetext UnknownText_0x1b6cc6
- keeptextopen
+ buttonsound
end
.Vance:
farwritetext UnknownText_0x1b7057
- keeptextopen
+ buttonsound
end
.Wilton:
farwritetext UnknownText_0x1b71fc
- keeptextopen
+ buttonsound
end
.Kenji:
farwritetext UnknownText_0x1b7331
- keeptextopen
+ buttonsound
end
.Parry:
farwritetext UnknownText_0x1b73ef
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbdfec:
+PhoneScript_AnswerPhone_Male_Nite:
checkcode VAR_CALLERID
if_equal PHONE_SCHOOLBOY_JACK, .Jack
if_equal PHONE_SAILOR_HUEY, .Huey
@@ -2183,109 +2183,109 @@ UnknownScript_0xbdfec:
.Jack:
farwritetext UnknownText_0x1b4e16
- keeptextopen
+ buttonsound
end
.Huey:
farwritetext UnknownText_0x1b50c2
- keeptextopen
+ buttonsound
end
.Gaven:
farwritetext UnknownText_0x1b52cc
- keeptextopen
+ buttonsound
end
.Jose:
farwritetext UnknownText_0x1b55fc
- keeptextopen
+ buttonsound
end
.Joey:
farwritetext UnknownText_0x1b58ea
- keeptextopen
+ buttonsound
end
.Wade:
farwritetext UnknownText_0x1b5a9f
- keeptextopen
+ buttonsound
end
.Ralph:
farwritetext UnknownText_0x1b5cb6
- keeptextopen
+ buttonsound
end
.Anthony:
farwritetext UnknownText_0x1b5fc9
- keeptextopen
+ buttonsound
end
.Todd:
farwritetext UnknownText_0x1b6149
- keeptextopen
+ buttonsound
end
.Irwin:
farwritetext UnknownText_0x1b63c4
- keeptextopen
+ buttonsound
end
.Arnie:
farwritetext UnknownText_0x1b64a8
- keeptextopen
+ buttonsound
end
.Alan:
farwritetext UnknownText_0x1b65e3
- keeptextopen
+ buttonsound
end
.Chad:
farwritetext UnknownText_0x1b6836
- keeptextopen
+ buttonsound
end
.Derek:
farwritetext UnknownText_0x1b69f8
- keeptextopen
+ buttonsound
end
.Tully:
farwritetext UnknownText_0x1b6b92
- keeptextopen
+ buttonsound
end
.Brent:
farwritetext UnknownText_0x1b6cf6
- keeptextopen
+ buttonsound
end
.Vance:
farwritetext UnknownText_0x1b7092
- keeptextopen
+ buttonsound
end
.Wilton:
farwritetext UnknownText_0x1b722a
- keeptextopen
+ buttonsound
end
.Kenji:
farwritetext UnknownText_0x1b7357
- keeptextopen
+ buttonsound
end
.Parry:
farwritetext UnknownText_0x1b7417
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe0b6:
+PhoneScript_AnswerPhone_Female:
checkday
- iftrue UnknownScript_0xbe112
+ iftrue PhoneScript_AnswerPhone_Female_Day
checknite
- iftrue UnknownScript_0xbe164
+ iftrue PhoneScript_AnswerPhone_Female_Nite
checkcode VAR_CALLERID
if_equal PHONE_POKEFAN_BEVERLY, .Beverly
if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2298,45 +2298,45 @@ UnknownScript_0xbe0b6:
.Beverly:
farwritetext UnknownText_0x1b4f21
- keeptextopen
+ buttonsound
end
.Beth:
farwritetext UnknownText_0x1b53f7
- keeptextopen
+ buttonsound
end
.Reena:
farwritetext UnknownText_0x1b5702
- keeptextopen
+ buttonsound
end
.Liz:
farwritetext UnknownText_0x1b5d9f
- keeptextopen
+ buttonsound
end
.Gina:
farwritetext UnknownText_0x1b626a
- keeptextopen
+ buttonsound
end
.Dana:
farwritetext UnknownText_0x1b66c8
- keeptextopen
+ buttonsound
end
.Tiffany:
farwritetext UnknownText_0x1b6e7c
- keeptextopen
+ buttonsound
end
.Erin:
farwritetext UnknownText_0x1b751a
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe112:
+PhoneScript_AnswerPhone_Female_Day:
checkcode VAR_CALLERID
if_equal PHONE_POKEFAN_BEVERLY, .Beverly
if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2349,45 +2349,45 @@ UnknownScript_0xbe112:
.Beverly:
farwritetext UnknownText_0x1b4f4d
- keeptextopen
+ buttonsound
end
.Beth:
farwritetext UnknownText_0x1b5424
- keeptextopen
+ buttonsound
end
.Reena:
farwritetext UnknownText_0x1b572e
- keeptextopen
+ buttonsound
end
.Liz:
farwritetext UnknownText_0x1b5dcc
- keeptextopen
+ buttonsound
end
.Gina:
farwritetext UnknownText_0x1b6296
- keeptextopen
+ buttonsound
end
.Dana:
farwritetext UnknownText_0x1b66ec
- keeptextopen
+ buttonsound
end
.Tiffany:
farwritetext UnknownText_0x1b6ea6
- keeptextopen
+ buttonsound
end
.Erin:
farwritetext UnknownText_0x1b7548
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe164:
+PhoneScript_AnswerPhone_Female_Nite:
checkcode VAR_CALLERID
if_equal PHONE_POKEFAN_BEVERLY, .Beverly
if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2400,49 +2400,49 @@ UnknownScript_0xbe164:
.Beverly:
farwritetext UnknownText_0x1b4f75
- keeptextopen
+ buttonsound
end
.Beth:
farwritetext UnknownText_0x1b5446
- keeptextopen
+ buttonsound
end
.Reena:
farwritetext UnknownText_0x1b575a
- keeptextopen
+ buttonsound
end
.Liz:
farwritetext UnknownText_0x1b5df8
- keeptextopen
+ buttonsound
end
.Gina:
farwritetext UnknownText_0x1b62c5
- keeptextopen
+ buttonsound
end
.Dana:
farwritetext UnknownText_0x1b6713
- keeptextopen
+ buttonsound
end
.Tiffany:
farwritetext UnknownText_0x1b6ec9
- keeptextopen
+ buttonsound
end
.Erin:
farwritetext UnknownText_0x1b756f
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe1b6:
+PhoneScript_GreetPhone_Male:
checkday
- iftrue UnknownScript_0xbe28a
+ iftrue PhoneScript_GreetPhone_Male_Day
checknite
- iftrue UnknownScript_0xbe354
+ iftrue PhoneScript_GreetPhone_Male_Nite
checkcode VAR_CALLERID
if_equal PHONE_SCHOOLBOY_JACK, .Jack
if_equal PHONE_SAILOR_HUEY, .Huey
@@ -2467,105 +2467,105 @@ UnknownScript_0xbe1b6:
.Jack:
farwritetext UnknownText_0x1b4e3e
- keeptextopen
+ buttonsound
end
.Huey:
farwritetext UnknownText_0x1b50e9
- keeptextopen
+ buttonsound
end
.Gaven:
farwritetext UnknownText_0x1b5301
- keeptextopen
+ buttonsound
end
.Jose:
farwritetext UnknownText_0x1b5628
- keeptextopen
+ buttonsound
end
.Joey:
farwritetext UnknownText_0x1b5912
- keeptextopen
+ buttonsound
end
.Wade:
farwritetext UnknownText_0x1b5ad8
- keeptextopen
+ buttonsound
end
.Ralph:
farwritetext UnknownText_0x1b5d09
- keeptextopen
+ buttonsound
end
.Anthony:
farwritetext UnknownText_0x1b5ff6
- keeptextopen
+ buttonsound
end
.Todd:
farwritetext UnknownText_0x1b616e
- keeptextopen
+ buttonsound
end
.Irwin:
farwritetext UnknownText_0x1b63e3
- keeptextopen
+ buttonsound
end
.Arnie:
farwritetext UnknownText_0x1b64d2
- keeptextopen
+ buttonsound
end
.Alan:
farwritetext UnknownText_0x1b660d
- keeptextopen
+ buttonsound
end
.Chad:
farwritetext UnknownText_0x1b6862
- keeptextopen
+ buttonsound
end
.Derek:
farwritetext UnknownText_0x1b6a22
- keeptextopen
+ buttonsound
end
.Tully:
farwritetext UnknownText_0x1b6bb9
- keeptextopen
+ buttonsound
end
.Brent:
farwritetext UnknownText_0x1b6d26
- keeptextopen
+ buttonsound
end
.Vance:
farwritetext UnknownText_0x1b70e7
- keeptextopen
+ buttonsound
end
.Wilton:
farwritetext UnknownText_0x1b725c
- keeptextopen
+ buttonsound
end
.Kenji:
farwritetext UnknownText_0x1b737f
- keeptextopen
+ buttonsound
end
.Parry:
farwritetext UnknownText_0x1b743f
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe28a:
+PhoneScript_GreetPhone_Male_Day:
checkcode VAR_CALLERID
if_equal PHONE_SCHOOLBOY_JACK, .Jack
if_equal PHONE_SAILOR_HUEY, .Huey
@@ -2590,105 +2590,105 @@ UnknownScript_0xbe28a:
.Jack:
farwritetext UnknownText_0x1b4e72
- keeptextopen
+ buttonsound
end
.Huey:
farwritetext UnknownText_0x1b511a
- keeptextopen
+ buttonsound
end
.Gaven:
farwritetext UnknownText_0x1b5335
- keeptextopen
+ buttonsound
end
.Jose:
farwritetext UnknownText_0x1b564c
- keeptextopen
+ buttonsound
end
.Joey:
farwritetext UnknownText_0x1b5948
- keeptextopen
+ buttonsound
end
.Wade:
farwritetext UnknownText_0x1b5b0b
- keeptextopen
+ buttonsound
end
.Ralph:
farwritetext UnknownText_0x1b5d21
- keeptextopen
+ buttonsound
end
.Anthony:
farwritetext UnknownText_0x1b6017
- keeptextopen
+ buttonsound
end
.Todd:
farwritetext UnknownText_0x1b618f
- keeptextopen
+ buttonsound
end
.Irwin:
farwritetext UnknownText_0x1b6407
- keeptextopen
+ buttonsound
end
.Arnie:
farwritetext UnknownText_0x1b6506
- keeptextopen
+ buttonsound
end
.Alan:
farwritetext UnknownText_0x1b6624
- keeptextopen
+ buttonsound
end
.Chad:
farwritetext UnknownText_0x1b6890
- keeptextopen
+ buttonsound
end
.Derek:
farwritetext UnknownText_0x1b6a56
- keeptextopen
+ buttonsound
end
.Tully:
farwritetext UnknownText_0x1b6bef
- keeptextopen
+ buttonsound
end
.Brent:
farwritetext UnknownText_0x1b6d57
- keeptextopen
+ buttonsound
end
.Vance:
farwritetext UnknownText_0x1b7112
- keeptextopen
+ buttonsound
end
.Wilton:
farwritetext UnknownText_0x1b7283
- keeptextopen
+ buttonsound
end
.Kenji:
farwritetext UnknownText_0x1b7397
- keeptextopen
+ buttonsound
end
.Parry:
farwritetext UnknownText_0x1b746f
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe354:
+PhoneScript_GreetPhone_Male_Nite:
checkcode VAR_CALLERID
if_equal PHONE_SCHOOLBOY_JACK, .Jack
if_equal PHONE_SAILOR_HUEY, .Huey
@@ -2713,109 +2713,109 @@ UnknownScript_0xbe354:
.Jack:
farwritetext UnknownText_0x1b4e9e
- keeptextopen
+ buttonsound
end
.Huey:
farwritetext UnknownText_0x1b5154
- keeptextopen
+ buttonsound
end
.Gaven:
farwritetext UnknownText_0x1b535f
- keeptextopen
+ buttonsound
end
.Jose:
farwritetext UnknownText_0x1b5670
- keeptextopen
+ buttonsound
end
.Joey:
farwritetext UnknownText_0x1b597c
- keeptextopen
+ buttonsound
end
.Wade:
farwritetext UnknownText_0x1b5b37
- keeptextopen
+ buttonsound
end
.Ralph:
farwritetext UnknownText_0x1b5d39
- keeptextopen
+ buttonsound
end
.Anthony:
farwritetext UnknownText_0x1b6041
- keeptextopen
+ buttonsound
end
.Todd:
farwritetext UnknownText_0x1b61bd
- keeptextopen
+ buttonsound
end
.Irwin:
farwritetext UnknownText_0x1b642c
- keeptextopen
+ buttonsound
end
.Arnie:
farwritetext UnknownText_0x1b6539
- keeptextopen
+ buttonsound
end
.Alan:
farwritetext UnknownText_0x1b663b
- keeptextopen
+ buttonsound
end
.Chad:
farwritetext UnknownText_0x1b68ba
- keeptextopen
+ buttonsound
end
.Derek:
farwritetext UnknownText_0x1b6a8b
- keeptextopen
+ buttonsound
end
.Tully:
farwritetext UnknownText_0x1b6c23
- keeptextopen
+ buttonsound
end
.Brent:
farwritetext UnknownText_0x1b6d88
- keeptextopen
+ buttonsound
end
.Vance:
farwritetext UnknownText_0x1b7132
- keeptextopen
+ buttonsound
end
.Wilton:
farwritetext UnknownText_0x1b72a5
- keeptextopen
+ buttonsound
end
.Kenji:
farwritetext UnknownText_0x1b73af
- keeptextopen
+ buttonsound
end
.Parry:
farwritetext UnknownText_0x1b749b
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe41e:
+PhoneScript_GreetPhone_Female:
checkday
- iftrue UnknownScript_0xbe47a
+ iftrue PhoneScript_GreetPhone_Female_Day
checknite
- iftrue UnknownScript_0xbe4cc
+ iftrue PhoneScript_GreetPhone_Female_Nite
checkcode VAR_CALLERID
if_equal PHONE_POKEFAN_BEVERLY, .Beverly
if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2828,45 +2828,45 @@ UnknownScript_0xbe41e:
.Beverly:
farwritetext UnknownText_0x1b4fa1
- keeptextopen
+ buttonsound
end
.Beth:
farwritetext UnknownText_0x1b5472
- keeptextopen
+ buttonsound
end
.Reena:
farwritetext UnknownText_0x1b5786
- keeptextopen
+ buttonsound
end
.Liz:
farwritetext UnknownText_0x1b5e25
- keeptextopen
+ buttonsound
end
.Gina:
farwritetext UnknownText_0x1b62f1
- keeptextopen
+ buttonsound
end
.Dana:
farwritetext UnknownText_0x1b6738
- keeptextopen
+ buttonsound
end
.Tiffany:
farwritetext UnknownText_0x1b6ef3
- keeptextopen
+ buttonsound
end
.Erin:
farwritetext UnknownText_0x1b758f
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe47a:
+PhoneScript_GreetPhone_Female_Day:
checkcode VAR_CALLERID
if_equal PHONE_POKEFAN_BEVERLY, .Beverly
if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2879,45 +2879,45 @@ UnknownScript_0xbe47a:
.Beverly:
farwritetext UnknownText_0x1b4fda
- keeptextopen
+ buttonsound
end
.Beth:
farwritetext UnknownText_0x1b54a6
- keeptextopen
+ buttonsound
end
.Reena:
farwritetext UnknownText_0x1b57b7
- keeptextopen
+ buttonsound
end
.Liz:
farwritetext UnknownText_0x1b5e59
- keeptextopen
+ buttonsound
end
.Gina:
farwritetext UnknownText_0x1b630e
- keeptextopen
+ buttonsound
end
.Dana:
farwritetext UnknownText_0x1b6757
- keeptextopen
+ buttonsound
end
.Tiffany:
farwritetext UnknownText_0x1b6f1c
- keeptextopen
+ buttonsound
end
.Erin:
farwritetext UnknownText_0x1b75ac
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe4cc:
+PhoneScript_GreetPhone_Female_Nite:
checkcode VAR_CALLERID
if_equal PHONE_POKEFAN_BEVERLY, .Beverly
if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -2930,45 +2930,45 @@ UnknownScript_0xbe4cc:
.Beverly:
farwritetext UnknownText_0x1b5004
- keeptextopen
+ buttonsound
end
.Beth:
farwritetext UnknownText_0x1b54d4
- keeptextopen
+ buttonsound
end
.Reena:
farwritetext UnknownText_0x1b57e8
- keeptextopen
+ buttonsound
end
.Liz:
farwritetext UnknownText_0x1b5e8e
- keeptextopen
+ buttonsound
end
.Gina:
farwritetext UnknownText_0x1b6331
- keeptextopen
+ buttonsound
end
.Dana:
farwritetext UnknownText_0x1b6776
- keeptextopen
+ buttonsound
end
.Tiffany:
farwritetext UnknownText_0x1b6f37
- keeptextopen
+ buttonsound
end
.Erin:
farwritetext UnknownText_0x1b75c9
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe51e:
+PhoneScript_Generic_Male:
checkcode VAR_CALLERID
if_equal PHONE_SCHOOLBOY_JACK, .Jack
if_equal PHONE_COOLTRAINERM_GAVEN, .Gaven
@@ -2990,95 +2990,95 @@ UnknownScript_0xbe51e:
.Jack:
farwritetext UnknownText_0x1b4ecd
- keeptextopen
+ buttonsound
end
.Unknown:
farwritetext UnknownText_0x1b518b
- keeptextopen
+ buttonsound
end
.Gaven:
farwritetext UnknownText_0x1b5393
- keeptextopen
+ buttonsound
end
.Jose:
farwritetext UnknownText_0x1b5694
- keeptextopen
+ buttonsound
end
.Joey:
farwritetext UnknownText_0x1b59b2
- keeptextopen
+ buttonsound
end
.Wade:
farwritetext UnknownText_0x1b5b68
- keeptextopen
+ buttonsound
end
.Ralph:
farwritetext UnknownText_0x1b5d51
- keeptextopen
+ buttonsound
end
.Anthony:
farwritetext UnknownText_0x1b606f
- keeptextopen
+ buttonsound
end
.Todd:
farwritetext UnknownText_0x1b61f2
- keeptextopen
+ buttonsound
end
.Arnie:
farwritetext UnknownText_0x1b656c
- keeptextopen
+ buttonsound
end
.Alan:
farwritetext UnknownText_0x1b6652
- keeptextopen
+ buttonsound
end
.Chad:
farwritetext UnknownText_0x1b68e8
- keeptextopen
+ buttonsound
end
.Derek:
farwritetext UnknownText_0x1b6ac2
- keeptextopen
+ buttonsound
end
.Tully:
farwritetext UnknownText_0x1b6c56
- keeptextopen
+ buttonsound
end
.Brent:
farwritetext UnknownText_0x1b6db9
- keeptextopen
+ buttonsound
end
.Vance:
farwritetext UnknownText_0x1b7161
- keeptextopen
+ buttonsound
end
.Wilton:
farwritetext UnknownText_0x1b72d0
- keeptextopen
+ buttonsound
end
.Parry:
farwritetext UnknownText_0x1b74c8
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe5d0:
+PhoneScript_Generic_Female:
checkcode VAR_CALLERID
if_equal PHONE_POKEFAN_BEVERLY, .Beverly
if_equal PHONE_COOLTRAINERF_BETH, .Beth
@@ -3091,59 +3091,59 @@ UnknownScript_0xbe5d0:
.Beverly:
farwritetext UnknownText_0x1b502b
- keeptextopen
+ buttonsound
end
.Beth:
farwritetext UnknownText_0x1b5510
- keeptextopen
+ buttonsound
end
.Reena:
farwritetext UnknownText_0x1b5819
- keeptextopen
+ buttonsound
end
.Liz:
farwritetext UnknownText_0x1b5ebe
- keeptextopen
+ buttonsound
end
.Gina:
farwritetext UnknownText_0x1b6352
- keeptextopen
+ buttonsound
end
.Dana:
farwritetext UnknownText_0x1b6795
- keeptextopen
+ buttonsound
end
.Tiffany:
farwritetext UnknownText_0x1b6f60
- keeptextopen
+ buttonsound
end
.Erin:
farwritetext UnknownText_0x1b75e5
- keeptextopen
+ buttonsound
end
-UnknownScript_0xbe622:
+PhoneScript_MonFlavorText:
special RandomPhoneMon
- farscall UnknownScript_0xbde3f
- if_equal $0, UnknownScript_0xbe636
+ farscall PhoneScript_Random2
+ if_equal $0, .TooEnergetic
farwritetext UnknownText_0x1b518b
- keeptextopen
- farjump UnknownScript_0xa0484
+ buttonsound
+ farjump PhoneScript_HangupText_Male
-UnknownScript_0xbe636:
- farjump UnknownScript_0xbe63a
+.TooEnergetic:
+ farjump .unnecessary
-UnknownScript_0xbe63a:
+.unnecessary:
farwritetext UnknownText_0x1b522b
- keeptextopen
- farjump UnknownScript_0xa0484
+ buttonsound
+ farjump PhoneScript_HangupText_Male
; be643
diff --git a/engine/pokecenter_pc.asm b/engine/pokecenter_pc.asm
index 064b35a6c..1b6a1da2f 100755
--- a/engine/pokecenter_pc.asm
+++ b/engine/pokecenter_pc.asm
@@ -12,7 +12,7 @@ PokemonCenterPC: ; 1559a
xor a
ld [hBGMapMode], a
call .ChooseWhichPCListToUse
- ld [wcf76], a
+ ld [wWhichIndexSet], a
call DoNthMenu
jr c, .shutdown
ld a, [MenuSelection]
@@ -140,7 +140,7 @@ HallOfFamePC: ; 1569a
call PC_PlayChoosePCSound
call FadeToMenu
callba _HallOfFamePC
- call ReturnToCallingMenu
+ call CloseSubmenu
and a
ret
; 156ab
@@ -208,7 +208,7 @@ UnknownText_0x156ff: ; 0x156ff
_PlayersPC: ; 15704
ld a, b
- ld [wcf76], a
+ ld [wWhichIndexSet], a
ld hl, UnknownText_0x157cc
call PC_DisplayTextWaitMenu
call Function15715
@@ -323,7 +323,7 @@ KrisWithdrawItemMenu: ; 0x157d1
jr .asm_157da
.asm_157e4
- call ReturnToCallingMenu
+ call CloseSubmenu
xor a
ret
; 0x157e9
@@ -343,7 +343,7 @@ Function157e9: ; 0x157e9
.askquantity
ld hl, .HowManyText
call MenuTextBox
- callba Function24fbf
+ callba SelectQuantityToToss
call ExitMenu
call ExitMenu
jr c, .done
@@ -403,7 +403,7 @@ KrisTossItemMenu: ; 0x1585f
jr .asm_15868
.asm_15878
- call ReturnToCallingMenu
+ call CloseSubmenu
xor a
ret
; 0x1587d
@@ -431,9 +431,9 @@ KrisDepositItemMenu: ; 0x1588b
jr c, .asm_158b6
call DisableSpriteUpdates
call LoadStandardMenuDataHeader
- callba Function106a5
+ callba DepositSellInitPackBuffers
.asm_1589c
- callba Function106be
+ callba DepositSellPack
ld a, [wcf66]
and a
jr z, .asm_158b3
@@ -442,7 +442,7 @@ KrisDepositItemMenu: ; 0x1588b
jr .asm_1589c
.asm_158b3
- call ReturnToCallingMenu
+ call CloseSubmenu
.asm_158b6
xor a
@@ -516,7 +516,7 @@ Function1590a: ; 0x1590a
.asm_1591d
ld hl, .HowManyText
call MenuTextBox
- callba Function24fbf
+ callba SelectQuantityToToss
push af
call ExitMenu
call ExitMenu
@@ -591,17 +591,17 @@ Function15985: ; 0x15985
ld [wMenuCursorBuffer], a
ld a, [wd0dd]
ld [wMenuScrollPosition], a
- call HandleScrollingMenu
+ call ScrollingMenu
ld a, [wMenuScrollPosition]
ld [wd0dd], a
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wd0d7], a
pop af
ld [wSpriteUpdatesEnabled], a
ld a, [wd0e3]
and a
jr nz, .asm_159d8
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp $2
jr z, .asm_15a06
cp $1
@@ -611,7 +611,7 @@ Function15985: ; 0x15985
jr .asm_159f8
.asm_159d8
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp $2
jr z, .asm_159e9
cp $1
@@ -629,14 +629,14 @@ Function15985: ; 0x15985
call Function156c7
.asm_159f2
- callba Function2490c
+ callba SwitchItemsInBag
.asm_159f8
jp .asm_15989
.asm_159fb
callba Function24706
- call Function1bee
+ call PlaceHollowCursor
and a
ret
diff --git a/engine/pokedex.asm b/engine/pokedex.asm
index d150ee471..14b1ebbce 100644
--- a/engine/pokedex.asm
+++ b/engine/pokedex.asm
@@ -31,7 +31,7 @@ Pokedex: ; 40000
ld a, [wJumptableIndex]
bit 7, a
jr nz, .exit
- call Function4010b
+ call Pokedex_Main
call DelayFrame
jr .main
@@ -40,8 +40,8 @@ Pokedex: ; 40000
call PlaySFX
call WaitSFX
call ClearSprites
- ld a, [wc7d4]
- ld [wd959], a
+ ld a, [wCurrentDexMode]
+ ld [wLastDexMode], a
pop af
ld [hInMenu], a
@@ -63,7 +63,7 @@ InitPokedex: ; 40063
call ClearBGPalettes
call ClearSprites
call ClearTileMap
- call Function414b7
+ call Pokedex_LoadGFX
ld hl, wPokedexDataStart
ld bc, wPokedexDataEnd - wPokedexDataStart
@@ -76,78 +76,78 @@ InitPokedex: ; 40063
ld [wcf65], a
ld [wcf66], a
- call Function400a2
+ call Pokedex_CheckUnlockedUnownMode
- ld a, [wd959]
- ld [wc7d4], a
+ ld a, [wLastDexMode]
+ ld [wCurrentDexMode], a
- call Function40bdc
- call Function400b4
- call Function400ed
+ call Pokedex_ChangeMode
+ call Pokedex_InitCursorPosition
+ call Pokedex_GetLandmark
callba Function1de247
- call Function41af7
+ call Pokedex_ResetBGMapMode
ret
; 400a2
-Function400a2: ; 400a2
+Pokedex_CheckUnlockedUnownMode: ; 400a2
ld a, [StatusFlags]
bit 1, a
- jr nz, .asm_400ae
+ jr nz, .unlocked
xor a
- ld [wc7dc], a
+ ld [wUnlockedUnownMode], a
ret
-.asm_400ae
- ld a, 1
- ld [wc7dc], a
+.unlocked
+ ld a, TRUE
+ ld [wUnlockedUnownMode], a
ret
; 400b4
-Function400b4: ; 400b4
- ld hl, wc6d0
- ld a, [wc2d6]
+Pokedex_InitCursorPosition: ; 400b4
+ ld hl, wPokedexDataStart
+ ld a, [wLastDexEntry]
and a
- jr z, .asm_400ec
- cp $fc
- jr nc, .asm_400ec
+ jr z, .done
+ cp NUM_POKEMON + 1
+ jr nc, .done
ld b, a
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
cp $8
- jr c, .asm_400db
+ jr c, .only_one_page
sub $7
ld c, a
-.asm_400cc
+.loop1
ld a, b
cp [hl]
- jr z, .asm_400ec
+ jr z, .done
inc hl
- ld a, [wc7d0]
+ ld a, [wDexListingPage]
inc a
- ld [wc7d0], a
+ ld [wDexListingPage], a
dec c
- jr nz, .asm_400cc
+ jr nz, .loop1
-.asm_400db
+.only_one_page
ld c, $7
-.asm_400dd
+.loop2
ld a, b
cp [hl]
- jr z, .asm_400ec
+ jr z, .done
inc hl
- ld a, [wc7d1]
+ ld a, [wDexListingCursor]
inc a
- ld [wc7d1], a
+ ld [wDexListingCursor], a
dec c
- jr nz, .asm_400dd
+ jr nz, .loop2
-.asm_400ec
+.done
ret
; 400ed
-Function400ed: ; 400ed
+Pokedex_GetLandmark: ; 400ed
ld a, [MapGroup]
ld b, a
ld a, [MapNumber]
@@ -155,7 +155,7 @@ Function400ed: ; 400ed
call GetWorldMapLocation
cp SPECIAL_MAP
- jr nz, .asm_40107
+ jr nz, .load
ld a, [BackupMapGroup]
ld b, a
@@ -163,20 +163,20 @@ Function400ed: ; 400ed
ld c, a
call GetWorldMapLocation
-.asm_40107
- ld [wc7e4], a
+.load
+ ld [wDexCurrentLocation], a
ret
; 4010b
-Function4010b: ; 4010b
+Pokedex_Main: ; 4010b
ld a, [wJumptableIndex]
- ld hl, Jumptable_40115
- call Function41432
+ ld hl, .Jumptable
+ call Pokedex_LoadPointer
jp [hl]
; 40115
-Jumptable_40115: ; 40115 (10:4115)
+.Jumptable: ; 40115 (10:4115)
dw Function4013c
dw Function401ae
dw Function40217
@@ -188,17 +188,17 @@ Jumptable_40115: ; 40115 (10:4115)
dw Function403be
dw Function4050a
dw Function40562
- dw Function405bd
+ dw Pokedex_UnownMode ; Unown Dex
dw Function405df
- dw Function40136
+ dw Pokedex_CloseDex ; Exit
-Function40131: ; 40131 (10:4131)
+Pokedex_IncrementDexPointer: ; 40131 (10:4131)
ld hl, wJumptableIndex
inc [hl]
ret
-Function40136: ; 40136 (10:4136)
+Pokedex_CloseDex: ; 40136 (10:4136)
ld hl, wJumptableIndex
set 7, [hl]
ret
@@ -209,45 +209,46 @@ Function4013c: ; 4013c (10:413c)
call ClearSprites
xor a
hlcoord 0, 0, AttrMap
- ld bc, $168
+ ld bc, SCREEN_HEIGHT * SCREEN_WIDTH
call ByteFill
- callba Function1de171
+ callba DrawPokedexListWindow
hlcoord 0, 17
ld de, String_START_SEARCH
- call Function40acd
+ call Pokedex_PlaceString
ld a, $7
ld [wc7d3], a
call Function40b0f
- call Function41aeb
- call Function41af7
+ call Pokedex_SetBGMapMode_3ifDMG_4ifCGB
+ call Pokedex_ResetBGMapMode
call Function4074c
ld a, $5
ld [hSCX], a
- ld a, [wc7d4]
- cp $1
+
+ ld a, [wCurrentDexMode]
+ cp DEXMODE_OLD
ld a, $4a
- jr z, .asm_4017b
+ jr z, .okay
ld a, $47
-
-.asm_4017b
+.okay
ld [hWX], a
xor a
ld [hWY], a
call WaitBGMap
- call Function41af7
- ld a, $ff
+
+ call Pokedex_ResetBGMapMode
+ ld a, -1
ld [CurPartySpecies], a
ld a, $4
call Function41423
call Function41148
- callba Function1de171
+ callba DrawPokedexListWindow
hlcoord 0, 17
ld de, String_START_SEARCH
- call Function40acd
+ call Pokedex_PlaceString
ld a, $7
ld [wc7d3], a
call Function40b0f
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function401ae: ; 401ae (10:41ae)
@@ -270,13 +271,13 @@ Function401ae: ; 401ae (10:41ae)
xor a
ld [hBGMapMode], a
call Function40b0f
- call Function41ad7
- call Function41af7
+ call Pokedex_SetBGMapMode3
+ call Pokedex_ResetBGMapMode
ret
.a
- call Function40bb1
- call Function40bd0
+ call Pokedex_GetMonAtCursorPosition
+ call Pokedex_CheckSeen
ret z
ld a, $2
ld [wJumptableIndex], a
@@ -318,27 +319,27 @@ Function40217: ; 40217 (10:4217)
xor a
ld [hBGMapMode], a
call ClearSprites
- call Function41478
+ call Pokedex_LoadCurrentFootprint
call Function407fd
call Function4134f
- call Function40bb1
- ld [wc2d6], a
- callba Function4424d
- call Function40ba0
+ call Pokedex_GetMonAtCursorPosition
+ ld [wLastDexEntry], a
+ callba DisplayDexEntry
+ call Pokedex_DrawFootprint
call WaitBGMap
ld a, $a7
ld [hWX], a
- call Function40bb1
+ call Pokedex_GetMonAtCursorPosition
ld [CurPartySpecies], a
ld a, $4
call Function41423
ld a, [CurPartySpecies]
call PlayCry
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function40258: ; 40258 (10:4258)
- ld de, Unknown_402e8
+ ld de, DexEntryPage_JoypadCoords
call Function4135a
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
@@ -347,38 +348,38 @@ Function40258: ; 40258 (10:4258)
ld a, [hl]
and A_BUTTON
jr nz, .a
- call Function4066c
+ call Pokedex_NextOrPreviousDexEntry
ret nc
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
.a
ld a, [wc7d8]
- ld hl, Jumptable_402f2
- call Function41432
+ ld hl, DexEntryPage_Jumptable
+ call Pokedex_LoadPointer
jp [hl]
.b
ld a, [LastVolume]
and a
- jr z, .asm_40288
+ jr z, .max_volume
ld a, $77
ld [LastVolume], a
-.asm_40288
+.max_volume
call MaxVolume
ld a, [wcf64]
ld [wJumptableIndex], a
ret
; 40292 (10:4292)
-Function40292: ; 40292
+Pokedex_Page: ; 40292
ld a, [wPokedexStatus]
xor $1
ld [wPokedexStatus], a
- call Function40bb1
- ld [wc2d6], a
- callba Function4424d
+ call Pokedex_GetMonAtCursorPosition
+ ld [wLastDexEntry], a
+ callba DisplayDexEntry
call WaitBGMap
ret
; 402aa
@@ -391,14 +392,14 @@ Function402aa: ; 402aa (10:42aa)
ld [hBGMapMode], a
call Function407fd
call Function4134f
- call Function41478
- call Function40bb1
- ld [wc2d6], a
- callba Function4424d
- call Function40ba0
+ call Pokedex_LoadCurrentFootprint
+ call Pokedex_GetMonAtCursorPosition
+ ld [wLastDexEntry], a
+ callba DisplayDexEntry
+ call Pokedex_DrawFootprint
call Function4143b
call WaitBGMap
- call Function40bb1
+ call Pokedex_GetMonAtCursorPosition
ld [CurPartySpecies], a
ld a, $4
call Function41423
@@ -409,22 +410,23 @@ Function402aa: ; 402aa (10:42aa)
ret
; 402e8 (10:42e8)
-Unknown_402e8: ; 402e8
- dw $0430
+DexEntryPage_JoypadCoords: ; 402e8
+ db D_RIGHT | D_LEFT, 4
dwcoord 1, 17
dwcoord 6, 17
dwcoord 11, 17
dwcoord 15, 17
+
; 402f2
-Jumptable_402f2: ; 402f2
- dw Function40292
- dw Function402fa
- dw Function40340
- dw Function4034f
+DexEntryPage_Jumptable: ; 402f2
+ dw Pokedex_Page
+ dw .Area
+ dw .Cry
+ dw .Print
; 402fa
-Function402fa: ; 402fa
+.Area: ; 402fa
call Function41401
xor a
ld [hSCX], a
@@ -433,10 +435,10 @@ Function402fa: ; 402fa
ld [hWX], a
ld a, $90
ld [hWY], a
- call Function40bb1
- ld a, [wc7e4]
+ call Pokedex_GetMonAtCursorPosition
+ ld a, [wDexCurrentLocation]
ld e, a
- predef Function91d11
+ predef _Area
call Function41401
call DelayFrame
xor a
@@ -449,15 +451,15 @@ Function402fa: ; 402fa
call Function4038d
call Function4143b
call WaitBGMap
- call Function40bb1
+ call Pokedex_GetMonAtCursorPosition
ld [CurPartySpecies], a
ld a, $4
call Function41423
ret
; 40340
-Function40340: ; 40340
- call Function40bb1
+.Cry: ; 40340
+ call Pokedex_GetMonAtCursorPosition
ld a, [wd265]
call GetCryIndex
ld e, c
@@ -466,7 +468,7 @@ Function40340: ; 40340
ret
; 4034f
-Function4034f: ; 4034f
+.Print: ; 4034f
call Function41415
xor a
ld [hSCX], a
@@ -485,7 +487,7 @@ Function4034f: ; 4034f
ld [wcf65], a
call ClearBGPalettes
call DisableLCD
- call Function414fb
+ call Pokedex_LoadInvertedFont
call Function4038d
call EnableLCD
call WaitBGMap
@@ -497,9 +499,9 @@ Function4034f: ; 4034f
Function4038d: ; 4038d
call Function407fd
- call Function40bb1
- callba Function4424d
- call Function40ba0
+ call Pokedex_GetMonAtCursorPosition
+ callba DisplayDexEntry
+ call Pokedex_DrawFootprint
ret
; 4039d
@@ -509,17 +511,17 @@ Function4039d: ; 4039d (10:439d)
call ClearSprites
call Function4087c
call Function4134f
- ld a, [wc7d4]
+ ld a, [wCurrentDexMode]
ld [wc7d8], a
call Function40e5b
call WaitBGMap
ld a, $10
call Function41423
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function403be: ; 403be (10:43be)
- ld a, [wc7dc]
+ ld a, [wUnlockedUnownMode]
and a
jr nz, .asm_403c9
ld de, Unknown_403f3
@@ -542,7 +544,7 @@ Function403be: ; 403be (10:43be)
.asm_403e0
ld a, [wc7d8]
ld hl, Jumptable_40405
- call Function41432
+ call Pokedex_LoadPointer
jp [hl]
.asm_403ea
@@ -553,17 +555,17 @@ Function403be: ; 403be (10:43be)
; 403f3 (10:43f3)
Unknown_403f3: ; 403f3
- dw $03c0
- dwcoord 2, 4
- dwcoord 2, 6
- dwcoord 2, 8
+ db D_UP | D_DOWN, 3
+ dwcoord 2, 4
+ dwcoord 2, 6
+ dwcoord 2, 8
; 403fb
Unknown_403fb: ; 403fb
- dw $04c0
- dwcoord 2, 4
- dwcoord 2, 6
- dwcoord 2, 8
+ db D_UP | D_DOWN, 4
+ dwcoord 2, 4
+ dwcoord 2, 6
+ dwcoord 2, 8
dwcoord 2, 10
; 40405
@@ -585,17 +587,17 @@ Function40411: ; 40411 (10:4411)
Function40415: ; 40415 (10:4415)
ld b, $2
Function40417: ; 40417 (10:4417)
- ld a, [wc7d4]
+ ld a, [wCurrentDexMode]
cp b
jr z, .asm_40431
ld a, b
- ld [wc7d4], a
- call Function40bdc
+ ld [wCurrentDexMode], a
+ call Pokedex_ChangeMode
call Function40f08
xor a
- ld [wc7d0], a
- ld [wc7d1], a
- call Function400b4
+ ld [wDexListingPage], a
+ ld [wDexListingCursor], a
+ call Pokedex_InitCursorPosition
.asm_40431
call Function41401
@@ -621,12 +623,12 @@ 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
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function40471: ; 40471 (10:4471)
@@ -646,7 +648,7 @@ Function40471: ; 40471 (10:4471)
.asm_4048b
ld a, [wc7d8]
ld hl, Jumptable_404a8
- call Function41432
+ call Pokedex_LoadPointer
jp [hl]
.asm_40495
@@ -657,7 +659,7 @@ Function40471: ; 40471 (10:4471)
; 4049e (10:449e)
Unknown_4049e: ; 4049e
- dw $04c0
+ db D_UP | D_DOWN, 4
dwcoord 2, 4
dwcoord 2, 6
dwcoord 2, 13
@@ -679,11 +681,11 @@ Function404b0: ; 404b0
Function404b7: ; 404b7
call Function41086
- callba Function441cf
+ callba AnimateDexSearchSlowpoke
ld a, [wc7d7]
and a
jr nz, .asm_404dc
- call Function40bdc
+ call Pokedex_ChangeMode
call Function41107
xor a
ld [hBGMapMode], a
@@ -694,16 +696,16 @@ Function404b7: ; 404b7
ret
.asm_404dc
- ld [wc7d2], a
- ld a, [wc7d0]
+ ld [wDexListingEnd], a
+ ld a, [wDexListingPage]
ld [wc7e0], a
- ld a, [wc7d1]
+ ld a, [wDexListingCursor]
ld [wc7e1], a
- ld a, [wc2d6]
+ ld a, [wLastDexEntry]
ld [wcf65], a
xor a
- ld [wc7d0], a
- ld [wc7d1], a
+ ld [wDexListingPage], a
+ ld [wDexListingCursor], a
call Function41401
ld a, $9
ld [wJumptableIndex], a
@@ -722,17 +724,17 @@ Function4050a: ; 4050a (10:450a)
ld [hBGMapMode], a
xor a
hlcoord 0, 0, AttrMap
- ld bc, $168
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call ByteFill
- call Function41ae1
- call Function41af7
- callba Function1de1d1
+ call Pokedex_SetBGMapMode4
+ call Pokedex_ResetBGMapMode
+ callba DrawPokedexSearchResultsWindow
call Function409cf
ld a, $4
ld [wc7d3], a
call Function40b0f
- call Function41ad7
- call Function41af7
+ call Pokedex_SetBGMapMode3
+ call Pokedex_ResetBGMapMode
call Function40962
ld a, $5
ld [hSCX], a
@@ -741,15 +743,15 @@ Function4050a: ; 4050a (10:450a)
xor a
ld [hWY], a
call WaitBGMap
- call Function41af7
- callba Function1de1d1
+ call Pokedex_ResetBGMapMode
+ callba DrawPokedexSearchResultsWindow
call Function409cf
call Function41281
ld a, $ff
ld [CurPartySpecies], a
ld a, $4
call Function41423
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function40562: ; 40562 (10:4562)
@@ -766,13 +768,13 @@ Function40562: ; 40562 (10:4562)
xor a
ld [hBGMapMode], a
call Function40b0f
- call Function41ad7
- call Function41af7
+ call Pokedex_SetBGMapMode3
+ call Pokedex_ResetBGMapMode
ret
.asm_40583
- call Function40bb1
- call Function40bd0
+ call Pokedex_GetMonAtCursorPosition
+ call Pokedex_CheckSeen
ret z
ld a, $2
ld [wJumptableIndex], a
@@ -782,14 +784,14 @@ Function40562: ; 40562 (10:4562)
.asm_40595
ld a, [wc7e0]
- ld [wc7d0], a
+ ld [wDexListingPage], a
ld a, [wc7e1]
- ld [wc7d1], a
+ ld [wDexListingCursor], a
ld a, [wcf65]
- ld [wc2d6], a
+ ld [wLastDexEntry], a
call Function41401
call ClearSprites
- call Function40bdc
+ call Pokedex_ChangeMode
ld a, $5
ld [wJumptableIndex], a
xor a
@@ -798,45 +800,45 @@ Function40562: ; 40562 (10:4562)
ld [hWX], a
ret
-Function405bd: ; 405bd (10:45bd)
- call Function41a2c
+Pokedex_UnownMode: ; 405bd (10:45bd)
+ call Pokedex_LoadUnownFont
call Function409f1
xor a
ld [wc7dd], a
call Function41a58
call Function40658
- callba Functionfba2e
+ callba PrintUnownWord
call WaitBGMap
ld a, $16
call Function41423
- call Function40131
+ call Pokedex_IncrementDexPointer
ret
Function405df: ; 405df (10:45df)
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
and A_BUTTON | B_BUTTON
- jr nz, .asm_405eb
+ jr nz, .a_b
call Function40610
ret
-.asm_405eb
+.a_b
call Function41401
ld a, $7
ld [wJumptableIndex], a
call DelayFrame
- call Function41a24
- jr nz, .asm_40603
+ call Pokedex_CheckSGB
+ jr nz, .decompress
callba Function1ddf26
- jr .asm_4060f
+ jr .done
-.asm_40603
+.decompress
ld hl, PokedexLZ
ld de, VTiles2 tile $31
lb bc, BANK(PokedexLZ), $3a
call DecompressRequest2bpp
-.asm_4060f
+.done
ret
Function40610: ; 40610 (10:4610)
@@ -859,7 +861,7 @@ Function40610: ; 40610 (10:4610)
ret nc
ld a, [hl]
inc [hl]
- jr .asm_40635
+ jr .update
.left
ld hl, wc7dd
@@ -869,7 +871,7 @@ Function40610: ; 40610 (10:4610)
ld a, [hl]
dec [hl]
-.asm_40635
+.update
push af
xor a
ld [hBGMapMode], a
@@ -877,7 +879,7 @@ Function40610: ; 40610 (10:4610)
call Function40654
call Function41a58
call Function40658
- callba Functionfba2e
+ callba PrintUnownWord
ld a, $1
ld [hBGMapMode], a
call DelayFrame
@@ -904,11 +906,11 @@ endr
ld [hl], c
ret
-Function4066c: ; 4066c (10:466c)
- ld a, [wc7d1]
- ld [wc7e2], a
- ld a, [wc7d0]
- ld [wc7e3], a
+Pokedex_NextOrPreviousDexEntry: ; 4066c (10:466c)
+ ld a, [wDexListingCursor]
+ ld [wBackupDexListingCursor], a
+ ld a, [wDexListingPage]
+ ld [wBackupDexListingPage], a
ld hl, hJoyLast
ld a, [hl]
and D_UP
@@ -922,43 +924,43 @@ Function4066c: ; 4066c (10:466c)
.up
ld a, [wc7d3]
ld d, a
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
ld e, a
call Function406ea
- jr nc, .asm_406b7
- call Function40bb1
- call Function40bd0
- jr nz, .asm_406b5
+ jr nc, .nope
+ call Pokedex_GetMonAtCursorPosition
+ call Pokedex_CheckSeen
+ jr nz, .yep
jr .up
.down
ld a, [wc7d3]
ld d, a
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
ld e, a
call Function406fe
- jr nc, .asm_406b7
- call Function40bb1
- call Function40bd0
- jr nz, .asm_406b5
+ jr nc, .nope
+ call Pokedex_GetMonAtCursorPosition
+ call Pokedex_CheckSeen
+ jr nz, .yep
jr .down
-.asm_406b5
+.yep
scf
ret
-.asm_406b7
- ld a, [wc7e2]
- ld [wc7d1], a
- ld a, [wc7e3]
- ld [wc7d0], a
+.nope
+ ld a, [wBackupDexListingCursor]
+ ld [wDexListingCursor], a
+ ld a, [wBackupDexListingPage]
+ ld [wDexListingPage], a
and a
ret
Function406c5: ; 406c5 (10:46c5)
ld a, [wc7d3]
ld d, a
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
ld e, a
ld hl, hJoyLast
ld a, [hl]
@@ -979,14 +981,14 @@ Function406c5: ; 406c5 (10:46c5)
jr asm_4073d
Function406ea: ; 406ea (10:46ea)
- ld hl, wc7d1
+ ld hl, wDexListingCursor
ld a, [hl]
and a
jr z, .asm_406f4
dec [hl]
jr asm_4073f
.asm_406f4
- ld hl, wc7d0
+ ld hl, wDexListingPage
ld a, [hl]
and a
jr z, asm_4073d
@@ -994,7 +996,7 @@ Function406ea: ; 406ea (10:46ea)
jr asm_4073f
Function406fe: ; 406fe (10:46fe)
- ld hl, wc7d1
+ ld hl, wDexListingCursor
ld a, [hl]
inc a
cp e
@@ -1004,14 +1006,14 @@ Function406fe: ; 406fe (10:46fe)
inc [hl]
jr asm_4073f
.asm_4070c
- ld hl, wc7d0
+ ld hl, wDexListingPage
add [hl]
cp e
jr nc, asm_4073d
inc [hl]
jr asm_4073f
asm_40716: ; 40716 (10:4716)
- ld hl, wc7d0
+ ld hl, wDexListingPage
ld a, [hl]
and a
jr z, asm_4073d
@@ -1025,7 +1027,7 @@ asm_40716: ; 40716 (10:4716)
ld [hl], a
jr asm_4073f
asm_40728: ; 40728 (10:4728)
- ld hl, wc7d0
+ ld hl, wDexListingPage
ld a, d
add a
add [hl]
@@ -1065,20 +1067,20 @@ Function40741: ; 40741
Function4074c: ; 4074c (10:474c)
hlcoord 0, 17
ld de, String_START_SEARCH
- call Function40acd
+ call Pokedex_PlaceString
ld a, $32
hlcoord 0, 0
- ld bc, $168
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
call ByteFill
hlcoord 0, 0
lb bc, 7, 7
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 0, 9
ld bc, $607
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 1, 11
ld de, String_SEEN
- call Function40acd
+ call Pokedex_PlaceString
ld hl, PokedexSeen ; wdeb9 (aliases: EndPokedexSeen)
ld b, EndPokedexSeen - PokedexSeen
call CountSetBits
@@ -1088,7 +1090,7 @@ Function4074c: ; 4074c (10:474c)
call PrintNum
hlcoord 1, 14
ld de, String_OWN
- call Function40acd
+ call Pokedex_PlaceString
ld hl, PokedexCaught
ld b, EndPokedexCaught - PokedexCaught
call CountSetBits
@@ -1098,7 +1100,7 @@ Function4074c: ; 4074c (10:474c)
call PrintNum
hlcoord 1, 17
ld de, String_SELECT_OPTION
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 8, 1
ld b, $7
ld a, $5a
@@ -1115,7 +1117,7 @@ Function4074c: ; 4074c (10:474c)
ld [hl], $54
hlcoord 8, 16
ld [hl], $5b
- call Function40ab2
+ call Pokedex_PlaceFrontpicTopLeftCorner
ret
; 407e1 (10:47e1)
@@ -1130,10 +1132,10 @@ String_START_SEARCH: ; 407f2
; 407fd
Function407fd: ; 407fd
- call Function40aa6
+ call Pokedex_FillBackgroundColor2
hlcoord 0, 0
ld bc, $0f12
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 19, 0
ld [hl], $34
hlcoord 19, 1
@@ -1151,14 +1153,14 @@ Function407fd: ; 407fd
call ByteFill
hlcoord 9, 7
ld de, Unknown_40852
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 9, 9
ld de, Unknown_4085c
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 0, 17
ld de, Unknown_40867
- call Function40acd
- call Function40ab2
+ call Pokedex_PlaceString
+ call Pokedex_PlaceFrontpicTopLeftCorner
ret
; 4084f
@@ -1173,20 +1175,20 @@ Unknown_40867: ; 40867
; 4087c
Function4087c: ; 4087c (10:487c)
- call Function40aa6
+ call Pokedex_FillBackgroundColor2
hlcoord 0, 2
lb bc, 8, 18
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 0, 12
lb bc, 4, 18
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 0, 1
ld de, Unknown_408b2
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 3, 4
ld de, String_408bd
call PlaceString
- ld a, [wc7dc]
+ ld a, [wUnlockedUnownMode]
and a
ret z
hlcoord 3, 10
@@ -1211,19 +1213,19 @@ String_408e5: ; 408e5
; 408f0
Function408f0: ; 408f0 (10:48f0)
- call Function40aa6
+ call Pokedex_FillBackgroundColor2
hlcoord 0, 2
lb bc, 14, 18
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 0, 1
ld de, Unknown_4092a
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 8, 4
ld de, Unknown_40935
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 8, 6
ld de, Unknown_40935
- call Function40acd
+ call Pokedex_PlaceString
hlcoord 3, 4
ld de, String_40940
call PlaceString
@@ -1254,13 +1256,13 @@ String_4094c: ; 4094c
; 40962
Function40962: ; 40962 (10:4962)
- call Function40aa6
+ call Pokedex_FillBackgroundColor2
hlcoord 0, 0
lb bc, 7, 7
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 0, 11
lb bc, 5, 18
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 1, 12
ld de, String_409ae
call PlaceString
@@ -1280,7 +1282,7 @@ Function40962: ; 40962 (10:4962)
ld [hl], $69
hlcoord 8, 10
ld [hl], $6a
- call Function40ab2
+ call Pokedex_PlaceFrontpicTopLeftCorner
ret
; 409ae (10:49ae)
@@ -1310,28 +1312,28 @@ Function409cf: ; 409cf (10:49cf)
ret
Function409f1: ; 409f1 (10:49f1)
- call Function40aa6
+ call Pokedex_FillBackgroundColor2
hlcoord 2, 1
lb bc, 10, 13
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 2, 14
lb bc, 1, 13
- call Function40ad5
+ call Pokedex_PlaceBorder
hlcoord 2, 15
ld [hl], $3d
hlcoord 16, 15
ld [hl], $3e
hlcoord 6, 5
- call Function40ab5
+ call Pokedex_PlaceFrontpicAtHL
ld de, 0
ld b, 0
ld c, 26
-.asm_40a1d
+.loop
ld hl, UnownDex
add hl, de
ld a, [hl]
and a
- jr z, .asm_40a39
+ jr z, .done
push af
ld hl, Unknown_40a3e
rept 4
@@ -1341,19 +1343,20 @@ endr
ld h, [hl]
ld l, a
pop af
- add $3f
+ add $40 - 1 ; Unown A
ld [hl], a
inc de
inc b
dec c
- jr nz, .asm_40a1d
-.asm_40a39
+ jr nz, .loop
+.done
ld a, b
ld [wc7de], a
ret
; 40a3e (10:4a3e)
Unknown_40a3e: ; 40a3e
+; letter, cursor
dwcoord 4,11, 3,11
dwcoord 4,10, 3,10
dwcoord 4, 9, 3, 9
@@ -1382,7 +1385,7 @@ Unknown_40a3e: ; 40a3e
dwcoord 14,10, 15,10
; 40aa6
-Function40aa6: ; 40aa6
+Pokedex_FillBackgroundColor2: ; 40aa6
hlcoord 0, 0
ld a, $32
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
@@ -1390,113 +1393,118 @@ Function40aa6: ; 40aa6
ret
; 40ab2
-Function40ab2: ; 40ab2
+Pokedex_PlaceFrontpicTopLeftCorner: ; 40ab2
hlcoord 1, 1
-Function40ab5: ; 40ab5
+Pokedex_PlaceFrontpicAtHL: ; 40ab5
xor a
ld b, $7
-.asm_40ab8
+.row
ld c, $7
push af
push hl
-.asm_40abc
+.col
ld [hli], a
add $7
dec c
- jr nz, .asm_40abc
+ jr nz, .col
pop hl
- ld de, $0014
+ ld de, SCREEN_WIDTH
add hl, de
pop af
inc a
dec b
- jr nz, .asm_40ab8
+ jr nz, .row
ret
; 40acd
-Function40acd: ; 40acd
-.asm_40acd
+Pokedex_PlaceString: ; 40acd
+.loop
ld a, [de]
- cp $ff
+ cp -1
ret z
inc de
ld [hli], a
- jr .asm_40acd
+ jr .loop
; 40ad5
-Function40ad5: ; 40ad5
+Pokedex_PlaceBorder: ; 40ad5
push hl
ld a, $33
ld [hli], a
ld d, $34
- call Function40b06
+ call .FillRow
ld a, $35
ld [hl], a
pop hl
- ld de, $0014
+ ld de, SCREEN_WIDTH
add hl, de
-.asm_40ae6
+.loop
push hl
ld a, $36
ld [hli], a
ld d, $7f
- call Function40b06
+ call .FillRow
ld a, $37
ld [hl], a
pop hl
- ld de, $0014
+ ld de, SCREEN_WIDTH
add hl, de
dec b
- jr nz, .asm_40ae6
+ jr nz, .loop
ld a, $38
ld [hli], a
ld d, $39
- call Function40b06
+ call .FillRow
ld a, $3a
ld [hl], a
ret
; 40b06
-Function40b06: ; 40b06
+.FillRow: ; 40b06
ld e, c
-.asm_40b07
+.row_loop
ld a, e
and a
ret z
ld a, d
ld [hli], a
dec e
- jr .asm_40b07
+ jr .row_loop
; 40b0f
Function40b0f: ; 40b0f (10:4b0f)
- ld a, [wc7d4]
- cp $1
- jr z, .asm_40b1a
- ld c, $b
- jr .asm_40b1c
-.asm_40b1a
- ld c, $b
-.asm_40b1c
+; This check is completely useless.
+ ld a, [wCurrentDexMode]
+ cp DEXMODE_OLD
+ jr z, .okay
+ ld c, 11
+ jr .resume
+.okay
+ ld c, 11
+; End useless check
+.resume
+; Clear (2 * [wc7d3] + 1) by 11 box starting at 0,1
hlcoord 0, 1
ld a, [wc7d3]
add a
inc a
ld b, a
- ld a, $7f
- call Function413fe
- ld a, [wc7d0]
+ ld a, " "
+ call Pokedex_FillBox
+
+; Load de with wPokedexDataStart + [wDexListingPage]
+ ld a, [wDexListingPage]
ld e, a
ld d, $0
- ld hl, wc6d0
+ ld hl, wPokedexDataStart
add hl, de
ld e, l
ld d, h
hlcoord 0, 2
ld a, [wc7d3]
-.asm_40b3c
+.loop
push af
ld a, [de]
ld [wd265], a
@@ -1504,37 +1512,38 @@ Function40b0f: ; 40b0f (10:4b0f)
push hl
call Function40b55
pop hl
- ld de, $28
+ ld de, 2 * SCREEN_WIDTH
add hl, de
pop de
inc de
pop af
dec a
- jr nz, .asm_40b3c
+ jr nz, .loop
call Function4143b
ret
Function40b55: ; 40b55 (10:4b55)
and a
ret z
- call Function40b6a
- call Function40b8d
+ call Pokedex_PrintNumberIfOldMode
+ call Pokedex_PlaceDefaultStringIfNotSeen
ret c
- call Function40b82
+ call Pokedex_PlaceCaughtSymbolIfCaught
push hl
call GetPokemonName
pop hl
call PlaceString
ret
-Function40b6a: ; 40b6a (10:4b6a)
- ld a, [wc7d4]
- cp $1
- jr z, .asm_40b72
+Pokedex_PrintNumberIfOldMode: ; 40b6a (10:4b6a)
+ ld a, [wCurrentDexMode]
+ cp DEXMODE_OLD
+ jr z, .printnum
ret
-.asm_40b72
+
+.printnum
push hl
- ld de, -20
+ ld de, -SCREEN_WIDTH
add hl, de
ld de, wd265
lb bc, PRINTNUM_LEADINGZEROS | 1, 3
@@ -1542,31 +1551,32 @@ Function40b6a: ; 40b6a (10:4b6a)
pop hl
ret
-Function40b82: ; 40b82 (10:4b82)
- call Function40bc4
- jr nz, .asm_40b89
+Pokedex_PlaceCaughtSymbolIfCaught: ; 40b82 (10:4b82)
+ call Pokedex_CheckCaught
+ jr nz, .place_caught_symbol
inc hl
ret
-.asm_40b89
+
+.place_caught_symbol
ld a, $4f
ld [hli], a
ret
-Function40b8d: ; 40b8d (10:4b8d)
- call Function40bd0
+Pokedex_PlaceDefaultStringIfNotSeen: ; 40b8d (10:4b8d)
+ call Pokedex_CheckSeen
ret nz
inc hl
- ld de, String_40b9a
+ ld de, .NameNotSeen
call PlaceString
scf
ret
; 40b9a (10:4b9a)
-String_40b9a: ; 40b9a
+.NameNotSeen: ; 40b9a
db "-----@"
; 40ba0
-Function40ba0: ; 40ba0
+Pokedex_DrawFootprint: ; 40ba0
hlcoord 18, 1
ld a, $62
ld [hli], a
@@ -1581,13 +1591,13 @@ Function40ba0: ; 40ba0
; 40bb1
-Function40bb1: ; 40bb1
- ld a, [wc7d1]
- ld hl, wc7d0
+Pokedex_GetMonAtCursorPosition: ; 40bb1
+ ld a, [wDexListingCursor]
+ ld hl, wDexListingPage
add [hl]
ld e, a
ld d, $0
- ld hl, wc6d0
+ ld hl, wPokedexDataStart
add hl, de
ld a, [hl]
ld [wd265], a
@@ -1595,7 +1605,7 @@ Function40bb1: ; 40bb1
; 40bc4
-Function40bc4: ; 40bc4 (10:4bc4)
+Pokedex_CheckCaught: ; 40bc4 (10:4bc4)
push de
push hl
ld a, [wd265]
@@ -1606,7 +1616,7 @@ Function40bc4: ; 40bc4 (10:4bc4)
ret
-Function40bd0: ; 40bd0
+Pokedex_CheckSeen: ; 40bd0
push de
push hl
ld a, [wd265]
@@ -1619,100 +1629,100 @@ Function40bd0: ; 40bd0
-Function40bdc: ; 40bdc
- ld hl, wc6d0
- ld bc, $100
+Pokedex_ChangeMode: ; 40bdc
+ ld hl, wPokedexDataStart
+ ld bc, wPokedexMetadata - wPokedexDataStart
xor a
call ByteFill
- ld a, [wc7d4]
- ld hl, Jumptable_40bf0
- call Function41432
+ ld a, [wCurrentDexMode]
+ ld hl, .Jumptable
+ call Pokedex_LoadPointer
jp [hl]
; 40bf0
-Jumptable_40bf0: ; 40bf0 (10:4bf0)
- dw Function40bf6
- dw Function40c08
- dw Function40c30
+.Jumptable: ; 40bf0 (10:4bf0)
+ dw .NewMode
+ dw .OldMode
+ dw Pokedex_ABCMode
-Function40bf6: ; 40bf6 (10:4bf6)
+.NewMode: ; 40bf6 (10:4bf6)
ld de, NewPokedexOrder
- ld hl, wc6d0
+ ld hl, wPokedexDataStart
ld c, NUM_POKEMON
-.asm_40bfe
+.loopnew
ld a, [de]
inc de
ld [hli], a
dec c
- jr nz, .asm_40bfe
- call Function40c18
+ jr nz, .loopnew
+ call .FindLastSeen
ret
-Function40c08: ; 40c08 (10:4c08)
- ld hl, wc6d0
+.OldMode: ; 40c08 (10:4c08)
+ ld hl, wPokedexDataStart
ld a, $1
ld c, NUM_POKEMON
-.asm_40c0f
+.loopold
ld [hli], a
inc a
dec c
- jr nz, .asm_40c0f
- call Function40c18
+ jr nz, .loopold
+ call .FindLastSeen
ret
-Function40c18: ; 40c18 (10:4c18)
- ld hl, wc7ca
+.FindLastSeen: ; 40c18 (10:4c18)
+ ld hl, wPokedexDataStart + NUM_POKEMON - 1
ld d, NUM_POKEMON
ld e, d
-.asm_40c1e
+.loopfindend
ld a, [hld]
ld [wd265], a
- call Function40bd0
- jr nz, .asm_40c2b
+ call Pokedex_CheckSeen
+ jr nz, .foundend
dec d
dec e
- jr nz, .asm_40c1e
-.asm_40c2b
+ jr nz, .loopfindend
+.foundend
ld a, d
- ld [wc7d2], a
+ ld [wDexListingEnd], a
ret
-Function40c30: ; 40c30
+Pokedex_ABCMode: ; 40c30
xor a
- ld [wc7d2], a
- ld hl, wc6d0
+ ld [wDexListingEnd], a
+ ld hl, wPokedexDataStart
ld de, AlphabeticalPokedexOrder
ld c, NUM_POKEMON
-.asm_40c3c
+.loop1abc
push bc
ld a, [de]
ld [wd265], a
- call Function40bd0
- jr z, .asm_40c51
+ call Pokedex_CheckSeen
+ jr z, .skipabc
ld a, [wd265]
ld [hli], a
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
inc a
- ld [wc7d2], a
+ ld [wDexListingEnd], a
-.asm_40c51
+.skipabc
inc de
pop bc
dec c
- jr nz, .asm_40c3c
- ld a, [wc7d2]
+ jr nz, .loop1abc
+ ld a, [wDexListingEnd]
ld c, 0
-.asm_40c5b
+.loop2abc
cp NUM_POKEMON
- jr z, .asm_40c64
+ jr z, .doneabc
ld [hl], c
inc hl
inc a
- jr .asm_40c5b
+ jr .loop2abc
-.asm_40c64
+.doneabc
ret
; 40c65
@@ -1726,11 +1736,11 @@ Function40e5b: ; 40e5b
xor a
ld [hBGMapMode], a
hlcoord 0, 12
- ld bc, $0412
- call Function40ad5
+ lb bc, 4, SCREEN_WIDTH - 2
+ call Pokedex_PlaceBorder
ld a, [wc7d8]
ld hl, Unknown_40e7d
- call Function41432
+ call Pokedex_LoadPointer
ld e, l
ld d, h
hlcoord 1, 14
@@ -1741,28 +1751,28 @@ Function40e5b: ; 40e5b
; 40e7d
Unknown_40e7d: ; 40e7d
- dw String_40e85
- dw String_40ea6
- dw String_40ec6
- dw String_40ee4
+ dw .NewMode
+ dw .OldMode
+ dw .ABCMode
+ dw .UnownMode
; 40e85
-String_40e85: ; 40e85
- db $e1, $e2, " are listed by"
+.NewMode: ; 40e85
+ db "<PK><MN> are listed by"
next "evolution type.@"
; 40ea6
-String_40ea6: ; 40ea6
- db $e1, $e2, " are listed by"
+.OldMode: ; 40ea6
+ db "<PK><MN> are listed by"
next "official type.@"
; 40ec6
-String_40ec6: ; 40ec6
- db $e1, $e2, " are listed"
+.ABCMode: ; 40ec6
+ db "<PK><MN> are listed"
next "alphabetically.@"
; 40ee4
-String_40ee4: ; 40ee4
+.UnownMode: ; 40ee4
db "UNOWN are listed"
next "in catching order.@"
; 40f08
@@ -1771,24 +1781,25 @@ Function40f08: ; 40f08 (10:4f08)
xor a
ld [hBGMapMode], a
hlcoord 0, 12
- ld bc, $412
- call Function40ad5
- ld de, String_40f32
+ lb bc, 4, SCREEN_WIDTH - 2
+ call Pokedex_PlaceBorder
+ ld de, String_ChangingModesPleaseWait
hlcoord 1, 14
call PlaceString
ld a, $1
ld [hBGMapMode], a
- ld c, $40
+ ld c, 64
call DelayFrames
ld de, SFX_CHANGE_DEX_MODE
call PlaySFX
- ld c, $40
+ ld c, 64
call DelayFrames
ret
; 40f32 (10:4f32)
-String_40f32: ; 40f32
- db "Changing modes.", $4e, "Please wait.@"
+String_ChangingModesPleaseWait: ; 40f32
+ db "Changing modes."
+ next "Please wait.@"
; 40f4f
Function40f4f: ; 40f4f (10:4f4f)
@@ -1861,7 +1872,7 @@ Function40fa8: ; 40fa8 (10:4fa8)
hlcoord 9, 3
ld bc, $408
ld a, $7f
- call Function413fe
+ call Pokedex_FillBox
ld a, [wc7d5]
hlcoord 9, 4
call Function40fcd
@@ -1926,8 +1937,8 @@ Function41095: ; 41095
add hl, de
ld a, [hl]
ld [wc7df], a
- ld hl, wc6d0
- ld de, wc6d0
+ ld hl, wPokedexDataStart
+ ld de, wPokedexDataStart
ld c, NUM_POKEMON
xor a
ld [wc7d7], a
@@ -1938,7 +1949,7 @@ Function41095: ; 41095
jr z, .asm_410e0
ld [wd265], a
ld [CurSpecies], a
- call Function40bc4
+ call Pokedex_CheckCaught
jr z, .asm_410e0
push hl
push de
@@ -2008,7 +2019,7 @@ Function41107: ; 41107
ld [hBGMapMode], a
hlcoord 0, 12
ld bc, $0412
- call Function40ad5
+ call Pokedex_PlaceBorder
ld de, String_41126
hlcoord 1, 14
call PlaceString
@@ -2025,7 +2036,7 @@ String_41126: ; 41126
; 41148
Function41148: ; 41148 (10:5148)
- ld a, [wc7d4]
+ ld a, [wCurrentDexMode]
cp $1
jp z, Function41157
call Function41229
@@ -2034,7 +2045,7 @@ Function41148: ; 41148 (10:5148)
Function41157: ; 41157 (10:5157)
ld hl, Unknown_41167
- ld a, [wc7d1]
+ ld a, [wDexListingCursor]
or a
jr nz, .asm_41163
ld hl, Unknown_411c8
@@ -2133,7 +2144,7 @@ Unknown_41230: ; 41230
; 41281
Function41281: ; 41281 (10:5281)
- ld a, [wc7d4]
+ ld a, [wCurrentDexMode]
cp $1
jp z, Function41157
ld hl, Unknown_41290
@@ -2176,7 +2187,7 @@ Function412f1: ; 412f1 (10:52f1)
ld a, [hl]
cp $ff
ret z
- ld a, [wc7d1]
+ ld a, [wDexListingCursor]
and $7
swap a
add [hl]
@@ -2196,11 +2207,11 @@ Function412f1: ; 412f1 (10:52f1)
Function4130e: ; 4130e (10:530e)
push de
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
dec a
ld e, a
- ld a, [wc7d1]
- ld hl, wc7d0
+ ld a, [wDexListingCursor]
+ ld hl, wDexListingPage
add [hl]
cp e
jr z, .asm_4133f
@@ -2213,7 +2224,7 @@ Function4130e: ; 4130e (10:530e)
ld a, d
or e
jr z, .asm_41341
- ld a, [wc7d2]
+ ld a, [wDexListingEnd]
ld c, a
.asm_41333
ld a, e
@@ -2247,6 +2258,7 @@ Function4134f: ; 4134f (10:534f)
ret
Function4135a: ; 4135a (10:535a)
+; bc = [de] - 1
ld a, [de]
ld b, a
inc de
@@ -2254,74 +2266,79 @@ Function4135a: ; 4135a (10:535a)
dec a
ld c, a
inc de
- call Function413e0
+ call Pokedex_BlinkInfoScreenCursor
+
ld hl, hJoyPressed ; $ffa7
ld a, [hl]
and D_LEFT | D_UP
and b
- jr nz, .asm_4138f
+ jr nz, .MoveCursorLeft
ld a, [hl]
and D_RIGHT | D_DOWN
and b
- jr nz, .asm_413a0
+ jr nz, .MoveCursorRight
ld a, [hl]
and SELECT
and b
- jr nz, .asm_413c1
- call Function413f5
- jr c, .asm_413bf
+ jr nz, .Select
+ call Pokedex_CursorFrameDelay
+ jr c, .NoAction
ld hl, hJoyLast
ld a, [hl]
and D_LEFT | D_UP
and b
- jr nz, .asm_4138f
+ jr nz, .MoveCursorLeft
ld a, [hl]
and D_RIGHT | D_DOWN
and b
- jr nz, .asm_413a0
- jr .asm_413bf
-.asm_4138f
+ jr nz, .MoveCursorRight
+ jr .NoAction
+
+.MoveCursorLeft
ld a, [wc7d8]
and a
- jr z, .asm_413bf
- call Function413d4
- ld [hl], $7f
+ jr z, .NoAction
+ call Pokedex_GetCursorPosition
+ ld [hl], " "
ld hl, wc7d8
dec [hl]
- jr .asm_413af
-.asm_413a0
+ jr .UpdateCursorPosition
+
+.MoveCursorRight
ld a, [wc7d8]
cp c
- jr nc, .asm_413bf
- call Function413d4
- ld [hl], $7f
+ jr nc, .NoAction
+ call Pokedex_GetCursorPosition
+ ld [hl], " "
ld hl, wc7d8
inc [hl]
-.asm_413af
- call Function413d4
- ld [hl], $ed
+.UpdateCursorPosition
+ call Pokedex_GetCursorPosition
+ ld [hl], "▶"
ld a, $c
ld [wc7d9], a
xor a
ld [wc7da], a
scf
ret
-.asm_413bf
+
+.NoAction
and a
ret
-.asm_413c1
- call Function413d4
- ld [hl], $7f
+
+.Select
+ call Pokedex_GetCursorPosition
+ ld [hl], " "
ld a, [wc7d8]
cp c
- jr c, .asm_413ce
+ jr c, .Update
ld a, $ff
-.asm_413ce
+.Update
inc a
ld [wc7d8], a
- jr .asm_413af
+ jr .UpdateCursorPosition
-Function413d4: ; 413d4 (10:53d4)
+Pokedex_GetCursorPosition: ; 413d4 (10:53d4)
ld a, [wc7d8]
add a
ld l, a
@@ -2332,30 +2349,32 @@ Function413d4: ; 413d4 (10:53d4)
ld l, a
ret
-Function413e0: ; 413e0 (10:53e0)
+Pokedex_BlinkInfoScreenCursor: ; 413e0 (10:53e0)
ld hl, wc7da
ld a, [hl]
inc [hl]
and $8
- jr z, .asm_413ef
- call Function413d4
- ld [hl], $7f
+ jr z, .blink_on
+ call Pokedex_GetCursorPosition
+ ld [hl], " "
ret
-.asm_413ef
- call Function413d4
- ld [hl], $ed
+
+.blink_on
+ call Pokedex_GetCursorPosition
+ ld [hl], "▶"
ret
-Function413f5: ; 413f5 (10:53f5)
+Pokedex_CursorFrameDelay: ; 413f5 (10:53f5)
ld hl, wc7d9
ld a, [hl]
and a
ret z
+
dec [hl]
scf
ret
-Function413fe: ; 413fe (10:53fe)
+Pokedex_FillBox: ; 413fe (10:53fe)
jp FillBoxWithByte
Function41401: ; 41401 (10:5401)
@@ -2374,7 +2393,7 @@ Function41415: ; 41415
ld a, $ff
call DmgToCgbBGPals
ld a, $ff
- call Functioncf8
+ call DmgToCgbObjPal0
call DelayFrame
ret
@@ -2386,12 +2405,12 @@ Function41427: ; 41427
ld a, $e4
call DmgToCgbBGPals
ld a, $e0
- call Functioncf8
+ call DmgToCgbObjPal0
ret
; 41432
-Function41432: ; 41432
+Pokedex_LoadPointer: ; 41432
ld e, a
ld d, 0
rept 2
@@ -2404,10 +2423,10 @@ endr
; 4143b
Function4143b: ; 4143b
- call Function40bb1
- call Function40bd0
- jr z, .asm_4145b
- ld a, [wdef4]
+ call Pokedex_GetMonAtCursorPosition
+ call Pokedex_CheckSeen
+ jr z, .QuestionMark
+ ld a, [wFirstUnownSeen]
ld [UnownLetter], a
ld a, [wd265]
ld [CurPartySpecies], a
@@ -2416,10 +2435,10 @@ Function4143b: ; 4143b
predef GetFrontpic
ret
-.asm_4145b
+.QuestionMark
ld a, BANK(sScratch)
call GetSRAMBank
- callba Function1de0d7
+ callba LoadQuestionMarkPic
ld hl, VTiles2
ld de, sScratch
ld c, 7 * 7
@@ -2431,13 +2450,13 @@ Function4143b: ; 4143b
; 41478
-Function41478: ; 41478 (10:5478)
- call Function40bb1
+Pokedex_LoadCurrentFootprint: ; 41478 (10:5478)
+ call Pokedex_GetMonAtCursorPosition
-Function4147b: ; 4147b
+Pokedex_LoadAnyFootprint: ; 4147b
ld a, [wd265]
dec a
- and $f8
+ and ($ff ^ $07) ; $f8 ; $1f << 3
srl a
srl a
srl a
@@ -2463,7 +2482,7 @@ Function4147b: ; 4147b
; Whoever was editing footprints forgot to fix their
; tile editor. Now each bottom half is 8 tiles off.
- ld de, $80
+ ld de, 8 tiles
add hl, de
ld e, l
@@ -2476,28 +2495,28 @@ Function4147b: ; 4147b
; 414b7
-Function414b7: ; 414b7
+Pokedex_LoadGFX: ; 414b7
call DisableLCD
ld hl, VTiles2
- ld bc, $0310
+ ld bc, $31 tiles
xor a
call ByteFill
- call Function414fb
+ call Pokedex_LoadInvertedFont
call LoadFontsExtra
ld hl, VTiles2 tile $60
- ld bc, $0200
- call Function41504
- call Function41a24
- jr nz, .asm_414e0
- callba Function1ddf1c
- jr .asm_414e9
-
-.asm_414e0
+ ld bc, $20 tiles
+ call Pokedex_InvertTiles
+ call Pokedex_CheckSGB
+ jr nz, .LoadPokedexLZ
+ callba LoadSGBPokedexGFX
+ jr .LoadPokedexSlowpokeLZ
+
+.LoadPokedexLZ
ld hl, PokedexLZ
ld de, VTiles2 tile $31
call Decompress
-.asm_414e9
+.LoadPokedexSlowpokeLZ
ld hl, PokedexSlowpokeLZ
ld de, VTiles0
call Decompress
@@ -2506,30 +2525,31 @@ Function414b7: ; 414b7
call EnableLCD
ret
-Function414fb: ; 414fb
+Pokedex_LoadInvertedFont: ; 414fb
call LoadStandardFont
ld hl, VTiles1
- ld bc, $0800
+ ld bc, $80 tiles
-Function41504: ; 41504
+Pokedex_InvertTiles: ; 41504
+.loop
ld a, [hl]
xor $ff
ld [hli], a
dec bc
ld a, b
or c
- jr nz, Function41504
+ jr nz, .loop
ret
; 4150e
PokedexLZ: ; 4150e
-INCBIN "gfx/unknown/04150e.2bpp.lz"
+INCBIN "gfx/pokedex/pokedex.2bpp.lz"
; 416b0
PokedexSlowpokeLZ: ; 416b0
INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
-Function41a24: ; 41a24
+Pokedex_CheckSGB: ; 41a24
ld a, [hCGB]
or a
ret nz
@@ -2538,26 +2558,25 @@ Function41a24: ; 41a24
ret
; 41a2c
-Function41a2c: ; 41a2c
+Pokedex_LoadUnownFont: ; 41a2c
ld a, BANK(sScratch)
call GetSRAMBank
ld hl, UnownFont
ld de, sScratch + $188
- ld bc, $270
+ ld bc, 39 tiles
ld a, BANK(UnownFont)
call FarCopyBytes
ld hl, sScratch + $188
- ld bc, $1b0
- call Function41504
+ ld bc, 27 tiles
+ call Pokedex_InvertTiles
ld de, sScratch + $188
ld hl, VTiles2 tile $40
- lb bc, BANK(Function41a2c), $1b
+ lb bc, BANK(Pokedex_LoadUnownFont), 27
call Request2bpp
call CloseSRAM
ret
; 41a58
-
Function41a58: ; 41a58 (10:5a58)
ld a, [UnownLetter]
push af
@@ -2576,3 +2595,68 @@ Function41a58: ; 41a58 (10:5a58)
pop af
ld [UnownLetter], a
ret
+; 41a7f
+
+_NewPokedexEntry: ; 41a7f
+ xor a
+ ld [hBGMapMode], a
+ callba Function1de247
+ call Pokedex_ResetBGMapMode
+ call DisableLCD
+ call LoadStandardFont
+ call LoadFontsExtra
+ call Pokedex_LoadGFX
+ call Pokedex_LoadAnyFootprint
+ ld a, [wd265]
+ ld [CurPartySpecies], a
+ call Function407fd
+ call Pokedex_DrawFootprint
+ hlcoord 0, 17
+ ld [hl], $3b
+ inc hl
+ ld bc, 19
+ 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
+
+
+Pokedex_SetBGMapMode3: ; 41ad7 (10:5ad7)
+ ld a, $3
+ ld [hBGMapMode], a
+ ld c, 4
+ call DelayFrames
+ ret
+
+Pokedex_SetBGMapMode4: ; 41ae1 (10:5ae1)
+ ld a, $4
+ ld [hBGMapMode], a
+ ld c, 4
+ call DelayFrames
+ ret
+
+Pokedex_SetBGMapMode_3ifDMG_4ifCGB: ; 41aeb (10:5aeb)
+ ld a, [hCGB]
+ and a
+ jr z, .DMG
+ call Pokedex_SetBGMapMode4
+.DMG
+ call Pokedex_SetBGMapMode3
+ ret
+
+
+Pokedex_ResetBGMapMode: ; 41af7
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 41afb
diff --git a/engine/pokegear.asm b/engine/pokegear.asm
index da6006853..449c6dc32 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
@@ -59,8 +59,8 @@ Function90bea: ; 90bea (24:4bea)
ld a, $7
ld [hWX], a
call Function90c4e
- callba Function8cf53
- call Function90d32
+ callba ClearSpriteAnims
+ call InitPokegearModeIndicatorArrow
ld a, 8
call SkipMusic
ld a, $e3
@@ -85,8 +85,8 @@ Function90bea: ; 90bea (24:4bea)
ld a, [hCGB]
and a
ret z
- ld a, $e4
- call Functioncf8
+ ld a, %11100100
+ call DmgToCgbObjPal0
ret
Function90c4e: ; 90c4e
@@ -121,6 +121,7 @@ Function90c4e: ; 90c4e
ld l, e
ld a, b
+ ; standing sprite
push af
ld de, VTiles0 tile $10
ld bc, 4 tiles
@@ -129,7 +130,8 @@ Function90c4e: ; 90c4e
pop hl
- ld de, $c0
+ ; walking sprite
+ ld de, 12 tiles
add hl, de
ld de, VTiles0 tile $14
ld bc, 4 tiles
@@ -148,11 +150,11 @@ FastShipGFX: ; 90cb2
INCBIN "gfx/misc/fast_ship.2bpp"
; 90d32
-Function90d32: ; 90d32 (24:4d32)
+InitPokegearModeIndicatorArrow: ; 90d32 (24:4d32)
depixel 4, 2, 4, 0
ld a, SPRITE_ANIM_INDEX_0D
call _InitSpriteAnimStruct
- ld hl, $3
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $0
ret
@@ -199,10 +201,10 @@ Function90d70: ; 90d70 (24:4d70)
call GetWorldMapLocation
cp FAST_SHIP
- jr z, .asm_90d95
+ jr z, .FastShip
cp SPECIAL_MAP
- jr nz, .asm_90d8e
+ jr nz, .LoadLandmark
ld a, [BackupMapGroup]
ld b, a
@@ -210,12 +212,12 @@ Function90d70: ; 90d70 (24:4d70)
ld c, a
call GetWorldMapLocation
-.asm_90d8e
+.LoadLandmark
ld [wc6d8], a
ld [wc6d7], a
ret
-.asm_90d95
+.FastShip
ld [wc6d8], a
ld a, NEW_BARK_TOWN
ld [wc6d7], a
@@ -670,8 +672,8 @@ Function9102f: ; 9102f (24:502f)
Function9106a: ; 9106a
push af
- ld de, 0
- ld b, SPRITE_ANIM_INDEX_0A
+ depixel 0, 0
+ ld b, SPRITE_ANIM_INDEX_WALK_CYCLE
ld a, [PlayerGender]
bit 0, a
jr z, .asm_91079
@@ -680,7 +682,7 @@ Function9106a: ; 9106a
.asm_91079
ld a, b
call _InitSpriteAnimStruct
- ld hl, $3
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $10
pop af
@@ -688,10 +690,10 @@ Function9106a: ; 9106a
push bc
callba GetLandmarkCoords
pop bc
- ld hl, $4
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld [hl], e
- ld hl, $5
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld [hl], d
ret
@@ -699,15 +701,15 @@ Function9106a: ; 9106a
Function91098: ; 91098
push af
- ld de, 0
+ depixel 0, 0
ld a, SPRITE_ANIM_INDEX_0D
call _InitSpriteAnimStruct
- ld hl, $3
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $4
- ld hl, $2
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
- ld [hl], $0
+ ld [hl], SPRITE_ANIM_SEQ_NULL
pop af
push bc
call Function910d4
@@ -736,10 +738,10 @@ Function910d4: ; 910d4
ld e, a
callba GetLandmarkCoords
pop bc
- ld hl, $4
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld [hl], e
- ld hl, $5
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld [hl], d
ret
@@ -765,7 +767,7 @@ Function910f9: ; 910f9 (24:50f9)
depixel 4, 10, 4, 4
ld a, SPRITE_ANIM_INDEX_14
call _InitSpriteAnimStruct
- ld hl, $3
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $8
call _UpdateRadioStation
@@ -1425,12 +1427,13 @@ INCBIN "gfx/unknown/0915db.tilemap.rle"
_UpdateRadioStation: ; 9163e (24:563e)
jr UpdateRadioStation
-Function91640: ; 91640 (24:5640)
+; called from engine/sprite_anims.asm
+AnimateTuningKnob: ; 91640 (24:5640)
push bc
call .TuningKnob
pop bc
ld a, [wRadioTuningKnob]
- ld hl, $6
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], a
ret
@@ -1924,12 +1927,12 @@ PokegearMap: ; 91ae1
ld a, e
and a
jr nz, .kanto
- call Function91ff2
+ call LoadTownMapGFX
call FillJohtoMap
ret
.kanto
- call Function91ff2
+ call LoadTownMapGFX
call FillKantoMap
ret
; 91af3
@@ -1944,14 +1947,14 @@ _FlyMap: ; 91af3
ld [hl], $1
xor a
ld [hBGMapMode], a
- callba Function8cf53
- call Function91ff2
- ld de, GFX_922e1
+ callba ClearSpriteAnims
+ call LoadTownMapGFX
+ ld de, FlyMapLabelBorderGFX
ld hl, VTiles2 tile $30
- lb bc, BANK(GFX_922e1), 6
+ lb bc, BANK(FlyMapLabelBorderGFX), 6
call Request1bpp
call FlyMap
- call Function91c8f
+ call ret_91c8f
ld b, SCGB_02
call GetSGBLayout
call SetPalettes
@@ -1966,7 +1969,7 @@ _FlyMap: ; 91af3
jr nz, .pressedA
call FlyMapScroll
call GetMapCursorCoordinates
- callba Function8cf69
+ callba PlaySpriteAnimations
call DelayFrame
jr .loop
@@ -2181,10 +2184,6 @@ Flypoints: ; 91c5e
const_def
flypoint: MACRO
-; \1\@FLY EQUS "FLY_\1"
-; \1\@SPAWN EQUS "SPAWN_\1"
- ; const \1\@FLY
- ; db \2, \1\@SPAWN
const FLY_\1
db \2, SPAWN_\1
ENDM
@@ -2222,7 +2221,7 @@ KANTO_FLYPOINT EQU const_value
db -1
; 91c8f
-Function91c8f: ; 91c8f
+ret_91c8f: ; 91c8f
ret
; 91c90
@@ -2343,7 +2342,8 @@ FlyMap: ; 91c90
ret
; 91d11
-Function91d11: ; 91d11
+_Area: ; 91d11
+; e: Current landmark
ld a, [wd002]
push af
ld a, [wd003]
@@ -2356,25 +2356,24 @@ Function91d11: ; 91d11
ld a, $1
ld [hInMenu], a
- ld de, GFX_922d1
+ ld de, PokedexNestIconGFX
ld hl, VTiles0 tile $7f
- lb bc, BANK(GFX_922d1), 1
- call Request2bpp ; actually 1bpp
-
- call Function91ed0
+ lb bc, BANK(PokedexNestIconGFX), 1
+ call Request2bpp
+ call .GetPlayerOrFastShipIcon
ld hl, VTiles0 tile $78
- ld c, $4
+ ld c, 4
call Request2bpp
- call Function91ff2
+ call LoadTownMapGFX
call FillKantoMap
- call Function91de9
+ call .PlaceString_MonsNest
call TownMapPals
hlbgcoord 0, 0, VBGMap1
call TownMapBGUpdate
call FillJohtoMap
- call Function91de9
+ call .PlaceString_MonsNest
call TownMapPals
hlbgcoord 0, 0
call TownMapBGUpdate
@@ -2383,8 +2382,8 @@ Function91d11: ; 91d11
call SetPalettes
xor a
ld [hBGMapMode], a
- xor a
- call Function91e1e
+ xor a ; Johto
+ call .GetAndPlaceNest
.loop
call JoyTextDelay
ld hl, hJoyPressed
@@ -2394,12 +2393,12 @@ Function91d11: ; 91d11
ld a, [hJoypadDown]
and SELECT
jr nz, .select
- call Function91d9b
- call Function91dcd
+ call .LeftRightInput
+ call .BlinkNestIcons
jr .next
.select
- call Function91e5a
+ call .HideNestsShowPlayer
.next
call DelayFrame
@@ -2414,27 +2413,27 @@ Function91d11: ; 91d11
ret
; 91d9b
-Function91d9b: ; 91d9b
+.LeftRightInput: ; 91d9b
ld a, [hl]
- and $20
- jr nz, .asm_91da6
+ and D_LEFT
+ jr nz, .left
ld a, [hl]
- and $10
- jr nz, .asm_91db7
+ and D_RIGHT
+ jr nz, .right
ret
-.asm_91da6
+.left
ld a, [hWY]
cp $90
ret z
call ClearSprites
ld a, $90
ld [hWY], a
- xor a
- call Function91e1e
+ xor a ; Johto
+ call .GetAndPlaceNest
ret
-.asm_91db7
+.right
ld a, [StatusFlags]
bit 6, a ; hall of fame
ret z
@@ -2444,39 +2443,39 @@ Function91d9b: ; 91d9b
call ClearSprites
xor a
ld [hWY], a
- ld a, $1
- call Function91e1e
+ ld a, 1 ; Kanto
+ call .GetAndPlaceNest
ret
; 91dcd
-Function91dcd: ; 91dcd
+.BlinkNestIcons: ; 91dcd
ld a, [hVBlankCounter]
ld e, a
and $f
ret nz
ld a, e
and $10
- jr nz, .asm_91ddc
+ jr nz, .copy_sprites
call ClearSprites
ret
-.asm_91ddc
+.copy_sprites
hlcoord 0, 0
ld de, Sprites
- ld bc, $a0
+ ld bc, SpritesEnd - Sprites
call CopyBytes
ret
; 91de9
-Function91de9: ; 91de9
+.PlaceString_MonsNest: ; 91de9
hlcoord 0, 0
ld bc, SCREEN_WIDTH
- ld a, $7f
+ ld a, " "
call ByteFill
hlcoord 0, 1
ld a, $6
ld [hli], a
- ld bc, SCREEN_HEIGHT
+ ld bc, SCREEN_WIDTH - 2
ld a, $7
call ByteFill
ld [hl], $17
@@ -2485,54 +2484,56 @@ Function91de9: ; 91de9
call PlaceString
ld h, b
ld l, c
- ld de, String_91e16
+ ld de, .String_SNest
call PlaceString
ret
; 91e16
-String_91e16:
+.String_SNest:
db "'S NEST@"
; 91e1e
-Function91e1e: ; 91e1e
+.GetAndPlaceNest: ; 91e1e
ld [wd003], a
ld e, a
- callba Function2a01f
+ callba FindNest ; load nest landmarks into TileMap[0,0]
decoord 0, 0
ld hl, Sprites
-.asm_91e2e
+.nestloop
ld a, [de]
and a
- jr z, .asm_91e4d
+ jr z, .done_nest
push de
ld e, a
push hl
callba GetLandmarkCoords
pop hl
+ ; load into OAM
ld a, d
- sub $4
+ sub 4
ld [hli], a
ld a, e
- sub $4
+ sub 4
ld [hli], a
- ld a, $7f
+ ld a, $7f ; nest icon in this context
ld [hli], a
xor a
ld [hli], a
+ ; next
pop de
inc de
- jr .asm_91e2e
+ jr .nestloop
-.asm_91e4d
+.done_nest
ld hl, Sprites
decoord 0, 0
- ld bc, $a0
+ ld bc, SpritesEnd - Sprites
call CopyBytes
ret
; 91e5a
-Function91e5a: ; 91e5a
- call Function91ea9
+.HideNestsShowPlayer: ; 91e5a
+ call .CheckPlayerLocation
ret c
ld a, [wd002]
@@ -2540,12 +2541,12 @@ Function91e5a: ; 91e5a
callba GetLandmarkCoords
ld c, e
ld b, d
- ld de, Unknown_91e9c
+ ld de, .PlayerOAM
ld hl, Sprites
-.asm_91e70
+.ShowPlayerLoop
ld a, [de]
cp $80
- jr z, .asm_91e91
+ jr z, .copy
add b
ld [hli], a
@@ -2557,24 +2558,24 @@ Function91e5a: ; 91e5a
inc de
ld a, [de]
- add $78
+ add $78 ; where the player's sprite is loaded
ld [hli], a
inc de
push bc
- ld c, 0
+ ld c, 0 ; RED
ld a, [PlayerGender]
bit 0, a
- jr z, .asm_91e8c
- inc c
-.asm_91e8c
+ jr z, .got_gender
+ inc c ; BLUE
+.got_gender
ld a, c
ld [hli], a
pop bc
- jr .asm_91e70
+ jr .ShowPlayerLoop
-.asm_91e91
+.copy
ld hl, Sprites + $10
ld bc, SpritesEnd - (Sprites + $10)
xor a
@@ -2582,15 +2583,18 @@ Function91e5a: ; 91e5a
ret
; 91e9c
-Unknown_91e9c: ; 91e9c
- db -8, -8, 0
- db -8, 0, 1
- db 0, -8, 2
- db 0, 0, 3
+.PlayerOAM: ; 91e9c
+ db -1 * 8, -1 * 8, 0 ; top left
+ db -1 * 8, 0 * 8, 1 ; top right
+ db 0 * 8, -1 * 8, 2 ; bottom left
+ db 0 * 8, 0 * 8, 3 ; bottom right
db $80 ; terminator
; 91ea9
-Function91ea9: ; 91ea9
+.CheckPlayerLocation: ; 91ea9
+; Don't show the player's sprite if you're
+; not in the same region as what's currently
+; on the screen.
ld a, [wd002]
cp FAST_SHIP
jr z, .johto
@@ -2621,14 +2625,14 @@ Function91ea9: ; 91ea9
ret
; 91ed0
-Function91ed0: ; 91ed0
+.GetPlayerOrFastShipIcon: ; 91ed0
ld a, [wd002]
cp FAST_SHIP
- jr z, .asm_91ede
+ jr z, .FastShip
callba GetPlayerIcon
ret
-.asm_91ede
+.FastShip
ld de, FastShipGFX
ld b, BANK(FastShipGFX)
ret
@@ -2678,7 +2682,7 @@ FillTownMap: ; 91f07
hlcoord 0, 0
.loop
ld a, [de]
- cp $ff
+ cp -1
ret z
ld a, [de]
ld [hli], a
@@ -2691,7 +2695,7 @@ TownMapPals: ; 91f13
hlcoord 0, 0
decoord 0, 0, AttrMap
- ld bc, 360
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
.loop
; Current tile
ld a, [hli]
@@ -2743,10 +2747,12 @@ TownMapPals: ; 91f13
ret
TownMapPalMap:
- db $11, $21, $22, $00, $11, $13, $54, $54, $11, $21, $22, $00
- db $11, $10, $01, $00, $11, $21, $22, $00, $00, $00, $00, $00
- db $00, $00, $44, $04, $00, $00, $00, $00, $33, $33, $33, $33
- db $33, $33, $33, $03, $33, $33, $33, $33, $00, $00, $00, $00
+ dn 1, 1, 2, 1, 2, 2, 0, 0, 1, 1, 1, 3, 5, 4, 5, 4
+ dn 1, 1, 2, 1, 2, 2, 0, 0, 1, 1, 1, 0, 0, 1, 0, 0
+ dn 1, 1, 2, 1, 2, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0
+ dn 0, 0, 0, 0, 4, 4, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0
+ dn 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 0, 3
+ dn 3, 3, 3, 3, 3, 3, 3, 3, 0, 0, 0, 0, 0, 0, 0, 0
; 91f7b
TownMapMon: ; 91f7b
@@ -2766,16 +2772,16 @@ TownMapMon: ; 91f7b
callba GetSpeciesIcon
; Animation/palette
- ld de, 0
- ld a, $0
+ depixel 0, 0
+ ld a, SPRITE_ANIM_INDEX_00
call _InitSpriteAnimStruct
- ld hl, 3
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
- ld [hl], 8
- ld hl, 2
+ ld [hl], $8
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
add hl, bc
- ld [hl], 0
+ ld [hl], SPRITE_ANIM_SEQ_NULL
ret
; 91fa6
@@ -2801,17 +2807,17 @@ TownMapPlayerIcon: ; 91fa6
call Request2bpp
; Animation/palette
- ld de, 0
- ld b, $0a ; Male
+ depixel 0, 0
+ ld b, SPRITE_ANIM_INDEX_WALK_CYCLE ; Male
ld a, [PlayerGender]
bit 0, a
- jr z, .asm_91fd3
- ld b, $1e ; Female
-.asm_91fd3
+ jr z, .got_gender
+ ld b, SPRITE_ANIM_INDEX_1E ; Female
+.got_gender
ld a, b
call _InitSpriteAnimStruct
- ld hl, $3
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld [hl], $10
@@ -2821,16 +2827,16 @@ TownMapPlayerIcon: ; 91fa6
callba GetLandmarkCoords
pop bc
- ld hl, 4
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld [hl], e
- ld hl, 5
+ ld hl, SPRITEANIMSTRUCT_YCOORD
add hl, bc
ld [hl], d
ret
; 0x91ff2
-Function91ff2: ; 91ff2
+LoadTownMapGFX: ; 91ff2
ld hl, TownMapGFX
ld de, VTiles2
lb bc, BANK(TownMapGFX), $30
@@ -2847,14 +2853,14 @@ KantoMap: ; 92168
INCBIN "gfx/misc/kanto.bin"
; 922d1
+PokedexNestIconGFX: ; 922d1
+INCBIN "gfx/pokegear/dexmap_nest_icon.2bpp"
+
+FlyMapLabelBorderGFX: ; 922e1
+INCBIN "gfx/pokegear/flymap_label_border.2bpp"
-GFX_922d1: ; 922d1
-INCBIN "gfx/unknown/0922d1.2bpp"
-GFX_922e1: ; 922e1
-INCBIN "gfx/unknown/0922e1.2bpp"
-GFX_92301: ; 92301
-INCBIN "gfx/unknown/092301.2bpp"
-Function92311: ; unreferenced
+Function92311: ; 92311
+; unreferenced
xor a
ld [wd002], a
call ClearBGPalettes
@@ -2866,11 +2872,11 @@ Function92311: ; unreferenced
ld [hl], $1
xor a
ld [hBGMapMode], a
- callba Function8cf53
- call Function91ff2
- ld de, GFX_922e1
+ callba ClearSpriteAnims
+ call LoadTownMapGFX
+ ld de, FlyMapLabelBorderGFX
ld hl, VTiles2 tile $30
- lb bc, BANK(GFX_922e1), 6
+ lb bc, BANK(FlyMapLabelBorderGFX), 6
call Request1bpp
call FillKantoMap
call TownMapBubble
@@ -2899,9 +2905,9 @@ Function92311: ; unreferenced
ld a, [hl]
and A_BUTTON
jr nz, .pressedA
- call Function923b8
+ call .HandleDPad
call GetMapCursorCoordinates
- callba Function8cf69
+ callba PlaySpriteAnimations
call DelayFrame
jr .loop
@@ -2934,36 +2940,36 @@ Function92311: ; unreferenced
ret
; 923b8
-Function923b8: ; 923b8
+.HandleDPad: ; 923b8
ld hl, hJoyLast
ld a, [hl]
and D_DOWN | D_RIGHT
- jr nz, .asm_923c6
+ jr nz, .down_right
ld a, [hl]
and D_UP | D_LEFT
- jr nz, .asm_923d3
+ jr nz, .up_left
ret
-.asm_923c6
+.down_right
ld hl, wd002
ld a, [hl]
cp FLY_INDIGO
- jr c, .asm_923d0
+ jr c, .okay_dr
ld [hl], -1
-.asm_923d0
+.okay_dr
inc [hl]
- jr .asm_923dd
+ jr .continue
-.asm_923d3
+.up_left
ld hl, wd002
ld a, [hl]
and a
- jr nz, .asm_923dc
+ jr nz, .okay_ul
ld [hl], FLY_INDIGO + 1
-.asm_923dc
+.okay_ul
dec [hl]
-.asm_923dd
+.continue
ld a, [wd002]
cp KANTO_FLYPOINT
jr c, .johto
@@ -2971,14 +2977,14 @@ Function923b8: ; 923b8
call FillKantoMap
xor a
ld b, $9c
- jr .asm_923f3
+ jr .finish
.johto
call FillJohtoMap
ld a, $90
ld b, $98
-.asm_923f3
+.finish
ld [hWY], a
ld a, b
ld [hBGMapAddress + 1], a
diff --git a/engine/predef.asm b/engine/predef.asm
index 680a6b4a0..f459747bb 100644
--- a/engine/predef.asm
+++ b/engine/predef.asm
@@ -34,7 +34,7 @@ PredefPointers:: ; 856b
add_predef Predef1
add_predef HealParty
add_predef FlagPredef
- add_predef DrawPartyMenuHPBar
+ add_predef ComputeHPBarPixels
add_predef FillPP
add_predef TryAddMonToParty
add_predef AddTempmonToParty
@@ -65,7 +65,7 @@ PredefPointers:: ; 856b
add_predef ListMoves ; $20
add_predef PlaceNonFaintStatus
add_predef Function50cdb
- add_predef Function50c50
+ add_predef ListMovePP
add_predef GetGender
add_predef StatsScreenInit
add_predef DrawPlayerHP
@@ -76,11 +76,11 @@ PredefPointers:: ; 856b
add_predef PrintType
add_predef PrintMonTypes
add_predef GetUnownLetter
- add_predef Functioncbcdd
+ add_predef LoadPoisonBGPals
add_predef Predef2F
add_predef Function9853 ; $30
add_predef Predef_LoadSGBLayout
- add_predef Function91d11
+ add_predef _Area
add_predef CheckContestMon
add_predef Predef_StartBattle
add_predef Predef35
diff --git a/engine/printer.asm b/engine/printer.asm
index 5330d6b3c..53eefc1aa 100755
--- a/engine/printer.asm
+++ b/engine/printer.asm
@@ -20,7 +20,7 @@ Function84022: ; 84022
ld a, [wJumptableIndex]
ld e, a
ld d, 0
- ld hl, Jumptable_84031
+ ld hl, .Jumptable
rept 2
add hl, de
endr
@@ -31,27 +31,28 @@ endr
; 84031
-Jumptable_84031: ; 84031 (21:4031)
- dw Function84077
- dw Function84143
- dw Function84120
- dw Function84099
- dw Function84180
- dw Function8412e
- dw Function840c5
- dw Function84180
- dw Function84120
- dw Function840de
- dw Function84180
- dw Function84120
- dw Function841a1
- dw Function84063
- dw Function8406d
- dw Function84120
- dw Function84103
- dw Function84071
- dw Function841b0
- dw Function841b3
+.Jumptable: ; 84031 (21:4031)
+ jumptable_start
+ jumptable Function84077
+ jumptable Function84143
+ jumptable Function84120
+ jumptable Function84099
+ jumptable Function84180
+ jumptable Function8412e
+ jumptable Function840c5
+ jumptable Function84180
+ jumptable Function84120
+ jumptable Function840de
+ jumptable Function84180
+ jumptable Function84120
+ jumptable Function841a1
+ jumptable Function84063
+ jumptable Function8406d
+ jumptable Function84120
+ jumptable Function84103
+ jumptable Function84071
+ jumptable Function841b0
+ jumptable Function841b3
Function84059: ; 84059 (21:4059)
@@ -427,12 +428,12 @@ Unknown_842d5: db 15, 0, $00, 0, 15, 0 ; unused
; 842db
-Function842db:: ; 842db
+_PrinterReceive:: ; 842db
ld a, [wc2d5]
add a
ld e, a
ld d, 0
- ld hl, Jumptable_842ea
+ ld hl, .Jumptable
add hl, de
ld a, [hli]
ld h, [hl]
@@ -441,39 +442,40 @@ Function842db:: ; 842db
; 842ea
-Jumptable_842ea: ; 842ea (21:42ea)
- dw Function8432f
- dw Function84330
- dw Function84339
- dw Function84343
- dw Function8434d
- dw Function84357
- dw Function84361
- dw Function8438b
- dw Function84395
- dw Function8439f
- dw Function843a8
- dw Function843b6
- dw Function84330
- dw Function843c0
- dw Function843c9
- dw Function843c9
- dw Function843c9
- dw Function843c0
- dw Function843c9
- dw Function8439f
- dw Function843a8
- dw Function843e6
- dw Function84330
- dw Function843d2
- dw Function843c9
- dw Function843c9
- dw Function843c9
- dw Function843d2
- dw Function843c9
- dw Function8439f
- dw Function843a8
- dw Function843b6
+.Jumptable: ; 842ea (21:42ea)
+ jumptable_start
+ jumptable Function8432f
+ jumptable Function84330
+ jumptable Function84339
+ jumptable Function84343
+ jumptable Function8434d
+ jumptable Function84357
+ jumptable Function84361
+ jumptable Function8438b
+ jumptable Function84395
+ jumptable Function8439f
+ jumptable Function843a8
+ jumptable Function843b6
+ jumptable Function84330
+ jumptable Function843c0
+ jumptable Function843c9
+ jumptable Function843c9
+ jumptable Function843c9
+ jumptable Function843c0
+ jumptable Function843c9
+ jumptable Function8439f
+ jumptable Function843a8
+ jumptable Function843e6
+ jumptable Function84330
+ jumptable Function843d2
+ jumptable Function843c9
+ jumptable Function843c9
+ jumptable Function843c9
+ jumptable Function843d2
+ jumptable Function843c9
+ jumptable Function8439f
+ jumptable Function843a8
+ jumptable Function843b6
Function8432a: ; 8432a (21:432a)
@@ -672,7 +674,7 @@ PrintDexEntry: ; 8442c
call Function84000
ld a, $10
ld [wcbfa], a
- callba Function1dc1b0
+ callba PrintPage1
call ClearTileMap
ld a, $e4
call DmgToCgbBGPals
@@ -694,7 +696,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/radio.asm b/engine/radio.asm
index 2ee550197..433b5a89f 100644
--- a/engine/radio.asm
+++ b/engine/radio.asm
@@ -274,7 +274,7 @@ endr
ld [CurPartySpecies], a
call GetPokemonName
ld hl, StringBuffer1
- ld de, wOaksPkmnTalkPkmnNameBuffer
+ ld de, wMonOrItemNameBuffer
ld bc, PKMN_NAME_LENGTH
call CopyBytes
; Now that we've chosen our wild Pokemon,
diff --git a/engine/rtc.asm b/engine/rtc.asm
new file mode 100755
index 000000000..1f5e1e27c
--- /dev/null
+++ b/engine/rtc.asm
@@ -0,0 +1,210 @@
+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
+
+_InitTime:: ; 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
diff --git a/engine/save.asm b/engine/save.asm
index 20f59c042..65faabb7a 100644
--- a/engine/save.asm
+++ b/engine/save.asm
@@ -18,7 +18,7 @@ SaveMenu: ; 14a1a
.refused
call ExitMenu
- call Functiond90
+ call ret_d90
callba SaveMenu_LoadEDTile
scf
ret
@@ -182,7 +182,7 @@ AskOverwriteSaveFile: ; 14b89
ld a, [wSaveFileExists]
and a
jr z, .erase
- call Function14bcb
+ call CompareLoadedAndSavedPlayerID
jr z, .yoursavefile
ld hl, UnknownText_0x15297
call SaveTheGame_yesorno
@@ -213,17 +213,17 @@ SaveTheGame_yesorno: ; 14baf
call LoadMenuTextBox
lb bc, 0, 7
call PlaceYesNoBox
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call WriteBackup
push af
- call Functiond90
+ call ret_d90
pop af
and a
ret
; 14bcb
-Function14bcb: ; 14bcb
+CompareLoadedAndSavedPlayerID: ; 14bcb
ld a, BANK(sPlayerData)
call GetSRAMBank
ld hl, sPlayerData + (PlayerID - wPlayerData)
@@ -291,7 +291,7 @@ SaveGameData_: ; 14c10
ld a, BANK(sBattleTowerChallengeState)
call GetSRAMBank
ld a, [sBattleTowerChallengeState]
- cp $4
+ cp BATTLETOWER_RECEIVED_REWARD
jr nz, .ok
xor a
ld [sBattleTowerChallengeState], a
@@ -373,7 +373,7 @@ ErasePreviousSave: ; 14cbb
call EraseLinkBattleStats
call EraseMysteryGift
call SaveData
- call Function14d5c
+ call EraseBattleTowerStatus
ld a, BANK(sStackTop)
call GetSRAMBank
xor a
@@ -437,7 +437,7 @@ Unknown_14d2c: ; 14d2c
db $11, $0c, $0c, $06, $06, $04
; 14d5c
-Function14d5c: ; 14d5c
+EraseBattleTowerStatus: ; 14d5c
ld a, BANK(sBattleTowerChallengeState)
call GetSRAMBank
xor a
@@ -486,7 +486,7 @@ Function14d93: ; 14d93
; 14da0
-Function14da0: ; 14da0
+HallOfFame_InitSaveIfNeeded: ; 14da0
ld a, [wSavedAtLeastOnce]
and a
ret nz
@@ -512,7 +512,7 @@ SaveOptions: ; 14dbb
ld bc, OptionsEnd - Options
call CopyBytes
ld a, [Options]
- and $ef
+ and $ff ^ (1 << NO_TEXT_SCROLL)
ld [sOptions], a
jp CloseSRAM
; 14dd7
@@ -791,9 +791,9 @@ LoadPlayerData: ; 14fd7 (5:4fd7)
ld a, BANK(sBattleTowerChallengeState)
call GetSRAMBank
ld a, [sBattleTowerChallengeState]
- cp $4
+ cp BATTLETOWER_RECEIVED_REWARD
jr nz, .not_4
- ld a, $3
+ ld a, BATTLETOWER_WON_CHALLENGE
ld [sBattleTowerChallengeState], a
.not_4
call CloseSRAM
@@ -892,7 +892,7 @@ _SaveData: ; 1509a
jp CloseSRAM
-Function150b9: ; 150b9
+_LoadData: ; 150b9
ld a, BANK(sCrystalData)
call GetSRAMBank
ld hl, sCrystalData
@@ -938,8 +938,11 @@ endr
; 150f9
SaveBoxAddress: ; 150f9
+; Save box via wMisc.
+; We do this in three steps because the size of wMisc is less than
+; the size of sBox.
push hl
-
+; Load the first part of the active box.
push af
push de
ld a, BANK(sBox)
@@ -951,7 +954,7 @@ SaveBoxAddress: ; 150f9
call CloseSRAM
pop de
pop af
-
+; Save it to the target box.
push af
push de
call GetSRAMBank
@@ -959,6 +962,8 @@ SaveBoxAddress: ; 150f9
ld bc, (wMiscEnd - wMisc)
call CopyBytes
call CloseSRAM
+
+; Load the second part of the active box.
ld a, BANK(sBox)
call GetSRAMBank
ld hl, sBox + (wMiscEnd - wMisc)
@@ -973,7 +978,7 @@ SaveBoxAddress: ; 150f9
add hl, de
ld e, l
ld d, h
-
+; Save it to the next part of the target box.
push af
push de
call GetSRAMBank
@@ -981,6 +986,8 @@ SaveBoxAddress: ; 150f9
ld bc, (wMiscEnd - wMisc)
call CopyBytes
call CloseSRAM
+
+; Load the third and final part of the active box.
ld a, BANK(sBox)
call GetSRAMBank
ld hl, sBox + (wMiscEnd - wMisc) * 2
@@ -995,7 +1002,7 @@ SaveBoxAddress: ; 150f9
add hl, de
ld e, l
ld d, h
-
+; Save it to the final part of the target box.
call GetSRAMBank
ld hl, wMisc
ld bc, sBoxEnd - (sBox + (wMiscEnd - wMisc) * 2) ; $8e
@@ -1008,10 +1015,13 @@ SaveBoxAddress: ; 150f9
LoadBoxAddress: ; 1517d (5:517d)
+; Load box via wMisc.
+; We do this in three steps because the size of wMisc is less than
+; the size of sBox.
push hl
ld l, e
ld h, d
-
+; Load part 1
push af
push hl
call GetSRAMBank
@@ -1031,7 +1041,7 @@ LoadBoxAddress: ; 1517d (5:517d)
ld de, (wMiscEnd - wMisc)
add hl, de
-
+; Load part 2
push af
push hl
call GetSRAMBank
@@ -1048,7 +1058,7 @@ LoadBoxAddress: ; 1517d (5:517d)
call CloseSRAM
pop hl
pop af
-
+; Load part 3
ld de, (wMiscEnd - wMisc)
add hl, de
call GetSRAMBank
diff --git a/engine/scripting.asm b/engine/scripting.asm
index c80343a4c..44f53ceed 100644
--- a/engine/scripting.asm
+++ b/engine/scripting.asm
@@ -70,178 +70,178 @@ RunScriptCommand: ; 96ca9
ScriptCommandTable: ; 96cb1
- dw Script_scall
- dw Script_farscall
- dw Script_ptcall
- dw Script_jump
- dw Script_farjump
- dw Script_ptjump
- dw Script_if_equal
- dw Script_if_not_equal
- dw Script_iffalse
- dw Script_iftrue
- dw Script_if_greater_than
- dw Script_if_less_than
- dw Script_jumpstd
- dw Script_callstd
- dw Script_callasm
- dw Script_special
- dw Script_ptcallasm
- dw Script_checkmaptriggers
- dw Script_domaptrigger
- dw Script_checktriggers
- dw Script_dotrigger
- dw Script_writebyte
- dw Script_addvar
- dw Script_random
- dw Script_checkver
- dw Script_copybytetovar
- dw Script_copyvartobyte
- dw Script_loadvar
- dw Script_checkcode
- dw Script_writevarcode
- dw Script_writecode
- dw Script_giveitem
- dw Script_takeitem
- dw Script_checkitem
- dw Script_givemoney
- dw Script_takemoney
- dw Script_checkmoney
- dw Script_givecoins
- dw Script_takecoins
- dw Script_checkcoins
- dw Script_addcellnum
- dw Script_delcellnum
- dw Script_checkcellnum
- dw Script_checktime
- dw Script_checkpoke
- dw Script_givepoke
- dw Script_giveegg
- dw Script_givepokeitem
- dw Script_checkpokeitem
- dw Script_checkevent
- dw Script_clearevent
- dw Script_setevent
- dw Script_checkflag
- dw Script_clearflag
- dw Script_setflag
- dw Script_wildon
- dw Script_wildoff
- dw Script_xycompare
- dw Script_warpmod
- dw Script_blackoutmod
- dw Script_warp
- dw Script_readmoney
- dw Script_readcoins
- dw Script_RAM2MEM
- dw Script_pokenamemem
- dw Script_itemtotext
- dw Script_mapnametotext
- dw Script_trainertotext
- dw Script_stringtotext
- dw Script_itemnotify
- dw Script_pocketisfull
- dw Script_loadfont
- dw Script_refreshscreen
- dw Script_loadmovesprites
- dw Script_loadbytec2cf
- dw Script_farwritetext
- dw Script_writetext
- dw Script_repeattext
- dw Script_yesorno
- dw Script_loadmenudata
- dw Script_writebackup
- dw Script_jumptextfaceplayer
+ dw Script_scall ; 00
+ dw Script_farscall ; 01
+ dw Script_ptcall ; 02
+ dw Script_jump ; 03
+ dw Script_farjump ; 04
+ dw Script_ptjump ; 05
+ dw Script_if_equal ; 06
+ dw Script_if_not_equal ; 07
+ dw Script_iffalse ; 08
+ dw Script_iftrue ; 09
+ dw Script_if_greater_than ; 0a
+ dw Script_if_less_than ; 0b
+ dw Script_jumpstd ; 0c
+ dw Script_callstd ; 0d
+ dw Script_callasm ; 0e
+ dw Script_special ; 0f
+ dw Script_ptcallasm ; 10
+ dw Script_checkmaptriggers ; 11
+ dw Script_domaptrigger ; 12
+ dw Script_checktriggers ; 13
+ dw Script_dotrigger ; 14
+ dw Script_writebyte ; 15
+ dw Script_addvar ; 16
+ dw Script_random ; 17
+ dw Script_checkver ; 18
+ dw Script_copybytetovar ; 19
+ dw Script_copyvartobyte ; 1a
+ dw Script_loadvar ; 1b
+ dw Script_checkcode ; 1c
+ dw Script_writevarcode ; 1d
+ dw Script_writecode ; 1e
+ dw Script_giveitem ; 1f
+ dw Script_takeitem ; 20
+ dw Script_checkitem ; 21
+ dw Script_givemoney ; 22
+ dw Script_takemoney ; 23
+ dw Script_checkmoney ; 24
+ dw Script_givecoins ; 25
+ dw Script_takecoins ; 26
+ dw Script_checkcoins ; 27
+ dw Script_addcellnum ; 28
+ dw Script_delcellnum ; 29
+ dw Script_checkcellnum ; 2a
+ dw Script_checktime ; 2b
+ dw Script_checkpoke ; 2c
+ dw Script_givepoke ; 2d
+ dw Script_giveegg ; 2e
+ dw Script_givepokeitem ; 2f
+ dw Script_checkpokeitem ; 30
+ dw Script_checkevent ; 31
+ dw Script_clearevent ; 32
+ dw Script_setevent ; 33
+ dw Script_checkflag ; 34
+ dw Script_clearflag ; 35
+ dw Script_setflag ; 36
+ dw Script_wildon ; 37
+ dw Script_wildoff ; 38
+ dw Script_xycompare ; 39
+ dw Script_warpmod ; 3a
+ dw Script_blackoutmod ; 3b
+ dw Script_warp ; 3c
+ dw Script_readmoney ; 3d
+ dw Script_readcoins ; 3e
+ dw Script_RAM2MEM ; 3f
+ dw Script_pokenamemem ; 40
+ dw Script_itemtotext ; 41
+ dw Script_mapnametotext ; 42
+ dw Script_trainertotext ; 43
+ dw Script_stringtotext ; 44
+ dw Script_itemnotify ; 45
+ dw Script_pocketisfull ; 46
+ dw Script_textbox ; 47
+ dw Script_refreshscreen ; 48
+ dw Script_closetext ; 49
+ dw Script_loadbytec2cf ; 4a
+ dw Script_farwritetext ; 4b
+ dw Script_writetext ; 4c
+ dw Script_repeattext ; 4d
+ dw Script_yesorno ; 4e
+ dw Script_loadmenudata ; 4f
+ dw Script_writebackup ; 50
+ dw Script_jumptextfaceplayer ; 51
IF _CRYSTAL
- dw Script_farjumptext
+ dw Script_farjumptext ; 52
ENDC
- dw Script_jumptext
- dw Script_closetext
- dw Script_keeptextopen
- dw Script_pokepic
- dw Script_pokepicyesorno
- dw Script_interpretmenu
- dw Script_interpretmenu2
- dw Script_loadpikachudata
- dw Script_battlecheck
- dw Script_loadtrainerdata
- dw Script_loadpokedata
- dw Script_loadtrainer
- dw Script_startbattle
- dw Script_returnafterbattle
- dw Script_catchtutorial
- dw Script_trainertext
- dw Script_trainerstatus
- dw Script_winlosstext
- dw Script_scripttalkafter
- dw Script_talkaftercancel
- dw Script_talkaftercheck
- dw Script_setlasttalked
- dw Script_applymovement
- dw Script_applymovement2
- dw Script_faceplayer
- dw Script_faceperson
- dw Script_variablesprite
- dw Script_disappear
- dw Script_appear
- dw Script_follow
- dw Script_stopfollow
- dw Script_moveperson
- dw Script_writepersonxy
- dw Script_loademote
- dw Script_showemote
- dw Script_spriteface
- dw Script_follownotexact
- dw Script_earthquake
- dw Script_changemap
- dw Script_changeblock
- dw Script_reloadmap
- dw Script_reloadmappart
- dw Script_writecmdqueue
- dw Script_delcmdqueue
- dw Script_playmusic
- dw Script_playrammusic
- dw Script_musicfadeout
- dw Script_playmapmusic
- dw Script_reloadmapmusic
- dw Script_cry
- dw Script_playsound
- dw Script_waitbutton
- dw Script_warpsound
- dw Script_specialsound
- dw Script_passtoengine
- dw Script_newloadmap
- dw Script_pause
- dw Script_deactivatefacing
- dw Script_priorityjump
- dw Script_warpcheck
- dw Script_ptpriorityjump
- dw Script_return
- dw Script_end
- dw Script_reloadandreturn
- dw Script_resetfuncs
- dw Script_pokemart
- dw Script_elevator
- dw Script_trade
- dw Script_askforphonenumber
- dw Script_phonecall
- dw Script_hangup
- dw Script_describedecoration
- dw Script_fruittree
- dw Script_specialphonecall
- dw Script_checkphonecall
- dw Script_verbosegiveitem
- dw Script_verbosegiveitem2
- dw Script_loadwilddata
- dw Script_halloffame
- dw Script_credits
- dw Script_warpfacing
- dw Script_battletowertext
- dw Script_displaylocation
- dw Script_trainerclassname
- dw Script_name
- dw Script_wait
- dw Script_check_save
+ dw Script_jumptext ; 53
+ dw Script_waitbutton ; 54
+ dw Script_buttonsound ; 55
+ dw Script_pokepic ; 56
+ dw Script_closepokepic ; 57
+ dw Script__2dmenu ; 58
+ dw Script_verticalmenu ; 59
+ dw Script_loadpikachudata ; 5a
+ dw Script_randomwildmon ; 5b
+ dw Script_loadmemtrainer ; 5c
+ dw Script_loadwildmon ; 5d
+ dw Script_loadtrainer ; 5e
+ dw Script_startbattle ; 5f
+ dw Script_returnafterbattle ; 60
+ dw Script_catchtutorial ; 61
+ dw Script_trainertext ; 62
+ dw Script_trainerflagaction ; 63
+ dw Script_winlosstext ; 64
+ dw Script_scripttalkafter ; 65
+ dw Script_end_if_just_battled ; 66
+ dw Script_check_just_battled ; 67
+ dw Script_setlasttalked ; 68
+ dw Script_applymovement ; 69
+ dw Script_applymovement2 ; 6a
+ dw Script_faceplayer ; 6b
+ dw Script_faceperson ; 6c
+ dw Script_variablesprite ; 6d
+ dw Script_disappear ; 6e
+ dw Script_appear ; 6f
+ dw Script_follow ; 70
+ dw Script_stopfollow ; 71
+ dw Script_moveperson ; 72
+ dw Script_writepersonxy ; 73
+ dw Script_loademote ; 74
+ dw Script_showemote ; 75
+ dw Script_spriteface ; 76
+ dw Script_follownotexact ; 77
+ dw Script_earthquake ; 78
+ dw Script_changemap ; 79
+ dw Script_changeblock ; 7a
+ dw Script_reloadmap ; 7b
+ dw Script_reloadmappart ; 7c
+ dw Script_writecmdqueue ; 7d
+ dw Script_delcmdqueue ; 7e
+ dw Script_playmusic ; 7f
+ dw Script_encountermusic ; 80
+ dw Script_musicfadeout ; 81
+ dw Script_playmapmusic ; 82
+ dw Script_reloadmapmusic ; 83
+ dw Script_cry ; 84
+ dw Script_playsound ; 85
+ dw Script_waitsfx ; 86
+ dw Script_warpsound ; 87
+ dw Script_specialsound ; 88
+ dw Script_passtoengine ; 89
+ dw Script_newloadmap ; 8a
+ dw Script_pause ; 8b
+ dw Script_deactivatefacing ; 8c
+ dw Script_priorityjump ; 8d
+ dw Script_warpcheck ; 8e
+ dw Script_ptpriorityjump ; 8f
+ dw Script_return ; 90
+ dw Script_end ; 91
+ dw Script_reloadandreturn ; 92
+ dw Script_end_all ; 93
+ dw Script_pokemart ; 94
+ dw Script_elevator ; 95
+ dw Script_trade ; 96
+ dw Script_askforphonenumber ; 97
+ dw Script_phonecall ; 98
+ dw Script_hangup ; 99
+ dw Script_describedecoration ; 9a
+ dw Script_fruittree ; 9b
+ dw Script_specialphonecall ; 9c
+ dw Script_checkphonecall ; 9d
+ dw Script_verbosegiveitem ; 9e
+ dw Script_verbosegiveitem2 ; 9f
+ dw Script_swarm ; a0
+ dw Script_halloffame ; a1
+ dw Script_credits ; a2
+ dw Script_warpfacing ; a3
+ dw Script_battletowertext ; a4
+ dw Script_landmarktotext ; a5
+ dw Script_trainerclassname ; a6
+ dw Script_name ; a7
+ dw Script_wait ; a8
+ dw Script_check_save ; a9
; 96e05
StartScript: ; 96e05
@@ -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
@@ -345,10 +345,10 @@ Script_jumptext: ; 96e5f
JumpTextFacePlayerScript: ; 96e79
faceplayer
JumpTextScript: ; 96e7a
- loadfont
+ opentext
repeattext -1, -1
+ waitbutton
closetext
- loadmovesprites
end
; 96e81
@@ -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,17 +427,18 @@ Script_repeattext: ; 96ebb
ld l, a
call MapTextbox
ret
+
.done
ret
; 96ed9
-Script_closetext: ; 96ed9
+Script_waitbutton: ; 96ed9
; script command 0x54
- jp CloseText
+ jp WaitButton
; 96edc
-Script_keeptextopen: ; 96edc
+Script_buttonsound: ; 96edc
; script command 0x55
ld a, [hOAMUpdate]
@@ -445,7 +446,7 @@ Script_keeptextopen: ; 96edc
ld a, $1
ld [hOAMUpdate], a
call WaitBGMap
- call KeepTextOpen
+ call ButtonSound
pop af
ld [hOAMUpdate], a
ret
@@ -455,9 +456,9 @@ Script_yesorno: ; 96eed
; script command 0x4e
call YesNoBox
- ld a, 0
+ ld a, FALSE
jr c, .no
- ld a, 1
+ ld a, TRUE
.no
ld [ScriptVar], a
ret
@@ -502,20 +503,20 @@ Script_pokepic: ; 96f16
ret
; 96f29
-Script_pokepicyesorno: ; 96f29
+Script_closepokepic: ; 96f29
; script command 0x57
- callba PokepicYesOrNo
+ callba ClosePokepic
ret
; 96f30
-Script_interpretmenu2: ; 96f30
+Script_verticalmenu: ; 96f30
; script command 0x59
ld a, [ScriptBank]
- ld hl, InterpretMenu2
+ ld hl, VerticalMenu
rst FarCall
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
jr nc, .ok
xor a
.ok
@@ -523,11 +524,11 @@ Script_interpretmenu2: ; 96f30
ret
; 96f41
-Script_interpretmenu: ; 96f41
+Script__2dmenu: ; 96f41
; script command 0x58
ld a, [ScriptBank]
- ld hl, InterpretMenu
+ ld hl, _2DMenu
rst FarCall
ld a, [wMenuCursorBuffer]
jr nc, .ok
@@ -575,14 +576,14 @@ GiveItemScript: ; 96f77
callasm ret_96f76
writetext ReceivedItemText
iffalse .Full
- waitbutton
+ waitsfx
specialsound
- closetext
+ waitbutton
itemnotify
end
.Full
- keeptextopen
+ buttonsound
pocketisfull
end
; 96f89
@@ -611,7 +612,7 @@ Script_verbosegiveitem2: ; 96f8e
ld [wItemQuantityChangeBuffer], a
ld hl, NumItems
call ReceiveItem
- ld a, 1
+ ld a, TRUE
jr c, .ok2
xor a
.ok2
@@ -748,7 +749,7 @@ Script_elevator: ; 9707c
ld b, a
callba Elevator
ret c
- ld a, $1
+ ld a, TRUE
ld [ScriptVar], a
ret
; 97099
@@ -835,7 +836,7 @@ Script_fruittree: ; 970ee
jp ScriptJump
; 970fc
-Script_loadwilddata: ; 970fc
+Script_swarm: ; 970fc
; script command 0xa0
; parameters:
; flag (SingleByteParam)
@@ -848,7 +849,7 @@ Script_loadwilddata: ; 970fc
ld d, a
call GetScriptByte
ld e, a
- callba LoadWildData
+ callba StoreSwarmMapIndices
ret
; 9710f
@@ -876,7 +877,7 @@ endr
Script_scripttalkafter: ; 97125
; script command 0x65
- ld hl, wd04b
+ ld hl, wScriptAfterPointer
ld a, [hli]
ld h, [hl]
ld l, a
@@ -885,7 +886,7 @@ Script_scripttalkafter: ; 97125
jp ScriptJump
; 97132
-Script_trainerstatus: ; 97132
+Script_trainerflagaction: ; 97132
; script command 0x63
; parameters:
; action (SingleByteParam)
@@ -902,7 +903,7 @@ Script_trainerstatus: ; 97132
ld a, c
and a
ret z
- ld a, 1
+ ld a, TRUE
ld [ScriptVar], a
ret
; 9714c
@@ -926,7 +927,7 @@ Script_winlosstext: ; 9714c
ret
; 97163
-Script_talkaftercancel: ; 97163
+Script_end_if_just_battled: ; 97163
; script command 0x66
ld a, [wRunningTrainerBattleScript]
@@ -935,10 +936,10 @@ Script_talkaftercancel: ; 97163
jp Script_end
; 9716b
-Script_talkaftercheck: ; 9716b
+Script_check_just_battled: ; 9716b
; script command 0x67
- ld a, 1
+ ld a, TRUE
ld [ScriptVar], a
ld a, [wRunningTrainerBattleScript]
and a
@@ -948,7 +949,7 @@ Script_talkaftercheck: ; 9716b
ret
; 9717a
-Script_playrammusic: ; 9717a
+Script_encountermusic: ; 9717a
; script command 0x80
ld a, [OtherTrainerClass]
@@ -1011,7 +1012,7 @@ Script_playsound: ; 971b7
ret
; 971c3
-Script_waitbutton: ; 971c3
+Script_waitsfx: ; 971c3
; script command 0x86
call WaitSFX
@@ -1481,7 +1482,7 @@ Script_loadpikachudata: ; 973f0
ret
; 973fb
-Script_battlecheck: ; 973fb
+Script_randomwildmon: ; 973fb
; script command 0x5b
xor a
@@ -1489,19 +1490,19 @@ Script_battlecheck: ; 973fb
ret
; 97400
-Script_loadtrainerdata: ; 97400
+Script_loadmemtrainer: ; 97400
; script command 0x5c
ld a, (1 << 7) | 1
ld [wBattleScriptFlags], a
- ld a, [WalkingDirection]
+ ld a, [wTempTrainerClass]
ld [OtherTrainerClass], a
- ld a, [FacingDirection]
+ ld a, [wTempTrainerID]
ld [OtherTrainerID], a
ret
; 97412
-Script_loadpokedata: ; 97412
+Script_loadwildmon: ; 97412
; script command 0x5d
; parameters:
; pokemon (PokemonParam)
@@ -1654,7 +1655,7 @@ ScriptCall: ; 974cb
ld e, [hl]
inc [hl]
ld d, $0
- ld hl, wScriptStackBA1
+ ld hl, wScriptStack
rept 3
add hl, de
endr
@@ -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
@@ -2185,7 +2186,7 @@ ConvertLandmarkToText: ; 976f4
jp ConvertMemToText
; 97701
-Script_displaylocation: ; 97701
+Script_landmarktotext: ; 97701
; script command 0xa5
; parameters:
; id (SingleByteParam)
@@ -2362,7 +2363,7 @@ Script_giveitem: ; 977ca
ld hl, NumItems
call ReceiveItem
jr nc, .full
- ld a, $1
+ ld a, TRUE
ld [ScriptVar], a
ret
.full
@@ -2384,11 +2385,11 @@ Script_takeitem: ; 977f0
call GetScriptByte
ld [wItemQuantityChangeBuffer], a
ld a, -1
- ld [ItemCountBuffer], a
+ ld [CurItemQuantity], a
ld hl, NumItems
call TossItem
ret nc
- ld a, $1
+ ld a, TRUE
ld [ScriptVar], a
ret
; 97812
@@ -2405,7 +2406,7 @@ Script_checkitem: ; 97812
ld hl, NumItems
call CheckItem
ret nc
- ld a, 1
+ ld a, TRUE
ld [ScriptVar], a
ret
; 97829
@@ -2534,7 +2535,7 @@ Script_checktime: ; 978ae
call GetScriptByte
and c
ret z
- ld a, $1
+ ld a, TRUE
ld [ScriptVar], a
ret
; 978c3
@@ -2551,7 +2552,7 @@ Script_checkpoke: ; 978c3
ld de, 1
call IsInArray
ret nc
- ld a, 1
+ ld a, TRUE
ld [ScriptVar], a
ret
; 978da
@@ -2567,7 +2568,7 @@ Script_addcellnum: ; 978da
ld c, a
callba AddPhoneNumber
ret nc
- ld a, $1
+ ld a, TRUE
ld [ScriptVar], a
ret
; 978ef
@@ -2583,7 +2584,7 @@ Script_delcellnum: ; 978ef
ld c, a
callba DelCellNum
ret nc
- ld a, $1
+ ld a, TRUE
ld [ScriptVar], a
ret
; 97904
@@ -2600,7 +2601,7 @@ Script_checkcellnum: ; 97904
ld c, a
callba CheckCellNum
ret nc
- ld a, $1
+ ld a, TRUE
ld [ScriptVar], a
ret
; 97919
@@ -2624,7 +2625,7 @@ Script_checkphonecall: ; 97926
ld a, [wSpecialPhoneCallID]
and a
jr z, .ok
- ld a, 1
+ ld a, TRUE
.ok
ld [ScriptVar], a
ret
@@ -2728,7 +2729,7 @@ Script_checkevent: ; 979a4
ld a, c
and a
jr z, .false
- ld a, 1
+ ld a, TRUE
.false
ld [ScriptVar], a
ret
@@ -2743,7 +2744,7 @@ Script_setflag: ; 979bb
ld e, a
call GetScriptByte
ld d, a
- ld b, 1 ; set
+ ld b, SET_FLAG
call _EngineFlagAction
ret
; 979c9
@@ -2757,7 +2758,7 @@ Script_clearflag: ; 979c9
ld e, a
call GetScriptByte
ld d, a
- ld b, 0 ; clear
+ ld b, RESET_FLAG
call _EngineFlagAction
ret
; 979d7
@@ -2776,7 +2777,7 @@ Script_checkflag: ; 979d7
ld a, c
and a
jr z, .false
- ld a, 1
+ ld a, TRUE
.false
ld [ScriptVar], a
ret
@@ -3025,10 +3026,10 @@ Script_reloadandreturn: ; 97b16
jp Script_end
; 97b1c
-Script_loadfont: ; 97b1c
+Script_textbox: ; 97b1c
; script command 0x47
- call LoadFont
+ call OpenText
ret
; 97b20
@@ -3053,15 +3054,15 @@ Script_loadbytec2cf: ; 97b27
; 97b2e
-LoadMoveSpritesScript: ; 97b2e
- loadmovesprites
+CloseTextScript: ; 97b2e
+ closetext
; 97b2f
-Script_loadmovesprites: ; 97b2f
+Script_closetext: ; 97b2f
; script command 0x49
call Function2e20
- call LoadMoveSprites
+ call CloseText
ret
; 97b36
@@ -3165,7 +3166,7 @@ ExitScriptSubroutine: ; 97b9a
dec [hl]
ld e, [hl]
ld d, $0
- ld hl, wScriptStackBA1
+ ld hl, wScriptStack
rept 3
add hl,de
endr
@@ -3186,7 +3187,7 @@ endr
ret
; 97bc0
-Script_resetfuncs: ; 97bc0
+Script_end_all: ; 97bc0
; script command 0x93
xor a
@@ -3210,17 +3211,15 @@ Script_halloffame: ; 97bd5
callba HallOfFame
ld hl, GameTimerPause
set 0, [hl]
- jr DisplayCredits
+ jr ReturnFromCredits
; 97bf3
Script_credits: ; 97bf3
; script command 0xa2
callba RedCredits
- ; fallthrough
-
-DisplayCredits:
- call Script_resetfuncs
+ReturnFromCredits:
+ call Script_end_all
ld a, $3
call LoadMapStatus
call StopScript
diff --git a/engine/scrolling_menu.asm b/engine/scrolling_menu.asm
new file mode 100755
index 000000000..b09453239
--- /dev/null
+++ b/engine/scrolling_menu.asm
@@ -0,0 +1,543 @@
+_InitScrollingMenu:: ; 245af
+ xor a
+ ld [wMenuJoypad], a
+ ld [hBGMapMode], a
+ inc a
+ ld [hInMenu], a
+ call InitScrollingMenuCursor
+ call ScrollingMenu_InitFlags
+ call ScrollingMenu_ValidateSwitchItem
+ call ScrollingMenu_InitDisplay
+ call ApplyTilemap
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 245cb
+
+_ScrollingMenu:: ; 245cb
+.loop
+ call ScrollingMenuJoyAction
+ jp c, .exit
+ call z, .zero
+ jr .loop
+; 245d6
+
+.exit: ; 245d6
+ call MenuClickSound
+ ld [wMenuJoypad], a
+ ld a, 0
+ ld [hInMenu], a
+ ret
+; 245e1
+
+.zero: ; 245e1
+ call ScrollingMenu_InitDisplay
+ ld a, 1
+ ld [hBGMapMode], a
+ ld c, 3
+ call DelayFrames
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 245f1
+
+ScrollingMenu_InitDisplay: ; 245f1
+ xor a
+ ld [hBGMapMode], a
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set NO_TEXT_SCROLL, [hl]
+ call ScrollingMenu_UpdateDisplay
+ call ScrollingMenu_PlaceCursor
+ call ScrollingMenu_CheckCallFunction3
+ pop af
+ ld [Options], a
+ ret
+; 24609
+
+ScrollingMenuJoyAction: ; 24609
+.loop
+ call ScrollingMenuJoypad
+ 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 PlaceHollowCursor
+ ld a, [wMenuCursorY]
+ dec a
+ call ScrollingMenu_GetListItemCoordAndFunctionArgs
+ ld a, [MenuSelection]
+ ld [CurItem], a
+ ld a, [MenuSelectionQuantity]
+ ld [wItemQuantityBuffer], a
+ call ScrollingMenu_GetCursorPosition
+ dec a
+ ld [wScrollingMenuCursorPosition], a
+ ld [CurItemQuantity], 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, [wMenuCursorY]
+ dec a
+ call ScrollingMenu_GetListItemCoordAndFunctionArgs
+ ld a, [MenuSelection]
+ cp -1
+ jp z, xor_a_dec_a
+ call ScrollingMenu_GetCursorPosition
+ dec a
+ ld [wScrollingMenuCursorPosition], 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, w2DMenuFlags2
+ 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, w2DMenuFlags2
+ 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, w2DMenuFlags2
+ 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, w2DMenuFlags2
+ bit 7, [hl]
+ jp z, xor_a
+ ld hl, wMenuScrollPosition
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ add [hl]
+ ld b, a
+ ld a, [wScrollingMenuListSize]
+ cp b
+ jr c, .xor_dec_down
+ inc [hl]
+ jp xor_a
+
+.xor_dec_down
+ jp xor_a_dec_a
+; 246fc
+
+ScrollingMenu_GetCursorPosition: ; 246fc
+ ld a, [wMenuScrollPosition]
+ ld c, a
+ ld a, [wMenuCursorY]
+ 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, [wMenuData2_ScrollingMenuHeight]
+.asm_24713
+ ld [hl], " "
+ add hl, de
+ dec a
+ jr nz, .asm_24713
+ ret
+
+InitScrollingMenuCursor: ; 2471a
+ ld hl, wMenuData2_ItemsPointerAddr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wMenuData2_ItemsPointerBank]
+ call GetFarByte
+ ld [wScrollingMenuListSize], a
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ ld c, a
+ ld a, [wMenuScrollPosition]
+ add c
+ ld c, a
+ ld a, [wScrollingMenuListSize]
+ inc a
+ cp c
+ jr nc, .skip
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ ld c, a
+ ld a, [wScrollingMenuListSize]
+ 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, [wScrollingMenuListSize]
+ 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
+
+ScrollingMenu_InitFlags: ; 24764
+ ld a, [wMenuData2Flags]
+ ld c, a
+ ld a, [wScrollingMenuListSize]
+ ld b, a
+ ld a, [wMenuBorderTopCoord]
+ add 1
+ ld [w2DMenuCursorInitY], a
+ ld a, [wMenuBorderLeftCoord]
+ add 0
+ ld [w2DMenuCursorInitX], a
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ cp b
+ jr c, .no_extra_row
+ jr z, .no_extra_row
+ ld a, b
+ inc a
+.no_extra_row
+ ld [w2DMenuNumRows], a
+ ld a, 1
+ ld [w2DMenuNumCols], a
+ ld a, $8c
+ bit 2, c
+ jr z, .skip_set_0
+ set 0, a
+
+.skip_set_0
+ bit 3, c
+ jr z, .skip_set_1
+ set 1, a
+
+.skip_set_1
+ ld [w2DMenuFlags1], a
+ xor a
+ ld [w2DMenuFlags2], a
+ ld a, $20
+ ld [w2DMenuCursorOffsets], a
+ ld a, A_BUTTON | B_BUTTON | D_UP | D_DOWN
+ bit 7, c
+ jr z, .disallow_select
+ add SELECT
+
+.disallow_select
+ bit 6, c
+ jr z, .disallow_start
+ add START
+
+.disallow_start
+ ld [wMenuJoypadFilter], a
+ ld a, [w2DMenuNumRows]
+ ld b, a
+ ld a, [wMenuCursorBuffer]
+ and a
+ jr z, .reset_cursor
+ cp b
+ jr z, .cursor_okay
+ jr c, .cursor_okay
+
+.reset_cursor
+ ld a, 1
+
+.cursor_okay
+ ld [wMenuCursorY], a
+ ld a, 1
+ ld [wMenuCursorX], a
+ xor a
+ ld [wCursorCurrentTile], a
+ ld [wCursorCurrentTile + 1], a
+ ld [wCursorOffCharacter], a
+ ret
+; 247dd
+
+ScrollingMenu_ValidateSwitchItem: ; 247dd
+ ld a, [wScrollingMenuListSize]
+ ld c, a
+ ld a, [wSwitchItem]
+ and a
+ jr z, .done
+ dec a
+ cp c
+ jr c, .done
+ xor a
+ ld [wSwitchItem], a
+
+.done
+ ret
+; 247f0
+
+ScrollingMenu_UpdateDisplay: ; 247f0
+ call ClearWholeMenuBox
+ ld a, [wMenuData2Flags]
+ bit 4, a ; place arrows
+ jr z, .okay
+ ld a, [wMenuScrollPosition]
+ and a
+ jr z, .okay
+ ld a, [wMenuBorderTopCoord]
+ ld b, a
+ ld a, [wMenuBorderRightCoord]
+ ld c, a
+ call Coord2Tile
+ ld [hl], "▲"
+
+.okay
+ call MenuBoxCoord2Tile
+ ld bc, SCREEN_WIDTH + 1
+ add hl, bc
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ ld b, a
+ ld c, $0
+.loop
+ ld a, [wMenuScrollPosition]
+ add c
+ ld [wScrollingMenuCursorPosition], a
+ ld a, c
+ call ScrollingMenu_GetListItemCoordAndFunctionArgs
+ ld a, [MenuSelection]
+ cp -1
+ jr z, .cancel
+ push bc
+ push hl
+ call ScrollingMenu_CallFunctions1and2
+ pop hl
+ ld bc, 2 * SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ inc c
+ ld a, c
+ cp b
+ jr nz, .loop
+ ld a, [wMenuData2Flags]
+ bit 4, a ; place arrows
+ jr z, .done
+ ld a, [wMenuBorderBottomCoord]
+ ld b, a
+ ld a, [wMenuBorderRightCoord]
+ ld c, a
+ call Coord2Tile
+ ld [hl], "▼"
+
+.done
+ ret
+
+.cancel
+ ld a, [wMenuData2Flags]
+ bit 0, a ; call function on cancel
+ jr nz, .call_function
+ ld de, .string_2485f
+ call PlaceString
+ ret
+
+.string_2485f
+ db "CANCEL@"
+
+.call_function
+ ld d, h
+ ld e, l
+ ld hl, wMenuData2_ScrollingMenuFunction1
+ jp CallPointerAt
+; 2486e
+
+ScrollingMenu_CallFunctions1and2: ; 2486e
+ push hl
+ ld d, h
+ ld e, l
+ ld hl, wMenuData2_ScrollingMenuFunction1
+ call CallPointerAt
+ pop hl
+ ld a, [wMenuData2_ScrollingMenuWidth]
+ and a
+ jr z, .done
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld d, h
+ ld e, l
+ ld hl, wMenuData2_ScrollingMenuFunction2
+ call CallPointerAt
+
+.done
+ ret
+; 2488b
+
+ScrollingMenu_PlaceCursor: ; 2488b
+ ld a, [wSwitchItem]
+ and a
+ jr z, .done
+ ld b, a
+ ld a, [wMenuScrollPosition]
+ cp b
+ jr nc, .done
+ ld c, a
+ ld a, [wMenuData2_ScrollingMenuHeight]
+ add c
+ cp b
+ jr c, .done
+ 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], "▷"
+
+.done
+ ret
+; 248b8
+
+ScrollingMenu_CheckCallFunction3: ; 248b8
+ ld a, [wMenuData2Flags]
+ bit 5, a ; call function 3
+ ret z
+ bit 1, a ; call function 3 if not switching items
+ jr z, .call
+ ld a, [wSwitchItem]
+ and a
+ ret nz
+
+.call
+ ld a, [wMenuCursorY]
+ dec a
+ call ScrollingMenu_GetListItemCoordAndFunctionArgs
+ ld hl, wMenuData2_ScrollingMenuFunction3
+ call CallPointerAt
+ ret
+; 248d5
+
+ScrollingMenu_GetListItemCoordAndFunctionArgs: ; 248d5
+ push de
+ push hl
+ ld e, a
+ ld a, [wMenuScrollPosition]
+ add e
+ ld e, a
+ ld d, $0
+ ld hl, wMenuData2_ItemsPointerAddr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl ; items
+ ld a, [wMenuData2_ScrollingMenuSpacing]
+ cp 1
+ jr z, .got_spacing
+ cp 2
+ jr z, .pointless_jump
+.pointless_jump
+ add hl, de
+.got_spacing
+ add hl, de
+ ld a, [wMenuData2_ItemsPointerBank]
+ call GetFarByte
+ ld [MenuSelection], a
+ ld [CurItem], a
+ inc hl
+ ld a, [wMenuData2_ItemsPointerBank]
+ call GetFarByte
+ ld [MenuSelectionQuantity], a
+ pop hl
+ pop de
+ ret
+; 2490c
diff --git a/engine/search.asm b/engine/search.asm
new file mode 100755
index 000000000..662623296
--- /dev/null
+++ b/engine/search.asm
@@ -0,0 +1,276 @@
+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
diff --git a/engine/selectmenu.asm b/engine/selectmenu.asm
index 916e48b3c..03210f43d 100755
--- a/engine/selectmenu.asm
+++ b/engine/selectmenu.asm
@@ -5,12 +5,12 @@ SelectMenu:: ; 13327
jp UseRegisteredItem
.NotRegistered
- call LoadFont
+ call OpenText
ld b, BANK(ItemMayBeRegisteredText)
ld hl, ItemMayBeRegisteredText
call MapTextbox
- call CloseText
- jp LoadMoveSprites
+ call WaitButton
+ jp CloseText
; 13340
@@ -139,17 +139,17 @@ UseRegisteredItem: ; 133c3
; 133df
.NoFunction ; 133df
- call LoadFont
+ call OpenText
call CantUseItem
- call LoadMoveSprites
+ call CloseText
and a
ret
; 133ea
.Current ; 133ea
- call LoadFont
+ call OpenText
call DoItemEffect
- call LoadMoveSprites
+ call CloseText
and a
ret
; 133f5
@@ -158,8 +158,8 @@ UseRegisteredItem: ; 133c3
call ResetWindow
call FadeToMenu
call DoItemEffect
- call ReturnToCallingMenu
- call LoadMoveSprites
+ call CloseSubmenu
+ call CloseText
and a
ret
; 13406
@@ -167,11 +167,11 @@ UseRegisteredItem: ; 133c3
.Overworld ; 13406
call ResetWindow
ld a, 1
- ld [wd0ef], a
+ ld [wUsingItemWithSelect], a
call DoItemEffect
xor a
- ld [wd0ef], a
- ld a, [wd0ec]
+ ld [wUsingItemWithSelect], a
+ ld a, [wItemEffectSucceeded]
cp 1
jr nz, ._cantuse
scf
@@ -185,7 +185,7 @@ UseRegisteredItem: ; 133c3
._cantuse
call CantUseItem
- call LoadMoveSprites
+ call CloseText
and a
ret
; 1342d
diff --git a/engine/slot_machine.asm b/engine/slot_machine.asm
index afd038588..aad1e4def 100755
--- a/engine/slot_machine.asm
+++ b/engine/slot_machine.asm
@@ -1,11 +1,20 @@
+SLOTS_NOMATCH EQU -1
+SLOTS_SEVEN EQU $00
+SLOTS_POKEBALL EQU $04
+SLOTS_CHERRY EQU $08
+SLOTS_PIKACHU EQU $0c
+SLOTS_SQUIRTLE EQU $10
+SLOTS_STARYU EQU $14
+REEL_SIZE EQU 15
+
_SlotMachine:
ld hl, Options
set 4, [hl]
- call Function926f7
+ call .InitGFX
call DelayFrame
-.asm_926d2
- call Function927af
- jr nc, .asm_926d2
+.loop
+ call SlotsLoop
+ jr nc, .loop
call WaitSFX
ld de, SFX_QUIT_SLOTS
call PlaySFX
@@ -18,7 +27,7 @@ _SlotMachine:
res 2, [hl]
ret
-Function926f7: ; 926f7 (24:66f7)
+.InitGFX: ; 926f7 (24:66f7)
call ClearBGPalettes
call ClearTileMap
call ClearSprites
@@ -27,132 +36,140 @@ Function926f7: ; 926f7 (24:66f7)
call DelayFrame
call DisableLCD
hlbgcoord 0, 0
- lb bc, 4, 0
+ ld bc, VBGMap1 - VBGMap0
ld a, " "
call ByteFill
ld b, SCGB_05
call GetSGBLayout
- callab Function8cf53
- ld hl, wc6d0
- ld bc, $48
+ callab ClearSpriteAnims
+ ld hl, wSlots
+ ld bc, wSlotsDataEnd - wSlots
xor a
call ByteFill
+
ld hl, Slots2LZ
ld de, VTiles0 tile $00
call Decompress
+
ld hl, Slots3LZ
ld de, VTiles0 tile $40
call Decompress
+
ld hl, Slots1LZ
ld de, VTiles2 tile $00
call Decompress
+
ld hl, Slots2LZ
ld de, VTiles2 tile $25
call Decompress
+
ld hl, SlotsTilemap
decoord 0, 0
- ld bc, 20 * 12
+ ld bc, SCREEN_WIDTH * 12
call CopyBytes
+
ld hl, rLCDC ; $ff40
set 2, [hl]
call EnableLCD
- ld hl, wc6d0
- ld bc, $64
+ ld hl, wSlots ; Alias: wTrademons
+ ld bc, wSlotsEnd - wSlots ; Alias: wTrademonsEnd
xor a
call ByteFill
- call Function92a98
- call Function9279b
+ call InitReelTiles
+ call Slots_GetPals
ld a, $7
- ld hl, wc300
+ ld hl, wSpriteAnimDict
ld [hli], a
ld [hl], $40
xor a
ld [wJumptableIndex], a
- ld a, $ff
- ld [wc709], a
+ ld a, SLOTS_NOMATCH
+ ld [wSlotBias], a
ld de, MUSIC_GAME_CORNER
call PlayMusic
xor a
ld [wd002], a
call Random
- and $2a
+ and %00101010
ret nz
ld a, $1
ld [wd002], a
ret
-Function9279b: ; 9279b (24:679b)
- ld a, $e4
+Slots_GetPals: ; 9279b (24:679b)
+ ld a, %11100100
call DmgToCgbBGPals
- lb de, $e4, $e4
+ lb de, %11100100, %11100100
ld a, [hCGB]
and a
- jr nz, .asm_927ab
- lb de, $c0, $e4
-.asm_927ab
+ jr nz, .cgb
+ lb de, %11000000, %11100100
+.cgb
call DmgToCgbObjPals
ret
-Function927af: ; 927af (24:67af)
+SlotsLoop: ; 927af (24:67af)
ld a, [wJumptableIndex]
bit 7, a
- jr nz, .asm_927d1
- call Function92844
- call Function92b0f
+ jr nz, .stop
+ call SlotsJumptable
+ call Slots_SpinReels
xor a
- ld [wc3b5], a
- callab Function8cfa8
- call Function927f8
- call Function927d3
+ ld [wCurrSpriteOAMAddr], a
+ callab DoNextFrameForFirst16Sprites
+ call .PrintCoinsAndPayout
+ call .DummyFunc
call DelayFrame
and a
ret
-.asm_927d1
+
+.stop
scf
ret
-Function927d3: ; 927d3 (24:67d3)
+.DummyFunc: ; 927d3 (24:67d3)
+; dummied out
ret
-; 927d4 (24:67d4)
-
-Function927d4: ; 927d4
- ld a, [wc6d0]
+ ld a, [wReel1ReelAction]
and a
ret nz
- ld a, [wc6e0]
+ ld a, [wReel2ReelAction]
and a
ret nz
- ld a, [wc70c]
+ ld a, [wFirstTwoReelsMatchingSevens]
and a
- jr nz, .asm_927ea
- ld a, $e4
+ jr nz, .matching_sevens
+ ld a, %11100100
call DmgToCgbBGPals
ret
-.asm_927ea
+.matching_sevens
ld a, [TextDelayFrames]
and $7
ret nz
ld a, [rBGP]
- xor %1100
+ xor %00001100
call DmgToCgbBGPals
ret
+
; 927f8
-Function927f8: ; 927f8 (24:67f8)
+.PrintCoinsAndPayout: ; 927f8 (24:67f8)
hlcoord 5, 1
ld de, Coins
lb bc, PRINTNUM_LEADINGZEROS | 2, 4
call PrintNum
hlcoord 11, 1
- ld de, wc711
+ ld de, wPayout
lb bc, PRINTNUM_LEADINGZEROS | 2, 4
call PrintNum
ret
+
; 92811 (24:6811)
Function92811: ; 92811
- ld a, [wc709]
+; unreferenced - debug function?
+ ld a, [wSlotBias]
add 0
daa
ld e, a
@@ -167,17 +184,20 @@ Function92811: ; 92811
hlcoord 0, 0
ld [hl], a
ret
+
; 9282c
Function9282c: ; 9282c
+; unreferenced
+; animate OAM tiles?
ld hl, wcf66
ld a, [hl]
inc [hl]
and $7
ret nz
- ld hl, Sprites + $42
- ld c, $18
-.asm_92839
+ ld hl, Sprites + 16 * 4 + 2
+ ld c, 40 - 16
+.loop
ld a, [hl]
xor $20
ld [hli], a
@@ -185,15 +205,16 @@ rept 3
inc hl
endr
dec c
- jr nz, .asm_92839
+ jr nz, .loop
ret
+
; 92844
-Function92844: ; 92844 (24:6844)
+SlotsJumptable: ; 92844 (24:6844)
ld a, [wJumptableIndex]
ld e, a
ld d, 0
- ld hl, Jumptable_92853
+ ld hl, .Jumptable
rept 2
add hl, de
endr
@@ -201,208 +222,207 @@ endr
ld h, [hl]
ld l, a
jp [hl]
+
; 92853 (24:6853)
-Jumptable_92853: ; 92853 (24:6853)
- dw Function9287e
- dw Function9288e
- dw Function928c6
- dw Function928d6
- dw Function928e6
- dw Function92900
- dw Function92910
- dw Function9292a
- dw Function9293a
- dw Function92879
- dw Function92879
- dw Function92879
- dw Function92955
- dw Function9296b
- dw Function92987
- dw Function9299e
- dw Function929a4
- dw Function929d9
- dw Function929f0
-
-
-Function92879: ; 92879 (24:6879)
+.Jumptable: ; 92853 (24:6853)
+ jumptable_start
+ jumptable Slots_Init ; 00
+ jumptable Slots_BetAndStart ; 01
+ jumptable Slots_WaitStart ; 02
+ jumptable Slots_WaitReel1 ; 03
+ jumptable Slots_WaitStopReel1 ; 04
+ jumptable Slots_WaitReel2 ; 05
+ jumptable Slots_WaitStopReel2 ; 06
+ jumptable Slots_WaitReel3 ; 07
+ jumptable Slots_WaitStopReel3 ; 08
+ jumptable Slots_Next ; 09
+ jumptable Slots_Next ; 0a
+ jumptable Slots_Next ; 0b
+ jumptable Slots_FlashIfWin ; 0c
+ jumptable Slots_FlashScreen ; 0d
+ jumptable Slots_GiveEarnedCoins ; 0e
+ jumptable Slots_PayoutTextAndAnim ; 0f
+ jumptable Slots_PayoutAnim ; 10
+ jumptable Slots_RestartOrQuit ; 11
+ jumptable Slots_Quit ; 12
+
+Slots_Next: ; 92879 (24:6879)
ld hl, wJumptableIndex
inc [hl]
ret
-Function9287e: ; 9287e (24:687e)
- call Function92879
+Slots_Init: ; 9287e (24:687e)
+ call Slots_Next
xor a
- ld [wc70b], a
- ld [wc70c], a
- ld a, $ff
- ld [wc70d], a
+ ld [wFirstTwoReelsMatching], a
+ ld [wFirstTwoReelsMatchingSevens], a
+ ld a, -1
+ ld [wSlotMatched], a
ret
-Function9288e: ; 9288e (24:688e)
- call Function9307c
- jr nc, .asm_92899
- ld a, $12
+Slots_BetAndStart: ; 9288e (24:688e)
+ call Slots_AskBet
+ jr nc, .proceed
+ ld a, Slots_QuitTableIndex
ld [wJumptableIndex], a
ret
-.asm_92899
- call Function92879
- call Function9303f
- call Function93002
- ld a, $20
+
+.proceed
+ call Slots_Next
+ call Slots_IlluminateBetLights
+ call Slots_InitBias
+ ld a, 32
ld [wcf64], a
+ ld a, 4 ; ReelAction_NormalRateTableIndex
+ ld [wReel1ReelAction], a
+ ld [wReel2ReelAction], a
+ ld [wReel3ReelAction], a
ld a, $4
- ld [wc6d0], a
- ld [wc6e0], a
- ld [wc6f0], a
- ld a, $4
- ld [wc6d9], a
- ld [wc6e9], a
- ld [wc6f9], a
+ ld [wReel1Slot09], a
+ ld [wReel2Slot09], a
+ ld [wReel3Slot09], a
call WaitSFX
ld a, SFX_SLOT_MACHINE_START
- call Function9331e
+ call Slots_PlaySFX
ret
-Function928c6: ; 928c6 (24:68c6)
+Slots_WaitStart: ; 928c6 (24:68c6)
ld hl, wcf64
ld a, [hl]
and a
- jr z, .asm_928cf
+ jr z, .proceed
dec [hl]
ret
-.asm_928cf
- call Function92879
+
+.proceed
+ call Slots_Next
xor a
ld [hJoypadSum], a
ret
-Function928d6: ; 928d6 (24:68d6)
+Slots_WaitReel1: ; 928d6 (24:68d6)
ld hl, hJoypadSum ; $ffa5
ld a, [hl]
and A_BUTTON
ret z
- call Function92879
- call Function92a2b
- ld [wc6d0], a
-
-Function928e6: ; 928e6 (24:68e6)
- ld a, [wc6d0]
+ call Slots_Next
+ call Slots_StopReel1
+ ld [wReel1ReelAction], a
+Slots_WaitStopReel1: ; 928e6 (24:68e6)
+ ld a, [wReel1ReelAction]
cp $0
ret nz
ld a, SFX_STOP_SLOT
- call Function9331e
- ld bc, wc6d0
- ld de, wc700
- call Function929f6
- call Function92879
+ call Slots_PlaySFX
+ ld bc, wReel1
+ ld de, wReel1Stopped
+ call Slots_LoadReelState
+ call Slots_Next
xor a
ld [hJoypadSum], a
-
-Function92900: ; 92900 (24:6900)
+Slots_WaitReel2: ; 92900 (24:6900)
ld hl, hJoypadSum ; $ffa5
ld a, [hl]
and A_BUTTON
ret z
- call Function92879
- call Function92a2e
- ld [wc6e0], a
-
-Function92910: ; 92910 (24:6910)
- ld a, [wc6e0]
+ call Slots_Next
+ call Slots_StopReel2
+ ld [wReel2ReelAction], a
+Slots_WaitStopReel2: ; 92910 (24:6910)
+ ld a, [wReel2ReelAction]
cp $0
ret nz
ld a, SFX_STOP_SLOT
- call Function9331e
- ld bc, wc6e0
- ld de, wc703
- call Function929f6
- call Function92879
+ call Slots_PlaySFX
+ ld bc, wReel2
+ ld de, wReel2Stopped
+ call Slots_LoadReelState
+ call Slots_Next
xor a
ld [hJoypadSum], a
-
-Function9292a: ; 9292a (24:692a)
+Slots_WaitReel3: ; 9292a (24:692a)
ld hl, hJoypadSum ; $ffa5
ld a, [hl]
and A_BUTTON
ret z
- call Function92879
- call Function92a60
- ld [wc6f0], a
-
-Function9293a: ; 9293a (24:693a)
- ld a, [wc6f0]
+ call Slots_Next
+ call Slots_StopReel3
+ ld [wReel3ReelAction], a
+Slots_WaitStopReel3: ; 9293a (24:693a)
+ ld a, [wReel3ReelAction]
cp $0
ret nz
ld a, SFX_STOP_SLOT
- call Function9331e
- ld bc, wc6f0
- ld de, wc706
- call Function929f6
- call Function92879
+ call Slots_PlaySFX
+ ld bc, wReel3
+ ld de, wReel3Stopped
+ call Slots_LoadReelState
+ call Slots_Next
xor a
ld [hJoypadSum], a
ret
-Function92955: ; 92955 (24:6955)
- ld a, [wc70d]
- cp $ff
- jr nz, .asm_92963
- call Function92879
- call Function92879
+Slots_FlashIfWin: ; 92955 (24:6955)
+ ld a, [wSlotMatched]
+ cp -1
+ jr nz, .GotIt
+ call Slots_Next
+ call Slots_Next
ret
-.asm_92963
- call Function92879
- ld a, $10
- ld [wcf64], a
-Function9296b: ; 9296b (24:696b)
+.GotIt
+ call Slots_Next
+ ld a, 16
+ ld [wcf64], a
+Slots_FlashScreen: ; 9296b (24:696b)
ld hl, wcf64
ld a, [hl]
and a
- jr z, .asm_92980
+ jr z, .done
dec [hl]
srl a
ret z
+
ld a, [rOBP0]
xor $ff
ld e, a
ld d, a
call DmgToCgbObjPals
ret
-.asm_92980
- call Function9279b
- call Function92879
+
+.done
+ call Slots_GetPals
+ call Slots_Next
ret
-Function92987: ; 92987 (24:6987)
+Slots_GiveEarnedCoins: ; 92987 (24:6987)
xor a
- ld [wc70b], a
- ld [wc70c], a
- ld a, $e4
+ ld [wFirstTwoReelsMatching], a
+ ld [wFirstTwoReelsMatchingSevens], a
+ ld a, %11100100
call DmgToCgbBGPals
- call Function93124
+ call SlotGetPayout
xor a
ld [wcf64], a
- call Function92879
+ call Slots_Next
ret
-Function9299e: ; 9299e (24:699e)
- call Function93158
- call Function92879
-
-Function929a4: ; 929a4 (24:69a4)
+Slots_PayoutTextAndAnim: ; 9299e (24:699e)
+ call SlotPayoutText
+ call Slots_Next
+Slots_PayoutAnim: ; 929a4 (24:69a4)
ld hl, wcf64
ld a, [hl]
inc [hl]
and $1
ret z
- ld hl, wc711
+ ld hl, wPayout
ld a, [hli]
ld d, a
or [hl]
- jr z, .asm_929d5
+ jr z, .done
ld e, [hl]
dec de
ld [hl], e
@@ -412,44 +432,46 @@ Function929a4: ; 929a4 (24:69a4)
ld d, [hl]
inc hl
ld e, [hl]
- call Function92a04
- jr c, .asm_929c5
+ call Slot_CheckCoinCaseFull
+ jr c, .okay
inc de
-.asm_929c5
+.okay
ld [hl], e
dec hl
ld [hl], d
ld a, [wcf64]
and $7
- ret z
+ ret z ; ret nz would be more appropriate
ld de, SFX_GET_COIN_FROM_SLOTS
call PlaySFX
ret
-.asm_929d5
- call Function92879
+
+.done
+ call Slots_Next
ret
-Function929d9: ; 929d9 (24:69d9)
- call Function9304c
+Slots_RestartOrQuit: ; 929d9 (24:69d9)
+ call Slots_DeilluminateBetLights
call WaitPressAorB_BlinkCursor
- call Function930e9
- jr c, .asm_929ea
- ld a, $0
+ call Slots_AskPlayAgain
+ jr c, .exit_slots
+ ld a, Slots_InitTableIndex
ld [wJumptableIndex], a
ret
-.asm_929ea
- ld a, $12
+
+.exit_slots
+ ld a, Slots_QuitTableIndex
ld [wJumptableIndex], a
ret
-Function929f0: ; 929f0 (24:69f0)
+Slots_Quit: ; 929f0 (24:69f0)
ld hl, wJumptableIndex
set 7, [hl]
ret
-Function929f6: ; 929f6 (24:69f6)
+Slots_LoadReelState: ; 929f6 (24:69f6)
push de
- call Function92a12
+ call Slots_GetCurrentReelState
pop de
ld a, [hli]
ld [de], a
@@ -461,32 +483,33 @@ Function929f6: ; 929f6 (24:69f6)
ld [de], a
ret
-Function92a04: ; 92a04 (24:6a04)
+Slot_CheckCoinCaseFull: ; 92a04 (24:6a04)
ld a, d
cp 9999 / $100
- jr c, .asm_92a10
+ jr c, .not_full
ld a, e
cp 9999 % $100
- jr c, .asm_92a10
+ jr c, .not_full
scf
ret
-.asm_92a10
+
+.not_full
and a
ret
-Function92a12: ; 92a12 (24:6a12)
- ld hl, $3
+Slots_GetCurrentReelState: ; 92a12 (24:6a12)
+ ld hl, wReel1Position - wReel1
add hl, bc
ld a, [hl]
and a
- jr nz, .asm_92a1c
+ jr nz, .okay
ld a, $f
-.asm_92a1c
+.okay
dec a
and $f
ld e, a
ld d, $0
- ld hl, $1
+ ld hl, wReel1TilemapAddr - wReel1
add hl, bc
ld a, [hli]
ld h, [hl]
@@ -494,180 +517,186 @@ Function92a12: ; 92a12 (24:6a12)
add hl, de
ret
-Function92a2b: ; 92a2b (24:6a2b)
+Slots_StopReel1: ; 92a2b (24:6a2b)
ld a, $7
ret
-Function92a2e: ; 92a2e (24:6a2e)
- ld a, [wc70a]
+Slots_StopReel2: ; 92a2e (24:6a2e)
+ ld a, [wSlotBet]
cp $2
- jr c, .asm_92a4e
- ld a, [wc709]
+ jr c, .dont_jump
+ ld a, [wSlotBias]
and a
- jr z, .asm_92a3f
- cp $ff
- jr nz, .asm_92a4e
-.asm_92a3f
- call Function92a51
- jr nz, .asm_92a4e
+ jr z, .skip
+ cp SLOTS_NOMATCH
+ jr nz, .dont_jump
+.skip
+ call .CheckReel1ForASeven
+ jr nz, .dont_jump
call Random
- cp $50
- jr nc, .asm_92a4e
+ cp $50 ; 32%
+ jr nc, .dont_jump
ld a, $a
ret
-.asm_92a4e
+
+.dont_jump
ld a, $8
ret
-Function92a51: ; 92a51 (24:6a51)
- ld a, [wc700]
+.CheckReel1ForASeven: ; 92a51 (24:6a51)
+ ld a, [wReel1Stopped]
and a
ret z
- ld a, [wc701]
+ ld a, [wReel1Stopped + 1]
and a
ret z
- ld a, [wc702]
+ ld a, [wReel1Stopped + 2]
and a
ret
-Function92a60: ; 92a60 (24:6a60)
- ld a, [wc70b]
+Slots_StopReel3: ; 92a60 (24:6a60)
+ ld a, [wFirstTwoReelsMatching]
and a
- jr z, .asm_92a95
- ld a, [wc70c]
+ jr z, .stop
+ ld a, [wFirstTwoReelsMatchingSevens]
and a
- jr z, .asm_92a95
- ld a, [wc709]
+ jr z, .stop
+ ld a, [wSlotBias]
and a
- jr nz, .asm_92a84
+ jr nz, .biased
call Random
cp 180
- jr nc, .asm_92a95
+ jr nc, .stop
cp 120
- jr nc, .asm_92a92
+ jr nc, .slow_advance
cp 60
- jr nc, .asm_92a8f
+ jr nc, .golem
ld a, $15
ret
-.asm_92a84
+
+.biased
call Random
- cp $a0
- jr nc, .asm_92a95
- cp $50
- jr nc, .asm_92a92
-.asm_92a8f
+ cp 160
+ jr nc, .stop
+ cp 80
+ jr nc, .slow_advance
+.golem
ld a, $12
ret
-.asm_92a92
+
+.slow_advance
ld a, $10
ret
-.asm_92a95
+
+.stop
ld a, $9
ret
-Function92a98: ; 92a98 (24:6a98)
- ld bc, wc6d0
- ld hl, $6
+InitReelTiles: ; 92a98 (24:6a98)
+ ld bc, wReel1
+ ld hl, wReel1OAMAddr - wReel1
add hl, bc
- ld de, Sprites + $40
+ ld de, Sprites + 16 * 4
ld [hl], e
inc hl
ld [hl], d
- ld hl, $1
+ ld hl, wReel1TilemapAddr - wReel1
add hl, bc
- ld de, Unknown_93327
+ ld de, Reel1Tilemap
ld [hl], e
inc hl
ld [hl], d
- ld hl, $8
+ ld hl, wReel1XCoord - wReel1
add hl, bc
- ld [hl], $30
- call Function92af9
- ld bc, wc6e0
- ld hl, $6
+ ld [hl], 6 * 8
+ call .OAM
+
+ ld bc, wReel2
+ ld hl, wReel1OAMAddr - wReel1
add hl, bc
- ld de, Sprites + $60
+ ld de, Sprites + 24 * 4
ld [hl], e
inc hl
ld [hl], d
- ld hl, $1
+ ld hl, wReel1TilemapAddr - wReel1
add hl, bc
- ld de, Unknown_93339
+ ld de, Reel2Tilemap
ld [hl], e
inc hl
ld [hl], d
- ld hl, $8
+ ld hl, wReel1XCoord - wReel1
add hl, bc
- ld [hl], $50
- call Function92af9
- ld bc, wc6f0
- ld hl, $6
+ ld [hl], 10 * 8
+ call .OAM
+
+ ld bc, wReel3
+ ld hl, wReel1OAMAddr - wReel1
add hl, bc
- ld de, Sprites + $80
+ ld de, Sprites + 32 * 4
ld [hl], e
inc hl
ld [hl], d
- ld hl, $1
+ ld hl, wReel1TilemapAddr - wReel1
add hl, bc
- ld de, Unknown_9334b
+ ld de, Reel3Tilemap
ld [hl], e
inc hl
ld [hl], d
- ld hl, $8
+ ld hl, wReel1XCoord - wReel1
add hl, bc
- ld [hl], $70
- call Function92af9
+ ld [hl], 14 * 8
+ call .OAM
ret
-Function92af9: ; 92af9 (24:6af9)
- ld hl, 0
+.OAM: ; 92af9 (24:6af9)
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
ld [hl], $0
- ld hl, $3
+ ld hl, wReel1Position - wReel1
add hl, bc
- ld [hl], $e
- ld hl, $4
+ ld [hl], REEL_SIZE - 1
+ ld hl, wReel1SpinDistance - wReel1
add hl, bc
ld [hl], $0
- call Function92b53
+ call UpdateReelPositionAndOAM
ret
-Function92b0f: ; 92b0f (24:6b0f)
- ld bc, wc6d0
- call Function92b22
- ld bc, wc6e0
- call Function92b22
- ld bc, wc6f0
- call Function92b22
+Slots_SpinReels: ; 92b0f (24:6b0f)
+ ld bc, wReel1
+ call .SpinReel
+ ld bc, wReel2
+ call .SpinReel
+ ld bc, wReel3
+ call .SpinReel
ret
-Function92b22: ; 92b22 (24:6b22)
- ld hl, $4
+.SpinReel: ; 92b22 (24:6b22)
+ ld hl, wReel1SpinDistance - wReel1
add hl, bc
ld a, [hl]
and $f
- jr nz, .asm_92b2e
+ jr nz, .skip
call Function92bd4
-.asm_92b2e
- ld hl, $5
+.skip
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld a, [hl]
and a
ret z
ld d, a
- ld hl, $4
+ ld hl, wReel1SpinDistance - wReel1
add hl, bc
add [hl]
ld [hl], a
and $f
- jr z, Function92b53
- ld hl, $6
+ jr z, UpdateReelPositionAndOAM
+ ld hl, wReel1OAMAddr - wReel1
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
ld e, $8
-.asm_92b49
+.loop
ld a, [hl]
add d
ld [hli], a
@@ -675,21 +704,21 @@ rept 3
inc hl
endr
dec e
- jr nz, .asm_92b49
+ jr nz, .loop
ret
-Function92b53: ; 92b53 (24:6b53)
- ld hl, $8
+UpdateReelPositionAndOAM: ; 92b53 (24:6b53)
+ ld hl, wReel1XCoord - wReel1
add hl, bc
ld a, [hl]
- ld [wc712 + 1], a
- ld a, $50
- ld [wc712 + 2], a
- ld hl, $3
+ ld [wCurrReelXCoord], a
+ ld a, 10 * 8
+ ld [wCurrReelYCoord], a
+ ld hl, wReel1Position - wReel1
add hl, bc
ld e, [hl]
- ld d, $0
- ld hl, $1
+ ld d, 0
+ ld hl, wReel1TilemapAddr - wReel1
add hl, bc
ld a, [hli]
ld h, [hl]
@@ -697,29 +726,29 @@ Function92b53: ; 92b53 (24:6b53)
add hl, de
ld e, l
ld d, h
- call Function92b83
- ld hl, $3
+ call .LoadOAM
+ ld hl, wReel1Position - wReel1
add hl, bc
ld a, [hl]
inc a
and $f
- cp $f
- jr nz, .asm_92b81
+ cp REEL_SIZE
+ jr nz, .load
xor a
-.asm_92b81
+.load
ld [hl], a
ret
-Function92b83: ; 92b83 (24:6b83)
- ld hl, $6
+.LoadOAM: ; 92b83 (24:6b83)
+ ld hl, wReel1OAMAddr - wReel1
add hl, bc
ld a, [hli]
ld h, [hl]
ld l, a
-.asm_92b8a
- ld a, [wc712 + 2]
+.loop
+ ld a, [wCurrReelYCoord]
ld [hli], a
- ld a, [wc712 + 1]
+ ld a, [wCurrReelXCoord]
ld [hli], a
ld a, [de]
ld [hli], a
@@ -727,27 +756,28 @@ Function92b83: ; 92b83 (24:6b83)
srl a
set 7, a
ld [hli], a
- ld a, [wc712 + 2]
+
+ ld a, [wCurrReelYCoord]
ld [hli], a
- ld a, [wc712 + 1]
- add $8
+ ld a, [wCurrReelXCoord]
+ add 1 * 8
ld [hli], a
ld a, [de]
-rept 2
inc a
-endr
+ inc a
ld [hli], a
srl a
srl a
set 7, a
ld [hli], a
inc de
- ld a, [wc712 + 2]
- sub $10
- ld [wc712 + 2], a
- cp $10
- jr nz, .asm_92b8a
+ ld a, [wCurrReelYCoord]
+ sub 2 * 8
+ ld [wCurrReelYCoord], a
+ cp 2 * 8
+ jr nz, .loop
ret
+
; 92bbe (24:6bbe)
Function92bbe: ; 92bbe
@@ -762,6 +792,7 @@ Function92bbe: ; 92bbe
ld a, [hl]
pop hl
ret
+
; 92bce
Unknown_92bce: ; 92bce
@@ -769,11 +800,11 @@ Unknown_92bce: ; 92bce
; 92bd4
Function92bd4: ; 92bd4 (24:6bd4)
- ld hl, 0
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
ld e, [hl]
ld d, 0
- ld hl, Jumptable_92be4
+ ld hl, .jumptable
rept 2
add hl, de
endr
@@ -781,124 +812,139 @@ endr
ld h, [hl]
ld l, a
jp [hl]
+
; 92be4 (24:6be4)
-Jumptable_92be4: ; 92be4
- dw Function92c16
- dw Function92c4c
- dw Function92c17
- dw Function92c1e
- dw Function92c25
- dw Function92c2c
- dw Function92c33
- dw Function92c5e
- dw Function92c86
- dw Function92ca9
- dw Function92cd2
- dw Function92cf8
- dw Function92d13
- dw Function92df7
- dw Function92e10
- dw Function92e31
- dw Function92e47
- dw Function92e64
- dw Function92d20
- dw Function92d4f
- dw Function92d6e
- dw Function92d7e
- dw Function92da4
- dw Function92db3
- dw Function92dca
+.jumptable: ; 92be4
+ jumptable_start
+ jumptable ReelAction_DoNothing ; 00
+ jumptable Slots_StopReelIgnoreJoypad ; 01
+
+ jumptable ReelAction_QuadrupleRate ; 02
+ jumptable ReelAction_DoubleRate ; 03
+ jumptable ReelAction_NormalRate ; 04
+ jumptable ReelAction_HalfRate ; 05
+ jumptable ReelAction_QuarterRate ; 06
+
+ jumptable ReelAction_StopReel1 ; 07
+ jumptable ReelAction_StopReel2 ; 08
+ jumptable ReelAction_StopReel3 ; 09
+
+ jumptable ReelAction_SetUpReel2SkipTo7 ; 0a
+ jumptable ReelAction_WaitReel2SkipTo7 ; 0b
+ jumptable ReelAction_FastSpinReel2UntilLinedUp7s ; 0c
+
+ jumptable ReelAction_BoringReelDrops ; 0d
+ jumptable ReelAction_CheckDropReel ; 0e
+ jumptable ReelAction_WaitDropReel ; 0f
+
+ jumptable ReelAction_StartSlowAdvanceReel3 ; 10
+ jumptable ReelAction_WaitSlowAdvanceReel3 ; 11
+
+ jumptable ReelAction_InitGolem ; 12
+ jumptable ReelAction_WaitGolem ; 13
+ jumptable ReelAction_EndGolem ; 14
+
+ jumptable Slots_InitChansey ; 15
+ jumptable ReelAction_WaitChansey ; 16
+ jumptable ReelAction_WaitEgg ; 17
+ jumptable ReelAction_DropReel ; 18
; 92c16
-Function92c16: ; 92c16
+ReelAction_DoNothing: ; 92c16
ret
+
; 92c17
-Function92c17: ; 92c17
- ld hl, $5
+ReelAction_QuadrupleRate: ; 92c17
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $10
ret
+
; 92c1e
-Function92c1e: ; 92c1e
- ld hl, $5
+ReelAction_DoubleRate: ; 92c1e
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $8
ret
+
; 92c25
-Function92c25: ; 92c25
- ld hl, $5
+ReelAction_NormalRate: ; 92c25
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $4
ret
+
; 92c2c
-Function92c2c: ; 92c2c
- ld hl, $5
+ReelAction_HalfRate: ; 92c2c
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $2
ret
+
; 92c33
-Function92c33: ; 92c33
- ld hl, $5
+ReelAction_QuarterRate: ; 92c33
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $1
ret
+
; 92c3a
-Function92c3a: ; 92c3a
- ld hl, $5
+Slots_StopReel: ; 92c3a
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
- ld hl, 0
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
ld [hl], $1
- ld hl, $f
+ ld hl, wReel1Slot0f - wReel1
add hl, bc
ld [hl], $3
-
-Function92c4c: ; 92c4c
- ld hl, $f
+Slots_StopReelIgnoreJoypad: ; 92c4c
+ ld hl, wReel1Slot0f - wReel1
add hl, bc
ld a, [hl]
and a
- jr z, .asm_92c56
+ jr z, .EndReel
dec [hl]
ret
-.asm_92c56
- ld hl, 0
+.EndReel
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
ld a, $0
ld [hl], a
ret
+
; 92c5e
-Function92c5e: ; 92c5e
- ld a, [wc709]
- cp $ff
- jr z, .asm_92c72
- ld hl, $9
+ReelAction_StopReel1: ; 92c5e
+ ld a, [wSlotBias]
+ cp SLOTS_NOMATCH
+ jr z, .NoBias
+ ld hl, wReel1Slot09 - wReel1
add hl, bc
ld a, [hl]
and a
- jr z, .asm_92c72
+ jr z, .NoBias
dec [hl]
- call Function92c76
+ call .CheckForBias
ret nz
-
-.asm_92c72
- call Function92c3a
+.NoBias
+ call Slots_StopReel
ret
+
; 92c76
-Function92c76: ; 92c76
- call Function92a12
- ld a, [wc709]
+.CheckForBias: ; 92c76
+ call Slots_GetCurrentReelState
+ ld a, [wSlotBias]
ld e, a
ld a, [hli]
cp e
@@ -909,40 +955,41 @@ Function92c76: ; 92c76
ld a, [hl]
cp e
ret
+
; 92c86
-Function92c86: ; 92c86
- call Function92e94
- jr nc, .asm_92c94
- ld a, [wc717]
- ld hl, wc709
+ReelAction_StopReel2: ; 92c86
+ call Slots_CheckMatchedFirstTwoReels
+ jr nc, .nope
+ ld a, [wSlotBuildingMatch]
+ ld hl, wSlotBias
cp [hl]
- jr z, .asm_92ca5
-
-.asm_92c94
- ld a, [wc709]
- cp $ff
- jr z, .asm_92ca5
- ld hl, $9
+ jr z, .NoBias
+.nope
+ ld a, [wSlotBias]
+ cp SLOTS_NOMATCH
+ jr z, .NoBias
+ ld hl, wReel1Slot09 - wReel1
add hl, bc
ld a, [hl]
and a
- jr z, .asm_92ca5
+ jr z, .NoBias
dec [hl]
ret
-.asm_92ca5
- call Function92c3a
+.NoBias
+ call Slots_StopReel
ret
+
; 92ca9
-Function92ca9: ; 92ca9
- call Function92f1d
- jr nc, .asm_92cbd
- ld hl, wc709
+ReelAction_StopReel3: ; 92ca9
+ call Slots_CheckMatchedAllThreeReels
+ jr nc, .NoMatch
+ ld hl, wSlotBias
cp [hl]
- jr z, .asm_92cce
- ld hl, $9
+ jr z, .NoBias
+ ld hl, wReel1Slot09 - wReel1
add hl, bc
ld a, [hl]
and a
@@ -950,49 +997,51 @@ Function92ca9: ; 92ca9
dec [hl]
ret
-.asm_92cbd
- ld a, [wc709]
- cp $ff
- jr z, .asm_92cce
- ld hl, $9
+.NoMatch
+ ld a, [wSlotBias]
+ cp SLOTS_NOMATCH
+ jr z, .NoBias
+ ld hl, wReel1Slot09 - wReel1
add hl, bc
ld a, [hl]
and a
- jr z, .asm_92cce
+ jr z, .NoBias
dec [hl]
ret
-.asm_92cce
- call Function92c3a
+.NoBias
+ call Slots_StopReel
ret
+
; 92cd2
-Function92cd2: ; 92cd2
- call Function92e94
- jr nc, .asm_92ce1
- ld a, [wc70c]
+ReelAction_SetUpReel2SkipTo7: ; 92cd2
+ call Slots_CheckMatchedFirstTwoReels
+ jr nc, .no_match
+ ld a, [wFirstTwoReelsMatchingSevens]
and a
- jr z, .asm_92ce1
- call Function92c3a
+ jr z, .no_match
+ call Slots_StopReel
ret
-.asm_92ce1
+.no_match
ld a, SFX_STOP_SLOT
- call Function9331e
- ld hl, 0
+ call Slots_PlaySFX
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
- ld hl, $a
+ ld hl, wReel1Slot0a - wReel1
add hl, bc
ld [hl], $20
- ld hl, $5
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
ret
+
; 92cf8
-Function92cf8: ; 92cf8
- ld hl, $a
+ReelAction_WaitReel2SkipTo7: ; 92cf8
+ ld hl, wReel1Slot0a - wReel1
add hl, bc
ld a, [hl]
and a
@@ -1002,157 +1051,159 @@ Function92cf8: ; 92cf8
.asm_92d02
ld a, SFX_THROW_BALL
- call Function9331e
- ld hl, 0
+ call Slots_PlaySFX
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
- ld hl, $5
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $8
ret
+
; 92d13
-Function92d13: ; 92d13
- call Function92e94
+ReelAction_FastSpinReel2UntilLinedUp7s: ; 92d13
+ call Slots_CheckMatchedFirstTwoReels
ret nc
- ld a, [wc70c]
+ ld a, [wFirstTwoReelsMatchingSevens]
and a
ret z
- call Function92c3a
+ call Slots_StopReel
ret
+
; 92d20
-Function92d20: ; 92d20
- call Function92f1d
+ReelAction_InitGolem: ; 92d20
+ call Slots_CheckMatchedAllThreeReels
ret c
ld a, SFX_STOP_SLOT
- call Function9331e
- call Function93316
- ld hl, 0
+ call Slots_PlaySFX
+ call Slots_WaitSFX
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
- ld hl, $5
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
call Function92fc0
push bc
push af
depixel 12, 13
- ld a, SPRITE_ANIM_INDEX_06
+ ld a, SPRITE_ANIM_INDEX_SLOT_GOLEM
call _InitSpriteAnimStruct
- ld hl, $e
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
pop af
ld [hl], a
pop bc
xor a
ld [wcf64], a
-
-Function92d4f: ; 92d4f
+ReelAction_WaitGolem: ; 92d4f
ld a, [wcf64]
- cp $2
- jr z, .asm_92d5b
- cp $1
- jr z, .asm_92d62
+ cp 2
+ jr z, .two
+ cp 1
+ jr z, .one
ret
-.asm_92d5b
- call Function92f1d
- call Function92c3a
+.two
+ call Slots_CheckMatchedAllThreeReels
+ call Slots_StopReel
ret
-.asm_92d62
- ld hl, 0
+.one
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
- ld hl, $5
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $8
ret
+
; 92d6e
-Function92d6e: ; 92d6e
+ReelAction_EndGolem: ; 92d6e
xor a
ld [wcf64], a
- ld hl, 0
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
dec [hl]
- ld hl, $5
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
ret
+
; 92d7e
-Function92d7e: ; 92d7e
- call Function92f1d
+Slots_InitChansey: ; 92d7e
+ call Slots_CheckMatchedAllThreeReels
ret c
ld a, SFX_STOP_SLOT
- call Function9331e
- call Function93316
- ld hl, 0
+ call Slots_PlaySFX
+ call Slots_WaitSFX
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
- ld hl, $5
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
push bc
depixel 12, 0
- ld a, SPRITE_ANIM_INDEX_07
+ ld a, SPRITE_ANIM_INDEX_SLOTS_CHANSEY
call _InitSpriteAnimStruct
pop bc
xor a
ld [wcf64], a
ret
+
; 92da4
-Function92da4: ; 92da4
+ReelAction_WaitChansey: ; 92da4
ld a, [wcf64]
and a
ret z
- ld hl, 0
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
ld a, $2
ld [wcf64], a
-
-Function92db3: ; 92db3
+ReelAction_WaitEgg: ; 92db3
ld a, [wcf64]
cp $4
ret c
- ld hl, 0
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
- ld hl, $5
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $10
- ld hl, $a
+ ld hl, wReel1Slot0a - wReel1
add hl, bc
ld [hl], $11
-
-Function92dca: ; 92dca
- ld hl, $a
+ReelAction_DropReel: ; 92dca
+ ld hl, wReel1Slot0a - wReel1
add hl, bc
ld a, [hl]
and a
- jr z, .asm_92dd4
+ jr z, .check_match
dec [hl]
ret
-.asm_92dd4
- call Function92f1d
- jr nc, .asm_92de5
+.check_match
+ call Slots_CheckMatchedAllThreeReels
+ jr nc, .EggAgain
and a
- jr nz, .asm_92de5
+ jr nz, .EggAgain
ld a, $5
ld [wcf64], a
- call Function92c3a
+ call Slots_StopReel
ret
-.asm_92de5
- ld hl, $5
+.EggAgain
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
- ld hl, 0
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
rept 2
dec [hl]
@@ -1160,331 +1211,349 @@ endr
ld a, $1
ld [wcf64], a
ret
+
; 92df7
-Function92df7: ; 92df7
- call Function92f1d
+ReelAction_BoringReelDrops: ; 92df7
+ call Slots_CheckMatchedAllThreeReels
ret c
ld a, SFX_STOP_SLOT
- call Function9331e
- call Function93316
- ld hl, 0
+ call Slots_PlaySFX
+ call Slots_WaitSFX
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
call Function92fc0
- ld hl, $a
+ ld hl, wReel1Slot0a - wReel1
add hl, bc
ld [hl], a
-
-Function92e10: ; 92e10
- ld hl, $a
+ReelAction_CheckDropReel: ; 92e10
+ ld hl, wReel1Slot0a - wReel1
add hl, bc
ld a, [hl]
and a
- jr nz, .asm_92e1f
- call Function92f1d
- call Function92c3a
+ jr nz, .spin
+ call Slots_CheckMatchedAllThreeReels
+ call Slots_StopReel
ret
-.asm_92e1f
+.spin
dec [hl]
- ld hl, 0
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
- ld hl, $b
+ ld hl, wReel1Slot0b - wReel1
add hl, bc
ld [hl], $20
- ld hl, $5
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $0
-
-Function92e31: ; 92e31
- ld hl, $b
+ReelAction_WaitDropReel: ; 92e31
+ ld hl, wReel1Slot0b - wReel1
add hl, bc
ld a, [hl]
and a
- jr z, .asm_92e3b
+ jr z, .DropReel
dec [hl]
ret
-.asm_92e3b
- ld hl, 0
+.DropReel
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
dec [hl]
- ld hl, $5
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
- ld [hl], $8
+ ld [hl], $8 ; 2x
ret
+
; 92e47
-Function92e47: ; 92e47
- call Function92f1d
+ReelAction_StartSlowAdvanceReel3: ; 92e47
+ call Slots_CheckMatchedAllThreeReels
ret c
ld a, SFX_STOP_SLOT
- call Function9331e
- call Function93316
- ld hl, $5
+ call Slots_PlaySFX
+ call Slots_WaitSFX
+ ld hl, wReel1SpinRate - wReel1
add hl, bc
ld [hl], $1
- ld hl, 0
+ ld hl, wReel1ReelAction - wReel1
add hl, bc
inc [hl]
- ld hl, $a
+ ld hl, wReel1Slot0a - wReel1
add hl, bc
ld [hl], $10
-
-Function92e64: ; 92e64
- ld hl, $a
+ReelAction_WaitSlowAdvanceReel3: ; 92e64
+ ld hl, wReel1Slot0a - wReel1
add hl, bc
ld a, [hl]
and a
- jr z, .asm_92e73
+ jr z, .check1
dec [hl]
-.asm_92e6d
+.play_sfx
ld a, SFX_GOT_SAFARI_BALLS
- call Function9331e
+ call Slots_PlaySFX
ret
-.asm_92e73
- ld a, [wc709]
+.check1
+ ld a, [wSlotBias]
and a
- jr nz, .asm_92e88
- call Function92f1d
- jr nc, .asm_92e6d
+ jr nz, .check2
+ call Slots_CheckMatchedAllThreeReels
+ jr nc, .play_sfx
and a
- jr nz, .asm_92e6d
- call Function92c3a
+ jr nz, .play_sfx
+ call Slots_StopReel
call WaitSFX
ret
-.asm_92e88
- call Function92f1d
- jr c, .asm_92e6d
- call Function92c3a
+.check2
+ call Slots_CheckMatchedAllThreeReels
+ jr c, .play_sfx
+ call Slots_StopReel
call WaitSFX
ret
+
; 92e94
-Function92e94: ; 92e94
+Slots_CheckMatchedFirstTwoReels: ; 92e94
xor a
- ld [wc70b], a
- ld [wc70c], a
- call Function92a12
- call Function92fb4
- ld a, [wc70a]
+ ld [wFirstTwoReelsMatching], a
+ ld [wFirstTwoReelsMatchingSevens], a
+ call Slots_GetCurrentReelState
+ call Slots_CopyReelState
+ ld a, [wSlotBet]
and 3
ld e, a
ld d, 0
- ld hl, Jumptable_92ebd
+ ld hl, .Jumptable
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
- ld de, .asm_92eb6
+ ld de, .return
push de
jp [hl]
-.asm_92eb6
- ld a, [wc70b]
+.return
+ ld a, [wFirstTwoReelsMatching]
and a
ret z
scf
ret
+
; 92ebd
-Jumptable_92ebd: ; 92ebd
- dw Function92ed4
- dw Function92ed1
- dw Function92ecb
- dw Function92ec5
+.Jumptable: ; 92ebd
+ jumptable_start
+ jumptable .zero
+ jumptable .one
+ jumptable .two
+ jumptable .three
; 92ec5
-Function92ec5: ; 92ec5
- call Function92ee0
- call Function92ef6
+.three: ; 92ec5
+ call .CheckUpwardsDiag
+ call .CheckDownwardsDiag
-Function92ecb: ; 92ecb
- call Function92ed5
- call Function92f01
+.two: ; 92ecb
+ call .CheckBottomRow
+ call .CheckTopRow
-Function92ed1: ; 92ed1
- call Function92eeb
+.one: ; 92ed1
+ call .CheckMiddleRow
-Function92ed4: ; 92ed4
+.zero: ; 92ed4
ret
+
; 92ed5
-Function92ed5: ; 92ed5
- ld hl, wc70e
- ld a, [EnemyScreens]
+.CheckBottomRow: ; 92ed5
+ ld hl, wCurrReelStopped
+ ld a, [wReel1Stopped]
cp [hl]
- call z, Function92f0c
+ call z, .StoreResult
ret
+
; 92ee0
-Function92ee0: ; 92ee0
- ld hl, wEnemyGoesFirst
- ld a, [wc700]
+.CheckUpwardsDiag: ; 92ee0
+ ld hl, wCurrReelStopped + 1
+ ld a, [wReel1Stopped]
cp [hl]
- call z, Function92f0c
+ call z, .StoreResult
ret
+
; 92eeb
-Function92eeb: ; 92eeb
- ld hl, wEnemyGoesFirst
- ld a, [wc701]
+.CheckMiddleRow: ; 92eeb
+ ld hl, wCurrReelStopped + 1
+ ld a, [wReel1Stopped + 1]
cp [hl]
- call z, Function92f0c
+ call z, .StoreResult
ret
+
; 92ef6
-Function92ef6: ; 92ef6
- ld hl, wEnemyGoesFirst
- ld a, [wc702]
+.CheckDownwardsDiag: ; 92ef6
+ ld hl, wCurrReelStopped + 1
+ ld a, [wReel1Stopped + 2]
cp [hl]
- call z, Function92f0c
+ call z, .StoreResult
ret
+
; 92f01
-Function92f01: ; 92f01
- ld hl, wc710
- ld a, [wc702]
+.CheckTopRow: ; 92f01
+ ld hl, wCurrReelStopped + 2
+ ld a, [wReel1Stopped + 2]
cp [hl]
- call z, Function92f0c
+ call z, .StoreResult
ret
+
; 92f0c
-Function92f0c: ; 92f0c
- ld [wc717], a
+.StoreResult: ; 92f0c
+ ld [wSlotBuildingMatch], a
and a
- jr nz, .asm_92f17
+ jr nz, .matching_sevens
ld a, $1
- ld [wc70c], a
+ ld [wFirstTwoReelsMatchingSevens], a
-.asm_92f17
+.matching_sevens
ld a, $1
- ld [wc70b], a
+ ld [wFirstTwoReelsMatching], a
ret
+
; 92f1d
-Function92f1d: ; 92f1d
+Slots_CheckMatchedAllThreeReels: ; 92f1d
ld a, $ff
- ld [EffectFailed], a
- call Function92a12
- call Function92fb4
- ld a, [wc70a]
+ ld [wSlotMatched], a
+ call Slots_GetCurrentReelState
+ call Slots_CopyReelState
+ ld a, [wSlotBet]
and 3
ld e, a
ld d, 0
- ld hl, Jumptable_92f48
+ ld hl, .Jumptable
rept 2
add hl, de
endr
ld a, [hli]
ld h, [hl]
ld l, a
- ld de, .asm_92f3d
+ ld de, .return
push de
jp [hl]
-.asm_92f3d
- ld a, [wc70d]
+.return
+ ld a, [wSlotMatched]
cp $ff
- jr nz, .asm_92f46
+ jr nz, .matched_nontrivial
and a
ret
-.asm_92f46
+.matched_nontrivial
scf
ret
+
; 92f48
-Jumptable_92f48: ; 92f48
- dw Function92f5f
- dw Function92f5c
- dw Function92f56
- dw Function92f50
+.Jumptable: ; 92f48
+ jumptable_start
+ jumptable .zero
+ jumptable .one
+ jumptable .two
+ jumptable .three
; 92f50
-Function92f50: ; 92f50
- call Function92f70
- call Function92f90
+.three: ; 92f50
+ call .CheckUpwardsDiag
+ call .CheckDownwardsDiag
-Function92f56: ; 92f56
- call Function92f60
- call Function92fa0
+.two: ; 92f56
+ call .CheckBottomRow
+ call .CheckTopRow
-Function92f5c: ; 92f5c
- call Function92f80
+.one: ; 92f5c
+ call .CheckMiddleRow
-Function92f5f: ; 92f5f
+.zero: ; 92f5f
ret
+
; 92f60
-Function92f60: ; 92f60
- ld hl, wc70e
- ld a, [wc700]
+.CheckBottomRow: ; 92f60
+ ld hl, wCurrReelStopped
+ ld a, [wReel1Stopped]
cp [hl]
ret nz
- ld hl, wc703
+ ld hl, wReel2Stopped
cp [hl]
- call z, Function92fb0
+ call z, .StoreResult
ret
+
; 92f70
-Function92f70: ; 92f70
- ld hl, wc710
- ld a, [wc700]
+.CheckUpwardsDiag: ; 92f70
+ ld hl, wCurrReelStopped + 2
+ ld a, [wReel1Stopped]
cp [hl]
ret nz
- ld hl, wc704
+ ld hl, wReel2Stopped + 1
cp [hl]
- call z, Function92fb0
+ call z, .StoreResult
ret
+
; 92f80
-Function92f80: ; 92f80
- ld hl, wEnemyGoesFirst
- ld a, [wc701]
+.CheckMiddleRow: ; 92f80
+ ld hl, wCurrReelStopped + 1
+ ld a, [wReel1Stopped + 1]
cp [hl]
ret nz
- ld hl, wc704
+ ld hl, wReel2Stopped + 1
cp [hl]
- call z, Function92fb0
+ call z, .StoreResult
ret
+
; 92f90
-Function92f90: ; 92f90
- ld hl, wc70e
- ld a, [wc702]
+.CheckDownwardsDiag: ; 92f90
+ ld hl, wCurrReelStopped
+ ld a, [wReel1Stopped + 2]
cp [hl]
ret nz
- ld hl, wc704
+ ld hl, wReel2Stopped + 1
cp [hl]
- call z, Function92fb0
+ call z, .StoreResult
ret
+
; 92fa0
-Function92fa0: ; 92fa0
- ld hl, wc710
- ld a, [wc702]
+.CheckTopRow: ; 92fa0
+ ld hl, wCurrReelStopped + 2
+ ld a, [wReel1Stopped + 2]
cp [hl]
ret nz
- ld hl, wc705
+ ld hl, wReel2Stopped + 2
cp [hl]
- call z, Function92fb0
+ call z, .StoreResult
ret
+
; 92fb0
-Function92fb0: ; 92fb0
- ld [wc70d], a
+.StoreResult: ; 92fb0
+ ld [wSlotMatched], a
ret
+
; 92fb4
-Function92fb4: ; 92fb4
- ld de, wc70e
+Slots_CopyReelState: ; 92fb4
+ ld de, wCurrReelStopped
ld a, [hli]
ld [de], a
inc de
@@ -1494,211 +1563,219 @@ Function92fb4: ; 92fb4
ld a, [hl]
ld [de], a
ret
+
; 92fc0
Function92fc0: ; 92fc0
- ld hl, $3
+ ld hl, wReel1Position - wReel1
add hl, bc
ld a, [hl]
push af
push hl
- call Function92fcf
+ call .Check7Bias
pop hl
pop af
ld [hl], a
ld a, e
ret
+
; 92fcf
-Function92fcf: ; 92fcf
- ld a, [wc709]
+.Check7Bias: ; 92fcf
+ ld a, [wSlotBias]
and a
- jr nz, .asm_92fe8
+ jr nz, .not_biased_to_seven
ld e, $0
-.asm_92fd7
- ld hl, $3
+.loop1
+ ld hl, wReel1Position - wReel1
add hl, bc
inc [hl]
inc e
push de
- call Function92f1d
+ call Slots_CheckMatchedAllThreeReels
pop de
- jr nc, .asm_92fd7
+ jr nc, .loop1
and a
- jr nz, .asm_92fd7
+ jr nz, .loop1
ret
-.asm_92fe8
+.not_biased_to_seven
call Random
and $7
- cp $4
- jr c, .asm_92fe8
+ cp $4 ; ((50 percent) & 7) + 1
+ jr c, .not_biased_to_seven
ld e, a
-.asm_92ff2
+.loop2
ld a, e
inc e
- ld hl, $3
+ ld hl, wReel1Position - wReel1
add hl, bc
add [hl]
ld [hl], a
push de
- call Function92f1d
+ call Slots_CheckMatchedAllThreeReels
pop de
- jr c, .asm_92ff2
+ jr c, .loop2
ret
+
; 93002
-Function93002: ; 93002 (24:7002)
- ld a, [wc709]
+Slots_InitBias: ; 93002 (24:7002)
+ ld a, [wSlotBias]
and a
ret z
- ld hl, Unknown_93023
+ ld hl, .Normal
ld a, [ScriptVar]
and a
- jr z, .asm_93013
- ld hl, Unknown_93031
-.asm_93013
+ jr z, .okay
+ ld hl, .Lucky
+.okay
call Random
ld c, a
-.asm_93017
+.loop
ld a, [hli]
cp c
- jr nc, .asm_9301e
+ jr nc, .done
inc hl
- jr .asm_93017
-.asm_9301e
+ jr .loop
+
+.done
ld a, [hl]
- ld [wc709], a
+ ld [wSlotBias], a
ret
+
; 93023 (24:7023)
-Unknown_93023: ; 93023
- db $01, $00
- db $03, $04
- db $0a, $14
- db $14, $10
- db $28, $0c
- db $30, $08
- db $ff, $ff
+.Normal: ; 93023
+ db $01, SLOTS_SEVEN ; 1/256
+ db $03, SLOTS_POKEBALL ; 1/128
+ db $0a, SLOTS_STARYU ; 7/256
+ db $14, SLOTS_SQUIRTLE ; 5/128
+ db $28, SLOTS_PIKACHU ; 5/64
+ db $30, SLOTS_CHERRY ; 1/32
+ db $ff, SLOTS_NOMATCH ; everything else
; 93031
-Unknown_93031: ; 93031
- db $02, $00
- db $03, $04
- db $08, $14
- db $10, $10
- db $1e, $0c
- db $50, $08
- db $ff, $ff
+.Lucky: ; 93031
+ db $02, SLOTS_SEVEN ; 1/128
+ db $03, SLOTS_POKEBALL ; 1/256
+ db $08, SLOTS_STARYU ; 5/256
+ db $10, SLOTS_SQUIRTLE ; 1/32
+ db $1e, SLOTS_PIKACHU ; 7/128
+ db $50, SLOTS_CHERRY ; 25/128
+ db $ff, SLOTS_NOMATCH ; everything else
; 9303f
-Function9303f: ; 9303f (24:703f)
- ld b, $14
- ld a, [wc70a]
+Slots_IlluminateBetLights: ; 9303f (24:703f)
+ ld b, $14 ; turned on
+ ld a, [wSlotBet]
dec a
- jr z, asm_93066
+ jr z, Slots_Lights1OnOff
dec a
- jr z, asm_9305a
- jr asm_9304e
+ jr z, Slots_Lights2OnOff
+ jr Slots_Lights3OnOff
-Function9304c: ; 9304c (24:704c)
- ld b, $23
-asm_9304e: ; 9304e (24:704e)
+Slots_DeilluminateBetLights: ; 9304c (24:704c)
+ ld b, $23 ; turned off
+Slots_Lights3OnOff: ; 9304e (24:704e)
hlcoord 3, 2
- call Function93069
+ call Slots_TurnLightsOnOrOff
hlcoord 3, 10
- call Function93069
-asm_9305a: ; 9305a (24:705a)
+ call Slots_TurnLightsOnOrOff
+Slots_Lights2OnOff: ; 9305a (24:705a)
hlcoord 3, 4
- call Function93069
+ call Slots_TurnLightsOnOrOff
hlcoord 3, 8
- call Function93069
-asm_93066: ; 93066 (24:7066)
+ call Slots_TurnLightsOnOrOff
+Slots_Lights1OnOff: ; 93066 (24:7066)
hlcoord 3, 6
-Function93069: ; 93069 (24:7069)
+Slots_TurnLightsOnOrOff: ; 93069 (24:7069)
ld a, b
ld [hl], a
- ld de, $d
+ ld de, SCREEN_WIDTH / 2 + 3
add hl, de
ld [hl], a
- ld de, $7
+ ld de, SCREEN_WIDTH / 2 - 3
add hl, de
inc a
ld [hl], a
- ld de, $d
+ ld de, SCREEN_WIDTH / 2 + 3
add hl, de
ld [hl], a
ret
-Function9307c: ; 9307c (24:707c)
- ld hl, UnknownText_0x930c7
+Slots_AskBet: ; 9307c (24:707c)
+.loop
+ ld hl, .Text_BetHowManyCoins
call PrintText
- ld hl, MenuDataHeader_0x930d6
+ ld hl, .MenuDataHeader
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call WriteBackup
ret c
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld b, a
- ld a, $4
+ ld a, 4
sub b
- ld [wc70a], a
+ ld [wSlotBet], a
ld hl, Coins
ld c, a
ld a, [hli]
and a
- jr nz, .asm_930ad
+ jr nz, .Start
ld a, [hl]
cp c
- jr nc, .asm_930ad
- ld hl, UnknownText_0x930d1
+ jr nc, .Start
+ ld hl, .Text_NotEnoughCoins
call PrintText
- jr Function9307c
-.asm_930ad
+ jr .loop
+
+.Start
ld hl, Coins + 1
ld a, [hl]
sub c
ld [hld], a
- jr nc, .asm_930b6
+ jr nc, .ok
dec [hl]
-.asm_930b6
+.ok
call WaitSFX
ld de, SFX_PAY_DAY
call PlaySFX
- ld hl, UnknownText_0x930cc
+ ld hl, .Text_Start
call PrintText
and a
ret
+
; 930c7 (24:70c7)
-UnknownText_0x930c7: ; 0x930c7
+.Text_BetHowManyCoins: ; 0x930c7
; Bet how many coins?
text_jump UnknownText_0x1c5049
db "@"
; 0x930cc
-UnknownText_0x930cc: ; 0x930cc
+.Text_Start: ; 0x930cc
; Start!
text_jump UnknownText_0x1c505e
db "@"
; 0x930d1
-UnknownText_0x930d1: ; 0x930d1
+.Text_NotEnoughCoins: ; 0x930d1
; Not enough coins.
text_jump UnknownText_0x1c5066
db "@"
; 0x930d6
-MenuDataHeader_0x930d6: ; 0x930d6
+.MenuDataHeader: ; 0x930d6
db $40 ; flags
db 10, 14 ; start coords
db 17, 19 ; end coords
- dw MenuData2_0x930de
+ dw .MenuData2
db 1 ; default option
; 0x930de
-MenuData2_0x930de: ; 0x930de
+.MenuData2: ; 0x930de
db $80 ; flags
db 3 ; items
db " 3@"
@@ -1706,128 +1783,125 @@ MenuData2_0x930de: ; 0x930de
db " 1@"
; 0x930e9
-Function930e9: ; 930e9 (24:70e9)
+Slots_AskPlayAgain: ; 930e9 (24:70e9)
ld hl, Coins
ld a, [hli]
or [hl]
- jr nz, .asm_930fd
- ld hl, UnknownText_9311a
+ jr nz, .you_have_coins
+ ld hl, .Text_OutOfCoins
call PrintText
ld c, 60
call DelayFrames
- jr .asm_93118
-.asm_930fd
- ld hl, UnknownText_9311f
+ jr .exit_slots
+
+.you_have_coins
+ ld hl, .Text_PlayAgain
call PrintText
call LoadMenuTextBox
lb bc, 14, 12
call PlaceYesNoBox
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
call WriteBackup
and a
- jr nz, .asm_93118
+ jr nz, .exit_slots
and a
ret
-.asm_93118
+
+.exit_slots
scf
ret
+
; 9311a (24:711a)
-UnknownText_9311a: ; 9311a
+.Text_OutOfCoins: ; 9311a
text_jump UnknownText_0x1c5079
db "@"
-UnknownText_9311f: ; 9311f
+.Text_PlayAgain: ; 9311f
text_jump UnknownText_0x1c5092
db "@"
-Function93124: ; 93124 (24:7124)
- ld a, [EffectFailed]
- cp $ff
- jr z, .asm_93151
+SlotGetPayout: ; 93124 (24:7124)
+ ld a, [wSlotMatched]
+ cp -1
+ jr z, .no_win
srl a
ld e, a
ld d, 0
- ld hl, .data_93145
+ ld hl, .PayoutTable
add hl, de
ld a, [hli]
- ld [PlayerUsedMoves], a
+ ld [wPayout + 1], a
ld e, a
ld a, [hl]
- ld [wc711], a
+ ld [wPayout], a
ld d, a
callba MobileFn_105fe3
ret
-.data_93145
- db $2c, $01
- db $32, $00
- db $06, $00
- db $08, $00
- db $0a, $00
- db $0f, $00
+.PayoutTable
+ dw 300
+ dw 50
+ dw 6
+ dw 8
+ dw 10
+ dw 15
-.asm_93151
- ld hl, wc711
+.no_win
+ ld hl, wPayout
xor a
ld [hli], a
ld [hl], a
ret
-Function93158: ; 93158 (24:7158)
- ld a, [EffectFailed]
- cp $ff
- jr nz, .asm_9316c
- ld hl, UnknownText_0x931e0
+SlotPayoutText: ; 93158 (24:7158)
+ ld a, [wSlotMatched]
+ cp -1
+ jr nz, .MatchedSomething
+ ld hl, .Text_Darn
call PrintText
callba MobileFn_105fd0
ret
-.asm_9316c
+
+.MatchedSomething
srl a
ld e, a
ld d, 0
- ld hl, Unknown_93195
+ ld hl, .PayoutStrings
rept 3
add hl, de
endr
ld de, StringBuffer2
- ld bc, $4
+ ld bc, 4
call CopyBytes
ld a, [hli]
ld h, [hl]
ld l, a
- ld de, .asm_93188
+ ld de, .return
push de
jp [hl]
-.asm_93188
- ld hl, UnknownText_0x931b9
+
+.return
+ ld hl, .Text_PrintPayout
call PrintText
callba MobileFn_105f9f
ret
+
; 93195 (24:7195)
-Unknown_93195: ; 93195
- db "300@"
- dw Function931e5
- db "50@@"
- dw Function9320b
- db "6@@@"
- dw Function93214
- db "8@@@"
- dw Function93214
- db "10@@"
- dw Function93214
- db "15@@"
- dw Function93214
+.PayoutStrings: ; 93195
+ dbw "300@", .LinedUpSevens
+ dbw "50@@", .LinedUpPokeballs
+ dbw "6@@@", .LinedUpMonOrCherry
+ dbw "8@@@", .LinedUpMonOrCherry
+ dbw "10@@", .LinedUpMonOrCherry
+ dbw "15@@", .LinedUpMonOrCherry
; 931b9
-UnknownText_0x931b9: ; 0x931b9
+.Text_PrintPayout: ; 0x931b9
start_asm
-; 0x931ba
-
-Function931ba: ; 931ba
- ld a, [EffectFailed]
+ ld a, [wSlotMatched]
add $25
ldcoord_a 2, 13
inc a
@@ -1837,29 +1911,30 @@ Function931ba: ; 931ba
inc a
ldcoord_a 3, 14
hlcoord 18, 17
- ld [hl], $ee
- ld hl, UnknownText_0x931db
+ ld [hl], "▼"
+ ld hl, .Text_LinedUpWonCoins
rept 4
inc bc
endr
ret
+
; 931db
-UnknownText_0x931db: ; 0x931db
+.Text_LinedUpWonCoins: ; 0x931db
; lined up! Won @ coins!
text_jump UnknownText_0x1c509f
db "@"
; 0x931e0
-UnknownText_0x931e0: ; 0x931e0
+.Text_Darn: ; 0x931e0
; Darn!
text_jump UnknownText_0x1c50bb
db "@"
; 0x931e5
-Function931e5: ; 931e5
+.LinedUpSevens: ; 931e5
ld a, SFX_2ND_PLACE
- call Function9331e
+ call Slots_PlaySFX
call WaitSFX
ld a, [wd002]
and a
@@ -1868,7 +1943,7 @@ Function931e5: ; 931e5
and $14
ret z
ld a, $ff
- ld [wc709], a
+ ld [wSlotBias], a
ret
.asm_931ff
@@ -1876,30 +1951,33 @@ Function931e5: ; 931e5
and $1c
ret z
ld a, $ff
- ld [wc709], a
+ ld [wSlotBias], a
ret
+
; 9320b
-Function9320b: ; 9320b
+.LinedUpPokeballs: ; 9320b
ld a, SFX_3RD_PLACE
- call Function9331e
+ call Slots_PlaySFX
call WaitSFX
ret
+
; 93214
-Function93214: ; 93214
+.LinedUpMonOrCherry: ; 93214
ld a, SFX_PRESENT
- call Function9331e
+ call Slots_PlaySFX
call WaitSFX
ret
+
; 9321d
-Function9321d: ; 9321d (24:721d)
- ld hl, $b
+SlotMachine_AnimateGolem: ; 9321d (24:721d)
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld e, [hl]
ld d, 0
- ld hl, Jumptable_9322d
+ ld hl, .Jumptable
rept 2
add hl, de
endr
@@ -1908,76 +1986,79 @@ endr
ld l, a
jp [hl]
-Jumptable_9322d: ; 9322d (24:722d)
- dw Function93233
- dw Function93259
- dw Function93289
+.Jumptable: ; 9322d (24:722d)
+ jumptable_start
+ jumptable .init
+ jumptable .fall
+ jumptable .roll
-Function93233: ; 93233 (24:7233)
- ld hl, $e
+.init: ; 93233 (24:7233)
+ ld hl, SPRITEANIMSTRUCT_0E
add hl, bc
ld a, [hl]
and a
- jr nz, .asm_93247
+ jr nz, .retain
ld a, $2
ld [wcf64], a
- ld hl, 0
+ ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
ld [hl], $0
ret
-.asm_93247
+
+.retain
dec [hl]
- ld hl, $b
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $30
- ld hl, $6
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld [hl], $0
-Function93259: ; 93259 (24:7259)
- ld hl, $c
+.fall: ; 93259 (24:7259)
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
cp $20
- jr c, .asm_93273
+ jr c, .play_sound
dec [hl]
ld e, a
- ld d, $70
- callba Functionce765
+ ld d, 14 * 8
+ callba BattleAnim_Sine_e
ld a, e
- ld hl, $7
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
add hl, bc
ld [hl], a
ret
-.asm_93273
- ld hl, $b
+
+.play_sound
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld [hl], $2
ld a, $1
ld [wcf64], a
ld a, SFX_PLACE_PUZZLE_PIECE_DOWN
- call Function9331e
+ call Slots_PlaySFX
ret
-Function93289: ; 93289 (24:7289)
- ld hl, $6
+.roll: ; 93289 (24:7289)
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
add hl, bc
ld a, [hl]
rept 2
inc [hl]
endr
- cp $48
- jr nc, .asm_932a3
+ cp 9 * 8
+ jr nc, .restart
and $3
ret nz
- ld hl, $d
+ ld hl, SPRITEANIMSTRUCT_0D
add hl, bc
ld a, [hl]
xor $ff
@@ -1985,20 +2066,21 @@ endr
ld [hl], a
ld [hSCY], a
ret
-.asm_932a3
- ld hl, $b
+
+.restart
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
xor a
ld [hl], a
ld [hSCY], a
ret
-Function932ac: ; 932ac (24:72ac)
- ld hl, $b
+Slots_AnimateChansey: ; 932ac (24:72ac)
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
ld e, [hl]
ld d, 0
- ld hl, Jumptable_932bc
+ ld hl, .Jumptable
rept 2
add hl, de
endr
@@ -2007,92 +2089,153 @@ endr
ld l, a
jp [hl]
-Jumptable_932bc: ; 932bc (24:72bc)
- dw Function932c2
- dw Function932e0
- dw Function932fc
+.Jumptable: ; 932bc (24:72bc)
+ jumptable_start
+ jumptable .walk
+ jumptable .one
+ jumptable .two
-Function932c2: ; 932c2 (24:72c2)
- ld hl, $4
+.walk: ; 932c2 (24:72c2)
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
ld a, [hl]
inc [hl]
- cp $68
- jr z, .asm_932d6
+ cp 13 * 8
+ jr z, .limit
and $f
ret nz
ld de, SFX_JUMP_OVER_LEDGE
call PlaySFX
ret
-.asm_932d6
- ld hl, $b
+
+.limit
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
ld a, $1
ld [wcf64], a
-Function932e0: ; 932e0 (24:72e0)
+.one: ; 932e0 (24:72e0)
ld a, [wcf64]
cp $2
- jr z, .asm_932f1
+ jr z, .retain
cp $5
ret nz
- ld hl, 0
+ ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
ld [hl], $0
ret
-.asm_932f1
- ld hl, $b
+
+.retain
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
inc [hl]
- ld hl, $c
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld [hl], $8
-
-Function932fc: ; 932fc (24:72fc)
- ld hl, $c
+.two: ; 932fc (24:72fc)
+ ld hl, SPRITEANIMSTRUCT_0C
add hl, bc
ld a, [hl]
and a
- jr z, .asm_93306
+ jr z, .spawn_egg
dec [hl]
ret
-.asm_93306
- ld hl, $b
+
+.spawn_egg
+ ld hl, SPRITEANIMSTRUCT_0B
add hl, bc
dec [hl]
push bc
depixel 12, 13, 0, 4
- ld a, SPRITE_ANIM_INDEX_08
+ ld a, SPRITE_ANIM_INDEX_SLOTS_EGG
call _InitSpriteAnimStruct
pop bc
ret
+
; 93316 (24:7316)
-Function93316: ; 93316
+Slots_WaitSFX: ; 93316
push bc
ld c, 16
call DelayFrames
pop bc
ret
+
; 9331e
-Function9331e: ; 9331e (24:731e)
+Slots_PlaySFX: ; 9331e (24:731e)
push de
ld e, a
ld d, 0
call PlaySFX
pop de
ret
+
; 93327 (24:7327)
-Unknown_93327: ; 93327
- db $00, $08, $14, $0c, $10, $00, $08, $14, $0c, $10, $04, $08, $14, $0c, $10, $00, $08, $14
-Unknown_93339: ; 93339
- db $00, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $04, $0c, $08, $10, $14, $00, $0c, $08
-Unknown_9334b: ; 9334b
- db $00, $0c, $08, $10, $14, $0c, $08, $10, $14, $0c, $04, $08, $10, $14, $0c, $00, $0c, $08
+; The first three positions are repeated to
+; avoid needing to check indices when copying.
+Reel1Tilemap: ; 93327
+ db SLOTS_SEVEN ; 0
+ db SLOTS_CHERRY ; 1
+ db SLOTS_STARYU ; 2
+ db SLOTS_PIKACHU ; 3
+ db SLOTS_SQUIRTLE ; 4
+ db SLOTS_SEVEN ; 5
+ db SLOTS_CHERRY ; 6
+ db SLOTS_STARYU ; 7
+ db SLOTS_PIKACHU ; 8
+ db SLOTS_SQUIRTLE ; 9
+ db SLOTS_POKEBALL ; 10
+ db SLOTS_CHERRY ; 11
+ db SLOTS_STARYU ; 12
+ db SLOTS_PIKACHU ; 13
+ db SLOTS_SQUIRTLE ; 14
+ db SLOTS_SEVEN ; 0
+ db SLOTS_CHERRY ; 1
+ db SLOTS_STARYU ; 2
+
+Reel2Tilemap: ; 93339
+ db SLOTS_SEVEN ; 0
+ db SLOTS_PIKACHU ; 1
+ db SLOTS_CHERRY ; 2
+ db SLOTS_SQUIRTLE ; 3
+ db SLOTS_STARYU ; 4
+ db SLOTS_POKEBALL ; 5
+ db SLOTS_PIKACHU ; 6
+ db SLOTS_CHERRY ; 7
+ db SLOTS_SQUIRTLE ; 8
+ db SLOTS_STARYU ; 9
+ db SLOTS_POKEBALL ; 10
+ db SLOTS_PIKACHU ; 11
+ db SLOTS_CHERRY ; 12
+ db SLOTS_SQUIRTLE ; 13
+ db SLOTS_STARYU ; 14
+ db SLOTS_SEVEN ; 0
+ db SLOTS_PIKACHU ; 1
+ db SLOTS_CHERRY ; 2
+
+Reel3Tilemap: ; 9334b
+ db SLOTS_SEVEN ; 0
+ db SLOTS_PIKACHU ; 1
+ db SLOTS_CHERRY ; 2
+ db SLOTS_SQUIRTLE ; 3
+ db SLOTS_STARYU ; 4
+ db SLOTS_PIKACHU ; 5
+ db SLOTS_CHERRY ; 6
+ db SLOTS_SQUIRTLE ; 7
+ db SLOTS_STARYU ; 8
+ db SLOTS_PIKACHU ; 9
+ db SLOTS_POKEBALL ; 10
+ db SLOTS_CHERRY ; 11
+ db SLOTS_SQUIRTLE ; 12
+ db SLOTS_STARYU ; 13
+ db SLOTS_PIKACHU ; 14
+ db SLOTS_SEVEN ; 0
+ db SLOTS_PIKACHU ; 1
+ db SLOTS_CHERRY ; 2
; 9335d
SlotsTilemap: ; 9335d
diff --git a/engine/specials.asm b/engine/specials.asm
index 09edbb263..3db37eacc 100644
--- a/engine/specials.asm
+++ b/engine/specials.asm
@@ -26,7 +26,7 @@ SpecialsPointers:: ; c029
add_special Special_CheckBothSelectedSameRoom
add_special Special_FailedLinkToPast
add_special Special_CloseLink
- add_special Special_AbortLink
+ add_special WaitForOtherPlayerToExit
add_special Special_SetBitsForBattleRequest
add_special Special_SetBitsForTimeCapsuleRequest
add_special Special_CheckTimeCapsuleCompatibility
@@ -101,7 +101,7 @@ SpecialsPointers:: ; c029
add_special SpecialCheckPokerus
add_special Special_DisplayCoinCaseBalance
add_special Special_DisplayMoneyAndCoinBalance
- add_special PlaceMoneyTopRightOW
+ add_special PlaceMoneyTopRight
add_special Special_CheckForLuckyNumberWinners
add_special Special_CheckLuckyNumberShowFlag
add_special Special_ResetLuckyNumberShowFlag
@@ -126,7 +126,7 @@ SpecialsPointers:: ; c029
add_special SpecialTrainerHouse
add_special PhotoStudio
add_special InitRoamMons
- add_special Special_RotatePalettesRightMusic
+ add_special Special_FadeOutMusic
add_special Diploma
add_special PrintDiploma
@@ -175,7 +175,7 @@ SpecialsPointers:: ; c029
add_special SpecialBeastsCheck
add_special SpecialMonCheck
add_special Special_SetPlayerPalette
- add_special Function170bd2
+ add_special ret_170bd2
add_special Mobile_SelectThreeMons
add_special Function1037eb
add_special Function10383c
@@ -256,7 +256,7 @@ Special_FindThatSpeciesYourTrainerID: ; c284
jr FoundOne
FoundOne: ; c292
- ld a, $1
+ ld a, TRUE
ld [ScriptVar], a
ret
@@ -334,11 +334,11 @@ Special_GetMysteryGiftItem: ; c309
call GetSRAMBank
ld a, [sMysteryGiftItem]
ld [CurItem], a
- ld a, $1
+ ld a, 1
ld [wItemQuantityChangeBuffer], a
ld hl, NumItems
call ReceiveItem
- jr nc, .asm_c33d
+ jr nc, .no_room
xor a
ld [sMysteryGiftItem], a
call CloseSRAM
@@ -347,11 +347,11 @@ Special_GetMysteryGiftItem: ; c309
call GetItemName
ld hl, .ReceiveItemText
call PrintText
- ld a, $1
+ ld a, TRUE
ld [ScriptVar], a
ret
-.asm_c33d
+.no_room
call CloseSRAM
xor a
ld [ScriptVar], a
@@ -380,8 +380,8 @@ MapRadio: ; c355
Special_UnownPuzzle: ; c360
call FadeToMenu
- callba Functione1190
- ld a, [wd0ec]
+ callba UnownPuzzle
+ ld a, [wSolvedUnownPuzzle]
ld [ScriptVar], a
call ExitAllMenus
ret
@@ -433,35 +433,35 @@ Special_CheckCoins: ; c3ae
ld hl, Coins
ld a, [hli]
or [hl]
- jr z, .asm_c3c4
+ jr z, .no_coins
ld a, COIN_CASE
ld [CurItem], a
ld hl, NumItems
call CheckItem
- jr nc, .asm_c3c9
+ jr nc, .no_coin_case
and a
ret
-.asm_c3c4
- ld hl, UnknownText_0xc3d1
- jr .asm_c3cc
+.no_coins
+ ld hl, .NoCoinsText
+ jr .print
-.asm_c3c9
- ld hl, UnknownText_0xc3d6
+.no_coin_case
+ ld hl, .NoCoinCaseText
-.asm_c3cc
+.print
call PrintText
scf
ret
; c3d1
-UnknownText_0xc3d1: ; 0xc3d1
+.NoCoinsText: ; 0xc3d1
; You have no coins.
text_jump UnknownText_0x1bd3d7
db "@"
; 0xc3d6
-UnknownText_0xc3d6: ; 0xc3d6
+.NoCoinCaseText: ; 0xc3d6
; You don't have a COIN CASE.
text_jump UnknownText_0x1bd3eb
db "@"
@@ -498,22 +498,22 @@ Special_ActivateFishingSwarm: ; c3fc
; c403
-LoadWildData:: ; c403
+StoreSwarmMapIndices:: ; c403
ld a, c
and a
- jr nz, .swarm_route35
+ jr nz, .yanma
; swarm dark cave violet entrance
ld a, d
- ld [wdfcc], a
+ ld [wDunsparceMapGroup], a
ld a, e
- ld [wdfcd], a
+ ld [wDunsparceMapNumber], a
ret
-.swarm_route35
+.yanma
ld a, d
- ld [wdc5a], a
+ ld [wYanmaMapGroup], a
ld a, e
- ld [wdc5b], a
+ ld [wYanmaMapNumber], a
ret
; c419
@@ -557,7 +557,7 @@ SpecialSnorlaxAwake: ; 0xc43d
ld hl, .ProximityCoords
.loop
ld a, [hli]
- cp $ff
+ cp -1
jr z, .nope
cp b
jr nz, .nextcoord
@@ -565,7 +565,7 @@ SpecialSnorlaxAwake: ; 0xc43d
cp c
jr nz, .loop
- ld a, $1
+ ld a, TRUE
jr .done
.nextcoord
@@ -585,7 +585,7 @@ SpecialSnorlaxAwake: ; 0xc43d
db 35, 10 ; below
db 36, 8 ; right
db 36, 9 ; right
- db $ff
+ db -1
PlayCurMonCry: ; c472
@@ -616,7 +616,7 @@ SpecialGameboyCheck: ; c478
ret
-Special_RotatePalettesRightMusic: ; c48f
+Special_FadeOutMusic: ; c48f
ld a, MUSIC_NONE % $100
ld [MusicFadeIDLo], a
ld a, MUSIC_NONE / $100
diff --git a/engine/sprite_anims.asm b/engine/sprite_anims.asm
new file mode 100755
index 000000000..89340f610
--- /dev/null
+++ b/engine/sprite_anims.asm
@@ -0,0 +1,897 @@
+DoAnimFrame: ; 8d24b
+ ld hl, SPRITEANIMSTRUCT_ANIM_SEQ_ID
+ add hl, bc
+ ld e, [hl]
+ ld d, 0
+ ld hl, .Jumptable
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; 8d25b
+
+
+.Jumptable: ; 8d25b (23:525b)
+ jumptable_start
+ jumptable .Null ; null
+ jumptable .one ; bouncing mon icon
+ jumptable .two ; bouncing mon icon, selected
+ jumptable .three ; bouncing mon icon, menu open
+ jumptable .four
+ jumptable .five
+ jumptable .GameFreakLogo ; Game Freak logo
+ jumptable .seven
+ jumptable .eight
+ jumptable .SlotsGolem ; Something to do with slots
+ jumptable .SlotsChansey ; Something to do with slots
+ jumptable .SlotsChanseyEgg ; Something to do with slots
+ jumptable .twelve ; blinking cursor
+ jumptable .thirteen
+ jumptable .fourteen
+ jumptable .fifteen
+ jumptable .sixteen
+ jumptable .seventeen
+ jumptable .eighteen
+ jumptable .EggShell ; finish egg hatching animation
+ jumptable .RadioTuningKnob ; radio tuning knob
+ jumptable .twentyone ; cut grass leaves
+ jumptable .FlyFrom ; flying sprite
+ jumptable .FlyLeaf ; flying leaves
+ jumptable .FlyTo ; fly to
+ jumptable .twentyfive
+ jumptable .twentysix
+ jumptable .twentyseven
+ jumptable .twentyeight
+ jumptable .twentynine ; intro suicune
+ jumptable .thirty ; intro pichu wooper
+ jumptable .thirtyone ; celebi
+ jumptable .thirtytwo ; intro unown
+ jumptable .thirtythree ; intro unown F with suicune leaping up
+ jumptable .thirtyfour ; intro suicune facing away from us
+
+
+.Null: ; 8d2a1 (23:52a1)
+ ret
+
+.one: ; 8d2a2 (23:52a2)
+ ld a, [wMenuCursorY]
+
+ ld hl, SPRITEANIMSTRUCT_INDEX
+ add hl, bc
+ cp [hl]
+ jr z, .two
+
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld [hl], 8 * 2
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], $0
+ ret
+
+.two: ; 8d2b9 (23:52b9)
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld [hl], 8 * 3
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ ld d, a
+ inc [hl]
+ and $f
+ ret nz
+
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld e, [hl]
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld a, d
+ and $10 ; bit 4
+ jr z, .load_Null
+ ld a, e
+ and a
+ jr z, .load_minus_two
+ cp $1
+ jr z, .load_minus_one
+.load_Null
+ xor a
+ ld [hl], a
+ ret
+
+.load_minus_one
+ ld a, -1
+ ld [hl], a
+ ret
+
+.load_minus_two
+ ld a, -2
+ ld [hl], a
+ ret
+
+.three: ; 8d2ea (23:52ea)
+ ld a, [wMenuCursorY]
+
+ ld hl, SPRITEANIMSTRUCT_INDEX
+ add hl, bc
+ cp [hl]
+ jr z, .three_offset_right
+
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld [hl], 8 * 2
+ ret
+
+.three_offset_right
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld [hl], 8 * 3
+ ret
+
+.four: ; 8d302 (23:5302)
+ call .anonymous_jumptable
+ jp [hl]
+; 8d306 (23:5306)
+
+; Anonymous jumptable (see .anonymous_jumptable)
+ dw .four_Null
+ dw .four_one
+; 8d30a
+
+.four_Null: ; 8d30a
+ call .IncrementSpriteAnimStruct0B
+
+ ld hl, SPRITEANIMSTRUCT_INDEX
+ add hl, bc
+ ld a, [hl]
+
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ and $3
+ ld [hl], a
+ inc [hl]
+ swap a
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld [hl], a
+
+.four_one: ; 8d321
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld a, [hl]
+ cp $a4
+ jr nc, .asm_8d356
+
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ add $4
+
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld [hl], a
+
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ inc [hl]
+
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld a, [hl]
+ sla a
+ sla a
+ ld d, $2
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ add $3
+ ld [hl], a
+ call .Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+.asm_8d356
+ call DeinitializeSprite
+ ret
+; 8d35a
+
+.twentyfive: ; 8d35a (23:535a)
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ inc a
+ ld [hl], a
+ ld d, $2
+ call .Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+.five: ; 8d36c (23:536c)
+ callab Function11a3b
+ ret
+
+.twelve: ; 8d373 (23:5373)
+ callab Function120c1
+ ret
+
+.GameFreakLogo: ; 8d37a (23:537a)
+ callab GameFreakLogoJumper
+ ret
+
+.seven: ; 8d381 (23:5381)
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_8d3ba
+rept 2
+ dec [hl]
+endr
+ ld d, a
+ and $1f
+ jr nz, .asm_8d395
+
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ dec [hl]
+.asm_8d395
+ ld hl, SPRITEANIMSTRUCT_0B
+ add hl, bc
+ ld a, [hl]
+ push af
+ push de
+ call .Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+ pop de
+ pop af
+ call .Sprites_Cosine
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
+ add hl, bc
+ ld [hl], a
+
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld a, [hl]
+
+ ld hl, SPRITEANIMSTRUCT_0B
+ add hl, bc
+ add [hl]
+ ld [hl], a
+ ret
+
+.asm_8d3ba
+ ld a, $1
+ ld [wcf64], a
+ call DeinitializeSprite
+ ret
+
+.eight: ; 8d3c3 (23:53c3)
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hli]
+ or [hl]
+ jr z, .asm_8d41e
+
+ ld hl, SPRITEANIMSTRUCT_0F
+ add hl, bc
+ ld d, [hl]
+
+ ld hl, SPRITEANIMSTRUCT_0B
+ add hl, bc
+ ld a, [hl]
+ push af
+ push de
+ call .Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+ pop de
+ pop af
+ call .Sprites_Cosine
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
+ add hl, bc
+ ld [hl], a
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+
+ ld hl, SPRITEANIMSTRUCT_0E
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ ld e, l
+ ld d, h
+
+ ld hl, SPRITEANIMSTRUCT_0E
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, -$10
+ add hl, de
+ ld e, l
+ ld d, h
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+
+ ld hl, SPRITEANIMSTRUCT_0B
+ add hl, bc
+ ld a, [hl]
+ xor $20
+ ld [hl], a
+ ret
+
+.asm_8d41e
+ call DeinitializeSprite
+ ret
+
+.SlotsGolem: ; 8d422 (23:5422)
+ callab SlotMachine_AnimateGolem
+ ret
+
+.SlotsChansey: ; 8d429 (23:5429)
+ callab Slots_AnimateChansey
+ ld hl, wcf64
+ ld a, [hl]
+ cp $2
+ ret nz
+ ld [hl], $3
+ ld a, $f
+ call _ReinitSpriteAnimFrame
+ ret
+
+.SlotsChanseyEgg: ; 8d43e (23:543e)
+ ld hl, SPRITEANIMSTRUCT_0B
+ add hl, bc
+ ld a, [hl]
+ dec [hl]
+ ld e, a
+ and $1
+ jr z, .move_vertical
+
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld a, [hl]
+ cp 15 * 8
+ jr c, .move_right
+ call DeinitializeSprite
+ ld a, $4
+ ld [wcf64], a
+ ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
+ call PlaySFX
+ ret
+
+.move_right
+ inc [hl]
+.move_vertical
+ ld a, e
+ ld d, $20
+ call .Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+.thirteen: ; 8d46e (23:546e)
+ callab ret_e00ed
+ ret
+
+.fifteen: ; 8d475 (23:5475)
+ callab Function90d41
+ ret
+
+.fourteen: ; 8d47c (23:547c)
+ callab Functione21a1
+ ret
+
+.sixteen: ; 8d483 (23:5483)
+ call .anonymous_jumptable
+ jp [hl]
+; 8d487 (23:5487)
+
+; Anonymous jumptable (see .anonymous_jumptable)
+ dw .sixteen_Null
+ dw .sixteen_one
+ dw .sixteen_two
+ dw .sixteen_three
+ dw .sixteen_four
+ dw .sixteen_five
+; 8d493
+
+.sixteen_Null: ; 8d493
+ ld a, $14
+ call _ReinitSpriteAnimFrame
+
+ ld hl, SPRITEANIMSTRUCT_0B
+ add hl, bc
+ ld [hl], $2
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld [hl], $20
+ ret
+; 8d4a5
+
+.sixteen_two: ; 8d4a5
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_8d4af
+ dec [hl]
+ ret
+
+.asm_8d4af
+ call .IncrementSpriteAnimStruct0B
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld [hl], $40
+
+.sixteen_three: ; 8d4b8
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ cp $30
+ jr c, .asm_8d4cd
+ dec [hl]
+ ld d, $28
+ call .Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+.asm_8d4cd
+ ld de, SFX_GOT_SAFARI_BALLS
+ call PlaySFX
+ jr .sixteen_five
+; 8d4d5
+
+.sixteen_one: ; 8d4d5
+ ld hl, SPRITEANIMSTRUCT_0B
+ add hl, bc
+ ld [hl], $4
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld [hl], $30
+
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld [hl], $24
+ ret
+; 8d4e8
+
+.sixteen_four: ; 8d4e8
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .asm_8d51c
+ ld d, a
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ call Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ inc [hl]
+ ld a, [hl]
+ and $3f
+ ret nz
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld [hl], $20
+
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld a, [hl]
+ sub $c
+ ld [hl], a
+ ld de, SFX_SWITCH_POKEMON
+ call PlaySFX
+ ret
+
+.asm_8d51c
+ xor a
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+ call .IncrementSpriteAnimStruct0B
+ ret
+
+.sixteen_five: ; 8d526
+ call DeinitializeSprite
+ ret
+; 8d52a
+
+.seventeen: ; 8d52a (23:552a)
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld a, [hl]
+rept 2
+ inc [hl]
+endr
+ cp $b0
+ jr nc, .asm_8d53f
+ and $3
+ ret nz
+ ld de, SFX_POKEBALLS_PLACED_ON_TABLE
+ call PlaySFX
+ ret
+
+.asm_8d53f
+ call DeinitializeSprite
+ ret
+
+.eighteen: ; 8d543 (23:5543)
+ callab Function29676
+ ret
+
+.EggShell: ; 8d54a (23:554a)
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ cp $80
+ jr nc, .finish_EggShell
+ ld d, a
+ add $8
+ ld [hl], a
+
+ ld hl, SPRITEANIMSTRUCT_0B
+ add hl, bc
+ ld a, [hl]
+ xor $20
+ ld [hl], a
+
+ push af
+ push de
+ call .Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+
+ pop de
+ pop af
+ call .Sprites_Cosine
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+.finish_EggShell
+ call DeinitializeSprite
+ ret
+
+.RadioTuningKnob: ; 8d578 (23:5578)
+ callab AnimateTuningKnob
+ ret
+
+.twentyone: ; 8d57f (23:557f)
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $80
+ add hl, de
+ ld e, l
+ ld d, h
+
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+rept 3
+ inc [hl]
+endr
+ push af
+ push de
+ call .Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+ pop de
+ pop af
+ call .Sprites_Cosine
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+.FlyFrom: ; 8d5b0 (23:55b0)
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ ld a, [hl]
+ and a
+ ret z
+
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ cp $40
+ ret c
+
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+rept 2
+ dec [hl]
+endr
+
+ ld hl, SPRITEANIMSTRUCT_0F
+ add hl, bc
+ ld a, [hl]
+ ld d, a
+ cp $40
+ jr nc, .skip
+ add $8
+ ld [hl], a
+.skip
+ ld hl, SPRITEANIMSTRUCT_0E
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ call .Sprites_Cosine
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+.FlyLeaf: ; 8d5e2 (23:55e2)
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld a, [hl]
+ cp -9 * 8
+ jr nc, .delete_leaf
+rept 2
+ inc [hl]
+endr
+
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ dec [hl]
+
+ ld d, $40
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ call .Sprites_Cosine
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+.delete_leaf
+ call DeinitializeSprite
+ ret
+
+.FlyTo: ; 8d607 (23:5607)
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ ld a, [hl]
+ cp 10 * 8 + 4
+ ret z
+
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+rept 2
+ inc [hl]
+endr
+
+ ld hl, SPRITEANIMSTRUCT_0F
+ add hl, bc
+ ld a, [hl]
+ ld d, a
+ and a
+ jr z, .asm_8d621
+ sub $2
+ ld [hl], a
+.asm_8d621
+ ld hl, SPRITEANIMSTRUCT_0E
+ add hl, bc
+ ld a, [hl]
+ inc [hl]
+ call .Sprites_Cosine
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+.twentyseven: ; 8d630 (23:5630)
+ callba Function108bc7
+ ret
+
+.twentyeight: ; 8d637 (23:5637)
+ callba Function108be0
+ ret
+
+.twentynine: ; 8d63e (23:563e)
+ ld a, [wcf65]
+ and a
+ jr nz, .asm_8d645
+ ret
+.asm_8d645
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], $0
+
+ ld hl, SPRITEANIMSTRUCT_0D
+ add hl, bc
+ ld a, [hl]
+ add $2
+ ld [hl], a
+ xor $ff
+ inc a
+ ld d, $20
+ call .Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+ ld a, $36
+ call _ReinitSpriteAnimFrame
+ ret
+
+.thirty: ; 8d666 (23:5666)
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ cp $14
+ jr nc, .asm_8d67f
+ add $2
+ ld [hl], a
+ xor $ff
+ inc a
+ ld d, $20
+ call .Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+.asm_8d67f
+ ret
+
+.thirtytwo: ; 8d680 (23:5680)
+ ld hl, SPRITEANIMSTRUCT_0B
+ add hl, bc
+ ld d, [hl]
+rept 3
+ inc [hl]
+endr
+
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ push af
+ push de
+ call .Sprites_Sine
+
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+ pop de
+ pop af
+ call .Sprites_Cosine
+
+ ld hl, SPRITEANIMSTRUCT_XOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+.thirtythree: ; 8d6a2 (23:56a2)
+ ld a, [wcf64]
+ cp $40
+ ret nz
+ ld a, $3d
+ call _ReinitSpriteAnimFrame
+ ret
+
+.thirtyfour: ; 8d6ae (23:56ae)
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ ld a, [hl]
+ add $10
+ ld [hl], a
+ ret
+
+.twentysix: ; 8d6b7 (23:56b7)
+ callba Function11d0b6
+ ret
+
+.thirtyone: ; 8d6be (23:56be)
+ callba UpdateCelebiPosition
+ ret
+
+.anonymous_jumptable: ; 8d6c5 (23:56c5)
+ ld hl, [sp+$0]
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc de
+
+ ld hl, SPRITEANIMSTRUCT_0B
+ add hl, bc
+ ld l, [hl]
+ ld h, $0
+ add hl, hl
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+; 8d6d8 (23:56d8)
+
+.IncrementSpriteAnimStruct0B: ; 8d6d8
+ ld hl, SPRITEANIMSTRUCT_0B
+ add hl, bc
+ inc [hl]
+ ret
+; 8d6de
+
+.Sprites_Sine: ; 8d6de (23:56de)
+ call Sprites_Sine
+ ret
+
+.Sprites_Cosine: ; 8d6e2 (23:56e2)
+ call Sprites_Cosine
+ ret
+; 8d6e6 (23:56e6)
diff --git a/engine/sprites.asm b/engine/sprites.asm
index f12ed1de8..744ef8f6f 100755
--- a/engine/sprites.asm
+++ b/engine/sprites.asm
@@ -1,6 +1,6 @@
-Function8cf53: ; 8cf53
- ld hl, wc300
- ld bc, wc3c1 - wc300
+ClearSpriteAnims: ; 8cf53
+ ld hl, wSpriteAnimDict
+ ld bc, wSpriteAnimsEnd - wSpriteAnimDict
.loop
ld [hl], $0
inc hl
@@ -11,21 +11,21 @@ Function8cf53: ; 8cf53
ret
; 8cf62
-Function8cf62: ; 8cf62
- call Function8cf69
+PlaySpriteAnimationsAndDelayFrame: ; 8cf62
+ call PlaySpriteAnimations
call DelayFrame
ret
; 8cf69
-Function8cf69: ; 8cf69
+PlaySpriteAnimations: ; 8cf69
push hl
push de
push bc
push af
- ld a, $0
- ld [wc3b5], a
- call Function8cf7a
+ ld a, Sprites % $100
+ ld [wCurrSpriteOAMAddr], a
+ call DoNextFrameForAllSprites
pop af
pop bc
@@ -34,8 +34,8 @@ Function8cf69: ; 8cf69
ret
; 8cf7a
-Function8cf7a: ; 8cf7a
- ld hl, wc314
+DoNextFrameForAllSprites: ; 8cf7a
+ ld hl, wSpriteAnimationStructs
ld e, 10 ; There are 10 structs here.
.loop
@@ -46,8 +46,8 @@ Function8cf7a: ; 8cf7a
ld b, h
push hl
push de
- call Function8d24b ; Uses a massive jumptable
- call Function8d04c
+ call DoAnimFrame ; Uses a massive jumptable
+ call UpdateAnimFrame
pop de
pop hl
jr c, .done
@@ -58,11 +58,11 @@ Function8cf7a: ; 8cf7a
dec e
jr nz, .loop
- ld a, [wc3b5]
+ ld a, [wCurrSpriteOAMAddr]
ld l, a
- ld h, Sprites / $0100
+ ld h, Sprites / $100
-.loop2 ; Clear (Sprites + [wc3b5] --> SpritesEnd)
+.loop2 ; Clear (Sprites + [wCurrSpriteOAMAddr] --> SpritesEnd)
ld a, l
cp SpritesEnd % $100
jr nc, .done
@@ -74,7 +74,7 @@ Function8cf7a: ; 8cf7a
ret
; 8cfa8
-Function8cfa8: ; 8cfa8 (23:4fa8)
+DoNextFrameForFirst16Sprites: ; 8cfa8 (23:4fa8)
ld hl, wSpriteAnimationStructs
ld e, 10
@@ -86,8 +86,8 @@ Function8cfa8: ; 8cfa8 (23:4fa8)
ld b, h
push hl
push de
- call Function8d24b ; Uses a massive jumptable
- call Function8d04c
+ call DoAnimFrame ; Uses a massive jumptable
+ call UpdateAnimFrame
pop de
pop hl
jr c, .done
@@ -98,13 +98,13 @@ Function8cfa8: ; 8cfa8 (23:4fa8)
dec e
jr nz, .loop
- ld a, [wc3b5]
+ ld a, [wCurrSpriteOAMAddr]
ld l, a
ld h, (Sprites + $40) / $100
-.loop2 ; Clear (Sprites + [wc3b5] --> Sprites + $40)
+.loop2 ; Clear (Sprites + [wCurrSpriteOAMAddr] --> Sprites + $40)
ld a, l
- cp (Sprites + $40) % $100
+ cp (Sprites + 16 * 4) % $100
jr nc, .done
xor a
ld [hli], a
@@ -114,10 +114,11 @@ Function8cfa8: ; 8cfa8 (23:4fa8)
ret
InitSpriteAnimStruct:: ; 8cfd6
-; Find if there's any room in the wc314 array, which is 10x16
+; Initialize animation a at pixel x=e, y=d
+; 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]
@@ -138,9 +139,9 @@ InitSpriteAnimStruct:: ; 8cfd6
; Back up the structure address to bc.
ld c, l
ld b, h
-; Value [wc3b4] is initially set to -1. Set it to
+; Value [wSpriteAnimCount] is initially set to -1. Set it to
; the number of objects loaded into this array.
- ld hl, wc3b4
+ ld hl, wSpriteAnimCount
inc [hl]
ld a, [hl]
and a
@@ -148,21 +149,21 @@ InitSpriteAnimStruct:: ; 8cfd6
inc [hl]
.initialized
-; Get row a of Unknown_8d1c4, copy the pointer into de
+; Get row a of SpriteAnimSeqData, copy the pointer into de
pop af
ld e, a
ld d, 0
- ld hl, Unknown_8d1c4
+ ld hl, SpriteAnimSeqData
rept 3
add hl, de
endr
ld e, l
ld d, h
; Set hl to the first field (field 0) in the current structure.
- ld hl, 0
+ ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
; Load the index.
- ld a, [wc3b4]
+ ld a, [wSpriteAnimCount]
ld [hli], a
; Copy the table entry to the next two fields.
ld a, [de]
@@ -171,14 +172,14 @@ endr
ld a, [de]
ld [hli], a
inc de
-; Look up the third field from the table in the wc300 array (10x2).
+; Look up the third field from the table in the wSpriteAnimDict array (10x2).
; Take the value and load it in
ld a, [de]
- call LookUpInwSpriteAnimDict
+ call GetSpriteAnimVTile
ld [hli], a
pop de
-; Set hl to field 4. Kinda pointless, because we're presumably already here.
- ld hl, $4
+; Set hl to field 4 (X coordinate). Kinda pointless, because we're presumably already here.
+ ld hl, SPRITEANIMSTRUCT_XCOORD
add hl, bc
; Load the original value of de into here.
ld a, e
@@ -203,26 +204,26 @@ rept 4
ld [hli], a
endr
ld [hl], a
-; back up the address of the first field to wc3b8
+; back up the address of the first field to wSpriteAnimAddrBackup
ld a, c
- ld [wc3b8], a
+ ld [wSpriteAnimAddrBackup], a
ld a, b
- ld [wc3b8 + 1], a
+ ld [wSpriteAnimAddrBackup + 1], a
ret
; 8d036
-Function8d036: ; 8d036
+DeinitializeSprite: ; 8d036
; Clear the index field of the struct in bc.
- ld hl, 0
+ ld hl, SPRITEANIMSTRUCT_INDEX
add hl, bc
ld [hl], $0
ret
; 8d03d
-Function8d03d: ; 8d03d (23:503d)
-; Clear the index field of every struct in the wc314 array.
- ld hl, wc314
+DeinitializeAllSprites: ; 8d03d (23:503d)
+; Clear the index field of every struct in the wSpriteAnimationStructs array.
+ ld hl, wSpriteAnimationStructs
ld bc, $10
ld e, 10
xor a
@@ -234,91 +235,101 @@ Function8d03d: ; 8d03d (23:503d)
ret
-Function8d04c: ; 8d04c
- call Function8d0ec ; init WRAM
- call Function8d132 ; read from a memory array
+UpdateAnimFrame: ; 8d04c
+ call InitSpriteAnimBuffer ; init WRAM
+ call GetSpriteAnimFrame ; read from a memory array
cp -3
jr z, .done
cp -4
- jr z, .almost
- call Function8d1a2 ; read from a pointer table
- ld a, [wc3ba]
+ jr z, .delete
+ call GetFrameOAMPointer
+ ; add byte to [wCurrAnimVTile]
+ ld a, [wCurrAnimVTile]
add [hl]
- ld [wc3ba], a
+ ld [wCurrAnimVTile], a
inc hl
+ ; load pointer into hl
ld a, [hli]
ld h, [hl]
ld l, a
push bc
- ld a, [wc3b5]
+ ld a, [wCurrSpriteOAMAddr]
ld e, a
ld d, Sprites / $100
ld a, [hli]
- ld c, a
+ ld c, a ; number of objects
.loop
- ld a, [wc3bc]
+ ; first byte: y (px)
+ ; [de] = [wCurrAnimYCoord] + [wCurrAnimYOffset] + [wGlobalAnimYOffset] + AddOrSubtractY([hl])
+ ld a, [wCurrAnimYCoord]
ld b, a
- ld a, [wc3be]
+ ld a, [wCurrAnimYOffset]
add b
ld b, a
- ld a, [wc3bf]
+ ld a, [wGlobalAnimYOffset]
add b
ld b, a
- call Function8d0be
+ call AddOrSubtractY
add b
ld [de], a
inc hl
inc de
- ld a, [wc3bb]
+ ; second byte: x (px)
+ ; [de] = [wCurrAnimXCoord] + [wCurrAnimXOffset] + [wGlobalAnimXOffset] + AddOrSubtractX([hl])
+ ld a, [wCurrAnimXCoord]
ld b, a
- ld a, [wc3bd]
+ ld a, [wCurrAnimXOffset]
add b
ld b, a
- ld a, [wc3c0]
+ ld a, [wGlobalAnimXOffset]
add b
ld b, a
- call Function8d0ce
+ call AddOrSubtractX
add b
ld [de], a
inc hl
inc de
- ld a, [wc3ba]
+ ; third byte: vtile
+ ; [de] = [wCurrAnimVTile] + [hl]
+ ld a, [wCurrAnimVTile]
add [hl]
ld [de], a
inc hl
inc de
- call Function8d0de
+ ; fourth byte: attributes
+ ; [de] = GetSpriteOAMAttr([hl])
+ call GetSpriteOAMAttr
ld [de], a
inc hl
inc de
ld a, e
- ld [wc3b5], a
+ ld [wCurrSpriteOAMAddr], a
cp SpritesEnd % $100
- jr nc, .outofroom
+ jr nc, .reached_the_end
dec c
jr nz, .loop
pop bc
jr .done
-.almost
- call Function8d036
-
+.delete
+ call DeinitializeSprite
.done
and a
ret
-.outofroom
+.reached_the_end
pop bc
scf
ret
; 8d0be
-Function8d0be: ; 8d0be
+AddOrSubtractY: ; 8d0be
push hl
ld a, [hl]
- ld hl, wc3b8
+ ld hl, wCurrSpriteAddSubFlags
bit 6, [hl]
jr z, .ok
+ ; 8 - a
add $8
xor $ff
inc a
@@ -328,12 +339,13 @@ Function8d0be: ; 8d0be
ret
; 8d0ce
-Function8d0ce: ; 8d0ce
+AddOrSubtractX: ; 8d0ce
push hl
ld a, [hl]
- ld hl, wc3b8
+ ld hl, wCurrSpriteAddSubFlags
bit 5, [hl]
jr z, .ok
+ ; 8 - a
add $8
xor $ff
inc a
@@ -343,8 +355,8 @@ Function8d0ce: ; 8d0ce
ret
; 8d0de
-Function8d0de: ; 8d0de
- ld a, [wc3b8]
+GetSpriteOAMAttr: ; 8d0de
+ ld a, [wCurrSpriteAddSubFlags]
ld b, a
ld a, [hl]
xor b
@@ -356,26 +368,27 @@ Function8d0de: ; 8d0de
ret
; 8d0ec
-Function8d0ec: ; 8d0ec
+InitSpriteAnimBuffer: ; 8d0ec
xor a
- ld [wc3b8], a
- ld hl, $3
+ ld [wCurrSpriteAddSubFlags], a
+ ld hl, SPRITEANIMSTRUCT_TILE_ID
add hl, bc
ld a, [hli]
- ld [wc3ba], a
+ ld [wCurrAnimVTile], a
ld a, [hli]
- ld [wc3bb], a
+ ld [wCurrAnimXCoord], a
ld a, [hli]
- ld [wc3bc], a
+ ld [wCurrAnimYCoord], a
ld a, [hli]
- ld [wc3bd], a
+ ld [wCurrAnimXOffset], a
ld a, [hli]
- ld [wc3be], a
+ ld [wCurrAnimYOffset], a
ret
; 8d109
-LookUpInwSpriteAnimDict: ; 8d109
+GetSpriteAnimVTile: ; 8d109
; a = wSpriteAnimDict[a] if a in wSpriteAnimDict else 0
+; VTiles offset
push hl
push bc
ld hl, wSpriteAnimDict
@@ -400,102 +413,105 @@ LookUpInwSpriteAnimDict: ; 8d109
ret
; 8d120
-Function8d120:: ; 8d120
- ld hl, $1
+_ReinitSpriteAnimFrame:: ; 8d120
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld [hl], a
- ld hl, $8
+ ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
- ld [hl], $0
- ld hl, $a
+ ld [hl], 0
+ ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
- ld [hl], $ff
+ ld [hl], -1
ret
; 8d132
-Function8d132: ; 8d132
+GetSpriteAnimFrame: ; 8d132
.loop
- ld hl, $8
+ ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
ld a, [hl]
and a
- jr z, .ok
+ jr z, .next_frame ; finished the current sequence
dec [hl]
- call Function8d189
+ call .GetPointer ; load pointer from SpriteAnimFrameData
ld a, [hli]
push af
- jr .skip
+ jr .okay
-.ok
- ld hl, $a
+.next_frame
+ ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
inc [hl]
- call Function8d189
+ call .GetPointer ; load pointer from SpriteAnimFrameData
ld a, [hli]
- cp $fe
- jr z, .minus_2
- cp $ff
- jr z, .minus_1
+ cp -2
+ jr z, .restart
+ cp -1
+ jr z, .repeat_last
+
push af
ld a, [hl]
push hl
and $3f
- ld hl, $9
+ ld hl, SPRITEANIMSTRUCT_DURATIONOFFSET
add hl, bc
add [hl]
- ld hl, $8
+ ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
ld [hl], a
pop hl
-
-.skip
+.okay
ld a, [hl]
and $c0
srl a
- ld [wc3b8], a
+ ld [wCurrSpriteAddSubFlags], a
pop af
ret
-.minus_1
+.repeat_last
xor a
- ld hl, $8
+ ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
ld [hl], a
- ld hl, $a
+
+ ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
rept 2
dec [hl]
endr
jr .loop
-.minus_2
+.restart
xor a
- ld hl, $8
+ ld hl, SPRITEANIMSTRUCT_DURATION
add hl, bc
ld [hl], a
+
dec a
- ld hl, $a
+ ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
ld [hl], a
jr .loop
; 8d189
-Function8d189: ; 8d189
- ; Get the [bc+10]th entry in the data table
- ; indexed at [bc+1] in Unknown_8d6e6
- ld hl, $1
+.GetPointer: ; 8d189
+ ; Get the data for the current frame for the current animation sequence
+
+ ; SpriteAnimFrameData[SpriteAnim[SPRITEANIMSTRUCT_FRAMESET_ID]][SpriteAnim[SPRITEANIMSTRUCT_FRAME]]
+ ld hl, SPRITEANIMSTRUCT_FRAMESET_ID
add hl, bc
ld e, [hl]
ld d, 0
- ld hl, Unknown_8d6e6
+ ld hl, SpriteAnimFrameData
rept 2
add hl, de
endr
ld e, [hl]
inc hl
ld d, [hl]
- ld hl, $a
+ ld hl, SPRITEANIMSTRUCT_FRAME
add hl, bc
ld l, [hl]
ld h, 0
@@ -504,24 +520,26 @@ endr
ret
; 8d1a2
-Function8d1a2: ; 8d1a2
+GetFrameOAMPointer: ; 8d1a2
+; Load OAM data pointer
ld e, a
ld d, 0
- ld hl, Unknown_8d94d
+ ld hl, SpriteAnimOAMData
rept 3
add hl, de
endr
ret
; 8d1ac
-Function8d1ac: ; unreferenced
+BrokenGetStdGraphics: ; 8d1ac
+; dummied out
push hl
ld l, a
ld h, 0
rept 2
add hl, hl
endr
- ld de, Unknown_8e706 ; broken 2bpp pointers
+ ld de, BrokenStdGFXPointers ; broken 2bpp pointers
add hl, de
ld c, [hl]
inc hl
@@ -537,2332 +555,86 @@ endr
ret
; 8d1c4
-Unknown_8d1c4: ; 8d1c4
- db $01, SPRITE_ANIM_SEQ_01, $00 ; 00
- db $07, SPRITE_ANIM_SEQ_04, $00 ; 01
- db $08, SPRITE_ANIM_SEQ_05, $05 ; 02
- db $0a, SPRITE_ANIM_SEQ_06, $00 ; 03
- db $0b, SPRITE_ANIM_SEQ_07, $06 ; 04
- db $0c, SPRITE_ANIM_SEQ_08, $06 ; 05
- db $0d, SPRITE_ANIM_SEQ_09, $07 ; 06
- db $0e, SPRITE_ANIM_SEQ_0A, $07 ; 07
- db $10, SPRITE_ANIM_SEQ_0B, $07 ; 08
- db $08, SPRITE_ANIM_SEQ_0C, $05 ; 09
- db $11, SPRITE_ANIM_SEQ_00, $00 ; 0a
- db $12, SPRITE_ANIM_SEQ_0D, $08 ; 0b
- db $12, SPRITE_ANIM_SEQ_0E, $08 ; 0c
- db $12, SPRITE_ANIM_SEQ_0F, $08 ; 0d
- db $13, SPRITE_ANIM_SEQ_10, $00 ; 0e
- db $15, SPRITE_ANIM_SEQ_00, $00 ; 0f
- db $16, SPRITE_ANIM_SEQ_11, $00 ; 10
- db $17, SPRITE_ANIM_SEQ_12, $00 ; 11
- db $18, SPRITE_ANIM_SEQ_12, $00 ; 12
- db $19, SPRITE_ANIM_SEQ_13, $00 ; 13
- db $1a, SPRITE_ANIM_SEQ_14, $00 ; 14
- db $1b, SPRITE_ANIM_SEQ_00, $00 ; 15
- db $1d, SPRITE_ANIM_SEQ_15, $00 ; 16
- db $1e, SPRITE_ANIM_SEQ_00, $00 ; 17
- db $1d, SPRITE_ANIM_SEQ_17, $00 ; 18
- db $1f, SPRITE_ANIM_SEQ_00, $00 ; 19
- db $24, SPRITE_ANIM_SEQ_19, $00 ; 1a
- db $25, SPRITE_ANIM_SEQ_00, $00 ; 1b
- db $20, SPRITE_ANIM_SEQ_13, $00 ; 1c
- db $26, SPRITE_ANIM_SEQ_1A, $00 ; 1d
- db $2d, SPRITE_ANIM_SEQ_00, $00 ; 1e
- db $2e, SPRITE_ANIM_SEQ_00, $00 ; 1f
- db $2f, SPRITE_ANIM_SEQ_00, $00 ; 20
- db $30, SPRITE_ANIM_SEQ_00, $00 ; 21
- db $31, SPRITE_ANIM_SEQ_00, $00 ; 22
- db $32, SPRITE_ANIM_SEQ_1B, $00 ; 23
- db $33, SPRITE_ANIM_SEQ_1C, $00 ; 24
- db $34, SPRITE_ANIM_SEQ_00, $00 ; 25
- db $35, SPRITE_ANIM_SEQ_1D, $00 ; 26
- db $37, SPRITE_ANIM_SEQ_1E, $00 ; 27
- db $38, SPRITE_ANIM_SEQ_1E, $00 ; 28
- db $39, SPRITE_ANIM_SEQ_20, $00 ; 29
- db $3f, SPRITE_ANIM_SEQ_21, $00 ; 2a
- db $3e, SPRITE_ANIM_SEQ_22, $00 ; 2b
- db $40, SPRITE_ANIM_SEQ_00, $00 ; 2c
+SpriteAnimSeqData: ; 8d1c4
+ ; frameset sequence, tile
+ db SPRITE_ANIM_FRAMESET_01, SPRITE_ANIM_SEQ_01, $00 ; 00
+ db SPRITE_ANIM_FRAMESET_07, SPRITE_ANIM_SEQ_04, $00 ; 01
+ db SPRITE_ANIM_FRAMESET_08, SPRITE_ANIM_SEQ_05, $05 ; 02
+ db SPRITE_ANIM_FRAMESET_GAMEFREAK_LOGO, SPRITE_ANIM_SEQ_GAMEFREAK_LOGO, $00 ; 03
+ db SPRITE_ANIM_FRAMESET_0B, SPRITE_ANIM_SEQ_07, $06 ; 04
+ db SPRITE_ANIM_FRAMESET_0C, SPRITE_ANIM_SEQ_08, $06 ; 05
+ db SPRITE_ANIM_FRAMESET_SLOT_GOLEM, SPRITE_ANIM_SEQ_SLOT_GOLEM, $07 ; 06 slots golem
+ db SPRITE_ANIM_FRAMESET_SLOTS_CHANSEY, SPRITE_ANIM_SEQ_SLOTS_CHANSEY, $07 ; 07 slots chansey
+ db SPRITE_ANIM_FRAMESET_SLOTS_EGG, SPRITE_ANIM_SEQ_SLOTS_EGG, $07 ; 08 slots egg
+ db SPRITE_ANIM_FRAMESET_08, SPRITE_ANIM_SEQ_0C, $05 ; 09
+ db SPRITE_ANIM_FRAMESET_WALK_CYCLE, SPRITE_ANIM_SEQ_NULL, $00 ; 0a walk cycle
+ db SPRITE_ANIM_FRAMESET_12, SPRITE_ANIM_SEQ_0D, $08 ; 0b
+ db SPRITE_ANIM_FRAMESET_12, SPRITE_ANIM_SEQ_0E, $08 ; 0c
+ db SPRITE_ANIM_FRAMESET_12, SPRITE_ANIM_SEQ_0F, $08 ; 0d
+ db SPRITE_ANIM_FRAMESET_13, SPRITE_ANIM_SEQ_10, $00 ; 0e
+ db SPRITE_ANIM_FRAMESET_15, SPRITE_ANIM_SEQ_NULL, $00 ; 0f
+ db SPRITE_ANIM_FRAMESET_16, SPRITE_ANIM_SEQ_11, $00 ; 10
+ db SPRITE_ANIM_FRAMESET_17, SPRITE_ANIM_SEQ_12, $00 ; 11
+ db SPRITE_ANIM_FRAMESET_18, SPRITE_ANIM_SEQ_12, $00 ; 12
+ db SPRITE_ANIM_FRAMESET_19, SPRITE_ANIM_SEQ_13, $00 ; 13
+ db SPRITE_ANIM_FRAMESET_1A, SPRITE_ANIM_SEQ_14, $00 ; 14 radio tuning knob
+ db SPRITE_ANIM_FRAMESET_1B, SPRITE_ANIM_SEQ_NULL, $00 ; 15
+ db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_15, $00 ; 16 leaves when cutting down a tree
+ db SPRITE_ANIM_FRAMESET_1E, SPRITE_ANIM_SEQ_NULL, $00 ; 17
+ db SPRITE_ANIM_FRAMESET_LEAF, SPRITE_ANIM_SEQ_FLY_LEAF, $00 ; 18 flying leaves
+ db SPRITE_ANIM_FRAMESET_1F, SPRITE_ANIM_SEQ_NULL, $00 ; 19
+ db SPRITE_ANIM_FRAMESET_24, SPRITE_ANIM_SEQ_19, $00 ; 1a
+ db SPRITE_ANIM_FRAMESET_25, SPRITE_ANIM_SEQ_NULL, $00 ; 1b headbutt
+ db SPRITE_ANIM_FRAMESET_20, SPRITE_ANIM_SEQ_13, $00 ; 1c
+ db SPRITE_ANIM_FRAMESET_26, SPRITE_ANIM_SEQ_1A, $00 ; 1d
+ db SPRITE_ANIM_FRAMESET_2D, SPRITE_ANIM_SEQ_NULL, $00 ; 1e
+ db SPRITE_ANIM_FRAMESET_2E, SPRITE_ANIM_SEQ_NULL, $00 ; 1f
+ db SPRITE_ANIM_FRAMESET_2F, SPRITE_ANIM_SEQ_NULL, $00 ; 20
+ db SPRITE_ANIM_FRAMESET_30, SPRITE_ANIM_SEQ_NULL, $00 ; 21
+ db SPRITE_ANIM_FRAMESET_31, SPRITE_ANIM_SEQ_NULL, $00 ; 22
+ db SPRITE_ANIM_FRAMESET_32, SPRITE_ANIM_SEQ_1B, $00 ; 23
+ db SPRITE_ANIM_FRAMESET_33, SPRITE_ANIM_SEQ_1C, $00 ; 24
+ db SPRITE_ANIM_FRAMESET_34, SPRITE_ANIM_SEQ_NULL, $00 ; 25
+ db SPRITE_ANIM_FRAMESET_35, SPRITE_ANIM_SEQ_1D, $00 ; 26
+ db SPRITE_ANIM_FRAMESET_37, SPRITE_ANIM_SEQ_1E, $00 ; 27
+ db SPRITE_ANIM_FRAMESET_38, SPRITE_ANIM_SEQ_1E, $00 ; 28
+ db SPRITE_ANIM_FRAMESET_39, SPRITE_ANIM_SEQ_20, $00 ; 29 intro unown
+ db SPRITE_ANIM_FRAMESET_3F, SPRITE_ANIM_SEQ_21, $00 ; 2a
+ db SPRITE_ANIM_FRAMESET_3E, SPRITE_ANIM_SEQ_22, $00 ; 2b
+ db SPRITE_ANIM_FRAMESET_40, SPRITE_ANIM_SEQ_NULL, $00 ; 2c
; 8d24b
+INCLUDE "engine/sprite_anims.asm" ; DoAnimFrame
-Function8d24b: ; 8d24b
- ld hl, $2 ; field 2, see the second column in the above table
- add hl, bc
- ld e, [hl]
- ld d, 0
- ld hl, .Jumptable
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-; 8d25b
-
-
-.Jumptable: ; 8d25b (23:525b)
- dw .zero ; town map
- dw .one ; bouncing mon icons
- dw .two
- dw .three
- dw .four
- dw .five
- dw .six ; Game Freak logo
- dw .seven
- dw .eight
- dw .nine
- dw .ten
- dw .eleven
- dw .twelve ; blinking cursor
- dw .thirteen
- dw .fourteen
- dw .fifteen
- dw .sixteen
- dw .seventeen
- dw .eighteen
- dw .nineteen
- dw .twenty
- dw .twentyone
- dw .twentytwo ; flying sprite
- dw .twentythree ; flying leaves
- dw .twentyfour
- dw .twentyfive
- dw .twentysix
- dw .twentyseven
- dw .twentyeight
- dw .twentynine ; intro suicune
- dw .thirty ; intro pichu wooper
- dw .thirtyone
- dw .thirtytwo ; intro unown
- dw .thirtythree ; intro unown F with suicune leaping up
- dw .thirtyfour ; intro suicune facing away from us
-
-
-.zero: ; 8d2a1 (23:52a1)
- ret
-
-.one: ; 8d2a2 (23:52a2)
- ld a, [MenuSelection2]
- ld hl, 0
- add hl, bc
- cp [hl]
- jr z, .two
- ld hl, $4
- add hl, bc
- ld [hl], $10
- ld hl, $7
- add hl, bc
- ld [hl], $0
- ret
+INCLUDE "data/sprite_engine.asm"
+; SpriteAnimFrameData
+; SpriteAnimOAMData
-.two: ; 8d2b9 (23:52b9)
- ld hl, $4
- add hl, bc
- ld [hl], $18
- ld hl, $c
- add hl, bc
- ld a, [hl]
- ld d, a
- inc [hl]
- and $f
- ret nz
- ld hl, $d
- add hl, bc
- ld e, [hl]
- ld hl, $7
- add hl, bc
- ld a, d
- and $10 ; bit 4
- jr z, .asm_8d2df
- ld a, e
- and a
- jr z, .asm_8d2e6
- cp $1
- jr z, .asm_8d2e2
-.asm_8d2df
- xor a
- ld [hl], a
- ret
-.asm_8d2e2
- ld a, $ff
- ld [hl], a
- ret
-.asm_8d2e6
- ld a, $fe
- ld [hl], a
- ret
-
-.three: ; 8d2ea (23:52ea)
- ld a, [MenuSelection2]
- ld hl, 0
- add hl, bc
- cp [hl]
- jr z, .asm_8d2fb
- ld hl, $4
- add hl, bc
- ld [hl], $10
- ret
-.asm_8d2fb
- ld hl, $4
- add hl, bc
- ld [hl], $18
- ret
-
-.four: ; 8d302 (23:5302)
- call .anonymous_jumptable
- jp [hl]
-; 8d306 (23:5306)
-
-; Anonymous jumptable (see .anonymous_jumptable)
- dw .four_zero
- dw .four_one
-; 8d30a
-
-.four_zero: ; 8d30a
- call .asm_8d6d8
- ld hl, 0
- add hl, bc
- ld a, [hl]
- ld hl, $d
- add hl, bc
- and $3
- ld [hl], a
- inc [hl]
- swap a
- ld hl, $c
- add hl, bc
- ld [hl], a
-
-.four_one: ; 8d321
- ld hl, $4
- add hl, bc
- ld a, [hl]
- cp $a4
- jr nc, .asm_8d356
- ld hl, $d
- add hl, bc
- add $4
- ld hl, $4
- add hl, bc
- ld [hl], a
- ld hl, $5
- add hl, bc
- inc [hl]
- ld hl, $d
- add hl, bc
- ld a, [hl]
- sla a
- sla a
- ld d, $2
- ld hl, $c
- add hl, bc
- ld a, [hl]
- add $3
- ld [hl], a
- call .asm_8d6de
- ld hl, $7
- add hl, bc
- ld [hl], a
- ret
-
-.asm_8d356
- call Function8d036
- ret
-; 8d35a
-
-.twentyfive: ; 8d35a (23:535a)
- ld hl, $c
- add hl, bc
- ld a, [hl]
- inc a
- ld [hl], a
- ld d, $2
- call .asm_8d6de
- ld hl, $7
- add hl, bc
- ld [hl], a
- ret
-
-.five: ; 8d36c (23:536c)
- callab Function11a3b
- ret
-
-.twelve: ; 8d373 (23:5373)
- callab Function120c1
- ret
-
-.six: ; 8d37a (23:537a)
- callab GameFreakLogoJumper
- ret
-
-.seven: ; 8d381 (23:5381)
- ld hl, $c
- add hl, bc
- ld a, [hl]
- and a
- jr z, .asm_8d3ba
-rept 2
- dec [hl]
-endr
- ld d, a
- and $1f
- jr nz, .asm_8d395
- ld hl, $d
- add hl, bc
- dec [hl]
-.asm_8d395
- ld hl, $b
- add hl, bc
- ld a, [hl]
- push af
- push de
- call .asm_8d6de
- ld hl, $7
- add hl, bc
- ld [hl], a
- pop de
- pop af
- call .asm_8d6e2
- ld hl, $6
- add hl, bc
- ld [hl], a
- ld hl, $d
- add hl, bc
- ld a, [hl]
- ld hl, $b
- add hl, bc
- add [hl]
- ld [hl], a
- ret
-.asm_8d3ba
- ld a, $1
- ld [wcf64], a
- call Function8d036
- ret
-
-.eight: ; 8d3c3 (23:53c3)
- ld hl, $c
- add hl, bc
- ld a, [hli]
- or [hl]
- jr z, .asm_8d41e
- ld hl, $f
- add hl, bc
- ld d, [hl]
- ld hl, $b
- add hl, bc
- ld a, [hl]
- push af
- push de
- call .asm_8d6de
- ld hl, $7
- add hl, bc
- ld [hl], a
- pop de
- pop af
- call .asm_8d6e2
- ld hl, $6
- add hl, bc
- ld [hl], a
- ld hl, $c
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, $e
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- add hl, de
- ld e, l
- ld d, h
- ld hl, $e
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- ld hl, $c
- add hl, bc
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ld de, -$10
- add hl, de
- ld e, l
- ld d, h
- ld hl, $c
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- ld hl, $b
- add hl, bc
- ld a, [hl]
- xor $20
- ld [hl], a
- ret
-.asm_8d41e
- call Function8d036
- ret
-
-.nine: ; 8d422 (23:5422)
- callab Function9321d
- ret
-
-.ten: ; 8d429 (23:5429)
- callab Function932ac
- ld hl, wcf64
- ld a, [hl]
- cp $2
- ret nz
- ld [hl], $3
- ld a, $f
- call Function8d120
- ret
-
-.eleven: ; 8d43e (23:543e)
- ld hl, $b
- add hl, bc
- ld a, [hl]
- dec [hl]
- ld e, a
- and $1
- jr z, .asm_8d462
- ld hl, $4
- add hl, bc
- ld a, [hl]
- cp $78
- jr c, .asm_8d461
- call Function8d036
- ld a, $4
- ld [wcf64], a
- ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
- call PlaySFX
- ret
-.asm_8d461
- inc [hl]
-.asm_8d462
- ld a, e
- ld d, $20
- call .asm_8d6de
- ld hl, $7
- add hl, bc
- ld [hl], a
- ret
-
-.thirteen: ; 8d46e (23:546e)
- callab Functione00ed
- ret
-
-.fifteen: ; 8d475 (23:5475)
- callab Function90d41
- ret
-
-.fourteen: ; 8d47c (23:547c)
- callab Functione21a1
- ret
-
-.sixteen: ; 8d483 (23:5483)
- call .anonymous_jumptable
- jp [hl]
-; 8d487 (23:5487)
-
-; Anonymous jumptable (see .anonymous_jumptable)
- dw .sixteen_zero
- dw .sixteen_one
- dw .sixteen_two
- dw .sixteen_three
- dw .sixteen_four
- dw .sixteen_five
-; 8d493
-
-.sixteen_zero: ; 8d493
- ld a, $14
- call Function8d120
- ld hl, $b
- add hl, bc
- ld [hl], $2
- ld hl, $c
- add hl, bc
- ld [hl], $20
- ret
-; 8d4a5
-
-.sixteen_two: ; 8d4a5
- ld hl, $c
- add hl, bc
- ld a, [hl]
- and a
- jr z, .asm_8d4af
- dec [hl]
- ret
-
-.asm_8d4af
- call .asm_8d6d8
- ld hl, $c
- add hl, bc
- ld [hl], $40
-
-.sixteen_three: ; 8d4b8
- ld hl, $c
- add hl, bc
- ld a, [hl]
- cp $30
- jr c, .asm_8d4cd
- dec [hl]
- ld d, $28
- call .asm_8d6de
- ld hl, $7
- add hl, bc
- ld [hl], a
- ret
-
-.asm_8d4cd
- ld de, SFX_GOT_SAFARI_BALLS
- call PlaySFX
- jr .sixteen_five
-; 8d4d5
-
-.sixteen_one: ; 8d4d5
- ld hl, $b
- add hl, bc
- ld [hl], $4
- ld hl, $c
- add hl, bc
- ld [hl], $30
- ld hl, $d
- add hl, bc
- ld [hl], $24
- ret
-; 8d4e8
-
-.sixteen_four: ; 8d4e8
- ld hl, $d
- add hl, bc
- ld a, [hl]
- and a
- jr z, .asm_8d51c
- ld d, a
- ld hl, $c
- add hl, bc
- ld a, [hl]
- call Function8e72c
- ld hl, $7
- add hl, bc
- ld [hl], a
- ld hl, $c
- add hl, bc
- inc [hl]
- ld a, [hl]
- and $3f
- ret nz
- ld hl, $c
- add hl, bc
- ld [hl], $20
- ld hl, $d
- add hl, bc
- ld a, [hl]
- sub $c
- ld [hl], a
- ld de, SFX_SWITCH_POKEMON
- call PlaySFX
- ret
-
-.asm_8d51c
- xor a
- ld hl, $7
- add hl, bc
- ld [hl], a
- call .asm_8d6d8
- ret
-
-.sixteen_five: ; 8d526
- call Function8d036
- ret
-; 8d52a
-
-.seventeen: ; 8d52a (23:552a)
- ld hl, $4
- add hl, bc
- ld a, [hl]
-rept 2
- inc [hl]
-endr
- cp $b0
- jr nc, .asm_8d53f
- and $3
- ret nz
- ld de, SFX_POKEBALLS_PLACED_ON_TABLE
- call PlaySFX
- ret
-
-.asm_8d53f
- call Function8d036
- ret
-
-.eighteen: ; 8d543 (23:5543)
- callab Function29676
- ret
-
-.nineteen: ; 8d54a (23:554a)
- ld hl, $c
- add hl, bc
- ld a, [hl]
- cp $80
- jr nc, .asm_8d574
- ld d, a
- add $8
- ld [hl], a
- ld hl, $b
- add hl, bc
- ld a, [hl]
- xor $20
- ld [hl], a
- push af
- push de
- call .asm_8d6de
- ld hl, $7
- add hl, bc
- ld [hl], a
- pop de
- pop af
- call .asm_8d6e2
- ld hl, $6
- add hl, bc
- ld [hl], a
- ret
-.asm_8d574
- call Function8d036
- ret
-
-.twenty: ; 8d578 (23:5578)
- callab Function91640
- ret
-
-.twentyone: ; 8d57f (23:557f)
- ld hl, $d
- add hl, bc
- ld e, [hl]
- inc hl
- ld d, [hl]
- ld hl, $80
- add hl, de
- ld e, l
- ld d, h
- ld hl, $d
- add hl, bc
- ld [hl], e
- inc hl
- ld [hl], d
- ld hl, $c
- add hl, bc
- ld a, [hl]
-rept 3
- inc [hl]
-endr
- push af
- push de
- call .asm_8d6de
- ld hl, $7
- add hl, bc
- ld [hl], a
- pop de
- pop af
- call .asm_8d6e2
- ld hl, $6
- add hl, bc
- ld [hl], a
- ret
-
-.twentytwo: ; 8d5b0 (23:55b0)
- ld hl, $5
- add hl, bc
- ld a, [hl]
- and a
- ret z
- ld hl, $d
- add hl, bc
- ld a, [hl]
- inc [hl]
- cp $40
- ret c
- ld hl, $5
- add hl, bc
-rept 2
- dec [hl]
-endr
- ld hl, $f
- add hl, bc
- ld a, [hl]
- ld d, a
- cp $40
- jr nc, .asm_8d5d3
- add $8
- ld [hl], a
-.asm_8d5d3
- ld hl, $e
- add hl, bc
- ld a, [hl]
- inc [hl]
- call .asm_8d6e2
- ld hl, $6
- add hl, bc
- ld [hl], a
- ret
-
-.twentythree: ; 8d5e2 (23:55e2)
- ld hl, $4
- add hl, bc
- ld a, [hl]
- cp $b8
- jr nc, .asm_8d603
-rept 2
- inc [hl]
-endr
- ld hl, $5
- add hl, bc
- dec [hl]
- ld d, $40
- ld hl, $c
- add hl, bc
- ld a, [hl]
- inc [hl]
- call .asm_8d6e2
- ld hl, $6
- add hl, bc
- ld [hl], a
- ret
-.asm_8d603
- call Function8d036
- ret
-
-.twentyfour: ; 8d607 (23:5607)
- ld hl, $5
- add hl, bc
- ld a, [hl]
- cp $54
- ret z
- ld hl, $5
- add hl, bc
-rept 2
- inc [hl]
-endr
- ld hl, $f
- add hl, bc
- ld a, [hl]
- ld d, a
- and a
- jr z, .asm_8d621
- sub $2
- ld [hl], a
-.asm_8d621
- ld hl, $e
- add hl, bc
- ld a, [hl]
- inc [hl]
- call .asm_8d6e2
- ld hl, $6
- add hl, bc
- ld [hl], a
- ret
-
-.twentyseven: ; 8d630 (23:5630)
- callba Function108bc7
- ret
-
-.twentyeight: ; 8d637 (23:5637)
- callba Function108be0
- ret
-
-.twentynine: ; 8d63e (23:563e)
- ld a, [wcf65]
- and a
- jr nz, .asm_8d645
- ret
-.asm_8d645
- ld hl, $7
- add hl, bc
- ld [hl], $0
- ld hl, $d
- add hl, bc
- ld a, [hl]
- add $2
- ld [hl], a
- xor $ff
- inc a
- ld d, $20
- call .asm_8d6de
- ld hl, $7
- add hl, bc
- ld [hl], a
- ld a, $36
- call Function8d120
- ret
-
-.thirty: ; 8d666 (23:5666)
- ld hl, $c
- add hl, bc
- ld a, [hl]
- cp $14
- jr nc, .asm_8d67f
- add $2
- ld [hl], a
- xor $ff
- inc a
- ld d, $20
- call .asm_8d6de
- ld hl, $7
- add hl, bc
- ld [hl], a
-.asm_8d67f
- ret
-
-.thirtytwo: ; 8d680 (23:5680)
- ld hl, $b
- add hl, bc
- ld d, [hl]
-rept 3
- inc [hl]
-endr
- ld hl, $c
- add hl, bc
- ld a, [hl]
- push af
- push de
- call .asm_8d6de
- ld hl, $7
- add hl, bc
- ld [hl], a
- pop de
- pop af
- call .asm_8d6e2
- ld hl, $6
- add hl, bc
- ld [hl], a
- ret
-
-.thirtythree: ; 8d6a2 (23:56a2)
- ld a, [wcf64]
- cp $40
- ret nz
- ld a, $3d
- call Function8d120
- ret
-
-.thirtyfour: ; 8d6ae (23:56ae)
- ld hl, $5
- add hl, bc
- ld a, [hl]
- add $10
- ld [hl], a
- ret
-
-.twentysix: ; 8d6b7 (23:56b7)
- callba Function11d0b6
- ret
-
-.thirtyone: ; 8d6be (23:56be)
- callba Function49aa2
- ret
-
-.anonymous_jumptable: ; 8d6c5 (23:56c5)
- ld hl, [sp+$0]
- ld e, [hl]
- inc hl
- ld d, [hl]
- inc de
- ld hl, $b
- add hl, bc
- ld l, [hl]
- ld h, $0
- add hl, hl
- add hl, de
- ld a, [hli]
- ld h, [hl]
- ld l, a
- ret
-; 8d6d8 (23:56d8)
-
-.asm_8d6d8: ; 8d6d8
- ld hl, $b
- add hl, bc
- inc [hl]
- ret
-; 8d6de
-
-.asm_8d6de: ; 8d6de (23:56de)
- call Function8e72c
- ret
-
-.asm_8d6e2: ; 8d6e2 (23:56e2)
- call Function8e72a
- ret
-; 8d6e6 (23:56e6)
-
-Unknown_8d6e6: ; 8d6e6
- dw Unknown_8d76a
- dw Unknown_8d76d
- dw Unknown_8d772
- dw Unknown_8d777
- dw Unknown_8d77c
- dw Unknown_8d781
- dw Unknown_8d786
- dw Unknown_8d7a6
- dw Unknown_8d7ab
- dw Unknown_8d7b0
- dw Unknown_8d7b5
- dw Unknown_8d7d4
- dw Unknown_8d7d9
- dw Unknown_8d7e2
- dw Unknown_8d7eb
- dw Unknown_8d7f4
- dw Unknown_8d7ff
- dw Unknown_8d78b
- dw Unknown_8d802
- dw Unknown_8d805
- dw Unknown_8d808
- dw Unknown_8d811
- dw Unknown_8d818
- dw Unknown_8d81d
- dw Unknown_8d822
- dw Unknown_8d825
- dw Unknown_8d82c
- dw Unknown_8d82f
- dw Unknown_8d861
- dw Unknown_8d864
- dw Unknown_8d867
- dw Unknown_8d874
- dw Unknown_8d877
- dw Unknown_8d87a
- dw Unknown_8d87d
- dw Unknown_8d880
- dw Unknown_8d883
- dw Unknown_8d890
- dw Unknown_8d899
- dw Unknown_8d89c
- dw Unknown_8d89f
- dw Unknown_8d8a2
- dw Unknown_8d8a5
- dw Unknown_8d8a8
- dw Unknown_8d8ab
- dw Unknown_8d794
- dw Unknown_8d79d
- dw Unknown_8d8ae
- dw Unknown_8d8cd
- dw Unknown_8d8ec
- dw Unknown_8d8f1
- dw Unknown_8d8f4
- dw Unknown_8d8f7
- dw Unknown_8d8fe
- dw Unknown_8d907
- dw Unknown_8d90c
- dw Unknown_8d913
- dw Unknown_8d916
- dw Unknown_8d91d
- dw Unknown_8d924
- dw Unknown_8d92b
- dw Unknown_8d932
- dw Unknown_8d93d
- dw Unknown_8d940
- dw Unknown_8d943
- dw Unknown_8d948
-; 8d76a
-
-Unknown_8d76a: dw $2000
- db -1
-Unknown_8d76d: dw $0800, $0801
- db -2
-Unknown_8d772: dw $083d, $083e
- db -2
-Unknown_8d777: dw $083f, $0840
- db -2
-Unknown_8d77c: dw $0400, $0401
- db -2
-Unknown_8d781: dw $043d, $043e
- db -2
-Unknown_8d786: dw $043f, $0440
- db -2
-Unknown_8d78b: dw $0800, $0801, $0800, $4801
- db -2
-Unknown_8d794: dw $0863, $0864, $0863, $4864
- db -2
-Unknown_8d79d: dw $0865, $0866, $0865, $4866
- db -2
-Unknown_8d7a6: dw $011e, $011f
- db -2
-Unknown_8d7ab: dw $0120, $01fd
- db -2
-Unknown_8d7b0: dw $0121, $01fd
- db -2
-Unknown_8d7b5: dw $0c81, $0182, $0183, $0482, $0c81, $0c82, $0483, $2084, $0385, $0386, $0487, $0488, $0489, $0a8a, $078b
- db -1
-Unknown_8d7d4: dw $0323, $8323
- db -2
-Unknown_8d7d9: dw $0224, $0225, $0226, $0225
- db -2
-Unknown_8d7e2: dw $0727, $0728, $8727, $4728
- db -2
-Unknown_8d7eb: dw $0729, $072a, $0729, $072b
- db -2
-Unknown_8d7f4: dw $0729, $072c, $072d, $072c, $0729
- db -1
-Unknown_8d7ff: dw $142e
- db -1
-Unknown_8d802: dw $202f
- db -1
-Unknown_8d805: dw $2030
- db -1
-Unknown_8d808: dw $0330, $0331, $0330, $4331
- db -2
-Unknown_8d811: dw $0432, $0433, $0434
- db -4
-Unknown_8d818: dw $0335, $0336
- db -2
-Unknown_8d81d: dw $0737, $0738
- db -2
-Unknown_8d822: dw $2039
- db -1
-Unknown_8d825: dw $023b, $023a, $023b
- db -1
-Unknown_8d82c: dw $203c
- db -1
-Unknown_8d82f: dw $0841, $0842, $0841, $4842
- db -2
- dw $0843, $0844
- db -2
- dw $0845, $0846
- db -2
- dw $0847, $0848
- db -2
- dw $0149, $4149, $c149, $8149
- db -2
- dw $204a
- db -1
- dw $204b
- db -1
- dw $204c
- db -1
- dw $204d
- db -1
- dw $034e, $03fd
- db -2
-Unknown_8d861: dw $20fd
- db -1
-Unknown_8d864: dw $204f
- db -1
-Unknown_8d867: dw $0250, $1051, $01fd, $0152, $01fd, $0153
- db -4
-Unknown_8d874: dw $2054
- db -1
-Unknown_8d877: dw $2055
- db -1
-Unknown_8d87a: dw $6055
- db -1
-Unknown_8d87d: dw $a055
- db -1
-Unknown_8d880: dw $e055
- db -1
-Unknown_8d883: dw $0a56, $0957, $0a58, $0a59, $0958, $0a5a
- db -2
-Unknown_8d890: dw $0250, $025b, $0250, $425b
- db -2
-Unknown_8d899: dw $025c
- db -1
-Unknown_8d89c: dw $025d
- db -1
-Unknown_8d89f: dw $025e
- db -1
-Unknown_8d8a2: dw $025f
- db -1
-Unknown_8d8a5: dw $0260
- db -1
-Unknown_8d8a8: dw $0261
- db -1
-Unknown_8d8ab: dw $0262
- db -1
-Unknown_8d8ae: dw $0332, $0333, $0334, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331
- db -1
-Unknown_8d8cd: dw $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0330, $0331, $0330, $4331, $0332, $0333, $0334
- db -4
-Unknown_8d8ec: dw $0367, $0368
- db -2
-Unknown_8d8f1: dw $036c
- db -1
-Unknown_8d8f4: dw $036d
- db -1
-Unknown_8d8f7: dw $0269, $026a, $026b
- db -4
-Unknown_8d8fe: dw $036e, $036f, $0370, $0371
- db -2
-Unknown_8d907: dw $0371, $076e
- db -1
-Unknown_8d90c: dw $2072, $0773, $0774
- db -1
-Unknown_8d913: dw $0375
- db -1
-Unknown_8d916: dw $0376, $0377, $0778
- db -4
-Unknown_8d91d: dw $4376, $4377, $4778
- db -4
-Unknown_8d924: dw $8376, $8377, $8778
- db -4
-Unknown_8d92b: dw $c376, $c377, $c778
- db -4
-Unknown_8d932: dw $0379, $037a, $037b, $077c, $077d
- db -1
-Unknown_8d93d: dw $037e
- db -1
-Unknown_8d940: dw $00fd
- db -1
-Unknown_8d943: dw $087f, $0880
- db -1
-Unknown_8d948: dw $487f, $4880
- db -1
-; 8d94d
-
-Unknown_8d94d: ; 8d94d
- dbw $00, Unknown_8dd8a ; 00
- dbw $04, Unknown_8dd8a ; 01
- dbw $4c, Unknown_8daf1 ; 02
- dbw $5c, Unknown_8daf1 ; 03
- dbw $6c, Unknown_8daf6 ; 04
- dbw $6e, Unknown_8daf6 ; 05
- dbw $2d, Unknown_8ddf0 ; 06
- dbw $4d, Unknown_8ddf0 ; 07
- dbw $60, Unknown_8de09 ; 08
- dbw $00, Unknown_8de09 ; 09
- dbw $00, Unknown_8de09 ; 0a
- dbw $06, Unknown_8de09 ; 0b
- dbw $0c, Unknown_8de7e ; 0c
- dbw $0d, Unknown_8daf1 ; 0d
- dbw $00, Unknown_8dc53 ; 0e
- dbw $04, Unknown_8dc53 ; 0f
- dbw $08, Unknown_8dc53 ; 10
- dbw $40, Unknown_8dc53 ; 11
- dbw $44, Unknown_8dc53 ; 12
- dbw $48, Unknown_8dc53 ; 13
- dbw $4c, Unknown_8dc53 ; 14
- dbw $80, Unknown_8de87 ; 15
- dbw $85, Unknown_8de87 ; 16
- dbw $8a, Unknown_8de87 ; 17
- dbw $00, Unknown_8db29 ; 18
- dbw $01, Unknown_8db5c ; 19
- dbw $09, Unknown_8db9d ; 1a
- dbw $10, Unknown_8dc94 ; 1b
- dbw $29, Unknown_8dc94 ; 1c
- dbw $42, Unknown_8dc94 ; 1d
- dbw $f8, Unknown_8e17e ; 1e
- dbw $fa, Unknown_8e17e ; 1f
- dbw $00, Unknown_8deb2 ; 20
- dbw $00, Unknown_8dec3 ; 21
- dbw $00, Unknown_8deec ; 22
- dbw $0f, Unknown_8db07 ; 23
- dbw $11, Unknown_8daf1 ; 24
- dbw $12, Unknown_8daf1 ; 25
- dbw $13, Unknown_8daf1 ; 26
- dbw $00, Unknown_8df29 ; 27
- dbw $08, Unknown_8df29 ; 28
- dbw $10, Unknown_8df42 ; 29
- dbw $10, Unknown_8df5b ; 2a
- dbw $10, Unknown_8df74 ; 2b
- dbw $10, Unknown_8df8d ; 2c
- dbw $10, Unknown_8dfa6 ; 2d
- dbw $3a, Unknown_8daf1 ; 2e
- dbw $00, Unknown_8dd8a ; 2f
- dbw $00, Unknown_8db18 ; 30
- dbw $02, Unknown_8dd9b ; 31
- dbw $06, Unknown_8db5c ; 32
- dbw $0a, Unknown_8db5c ; 33
- dbw $0e, Unknown_8db5c ; 34
- dbw $12, Unknown_8db3a ; 35
- dbw $13, Unknown_8db3a ; 36
- dbw $00, Unknown_8dd8a ; 37
- dbw $04, Unknown_8dd8a ; 38
- dbw $10, Unknown_8db5c ; 39
- dbw $00, Unknown_8dd9b ; 3a
- dbw $04, Unknown_8daf1 ; 3b
- dbw $00, Unknown_8dfbf ; 3c
- dbw $00, Unknown_8ddac ; 3d
- dbw $00, Unknown_8ddbd ; 3e
- dbw $00, Unknown_8ddce ; 3f
- dbw $00, Unknown_8dddf ; 40
- dbw $00, Unknown_8dd9b ; 41
- dbw $04, Unknown_8dd9b ; 42
- dbw $00, Unknown_8dc2e ; 43
- dbw $30, Unknown_8dc2e ; 44
- dbw $03, Unknown_8dc2e ; 45
- dbw $33, Unknown_8dc2e ; 46
- dbw $06, Unknown_8dc2e ; 47
- dbw $36, Unknown_8dc2e ; 48
- dbw $09, Unknown_8dc2e ; 49
- dbw $39, Unknown_8dc2e ; 4a
- dbw $0c, Unknown_8dfcc ; 4b
- dbw $0c, Unknown_8dfe5 ; 4c
- dbw $3c, Unknown_8daf1 ; 4d
- dbw $3e, Unknown_8daf1 ; 4e
- dbw $00, Unknown_8de9c ; 4f
- dbw $00, Unknown_8dea1 ; 50
- dbw $00, Unknown_8dff6 ; 51
- dbw $00, Unknown_8e007 ; 52
- dbw $00, Unknown_8e018 ; 53
- dbw $00, Unknown_8daf1 ; 54
- dbw $01, Unknown_8daf1 ; 55
- dbw $00, Unknown_8e029 ; 56
- dbw $00, Unknown_8e076 ; 57
- dbw $00, Unknown_8e0b7 ; 58
- dbw $00, Unknown_8e0f4 ; 59
- dbw $00, Unknown_8e139 ; 5a
- dbw $04, Unknown_8dea1 ; 5b
- dbw $00, Unknown_8e183 ; 5c
- dbw $00, Unknown_8e1b4 ; 5d
- dbw $00, Unknown_8e1b9 ; 5e
- dbw $00, Unknown_8e1ca ; 5f
- dbw $00, Unknown_8e1eb ; 60
- dbw $00, Unknown_8e1f0 ; 61
- dbw $00, Unknown_8e1f9 ; 62
- dbw $00, Unknown_8e202 ; 63
- dbw $04, Unknown_8e202 ; 64
- dbw $00, Unknown_8e213 ; 65
- dbw $04, Unknown_8e213 ; 66
- dbw $20, Unknown_8e224 ; 67
- dbw $21, Unknown_8e224 ; 68
- dbw $22, Unknown_8e24b ; 69
- dbw $23, Unknown_8e25c ; 6a
- dbw $27, Unknown_8e27d ; 6b
- dbw $2a, Unknown_8e229 ; 6c
- dbw $2a, Unknown_8e23a ; 6d
- dbw $00, Unknown_8e2ae ; 6e
- dbw $08, Unknown_8e33f ; 6f
- dbw $60, Unknown_8e3b0 ; 70
- dbw $68, Unknown_8e429 ; 71
- dbw $00, Unknown_8e4a6 ; 72
- dbw $05, Unknown_8e4a6 ; 73
- dbw $0a, Unknown_8e4a6 ; 74
- dbw $50, Unknown_8e50b ; 75
- dbw $00, Unknown_8e54c ; 76
- dbw $01, Unknown_8e551 ; 77
- dbw $04, Unknown_8e55e ; 78
- dbw $00, Unknown_8db29 ; 79
- dbw $01, Unknown_8e57b ; 7a
- dbw $03, Unknown_8e59c ; 7b
- dbw $08, Unknown_8e5cd ; 7c
- dbw $1c, Unknown_8e5cd ; 7d
- dbw $80, Unknown_8e61e ; 7e
- dbw $00, Unknown_8e66f ; 7f
- dbw $04, Unknown_8e66f ; 80
- dbw $d0, Unknown_8e680 ; 81
- dbw $d3, Unknown_8e680 ; 82
- dbw $d6, Unknown_8e680 ; 83
- dbw $6c, Unknown_8e6a5 ; 84
- dbw $68, Unknown_8e6a5 ; 85
- dbw $64, Unknown_8e6a5 ; 86
- dbw $60, Unknown_8e6a5 ; 87
- dbw $0c, Unknown_8e6a5 ; 88
- dbw $08, Unknown_8e6a5 ; 89
- dbw $04, Unknown_8e6a5 ; 8a
- dbw $00, Unknown_8e6a5 ; 8b
-; 8daf1
-
-
-Unknown_8daf1: ; 8daf1
- db 1
- db $fc, $fc, $00, $00
-; 8daf6
-
-Unknown_8daf6: ; 8daf6
- db 4
- db $f8, $f8, $00, $00
- db $f8, $00, $01, $00
- db $00, $f8, $10, $00
- db $00, $00, $11, $00
-; 8db07
-
-Unknown_8db07: ; 8db07
- db 4
- db $f8, $f8, $00, $00
- db $f8, $00, $00, $20
- db $00, $f8, $01, $00
- db $00, $00, $01, $20
-; 8db18
-
-Unknown_8db18: ; 8db18
- db 4
- db $f8, $f8, $00, $80
- db $f8, $00, $00, $a0
- db $00, $f8, $01, $80
- db $00, $00, $01, $a0
-; 8db29
-
-Unknown_8db29: ; 8db29
- db 4
- db $f8, $f8, $00, $00
- db $f8, $00, $00, $20
- db $00, $f8, $00, $40
- db $00, $00, $00, $60
-; 8db3a
-
-Unknown_8db3a: ; 8db3a
- db 4
- db $f8, $f8, $00, $07
- db $f8, $00, $00, $27
- db $00, $f8, $00, $47
- db $00, $00, $00, $67
-; 8db4b
-
-; 8db4b
- db 4
- db $f8, $f8, $00, $80
- db $f8, $00, $00, $a0
- db $00, $f8, $00, $c0
- db $00, $00, $00, $e0
-; 8db5c
-
-Unknown_8db5c: ; 8db5c
- db 16
- db $f0, $f0, $00, $00
- db $f0, $f8, $01, $00
- db $f8, $f0, $02, $00
- db $f8, $f8, $03, $00
- db $f0, $00, $01, $20
- db $f0, $08, $00, $20
- db $f8, $00, $03, $20
- db $f8, $08, $02, $20
- db $00, $f0, $02, $40
- db $00, $f8, $03, $40
- db $08, $f0, $00, $40
- db $08, $f8, $01, $40
- db $00, $00, $03, $60
- db $00, $08, $02, $60
- db $08, $00, $01, $60
- db $08, $08, $00, $60
-; 8db9d
-
-Unknown_8db9d: ; 8db9d
- db 36
- db $e8, $e8, $00, $00
- db $e8, $f0, $01, $00
- db $e8, $f8, $02, $00
- db $f0, $e8, $03, $00
- db $f0, $f0, $04, $00
- db $f0, $f8, $05, $00
- db $f8, $e8, $06, $00
- db $f8, $f0, $05, $00
- db $f8, $f8, $05, $00
- db $e8, $00, $02, $20
- db $e8, $08, $01, $20
- db $e8, $10, $00, $20
- db $f0, $00, $05, $20
- db $f0, $08, $04, $20
- db $f0, $10, $03, $20
- db $f8, $00, $05, $20
- db $f8, $08, $05, $20
- db $f8, $10, $06, $20
- db $00, $e8, $06, $40
- db $00, $f0, $05, $40
- db $00, $f8, $05, $40
- db $08, $e8, $03, $40
- db $08, $f0, $04, $40
- db $08, $f8, $05, $40
- db $10, $e8, $00, $40
- db $10, $f0, $01, $40
- db $10, $f8, $02, $40
- db $00, $00, $05, $60
- db $00, $08, $05, $60
- db $00, $10, $06, $60
- db $08, $00, $05, $60
- db $08, $08, $04, $60
- db $08, $10, $03, $60
- db $10, $00, $02, $60
- db $10, $08, $01, $60
- db $10, $10, $00, $60
-; 8dc2e
-
-Unknown_8dc2e: ; 8dc2e
- db 9
- db $f4, $f4, $00, $00
- db $f4, $fc, $01, $00
- db $f4, $04, $02, $00
- db $fc, $f4, $10, $00
- db $fc, $fc, $11, $00
- db $fc, $04, $12, $00
- db $04, $f4, $20, $00
- db $04, $fc, $21, $00
- db $04, $04, $22, $00
-; 8dc53
-
-Unknown_8dc53: ; 8dc53
- db 16
- db $f0, $f0, $00, $00
- db $f0, $f8, $01, $00
- db $f0, $00, $02, $00
- db $f0, $08, $03, $00
- db $f8, $f0, $10, $00
- db $f8, $f8, $11, $00
- db $f8, $00, $12, $00
- db $f8, $08, $13, $00
- db $00, $f0, $20, $00
- db $00, $f8, $21, $00
- db $00, $00, $22, $00
- db $00, $08, $23, $00
- db $08, $f0, $30, $00
- db $08, $f8, $31, $00
- db $08, $00, $32, $00
- db $08, $08, $33, $00
-; 8dc94
-
-Unknown_8dc94: ; 8dc94
- db 25
- db $ec, $ec, $00, $00
- db $f4, $ec, $01, $00
- db $fc, $ec, $02, $00
- db $04, $ec, $03, $00
- db $0c, $ec, $04, $00
- db $ec, $f4, $05, $00
- db $f4, $f4, $06, $00
- db $fc, $f4, $07, $00
- db $04, $f4, $08, $00
- db $0c, $f4, $09, $00
- db $ec, $fc, $0a, $00
- db $f4, $fc, $0b, $00
- db $fc, $fc, $0c, $00
- db $04, $fc, $0d, $00
- db $0c, $fc, $0e, $00
- db $ec, $04, $0f, $00
- db $f4, $04, $10, $00
- db $fc, $04, $11, $00
- db $04, $04, $12, $00
- db $0c, $04, $13, $00
- db $ec, $0c, $14, $00
- db $f4, $0c, $15, $00
- db $fc, $0c, $16, $00
- db $04, $0c, $17, $00
- db $0c, $0c, $18, $00
-; 8dcf9
-
-; 8dcf9
- db 36
- db $e8, $e8, $00, $00
- db $e8, $f0, $01, $00
- db $e8, $f8, $02, $00
- db $e8, $00, $03, $00
- db $e8, $08, $04, $00
- db $e8, $10, $05, $00
- db $f0, $e8, $06, $00
- db $f0, $f0, $07, $00
- db $f0, $f8, $08, $00
- db $f0, $00, $09, $00
- db $f0, $08, $0a, $00
- db $f0, $10, $0b, $00
- db $f8, $e8, $0c, $00
- db $f8, $f0, $0d, $00
- db $f8, $f8, $0e, $00
- db $f8, $00, $0f, $00
- db $f8, $08, $10, $00
- db $f8, $10, $11, $00
- db $00, $e8, $12, $00
- db $00, $f0, $13, $00
- db $00, $f8, $14, $00
- db $00, $00, $15, $00
- db $00, $08, $16, $00
- db $00, $10, $17, $00
- db $08, $e8, $18, $00
- db $08, $f0, $19, $00
- db $08, $f8, $1a, $00
- db $08, $00, $1b, $00
- db $08, $08, $1c, $00
- db $08, $10, $1d, $00
- db $10, $e8, $1e, $00
- db $10, $f0, $1f, $00
- db $10, $f8, $20, $00
- db $10, $00, $21, $00
- db $10, $08, $22, $00
- db $10, $10, $23, $00
-; 8dd8a
-
-Unknown_8dd8a: ; 8dd8a
- db 4
- db $f8, $f8, $00, $00
- db $f8, $00, $01, $00
- db $00, $f8, $02, $00
- db $00, $00, $03, $00
-; 8dd9b
-
-Unknown_8dd9b: ; 8dd9b
- db 4
- db $f8, $f8, $00, $80
- db $f8, $00, $01, $80
- db $00, $f8, $02, $80
- db $00, $00, $03, $80
-; 8ddac
-
-Unknown_8ddac: ; 8ddac
- db 4
- db $f8, $f8, $00, $00
- db $f8, $00, $01, $00
- db $00, $f8, $08, $00
- db $00, $00, $03, $00
-; 8ddbd
-
-Unknown_8ddbd: ; 8ddbd
- db 4
- db $f8, $f8, $04, $00
- db $f8, $00, $05, $00
- db $00, $f8, $08, $00
- db $00, $00, $07, $00
-; 8ddce
-
-Unknown_8ddce: ; 8ddce
- db 4
- db $f8, $f8, $00, $00
- db $f8, $00, $01, $00
- db $00, $f8, $09, $00
- db $00, $00, $03, $00
-; 8dddf
-
-Unknown_8dddf: ; 8dddf
- db 4
- db $f8, $f8, $04, $00
- db $f8, $00, $05, $00
- db $00, $f8, $09, $00
- db $00, $00, $07, $00
-; 8ddf0
-
-Unknown_8ddf0: ; 8ddf0
- db 6
- db $f8, $f4, $00, $01
- db $f8, $fc, $01, $01
- db $f8, $04, $02, $01
- db $00, $f4, $10, $01
- db $00, $fc, $11, $01
- db $00, $04, $12, $01
-; 8de09
-
-Unknown_8de09: ; 8de09
- db 29
- db $e8, $e8, $00, $00
- db $e8, $f0, $01, $00
- db $e8, $f8, $02, $00
- db $e8, $00, $03, $00
- db $f0, $e8, $10, $00
- db $f0, $f0, $11, $00
- db $f0, $f8, $12, $00
- db $f0, $00, $13, $00
- db $f8, $e8, $20, $00
- db $f8, $f0, $21, $00
- db $f8, $f8, $22, $00
- db $f8, $00, $23, $00
- db $f8, $08, $24, $00
- db $00, $e8, $30, $80
- db $00, $f0, $31, $80
- db $00, $f8, $32, $80
- db $00, $00, $33, $80
- db $00, $08, $34, $80
- db $08, $e8, $40, $80
- db $08, $f0, $41, $80
- db $08, $f8, $42, $80
- db $08, $00, $43, $80
- db $08, $08, $44, $80
- db $08, $10, $45, $80
- db $10, $f0, $51, $80
- db $10, $f8, $52, $80
- db $10, $00, $53, $80
- db $10, $08, $54, $80
- db $10, $10, $55, $80
-; 8de7e
-
-Unknown_8de7e: ; 8de7e
- db 2
- db $f8, $fc, $00, $00
- db $00, $fc, $10, $00
-; 8de87
-
-Unknown_8de87: ; 8de87
- db 5
- db $f0, $18, $00, $00
- db $f0, $20, $01, $00
- db $f8, $10, $02, $00
- db $f8, $18, $03, $00
- db $00, $10, $04, $00
-; 8de9c
-
-Unknown_8de9c: ; 8de9c
- db 1
- db $fc, $fc, $00, $06
-; 8dea1
-
-Unknown_8dea1: ; 8dea1
- db 4
- db $f8, $f8, $00, $06
- db $f8, $00, $01, $06
- db $00, $f8, $02, $06
- db $00, $00, $03, $06
-; 8deb2
-
-Unknown_8deb2: ; 8deb2
- db 4
- db $ff, $ff, $00, $00
- db $ff, $00, $00, $20
- db $00, $ff, $00, $40
- db $00, $00, $00, $60
-; 8dec3
-
-Unknown_8dec3: ; 8dec3
- db 10
- db $ff, $00, $00, $00
- db $ff, $08, $01, $00
- db $ff, $10, $01, $00
- db $ff, $18, $01, $00
- db $ff, $20, $00, $20
- db $00, $00, $00, $40
- db $00, $08, $01, $40
- db $00, $10, $01, $40
- db $00, $18, $01, $40
- db $00, $20, $00, $60
-; 8deec
-
-Unknown_8deec: ; 8deec
- db 15
- db $ec, $f4, $00, $11
- db $ec, $fc, $01, $11
- db $ec, $04, $02, $11
- db $f4, $f4, $03, $11
- db $f4, $fc, $04, $11
- db $f4, $04, $05, $11
- db $fc, $f4, $06, $11
- db $fc, $fc, $07, $11
- db $fc, $04, $08, $11
- db $04, $f4, $09, $11
- db $04, $fc, $0a, $11
- db $04, $04, $0b, $11
- db $0c, $f4, $0c, $11
- db $0c, $fc, $0d, $11
- db $0c, $04, $0e, $11
-; 8df29
-
-Unknown_8df29: ; 8df29
- db 6
- db $f4, $f4, $00, $15
- db $f4, $fc, $02, $15
- db $f4, $04, $00, $35
- db $04, $f4, $04, $15
- db $04, $fc, $06, $15
- db $04, $04, $04, $35
-; 8df42
-
-Unknown_8df42: ; 8df42
- db 6
- db $f4, $f4, $00, $16
- db $f4, $fc, $02, $16
- db $f4, $04, $04, $16
- db $04, $f4, $06, $16
- db $04, $fc, $08, $16
- db $04, $04, $0a, $16
-; 8df5b
-
-Unknown_8df5b: ; 8df5b
- db 6
- db $f4, $f4, $00, $16
- db $f4, $fc, $02, $16
- db $f4, $04, $04, $16
- db $04, $f4, $0c, $16
- db $04, $fc, $0e, $16
- db $04, $04, $10, $16
-; 8df74
-
-Unknown_8df74: ; 8df74
- db 6
- db $f4, $f4, $00, $16
- db $f4, $fc, $02, $16
- db $f4, $04, $04, $16
- db $04, $f4, $12, $16
- db $04, $fc, $14, $16
- db $04, $04, $16, $16
-; 8df8d
-
-Unknown_8df8d: ; 8df8d
- db 6
- db $f4, $f4, $00, $16
- db $f4, $fc, $02, $16
- db $f4, $04, $04, $16
- db $04, $f4, $18, $16
- db $04, $fc, $1a, $16
- db $04, $04, $1c, $16
-; 8dfa6
-
-Unknown_8dfa6: ; 8dfa6
- db 6
- db $f4, $f4, $1e, $16
- db $f4, $fc, $20, $16
- db $f4, $04, $22, $16
- db $04, $f4, $24, $16
- db $04, $fc, $26, $16
- db $04, $04, $28, $16
-; 8dfbf
-
-Unknown_8dfbf: ; 8dfbf
- db 3
- db $f4, $fc, $00, $10
- db $fc, $fc, $00, $10
- db $04, $fc, $00, $10
-; 8dfcc
-
-Unknown_8dfcc: ; 8dfcc
- db 6
- db $00, $00, $00, $00
- db $00, $08, $01, $00
- db $00, $10, $01, $00
- db $00, $18, $01, $00
- db $00, $20, $02, $00
- db $00, $28, $03, $00
-; 8dfe5
-
-Unknown_8dfe5: ; 8dfe5
- db 4
- db $00, $00, $00, $00
- db $00, $08, $01, $00
- db $00, $10, $02, $00
- db $00, $18, $03, $00
-; 8dff6
-
-Unknown_8dff6: ; 8dff6
- db 4
- db $f8, $f6, $00, $06
- db $f8, $02, $01, $06
- db $00, $f6, $02, $06
- db $00, $02, $03, $06
-; 8e007
-
-Unknown_8e007: ; 8e007
- db 4
- db $f8, $f4, $00, $06
- db $f8, $04, $01, $06
- db $00, $f4, $02, $06
- db $00, $04, $03, $06
-; 8e018
-
-Unknown_8e018: ; 8e018
- db 4
- db $f8, $f0, $00, $06
- db $f8, $08, $01, $06
- db $00, $f0, $02, $06
- db $00, $08, $03, $06
-; 8e029
-
-Unknown_8e029: ; 8e029
- db 19
- db $f8, $e0, $00, $00
- db $f0, $e8, $02, $00
- db $00, $e8, $04, $00
- db $e8, $f0, $06, $00
- db $f8, $f0, $08, $00
- db $08, $f0, $0a, $00
- db $e8, $f8, $0c, $00
- db $f8, $f8, $0e, $00
- db $08, $f8, $10, $00
- db $e8, $00, $12, $00
- db $f8, $00, $14, $00
- db $08, $00, $16, $00
- db $e8, $08, $18, $00
- db $f8, $08, $1a, $00
- db $08, $08, $1c, $00
- db $f8, $10, $1e, $00
- db $08, $10, $20, $00
- db $f0, $18, $22, $00
- db $00, $18, $24, $00
-; 8e076
-
-Unknown_8e076: ; 8e076
- db 16
- db $f8, $e0, $00, $00
- db $f0, $e8, $02, $00
- db $00, $e8, $04, $00
- db $f8, $f0, $26, $00
- db $08, $f0, $0a, $00
- db $e8, $f8, $28, $00
- db $f8, $f8, $2a, $00
- db $08, $f8, $10, $00
- db $f8, $00, $2c, $00
- db $08, $00, $16, $00
- db $f8, $08, $30, $00
- db $08, $08, $1c, $00
- db $f8, $10, $1e, $00
- db $08, $10, $20, $00
- db $f0, $18, $22, $00
- db $00, $18, $24, $00
-; 8e0b7
-
-Unknown_8e0b7: ; 8e0b7
- db 15
- db $f8, $e0, $00, $00
- db $f0, $e8, $02, $00
- db $00, $e8, $32, $00
- db $f8, $f0, $34, $00
- db $08, $f0, $36, $00
- db $f8, $f8, $38, $00
- db $08, $f8, $3a, $00
- db $f8, $00, $3c, $00
- db $08, $00, $3e, $00
- db $f8, $08, $30, $00
- db $08, $08, $1c, $00
- db $f8, $10, $1e, $00
- db $08, $10, $20, $00
- db $f0, $18, $22, $00
- db $00, $18, $24, $00
-; 8e0f4
-
-Unknown_8e0f4: ; 8e0f4
- db 17
- db $f8, $e0, $00, $00
- db $f0, $e8, $02, $00
- db $00, $e8, $04, $00
- db $f8, $f0, $40, $00
- db $08, $f0, $42, $00
- db $18, $f0, $44, $00
- db $f8, $f8, $46, $00
- db $08, $f8, $48, $00
- db $18, $f8, $4a, $00
- db $f8, $00, $4c, $00
- db $08, $00, $4e, $00
- db $f8, $08, $30, $00
- db $08, $08, $1c, $00
- db $f8, $10, $1e, $00
- db $08, $10, $20, $00
- db $f0, $18, $22, $00
- db $00, $18, $24, $00
-; 8e139
-
-Unknown_8e139: ; 8e139
- db 17
- db $f8, $e0, $00, $00
- db $f0, $e8, $02, $00
- db $00, $e8, $04, $00
- db $f8, $f0, $50, $00
- db $08, $f0, $0a, $00
- db $e8, $f8, $52, $00
- db $f8, $f8, $54, $00
- db $08, $f8, $10, $00
- db $e8, $00, $56, $00
- db $f8, $00, $2e, $00
- db $08, $00, $16, $00
- db $f8, $08, $30, $00
- db $08, $08, $1c, $00
- db $f8, $10, $1e, $00
- db $08, $10, $20, $00
- db $f0, $18, $22, $00
- db $00, $18, $24, $00
-; 8e17e
-
-Unknown_8e17e: ; 8e17e
- db 1
- db $fc, $fc, $00, $11
-; 8e183
-
-Unknown_8e183: ; 8e183
- db 12
- db $00, $00, $30, $00
- db $00, $08, $31, $00
- db $00, $10, $31, $00
- db $00, $18, $31, $00
- db $00, $20, $31, $00
- db $00, $28, $32, $00
- db $08, $00, $33, $00
- db $08, $08, $34, $00
- db $08, $10, $34, $00
- db $08, $18, $34, $00
- db $08, $20, $34, $00
- db $08, $28, $35, $00
-; 8e1b4
-
-Unknown_8e1b4: ; 8e1b4
- db 1
- db $00, $00, $ed, $00
-; 8e1b9
-
-Unknown_8e1b9: ; 8e1b9
- db 4
- db $ff, $ff, $30, $00
- db $ff, $01, $32, $00
- db $01, $ff, $33, $00
- db $01, $01, $35, $00
-; 8e1ca
-
-Unknown_8e1ca: ; 8e1ca
- db 8
- db $ff, $ff, $30, $00
- db $ff, $04, $31, $00
- db $ff, $0c, $31, $00
- db $ff, $11, $32, $00
- db $01, $ff, $33, $00
- db $01, $04, $34, $00
- db $01, $0c, $34, $00
- db $01, $11, $35, $00
-; 8e1eb
-
-Unknown_8e1eb: ; 8e1eb
- db 1
- db $00, $00, $34, $00
-; 8e1f0
-
-Unknown_8e1f0: ; 8e1f0
- db 2
- db $00, $00, $30, $00
- db $08, $00, $33, $00
-; 8e1f9
-
-Unknown_8e1f9: ; 8e1f9
- db 2
- db $00, $00, $32, $00
- db $08, $00, $35, $00
-; 8e202
-
-Unknown_8e202: ; 8e202
- db 4
- db $f8, $f8, $00, $01
- db $f8, $00, $01, $01
- db $00, $f8, $02, $01
- db $00, $00, $03, $01
-; 8e213
-
-Unknown_8e213: ; 8e213
- db 4
- db $f8, $f8, $00, $81
- db $f8, $00, $01, $81
- db $00, $f8, $02, $81
- db $00, $00, $03, $81
-; 8e224
-
-Unknown_8e224: ; 8e224
- db 1
- db $fc, $fc, $00, $02
-; 8e229
-
-Unknown_8e229: ; 8e229
- db 4
- db $f0, $fc, $00, $03
- db $f8, $fc, $01, $03
- db $00, $fc, $02, $03
- db $08, $fc, $03, $03
-; 8e23a
-
-Unknown_8e23a: ; 8e23a
- db 4
- db $f0, $fc, $03, $44
- db $f8, $fc, $02, $44
- db $00, $fc, $01, $44
- db $08, $fc, $00, $44
-; 8e24b
-
-Unknown_8e24b: ; 8e24b
- db 4
- db $f8, $f8, $00, $01
- db $f8, $00, $00, $21
- db $00, $f8, $00, $41
- db $00, $00, $00, $61
-; 8e25c
-
-Unknown_8e25c: ; 8e25c
- db 8
- db $f4, $f4, $00, $01
- db $f4, $fc, $01, $01
- db $f4, $04, $00, $21
- db $fc, $f4, $02, $01
- db $fc, $04, $02, $21
- db $04, $f4, $00, $41
- db $04, $fc, $01, $41
- db $04, $04, $00, $61
-; 8e27d
-
-Unknown_8e27d: ; 8e27d
- db 12
- db $f0, $f0, $00, $01
- db $f0, $f8, $01, $01
- db $f8, $f0, $02, $01
- db $f0, $00, $01, $21
- db $f0, $08, $00, $21
- db $f8, $08, $02, $21
- db $00, $f0, $02, $41
- db $08, $f0, $00, $41
- db $08, $f8, $01, $41
- db $00, $08, $02, $61
- db $08, $00, $01, $61
- db $08, $08, $00, $61
-; 8e2ae
-
-Unknown_8e2ae: ; 8e2ae
- db 36
- db $e8, $08, $05, $00
- db $e8, $10, $06, $00
- db $e8, $18, $07, $00
- db $f0, $e8, $11, $00
- db $f0, $f0, $12, $00
- db $f0, $f8, $13, $00
- db $f0, $00, $14, $00
- db $f0, $08, $15, $00
- db $f0, $10, $16, $00
- db $f0, $18, $17, $00
- db $f8, $e0, $20, $00
- db $f8, $e8, $21, $00
- db $f8, $f0, $22, $00
- db $f8, $f8, $23, $00
- db $f8, $00, $24, $00
- db $f8, $08, $25, $00
- db $f8, $10, $26, $00
- db $f8, $18, $27, $00
- db $00, $e0, $30, $00
- db $00, $e8, $31, $00
- db $00, $f0, $32, $00
- db $00, $f8, $33, $00
- db $00, $00, $34, $00
- db $00, $08, $35, $00
- db $00, $10, $36, $00
- db $08, $e0, $40, $00
- db $08, $e8, $41, $00
- db $08, $f0, $42, $00
- db $08, $f8, $43, $00
- db $08, $00, $44, $00
- db $08, $08, $45, $00
- db $08, $10, $46, $00
- db $08, $18, $47, $00
- db $10, $e0, $50, $00
- db $10, $e8, $51, $00
- db $10, $18, $57, $00
-; 8e33f
-
-Unknown_8e33f: ; 8e33f
- db 28
- db $e8, $00, $04, $00
- db $e8, $08, $05, $00
- db $e8, $10, $06, $00
- db $f0, $e8, $11, $00
- db $f0, $f0, $12, $00
- db $f0, $f8, $13, $00
- db $f0, $00, $14, $00
- db $f0, $08, $15, $00
- db $f0, $10, $16, $00
- db $f8, $e8, $21, $00
- db $f8, $f0, $22, $00
- db $f8, $f8, $23, $00
- db $f8, $00, $24, $00
- db $f8, $08, $25, $00
- db $f8, $10, $26, $00
- db $00, $e0, $30, $00
- db $00, $e8, $31, $00
- db $00, $f0, $32, $00
- db $00, $f8, $33, $00
- db $00, $00, $34, $00
- db $00, $08, $35, $00
- db $08, $f0, $42, $00
- db $08, $f8, $43, $00
- db $08, $00, $44, $00
- db $08, $08, $45, $00
- db $10, $f8, $53, $00
- db $10, $00, $54, $00
- db $10, $08, $55, $00
-; 8e3b0
-
-Unknown_8e3b0: ; 8e3b0
- db 30
- db $e8, $00, $04, $00
- db $e8, $08, $05, $00
- db $f0, $e8, $11, $00
- db $f0, $f0, $12, $00
- db $f0, $f8, $13, $00
- db $f0, $00, $14, $00
- db $f0, $08, $15, $00
- db $f0, $10, $16, $00
- db $f0, $18, $17, $00
- db $f8, $e0, $20, $00
- db $f8, $e8, $21, $00
- db $f8, $f0, $22, $00
- db $f8, $f8, $23, $00
- db $f8, $00, $24, $00
- db $f8, $08, $25, $00
- db $f8, $10, $26, $00
- db $00, $e0, $30, $00
- db $00, $e8, $31, $00
- db $00, $f0, $32, $00
- db $00, $f8, $33, $00
- db $00, $00, $34, $00
- db $00, $08, $35, $00
- db $08, $f0, $42, $00
- db $08, $f8, $43, $00
- db $08, $00, $44, $00
- db $08, $08, $45, $00
- db $10, $f0, $52, $00
- db $10, $f8, $53, $00
- db $10, $00, $54, $00
- db $10, $08, $55, $00
-; 8e429
-
-Unknown_8e429: ; 8e429
- db 31
- db $f0, $e8, $11, $00
- db $f0, $f0, $12, $00
- db $f0, $f8, $13, $00
- db $f0, $00, $14, $00
- db $f0, $08, $15, $00
- db $f0, $10, $16, $00
- db $f0, $18, $17, $00
- db $f8, $e0, $20, $00
- db $f8, $e8, $21, $00
- db $f8, $f0, $22, $00
- db $f8, $f8, $23, $00
- db $f8, $00, $24, $00
- db $f8, $08, $25, $00
- db $f8, $10, $26, $00
- db $f8, $18, $27, $00
- db $00, $e0, $30, $00
- db $00, $e8, $31, $00
- db $00, $f0, $32, $00
- db $00, $f8, $33, $00
- db $00, $00, $34, $00
- db $00, $08, $35, $00
- db $00, $10, $36, $00
- db $08, $e8, $41, $00
- db $08, $f0, $42, $00
- db $08, $f8, $43, $00
- db $08, $00, $44, $00
- db $08, $08, $45, $00
- db $10, $e8, $51, $00
- db $10, $f0, $52, $00
- db $10, $00, $54, $00
- db $10, $08, $55, $00
-; 8e4a6
-
-Unknown_8e4a6: ; 8e4a6
- db 25
- db $ec, $ec, $00, $09
- db $ec, $f4, $01, $09
- db $ec, $fc, $02, $09
- db $ec, $04, $03, $09
- db $ec, $0c, $04, $09
- db $f4, $ec, $10, $09
- db $f4, $f4, $11, $09
- db $f4, $fc, $12, $09
- db $f4, $04, $13, $09
- db $f4, $0c, $14, $09
- db $fc, $ec, $20, $09
- db $fc, $f4, $21, $09
- db $fc, $fc, $22, $09
- db $fc, $04, $23, $09
- db $fc, $0c, $24, $09
- db $04, $ec, $30, $09
- db $04, $f4, $31, $09
- db $04, $fc, $32, $09
- db $04, $04, $33, $09
- db $04, $0c, $34, $09
- db $0c, $ec, $40, $09
- db $0c, $f4, $41, $09
- db $0c, $fc, $42, $09
- db $0c, $04, $43, $09
- db $0c, $0c, $44, $09
-; 8e50b
-
-Unknown_8e50b: ; 8e50b
- db 16
- db $f0, $ec, $00, $0a
- db $f0, $f4, $01, $0a
- db $f0, $fc, $02, $0a
- db $f0, $04, $03, $0a
- db $f8, $ec, $04, $0a
- db $f8, $f4, $05, $0a
- db $f8, $fc, $06, $0a
- db $f8, $04, $07, $0a
- db $00, $ec, $08, $0a
- db $00, $f4, $09, $0a
- db $00, $fc, $0a, $0a
- db $00, $04, $0b, $0a
- db $08, $ec, $0c, $0a
- db $08, $f4, $0d, $0a
- db $08, $fc, $0e, $0a
- db $08, $04, $0f, $0a
-; 8e54c
-
-Unknown_8e54c: ; 8e54c
- db 1
- db $fc, $fc, $00, $00
-; 8e551
-
-Unknown_8e551: ; 8e551
- db 3
- db $00, $f8, $00, $00
- db $f8, $f8, $01, $00
- db $f8, $00, $02, $00
-; 8e55e
-
-Unknown_8e55e: ; 8e55e
- db 7
- db $08, $f0, $00, $00
- db $00, $f0, $01, $00
- db $f8, $f0, $02, $00
- db $f8, $f8, $03, $00
- db $f0, $f8, $04, $00
- db $f0, $00, $05, $00
- db $f0, $08, $06, $00
-; 8e57b
-
-Unknown_8e57b: ; 8e57b
- db 8
- db $f8, $f0, $00, $00
- db $f8, $f8, $01, $00
- db $f8, $00, $01, $20
- db $f8, $08, $00, $20
- db $00, $f0, $00, $40
- db $00, $f8, $01, $40
- db $00, $00, $01, $60
- db $00, $08, $00, $60
-; 8e59c
-
-Unknown_8e59c: ; 8e59c
- db 12
- db $e8, $f8, $00, $00
- db $f0, $f8, $01, $00
- db $f8, $f8, $02, $00
- db $e8, $00, $00, $20
- db $f0, $00, $01, $20
- db $f8, $00, $02, $20
- db $00, $f8, $02, $40
- db $08, $f8, $01, $40
- db $10, $f8, $00, $40
- db $00, $00, $02, $60
- db $08, $00, $01, $60
- db $10, $00, $00, $60
-; 8e5cd
-
-Unknown_8e5cd: ; 8e5cd
- db 20
- db $ec, $f0, $00, $00
- db $ec, $f8, $01, $00
- db $ec, $00, $02, $00
- db $ec, $08, $03, $00
- db $f4, $f0, $04, $00
- db $f4, $f8, $05, $00
- db $f4, $00, $06, $00
- db $f4, $08, $07, $00
- db $fc, $f0, $08, $00
- db $fc, $f8, $09, $00
- db $fc, $00, $0a, $00
- db $fc, $08, $0b, $00
- db $04, $f0, $0c, $00
- db $04, $f8, $0d, $00
- db $04, $00, $0e, $00
- db $04, $08, $0f, $00
- db $0c, $f0, $10, $00
- db $0c, $f8, $11, $00
- db $0c, $00, $12, $00
- db $0c, $08, $13, $00
-; 8e61e
-
-Unknown_8e61e: ; 8e61e
- db 20
- db $00, $08, $00, $81
- db $08, $10, $00, $81
- db $10, $18, $00, $81
- db $18, $20, $00, $81
- db $20, $28, $00, $81
- db $18, $30, $00, $81
- db $10, $38, $00, $81
- db $08, $40, $00, $81
- db $00, $48, $00, $81
- db $08, $50, $00, $81
- db $10, $58, $00, $81
- db $18, $60, $00, $81
- db $20, $68, $00, $81
- db $18, $70, $00, $81
- db $10, $78, $00, $81
- db $08, $80, $00, $81
- db $00, $88, $00, $81
- db $08, $90, $00, $81
- db $10, $98, $00, $81
- db $18, $a0, $00, $81
-; 8e66f
-
-Unknown_8e66f: ; 8e66f
- db 4
- db $f8, $f8, $00, $02
- db $f8, $00, $01, $02
- db $00, $f8, $02, $02
- db $00, $00, $03, $02
-; 8e680
-
-Unknown_8e680: ; 8e680
- db 9
- db $f0, $f4, $00, $01
- db $f0, $fc, $01, $01
- db $f0, $04, $02, $01
- db $f8, $f4, $10, $01
- db $f8, $fc, $11, $01
- db $f8, $04, $12, $01
- db $00, $f4, $20, $01
- db $00, $fc, $21, $01
- db $00, $04, $22, $01
-; 8e6a5
-
-Unknown_8e6a5: ; 8e6a5
- db 24
- db $d8, $f4, $00, $01
- db $d8, $fc, $01, $01
- db $d8, $04, $02, $01
- db $d8, $0c, $03, $01
- db $e0, $f4, $10, $01
- db $e0, $fc, $11, $01
- db $e0, $04, $12, $01
- db $e0, $0c, $13, $01
- db $e8, $f4, $20, $01
- db $e8, $fc, $21, $01
- db $e8, $04, $22, $01
- db $e8, $0c, $23, $01
- db $f0, $f4, $30, $01
- db $f0, $fc, $31, $01
- db $f0, $04, $32, $01
- db $f0, $0c, $33, $01
- db $f8, $f4, $40, $01
- db $f8, $fc, $41, $01
- db $f8, $04, $42, $01
- db $f8, $0c, $43, $01
- db $00, $f4, $50, $01
- db $00, $fc, $51, $01
- db $00, $04, $52, $01
- db $00, $0c, $53, $01
-; 8e706
-Unknown_8e706: ; Broken 2bpp pointers
- dbbw $80, $01, $672a ; 128-tile 2bpp at 1:672a (inside Multiply)
- dbbw $80, $01, $672a
- dbbw $80, $01, $672a
- dbbw $80, $01, $672a
- dbbw $10, $37, $672a ; 16-tile 2bpp at 37:672a (within Tileset11GFX)
- dbbw $10, $11, $672a ; 16-tile 2bpp at 11:672a (empty data)
- dbbw $10, $39, $672a ; 16-tile 2bpp at 39:672a (empty data)
- 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
+Sprites_Cosine: ; 8e72a
add $10
-Function8e72c: ; 8e72c
+Sprites_Sine: ; 8e72c
+; floor(d * sin(a * pi/32))
and $3f
cp $20
- jr nc, .asm_8e737
- call Function8e741
+ jr nc, .negative
+ call .ApplySineWave
ld a, h
ret
-.asm_8e737
+.negative
and $1f
- call Function8e741
+ call .ApplySineWave
ld a, h
xor $ff ; cpl
inc a
ret
; 8e741
-Function8e741: ; 8e741
+.ApplySineWave: ; 8e741
ld e, a
ld a, d
ld d, 0
- ld hl, Unknown_8e75d
+ ld hl, .sinewave
rept 2
add hl, de
endr
@@ -2870,91 +642,95 @@ endr
inc hl
ld d, [hl]
ld hl, 0
-.asm_8e750
+.multiply
srl a
- jr nc, .asm_8e755
+ jr nc, .even
add hl, de
-.asm_8e755
+.even
sla e
rl d
and a
- jr nz, .asm_8e750
+ jr nz, .multiply
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
+ ld c, 8
+ ld d, 0
+.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
dec c
ld a, c
+; multiply by 8
sla a
sla a
sla a
push af
+
push de
push hl
- call Function8e72c
+ call Sprites_Sine
pop hl
pop de
- add $68
+ add 13 * 8
ld [hli], a
+
pop af
push de
push hl
- call Function8e72a
+ call Sprites_Cosine
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
+ClearSpriteAnims2: ; 8e814
push hl
push de
push bc
@@ -2974,451 +750,3 @@ ClearSpriteAnims: ; 8e814
pop hl
ret
; 8e82b
-
-Function8e82b: ; 8e82b
- ld a, e
- call ReadMonMenuIcon
- ld l, a
- ld h, 0
- add hl, hl
- ld de, IconPointers
- add hl, de
- ld a, [hli]
- ld e, a
- ld d, [hl]
- ld b, BANK(Icons)
- ld c, 8
- ret
-; 8e83f
-
-Function8e83f: ; 8e83f
- push hl
- push de
- push bc
- call Function8e849
- pop bc
- pop de
- pop hl
- ret
-; 8e849
-
-Function8e849: ; 8e849
- ld d, 0
- ld hl, Jumptable_8e854
-rept 2
- add hl, de
-endr
- ld a, [hli]
- ld h, [hl]
- ld l, a
- jp [hl]
-; 8e854
-
-
-Jumptable_8e854: ; 8e854 (23:6854)
- dw Function8e8d5
- dw Function8e961
- dw Function8e97d
- dw Function8e99a
- dw Function8e898
- dw Function8e8b1
- dw Function8e862
-
-
-Function8e862: ; 8e862 (23:6862)
- call Function8e908
- call Function8e86c
- call Function8e936
- ret
-
-Function8e86c: ; 8e86c (23:686c)
- push bc
- ld a, [hObjectStructIndexBuffer]
- ld hl, PartyMon1Item
- ld bc, PARTYMON_STRUCT_LENGTH
- call AddNTimes
- pop bc
- ld a, [hl]
- and a
- jr z, .asm_8e890
- push hl
- push bc
- ld d, a
- callab ItemIsMail
- pop bc
- pop hl
- jr c, .asm_8e88e
- ld a, $6
- jr .asm_8e892
-.asm_8e88e
- ld a, $5
-.asm_8e890
- ld a, $4
-.asm_8e892
- ld hl, $1
- add hl, bc
- ld [hl], a
- ret
-
-Function8e898: ; 8e898 (23:6898)
- call Function8e8d5
- ld hl, $2
- add hl, bc
- ld a, $0
- ld [hl], a
- ld hl, $4
- add hl, bc
- ld a, $48
- ld [hl], a
- ld hl, $5
- add hl, bc
- ld a, $48
- ld [hl], a
- ret
-
-Function8e8b1: ; 8e8b1 (23:68b1)
- call Function8e908
- call Function8e936
- ld hl, $2
- add hl, bc
- ld a, $0
- ld [hl], a
- ld hl, $4
- add hl, bc
- ld a, $18
- ld [hl], a
- ld hl, $5
- add hl, bc
- ld a, $60
- ld [hl], a
- ld a, c
- ld [wc608], a
- ld a, b
- ld [wc608 + 1], a
- ret
-
-Function8e8d5: ; 8e8d5 (23:68d5)
- call Function8e908
- call Function8e8df
- call Function8e936
- ret
-
-Function8e8df: ; 8e8df (23:68df)
- push bc
- ld a, [hObjectStructIndexBuffer]
- ld hl, PartyMon1Item
- ld bc, $30
- call AddNTimes
- pop bc
- ld a, [hl]
- and a
- ret z
- push hl
- push bc
- ld d, a
- callab ItemIsMail
- pop bc
- pop hl
- jr c, .asm_8e900
- ld a, $3
- jr .asm_8e902
-.asm_8e900
- ld a, $2
-.asm_8e902
- ld hl, $1
- add hl, bc
- ld [hl], a
- ret
-
-Function8e908: ; 8e908 (23:6908)
- ld a, [wc3b7]
- push af
- ld a, [hObjectStructIndexBuffer]
- ld hl, PartySpecies
- ld e, a
- ld d, $0
- add hl, de
- ld a, [hl]
- call ReadMonMenuIcon
- ld [CurIcon], a
- call Function8e9db
- ld a, [hObjectStructIndexBuffer]
-; y coord
-rept 4
- add a
-endr
- add $1c
- ld d, a
-; x coord
- ld e, $10
-; type is partymon icon
- ld a, SPRITE_ANIM_INDEX_00
- call InitSpriteAnimStruct
- pop af
- ld hl, $3
- add hl, bc
- ld [hl], a
- ret
-
-Function8e936: ; 8e936 (23:6936)
- push bc
- ld a, [hObjectStructIndexBuffer]
- ld b, a
- call Function8e94c
- ld a, b
- pop bc
- ld hl, $9
- add hl, bc
- ld [hl], a
- rlca
- rlca
- ld hl, $d
- add hl, bc
- ld [hl], a
- ret
-
-Function8e94c: ; 8e94c (23:694c)
- callba PlacePartymonHPBar
- call GetHPPal
- ld e, d
- ld d, 0
- ld hl, Unknown_8e95e
- add hl, de
- ld b, [hl]
- ret
-; 8e95e (23:695e)
-
-Unknown_8e95e: ; 8e95e
- db $00, $40, $80
-; 8e961
-
-Function8e961: ; 8e961 (23:6961)
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- xor a
- call GetIconGFX
- lb de, $24, $20
- ld a, SPRITE_ANIM_INDEX_00
- call InitSpriteAnimStruct
- ld hl, $2
- add hl, bc
- ld [hl], $0
- ret
-
-Function8e97d: ; 8e97d (23:697d)
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- xor a
- call GetIconGFX
- ld d, $1a
- ld e, $24
- ld a, SPRITE_ANIM_INDEX_00
- call InitSpriteAnimStruct
- ld hl, $2
- add hl, bc
- ld [hl], $0
- ret
-
-Function8e99a: ; 8e99a (23:699a)
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- ld a, $62
- ld [wc3b7], a
- call Function8e9db
- ret
-
-GetSpeciesIcon: ; 8e9ac
-; Load species icon into VRAM at tile a
- push de
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- pop de
- ld a, e
- call GetIconGFX
- ret
-; 8e9bc
-
-
-Function8e9bc: ; 8e9bc (23:69bc)
- push de
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- pop de
- ld a, e
- call GetIcon_a
- ret
-; 8e9cc (23:69cc)
-
-Function8e9cc: ; 8e9cc
- push de
- ld a, [wd265]
- call ReadMonMenuIcon
- ld [CurIcon], a
- pop de
- call GetIcon_de
- ret
-; 8e9db
-
-Function8e9db: ; 8e9db (23:69db)
- ld a, [wc3b7]
-
-GetIconGFX: ; 8e9de
- call GetIcon_a
- ld de, $80 ; 8 tiles
- add hl, de
- ld de, HeldItemIcons
- lb bc, BANK(HeldItemIcons), 2
- call GetGFXUnlessMobile
- ld a, [wc3b7]
- add 10
- ld [wc3b7], a
- ret
-
-HeldItemIcons:
-INCBIN "gfx/icon/mail.2bpp"
-INCBIN "gfx/icon/item.2bpp"
-; 8ea17
-
-GetIcon_de: ; 8ea17
-; Load icon graphics into VRAM starting from tile de.
- ld l, e
- ld h, d
- jr GetIcon
-
-GetIcon_a: ; 8ea1b
-; Load icon graphics into VRAM starting from tile a.
- ld l, a
- ld h, 0
-
-GetIcon: ; 8ea1e
-; Load icon graphics into VRAM starting from tile hl.
-
-; One tile is 16 bytes long.
-rept 4
- add hl, hl
-endr
-
- ld de, VTiles0
- add hl, de
- push hl
-
-; The icons are contiguous, in order and of the same
-; size, so the pointer table is somewhat redundant.
- ld a, [CurIcon]
- push hl
- ld l, a
- ld h, 0
- add hl, hl
- ld de, IconPointers
- add hl, de
- ld a, [hli]
- ld e, a
- ld d, [hl]
- pop hl
-
- lb bc, BANK(Icons), 8
- call GetGFXUnlessMobile
-
- pop hl
- ret
-; 8ea3f
-
-GetGFXUnlessMobile: ; 8ea3f
- ld a, [wLinkMode]
- cp LINK_MOBILE
- jp nz, Request2bpp
- jp Get2bpp_2
-; 8ea4a
-
-Function8ea4a: ; 8ea4a
- ld hl, wSpriteAnimationStructs
- ld e, $6
- ld a, [MenuSelection2]
- ld d, a
-.loop
- ld a, [hl]
- and a
- jr z, .next
- cp d
- jr z, .loadwithtwo
- ld a, $0
- jr .ok
-
-.loadwithtwo
- ld a, $2
-
-.ok
- 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, .loop
- ret
-; 8ea71
-
-Function8ea71: ; 8ea71
- ld hl, wSpriteAnimationStructs
- ld e, $6
-.loop
- ld a, [hl]
- and a
- jr z, .zero
- push hl
- ld c, l
- ld b, h
- ld hl, $2
- add hl, bc
- ld [hl], $1
- pop hl
-.zero
- ld bc, $10
- add hl, bc
- dec e
- jr nz, .loop
- ret
-; 8ea8c (23:6a8c)
-
-Function8ea8c: ; 8ea8c
- ld hl, wSpriteAnimationStructs
- ld e, $6
- ld a, [wd0e3]
- ld d, a
-.asm_8ea95
- ld a, [hl]
- and a
- jr z, .asm_8eaab
- cp d
- jr z, .asm_8eaa0
- ld a, $3
- jr .asm_8eaa2
-.asm_8eaa0
- ld a, $2
-.asm_8eaa2
- push hl
- ld c, l
- ld b, h
- ld hl, $2
- add hl, bc
- ld [hl], a
- pop hl
-.asm_8eaab
- ld bc, $10
- add hl, bc
- dec e
- jr nz, .asm_8ea95
- ret
-
-INCLUDE "menu/mon_icons.asm"
diff --git a/engine/startmenu.asm b/engine/startmenu.asm
index a40aa734e..9127611ff 100755
--- a/engine/startmenu.asm
+++ b/engine/startmenu.asm
@@ -1,6 +1,6 @@
StartMenu:: ; 125cd
- call ResetTextRelatedRAM
+ call ClearWindowData
ld de, SFX_MENU
call PlaySFX
@@ -42,7 +42,7 @@ StartMenu:: ; 125cd
ld a, [wMenuCursorBuffer]
ld [wd0d2], a
call PlayClickSFX
- call Function1bee
+ call PlaceHollowCursor
call .OpenMenu
; Menu items have different return functions.
@@ -61,8 +61,8 @@ endr
.MenuReturns
dw .Reopen
dw .Exit
- dw .ExitMenuCallFuncLoadMoveSprites
- dw .ExitMenuRunScriptLoadMoveSprites
+ dw .ExitMenuCallFuncCloseText
+ dw .ExitMenuRunScriptCloseText
dw .ExitMenuRunScript
dw .ReturnEnd
dw .ReturnRedraw
@@ -78,7 +78,7 @@ endr
.ReturnEnd
call ExitMenu
.ReturnEnd2
- call LoadMoveSprites
+ call CloseText
call UpdateTimePals
ret
@@ -93,7 +93,7 @@ endr
.loop
call .PrintMenuAccount
call Function1f1a
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
cp B_BUTTON
jr z, .b
cp A_BUTTON
@@ -115,14 +115,14 @@ endr
ret
; 12699
-.ExitMenuRunScriptLoadMoveSprites ; 12699
+.ExitMenuRunScriptCloseText ; 12699
call ExitMenu
ld a, HMENURETURN_SCRIPT
ld [hMenuReturn], a
jr .ReturnEnd2
; 126a2
-.ExitMenuCallFuncLoadMoveSprites ; 126a2
+.ExitMenuCallFuncCloseText ; 126a2
call ExitMenu
ld hl, wQueuedScriptAddr
ld a, [hli]
@@ -141,12 +141,12 @@ endr
.Clear ; 126b7
call ClearBGPalettes
call Call_ExitMenu
- call Function2bae
+ call ReloadTilesetAndPalettes
call .DrawMenuAccount_
call MenuFunc_1e7f
call .DrawBugContestStatus
call UpdateSprites
- call Functiond90
+ call ret_d90
call Function2b5c
ret
; 126d3
@@ -270,7 +270,7 @@ endr
.GetMenuAccountTextPointer ; 12819
ld e, a
ld d, 0
- ld hl, wcf97
+ ld hl, wMenuData2PointerTableAddr
ld a, [hli]
ld h, [hl]
ld l, a
@@ -283,7 +283,7 @@ endr
.SetUpMenuItems ; 12829
xor a
- ld [wcf76], a
+ ld [wWhichIndexSet], a
call .FillMenuList
ld hl, StatusFlags
@@ -469,7 +469,7 @@ StartMenu_Status: ; 12928
call FadeToMenu
callba TrainerCard
- call ReturnToCallingMenu
+ call CloseSubmenu
ld a, 0
ret
; 12937
@@ -483,7 +483,7 @@ StartMenu_Pokedex: ; 12937
call FadeToMenu
callba Pokedex
- call ReturnToCallingMenu
+ call CloseSubmenu
.asm_12949
ld a, 0
@@ -495,7 +495,7 @@ StartMenu_Pokegear: ; 1294c
call FadeToMenu
callba PokeGear
- call ReturnToCallingMenu
+ call CloseSubmenu
ld a, 0
ret
; 1295b
@@ -508,7 +508,7 @@ StartMenu_Pack: ; 1295b
ld a, [wcf66]
and a
jr nz, .used_item
- call ReturnToCallingMenu
+ call CloseSubmenu
ld a, 0
ret
@@ -557,7 +557,7 @@ StartMenu_Pokemon: ; 12976
jr z, .quit
.return
- call ReturnToCallingMenu
+ call CloseSubmenu
ld a, 0
ret
@@ -602,7 +602,7 @@ Function129f4: ; 129f4
jr nz, .asm_12a3f
ld hl, UnknownText_0x12a45
call MenuTextBox
- callba Function24fbf
+ callba SelectQuantityToToss
push af
call WriteBackup
call ExitMenu
@@ -685,7 +685,7 @@ PartyMonItemName: ; 12a6c
CancelPokemonAction: ; 12a79
callba InitPartyMenuWithCancel
- callba Function8ea71
+ callba UnfreezeMonIcons
ld a, 1
ret
; 12a88
@@ -748,7 +748,7 @@ SwitchPartyMons: ; 12aec
inc a
ld [wSwitchMon], a
- callba Function8ea8c
+ callba HoldSwitchmonIcon
callba InitPartyMenuNoCancel
ld a, 4
@@ -795,49 +795,49 @@ GiveTakePartyMonItem: ; 12b60
; Eggs can't hold items!
ld a, [CurPartySpecies]
cp EGG
- jr z, .asm_12ba6
+ jr z, .cancel
ld hl, GiveTakeItemMenuData
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
- jr c, .asm_12ba6
+ jr c, .cancel
call GetCurNick
ld hl, StringBuffer1
- ld de, wd050
- ld bc, $b
+ ld de, wMonOrItemNameBuffer
+ ld bc, PKMN_NAME_LENGTH
call CopyBytes
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp 1
- jr nz, .asm_12ba0
+ jr nz, .take
call LoadStandardMenuDataHeader
call ClearPalettes
- call Function12ba9
+ call .GiveItem
call ClearPalettes
call LoadFontsBattleExtra
call ExitMenu
ld a, 0
ret
-.asm_12ba0
+.take
call TakePartyItem
ld a, 3
ret
-.asm_12ba6
+.cancel
ld a, 3
ret
; 12ba9
-Function12ba9: ; 12ba9
+.GiveItem: ; 12ba9
- callba Function106a5
+ callba DepositSellInitPackBuffers
.loop
- callba Function106be
+ callba DepositSellPack
ld a, [wcf66]
and a
@@ -852,7 +852,7 @@ Function12ba9: ; 12ba9
and a
jr nz, .next
- call Function12bd9
+ call TryGiveItemToPartymon
jr .quit
.next
@@ -865,41 +865,41 @@ Function12ba9: ; 12ba9
; 12bd9
-Function12bd9: ; 12bd9
+TryGiveItemToPartymon: ; 12bd9
call SpeechTextBox
call PartyMonItemName
call GetPartyItemLocation
ld a, [hl]
and a
- jr z, .asm_12bf4
+ jr z, .give_item_to_mon
push hl
ld d, a
callba ItemIsMail
pop hl
- jr c, .asm_12c01
+ jr c, .please_remove_mail
ld a, [hl]
- jr .asm_12c08
+ jr .already_holding_item
-.asm_12bf4
+.give_item_to_mon
call GiveItemToPokemon
ld hl, MadeHoldText
call MenuTextBoxBackup
call GivePartyItem
ret
-.asm_12c01
+.please_remove_mail
ld hl, PleaseRemoveMailText
call MenuTextBoxBackup
ret
-.asm_12c08
+.already_holding_item
ld [wd265], a
call GetItemName
ld hl, SwitchAlreadyHoldingText
call StartMenuYesNo
- jr c, .asm_12c4b
+ jr c, .abort
call GiveItemToPokemon
ld a, [wd265]
@@ -909,7 +909,7 @@ Function12bd9: ; 12bd9
pop af
ld [CurItem], a
call ReceiveItemFromPokemon
- jr nc, .asm_12c3c
+ jr nc, .bag_full
ld hl, TookAndMadeHoldText
call MenuTextBoxBackup
@@ -918,14 +918,14 @@ Function12bd9: ; 12bd9
call GivePartyItem
ret
-.asm_12c3c
+.bag_full
ld a, [wd265]
ld [CurItem], a
call ReceiveItemFromPokemon
ld hl, ItemStorageIsFullText
call MenuTextBoxBackup
-.asm_12c4b
+.abort
ret
; 12c4c
@@ -1109,12 +1109,12 @@ MonMailAction: ; 12d45
; Show the READ/TAKE/QUIT menu.
ld hl, .MenuDataHeader
call LoadMenuDataHeader
- call InterpretMenu2
+ call VerticalMenu
call ExitMenu
; Interpret the menu.
jp c, .done
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
cp $1
jr z, .read
cp $2
@@ -1280,7 +1280,7 @@ MonMenu_Fly: ; 12e30
; 12e55
MonMenu_Flash: ; 12e55
- callba Functionc8ac
+ callba OWFlash
ld a, [wFieldMoveSucceeded]
cp $1
jr nz, .Fail
@@ -1457,13 +1457,13 @@ MonMenu_SweetScent: ; 12f50
ret
; 12f5b
-Function12f5b: ; 12f5b
+ChooseMoveToDelete: ; 12f5b
ld hl, Options
ld a, [hl]
push af
set NO_TEXT_SCROLL, [hl]
call LoadFontsBattleExtra
- call Function12f73
+ call .asm_12f73
pop bc
ld a, b
ld [Options], a
@@ -1473,40 +1473,40 @@ Function12f5b: ; 12f5b
ret
; 12f73
-Function12f73: ; 12f73
+.asm_12f73: ; 12f73
call SetUpMoveScreenBG
- ld de, Unknown_12fb2
- call InitMenu3
- call Function131ef
- ld hl, wcfa5
+ ld de, DeleteMoveScreenAttrs
+ call SetMenuAttributes
+ call SetUpMoveList
+ ld hl, w2DMenuFlags1
set 6, [hl]
- jr Function12f93
+ jr .asm_12f93
-Function12f86: ; 12f86
- call Function1bd3
+.asm_12f86: ; 12f86
+ call ScrollingMenuJoypad
bit 1, a
- jp nz, Function12f9f
+ jp nz, .asm_12f9f
bit 0, a
- jp nz, Function12f9c
+ jp nz, .asm_12f9c
-Function12f93: ; 12f93
+.asm_12f93: ; 12f93
call PrepareToPlaceMoveData
call PlaceMoveData
- jp Function12f86
+ jp .asm_12f86
; 12f9c
-Function12f9c: ; 12f9c
+.asm_12f9c: ; 12f9c
and a
- jr Function12fa0
+ jr .asm_12fa0
-Function12f9f: ; 12f9f
+.asm_12f9f: ; 12f9f
scf
-Function12fa0: ; 12fa0
+.asm_12fa0: ; 12fa0
push af
xor a
ld [wSwitchMon], a
- ld hl, wcfa5
+ ld hl, w2DMenuFlags1
res 6, [hl]
call ClearSprites
call ClearTileMap
@@ -1514,8 +1514,12 @@ Function12fa0: ; 12fa0
ret
; 12fb2
-Unknown_12fb2: ; 12fb2
- db $03, $01, $03, $01, $40, $00, $20, $c3
+DeleteMoveScreenAttrs: ; 12fb2
+ db 3, 1
+ db 3, 1
+ db $40, $00
+ dn 2, 0
+ db D_UP | D_DOWN | A_BUTTON | B_BUTTON
; 12fba
ManagePokemonMoves: ; 12fba
@@ -1539,19 +1543,19 @@ ManagePokemonMoves: ; 12fba
MoveScreenLoop: ; 12fd5
ld a, [CurPartyMon]
inc a
- ld [wd0d8], a
+ ld [wPartyMenuCursor], a
call SetUpMoveScreenBG
call Function132d3
- ld de, Unknown_13163
- call InitMenu3
+ ld de, MoveScreenAttributes
+ call SetMenuAttributes
.loop
- call Function131ef
- ld hl, wcfa5
+ call SetUpMoveList
+ ld hl, w2DMenuFlags1
set 6, [hl]
jr .skip_joy
.joy_loop
- call Function1bd3
+ call ScrollingMenuJoypad
bit 1, a
jp nz, .b_button
bit 0, a
@@ -1589,7 +1593,7 @@ MoveScreenLoop: ; 12fd5
jp z, .exit
ld a, [wMoveSwapBuffer]
- ld [MenuSelection2], a
+ ld [wMenuCursorY], a
xor a
ld [wMoveSwapBuffer], a
hlcoord 1, 2
@@ -1669,9 +1673,9 @@ MoveScreenLoop: ; 12fd5
ld a, [wMoveSwapBuffer]
and a
jr nz, .place_move
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
ld [wMoveSwapBuffer], a
- call Function1bee
+ call PlaceHollowCursor
jp .moving_move
.place_move
@@ -1716,7 +1720,7 @@ MoveScreenLoop: ; 12fd5
.copy_move: ; 1313a
push hl
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld c, a
ld b, $0
@@ -1740,14 +1744,18 @@ MoveScreenLoop: ; 12fd5
.exit: ; 13154
xor a
ld [wMoveSwapBuffer], a
- ld hl, wcfa5
+ ld hl, w2DMenuFlags1
res 6, [hl]
call ClearSprites
jp ClearTileMap
; 13163
-Unknown_13163: ; 13163
- db $03, $01, $03, $01, $40, $00, $20, $f3
+MoveScreenAttributes: ; 13163
+ db 3, 1
+ db 3, 1
+ db $40, $00
+ dn 2, 0
+ db D_UP | D_DOWN | D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON
; 1316b
String_1316b: ; 1316b
@@ -1761,7 +1769,7 @@ SetUpMoveScreenBG: ; 13172
xor a
ld [hBGMapMode], a
callba Functionfb571
- callba ClearSpriteAnims
+ callba ClearSpriteAnims2
ld a, [CurPartyMon]
ld e, a
ld d, $0
@@ -1802,7 +1810,7 @@ SetUpMoveScreenBG: ; 13172
jp ClearBox
; 131ef
-Function131ef: ; 131ef
+SetUpMoveList: ; 131ef
xor a
ld [hBGMapMode], a
ld [wMoveSwapBuffer], a
@@ -1817,12 +1825,12 @@ Function131ef: ; 131ef
hlcoord 2, 3
predef ListMoves
hlcoord 10, 4
- predef Function50c50
+ predef ListMovePP
call WaitBGMap
call SetPalettes
- ld a, [wd0eb]
+ ld a, [wNumMoves]
inc a
- ld [wcfa3], a
+ ld [w2DMenuNumRows], a
hlcoord 0, 11
ld b, 5
ld c, 18
@@ -1834,7 +1842,7 @@ PrepareToPlaceMoveData: ; 13235
ld bc, PARTYMON_STRUCT_LENGTH
ld a, [CurPartyMon]
call AddNTimes
- ld a, [MenuSelection2]
+ ld a, [wMenuCursorY]
dec a
ld c, a
ld b, $0
diff --git a/engine/stats_screen.asm b/engine/stats_screen.asm
index 766e05fe7..302f29ba4 100755
--- a/engine/stats_screen.asm
+++ b/engine/stats_screen.asm
@@ -1,4 +1,4 @@
-Function4dc7b: ; 4dc7b (13:5c7b)
+BattleStatsScreenInit: ; 4dc7b (13:5c7b)
ld a, [wLinkMode]
cp LINK_MOBILE
jr nz, StatsScreenInit
@@ -6,13 +6,13 @@ Function4dc7b: ; 4dc7b (13:5c7b)
ld a, [wBattleMode] ; wd22d (aliases: EnemyMonEnd)
and a
jr z, StatsScreenInit
- jr Function4dc8f
+ jr _BattleStatsScreenInit
StatsScreenInit: ; 4dc8a
ld hl, StatsScreenMain
jr StatsScreenInit_gotaddress
-Function4dc8f: ; 4dc8f
+_BattleStatsScreenInit: ; 4dc8f
ld hl, StatsScreenBattle
jr StatsScreenInit_gotaddress
@@ -21,7 +21,7 @@ StatsScreenInit_gotaddress: ; 4dc94
push af
xor a
ld [hMapAnims], a ; disable overworld tile animations
- ld a, [wc2c6] ; whether sprite is to be mirrorred
+ ld a, [wBoxAlignment] ; whether sprite is to be mirrorred
push af
ld a, [wJumptableIndex]
ld b, a
@@ -46,7 +46,7 @@ StatsScreenInit_gotaddress: ; 4dc94
ld a, c
ld [wcf64], a
pop af
- ld [wc2c6], a
+ ld [wBoxAlignment], a
pop af
ld [hMapAnims], a
ret
@@ -66,7 +66,7 @@ StatsScreenMain: ; 0x4dcd2
and $7f
ld hl, StatsScreenPointerTable
rst JumpTable
- call Function4dd3a ; check for keys?
+ call StatsScreen_WaitAnim ; check for keys?
ld a, [wJumptableIndex]
bit 7, a
jr z, .loop
@@ -88,7 +88,7 @@ StatsScreenBattle: ; 4dcf7
and $7f
ld hl, StatsScreenPointerTable
rst JumpTable
- call Function4dd3a
+ call StatsScreen_WaitAnim
callba Function100dfd
jr c, .exit
ld a, [wJumptableIndex]
@@ -100,44 +100,46 @@ StatsScreenBattle: ; 4dcf7
; 4dd2a
StatsScreenPointerTable: ; 4dd2a
- dw MonStatsInit ; regular pokémon
- dw EggStatsInit ; egg
- dw StatsScreenWaitCry
- dw Function4ddac
- dw Function4ddc6
- dw StatsScreenWaitCry
- dw Function4ddd6
- dw Function4dd6c
+ jumptable_start
+ jumptable MonStatsInit ; regular pokémon
+ jumptable EggStatsInit ; egg
+ jumptable StatsScreenWaitCry
+ jumptable EggStatsJoypad
+ jumptable StatsScreen_LoadPage
+ jumptable StatsScreenWaitCry
+ jumptable MonStatsJoypad
+ jumptable StatsScreen_Exit
; 4dd3a
-Function4dd3a: ; 4dd3a (13:5d3a)
+StatsScreen_WaitAnim: ; 4dd3a (13:5d3a)
ld hl, wcf64
bit 6, [hl]
- jr nz, .asm_4dd49
+ jr nz, .try_anim
bit 5, [hl]
- jr nz, .asm_4dd56
+ jr nz, .finish
call DelayFrame
ret
-.asm_4dd49
- callba Functiond00b4
- jr nc, .asm_4dd56
+
+.try_anim
+ callba SetUpPokeAnim
+ jr nc, .finish
ld hl, wcf64
res 6, [hl]
-.asm_4dd56
+.finish
ld hl, wcf64
res 5, [hl]
callba Function10402d
ret
-Function4dd62: ; 4dd62 (13:5d62)
+StatsScreen_SetJumptableIndex: ; 4dd62 (13:5d62)
ld a, [wJumptableIndex]
and $80
or h
ld [wJumptableIndex], a
ret
-Function4dd6c: ; 4dd6c (13:5d6c)
+StatsScreen_Exit: ; 4dd6c (13:5d6c)
ld hl, wJumptableIndex
set 7, [hl]
ret
@@ -148,19 +150,20 @@ MonStatsInit: ; 4dd72 (13:5d72)
call ClearBGPalettes
call ClearTileMap
callba Function10402d
- call Function4ddf2
+ call StatsScreen_CopyToTempMon
ld a, [CurPartySpecies]
cp EGG
- jr z, .asm_4dd9b
- call Function4deea
+ jr z, .egg
+ call StatsScreen_InitUpperHalf
ld hl, wcf64
set 4, [hl]
- ld h, $4
- call Function4dd62
+ ld h, StatsScreen_LoadPageTableIndex
+ call StatsScreen_SetJumptableIndex
ret
-.asm_4dd9b
- ld h, $1
- call Function4dd62
+
+.egg
+ ld h, EggStatsInitTableIndex
+ call StatsScreen_SetJumptableIndex
ret
EggStatsInit: ; 4dda1
@@ -172,24 +175,26 @@ EggStatsInit: ; 4dda1
; 0x4ddac
-Function4ddac: ; 4ddac (13:5dac)
- call Function4de2c
- jr nc, .asm_4ddb7
- ld h, $0
- call Function4dd62
+EggStatsJoypad: ; 4ddac (13:5dac)
+ call StatsScreen_GetJoypad
+ jr nc, .check
+ ld h, MonStatsInitTableIndex
+ call StatsScreen_SetJumptableIndex
ret
-.asm_4ddb7
- bit 0, a
- jr nz, .asm_4ddc0
- and $c3
- jp Function4de54
-.asm_4ddc0
- ld h, $7
- call Function4dd62
+
+.check
+ bit A_BUTTON_F, a
+ jr nz, .quit
+ and D_DOWN | D_UP | A_BUTTON | B_BUTTON
+ jp StatsScreen_JoypadAction
+
+.quit
+ ld h, StatsScreen_ExitTableIndex
+ call StatsScreen_SetJumptableIndex
ret
-Function4ddc6: ; 4ddc6 (13:5dc6)
- call Function4dfb6
+StatsScreen_LoadPage: ; 4ddc6 (13:5dc6)
+ call StatsScreen_LoadGFX
ld hl, wcf64
res 4, [hl]
ld a, [wJumptableIndex]
@@ -197,16 +202,16 @@ Function4ddc6: ; 4ddc6 (13:5dc6)
ld [wJumptableIndex], a
ret
-Function4ddd6: ; 4ddd6 (13:5dd6)
- call Function4de2c
- jr nc, .asm_4dde1
- ld h, $0
- call Function4dd62
+MonStatsJoypad: ; 4ddd6 (13:5dd6)
+ call StatsScreen_GetJoypad
+ jr nc, .next
+ ld h, MonStatsInitTableIndex
+ call StatsScreen_SetJumptableIndex
ret
-.asm_4dde1
- and $f3
- jp Function4de54
+.next
+ and D_DOWN | D_UP | D_LEFT | D_RIGHT | A_BUTTON | B_BUTTON
+ jp StatsScreen_JoypadAction
StatsScreenWaitCry: ; 4dde6 (13:5de6)
call IsSFXPlaying
@@ -216,32 +221,33 @@ StatsScreenWaitCry: ; 4dde6 (13:5de6)
ld [wJumptableIndex], a
ret
-Function4ddf2: ; 4ddf2 (13:5df2)
+StatsScreen_CopyToTempMon: ; 4ddf2 (13:5df2)
ld a, [MonType]
cp BREEDMON
- jr nz, .asm_4de10
- ld a, [wd018_Mon]
+ jr nz, .breedmon
+ ld a, [wBufferMon]
ld [CurSpecies], a
call GetBaseData
- ld hl, wd018_Mon
+ ld hl, wBufferMon
ld de, TempMon
ld bc, PARTYMON_STRUCT_LENGTH
call CopyBytes
- jr .asm_4de2a
-.asm_4de10
+ jr .done
+
+.breedmon
callba CopyPkmnToTempMon
ld a, [CurPartySpecies]
cp EGG
- jr z, .asm_4de2a
+ jr z, .done
ld a, [MonType]
cp BOXMON
- jr c, .asm_4de2a
- callba Function50890
-.asm_4de2a
+ jr c, .done
+ callba CalcTempmonStats
+.done
and a
ret
-Function4de2c: ; 4de2c (13:5e2c)
+StatsScreen_GetJoypad: ; 4de2c (13:5e2c)
call GetJoypad
ld a, [MonType]
cp BREEDMON
@@ -249,14 +255,14 @@ Function4de2c: ; 4de2c (13:5e2c)
push hl
push de
push bc
- callba Functione2f95
+ callba StatsScreenDPad
pop bc
pop de
pop hl
- ld a, [wcf73]
- and $c0
+ ld a, [wMenuJoypad]
+ and D_DOWN | D_UP
jr nz, .set_carry
- ld a, [wcf73]
+ ld a, [wMenuJoypad]
jr .clear_flags
.notbreedmon
@@ -269,100 +275,107 @@ Function4de2c: ; 4de2c (13:5e2c)
scf
ret
-Function4de54: ; 4de54 (13:5e54)
+StatsScreen_JoypadAction: ; 4de54 (13:5e54)
push af
ld a, [wcf64]
and $3
ld c, a
pop af
- bit 1, a
- jp nz, Function4dee4
- bit 5, a
- jr nz, .asm_4dec7
- bit 4, a
- jr nz, .asm_4debd
- bit 0, a
- jr nz, .asm_4deb8
- bit 6, a
- jr nz, .asm_4dea0
- bit 7, a
- jr nz, .asm_4de77
- jr .asm_4dece
-.asm_4de77
+ bit B_BUTTON_F, a
+ jp nz, .b_button
+ bit D_LEFT_F, a
+ jr nz, .d_left
+ bit D_RIGHT_F, a
+ jr nz, .d_right
+ bit A_BUTTON_F, a
+ jr nz, .a_button
+ bit D_UP_F, a
+ jr nz, .d_up
+ bit D_DOWN_F, a
+ jr nz, .d_down
+ jr .done
+
+.d_down
ld a, [MonType]
cp BOXMON
- jr nc, .asm_4dece
+ jr nc, .done
and a
ld a, [PartyCount]
- jr z, .asm_4de87
+ jr z, .next_mon
ld a, [OTPartyCount]
-.asm_4de87
+.next_mon
ld b, a
ld a, [CurPartyMon]
inc a
cp b
- jr z, .asm_4dece
+ jr z, .done
ld [CurPartyMon], a
ld b, a
ld a, [MonType]
and a
- jr nz, .asm_4dede
+ jr nz, .load_mon
ld a, b
inc a
- ld [wd0d8], a
- jr .asm_4dede
-.asm_4dea0
+ ld [wPartyMenuCursor], a
+ jr .load_mon
+
+.d_up
ld a, [CurPartyMon]
and a
- jr z, .asm_4dece
+ jr z, .done
dec a
ld [CurPartyMon], a
ld b, a
ld a, [MonType]
and a
- jr nz, .asm_4dede
+ jr nz, .load_mon
ld a, b
inc a
- ld [wd0d8], a
- jr .asm_4dede
-.asm_4deb8
+ ld [wPartyMenuCursor], a
+ jr .load_mon
+
+.a_button
ld a, c
cp $3
- jr z, Function4dee4
-.asm_4debd
+ jr z, .b_button
+.d_right
inc c
ld a, $3
cp c
- jr nc, .asm_4decf
+ jr nc, .set_page
ld c, $1
- jr .asm_4decf
-.asm_4dec7
+ jr .set_page
+
+.d_left
dec c
- jr nz, .asm_4decf
+ jr nz, .set_page
ld c, $3
- jr .asm_4decf
-.asm_4dece
+ jr .set_page
+
+.done
ret
-.asm_4decf
+
+.set_page
ld a, [wcf64]
- and $fc
+ and %11111100
or c
ld [wcf64], a
- ld h, $4
- call Function4dd62
+ ld h, StatsScreen_LoadPageTableIndex
+ call StatsScreen_SetJumptableIndex
ret
-.asm_4dede
- ld h, $0
- call Function4dd62
+
+.load_mon
+ ld h, MonStatsInitTableIndex
+ call StatsScreen_SetJumptableIndex
ret
-Function4dee4: ; 4dee4 (13:5ee4)
- ld h, $7
- call Function4dd62
+.b_button: ; 4dee4 (13:5ee4)
+ ld h, StatsScreen_ExitTableIndex
+ call StatsScreen_SetJumptableIndex
ret
-Function4deea: ; 4deea (13:5eea)
- call Function4df45
+StatsScreen_InitUpperHalf: ; 4deea (13:5eea)
+ call .PlaceHPBar
xor a
ld [hBGMapMode], a
ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo)
@@ -379,13 +392,13 @@ Function4deea: ; 4deea (13:5eea)
call PrintNum
hlcoord 14, 0
call PrintLevel
- ld hl, Unknown_4df77
- call Function4e528
- call Function4e505
+ ld hl, .NicknamePointers
+ call GetNicknamePointer
+ call CopyNickname
hlcoord 8, 2
call PlaceString
hlcoord 18, 0
- call Function4df66
+ call .PlaceGenderChar
hlcoord 9, 4
ld a, "/"
ld [hli], a
@@ -393,12 +406,12 @@ Function4deea: ; 4deea (13:5eea)
ld [wd265], a
call GetPokemonName
call PlaceString
- call Function4df8f
- call Function4df9b
- call Function4dfa6
+ call StatsScreen_PlaceHorizontalDivider
+ call StatsScreen_PlacePageSwitchArrows
+ call StatsScreen_PlaceShinyIcon
ret
-Function4df45: ; 4df45 (13:5f45)
+.PlaceHPBar: ; 4df45 (13:5f45)
ld hl, TempMonHP
ld a, [hli]
ld b, a
@@ -407,15 +420,15 @@ Function4df45: ; 4df45 (13:5f45)
ld a, [hli]
ld d, a
ld e, [hl]
- callba DrawPartyMenuHPBar
+ callba ComputeHPBarPixels
ld hl, wcda1
call SetHPPal
- ld b, SCGB_03
+ ld b, SCGB_STATS_SCREEN_HP_PALS
call GetSGBLayout
call DelayFrame
ret
-Function4df66: ; 4df66 (13:5f66)
+.PlaceGenderChar: ; 4df66 (13:5f66)
push hl
callba GetGender
pop hl
@@ -428,14 +441,15 @@ Function4df66: ; 4df66 (13:5f66)
ret
; 4df77 (13:5f77)
-Unknown_4df77: ; 4df77
+.NicknamePointers: ; 4df77
dw PartyMonNicknames
dw OTPartyMonNicknames
dw sBoxMonNicknames
- dw wd002
+ dw wBufferMonNick
; 4df7f
Function4df7f: ; 4df7f
+; unreferenced
hlcoord 7, 0
ld bc, SCREEN_WIDTH
ld d, SCREEN_HEIGHT
@@ -448,7 +462,7 @@ Function4df7f: ; 4df7f
ret
; 4df8f
-Function4df8f: ; 4df8f (13:5f8f)
+StatsScreen_PlaceHorizontalDivider: ; 4df8f (13:5f8f)
hlcoord 0, 7
ld b, SCREEN_WIDTH
ld a, "_"
@@ -458,14 +472,14 @@ Function4df8f: ; 4df8f (13:5f8f)
jr nz, .loop
ret
-Function4df9b: ; 4df9b (13:5f9b)
+StatsScreen_PlacePageSwitchArrows: ; 4df9b (13:5f9b)
hlcoord 12, 6
ld [hl], "◀"
hlcoord 19, 6
ld [hl], "▶"
ret
-Function4dfa6: ; 4dfa6 (13:5fa6)
+StatsScreen_PlaceShinyIcon: ; 4dfa6 (13:5fa6)
ld bc, TempMonDVs
callba CheckShininess
ret nc
@@ -473,126 +487,127 @@ Function4dfa6: ; 4dfa6 (13:5fa6)
ld [hl], "<SHINY>"
ret
-Function4dfb6: ; 4dfb6 (13:5fb6)
- ld a, [CurBaseData] ; wd236 (aliases: BaseDexNo)
+StatsScreen_LoadGFX: ; 4dfb6 (13:5fb6)
+ ld a, [BaseDexNo] ; wd236 (aliases: BaseDexNo)
ld [wd265], a
ld [CurSpecies], a
xor a
ld [hBGMapMode], a
- call Function4dfda
- call Function4e002
- call Function4dfed
+ call .ClearBox
+ call .PageTilemap
+ call .LoadPals
ld hl, wcf64
bit 4, [hl]
- jr nz, .asm_4dfd6
+ jr nz, .place_frontpic
call SetPalettes
ret
-.asm_4dfd6
- call Function4e226
+.place_frontpic
+ call StatsScreen_PlaceFrontpic
ret
-Function4dfda: ; 4dfda (13:5fda)
+.ClearBox: ; 4dfda (13:5fda)
ld a, [wcf64]
and $3
ld c, a
- call Function4e4cd
+ call StatsScreen_LoadPageIndicators
hlcoord 0, 8
lb bc, 10, 20
call ClearBox
ret
-Function4dfed: ; 4dfed (13:5fed)
+.LoadPals: ; 4dfed (13:5fed)
ld a, [wcf64]
and $3
ld c, a
- callba Function8c8a
+ callba LoadStatsScreenPals
call DelayFrame
ld hl, wcf64
set 5, [hl]
ret
-Function4e002: ; 4e002 (13:6002)
+.PageTilemap: ; 4e002 (13:6002)
ld a, [wcf64]
and $3
dec a
- ld hl, Jumptable_4e00d
+ ld hl, .Jumptable
rst JumpTable
ret
-Jumptable_4e00d: ; 4e00d (13:600d)
- dw Function4e013
- dw Function4e147
- dw Function4e1ae
+.Jumptable: ; 4e00d (13:600d)
+ jumptable_start
+ jumptable .PinkPage
+ jumptable .GreenPage
+ jumptable .BluePage
-Function4e013: ; 4e013 (13:6013)
+.PinkPage: ; 4e013 (13:6013)
hlcoord 0, 9
ld b, $0
predef DrawPlayerHP
hlcoord 8, 9
ld [hl], $41
- ld de, String_4e119
+ ld de, .Status_Type
hlcoord 0, 12
call PlaceString
ld a, [TempMonPokerusStatus]
ld b, a
and $f
- jr nz, .asm_4e055
+ jr nz, .HasPokerus
ld a, b
and $f0
- jr z, .asm_4e03d
+ jr z, .NotImmuneToPkrs
hlcoord 8, 8
- ld [hl], $e8
-.asm_4e03d
+ ld [hl], "."
+.NotImmuneToPkrs
ld a, [MonType]
- cp $2
- jr z, .asm_4e060
+ cp BOXMON
+ jr z, .StatusOK
hlcoord 6, 13
push hl
ld de, TempMonStatus
predef PlaceStatusString
pop hl
- jr nz, .asm_4e066
- jr .asm_4e060
-.asm_4e055
- ld de, String_4e142
+ jr nz, .done_status
+ jr .StatusOK
+.HasPokerus
+ ld de, .PkrsStr
hlcoord 1, 13
call PlaceString
- jr .asm_4e066
-.asm_4e060
- ld de, String_4e127
+ jr .done_status
+.StatusOK
+ ld de, .OK_str
call PlaceString
-.asm_4e066
+.done_status
hlcoord 1, 15
predef PrintMonTypes
hlcoord 9, 8
- ld de, $14
- ld b, $a
+ ld de, SCREEN_WIDTH
+ ld b, 10
ld a, $31
-.asm_4e078
+.vertical_divider
ld [hl], a
add hl, de
dec b
- jr nz, .asm_4e078
- ld de, String_4e12b
+ jr nz, .vertical_divider
+ ld de, .ExpPointStr
hlcoord 10, 9
call PlaceString
hlcoord 17, 14
- call Function4e0d3
+ call .PrintNextLevel
hlcoord 13, 10
lb bc, 3, 7
ld de, TempMonExp
call PrintNum
- call Function4e0e7
+ call .CalcExpToNextLevel
hlcoord 13, 13
lb bc, 3, 7
ld de, Buffer1 ; wd1ea (aliases: MagikarpLength)
call PrintNum
- ld de, String_4e136
+ ld de, .LevelUpStr
hlcoord 10, 12
call PlaceString
- ld de, String_4e13f
+ ld de, .ToStr
hlcoord 14, 14
call PlaceString
hlcoord 11, 16
@@ -606,34 +621,34 @@ Function4e013: ; 4e013 (13:6013)
ld [hl], $41
ret
-Function4e0d3: ; 4e0d3 (13:60d3)
+.PrintNextLevel: ; 4e0d3 (13:60d3)
ld a, [TempMonLevel]
push af
cp MAX_LEVEL
- jr z, .asm_4e0df
+ jr z, .AtMaxLevel
inc a
ld [TempMonLevel], a
-.asm_4e0df
+.AtMaxLevel
call PrintLevel
pop af
ld [TempMonLevel], a
ret
-Function4e0e7: ; 4e0e7 (13:60e7)
+.CalcExpToNextLevel: ; 4e0e7 (13:60e7)
ld a, [TempMonLevel]
cp MAX_LEVEL
- jr z, .asm_4e111
+ jr z, .AlreadyAtMaxLevel
inc a
ld d, a
callba CalcExpAtLevel
rept 2
ld hl, TempMonExp + 2
endr
- ld a, [$ffb6]
+ ld a, [hQuotient + 2]
sub [hl]
dec hl
- ld [wd1ec], a
- ld a, [$ffb5]
+ ld [Buffer3], a
+ ld a, [hQuotient + 1]
sbc [hl]
dec hl
ld [Buffer2], a ; wd1eb (aliases: MovementType)
@@ -641,7 +656,8 @@ endr
sbc [hl]
ld [Buffer1], a ; wd1ea (aliases: MagikarpLength)
ret
-.asm_4e111
+
+.AlreadyAtMaxLevel
ld hl, Buffer1 ; wd1ea (aliases: MagikarpLength)
xor a
rept 2
@@ -651,39 +667,39 @@ endr
ret
; 4e119 (13:6119)
-String_4e119: ; 4e119
+.Status_Type: ; 4e119
db "STATUS/"
next "TYPE/@"
; 4e127
-String_4e127: ; 4e127
+.OK_str: ; 4e127
db "OK @"
; 4e12b
-String_4e12b: ; 4e12b
+.ExpPointStr: ; 4e12b
db "EXP POINTS@"
; 4e136
-String_4e136: ; 4e136
+.LevelUpStr: ; 4e136
db "LEVEL UP@"
; 4e13f
-String_4e13f: ; 4e13f
+.ToStr: ; 4e13f
db "TO@"
; 4e142
-String_4e142: ; 4e142
+.PkrsStr: ; 4e142
db "#RUS@"
; 4e147
-Function4e147: ; 4e147 (13:6147)
- ld de, String_4e1a0
+.GreenPage: ; 4e147 (13:6147)
+ ld de, .Item
hlcoord 0, 8
call PlaceString
- call Function4e189
+ call .GetItemName
hlcoord 8, 8
call PlaceString
- ld de, String_4e1a9
+ ld de, .Move
hlcoord 0, 10
call PlaceString
ld hl, TempMonMoves
@@ -695,53 +711,53 @@ Function4e147: ; 4e147 (13:6147)
ld [Buffer1], a
predef ListMoves
hlcoord 12, 11
- ld a, $28
+ ld a, SCREEN_WIDTH * 2
ld [Buffer1], a
- predef Function50c50
+ predef ListMovePP
ret
-Function4e189: ; 4e189 (13:6189)
- ld de, String_4e1a5
+.GetItemName: ; 4e189 (13:6189)
+ ld de, .ThreeDashes
ld a, [TempMonItem]
and a
ret z
ld b, a
- callba Function28771
+ callba TimeCapsule_ReplaceTeruSama
ld a, b
ld [wd265], a
call GetItemName
ret
; 4e1a0 (13:61a0)
-String_4e1a0: ; 4e1a0
+.Item: ; 4e1a0
db "ITEM@"
; 4e1a5
-String_4e1a5: ; 4e1a5
+.ThreeDashes: ; 4e1a5
db "---@"
; 4e1a9
-String_4e1a9: ; 4e1a9
+.Move: ; 4e1a9
db "MOVE@"
; 4e1ae
-Function4e1ae: ; 4e1ae (13:61ae)
- call Function4e1cc
+.BluePage: ; 4e1ae (13:61ae)
+ call .PlaceOTInfo
hlcoord 10, 8
- ld de, $14
- ld b, $a
+ ld de, SCREEN_WIDTH
+ ld b, 10
ld a, $31
-.asm_4e1bb
+.BluePageVerticalDivider
ld [hl], a
add hl, de
dec b
- jr nz, .asm_4e1bb
+ jr nz, .BluePageVerticalDivider
hlcoord 11, 8
- ld bc, $6
+ ld bc, 6
predef PrintTempMonStats
ret
-Function4e1cc: ; 4e1cc (13:61cc)
+.PlaceOTInfo: ; 4e1cc (13:61cc)
ld de, IDNoString
hlcoord 0, 9
call PlaceString
@@ -752,101 +768,106 @@ Function4e1cc: ; 4e1cc (13:61cc)
lb bc, PRINTNUM_LEADINGZEROS | 2, 5
ld de, TempMonID
call PrintNum
- ld hl, Unknown_4e216
- call Function4e528
- call Function4e505
+ ld hl, .OTNamePointers
+ call GetNicknamePointer
+ call CopyNickname
callba CheckNickErrors
hlcoord 2, 13
call PlaceString
ld a, [TempMonCaughtGender]
and a
- jr z, .asm_4e215
+ jr z, .done
cp $7f
- jr z, .asm_4e215
+ jr z, .done
and $80
ld a, "♂"
- jr z, .asm_4e211
+ jr z, .got_gender
ld a, "♀"
-.asm_4e211
+.got_gender
hlcoord 9, 13
ld [hl], a
-.asm_4e215
+.done
ret
; 4e216 (13:6216)
-Unknown_4e216: ; 4e216
+.OTNamePointers: ; 4e216
dw PartyMonOT
dw OTPartyMonOT
dw sBoxMonOT
- dw wd00d
+ dw wBufferMonOT
; 4e21e
IDNoString: ; 4e21e
- db $73, "№.@"
+ db "<ID>№.@"
OTString: ; 4e222
db "OT/@"
; 4e226
-Function4e226: ; 4e226 (13:6226)
+StatsScreen_PlaceFrontpic: ; 4e226 (13:6226)
ld hl, TempMonDVs
predef GetUnownLetter
- call Function4e2ad
- jr c, .asm_4e238
+ call StatsScreen_GetAnimationParam
+ jr c, .egg
and a
- jr z, .asm_4e23f
- jr .asm_4e246
-.asm_4e238
- call Function4e271
+ jr z, .no_cry
+ jr .cry
+
+.egg
+ call .AnimateEgg
call SetPalettes
ret
-.asm_4e23f
- call Function4e253
+
+.no_cry
+ call .AnimateMon
call SetPalettes
ret
-.asm_4e246
+
+.cry
call SetPalettes
- call Function4e253
+ call .AnimateMon
ld a, [CurPartySpecies]
call PlayCry2
ret
-Function4e253: ; 4e253 (13:6253)
+.AnimateMon: ; 4e253 (13:6253)
ld hl, wcf64
set 5, [hl]
ld a, [CurPartySpecies]
cp UNOWN
- jr z, .asm_4e266
+ jr z, .unown
hlcoord 0, 0
call PrepMonFrontpic
ret
-.asm_4e266
+
+.unown
xor a
- ld [wc2c6], a
+ ld [wBoxAlignment], a
hlcoord 0, 0
call _PrepMonFrontpic
ret
-Function4e271: ; 4e271 (13:6271)
+.AnimateEgg: ; 4e271 (13:6271)
ld a, [CurPartySpecies]
cp UNOWN
- jr z, .asm_4e281
- ld a, $1
- ld [wc2c6], a
- call Function4e289
+ jr z, .unownegg
+ ld a, TRUE
+ ld [wBoxAlignment], a
+ call .get_animation
ret
-.asm_4e281
+
+.unownegg
xor a
- ld [wc2c6], a
- call Function4e289
+ ld [wBoxAlignment], a
+ call .get_animation
ret
-Function4e289: ; 4e289 (13:6289)
+.get_animation: ; 4e289 (13:6289)
ld a, [CurPartySpecies]
call IsAPokemon
ret c
- call Function4e307
+ call StatsScreen_LoadTextBoxSpaceGFX
ld de, VTiles2 tile $00
predef FrontpicPredef
hlcoord 0, 0
@@ -857,34 +878,34 @@ Function4e289: ; 4e289 (13:6289)
set 6, [hl]
ret
-Function4e2ad: ; 4e2ad (13:62ad)
+StatsScreen_GetAnimationParam: ; 4e2ad (13:62ad)
ld a, [MonType]
ld hl, .Jumptable
rst JumpTable
ret
.Jumptable: ; 4e2b5 (13:62b5)
- dw Function4e2bf
- dw Function4e2cf
- dw Function4e2d1
- dw Function4e2ed
- dw Function4e301
+ dw .PartyMon
+ dw .OTPartyMon
+ dw .BoxMon
+ dw .Tempmon
+ dw .Wildmon
-Function4e2bf: ; 4e2bf (13:62bf)
+.PartyMon: ; 4e2bf (13:62bf)
ld a, [CurPartyMon]
ld hl, PartyMons ; wdcdf (aliases: PartyMon1, PartyMon1Species)
ld bc, PARTYMON_STRUCT_LENGTH
call AddNTimes
ld b, h
ld c, l
- jr Function4e2f2
+ jr .CheckEggFaintedFrzSlp
-Function4e2cf: ; 4e2cf (13:62cf)
+.OTPartyMon: ; 4e2cf (13:62cf)
xor a
ret
-Function4e2d1: ; 4e2d1 (13:62d1)
+.BoxMon: ; 4e2d1 (13:62d1)
ld hl, sBoxMons
ld bc, PARTYMON_STRUCT_LENGTH
ld a, [CurPartyMon]
@@ -893,36 +914,37 @@ Function4e2d1: ; 4e2d1 (13:62d1)
ld c, l
ld a, BANK(sBoxMons)
call GetSRAMBank
- call Function4e2f2
+ call .CheckEggFaintedFrzSlp
push af
call CloseSRAM
pop af
ret
-Function4e2ed: ; 4e2ed (13:62ed)
+.Tempmon: ; 4e2ed (13:62ed)
ld bc, TempMonSpecies ; wd10e (aliases: TempMon)
- jr Function4e2f2 ; utterly pointless
+ jr .CheckEggFaintedFrzSlp ; utterly pointless
-Function4e2f2: ; 4e2f2 (13:62f2)
+.CheckEggFaintedFrzSlp: ; 4e2f2 (13:62f2)
ld a, [CurPartySpecies]
cp EGG
jr z, .egg
call CheckFaintedFrzSlp
- jr c, Function4e305
+ jr c, .FaintedFrzSlp
.egg
xor a
scf
ret
-Function4e301: ; 4e301 (13:6301)
+.Wildmon: ; 4e301 (13:6301)
ld a, $1
and a
ret
-Function4e305: ; 4e305 (13:6305)
+
+.FaintedFrzSlp: ; 4e305 (13:6305)
xor a
ret
-Function4e307: ; 4e307 (13:6307)
+StatsScreen_LoadTextBoxSpaceGFX: ; 4e307 (13:6307)
nop
push hl
push de
@@ -956,9 +978,9 @@ EggStatsScreen: ; 4e33a
ld [hBGMapMode], a
ld hl, wcda1
call SetHPPal
- ld b, SCGB_03
+ ld b, SCGB_STATS_SCREEN_HP_PALS
call GetSGBLayout
- call Function4df8f
+ call StatsScreen_PlaceHorizontalDivider
ld de, EggString
hlcoord 8, 1
call PlaceString
@@ -995,7 +1017,7 @@ EggStatsScreen: ; 4e33a
hlcoord 0, 0
call PrepMonFrontpic
callba Function10402d
- call Function4e497
+ call StatsScreen_AnimateEgg
ld a, [TempMonHappiness]
cp 6
@@ -1034,22 +1056,23 @@ EggALotMoreTimeString: ; 0x4e46e
; 0x4e497
-Function4e497: ; 4e497 (13:6497)
- call Function4e2ad
+StatsScreen_AnimateEgg: ; 4e497 (13:6497)
+ call StatsScreen_GetAnimationParam
ret nc
ld a, [TempMonHappiness]
ld e, $7
- cp $6
- jr c, .asm_4e4ab
+ cp 6
+ jr c, .animate
ld e, $8
- cp $b
- jr c, .asm_4e4ab
+ cp 11
+ jr c, .animate
ret
-.asm_4e4ab
+
+.animate
push de
ld a, $1
- ld [wc2c6], a
- call Function4e307
+ ld [wBoxAlignment], a
+ call StatsScreen_LoadTextBoxSpaceGFX
ld de, VTiles2 tile $00
predef FrontpicPredef
pop de
@@ -1060,7 +1083,7 @@ Function4e497: ; 4e497 (13:6497)
set 6, [hl]
ret
-Function4e4cd: ; 4e4cd (13:64cd)
+StatsScreen_LoadPageIndicators: ; 4e4cd (13:64cd)
hlcoord 13, 5
ld a, $36
call .load_square
@@ -1092,7 +1115,7 @@ Function4e4cd: ; 4e4cd (13:64cd)
pop bc
ret
-Function4e505: ; 4e505 (13:6505)
+CopyNickname: ; 4e505 (13:6505)
ld de, StringBuffer1
ld bc, PKMN_NAME_LENGTH
jr .okay ; uuterly pointless
@@ -1114,7 +1137,7 @@ Function4e505: ; 4e505 (13:6505)
pop de
ret
-Function4e528: ; 4e528 (13:6528)
+GetNicknamePointer: ; 4e528 (13:6528)
ld a, [MonType]
add a
ld c, a
@@ -1124,7 +1147,7 @@ Function4e528: ; 4e528 (13:6528)
ld h, [hl]
ld l, a
ld a, [MonType]
- cp $3
+ cp BREEDMON
ret z
ld a, [CurPartyMon]
jp SkipNames
diff --git a/engine/std_scripts.asm b/engine/std_scripts.asm
index 311ff00d0..b8762dfc0 100644
--- a/engine/std_scripts.asm
+++ b/engine/std_scripts.asm
@@ -55,7 +55,7 @@ StdScripts::
PokeCenterNurseScript:
; EVENT_WELCOMED_TO_POKECOM_CENTER is never set
- loadfont
+ opentext
checkmorn
iftrue .morn
checkday
@@ -68,33 +68,33 @@ PokeCenterNurseScript:
checkevent EVENT_WELCOMED_TO_POKECOM_CENTER
iftrue .morn_comcenter
farwritetext NurseMornText
- keeptextopen
+ buttonsound
jump .ok
.morn_comcenter
farwritetext PokeComNurseMornText
- keeptextopen
+ buttonsound
jump .ok
.day
checkevent EVENT_WELCOMED_TO_POKECOM_CENTER
iftrue .day_comcenter
farwritetext NurseDayText
- keeptextopen
+ buttonsound
jump .ok
.day_comcenter
farwritetext PokeComNurseDayText
- keeptextopen
+ buttonsound
jump .ok
.nite
checkevent EVENT_WELCOMED_TO_POKECOM_CENTER
iftrue .nite_comcenter
farwritetext NurseNiteText
- keeptextopen
+ buttonsound
jump .ok
.nite_comcenter
farwritetext PokeComNurseNiteText
- keeptextopen
+ buttonsound
jump .ok
.ok
@@ -138,24 +138,23 @@ PokeCenterNurseScript:
spriteface LAST_TALKED, DOWN
pause 10
+ waitbutton
closetext
- loadmovesprites
end
.pokerus
; already cleared earlier in the script
checkevent EVENT_WELCOMED_TO_POKECOM_CENTER
iftrue .pokerus_comcenter
-
farwritetext NursePokerusText
+ waitbutton
closetext
- loadmovesprites
jump .pokerus_done
.pokerus_comcenter
farwritetext PokeComNursePokerusText
+ waitbutton
closetext
- loadmovesprites
.pokerus_done
setflag ENGINE_POKERUS
@@ -181,48 +180,48 @@ MerchandiseShelfScript:
farjumptext MerchandiseShelfText
TownMapScript:
- loadfont
+ opentext
farwritetext TownMapText
- closetext
+ waitbutton
special Special_TownMap
- loadmovesprites
+ closetext
end
WindowScript:
farjumptext WindowText
TVScript:
- loadfont
+ opentext
farwritetext TVText
+ waitbutton
closetext
- loadmovesprites
end
HomepageScript:
farjumptext HomepageText
Radio1Script:
- loadfont
+ opentext
writebyte $0
special MapRadio
- loadmovesprites
+ closetext
end
Radio2Script:
; Lucky Channel
- loadfont
+ opentext
writebyte $4
special MapRadio
- loadmovesprites
+ closetext
end
TrashCanScript: ; 0xbc1a5
farjumptext TrashCanText
PCScript:
- loadfont
+ opentext
special PokemonCenterPC
- loadmovesprites
+ closetext
end
ElevatorButtonScript:
@@ -317,44 +316,44 @@ BugContestResultsScript:
clearevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
clearevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
clearevent EVENT_CONTEST_OFFICER_HAS_BERRY
- loadfont
+ opentext
farwritetext ContestResults_ReadyToJudgeText
- closetext
+ waitbutton
special BugContestJudging
RAM2MEM $0
if_equal 1, BugContestResults_FirstPlace
if_equal 2, BugContestResults_SecondPlace
if_equal 3, BugContestResults_ThirdPlace
farwritetext ContestResults_ConsolationPrizeText
- keeptextopen
- waitbutton
+ buttonsound
+ waitsfx
verbosegiveitem BERRY
iffalse BugContestResults_NoRoomForBerry
BugContestResults_DidNotWin
farwritetext ContestResults_DidNotWinText
- keeptextopen
+ buttonsound
jump BugContestResults_FinishUp
; 0xbc2b1
BugContestResults_ReturnAfterWinnersPrize ; 0xbc2b1
farwritetext ContestResults_JoinUsNextTimeText
- keeptextopen
+ buttonsound
BugContestResults_FinishUp
checkevent EVENT_LEFT_MONS_WITH_CONTEST_OFFICER
iffalse BugContestResults_DidNotLeaveMons
farwritetext ContestResults_ReturnPartyText
- closetext
+ waitbutton
special ContestReturnMons
BugContestResults_DidNotLeaveMons
special CheckPartyFullAfterContest
if_equal $0, BugContestResults_CleanUp
if_equal $2, BugContestResults_CleanUp
farwritetext ContestResults_PartyFullText
- closetext
+ waitbutton
BugContestResults_CleanUp
- loadmovesprites
+ closetext
dotrigger $0
domaptrigger ROUTE_35_NATIONAL_PARK_GATE, $0
setevent EVENT_BUG_CATCHING_CONTESTANT_1A
@@ -386,7 +385,7 @@ BugContestResults_FirstPlace ; 0xbc31e
setevent EVENT_GAVE_KURT_APRICORNS
itemtotext SUN_STONE, $1
farwritetext ContestResults_PlayerWonAPrizeText
- closetext
+ waitbutton
verbosegiveitem SUN_STONE
iffalse BugContestResults_NoRoomForSunStone
jump BugContestResults_ReturnAfterWinnersPrize
@@ -395,7 +394,7 @@ BugContestResults_FirstPlace ; 0xbc31e
BugContestResults_SecondPlace ; 0xbc332
itemtotext EVERSTONE, $1
farwritetext ContestResults_PlayerWonAPrizeText
- closetext
+ waitbutton
verbosegiveitem EVERSTONE
iffalse BugContestResults_NoRoomForEverstone
jump BugContestResults_ReturnAfterWinnersPrize
@@ -404,7 +403,7 @@ BugContestResults_SecondPlace ; 0xbc332
BugContestResults_ThirdPlace ; 0xbc343
itemtotext GOLD_BERRY, $1
farwritetext ContestResults_PlayerWonAPrizeText
- closetext
+ waitbutton
verbosegiveitem GOLD_BERRY
iffalse BugContestResults_NoRoomForGoldBerry
jump BugContestResults_ReturnAfterWinnersPrize
@@ -412,28 +411,28 @@ BugContestResults_ThirdPlace ; 0xbc343
BugContestResults_NoRoomForSunStone ; 0xbc354
farwritetext BugContestPrizeNoRoomText
- keeptextopen
+ buttonsound
setevent EVENT_CONTEST_OFFICER_HAS_SUN_STONE
jump BugContestResults_ReturnAfterWinnersPrize
; 0xbc35f
BugContestResults_NoRoomForEverstone ; 0xbc35f
farwritetext BugContestPrizeNoRoomText
- keeptextopen
+ buttonsound
setevent EVENT_CONTEST_OFFICER_HAS_EVERSTONE
jump BugContestResults_ReturnAfterWinnersPrize
; 0xbc36a
BugContestResults_NoRoomForGoldBerry ; 0xbc36a
farwritetext BugContestPrizeNoRoomText
- keeptextopen
+ buttonsound
setevent EVENT_CONTEST_OFFICER_HAS_GOLD_BERRY
jump BugContestResults_ReturnAfterWinnersPrize
; 0xbc375
BugContestResults_NoRoomForBerry ; 0xbc375
farwritetext BugContestPrizeNoRoomText
- keeptextopen
+ buttonsound
setevent EVENT_CONTEST_OFFICER_HAS_BERRY
jump BugContestResults_DidNotWin
; 0xbc380
@@ -793,8 +792,8 @@ AskNumber2MScript:
RegisteredNumberMScript:
farwritetext RegisteredNumber1Text
playsound SFX_REGISTER_PHONE_NUMBER
- waitbutton
- keeptextopen
+ waitsfx
+ buttonsound
end
NumberAcceptedMScript:
@@ -822,103 +821,103 @@ NumberAcceptedMScript:
.Jack
farwritetext JackNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Huey
farwritetext HueyNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Gaven
farwritetext GavenNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Jose
farwritetext JoseNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Joey
farwritetext JoeyNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Wade
farwritetext WadeNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Ralph
farwritetext RalphNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Anthony
farwritetext AnthonyNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Todd
farwritetext ToddNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Irwin
farwritetext IrwinNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Arnie
farwritetext ArnieNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Alan
farwritetext AlanNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Chad
farwritetext ChadNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Derek
farwritetext DerekNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Tully
farwritetext TullyNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Brent
farwritetext BrentNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Vance
farwritetext VanceNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Wilton
farwritetext WiltonNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Kenji
farwritetext KenjiNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Parry
farwritetext ParryNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
NumberDeclinedMScript:
@@ -946,103 +945,103 @@ NumberDeclinedMScript:
.Jack
farwritetext JackNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Huey
farwritetext HueyNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Gaven
farwritetext GavenNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Jose
farwritetext JoseNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Joey
farwritetext JoeyNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Wade
farwritetext WadeNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Ralph
farwritetext RalphNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Anthony
farwritetext AnthonyNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Todd
farwritetext ToddNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Irwin
farwritetext IrwinNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Arnie
farwritetext ArnieNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Alan
farwritetext AlanNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Chad
farwritetext ChadNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Derek
farwritetext DerekNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Tully
farwritetext TullyNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Brent
farwritetext BrentNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Vance
farwritetext VanceNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Wilton
farwritetext WiltonNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Kenji
farwritetext KenjiNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Parry
farwritetext ParryNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
PhoneFullMScript:
@@ -1070,103 +1069,103 @@ PhoneFullMScript:
.Jack
farwritetext JackPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Huey
farwritetext HueyPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Gaven
farwritetext GavenPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Jose
farwritetext JosePhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Joey
farwritetext JoeyPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Wade
farwritetext WadePhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Ralph
farwritetext RalphPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Anthony
farwritetext AnthonyPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Todd
farwritetext ToddPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Irwin
farwritetext IrwinPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Arnie
farwritetext ArniePhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Alan
farwritetext AlanPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Chad
farwritetext ChadPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Derek
farwritetext DerekPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Tully
farwritetext TullyPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Brent
farwritetext BrentPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Vance
farwritetext VancePhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Wilton
farwritetext WiltonPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Kenji
farwritetext KenjiPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Parry
farwritetext ParryPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
RematchMScript:
@@ -1191,88 +1190,88 @@ RematchMScript:
.Jack
farwritetext JackRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Huey
farwritetext HueyRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Gaven
farwritetext GavenRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Jose
farwritetext JoseRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Joey
farwritetext JoeyRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Wade
farwritetext WadeRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Ralph
farwritetext RalphRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Anthony
farwritetext AnthonyRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Todd
farwritetext ToddRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Arnie
farwritetext ArnieRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Alan
farwritetext AlanRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Chad
farwritetext ChadRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Tully
farwritetext TullyRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Brent
farwritetext BrentRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Vance
farwritetext VanceRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Wilton
farwritetext WiltonRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Parry
farwritetext ParryRematchText
+ waitbutton
closetext
- loadmovesprites
end
GiftMScript:
@@ -1287,31 +1286,31 @@ GiftMScript:
.Jose
farwritetext JoseGiftText
- keeptextopen
+ buttonsound
end
.Wade
farwritetext WadeGiftText
- keeptextopen
+ buttonsound
end
.Alan
farwritetext AlanGiftText
- keeptextopen
+ buttonsound
end
.Derek
farwritetext DerekGiftText
- keeptextopen
+ buttonsound
end
.Tully
farwritetext TullyGiftText
- keeptextopen
+ buttonsound
end
.Wilton
farwritetext WiltonGiftText
- keeptextopen
+ buttonsound
end
.Kenji
farwritetext KenjiGiftText
- keeptextopen
+ buttonsound
end
PackFullMScript:
@@ -1330,62 +1329,62 @@ PackFullMScript:
.Huey
farwritetext HueyPackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Jose
farwritetext JosePackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Joey
farwritetext JoeyPackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Wade
farwritetext WadePackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Alan
farwritetext AlanPackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Derek
farwritetext DerekPackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Tully
farwritetext TullyPackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Vance
farwritetext VancePackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Wilton
farwritetext WiltonPackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Kenji
farwritetext KenjiPackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Parry
farwritetext ParryPackFullText
+ waitbutton
closetext
- loadmovesprites
end
RematchGiftMScript:
- loadfont
+ opentext
checkcode VAR_CALLERID
if_equal PHONE_SAILOR_HUEY, .Huey
if_equal PHONE_YOUNGSTER_JOEY, .Joey
@@ -1394,19 +1393,19 @@ RematchGiftMScript:
.Huey
farwritetext HueyRematchGiftText
- keeptextopen
+ buttonsound
end
.Joey
farwritetext JoeyRematchGiftText
- keeptextopen
+ buttonsound
end
.Vance
farwritetext VanceRematchGiftText
- keeptextopen
+ buttonsound
end
.Parry
farwritetext ParryRematchGiftText
- keeptextopen
+ buttonsound
end
AskNumber1FScript:
@@ -1484,8 +1483,8 @@ AskNumber2FScript:
RegisteredNumberFScript:
farwritetext RegisteredNumber2Text
playsound SFX_REGISTER_PHONE_NUMBER
- waitbutton
- keeptextopen
+ waitsfx
+ buttonsound
end
NumberAcceptedFScript: ; 0xbcbd3
@@ -1501,43 +1500,43 @@ NumberAcceptedFScript: ; 0xbcbd3
.Beverly
farwritetext BeverlyNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Beth
farwritetext BethNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Reena
farwritetext ReenaNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Liz
farwritetext LizNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Gina
farwritetext GinaNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Dana
farwritetext DanaNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Tiffany
farwritetext TiffanyNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
.Erin
farwritetext ErinNumberAcceptedText
+ waitbutton
closetext
- loadmovesprites
end
NumberDeclinedFScript:
@@ -1553,43 +1552,43 @@ NumberDeclinedFScript:
.Beverly
farwritetext BeverlyNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Beth
farwritetext BethNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Reena
farwritetext ReenaNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Liz
farwritetext LizNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Gina
farwritetext GinaNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Dana
farwritetext DanaNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Tiffany
farwritetext TiffanyNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
.Erin
farwritetext ErinNumberDeclinedText
+ waitbutton
closetext
- loadmovesprites
end
PhoneFullFScript:
@@ -1605,43 +1604,43 @@ PhoneFullFScript:
.Beverly
farwritetext BeverlyPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Beth
farwritetext BethPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Reena
farwritetext ReenaPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Liz
farwritetext LizPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Gina
farwritetext GinaPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Dana
farwritetext DanaPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Tiffany
farwritetext TiffanyPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
.Erin
farwritetext ErinPhoneFullText
+ waitbutton
closetext
- loadmovesprites
end
RematchFScript:
@@ -1656,38 +1655,38 @@ RematchFScript:
.Beth
farwritetext BethRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Reena
farwritetext ReenaRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Liz
farwritetext LizRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Gina
farwritetext GinaRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Dana
farwritetext DanaRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Tiffany
farwritetext TiffanyRematchText
+ waitbutton
closetext
- loadmovesprites
end
.Erin
farwritetext ErinRematchText
+ waitbutton
closetext
- loadmovesprites
end
GiftFScript:
@@ -1699,19 +1698,19 @@ GiftFScript:
.Beverly
farwritetext BeverlyGiftText
- keeptextopen
+ buttonsound
end
.Gina
farwritetext GinaGiftText
- keeptextopen
+ buttonsound
end
.Dana
farwritetext DanaGiftText
- keeptextopen
+ buttonsound
end
.Tiffany
farwritetext TiffanyGiftText
- keeptextopen
+ buttonsound
end
PackFullFScript:
@@ -1724,28 +1723,28 @@ PackFullFScript:
.Beverly
farwritetext BeverlyPackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Gina
farwritetext GinaPackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Dana
farwritetext DanaPackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Tiffany
farwritetext TiffanyPackFullText
+ waitbutton
closetext
- loadmovesprites
end
.Erin
farwritetext ErinPackFullText
+ waitbutton
closetext
- loadmovesprites
end
RematchGiftFScript:
@@ -1753,55 +1752,55 @@ RematchGiftFScript:
if_equal PHONE_PICNICKER_ERIN, .Erin
.Erin
- loadfont
+ opentext
farwritetext ErinRematchGiftText
- keeptextopen
+ buttonsound
end
GymStatue1Script:
mapnametotext $0
- loadfont
+ opentext
farwritetext GymStatue_CityGymText
+ waitbutton
closetext
- loadmovesprites
end
GymStatue2Script:
mapnametotext $0
- loadfont
+ opentext
farwritetext GymStatue_CityGymText
- keeptextopen
+ buttonsound
farwritetext GymStatue_WinningTrainersText
+ waitbutton
closetext
- loadmovesprites
end
ReceiveItemScript: ; 0xbcdb9
- waitbutton
+ waitsfx
farwritetext ReceivedItemText
playsound SFX_ITEM
- waitbutton
+ waitsfx
end
; 0xbcdc3
ReceiveTogepiEggScript: ; 0xbcdc3
- waitbutton
+ waitsfx
farwritetext ReceivedItemText
playsound SFX_GET_EGG_FROM_DAYCARE_LADY
- waitbutton
+ waitsfx
end
; 0xbcdcd
GameCornerCoinVendorScript: ; 0xbcdcd
faceplayer
- loadfont
+ opentext
farwritetext CoinVendor_WelcomeText
- keeptextopen
+ buttonsound
checkitem COIN_CASE
iftrue CoinVendor_IntroScript
farwritetext CoinVendor_NoCoinCaseText
+ waitbutton
closetext
- loadmovesprites
end
; 0xbcde0
@@ -1811,7 +1810,7 @@ CoinVendor_IntroScript: ; 0xbcde0
CoinVendor_SellCoinsMenuScript: ; 0xbcde4
special Special_DisplayMoneyAndCoinBalance
loadmenudata CoinVendor_MenuDataHeader
- interpretmenu2
+ verticalmenu
writebackup
if_equal $1, CoinVendor_Buy50CoinsScript
if_equal $2, CoinVendor_Buy500CoinsScript
@@ -1825,10 +1824,10 @@ CoinVendor_Buy50CoinsScript: ; 0xbcdf7
if_equal $2, CoinVendor_NotEnoughMoneyScript
givecoins 50
takemoney $0, 1000
- waitbutton
+ waitsfx
playsound SFX_TRANSACTION
farwritetext CoinVendor_Buy50CoinsText
- closetext
+ waitbutton
jump CoinVendor_SellCoinsMenuScript
; 0xbce1b
@@ -1839,31 +1838,31 @@ CoinVendor_Buy500CoinsScript: ; 0xbce1b
if_equal $2, CoinVendor_NotEnoughMoneyScript
givecoins 500
takemoney $0, 10000
- waitbutton
+ waitsfx
playsound SFX_TRANSACTION
farwritetext CoinVendor_Buy500CoinsText
- closetext
+ waitbutton
jump CoinVendor_SellCoinsMenuScript
; 0xbce3f
CoinVendor_NotEnoughMoneyScript: ; 0xbce3f
farwritetext CoinVendor_NotEnoughMoneyText
+ waitbutton
closetext
- loadmovesprites
end
; 0xbce46
CoinVendor_CoinCaseFullScript: ; 0xbce46
farwritetext CoinVendor_CoinCaseFullText
+ waitbutton
closetext
- loadmovesprites
end
; 0xbce4d
CoinVendor_CancelScript: ; 0xbce4d
farwritetext CoinVendor_CancelText
+ waitbutton
closetext
- loadmovesprites
end
; 0xbce54
@@ -1887,25 +1886,25 @@ CoinVendor_MenuData2: ; 0xbce5c
HappinessCheckScript:
faceplayer
- loadfont
+ opentext
special GetFirstPokemonHappiness
if_less_than 50, .Unhappy
if_less_than 150, .KindaHappy
farwritetext HappinessText3
+ waitbutton
closetext
- loadmovesprites
end
.KindaHappy
farwritetext HappinessText2
+ waitbutton
closetext
- loadmovesprites
end
.Unhappy
farwritetext HappinessText1
+ waitbutton
closetext
- loadmovesprites
end
Movement_ContestResults_WalkAfterWarp: ; bcea1
diff --git a/engine/switch_items.asm b/engine/switch_items.asm
new file mode 100755
index 000000000..d1c8aa66c
--- /dev/null
+++ b/engine/switch_items.asm
@@ -0,0 +1,275 @@
+SwitchItemsInBag: ; 2490c (9:490c)
+ ld a, [wSwitchItem]
+ and a
+ jr z, .init
+ ld b, a
+ ld a, [wScrollingMenuCursorPosition]
+ inc a
+ cp b
+ jr z, .trivial
+ ld a, [wScrollingMenuCursorPosition]
+ call ItemSwitch_GetNthItem
+ ld a, [hl]
+ cp -1
+ ret z
+ ld a, [wSwitchItem]
+ dec a
+ ld [wSwitchItem], a
+ call Function249a7
+ jp c, Function249d1
+ ld a, [wScrollingMenuCursorPosition]
+ ld c, a
+ ld a, [wSwitchItem]
+ cp c
+ jr c, .asm_2497a
+ jr .asm_2494a
+
+.init
+ ld a, [wScrollingMenuCursorPosition]
+ inc a
+ ld [wSwitchItem], a
+ ret
+
+.trivial
+ xor a
+ ld [wSwitchItem], a
+ ret
+
+.asm_2494a
+ ld a, [wSwitchItem]
+ call Function24a40
+ ld a, [wScrollingMenuCursorPosition]
+ ld d, a
+ ld a, [wSwitchItem]
+ ld e, a
+ call Function24a6c
+ push bc
+ ld a, [wSwitchItem]
+ call ItemSwitch_GetNthItem
+ dec hl
+ push hl
+ call ItemSwitch_ConvertSpacingToDW
+ add hl, bc
+ ld d, h
+ ld e, l
+ pop hl
+ pop bc
+ call Function24aab
+ ld a, [wScrollingMenuCursorPosition]
+ call Function24a4d
+ xor a
+ ld [wSwitchItem], a
+ ret
+
+.asm_2497a
+ ld a, [wSwitchItem]
+ call Function24a40
+ ld a, [wScrollingMenuCursorPosition]
+ ld d, a
+ ld a, [wSwitchItem]
+ ld e, a
+ call Function24a6c
+ push bc
+ ld a, [wSwitchItem]
+ call ItemSwitch_GetNthItem
+ ld d, h
+ ld e, l
+ call ItemSwitch_ConvertSpacingToDW
+ add hl, bc
+ pop bc
+ call CopyBytes
+ ld a, [wScrollingMenuCursorPosition]
+ call Function24a4d
+ xor a
+ ld [wSwitchItem], a
+ ret
+
+Function249a7: ; 249a7 (9:49a7)
+ ld a, [wSwitchItem]
+ call ItemSwitch_GetNthItem
+ ld d, h
+ ld e, l
+ ld a, [wScrollingMenuCursorPosition]
+ call ItemSwitch_GetNthItem
+ ld a, [de]
+ cp [hl]
+ jr nz, .asm_249cd
+ ld a, [wScrollingMenuCursorPosition]
+ call Function24a97
+ cp 99
+ jr z, .asm_249cd
+ ld a, [wSwitchItem]
+ call Function24a97
+ cp 99
+ jr nz, .asm_249cf
+.asm_249cd
+ and a
+ ret
+
+.asm_249cf
+ scf
+ ret
+
+Function249d1: ; 249d1 (9:49d1)
+ ld a, [wSwitchItem]
+ call ItemSwitch_GetNthItem
+ inc hl
+ push hl
+ ld a, [wScrollingMenuCursorPosition]
+ call ItemSwitch_GetNthItem
+ inc hl
+ ld a, [hl]
+ pop hl
+ add [hl]
+ cp 100
+ jr c, .asm_24a01
+ sub 99
+ push af
+ ld a, [wScrollingMenuCursorPosition]
+ call ItemSwitch_GetNthItem
+ inc hl
+ ld [hl], 99
+ ld a, [wSwitchItem]
+ call ItemSwitch_GetNthItem
+ inc hl
+ pop af
+ ld [hl], a
+ xor a
+ ld [wSwitchItem], a
+ ret
+
+.asm_24a01
+ push af
+ ld a, [wScrollingMenuCursorPosition]
+ call ItemSwitch_GetNthItem
+ inc hl
+ pop af
+ ld [hl], a
+ ld hl, wMenuData2_ItemsPointerAddr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wSwitchItem]
+ cp [hl]
+ jr nz, .asm_24a25
+ dec [hl]
+ ld a, [wSwitchItem]
+ call ItemSwitch_GetNthItem
+ ld [hl], $ff
+ xor a
+ ld [wSwitchItem], a
+ ret
+
+.asm_24a25
+ dec [hl]
+ call ItemSwitch_ConvertSpacingToDW
+ push bc
+ ld a, [wSwitchItem]
+ call ItemSwitch_GetNthItem
+ 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 [wSwitchItem], a
+ ret
+
+Function24a40: ; 24a40 (9:4a40)
+ call ItemSwitch_GetNthItem
+ ld de, wd002
+ call ItemSwitch_ConvertSpacingToDW
+ call CopyBytes
+ ret
+
+Function24a4d: ; 24a4d (9:4a4d)
+ call ItemSwitch_GetNthItem
+ ld d, h
+ ld e, l
+ ld hl, wd002
+ call ItemSwitch_ConvertSpacingToDW
+ call CopyBytes
+ ret
+
+ItemSwitch_GetNthItem: ; 24a5c (9:4a5c)
+ push af
+ call ItemSwitch_ConvertSpacingToDW
+ ld hl, wMenuData2_ItemsPointerAddr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ inc hl
+ pop af
+ call AddNTimes
+ ret
+
+Function24a6c: ; 24a6c (9:4a6c)
+ push hl
+ call ItemSwitch_ConvertSpacingToDW
+ ld a, d
+ sub e
+ jr nc, .dont_negate
+ dec a
+ cpl
+.dont_negate
+ ld hl, 0
+ call AddNTimes
+ ld b, h
+ ld c, l
+ pop hl
+ ret
+
+ItemSwitch_ConvertSpacingToDW: ; 24a80 (9:4a80)
+; This function is absolutely idiotic.
+ push hl
+ ld a, [wMenuData2_ScrollingMenuSpacing]
+ ld c, a
+ ld b, 0
+ ld hl, .spacing_dws
+rept 2
+ add hl, bc
+endr
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ pop hl
+ ret
+
+; 24a91 (9:4a91)
+
+.spacing_dws: ; 24a91
+ dw 0, 1, 2
+; 24a97
+
+Function24a97: ; 24a97 (9:4a97)
+ push af
+ call ItemSwitch_ConvertSpacingToDW
+ ld a, c
+ cp 2
+ jr nz, .not_2
+ pop af
+ call ItemSwitch_GetNthItem
+ inc hl
+ ld a, [hl]
+ ret
+
+.not_2
+ pop af
+ ld a, $1
+ ret
+
+Function24aab: ; 24aab (9:4aab)
+.loop
+ ld a, [hld]
+ ld [de], a
+ dec de
+ dec bc
+ ld a, b
+ or c
+ jr nz, .loop
+ ret
diff --git a/engine/tile_events.asm b/engine/tile_events.asm
new file mode 100755
index 000000000..8a6f2bc66
--- /dev/null
+++ b/engine/tile_events.asm
@@ -0,0 +1,110 @@
+CheckWarpCollision:: ; 1499a
+; Is this tile a warp?
+ 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
+
+CheckDirectionalWarp:: ; 149af
+; If this is a directional warp, clear carry (press the designated button to warp).
+; Else, set carry (immediate warp).
+ ld a, [PlayerNextTile]
+ cp $70 ; Warp on down
+ jr z, .not_warp
+ cp $76 ; Warp on left
+ jr z, .not_warp
+ cp $78 ; Warp on up
+ jr z, .not_warp
+ cp $7e ; Warp on right
+ jr z, .not_warp
+ scf
+ ret
+
+.not_warp
+ xor a
+ ret
+; 149c6
+
+CheckWarpFacingDown: ; 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
diff --git a/engine/time.asm b/engine/time.asm
index fce01ffac..f4eee4b17 100755
--- a/engine/time.asm
+++ b/engine/time.asm
@@ -118,7 +118,7 @@ endr
rept 4
ld [hli], a
endr
- ld hl, wdc58
+ ld hl, wKenjiBreakTimer
ld a, [hl]
and a
jr z, .RestartKenjiBreakCountdown
@@ -137,7 +137,7 @@ Special_SampleKenjiBreakCountdown: ; 11485
call Random
and 3
add 3
- ld [wdc58], a
+ ld [wKenjiBreakTimer], a
ret
; 11490
diff --git a/engine/time_capsule/conversion.asm b/engine/time_capsule/conversion.asm
index 10f7ab5f3..e2c545c48 100755
--- a/engine/time_capsule/conversion.asm
+++ b/engine/time_capsule/conversion.asm
@@ -1,6 +1,6 @@
; These functions seem to be related to backwards compatibility
-Functionfb57e: ; fb57e
+ValidateOTTrademon: ; fb57e
ld a, [wd003]
ld hl, OTPartyMon1Species
call GetPartyLocation
@@ -14,21 +14,21 @@ Functionfb57e: ; fb57e
ld a, [hl]
pop hl
cp EGG
- jr z, .asm_fb59c
+ jr z, .matching_or_egg
cp [hl]
- jr nz, .asm_fb5db
+ jr nz, .abnormal
-.asm_fb59c
+.matching_or_egg
ld b, h
ld c, l
ld hl, MON_LEVEL
add hl, bc
ld a, [hl]
- cp 101
- jr nc, .asm_fb5db
+ cp MAX_LEVEL + 1
+ jr nc, .abnormal
ld a, [wLinkMode]
cp LINK_TIMECAPSULE
- jr nz, .asm_fb5d9
+ jr nz, .normal
ld hl, OTPartySpecies
ld a, [wd003]
ld c, a
@@ -39,29 +39,29 @@ Functionfb57e: ; fb57e
; Magnemite and Magneton's types changed
; from Electric to Electric/Steel.
cp MAGNEMITE
- jr z, .asm_fb5d9
+ jr z, .normal
cp MAGNETON
- jr z, .asm_fb5d9
+ jr z, .normal
ld [CurSpecies], a
call GetBaseData
- ld hl, wcbea
+ ld hl, wLinkOTPartyMonTypes
rept 2
add hl, bc
endr
ld a, [BaseType1]
cp [hl]
- jr nz, .asm_fb5db
+ jr nz, .abnormal
inc hl
ld a, [BaseType2]
cp [hl]
- jr nz, .asm_fb5db
+ jr nz, .abnormal
-.asm_fb5d9
+.normal
and a
ret
-.asm_fb5db
+.abnormal
scf
ret
; fb5dd
@@ -72,10 +72,10 @@ Functionfb5dd: ; fb5dd
ld a, [PartyCount]
ld b, a
ld c, $0
-.asm_fb5e7
+.loop
ld a, c
cp d
- jr z, .asm_fb5f8
+ jr z, .next
push bc
ld a, c
ld hl, PartyMon1HP
@@ -83,48 +83,47 @@ Functionfb5dd: ; fb5dd
pop bc
ld a, [hli]
or [hl]
- jr nz, .asm_fb60b
+ jr nz, .done
-.asm_fb5f8
+.next
inc c
dec b
- jr nz, .asm_fb5e7
+ jr nz, .loop
ld a, [wd003]
ld hl, OTPartyMon1HP
call GetPartyLocation
ld a, [hli]
or [hl]
- jr nz, .asm_fb60b
+ jr nz, .done
scf
ret
-.asm_fb60b
+.done
and a
ret
; fb60d
-Functionfb60d: ; fb60d
+PlaceTradePartnerNamesAndParty: ; fb60d
hlcoord 4, 0
ld de, PlayerName
call PlaceString
ld a, $14
ld [bc], a
hlcoord 4, 8
- ld de, wd26b
+ ld de, OTPlayerName
call PlaceString
ld a, $14
ld [bc], a
hlcoord 7, 1
ld de, PartySpecies
- call Functionfb634
+ call .PlaceSpeciesNames
hlcoord 7, 9
ld de, OTPartySpecies
-
-Functionfb634: ; fb634
+.PlaceSpeciesNames: ; fb634
ld c, $0
-.asm_fb636
+.loop
ld a, [de]
- cp $ff
+ cp -1
ret z
ld [wd265], a
push bc
@@ -143,7 +142,7 @@ Functionfb634: ; fb634
add hl, bc
pop bc
inc c
- jr .asm_fb636
+ jr .loop
; fb656
KantoMonSpecials: ; fb656
@@ -355,18 +354,18 @@ NewPokedexEntry: ; fb877
ld [hSCX], a
xor a
ld [wPokedexStatus], a
- callba Function41a7f
+ callba _NewPokedexEntry
call WaitPressAorB_BlinkCursor
ld a, $1
ld [wPokedexStatus], a
- callba Function4424d
+ callba DisplayDexEntry
call WaitPressAorB_BlinkCursor
pop af
ld [wPokedexStatus], a
call MaxVolume
call RotateThreePalettesRight
ld a, [hSCX]
- add $fb
+ add -5 ; 251 ; NUM_POKEMON
ld [hSCX], a
call Functionfb8c8
pop af
@@ -378,14 +377,14 @@ Functionfb8c8: ; fb8c8
call ClearTileMap
call LoadFontsExtra
call LoadStandardFont
- callba Function40ab2
- call Function3200
+ callba Pokedex_PlaceFrontpicTopLeftCorner
+ call WaitBGMap2
callba GetEnemyMonDVs
ld a, [hli]
ld [TempMonDVs], a
ld a, [hl]
ld [TempMonDVs + 1], a
- ld b, SCGB_1C
+ ld b, SCGB_FRONTPICPALS
call GetSGBLayout
call SetPalettes
ret
diff --git a/engine/timeofdaypals.asm b/engine/timeofdaypals.asm
index 368636758..4ed000af2 100644
--- a/engine/timeofdaypals.asm
+++ b/engine/timeofdaypals.asm
@@ -1,4 +1,4 @@
-Function8c001:: ; 8c001
+UpdateTimeOfDayPal:: ; 8c001
call UpdateTime
ld a, [TimeOfDay]
ld [CurTimeOfDay], a
@@ -12,7 +12,7 @@ _TimeOfDayPals:: ; 8c011
; return carry if pals are changed
; forced pals?
- ld hl, wd846
+ ld hl, wTimeOfDayPalFlags
bit 7, [hl]
jr nz, .dontchange
@@ -65,7 +65,7 @@ _TimeOfDayPals:: ; 8c011
; update sgb pals
- ld b, SCGB_09
+ ld b, SCGB_MAPPALS
call GetSGBLayout
@@ -125,7 +125,7 @@ FadeInPalettes:: ; 8c079
; 8c084
FadeOutPalettes:: ; 8c084
- call Function8c0c1
+ call FillWhiteBGColor
ld c, $9
call GetTimePalFade
ld b, $4
@@ -134,7 +134,7 @@ FadeOutPalettes:: ; 8c084
; 8c092
Special_BattleTowerFade: ; 8c092
- call Function8c0c1
+ call FillWhiteBGColor
ld c, $9
call GetTimePalFade
ld b, $4
@@ -167,19 +167,20 @@ Special_FadeBlackQuickly: ; 8c0b6
; 8c0c1
-Function8c0c1: ; 8c0c1
+FillWhiteBGColor: ; 8c0c1
ld a, [rSVBK]
push af
ld a, $5
ld [rSVBK], a
+
ld hl, UnknBGPals
ld a, [hli]
ld e, a
ld a, [hli]
ld d, a
- ld hl, UnknBGPals + 8
- ld c, $6
-.asm_8c0d4
+ ld hl, UnknBGPals + 1 palettes
+ ld c, 6
+.loop
ld a, e
ld [hli], a
ld a, d
@@ -188,7 +189,8 @@ rept 6
inc hl
endr
dec c
- jr nz, .asm_8c0d4
+ jr nz, .loop
+
pop af
ld [rSVBK], a
ret
@@ -198,9 +200,9 @@ brightlevel: MACRO
db (\1 << 6) | (\2 << 4) | (\3 << 2) | \4
ENDM
-Function8c0e5: ; 8c0e5
+ReplaceTimeOfDayPals: ; 8c0e5
ld hl, .BrightnessLevels
- ld a, [wc2d0]
+ ld a, [wMapTimeOfDay]
cp $4 ; Dark cave, needs Flash
jr z, .DarkCave
and $7
@@ -210,18 +212,20 @@ Function8c0e5: ; 8c0e5
adc h
ld h, a
ld a, [hl]
- ld [wd847], a
+ ld [wTimeOfDayPalset], a
ret
+
.DarkCave
ld a, [StatusFlags]
- bit 2, a
+ bit 2, a ; Flash
jr nz, .UsedFlash
- ld a, $ff ; 3, 3, 3, 3
- ld [wd847], a
+ ld a, %11111111 ; 3, 3, 3, 3
+ ld [wTimeOfDayPalset], a
ret
+
.UsedFlash
- ld a, $aa ; 2, 2, 2, 2
- ld [wd847], a
+ ld a, %10101010 ; 2, 2, 2, 2
+ ld [wTimeOfDayPalset], a
ret
; 8c10f (23:410f)
@@ -257,25 +261,25 @@ endr
dw .DarknessPalette
.MorningPalette
- ld a, [wd847]
+ ld a, [wTimeOfDayPalset]
and %00000011 ; 0
ret
.DayPalette
- ld a, [wd847]
+ ld a, [wTimeOfDayPalset]
and %00001100 ; 1
srl a
srl a
ret
.NitePalette
- ld a, [wd847]
+ ld a, [wTimeOfDayPalset]
and %00110000 ; 2
swap a
ret
.DarknessPalette
- ld a, [wd847]
+ ld a, [wTimeOfDayPalset]
and %11000000 ; 3
rlca
rlca
@@ -304,7 +308,7 @@ ConvertTimePalsIncHL: ; 8c15e
rept 3
inc hl
endr
- ld c, $2
+ ld c, 2
call DelayFrames
dec b
jr nz, .loop
@@ -317,7 +321,7 @@ ConvertTimePalsDecHL: ; 8c16d
rept 3
dec hl
endr
- ld c, $2
+ ld c, 2
call DelayFrames
dec b
jr nz, .loop
diff --git a/engine/timeset.asm b/engine/timeset.asm
index 1f82da884..801fb26e8 100755
--- a/engine/timeset.asm
+++ b/engine/timeset.asm
@@ -38,7 +38,7 @@ InitClock: ; 90672 (24:4672)
call .ClearScreen
call WaitBGMap
call RotateFourPalettesRight
- ld hl, UnknownText_0x90874
+ ld hl, Text_WokeUpOak
call PrintText
ld hl, wc608
ld bc, 50
@@ -48,7 +48,7 @@ InitClock: ; 90672 (24:4672)
ld [wInitHourBuffer], a
.loop
- ld hl, UnknownText_0x90879
+ ld hl, Text_WhatTimeIsIt
call PrintText
hlcoord 3, 7
ld b, 2
@@ -71,7 +71,7 @@ InitClock: ; 90672 (24:4672)
ld a, [wInitHourBuffer]
ld [StringBuffer2 + 1], a
call .ClearScreen
- ld hl, UnknownText_0x90886
+ ld hl, Text_WhatHrs
call PrintText
call YesNoBox
jr nc, .HourIsSet
@@ -79,7 +79,7 @@ InitClock: ; 90672 (24:4672)
jr .loop
.HourIsSet
- ld hl, UnknownText_0x9089a
+ ld hl, Text_HowManyMinutes
call PrintText
hlcoord 11, 7
lb bc, 2, 7
@@ -101,7 +101,7 @@ InitClock: ; 90672 (24:4672)
ld a, [BattleMonNick + 5]
ld [StringBuffer2 + 2], a
call .ClearScreen
- ld hl, UnknownText_0x908a4
+ ld hl, Text_WhoaMins
call PrintText
call YesNoBox
jr nc, .MinutesAreSet
@@ -109,7 +109,7 @@ InitClock: ; 90672 (24:4672)
jr .HourIsSet
.MinutesAreSet
- call Function658
+ call SetTimeOfDay
ld hl, OakText_ResponseToSetTime
call PrintText
call WaitPressAorB_BlinkCursor
@@ -194,7 +194,7 @@ DisplayHourOClock: ; 907de (24:47de)
ret
; 907f1 (24:47f1)
-Function907f1: ; 907f1
+UnreferencedFunction907f1: ; 907f1
ld h, d
ld l, e
push hl
@@ -203,11 +203,11 @@ Function907f1: ; 907f1
rept 2
inc de
endr
- ld a, $9c
+ ld a, ":"
ld [de], a
inc de
push de
- ld hl, $3
+ ld hl, 3
add hl, de
ld a, [de]
inc de
@@ -225,37 +225,39 @@ endr
SetMinutes: ; 90810 (24:4810)
ld a, [hJoyPressed]
and A_BUTTON
- jr nz, .asm_90857
+ jr nz, .a_button
ld hl, hJoyLast
ld a, [hl]
and D_UP
- jr nz, .asm_90835
+ jr nz, .d_up
ld a, [hl]
and D_DOWN
- jr nz, .asm_90828
+ jr nz, .d_down
call DelayFrame
and a
ret
-.asm_90828
+
+.d_down
ld hl, BattleMonNick + 5
ld a, [hl]
and a
- jr nz, .asm_90831
+ jr nz, .decrease
ld a, 59 + 1
-.asm_90831
+.decrease
dec a
ld [hl], a
- jr .asm_90841
-.asm_90835
+ jr .finish_dpad
+
+.d_up
ld hl, BattleMonNick + 5
ld a, [hl]
cp 59
- jr c, .asm_9083f
+ jr c, .increase
ld a, -1
-.asm_9083f
+.increase
inc a
ld [hl], a
-.asm_90841
+.finish_dpad
hlcoord 12, 9
ld a, " "
ld bc, 7
@@ -265,7 +267,7 @@ SetMinutes: ; 90810 (24:4810)
call WaitBGMap
and a
ret
-.asm_90857
+.a_button
scf
ret
@@ -288,13 +290,13 @@ PrintTwoDigitNumberRightAlign: ; 90867 (24:4867)
ret
; 90874 (24:4874)
-UnknownText_0x90874: ; 0x90874
+Text_WokeUpOak: ; 0x90874
; Zzz… Hm? Wha…? You woke me up! Will you check the clock for me?
text_jump UnknownText_0x1bc29c
db "@"
; 0x90879
-UnknownText_0x90879: ; 0x90879
+Text_WhatTimeIsIt: ; 0x90879
; What time is it?
text_jump UnknownText_0x1bc2eb
db "@"
@@ -304,23 +306,23 @@ String_oclock:
db "o'clock@"
; 90886
-UnknownText_0x90886: ; 0x90886
+Text_WhatHrs: ; 0x90886
; What?@ @
text_jump UnknownText_0x1bc2fd
start_asm
hlcoord 1, 16
call DisplayHourOClock
- ld hl, UnknownText_0x90895
+ ld hl, .QuestionMark
ret
; 90895 (24:4895)
-UnknownText_0x90895: ; 0x90895
+.QuestionMark: ; 0x90895
; ?
text_jump UnknownText_0x1bc305
db "@"
; 0x9089a
-UnknownText_0x9089a: ; 0x9089a
+Text_HowManyMinutes: ; 0x9089a
; How many minutes?
text_jump UnknownText_0x1bc308
db "@"
@@ -330,18 +332,18 @@ String_min:
db "min.@"
; 908a4
-UnknownText_0x908a4: ; 0x908a4
+Text_WhoaMins: ; 0x908a4
; Whoa!@ @
text_jump UnknownText_0x1bc31b
start_asm
; 0x908a9
hlcoord 7, 14
call DisplayMinutesWithMinString
- ld hl, UnknownText_0x908b3
+ ld hl, .QuestionMark
ret
; 908b3 (24:48b3)
-UnknownText_0x908b3: ; 0x908b3
+.QuestionMark: ; 0x908b3
; ?
text_jump UnknownText_0x1bc323
db "@"
@@ -418,108 +420,108 @@ Special_SetDayOfWeek: ; 90913
lb bc, BANK(GFX_9090b), 1
call Request1bpp
xor a
- ld [wd002], a
-.asm_90936
+ ld [wTempDayOfWeek], a
+.loop
hlcoord 0, 12
lb bc, 4, 18
call TextBox
call LoadStandardMenuDataHeader
- ld hl, UnknownText_0x90a3f
+ ld hl, .WhatDayIsItText
call PrintText
hlcoord 9, 3
ld b, 2
ld c, 9
call TextBox
hlcoord 14, 3
- ld [hl], $ef
+ ld [hl], "♂" ; gets overwritten with special up arrow
hlcoord 14, 6
- ld [hl], $f5
+ ld [hl], "♀" ; gets overwritten with special down arrow
hlcoord 10, 5
- call Function909de
+ call .PlaceWeekdayString
call ApplyTilemap
ld c, 10
call DelayFrames
-.asm_9096a
+.loop2
call JoyTextDelay
- call Function90993
- jr nc, .asm_9096a
+ call .GetJoypadAction
+ jr nc, .loop2
call ExitMenu
call UpdateSprites
- ld hl, UnknownText_0x90a44
+ ld hl, .ConfirmWeekdayText
call PrintText
call YesNoBox
- jr c, .asm_90936
- ld a, [wd002]
+ jr c, .loop
+ ld a, [wTempDayOfWeek]
ld [StringBuffer2], a
- call Function663
+ call SetDayOfWeek
call LoadStandardFont
pop af
ld [hInMenu], a
ret
; 90993
-Function90993: ; 90993
+.GetJoypadAction: ; 90993
ld a, [hJoyPressed]
and A_BUTTON
- jr z, .asm_9099b
+ jr z, .not_A
scf
ret
-.asm_9099b
+.not_A
ld hl, hJoyLast
ld a, [hl]
and D_UP
- jr nz, .asm_909ba
+ jr nz, .d_up
ld a, [hl]
and D_DOWN
- jr nz, .asm_909ad
+ jr nz, .d_down
call DelayFrame
and a
ret
-.asm_909ad
- ld hl, wd002
+.d_down
+ ld hl, wTempDayOfWeek
ld a, [hl]
and a
- jr nz, .asm_909b6
+ jr nz, .decrease
ld a, 6 + 1
-.asm_909b6
+.decrease
dec a
ld [hl], a
- jr .asm_909c6
+ jr .finish_dpad
-.asm_909ba
- ld hl, wd002
+.d_up
+ ld hl, wTempDayOfWeek
ld a, [hl]
cp 6
- jr c, .asm_909c4
- ld a, -1
+ jr c, .increase
+ ld a, 0 - 1
-.asm_909c4
+.increase
inc a
ld [hl], a
-.asm_909c6
+.finish_dpad
xor a
ld [hBGMapMode], a
hlcoord 10, 4
- ld b, $2
- ld c, $9
+ ld b, 2
+ ld c, 9
call ClearBox
hlcoord 10, 5
- call Function909de
+ call .PlaceWeekdayString
call WaitBGMap
and a
ret
; 909de
-Function909de: ; 909de
+.PlaceWeekdayString: ; 909de
push hl
- ld a, [wd002]
+ ld a, [wTempDayOfWeek]
ld e, a
ld d, 0
- ld hl, WeekdaysStrings
+ ld hl, .WeekdayStrings
rept 2
add hl, de
endr
@@ -531,40 +533,40 @@ endr
ret
; 909f2
-WeekdaysStrings: ; 909f2
- dw Sunday
- dw Monday
- dw Tuesday
- dw Wednesday
- dw Thursday
- dw Friday
- dw Saturday
- dw Sunday
-
-Sunday: db " SUNDAY@"
-Monday: db " MONDAY@"
-Tuesday: db " TUESDAY@"
-Wednesday: db "WEDNESDAY@"
-Thursday: db "THURSDAY@"
-Friday: db " FRIDAY@"
-Saturday: db "SATURDAY@"
-
-
-UnknownText_0x90a3f: ; 0x90a3f
+.WeekdayStrings: ; 909f2
+ dw .Sunday
+ dw .Monday
+ dw .Tuesday
+ dw .Wednesday
+ dw .Thursday
+ dw .Friday
+ dw .Saturday
+ dw .Sunday
+
+.Sunday: db " SUNDAY@"
+.Monday: db " MONDAY@"
+.Tuesday: db " TUESDAY@"
+.Wednesday: db "WEDNESDAY@"
+.Thursday: db "THURSDAY@"
+.Friday: db " FRIDAY@"
+.Saturday: db "SATURDAY@"
+
+
+.WhatDayIsItText: ; 0x90a3f
; What day is it?
text_jump UnknownText_0x1bc369
db "@"
; 0x90a44
-UnknownText_0x90a44: ; 0x90a44
+.ConfirmWeekdayText: ; 0x90a44
start_asm
hlcoord 1, 14
- call Function909de
- ld hl, UnknownText_0x90a4f
+ call .PlaceWeekdayString
+ ld hl, .IsIt
ret
; 90a4f (24:4a4f)
-UnknownText_0x90a4f: ; 0x90a4f
+.IsIt: ; 0x90a4f
; , is it?
text_jump UnknownText_0x1bc37a
db "@"
@@ -577,12 +579,12 @@ Special_InitialSetDSTFlag: ; 90a54
hlcoord 1, 14
lb bc, 3, 18
call ClearBox
- ld hl, UnknownText_0x90a6c
+ ld hl, .Text
call PlaceWholeStringInBoxAtOnce
ret
; 90a6c
-UnknownText_0x90a6c: ; 90a6c
+.Text: ; 90a6c
start_asm
call UpdateTime
ld a, [hHours]
@@ -591,11 +593,11 @@ UnknownText_0x90a6c: ; 90a6c
ld c, a
decoord 1, 14
callba PrintHoursMins
- ld hl, TextJump_DSTIsThatOK
+ ld hl, .DSTIsThatOK
ret
; 90a83 (24:4a83)
-TextJump_DSTIsThatOK: ; 0x90a83
+.DSTIsThatOK: ; 0x90a83
; DST, is that OK?
text_jump Text_DSTIsThatOK
db "@"
@@ -608,12 +610,12 @@ Special_InitialClearDSTFlag: ; 90a88
hlcoord 1, 14
lb bc, 3, 18
call ClearBox
- ld hl, UnknownText_0x90aa0
+ ld hl, .Text
call PlaceWholeStringInBoxAtOnce
ret
; 90aa0
-UnknownText_0x90aa0: ; 90aa0
+.Text: ; 90aa0
start_asm
call UpdateTime
ld a, [hHours]
@@ -622,26 +624,26 @@ UnknownText_0x90aa0: ; 90aa0
ld c, a
decoord 1, 14
callba PrintHoursMins
- ld hl, UnknownText_0x90ab7
+ ld hl, .IsThatOK
ret
; 90ab7
-UnknownText_0x90ab7: ; 0x90ab7
+.IsThatOK: ; 0x90ab7
; , is that OK?
text_jump UnknownText_0x1c5ff1
db "@"
; 0x90abc
-Function90abc: ; 90abc
+DebugDisplayTime: ; 90abc
hlcoord 1, 14
lb bc, 3, SCREEN_WIDTH - 2
call ClearBox
- ld hl, UnknownText_0x90acc
+ ld hl, .Text
call PlaceWholeStringInBoxAtOnce
ret
; 90acc
-UnknownText_0x90acc: ; 0x90acc
+.Text: ; 0x90acc
start_asm
call UpdateTime
@@ -655,7 +657,7 @@ UnknownText_0x90acc: ; 0x90acc
inc hl
ld de, hRTCDayLo
- call Function90b23
+ call .PrintTime
hlcoord 1, 16
ld [hl], "D"
@@ -666,7 +668,7 @@ UnknownText_0x90acc: ; 0x90acc
inc hl
ld de, StartDay
- call Function90b23
+ call .PrintTime
ld [hl], " "
inc hl
@@ -690,16 +692,16 @@ UnknownText_0x90acc: ; 0x90acc
inc hl
.done
- ld hl, UnknownText_0x90b13
+ ld hl, .NowOnDebug
ret
; 90b13
-UnknownText_0x90b13: ; 0x90b13
+.NowOnDebug: ; 0x90b13
text "<PARA>Now on DEBUG…"
prompt
; 0x90b23
-Function90b23: ; 90b23
+.PrintTime: ; 90b23
lb bc, 1, 3
call PrintNum
ld [hl], "."
diff --git a/engine/tmhm.asm b/engine/tmhm.asm
index b66131ac9..dc5d698e1 100755
--- a/engine/tmhm.asm
+++ b/engine/tmhm.asm
@@ -5,7 +5,7 @@ CanLearnTMHMMove: ; 11639
ld hl, BaseTMHM
push hl
- ld a, [wd262]
+ ld a, [wPutativeTMHMMove]
ld b, a
ld c, 0
ld hl, TMHMMoves
diff --git a/engine/tmhm2.asm b/engine/tmhm2.asm
new file mode 100755
index 000000000..fdb829034
--- /dev/null
+++ b/engine/tmhm2.asm
@@ -0,0 +1,592 @@
+TMHMPocket: ; 2c76f (b:476f)
+ ld a, $1
+ ld [hInMenu], a
+ call TMHM_PocketLoop
+ ld a, $0
+ ld [hInMenu], a
+ ret nc
+ call PlaceHollowCursor
+ call WaitBGMap
+ ld a, [CurItem]
+ dec a
+ ld [CurItemQuantity], a
+ ld hl, TMsHMs
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld a, [hl]
+ ld [wItemQuantityBuffer], a
+ call .ConvertItemToTMHMNumber
+ scf
+ ret
+
+.ConvertItemToTMHMNumber: ; 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
+
+AskTeachTMHM: ; 2c7bf (b:47bf)
+ ld hl, Options
+ ld a, [hl]
+ push af
+ res NO_TEXT_SCROLL, [hl]
+ ld a, [CurItem]
+ cp TM01
+ jr c, .NotTMHM
+ call GetTMHMItemMove
+ ld a, [wCurTMHM]
+ ld [wPutativeTMHMMove], a
+ call GetMoveName
+ call CopyName1
+ ld hl, Text_BootedTM ; Booted up a TM
+ ld a, [CurItem]
+ cp HM01
+ jr c, .TM
+ ld hl, Text_BootedHM ; Booted up an HM
+.TM
+ call PrintText
+ ld hl, Text_ItContained
+ call PrintText
+ call YesNoBox
+.NotTMHM
+ pop bc
+ ld a, b
+ ld [Options], a
+ ret
+
+ChooseMonToLearnTMHM: ; 2c7fb
+ ld hl, StringBuffer2
+ ld de, wTMHMMoveNameBackup
+ ld bc, 12
+ call CopyBytes
+ call ClearBGPalettes
+ChooseMonToLearnTMHM_NoRefresh: ; 2c80a
+ callba LoadPartyMenuGFX
+ callba InitPartyMenuWithCancel
+ callba InitPartyMenuGFX
+ ld a, $3 ; TeachWhichPKMNString
+ 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, wTMHMMoveNameBackup
+ ld de, StringBuffer2
+ ld bc, 12
+ 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
+
+TeachTMHM: ; 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, Text_TMHMNotCompatible
+ 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 ConsumeTM
+ jr .learned_move
+
+.nope
+ and a
+ ret
+
+.unused
+ ld a, 2
+ ld [wItemEffectSucceeded], a
+.learned_move
+ scf
+ ret
+; 2c8bf (b:48bf)
+
+Text_BootedTM: ; 0x2c8bf
+ ; Booted up a TM.
+ text_jump UnknownText_0x1c0373
+ db "@"
+; 0x2c8c4
+
+Text_BootedHM: ; 0x2c8c4
+ ; Booted up an HM.
+ text_jump UnknownText_0x1c0384
+ db "@"
+; 0x2c8c9
+
+Text_ItContained: ; 0x2c8c9
+ ; It contained @ . Teach @ to a #MON?
+ text_jump UnknownText_0x1c0396
+ db "@"
+; 0x2c8ce
+
+Text_TMHMNotCompatible: ; 0x2c8ce
+ ; is not compatible with @ . It can't learn @ .
+ text_jump UnknownText_0x1c03c2
+ db "@"
+; 0x2c8d3
+
+TMHM_PocketLoop: ; 2c8d3 (b:48d3)
+ xor a
+ ld [hBGMapMode], a
+ call TMHM_DisplayPocketItems
+ ld a, $2
+ ld [w2DMenuCursorInitY], a
+ ld a, $7
+ ld [w2DMenuCursorInitX], a
+ ld a, $1
+ ld [w2DMenuNumCols], a
+ ld a, $5
+ sub d
+ inc a
+ cp $6
+ jr nz, .okay
+ dec a
+.okay
+ ld [w2DMenuNumRows], a
+ ld a, $c
+ ld [w2DMenuFlags1], a
+ xor a
+ ld [w2DMenuFlags2], a
+ ld a, $20
+ ld [w2DMenuCursorOffsets], a
+ ld a, A_BUTTON | B_BUTTON | D_UP | D_DOWN | D_LEFT | D_RIGHT
+ ld [wMenuJoypadFilter], a
+ ld a, [wTMHMPocketCursor]
+ inc a
+ ld [wMenuCursorY], a
+ ld a, $1
+ ld [wMenuCursorX], a
+ jr TMHM_ShowTMMoveDescription
+
+TMHM_JoypadLoop: ; 2c915 (b:4915)
+ call TMHM_DisplayPocketItems
+ call StaticMenuJoypad
+ ld b, a
+ ld a, [wMenuCursorY]
+ dec a
+ ld [wTMHMPocketCursor], a
+ xor a
+ ld [hBGMapMode], a
+ ld a, [w2DMenuFlags2]
+ bit 7, a
+ jp nz, TMHM_ScrollPocket
+ ld a, b
+ ld [wMenuJoypad], a
+ bit A_BUTTON_F, a
+ jp nz, TMHM_ChooseTMorHM
+ bit B_BUTTON_F, a
+ jp nz, TMHM_ExitPack
+ bit D_RIGHT_F, a
+ jp nz, TMHM_ExitPocket
+ bit D_LEFT_F, a
+ jp nz, TMHM_ExitPocket
+TMHM_ShowTMMoveDescription: ; 2c946 (b:4946)
+ call TMHM_CheckHoveringOverCancel
+ jp nc, TMHM_ExitPocket
+ hlcoord 0, 12
+ ld b, 4
+ ld c, SCREEN_WIDTH - 2
+ call TextBox
+ ld a, [CurItem]
+ cp NUM_TMS + NUM_HMS + 1
+ jr nc, TMHM_JoypadLoop
+ ld [wd265], a
+ predef GetTMHMMove
+ ld a, [wd265]
+ ld [CurSpecies], a
+ hlcoord 1, 14
+ call PrintMoveDesc
+ jp TMHM_JoypadLoop
+
+TMHM_ChooseTMorHM: ; 2c974 (b:4974)
+ call TMHM_PlaySFX_ReadText2
+ call CountTMsHMs ; This stores the count to wd265.
+ ld a, [wMenuCursorY]
+ dec a
+ ld b, a
+ ld a, [wTMHMPocketScrollPosition]
+ add b
+ ld b, a
+ ld a, [wd265]
+ cp b
+ jr z, _TMHM_ExitPack ; our cursor was hovering over CANCEL
+TMHM_CheckHoveringOverCancel: ; 2c98a (b:498a)
+ call TMHM_GetCurrentPocketPosition
+ ld a, [wMenuCursorY]
+ ld b, a
+.loop
+ inc c
+ ld a, c
+ cp NUM_TMS + NUM_HMS + 1
+ jr nc, .okay
+ ld a, [hli]
+ and a
+ jr z, .loop
+ dec b
+ jr nz, .loop
+ ld a, c
+.okay
+ ld [CurItem], a
+ cp -1
+ ret
+
+TMHM_ExitPack: ; 2c9a5 (b:49a5)
+ call TMHM_PlaySFX_ReadText2
+_TMHM_ExitPack: ; 2c9a8 (b:49a8)
+ ld a, $2
+ ld [wMenuJoypad], a
+ and a
+ ret
+
+TMHM_ExitPocket: ; 2c9af (b:49af)
+ and a
+ ret
+
+TMHM_ScrollPocket: ; 2c9b1 (b:49b1)
+ ld a, b
+ bit 7, a
+ jr nz, .skip
+ ld hl, wTMHMPocketScrollPosition
+ ld a, [hl]
+ and a
+ jp z, TMHM_JoypadLoop
+ dec [hl]
+ call TMHM_DisplayPocketItems
+ jp TMHM_ShowTMMoveDescription
+
+.skip
+ call TMHM_GetCurrentPocketPosition
+ ld b, 5
+.loop
+ inc c
+ ld a, c
+ cp NUM_TMS + NUM_HMS + 1
+ jp nc, TMHM_JoypadLoop
+ ld a, [hli]
+ and a
+ jr z, .loop
+ dec b
+ jr nz, .loop
+ ld hl, wTMHMPocketScrollPosition
+ inc [hl]
+ call TMHM_DisplayPocketItems
+ jp TMHM_ShowTMMoveDescription
+
+TMHM_DisplayPocketItems: ; 2c9e2 (b:49e2)
+ ld a, [BattleType]
+ cp BATTLETYPE_TUTORIAL
+ jp z, Tutorial_TMHMPocket
+
+ hlcoord 5, 2
+ lb bc, 10, 15
+ ld a, " "
+ call ClearBox
+ call TMHM_GetCurrentPocketPosition
+ 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 TMHMPocket_GetCurrentLineCoord
+ 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 [wPutativeTMHMMove], 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, SCREEN_WIDTH + 9
+ add hl, bc
+ ld [hl], "×"
+ 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 TMHMPocket_GetCurrentLineCoord
+rept 3
+ inc hl
+endr
+ push de
+ ld de, TMHM_String_Cancel
+ call PlaceString
+ pop de
+.done
+ ret
+
+TMHMPocket_GetCurrentLineCoord: ; 2ca86 (b:4a86)
+ hlcoord 5, 0
+ ld bc, 2 * SCREEN_WIDTH
+ ld a, 6
+ sub d
+ ld e, a
+ ; AddNTimes
+.loop
+ add hl, bc
+ dec e
+ jr nz, .loop
+ ret
+; 2ca95 (b:4a95)
+
+Function2ca95: ; 2ca95
+; unreferenced
+ pop hl
+ ld bc, 3
+ add hl, bc
+ predef GetTMHMMove
+ ld a, [wd265]
+ ld [wPutativeTMHMMove], a
+ call GetMoveName
+ push hl
+ call PlaceString
+ pop hl
+ ret
+; 2caae
+
+TMHM_String_Cancel: ; 2caae
+ db "CANCEL@"
+; 2cab5
+
+TMHM_GetCurrentPocketPosition: ; 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
+
+Tutorial_TMHMPocket: ; 2caca (b:4aca)
+ hlcoord 9, 3
+ push de
+ ld de, TMHM_String_Cancel
+ call PlaceString
+ pop de
+ ret
+
+TMHM_PlaySFX_ReadText2: ; 2cad6 (b:4ad6)
+ push de
+ ld de, SFX_READ_TEXT_2
+ call PlaySFX
+ pop de
+ ret
+; 2cadf (b:4adf)
+
+Function2cadf: ; 2cadf
+; unreferenced
+ call ConvertCurItemIntoCurTMHM
+ call .CheckHaveRoomForTMHM
+ ld hl, .NoRoomText
+ jr nc, .print
+ ld hl, .ReceivedText
+.print
+ jp PrintText
+; 2caf0
+
+.NoRoomText: ; 0x2caf0
+ ; You have no room for any more @ S.
+ text_jump UnknownText_0x1c03fa
+ db "@"
+; 0x2caf5
+
+.ReceivedText: ; 0x2caf5
+ ; You received @ !
+ text_jump UnknownText_0x1c0421
+ db "@"
+; 0x2cafa
+
+.CheckHaveRoomForTMHM: ; 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
+
+ConsumeTM: ; 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
+
+CountTMsHMs: ; 2cb2a (b:4b2a)
+ ld b, 0
+ ld c, NUM_TMS + NUM_HMS
+ ld hl, TMsHMs
+.loop
+ ld a, [hli]
+ and a
+ jr z, .skip
+ inc b
+.skip
+ dec c
+ jr nz, .loop
+ 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
diff --git a/engine/town_map.asm b/engine/town_map.asm
index c821e793a..871d4bb89 100755
--- a/engine/town_map.asm
+++ b/engine/town_map.asm
@@ -20,7 +20,7 @@ _TownMap: ; 9191c
call ClearSprites
call DisableLCD
call Function90c4e
- callba Function8cf53
+ callba ClearSpriteAnims
ld a, 8
call SkipMusic
ld a, $e3
@@ -31,7 +31,7 @@ _TownMap: ; 9191c
xor a
ld [hBGMapMode], a
call Function91a04
- call Function3200
+ call WaitBGMap2
ld a, [wd002]
call Function9106a
ld a, [wd003]
@@ -47,7 +47,7 @@ _TownMap: ; 9191c
and a
jr z, .sgb
ld a, $e4
- call Functioncf8
+ call DmgToCgbObjPal0
call DelayFrame
.sgb
@@ -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..a084fc3be 100755
--- a/engine/trade/animation.asm
+++ b/engine/trade/animation.asm
@@ -142,7 +142,7 @@ Function28fdb: ; 28fdb
call ClearTileMap
call DisableLCD
call LoadFontsBattleExtra
- callab Function8cf53
+ callab ClearSpriteAnims
ld a, [hCGB]
and a
jr z, .asm_2900b
@@ -180,23 +180,23 @@ Function28fdb: ; 28fdb
ld [hWX], a
ld a, $90
ld [hWY], a
- callba Function4d7fd
+ callba GetTrademonFrontpic
call EnableLCD
call Function2982b
ld a, [wPlayerTrademonSpecies]
ld hl, wPlayerTrademonDVs
ld de, VTiles0
- call Function29491
+ call TradeAnim_GetFrontpic
ld a, [wOTTrademonSpecies]
ld hl, wOTTrademonDVs
ld de, VTiles0 tile $31
- call Function29491
+ call TradeAnim_GetFrontpic
ld a, [wPlayerTrademonSpecies]
ld de, wPlayerTrademonSpeciesName
- call Function294a9
+ call TradeAnim_GetNickname
ld a, [wOTTrademonSpecies]
ld de, wOTTrademonSpeciesName
- call Function294a9
+ call TradeAnim_GetNickname
call Function297ed
ret
; 29082
@@ -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
@@ -336,7 +336,7 @@ Function2914e: ; 2914e
push de
push af
call DisableLCD
- callab Function8cf53
+ callab ClearSpriteAnims
hlbgcoord 20, 3
ld bc, $c
ld a, $60
@@ -368,10 +368,10 @@ Function2914e: ; 2914e
call WaitBGMap
ld b, SCGB_1B
call GetSGBLayout
- ld a, $e4
+ ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
ld a, $d0
- call Functioncf8
+ call DmgToCgbObjPal0
call NextTradeAnim
ld a, $5c
ld [wcf64], a
@@ -466,7 +466,7 @@ TradeAnim_TubeToPlayer8: ; 29229
call ClearTileMap
call ClearSprites
call DisableLCD
- callab Function8cf53
+ callab ClearSpriteAnims
hlbgcoord 0, 0
ld bc, sScratch - VBGMap0
ld a, " "
@@ -566,6 +566,7 @@ Function292be: ; 292be
hlcoord 17, 3
ld a, $5d
ld [hl], a
+
ld a, $61
ld de, SCREEN_WIDTH
ld c, $3
@@ -574,6 +575,7 @@ Function292be: ; 292be
ld [hl], a
dec c
jr nz, .loop
+
add hl, de
ld a, $5f
ld [hld], a
@@ -644,9 +646,9 @@ TradeAnim_EnterLinkTube: ; 29348
call WaitBGMap
ld b, SCGB_1B
call GetSGBLayout
- ld a, $e4
+ ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
- ld de, $e4e4
+ lb de, %11100100, %11100100 ; 3,2,1,0, 3,2,1,0
call DmgToCgbObjPals
ld de, SFX_POTION
call PlaySFX
@@ -784,9 +786,9 @@ TradeAnim_ShowGivemonData: ; 2942e
ld [TempMonDVs + 1], a
ld b, SCGB_1A
call GetSGBLayout
- ld a, $e4
+ ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
- call Function294bb
+ call TradeAnim_ShowGivemonFrontpic
ld a, [wPlayerTrademonSpecies]
call GetCryIndex
@@ -810,20 +812,20 @@ TradeAnim_ShowGetmonData: ; 29461
ld [TempMonDVs + 1], a
ld b, SCGB_1A
call GetSGBLayout
- ld a, $e4
+ ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
- call Function294c0
+ call TradeAnim_ShowGetmonFrontpic
call TradeAnim_Next
ret
; 29487
TradeAnim_AnimateFrontpic: ; 29487
- callba Function4d81e
+ callba AnimateTrademonFrontpic
call TradeAnim_Next
ret
; 29491
-Function29491: ; 29491
+TradeAnim_GetFrontpic: ; 29491
push de
push af
predef GetUnownLetter
@@ -836,7 +838,7 @@ Function29491: ; 29491
ret
; 294a9
-Function294a9: ; 294a9
+TradeAnim_GetNickname: ; 294a9
push de
ld [wd265], a
call GetPokemonName
@@ -847,14 +849,13 @@ Function294a9: ; 294a9
ret
; 294bb
-Function294bb: ; 294bb
+TradeAnim_ShowGivemonFrontpic: ; 294bb
ld de, VTiles0
- jr Function294c3
+ jr TradeAnim_ShowFrontpic
-Function294c0: ; 294c0
+TradeAnim_ShowGetmonFrontpic: ; 294c0
ld de, VTiles0 tile $31
-
-Function294c3: ; 294c3
+TradeAnim_ShowFrontpic: ; 294c3
call DelayFrame
ld hl, VTiles2
lb bc, 10, $31
@@ -1087,8 +1088,8 @@ TradeAnim_Poof: ; 29649
; 29660
TradeAnim_BulgeThroughTube: ; 29660
- ld a, $e4
- call Functioncf8
+ ld a, %11100100 ; 3,2,1,0
+ call DmgToCgbObjPal0
depixel 5, 11
ld a, SPRITE_ANIM_INDEX_10
call _InitSpriteAnimStruct
@@ -1374,13 +1375,13 @@ Function297db: ; 297db
Function297ed: ; 297ed
ld a, [hSGB]
and a
- ld a, $e4
+ ld a, %11100100 ; 3,2,1,0
jr z, .asm_297f6
ld a, $f0
.asm_297f6
- call Functioncf8
- ld a, $e4
+ call DmgToCgbObjPal0
+ ld a, %11100100 ; 3,2,1,0
call DmgToCgbBGPals
ret
; 297ff
diff --git a/engine/unown_puzzle.asm b/engine/unown_puzzle.asm
new file mode 100755
index 000000000..22f6d3d22
--- /dev/null
+++ b/engine/unown_puzzle.asm
@@ -0,0 +1,878 @@
+puzcoord EQUS "* 6 +"
+PUZZLE_BORDER EQU $ee
+PUZZLE_VOID EQU $ef
+
+UnownPuzzle: ; e1190
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ xor a
+ ld [hBGMapMode], a
+ call DisableLCD
+ ld hl, wMisc
+ ld bc, wMiscEnd - wMisc
+ xor a
+ call ByteFill
+ ld hl, UnownPuzzleCursorGFX
+ ld de, VTiles1 tile $60
+ ld bc, 4 tiles
+ call CopyBytes
+ ld hl, UnownPuzzleStartCancelLZ
+ ld de, VTiles1 tile $6d
+ call Decompress
+ call LoadUnownPuzzlePiecesGFX
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, PUZZLE_BORDER
+ call ByteFill
+ hlcoord 4, 3
+ lb bc, 12, 12
+ ld a, PUZZLE_VOID
+ call UnownPuzzle_FillBox
+ call InitUnownPuzzlePiecePositions
+ call UnownPuzzle_UpdateTilemap
+ call PlaceStartCancelBox
+ xor a
+ ld [hSCY], a
+ ld [hSCX], a
+ ld [rWY], a
+ ld [wJumptableIndex], a
+ ld [wHoldingUnownPuzzlePiece], a
+ ld [wUnownPuzzleCursorPosition], a
+ ld [wUnownPuzzleHeldPiece], a
+ ld a, $93
+ ld [rLCDC], a
+ call WaitBGMap
+ ld b, SCGB_18
+ call GetSGBLayout
+ ld a, $e4
+ call DmgToCgbBGPals
+ ld a, $24
+ call DmgToCgbObjPal0
+ xor a
+ ld [wSolvedUnownPuzzle], a
+ call DelayFrame
+.loop
+ call JoyTextDelay
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .quit
+ call UnownPuzzleJumptable
+ ld a, [wHoldingUnownPuzzlePiece]
+ and a
+ jr nz, .holding_piece
+ ld a, [hVBlankCounter]
+ and $10
+ jr z, .clear
+.holding_piece
+ call RedrawUnownPuzzlePieces
+ jr .next
+
+.clear
+ call ClearSprites
+.next
+ call DelayFrame
+ jr .loop
+
+.quit
+ pop af
+ ld [hInMenu], a
+ call ClearBGPalettes
+ call ClearTileMap
+ call ClearSprites
+ ld a, $e3
+ ld [rLCDC], a
+ ret
+; e124e
+
+InitUnownPuzzlePiecePositions: ; e124e
+ ld c, 1
+ ld b, 16
+.load_loop
+ call Random
+ and $f
+ ld hl, .PuzzlePieceInitialPositions
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld e, [hl]
+ ld hl, wPuzzlePieces
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .load_loop
+ ld [hl], c
+ inc c
+ dec b
+ jr nz, .load_loop
+ ret
+; e126d
+
+.PuzzlePieceInitialPositions: ; e126d
+initpuzcoord: macro
+rept _NARG / 2
+ db \1 puzcoord \2
+ shift
+ shift
+endr
+endm
+ initpuzcoord 0,0, 0,1, 0,2, 0,3, 0,4, 0,5
+ initpuzcoord 1,0, 1,5
+ initpuzcoord 2,0, 2,5
+ initpuzcoord 3,0, 3,5
+ initpuzcoord 4,0, 4,5
+ initpuzcoord 5,0, 5,5
+ ; START > CANCEL
+; e127d
+
+PlaceStartCancelBox: ; e127d
+ call PlaceStartCancelBoxBorder
+ hlcoord 5, 16
+ ld a, $f6
+ ld c, 10
+.loop
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .loop
+ ret
+; e128d
+
+PlaceStartCancelBoxBorder: ; e128d
+ hlcoord 4, 15
+ ld a, $f0
+ ld [hli], a
+ ld bc, 10
+ ld a, $f1
+ call ByteFill
+ hlcoord 15, 15
+ ld a, $f2
+ ld [hli], a
+ hlcoord 4, 16
+ ld a, $f3
+ ld [hli], a
+ ld bc, 10
+ ld a, $ef
+ call ByteFill
+ hlcoord 15, 16
+ ld a, $f3
+ ld [hli], a
+ hlcoord 4, 17
+ ld a, $f4
+ ld [hli], a
+ ld bc, 10
+ ld a, $f1
+ call ByteFill
+ hlcoord 15, 17
+ ld a, $f5
+ ld [hl], a
+ ret
+; e12ca
+
+UnownPuzzleJumptable: ; e12ca
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, 0
+ ld hl, .Jumptable
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp [hl]
+; e12d9
+
+.Jumptable: ; e12d9
+ jumptable_start
+ jumptable .Function
+; e12db
+
+.Function: ; e12db
+ ld a, [hJoyPressed]
+ and START
+ jp nz, UnownPuzzle_Quit
+ ld a, [hJoyPressed]
+ and A_BUTTON
+ jp nz, UnownPuzzle_A
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_UP
+ jr nz, .d_up
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .d_down
+ ld a, [hl]
+ and D_LEFT
+ jr nz, .d_left
+ ld a, [hl]
+ and D_RIGHT
+ jr nz, .d_right
+ ret
+
+.d_up
+ ld hl, wUnownPuzzleCursorPosition
+ ld a, [hl]
+ cp 1 puzcoord 0
+ ret c
+ sub $6
+ ld [hl], a
+ jr .done_joypad
+
+.d_down
+ ld hl, wUnownPuzzleCursorPosition
+ ld a, [hl]
+ cp 4 puzcoord 1
+ ret z
+ cp 4 puzcoord 2
+ ret z
+ cp 4 puzcoord 3
+ ret z
+ cp 4 puzcoord 4
+ ret z
+ cp 5 puzcoord 0
+ ret nc
+ add $6
+ ld [hl], a
+ jr .done_joypad
+
+.d_left
+ ld hl, wUnownPuzzleCursorPosition
+ ld a, [hl]
+ and a
+ ret z
+ cp 1 puzcoord 0
+ ret z
+ cp 2 puzcoord 0
+ ret z
+ cp 3 puzcoord 0
+ ret z
+ cp 4 puzcoord 0
+ ret z
+ cp 5 puzcoord 0
+ ret z
+ cp 5 puzcoord 5
+ jr z, .left_overflow
+ dec [hl]
+ jr .done_joypad
+
+.left_overflow
+ ld [hl], 5 puzcoord 0
+ jr .done_joypad
+
+.d_right
+ ld hl, wUnownPuzzleCursorPosition
+ ld a, [hl]
+ cp 0 puzcoord 5
+ ret z
+ cp 1 puzcoord 5
+ ret z
+ cp 2 puzcoord 5
+ ret z
+ cp 3 puzcoord 5
+ ret z
+ cp 4 puzcoord 5
+ ret z
+ cp 5 puzcoord 5
+ ret z
+ cp 5 puzcoord 0
+ jr z, .right_overflow
+ inc [hl]
+ jr .done_joypad
+
+.right_overflow
+ ld [hl], 5 puzcoord 5
+
+.done_joypad
+ ld a, [wHoldingUnownPuzzlePiece]
+ and a
+ jr nz, .holding_piece
+ ld de, SFX_POUND
+ jr .play_sfx
+
+.holding_piece
+ ld de, SFX_MOVE_PUZZLE_PIECE
+
+.play_sfx
+ call PlaySFX
+ ret
+; e1376
+
+UnownPuzzle_A: ; e1376
+ ld a, [wHoldingUnownPuzzlePiece]
+ and a
+ jr nz, .TryPlacePiece
+ call UnownPuzzle_CheckCurrentTileOccupancy
+ and a
+ jr z, UnownPuzzle_InvalidAction
+ ld de, SFX_MEGA_KICK
+ call PlaySFX
+ ld [hl], 0
+ ld [wUnownPuzzleHeldPiece], a
+ call RedrawUnownPuzzlePieces
+ call FillUnoccupiedPuzzleSpace
+ call WaitBGMap
+ call WaitSFX
+ ld a, TRUE
+ ld [wHoldingUnownPuzzlePiece], a
+ ret
+
+.TryPlacePiece
+ call UnownPuzzle_CheckCurrentTileOccupancy
+ and a
+ jr nz, UnownPuzzle_InvalidAction
+ ld de, SFX_PLACE_PUZZLE_PIECE_DOWN
+ call PlaySFX
+ ld a, [wUnownPuzzleHeldPiece]
+ ld [hl], a
+ call PlaceUnownPuzzlePieceGFX
+ call WaitBGMap
+ xor a
+ ld [wUnownPuzzleHeldPiece], a
+ call RedrawUnownPuzzlePieces
+ xor a
+ ld [wHoldingUnownPuzzlePiece], a
+ call WaitSFX
+ call CheckSolvedUnownPuzzle
+ ret nc
+
+; You solved the puzzle!
+ call PlaceStartCancelBoxBorder
+ call ClearSprites
+ ld de, SFX_1ST_PLACE
+ call PlaySFX
+ call WaitSFX
+ call SimpleWaitPressAorB
+ ld a, TRUE
+ ld [wSolvedUnownPuzzle], a
+UnownPuzzle_Quit: ; e13de
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+UnownPuzzle_InvalidAction: ; e13e4
+ ld de, SFX_WRONG
+ call PlaySFX
+ call WaitSFX
+ ret
+; e13ee
+
+UnownPuzzle_FillBox: ; e13ee
+ ld de, SCREEN_WIDTH
+.row
+ push bc
+ push hl
+.col
+ ld [hli], a
+ dec c
+ jr nz, .col
+ pop hl
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .row
+ ret
+; e13fe
+
+UnownPuzzle_UpdateTilemap: ; e13fe
+ xor a
+ ld [wUnownPuzzleCursorPosition], a
+ ld c, 6 * 6
+.loop
+ push bc
+ call UnownPuzzle_CheckCurrentTileOccupancy
+ ld [wUnownPuzzleHeldPiece], a
+ and a
+ jr z, .not_holding_piece
+ call PlaceUnownPuzzlePieceGFX
+ jr .next
+
+.not_holding_piece
+ call FillUnoccupiedPuzzleSpace
+
+.next
+ ld hl, wUnownPuzzleCursorPosition
+ inc [hl]
+ pop bc
+ dec c
+ jr nz, .loop
+ ret
+; e141f
+
+PlaceUnownPuzzlePieceGFX: ; e141f
+ ld a, $2 ; tilemap coords
+ call GetUnownPuzzleCoordData
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push hl
+ call GetCurrentPuzzlePieceVTileCorner
+ pop hl
+ ld de, SCREEN_WIDTH
+ ld b, 3
+.row
+ ld c, 3
+ push hl
+.col
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .col
+ add 9
+ pop hl
+ add hl, de
+ dec b
+ jr nz, .row
+ ret
+; e1441
+
+FillUnoccupiedPuzzleSpace: ; e1441
+ ld a, 2 ; tilemap coords
+ call GetUnownPuzzleCoordData
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push hl
+ ld a, 4 ; tile
+ call GetUnownPuzzleCoordData
+ ld a, [hl]
+ pop hl
+ ld de, SCREEN_WIDTH
+ ld b, 3
+.row
+ ld c, 3
+ push hl
+.col
+ ld [hli], a
+ dec c
+ jr nz, .col
+ pop hl
+ add hl, de
+ dec b
+ jr nz, .row
+ ret
+; e1463
+
+GetUnownPuzzleCoordData: ; e1463
+ ld e, a
+ ld d, 0
+ ld hl, UnownPuzzleCoordData
+ add hl, de
+ ld a, [wUnownPuzzleCursorPosition]
+ ld e, a
+rept 6
+ add hl, de
+endr
+ ret
+; e1475
+
+UnownPuzzle_CheckCurrentTileOccupancy: ; e1475
+ ld hl, wPuzzlePieces
+ ld a, [wUnownPuzzleCursorPosition]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ ret
+; e1481
+
+GetCurrentPuzzlePieceVTileCorner: ; e1481
+ ld a, [wUnownPuzzleHeldPiece]
+ ld hl, .Corners
+ add l
+ ld l, a
+ ld a, $0
+ adc h
+ ld h, a
+ ld a, [hl]
+ ret
+; e148f
+
+.Corners: ; e148f
+; 00, 01, 02
+; 0c, 0d, 0e
+; 18, 19, 1a
+ db $e0 ; no piece selected
+ db $00, $03, $06, $09
+ db $24, $27, $2a, $2d
+ db $48, $4b, $4e, $51
+ db $6c, $6f, $72, $75
+; e14a0
+
+CheckSolvedUnownPuzzle: ; e14a0
+ ld hl, .SolvedPuzzleConfiguration
+ ld de, wPuzzlePieces
+ ld c, 6 * 6
+.loop
+ ld a, [de]
+ cp [hl]
+ jr nz, .not_solved
+ inc de
+ inc hl
+ dec c
+ jr nz, .loop
+ scf
+ ret
+
+.not_solved
+ and a
+ ret
+; e14b5
+
+.SolvedPuzzleConfiguration: ; e14b5
+ db $00, $00, $00, $00, $00, $00
+ db $00, $01, $02, $03, $04, $00
+ db $00, $05, $06, $07, $08, $00
+ db $00, $09, $0a, $0b, $0c, $00
+ db $00, $0d, $0e, $0f, $10, $00
+ db $00, $00, $00, $00, $00, $00
+; e14d9
+
+RedrawUnownPuzzlePieces: ; e14d9
+ call GetCurrentPuzzlePieceVTileCorner
+ ld [wd002], a
+ xor a
+ call GetUnownPuzzleCoordData ; get pixel positions
+ ld a, [hli]
+ ld b, [hl]
+ ld c, a
+ ld a, [wd002]
+ cp $e0
+ jr z, .NoPiece
+ ld hl, .OAM_HoldingPiece
+ jr .load
+
+.NoPiece
+ ld hl, .OAM_NotHoldingPiece
+
+.load
+ ld de, Sprites
+.loop
+ ld a, [hli]
+ cp -1
+ ret z
+ add b
+ ld [de], a
+ inc de
+ ld a, [hli]
+ add c
+ ld [de], a
+ inc de
+ ld a, [wd002]
+ add [hl]
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ jr .loop
+; e150f
+
+.OAM_HoldingPiece: ; e150f
+ dsprite -1, -4, -1, -4, $00, $00
+ dsprite -1, -4, 0, -4, $01, $00
+ dsprite -1, -4, 0, 4, $02, $00
+ dsprite 0, -4, -1, -4, $0c, $00
+ dsprite 0, -4, 0, -4, $0d, $00
+ dsprite 0, -4, 0, 4, $0e, $00
+ dsprite 0, 4, -1, -4, $18, $00
+ dsprite 0, 4, 0, -4, $19, $00
+ dsprite 0, 4, 0, 4, $1a, $00
+ db -1
+
+.OAM_NotHoldingPiece: ; e1534
+ dsprite -1, -4, -1, -4, $00, $00
+ dsprite -1, -4, 0, -4, $01, $00
+ dsprite -1, -4, 0, 4, $00, $20 ; xflip
+ dsprite 0, -4, -1, -4, $02, $00
+ dsprite 0, -4, 0, -4, $03, $00
+ dsprite 0, -4, 0, 4, $02, $20 ; xflip
+ dsprite 0, 4, -1, -4, $00, $40 ; yflip
+ dsprite 0, 4, 0, -4, $01, $40 ; yflip
+ dsprite 0, 4, 0, 4, $00, $60 ; xflip, yflip
+ db -1
+
+UnownPuzzleCoordData: ; e1559
+
+puzzle_coords: macro
+ dbpixel \1, \2, \3, \4
+ dwcoord \5, \6
+ db \7, \8
+endm
+; OAM coords, tilemap coords, vacant tile, filler
+ puzzle_coords 3, 3, 4, 4, 1, 0, PUZZLE_BORDER, 0
+ puzzle_coords 6, 3, 4, 4, 4, 0, PUZZLE_BORDER, 0
+ puzzle_coords 9, 3, 4, 4, 7, 0, PUZZLE_BORDER, 0
+ puzzle_coords 12, 3, 4, 4, 10, 0, PUZZLE_BORDER, 0
+ puzzle_coords 15, 3, 4, 4, 13, 0, PUZZLE_BORDER, 0
+ puzzle_coords 18, 3, 4, 4, 16, 0, PUZZLE_BORDER, 0
+
+ puzzle_coords 3, 6, 4, 4, 1, 3, PUZZLE_BORDER, 0
+ puzzle_coords 6, 6, 4, 4, 4, 3, PUZZLE_VOID, 0
+ puzzle_coords 9, 6, 4, 4, 7, 3, PUZZLE_VOID, 0
+ puzzle_coords 12, 6, 4, 4, 10, 3, PUZZLE_VOID, 0
+ puzzle_coords 15, 6, 4, 4, 13, 3, PUZZLE_VOID, 0
+ puzzle_coords 18, 6, 4, 4, 16, 3, PUZZLE_BORDER, 0
+
+ puzzle_coords 3, 9, 4, 4, 1, 6, PUZZLE_BORDER, 0
+ puzzle_coords 6, 9, 4, 4, 4, 6, PUZZLE_VOID, 0
+ puzzle_coords 9, 9, 4, 4, 7, 6, PUZZLE_VOID, 0
+ puzzle_coords 12, 9, 4, 4, 10, 6, PUZZLE_VOID, 0
+ puzzle_coords 15, 9, 4, 4, 13, 6, PUZZLE_VOID, 0
+ puzzle_coords 18, 9, 4, 4, 16, 6, PUZZLE_BORDER, 0
+
+ puzzle_coords 3, 12, 4, 4, 1, 9, PUZZLE_BORDER, 0
+ puzzle_coords 6, 12, 4, 4, 4, 9, PUZZLE_VOID, 0
+ puzzle_coords 9, 12, 4, 4, 7, 9, PUZZLE_VOID, 0
+ puzzle_coords 12, 12, 4, 4, 10, 9, PUZZLE_VOID, 0
+ puzzle_coords 15, 12, 4, 4, 13, 9, PUZZLE_VOID, 0
+ puzzle_coords 18, 12, 4, 4, 16, 9, PUZZLE_BORDER, 0
+
+ puzzle_coords 3, 15, 4, 4, 1, 12, PUZZLE_BORDER, 0
+ puzzle_coords 6, 15, 4, 4, 4, 12, PUZZLE_VOID, 0
+ puzzle_coords 9, 15, 4, 4, 7, 12, PUZZLE_VOID, 0
+ puzzle_coords 12, 15, 4, 4, 10, 12, PUZZLE_VOID, 0
+ puzzle_coords 15, 15, 4, 4, 13, 12, PUZZLE_VOID, 0
+ puzzle_coords 18, 15, 4, 4, 16, 12, PUZZLE_BORDER, 0
+
+ puzzle_coords 3, 18, 4, 4, 1, 15, PUZZLE_BORDER, 0
+ puzzle_coords 6, 18, 4, 4, 4, 15, PUZZLE_BORDER, 0
+ puzzle_coords 9, 18, 4, 4, 7, 15, PUZZLE_BORDER, 0
+ puzzle_coords 12, 18, 4, 4, 10, 15, PUZZLE_BORDER, 0
+ puzzle_coords 15, 18, 4, 4, 13, 15, PUZZLE_BORDER, 0
+ puzzle_coords 18, 18, 4, 4, 16, 15, PUZZLE_BORDER, 0
+
+ConvertLoadedPuzzlePieces: ; e1631
+ ld hl, VTiles2
+ ld de, VTiles0
+ ld b, 6
+.loop
+ push bc
+ push hl
+ push hl
+ call .EnlargePuzzlePieceTiles
+ pop hl
+ ld bc, 1 tiles / 2
+ add hl, bc
+ call .EnlargePuzzlePieceTiles
+ pop hl
+ ld bc, 6 tiles
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .loop
+ call UnownPuzzle_AddPuzzlePieceBorders
+ ret
+; e1654
+
+.EnlargePuzzlePieceTiles: ; e1654
+; double size
+ ld c, 6
+.loop1
+ push bc
+ push hl
+ push hl
+ ld c, 4
+.loop2
+ push bc
+ ld a, [hli]
+ and $f0
+ swap a
+ call .GetEnlargedTile
+ ld c, a
+ ld a, [hli]
+ and $f0
+ swap a
+ call .GetEnlargedTile
+ ld b, a
+ ld a, c
+ ld [de], a
+ inc de
+ ld a, b
+ ld [de], a
+ inc de
+ ld a, c
+ ld [de], a
+ inc de
+ ld a, b
+ ld [de], a
+ inc de
+ pop bc
+ dec c
+ jr nz, .loop2
+ pop hl
+ ld c, 4
+.loop3
+ push bc
+ ld a, [hli]
+ and $f
+ call .GetEnlargedTile
+ ld c, a
+ ld a, [hli]
+ and $f
+ call .GetEnlargedTile
+ ld b, a
+ ld a, c
+ ld [de], a
+ inc de
+ ld a, b
+ ld [de], a
+ inc de
+ ld a, c
+ ld [de], a
+ inc de
+ ld a, b
+ ld [de], a
+ inc de
+ pop bc
+ dec c
+ jr nz, .loop3
+ pop hl
+ ld bc, 1 tiles
+ add hl, bc
+ pop bc
+ dec c
+ jr nz, .loop1
+ ret
+; e16aa
+
+.GetEnlargedTile: ; e16aa
+ push hl
+ ld hl, .EnlargedTiles
+ add l
+ ld l, a
+ ld a, 0
+ adc h
+ ld h, a
+ ld a, [hl]
+ pop hl
+ ret
+; e16b7
+
+.EnlargedTiles: ; e16b7
+
+x = 0
+rept 16
+ db ((x & %1000) * %11000) + ((x & %0100) * %1100) + ((x & %0010) * %110) + ((x & %0001) * %11)
+x = x + 1
+endr
+; e16c7
+
+UnownPuzzle_AddPuzzlePieceBorders: ; e16c7
+ ld hl, GFXHeaders
+ ld a, 8
+.loop
+ push af
+ push hl
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call .LoadGFX
+ pop hl
+rept 4
+ inc hl
+endr
+ pop af
+ dec a
+ jr nz, .loop
+ ret
+; e16e2
+
+.LoadGFX: ; e16e2
+ lb bc, 4, 4
+.loop1
+ push bc
+
+.loop2
+ push de
+ push hl
+
+ ld b, 1 tiles
+.loop3
+ ld a, [de]
+ or [hl]
+ ld [hli], a
+ inc de
+ dec b
+ jr nz, .loop3
+
+ pop hl
+ ld de, 3 tiles
+ add hl, de
+ pop de
+ dec c
+ jr nz, .loop2
+
+ ld bc, 24 tiles
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .loop1
+ ret
+; e1703
+
+GFXHeaders: ; e1703
+ dw .TileBordersGFX + 0 tiles, VTiles0 tile $00
+ dw .TileBordersGFX + 1 tiles, VTiles0 tile $01
+ dw .TileBordersGFX + 2 tiles, VTiles0 tile $02
+ dw .TileBordersGFX + 3 tiles, VTiles0 tile $0c
+ dw .TileBordersGFX + 4 tiles, VTiles0 tile $0e
+ dw .TileBordersGFX + 5 tiles, VTiles0 tile $18
+ dw .TileBordersGFX + 6 tiles, VTiles0 tile $19
+ dw .TileBordersGFX + 7 tiles, VTiles0 tile $1a
+; e1723
+
+.TileBordersGFX: ; e1723
+INCBIN "gfx/unown_puzzle/tile_borders.2bpp"
+
+LoadUnownPuzzlePiecesGFX: ; e17a3
+ ld a, [ScriptVar]
+ and 3
+ ld e, a
+ ld d, 0
+ ld hl, .LZPointers
+rept 2
+ add hl, de
+endr
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, VTiles2
+ call Decompress
+ call ConvertLoadedPuzzlePieces
+ ret
+; e17bd
+
+.LZPointers: ; e17bd
+ dw KabutoPuzzleLZ
+ dw OmanytePuzzleLZ
+ dw AerodactylPuzzleLZ
+ dw HoOhPuzzleLZ
+; e17c5
+
+UnownPuzzleCursorGFX: ; e17c5
+INCBIN "gfx/unown_puzzle/cursor.2bpp"
+
+UnownPuzzleStartCancelLZ: ; e1805
+INCBIN "gfx/unown_puzzle/start_cancel.2bpp.lz"
+
+HoOhPuzzleLZ: ; e18ab
+INCBIN "gfx/unown_puzzle/hooh.2bpp.lz"
+
+AerodactylPuzzleLZ: ; e19fb
+INCBIN "gfx/unown_puzzle/aerodactyl.2bpp.lz"
+
+KabutoPuzzleLZ: ; e1bab
+INCBIN "gfx/unown_puzzle/kabuto.2bpp.lz"
+
+OmanytePuzzleLZ: ; e1c9b
+INCBIN "gfx/unown_puzzle/omanyte.2bpp.lz"
diff --git a/engine/unowndex.asm b/engine/unowndex.asm
new file mode 100755
index 000000000..8c4332e96
--- /dev/null
+++ b/engine/unowndex.asm
@@ -0,0 +1,119 @@
+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
+
+
+PrintUnownWord: ; 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
+.loop
+ ld a, [de]
+ cp -1
+ ret z
+ inc de
+ ld [hli], a
+ jr .loop
+; 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
diff --git a/engine/variables.asm b/engine/variables.asm
index a115e2c37..0f6cfc2c2 100755
--- a/engine/variables.asm
+++ b/engine/variables.asm
@@ -38,34 +38,34 @@ endr
; $00: copy [de] to StringBuffer2
; $40: return address in de
; $80: call function
- dwb StringBuffer2, RETVAR_STRBUF2
- dwb PartyCount, RETVAR_STRBUF2
- dwb .BattleResult, RETVAR_EXECUTE
- dwb BattleType, RETVAR_ADDR_DE
- dwb TimeOfDay, RETVAR_STRBUF2
- dwb .CountCaughtMons, RETVAR_EXECUTE
- dwb .CountSeenMons, RETVAR_EXECUTE
- dwb .CountBadges, RETVAR_EXECUTE
- dwb PlayerState, RETVAR_ADDR_DE
- dwb .PlayerFacing, RETVAR_EXECUTE
- dwb hHours, RETVAR_STRBUF2
- dwb .DayOfWeek, RETVAR_EXECUTE
- dwb MapGroup, RETVAR_STRBUF2
- dwb MapNumber, RETVAR_STRBUF2
- dwb .UnownCaught, RETVAR_EXECUTE
- dwb wPermission, RETVAR_STRBUF2
- dwb .BoxFreeSpace, RETVAR_EXECUTE
- dwb wBugContestMinsRemaining, RETVAR_STRBUF2
- dwb XCoord, RETVAR_STRBUF2
- dwb YCoord, RETVAR_STRBUF2
- dwb wSpecialPhoneCallID, RETVAR_STRBUF2
- dwb wcf64, RETVAR_STRBUF2
- dwb wKurtApricornQuantity, RETVAR_STRBUF2
- dwb wCurrentCaller, RETVAR_ADDR_DE
- dwb wBlueCardBalance, RETVAR_ADDR_DE
- dwb wBuenasPassword, RETVAR_ADDR_DE
- dwb wdc58, RETVAR_STRBUF2
- dwb NULL, RETVAR_STRBUF2
+ dwb StringBuffer2, RETVAR_STRBUF2
+ dwb PartyCount, RETVAR_STRBUF2
+ dwb .BattleResult, RETVAR_EXECUTE
+ dwb BattleType, RETVAR_ADDR_DE
+ dwb TimeOfDay, RETVAR_STRBUF2
+ dwb .CountCaughtMons, RETVAR_EXECUTE
+ dwb .CountSeenMons, RETVAR_EXECUTE
+ dwb .CountBadges, RETVAR_EXECUTE
+ dwb PlayerState, RETVAR_ADDR_DE
+ dwb .PlayerFacing, RETVAR_EXECUTE
+ dwb hHours, RETVAR_STRBUF2
+ dwb .DayOfWeek, RETVAR_EXECUTE
+ dwb MapGroup, RETVAR_STRBUF2
+ dwb MapNumber, RETVAR_STRBUF2
+ dwb .UnownCaught, RETVAR_EXECUTE
+ dwb wPermission, RETVAR_STRBUF2
+ dwb .BoxFreeSpace, RETVAR_EXECUTE
+ dwb wBugContestMinsRemaining, RETVAR_STRBUF2
+ dwb XCoord, RETVAR_STRBUF2
+ dwb YCoord, RETVAR_STRBUF2
+ dwb wSpecialPhoneCallID, RETVAR_STRBUF2
+ dwb wNrOfBeatenBattleTowerTrainers, RETVAR_STRBUF2
+ dwb wKurtApricornQuantity, RETVAR_STRBUF2
+ dwb wCurrentCaller, RETVAR_ADDR_DE
+ dwb wBlueCardBalance, RETVAR_ADDR_DE
+ dwb wBuenasPassword, RETVAR_ADDR_DE
+ dwb wKenjiBreakTimer, RETVAR_STRBUF2
+ dwb NULL, RETVAR_STRBUF2
; 806c5
.CountCaughtMons: ; 806c5
diff --git a/engine/warp_connection.asm b/engine/warp_connection.asm
new file mode 100755
index 000000000..26ea2c2c9
--- /dev/null
+++ b/engine/warp_connection.asm
@@ -0,0 +1,439 @@
+
+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 [wMapTimeOfDay], 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 [wOverworldMapAnchor], a
+ ld a, h
+ ld [wOverworldMapAnchor + 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 [wOverworldMapAnchor], a
+ ld a, h
+ ld [wOverworldMapAnchor + 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 [wOverworldMapAnchor], a
+ ld a, h
+ ld [wOverworldMapAnchor + 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 [wOverworldMapAnchor], a
+ ld a, h
+ ld [wOverworldMapAnchor + 1], a
+ ; fallthrough
+; 1046c4
+
+EnteredConnection: ; 1046c4
+ scf
+ ret
+; 1046c6
+
+LoadWarpData: ; 1046c6
+ call .SaveDigWarp
+ call .SetSpawn
+ ld a, [wNextWarp]
+ ld [WarpNumber], a
+ ld a, [wNextMapGroup]
+ ld [MapGroup], a
+ ld a, [wNextMapNumber]
+ ld [MapNumber], a
+ ret
+
+.SaveDigWarp: ; 1046df (41:46df)
+ call GetMapPermission
+ call CheckOutdoorMap
+ ret nz
+ ld a, [wNextMapGroup]
+ ld b, a
+ ld a, [wNextMapNumber]
+ ld c, a
+ call GetAnyMapPermission
+ call CheckIndoorMap
+ ret nz
+ ld a, [wPrevMapGroup]
+ cp GROUP_MOUNT_MOON_SQUARE
+ jr nz, .not_mt_moon_or_tin_tower
+ ld a, [wPrevMapNumber]
+ cp MAP_MOUNT_MOON_SQUARE
+ ret z
+ cp MAP_TIN_TOWER_ROOF
+ ret z
+.not_mt_moon_or_tin_tower
+ ld a, [wPrevWarp]
+ ld [wDigWarp], a
+ ld a, [wPrevMapGroup]
+ ld [wDigMapGroup], a
+ ld a, [wPrevMapNumber]
+ ld [wDigMapNumber], a
+ ret
+
+.SetSpawn: ; 104718 (41:4718)
+ call GetMapPermission
+ call CheckOutdoorMap
+ ret nz
+ ld a, [wNextMapGroup]
+ ld b, a
+ ld a, [wNextMapNumber]
+ ld c, a
+ call GetAnyMapPermission
+ call CheckIndoorMap
+ ret nz
+ ld a, [wNextMapGroup]
+ ld b, a
+ ld a, [wNextMapNumber]
+ ld c, a
+ call GetAnyMapTileset
+ ld a, c
+ cp TILESET_POKECENTER
+ jr z, .pokecenter_pokecom
+ cp TILESET_POKECOM_CENTER
+ jr z, .pokecenter_pokecom
+ ret
+.pokecenter_pokecom
+ ld a, [wPrevMapGroup]
+ ld [wLastSpawnMapGroup], a
+ ld a, [wPrevMapNumber]
+ ld [wLastSpawnMapNumber], a
+ ret
+
+LoadMapTimeOfDay: ; 104750
+ ld hl, VramState
+ res 6, [hl]
+ ld a, $1
+ ld [wSpriteUpdatesEnabled], a
+ callba ReplaceTimeOfDayPals
+ callba UpdateTimeOfDayPal
+ 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
+ ld bc, VBGMap1 - VBGMap0
+ hlbgcoord 0, 0
+ call ByteFill
+ pop af
+ ld [rVBK], a
+ ld a, $60
+ ld bc, VBGMap1 - VBGMap0
+ 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, BG_MAP_WIDTH - 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 LoadOverworldFont
+ ret
+
+LoadMapPalettes: ; 1047eb
+ ld b, SCGB_MAPPALS
+ 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 %00011100
+ 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 [wOverworldMapAnchor], a
+ ld a, h
+ ld [wOverworldMapAnchor + 1], a
+ ld a, [YCoord]
+ and $1
+ ld [wMetatileStandingY], a
+ ld a, [XCoord]
+ and $1
+ ld [wMetatileStandingX], a
+ ret
+; 1048ba
diff --git a/engine/wildmons.asm b/engine/wildmons.asm
index 6f39e19dc..ff29c99b5 100755
--- a/engine/wildmons.asm
+++ b/engine/wildmons.asm
@@ -1,30 +1,34 @@
LoadWildMonData: ; 29ff8
call _GrassWildmonLookup
jr c, .copy
- ld hl, wd25a
+ ld hl, wMornEncounterRate
xor a
ld [hli], a
ld [hli], a
ld [hl], a
jr .done_copy
+
.copy
inc hl
inc hl
- ld de, wd25a
- ld bc, $3
+ ld de, wMornEncounterRate
+ ld bc, 3
call CopyBytes
.done_copy
call _WaterWildmonLookup
- ld a, $0
+ ld a, 0
jr nc, .no_copy
inc hl
inc hl
ld a, [hl]
.no_copy
- ld [wd25d], a
+ ld [wWaterEncounterRate], a
ret
-Function2a01f: ; 2a01f
+FindNest: ; 2a01f
+; Parameters:
+; e: 0 = Johto, 1 = Kanto
+; wNamedObjectIndexBuffer: species
hlcoord 0, 0
ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
xor a
@@ -34,25 +38,24 @@ Function2a01f: ; 2a01f
jr nz, .kanto
decoord 0, 0
ld hl, JohtoGrassWildMons
- call Function2a052
+ call .FindGrass
ld hl, JohtoWaterWildMons
- call Function2a06e
- call Function2a0b7
- call Function2a0cf
+ call .FindWater
+ call .RoamMon1
+ call .RoamMon2
ret
.kanto
decoord 0, 0
ld hl, KantoGrassWildMons
- call Function2a052
+ call .FindGrass
ld hl, KantoWaterWildMons
- jp Function2a06e
+ jp .FindWater
; 2a052
-Function2a052: ; 2a052
-.loop
+.FindGrass: ; 2a052
ld a, [hl]
- cp $ff
+ cp -1
ret z
push hl
ld a, [hli]
@@ -62,23 +65,22 @@ Function2a052: ; 2a052
rept 3
inc hl
endr
- ld a, $15
- call Function2a088
- jr nc, .next
+ ld a, NUM_WILDMONS_PER_AREA_TIME_OF_DAY * 3
+ call .SearchMapForMon
+ jr nc, .next_grass
ld [de], a
inc de
-.next
+.next_grass
pop hl
- ld bc, $2f
+ ld bc, WILDMON_GRASS_STRUCTURE_LENGTH
add hl, bc
- jr .loop
+ jr .FindGrass
; 2a06e
-Function2a06e: ; 2a06e
-.loop
+.FindWater: ; 2a06e
ld a, [hl]
- cp $ff
+ cp -1
ret z
push hl
ld a, [hli]
@@ -86,24 +88,24 @@ Function2a06e: ; 2a06e
ld a, [hli]
ld c, a
inc hl
- ld a, $3
- call Function2a088
- jr nc, .next
+ ld a, 3
+ call .SearchMapForMon
+ jr nc, .next_water
ld [de], a
inc de
-.next
+.next_water
pop hl
- ld bc, 9
+ ld bc, 3 * 3
add hl, bc
- jr .loop
+ jr .FindWater
; 2a088
-Function2a088: ; 2a088
+.SearchMapForMon: ; 2a088
inc hl
-.loop
+.ScanMapLoop
push af
- ld a, [wd265]
+ ld a, [wNamedObjectIndexBuffer]
cp [hl]
jr z, .found
rept 2
@@ -111,68 +113,68 @@ rept 2
endr
pop af
dec a
- jr nz, .loop
+ jr nz, .ScanMapLoop
and a
ret
.found
pop af
- jp Function2a09c
+ jp .AppendNest
; 2a09c
-Function2a09c: ; 2a09c
+.AppendNest: ; 2a09c
push de
call GetWorldMapLocation
ld c, a
hlcoord 0, 0
ld de, SCREEN_WIDTH * SCREEN_HEIGHT
-.loop
+.AppendNestLoop
ld a, [hli]
cp c
- jr z, .found
+ jr z, .found_nest
dec de
ld a, e
or d
- jr nz, .loop
+ jr nz, .AppendNestLoop
ld a, c
pop de
scf
ret
-.found
+.found_nest
pop de
and a
ret
; 2a0b7
-Function2a0b7: ; 2a0b7
+.RoamMon1: ; 2a0b7
ld a, [wRoamMon1Species]
ld b, a
- ld a, [wd265]
+ ld a, [wNamedObjectIndexBuffer]
cp b
ret nz
ld a, [wRoamMon1MapGroup]
ld b, a
ld a, [wRoamMon1MapNumber]
ld c, a
- call Function2a09c
+ call .AppendNest
ret nc
ld [de], a
inc de
ret
; 2a0cf
-Function2a0cf: ; 2a0cf
+.RoamMon2: ; 2a0cf
ld a, [wRoamMon2Species]
ld b, a
- ld a, [wd265]
+ ld a, [wNamedObjectIndexBuffer]
cp b
ret nz
ld a, [wRoamMon2MapGroup]
ld b, a
ld a, [wRoamMon2MapNumber]
ld c, a
- call Function2a09c
+ call .AppendNest
ret nc
ld [de], a
inc de
@@ -209,7 +211,7 @@ TryWildEncounter:: ; 2a0e7
; 2a111
GetMapEncounterRate: ; 2a111
- ld hl, wd25a
+ ld hl, wMornEncounterRate
call CheckOnWater
ld a, 3
jr z, .ok
@@ -446,10 +448,10 @@ _SwarmWildmonCheck
bit 2, [hl]
pop hl
jr z, .CheckYanma
- ld a, [wdfcc]
+ ld a, [wDunsparceMapGroup]
cp d
jr nz, .CheckYanma
- ld a, [wdfcd]
+ ld a, [wDunsparceMapNumber]
cp e
jr nz, .CheckYanma
call LookUpWildmonsForMapDE
@@ -463,10 +465,10 @@ _SwarmWildmonCheck
bit 3, [hl]
pop hl
jr z, _NoSwarmWildmon
- ld a, [wdc5a]
+ ld a, [wYanmaMapGroup]
cp d
jr nz, _NoSwarmWildmon
- ld a, [wdc5b]
+ ld a, [wYanmaMapNumber]
cp e
jr nz, _NoSwarmWildmon
call LookUpWildmonsForMapDE
@@ -702,11 +704,11 @@ UpdateRoamMons: ; 2a30d
rept 2
add hl, bc
endr
- ld a, [wdfe7]
+ ld a, [wRoamMons_LastMapGroup]
cp [hl]
jr nz, .done
inc hl
- ld a, [wdfe6]
+ ld a, [wRoamMons_LastMapNumber]
cp [hl]
jr z, .update_loop
dec hl
@@ -787,14 +789,14 @@ JumpRoamMon: ; 2a3cd
; 2a3f6
_BackUpMapIndices: ; 2a3f6
- ld a, [wdfe4]
- ld [wdfe6], a
- ld a, [wdfe5]
- ld [wdfe7], a
+ ld a, [wRoamMons_CurrentMapNumber]
+ ld [wRoamMons_LastMapNumber], a
+ ld a, [wRoamMons_CurrentMapGroup]
+ ld [wRoamMons_LastMapGroup], a
ld a, [MapNumber]
- ld [wdfe4], a
+ ld [wRoamMons_CurrentMapNumber], a
ld a, [MapGroup]
- ld [wdfe5], a
+ ld [wRoamMons_CurrentMapGroup], a
ret
; 2a40f
@@ -892,7 +894,7 @@ endr
ld de, StringBuffer1
call CopyName1
ld a, c
- ld [wd265], a
+ ld [wNamedObjectIndexBuffer], a
call GetPokemonName
ld hl, UnknownText_0x2a51a
call PrintText
@@ -945,7 +947,7 @@ rept 2
endr
inc hl
ld a, [hl]
- ld [wd265], a
+ ld [wNamedObjectIndexBuffer], a
call GetPokemonName
ld hl, StringBuffer1
ld de, StringBuffer4
@@ -1029,7 +1031,7 @@ endr
inc hl ; species
ld a, BANK(Trainers)
call GetFarByte
- ld [wd265], a
+ ld [wNamedObjectIndexBuffer], a
call GetPokemonName
ld hl, StringBuffer1
ld de, StringBuffer4