summaryrefslogtreecommitdiff
path: root/mobile
diff options
context:
space:
mode:
Diffstat (limited to 'mobile')
-rwxr-xr-xmobile/battle_tower_47.asm784
-rwxr-xr-xmobile/battle_tower_5c.asm1772
-rwxr-xr-xmobile/fixed_words.asm4294
-rw-r--r--mobile/get_trainer_class.asm46
-rwxr-xr-xmobile/mobile_12.asm1845
-rwxr-xr-xmobile/mobile_12_2.asm936
-rw-r--r--mobile/mobile_22.asm4450
-rw-r--r--mobile/mobile_22_2.asm1162
-rw-r--r--mobile/mobile_40.asm8158
-rwxr-xr-xmobile/mobile_41.asm1113
-rw-r--r--mobile/mobile_42.asm2009
-rw-r--r--mobile/mobile_45.asm7690
-rwxr-xr-xmobile/mobile_45_sprite_engine.asm922
-rwxr-xr-xmobile/mobile_46.asm7987
-rwxr-xr-xmobile/mobile_5b.asm833
-rwxr-xr-xmobile/mobile_5c.asm946
-rw-r--r--mobile/mobile_5e.asm925
-rw-r--r--mobile/mobile_5f.asm5306
-rwxr-xr-xmobile/mobile_menu.asm879
-rw-r--r--mobile/news/news.asm44
-rw-r--r--mobile/news/news_1.binbin0 -> 3494 bytes
-rw-r--r--mobile/news/news_2.binbin0 -> 4044 bytes
-rw-r--r--mobile/news/news_3.binbin0 -> 1462 bytes
-rw-r--r--mobile/print_opp_message.asm30
-rw-r--r--mobile/stadium/stadium2_1.binbin0 -> 544 bytes
-rw-r--r--mobile/stadium/stadium2_2.binbin0 -> 544 bytes
26 files changed, 52131 insertions, 0 deletions
diff --git a/mobile/battle_tower_47.asm b/mobile/battle_tower_47.asm
new file mode 100755
index 000000000..d0ca6edd8
--- /dev/null
+++ b/mobile/battle_tower_47.asm
@@ -0,0 +1,784 @@
+BattleTowerText:: ; 11c000
+; Print text c for trainer [BT_OTTrainerClass]
+; 1: Intro text
+; 2: Player lost
+; 3: Player won
+ ld a, [rSVBK]
+ push af
+ ld a, 3 ; BANK(BT_OTTrainerClass)
+ ld [rSVBK], a
+IF DEF(CRYSTAL11)
+ ld hl, BT_OTTrainerClass
+ELSE
+ ld hl, BT_OTName + 5
+; BUG ALERT
+; Instead of loading the Trainer Class, this routine
+; loads the 6th character in the Trainer's name, then
+; uses it to get the gender of the trainer.
+; As a consequence, the enemy trainer's dialog will
+; always be sampled from the female array.
+ENDC
+ ld a, [hl]
+ dec a
+ ld e, a
+ ld d, 0
+ ld hl, BTTrainerClassGenders
+ add hl, de
+ ld a, [hl]
+ and a
+ jr nz, .female
+ ; generate a random number between 0 and 24
+ ld a, [hRandomAdd]
+ and $1f
+ cp 25
+ jr c, .okay0
+ sub 25
+
+.okay0
+ ld hl, BTMaleTrainerTexts
+ jr .proceed
+
+.female
+ ; generate a random number between 0 and 14
+ ld a, [hRandomAdd]
+ and $f
+ cp 15
+ jr c, .okay1
+ sub 15
+
+.okay1
+ ld hl, BTFemaleTrainerTexts
+
+.proceed
+ ld b, 0
+ dec c
+ jr nz, .restore
+ ld [BT_TrainerTextIndex], a
+ jr .okay2
+
+.restore
+ ld a, [BT_TrainerTextIndex]
+
+.okay2
+ push af
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ ld h, a
+ ld l, c
+ pop af
+ ld c, a
+ ld b, 0
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ ld l, c
+ ld h, a
+ bccoord 1, 14
+ pop af
+ ld [rSVBK], a
+ call PlaceHLTextAtBC
+ ret
+; 11c05d
+
+INCLUDE "mobile/fixed_words.asm"
+
+BTTrainerClassGenders: ; 11f2f0
+ db MALE ; FALKNER
+ db FEMALE ; WHITNEY
+ db FEMALE ; BUGSY
+ db MALE ; MORTY
+ db MALE ; PRYCE
+ db FEMALE ; JASMINE
+ db MALE ; CHUCK
+ db FEMALE ; CLAIR
+ db MALE ; RIVAL1
+ db MALE ; POKEMON_PROF
+ db FEMALE ; WILL
+ db MALE ; CAL
+ db MALE ; BRUNO
+ db FEMALE ; KAREN
+ db MALE ; KOGA
+ db MALE ; CHAMPION
+ db MALE ; BROCK
+ db FEMALE ; MISTY
+ db MALE ; LT_SURGE
+ db MALE ; SCIENTIST
+ db FEMALE ; ERIKA
+ db MALE ; YOUNGSTER
+ db MALE ; SCHOOLBOY
+ db MALE ; BIRD_KEEPER
+ db FEMALE ; LASS
+ db FEMALE ; JANINE
+ db MALE ; COOLTRAINERM
+ db FEMALE ; COOLTRAINERF
+ db FEMALE ; BEAUTY
+ db MALE ; POKEMANIAC
+ db MALE ; GRUNTM
+ db MALE ; GENTLEMAN
+ db FEMALE ; SKIER
+ db FEMALE ; TEACHER
+ db FEMALE ; SABRINA
+ db MALE ; BUG_CATCHER
+ db MALE ; FISHER
+ db MALE ; SWIMMERM
+ db FEMALE ; SWIMMERF
+ db MALE ; SAILOR
+ db MALE ; SUPER_NERD
+ db MALE ; RIVAL2
+ db MALE ; GUITARIST
+ db MALE ; HIKER
+ db MALE ; BIKER
+ db MALE ; BLAINE
+ db MALE ; BURGLAR
+ db MALE ; FIREBREATHER
+ db MALE ; JUGGLER
+ db MALE ; BLACKBELT_T
+ db MALE ; EXECUTIVEM
+ db MALE ; PSYCHIC_T
+ db FEMALE ; PICNICKER
+ db MALE ; CAMPER
+ db FEMALE ; EXECUTIVEF
+ db MALE ; SAGE
+ db FEMALE ; MEDIUM
+ db MALE ; BOARDER
+ db MALE ; POKEFANM
+ db FEMALE ; KIMONO_GIRL
+ db FEMALE ; TWINS
+ db FEMALE ; POKEFANF
+ db MALE ; RED
+ db MALE ; BLUE
+ db MALE ; OFFICER
+ db FEMALE ; GRUNTF
+
+
+BTMaleTrainerTexts: ; 11f332
+ dw .Greetings
+ dw .PlayerLost
+ dw .PlayerWon
+
+.Greetings: ; 11f338
+ dw BTGreetingM1
+ dw BTGreetingM2
+ dw BTGreetingM3
+ dw BTGreetingM4
+ dw BTGreetingM5
+ dw BTGreetingM6
+ dw BTGreetingM7
+ dw BTGreetingM8
+ dw BTGreetingM9
+ dw BTGreetingM10
+ dw BTGreetingM11
+ dw BTGreetingM12
+ dw BTGreetingM13
+ dw BTGreetingM14
+ dw BTGreetingM15
+ dw BTGreetingM16
+ dw BTGreetingM17
+ dw BTGreetingM18
+ dw BTGreetingM19
+ dw BTGreetingM20
+ dw BTGreetingM21
+ dw BTGreetingM22
+ dw BTGreetingM23
+ dw BTGreetingM24
+ dw BTGreetingM25
+
+.PlayerLost: ; 11f36a
+ dw BTLossM1
+ dw BTLossM2
+ dw BTLossM3
+ dw BTLossM4
+ dw BTLossM5
+ dw BTLossM6
+ dw BTLossM7
+ dw BTLossM8
+ dw BTLossM9
+ dw BTLossM10
+ dw BTLossM11
+ dw BTLossM12
+ dw BTLossM13
+ dw BTLossM14
+ dw BTLossM15
+ dw BTLossM16
+ dw BTLossM17
+ dw BTLossM18
+ dw BTLossM19
+ dw BTLossM20
+ dw BTLossM21
+ dw BTLossM22
+ dw BTLossM23
+ dw BTLossM24
+ dw BTLossM25
+
+.PlayerWon: ; 11f39c
+ dw BTWinM1
+ dw BTWinM2
+ dw BTWinM3
+ dw BTWinM4
+ dw BTWinM5
+ dw BTWinM6
+ dw BTWinM7
+ dw BTWinM8
+ dw BTWinM9
+ dw BTWinM10
+ dw BTWinM11
+ dw BTWinM12
+ dw BTWinM13
+ dw BTWinM14
+ dw BTWinM15
+ dw BTWinM16
+ dw BTWinM17
+ dw BTWinM18
+ dw BTWinM19
+ dw BTWinM20
+ dw BTWinM21
+ dw BTWinM22
+ dw BTWinM23
+ dw BTWinM24
+ dw BTWinM25
+
+
+BTFemaleTrainerTexts:
+ dw .Greetings
+ dw .PlayerLost
+ dw .PlayerWon
+
+.Greetings: ; 11f3d4
+ dw BTGreetingF1
+ dw BTGreetingF2
+ dw BTGreetingF3
+ dw BTGreetingF4
+ dw BTGreetingF5
+ dw BTGreetingF6
+ dw BTGreetingF7
+ dw BTGreetingF8
+ dw BTGreetingF9
+ dw BTGreetingF10
+ dw BTGreetingF11
+ dw BTGreetingF12
+ dw BTGreetingF13
+ dw BTGreetingF14
+ dw BTGreetingF15
+
+.PlayerLost: ; 11f3f2
+ dw BTLossF1
+ dw BTLossF2
+ dw BTLossF3
+ dw BTLossF4
+ dw BTLossF5
+ dw BTLossF6
+ dw BTLossF7
+ dw BTLossF8
+ dw BTLossF9
+ dw BTLossF10
+ dw BTLossF11
+ dw BTLossF12
+ dw BTLossF13
+ dw BTLossF14
+ dw BTLossF15
+
+.PlayerWon: ; 11f410
+ dw BTWinF1
+ dw BTWinF2
+ dw BTWinF3
+ dw BTWinF4
+ dw BTWinF5
+ dw BTWinF6
+ dw BTWinF7
+ dw BTWinF8
+ dw BTWinF9
+ dw BTWinF10
+ dw BTWinF11
+ dw BTWinF12
+ dw BTWinF13
+ dw BTWinF14
+ dw BTWinF15
+
+
+BTGreetingM1: ; 0x11f42e
+ text_jump BattleTowerText_0x1ec000
+ db "@"
+
+BTLossM1: ; 0x11f433
+ text_jump BattleTowerText_0x1ec03b
+ db "@"
+
+BTWinM1: ; 0x11f438
+ text_jump UnknownText_0x1ec060
+ db "@"
+
+BTGreetingM2: ; 0x11f43d
+ text_jump BattleTowerText_0x1ec080
+ db "@"
+
+BTLossM2: ; 0x11f442
+ text_jump UnknownText_0x1ec0a3
+ db "@"
+
+BTWinM2: ; 0x11f447
+ text_jump UnknownText_0x1ec0c4
+ db "@"
+
+BTGreetingM3: ; 0x11f44c
+ text_jump UnknownText_0x1ec0e1
+ db "@"
+
+BTLossM3: ; 0x11f451
+ text_jump UnknownText_0x1ec108
+ db "@"
+
+BTWinM3: ; 0x11f456
+ text_jump UnknownText_0x1ec12a
+ db "@"
+
+BTGreetingM4: ; 0x11f45b
+ text_jump UnknownText_0x1ec14d
+ db "@"
+
+BTLossM4: ; 0x11f460
+ text_jump UnknownText_0x1ec16f
+ db "@"
+
+BTWinM4: ; 0x11f465
+ text_jump UnknownText_0x1ec190
+ db "@"
+
+BTGreetingM5: ; 0x11f46a
+ text_jump UnknownText_0x1ec1ae
+ db "@"
+
+BTLossM5: ; 0x11f46f
+ text_jump UnknownText_0x1ec1d0
+ db "@"
+
+BTWinM5: ; 0x11f474
+ text_jump UnknownText_0x1ec1f4
+ db "@"
+
+BTGreetingM6: ; 0x11f479
+ text_jump UnknownText_0x1ec216
+ db "@"
+
+BTLossM6: ; 0x11f47e
+ text_jump UnknownText_0x1ec238
+ db "@"
+
+BTWinM6: ; 0x11f483
+ text_jump UnknownText_0x1ec259
+ db "@"
+
+BTGreetingM7: ; 0x11f488
+ text_jump UnknownText_0x1ec27b
+ db "@"
+
+BTLossM7: ; 0x11f48d
+ text_jump UnknownText_0x1ec2a0
+ db "@"
+
+BTWinM7: ; 0x11f492
+ text_jump UnknownText_0x1ec2c0
+ db "@"
+
+BTGreetingM8: ; 0x11f497
+ text_jump UnknownText_0x1ec2d9
+ db "@"
+
+BTLossM8: ; 0x11f49c
+ text_jump UnknownText_0x1ec2fe
+ db "@"
+
+BTWinM8: ; 0x11f4a1
+ text_jump UnknownText_0x1ec320
+ db "@"
+
+BTGreetingM9: ; 0x11f4a6
+ text_jump UnknownText_0x1ec33f
+ db "@"
+
+BTLossM9: ; 0x11f4ab
+ text_jump UnknownText_0x1ec36c
+ db "@"
+
+BTWinM9: ; 0x11f4b0
+ text_jump UnknownText_0x1ec389
+ db "@"
+
+BTGreetingM10: ; 0x11f4b5
+ text_jump UnknownText_0x1ec3ad
+ db "@"
+
+BTLossM10: ; 0x11f4ba
+ text_jump UnknownText_0x1ec3c5
+ db "@"
+
+BTWinM10: ; 0x11f4bf
+ text_jump UnknownText_0x1ec3e5
+ db "@"
+
+BTGreetingM11: ; 0x11f4c4
+ text_jump UnknownText_0x1ec402
+ db "@"
+
+BTLossM11: ; 0x11f4c9
+ text_jump UnknownText_0x1ec411
+ db "@"
+
+BTWinM11: ; 0x11f4ce
+ text_jump UnknownText_0x1ec41f
+ db "@"
+
+BTGreetingM12: ; 0x11f4d3
+ text_jump UnknownText_0x1ec42e
+ db "@"
+
+BTLossM12: ; 0x11f4d8
+ text_jump UnknownText_0x1ec461
+ db "@"
+
+BTWinM12: ; 0x11f4dd
+ text_jump UnknownText_0x1ec4a0
+ db "@"
+
+BTGreetingM13: ; 0x11f4e2
+ text_jump UnknownText_0x1ec4d6
+ db "@"
+
+BTLossM13: ; 0x11f4e7
+ text_jump UnknownText_0x1ec4f5
+ db "@"
+
+BTWinM13: ; 0x11f4ec
+ text_jump UnknownText_0x1ec512
+ db "@"
+
+BTGreetingM14: ; 0x11f4f1
+ text_jump UnknownText_0x1ec532
+ db "@"
+
+BTLossM14: ; 0x11f4f6
+ text_jump UnknownText_0x1ec54b
+ db "@"
+
+BTWinM14: ; 0x11f4fb
+ text_jump UnknownText_0x1ec565
+ db "@"
+
+BTGreetingM15: ; 0x11f500
+ text_jump UnknownText_0x1ec580
+ db "@"
+
+BTLossM15: ; 0x11f505
+ text_jump UnknownText_0x1ec59d
+ db "@"
+
+BTWinM15: ; 0x11f50a
+ text_jump UnknownText_0x1ec5b5
+ db "@"
+
+BTGreetingM16: ; 0x11f50f
+ text_jump UnknownText_0x1ec5d3
+ db "@"
+
+BTLossM16: ; 0x11f514
+ text_jump UnknownText_0x1ec5ee
+ db "@"
+
+BTWinM16: ; 0x11f519
+ text_jump UnknownText_0x1ec60d
+ db "@"
+
+BTGreetingM17: ; 0x11f51e
+ text_jump UnknownText_0x1ec631
+ db "@"
+
+BTLossM17: ; 0x11f523
+ text_jump UnknownText_0x1ec651
+ db "@"
+
+BTWinM17: ; 0x11f528
+ text_jump UnknownText_0x1ec68f
+ db "@"
+
+BTGreetingM18: ; 0x11f52d
+ text_jump UnknownText_0x1ec6b1
+ db "@"
+
+BTLossM18: ; 0x11f532
+ text_jump UnknownText_0x1ec6d0
+ db "@"
+
+BTWinM18: ; 0x11f537
+ text_jump UnknownText_0x1ec708
+ db "@"
+
+BTGreetingM19: ; 0x11f53c
+ text_jump UnknownText_0x1ec720
+ db "@"
+
+BTLossM19: ; 0x11f541
+ text_jump UnknownText_0x1ec73e
+ db "@"
+
+BTWinM19: ; 0x11f546
+ text_jump UnknownText_0x1ec75b
+ db "@"
+
+BTGreetingM20: ; 0x11f54b
+ text_jump UnknownText_0x1ec77f
+ db "@"
+
+BTLossM20: ; 0x11f550
+ text_jump UnknownText_0x1ec798
+ db "@"
+
+BTWinM20: ; 0x11f555
+ text_jump UnknownText_0x1ec7bb
+ db "@"
+
+BTGreetingM21: ; 0x11f55a
+ text_jump UnknownText_0x1ec7d8
+ db "@"
+
+BTLossM21: ; 0x11f55f
+ text_jump UnknownText_0x1ec818
+ db "@"
+
+BTWinM21: ; 0x11f564
+ text_jump UnknownText_0x1ec837
+ db "@"
+
+BTGreetingM22: ; 0x11f569
+ text_jump UnknownText_0x1ec858
+ db "@"
+
+BTLossM22: ; 0x11f56e
+ text_jump UnknownText_0x1ec876
+ db "@"
+
+BTWinM22: ; 0x11f573
+ text_jump UnknownText_0x1ec898
+ db "@"
+
+BTGreetingM23: ; 0x11f578
+ text_jump UnknownText_0x1ec8b1
+ db "@"
+
+BTLossM23: ; 0x11f57d
+ text_jump UnknownText_0x1ec8d5
+ db "@"
+
+BTWinM23: ; 0x11f582
+ text_jump UnknownText_0x1ec8f0
+ db "@"
+
+BTGreetingM24: ; 0x11f587
+ text_jump UnknownText_0x1ec911
+ db "@"
+
+BTLossM24: ; 0x11f58c
+ text_jump UnknownText_0x1ec928
+ db "@"
+
+BTWinM24: ; 0x11f591
+ text_jump UnknownText_0x1ec949
+ db "@"
+
+BTGreetingM25: ; 0x11f596
+ text_jump UnknownText_0x1ec969
+ db "@"
+
+BTLossM25: ; 0x11f59b
+ text_jump UnknownText_0x1ec986
+ db "@"
+
+BTWinM25: ; 0x11f5a0
+ text_jump UnknownText_0x1ec99b
+ db "@"
+
+
+
+
+BTGreetingF1: ; 0x11f5a5
+ text_jump UnknownText_0x1ec9bd
+ db "@"
+
+BTLossF1: ; 0x11f5aa
+ text_jump UnknownText_0x1ec9d9
+ db "@"
+
+BTWinF1: ; 0x11f5af
+ text_jump UnknownText_0x1ec9f7
+ db "@"
+
+BTGreetingF2: ; 0x11f5b4
+ text_jump UnknownText_0x1eca0a
+ db "@"
+
+BTLossF2: ; 0x11f5b9
+ text_jump UnknownText_0x1eca2a
+ db "@"
+
+BTWinF2: ; 0x11f5be
+ text_jump UnknownText_0x1eca47
+ db "@"
+
+BTGreetingF3: ; 0x11f5c3
+ text_jump UnknownText_0x1eca64
+ db "@"
+
+BTLossF3: ; 0x11f5c8
+ text_jump UnknownText_0x1eca82
+ db "@"
+
+BTWinF3: ; 0x11f5cd
+ text_jump UnknownText_0x1eca9d
+ db "@"
+
+BTGreetingF4: ; 0x11f5d2
+ text_jump UnknownText_0x1ecabf
+ db "@"
+
+BTLossF4: ; 0x11f5d7
+ text_jump UnknownText_0x1ecade
+ db "@"
+
+BTWinF4: ; 0x11f5dc
+ text_jump UnknownText_0x1ecafa
+ db "@"
+
+BTGreetingF5: ; 0x11f5e1
+ text_jump UnknownText_0x1ecb19
+ db "@"
+
+BTLossF5: ; 0x11f5e6
+ text_jump UnknownText_0x1ecb37
+ db "@"
+
+BTWinF5: ; 0x11f5eb
+ text_jump UnknownText_0x1ecb55
+ db "@"
+
+BTGreetingF6: ; 0x11f5f0
+ text_jump UnknownText_0x1ecb70
+ db "@"
+
+BTLossF6: ; 0x11f5f5
+ text_jump UnknownText_0x1ecb92
+ db "@"
+
+BTWinF6: ; 0x11f5fa
+ text_jump UnknownText_0x1ecbb6
+ db "@"
+
+BTGreetingF7: ; 0x11f5ff
+ text_jump UnknownText_0x1ecbd9
+ db "@"
+
+BTLossF7: ; 0x11f604
+ text_jump UnknownText_0x1ecbf3
+ db "@"
+
+BTWinF7: ; 0x11f609
+ text_jump UnknownText_0x1ecc15
+ db "@"
+
+BTGreetingF8: ; 0x11f60e
+ text_jump UnknownText_0x1ecc39
+ db "@"
+
+BTLossF8: ; 0x11f613
+ text_jump UnknownText_0x1ecc55
+ db "@"
+
+BTWinF8: ; 0x11f618
+ text_jump UnknownText_0x1ecc75
+ db "@"
+
+BTGreetingF9: ; 0x11f61d
+ text_jump UnknownText_0x1ecc92
+ db "@"
+
+BTLossF9: ; 0x11f622
+ text_jump UnknownText_0x1ecca7
+ db "@"
+
+BTWinF9: ; 0x11f627
+ text_jump UnknownText_0x1eccc1
+ db "@"
+
+BTGreetingF10: ; 0x11f62c
+ text_jump UnknownText_0x1eccd7
+ db "@"
+
+BTLossF10: ; 0x11f631
+ text_jump UnknownText_0x1eccef
+ db "@"
+
+BTWinF10: ; 0x11f636
+ text_jump UnknownText_0x1ecd0e
+ db "@"
+
+BTGreetingF11: ; 0x11f63b
+ text_jump UnknownText_0x1ecd2b
+ db "@"
+
+BTLossF11: ; 0x11f640
+ text_jump UnknownText_0x1ecd4d
+ db "@"
+
+BTWinF11: ; 0x11f645
+ text_jump UnknownText_0x1ecd6b
+ db "@"
+
+BTGreetingF12: ; 0x11f64a
+ text_jump UnknownText_0x1ecd8d
+ db "@"
+
+BTLossF12: ; 0x11f64f
+ text_jump UnknownText_0x1ecdaf
+ db "@"
+
+BTWinF12: ; 0x11f654
+ text_jump UnknownText_0x1ecdcf
+ db "@"
+
+BTGreetingF13: ; 0x11f659
+ text_jump UnknownText_0x1ecded
+ db "@"
+
+BTLossF13: ; 0x11f65e
+ text_jump UnknownText_0x1ece0d
+ db "@"
+
+BTWinF13: ; 0x11f663
+ text_jump UnknownText_0x1ece2a
+ db "@"
+
+BTGreetingF14: ; 0x11f668
+ text_jump UnknownText_0x1ece4b
+ db "@"
+
+BTLossF14: ; 0x11f66d
+ text_jump UnknownText_0x1ece70
+ db "@"
+
+BTWinF14: ; 0x11f672
+ text_jump UnknownText_0x1ece8a
+ db "@"
+
+BTGreetingF15: ; 0x11f677
+ text_jump UnknownText_0x1ecea8
+ db "@"
+
+BTLossF15: ; 0x11f67c
+ text_jump UnknownText_0x1ecec9
+ db "@"
+
+BTWinF15: ; 0x11f681
+ text_jump UnknownText_0x1ecee8
+ db "@"
diff --git a/mobile/battle_tower_5c.asm b/mobile/battle_tower_5c.asm
new file mode 100755
index 000000000..da1691038
--- /dev/null
+++ b/mobile/battle_tower_5c.asm
@@ -0,0 +1,1772 @@
+BattleTowerRoomMenu: ; 1700b0
+; special
+ call InitBattleTowerChallengeRAM
+ farcall _BattleTowerRoomMenu
+ ret
+; 1700ba
+
+Function1700ba: ; 1700ba
+ call InitBattleTowerChallengeRAM
+ farcall Function11811a
+ ret
+; 1700c4
+
+Function1700c4: ; 1700c4
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+
+ call Function17042c
+
+ ld a, $5
+ call GetSRAMBank
+ ld a, $1
+ ld [$be45], a
+ xor a
+ ld [$be46], a
+ ld hl, w3_dffc
+ ld de, $aa41
+ ld bc, 4
+ call CopyBytes
+ ld hl, w3_d202Name
+ ld de, $aa8e
+ ld bc, 7 * $cc ; length of battle tower struct from japanese games?
+ call CopyBytes
+ ld hl, $aa5d ; some sort of count
+ ld a, [hl]
+ inc [hl]
+ inc hl
+ sla a
+ sla a
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld e, l
+ ld d, h
+ ld hl, w3_dffc
+ ld bc, 4
+ call CopyBytes
+ call CloseSRAM
+ pop af
+ ld [rSVBK], a
+ ret
+; 170114
+
+Function170114: ; 170114
+ call InitBattleTowerChallengeRAM
+ call .Function170121
+ farcall Function11805f
+ ret
+; 170121
+
+.Function170121: ; 170121
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $a948
+ ld de, wMisc
+ ld bc, $f6 ; 246
+ call CopyBytes
+ call CloseSRAM
+ call Function170c8b
+ ret
+; 170139
+
+Function170139: ; 170139
+; Convert the 4-digit decimal number at 5:aa41 into binary
+ ld a, $5
+ call GetSRAMBank
+ ld de, $aa41
+ ld h, $0
+ ld l, h
+ ld bc, 1000
+ call .DecToBin
+ ld bc, 100
+ call .DecToBin
+ ld bc, 10
+ call .DecToBin
+ ld a, [de]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ call CloseSRAM
+; Store that number in wMisc
+ ld a, h
+ ld [wMisc], a
+ ld a, l
+ ld [wMisc + 1], a
+ ld hl, wBT_OTTempPkmn1DVs
+ ld a, [PlayerID]
+ ld [hli], a
+ ld a, [PlayerID + 1]
+ ld [hli], a
+ ld a, [wSecretID]
+ ld [hli], a
+ ld a, [wSecretID + 1]
+ ld [hli], a
+ ld e, l
+ ld d, h
+ ld hl, PlayerName
+ ld bc, NAME_LENGTH_JAPANESE - 1
+ call CopyBytes
+ ld bc, PlayerID
+ ld de, PlayerGender
+ farcall GetMobileOTTrainerClass
+ ld de, wBT_OTTempPkmn1CaughtGender
+ ld a, c
+ ld [de], a
+ inc de
+ ld a, PartyMons % $100
+ ld [wcd49], a
+ ld a, PartyMons / $100
+ ld [wcd4a], a
+ ld a, PartyMonNicknames % $100
+ ld [wcd4b], a
+ ld a, PartyMonNicknames / $100
+ ld [wcd4c], a
+ ld a, 3
+.CopyLoop:
+ push af
+ ld a, [wcd49]
+ ld l, a
+ ld a, [wcd4a]
+ ld h, a
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call CopyBytes
+ ld a, l
+ ld [wcd49], a
+ ld a, h
+ ld [wcd4a], a
+ ld a, [wcd4b]
+ ld l, a
+ ld a, [wcd4c]
+ ld h, a
+ ld bc, $0006
+ call CopyBytes
+ ld a, l
+ ld [wcd4b], a
+ ld a, h
+ ld [wcd4c], a
+ pop af
+ dec a
+ jr nz, .CopyLoop
+ ld a, $4
+ call GetSRAMBank
+ ld hl, $a013
+ ld bc, $24
+ call CopyBytes
+ call CloseSRAM
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $a894
+ ld bc, NAME_LENGTH_JAPANESE
+ call CopyBytes
+ ld hl, wMisc
+ ld de, $a948
+ ld bc, $f6
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 17020c
+
+.DecToBin: ; 17020c
+ ld a, [de]
+ inc de
+ and a
+ ret z
+
+.digit_loop
+ add hl, bc
+ dec a
+ jr nz, .digit_loop
+ ret
+; 170215
+
+BattleTowerBattle: ; 170215
+ xor a
+ ld [wBattleTowerBattleEnded], a
+ call _BattleTowerBattle
+ ret
+; 17021d
+
+EmptySpecial_17021d: ; 17021d
+ ret
+; 17021e
+
+InitBattleTowerChallengeRAM: ; 17021e
+ xor a
+ ld [wBattleTowerBattleEnded], a
+ ld [wNrOfBeatenBattleTowerTrainers], a
+ ld [wcf65], a
+ ld [wcf66], a
+ ret
+; 17022c
+
+_BattleTowerBattle: ; 17022c
+.loop
+ call .do_dw
+ call DelayFrame
+ ld a, [wBattleTowerBattleEnded]
+ cp $1
+ jr nz, .loop
+ ret
+; 17023a
+
+.do_dw ; 17023a
+ ld a, [wBattleTowerBattleEnded]
+ ld e, a
+ ld d, 0
+ ld hl, .dw
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+; 170249
+
+.dw ; 170249
+ dw RunBattleTowerTrainer
+ dw SkipBattleTowerTrainer
+; 17024d
+
+RunBattleTowerTrainer: ; 17024d
+ ld a, [Options]
+ push af
+ ld hl, Options
+ set BATTLE_SHIFT, [hl] ; SET MODE
+
+ ld a, [InBattleTowerBattle]
+ push af
+ or $1
+ ld [InBattleTowerBattle], a
+
+ xor a
+ ld [wLinkMode], a
+ farcall TrainerRankings_Healings
+ farcall HealParty
+ call ReadBTTrainerParty
+ call Clears5_a89a
+
+ predef StartBattle
+
+ farcall LoadPokemonData
+ farcall HealParty
+ ld a, [wBattleResult]
+ ld [ScriptVar], a
+ and a
+ jr nz, .lost
+ ld a, BANK(sNrOfBeatenBattleTowerTrainers)
+ call GetSRAMBank
+ ld a, [sNrOfBeatenBattleTowerTrainers]
+ ld [wNrOfBeatenBattleTowerTrainers], a
+ call CloseSRAM
+ ld hl, StringBuffer3
+ ld a, [wNrOfBeatenBattleTowerTrainers]
+ add "1"
+ ld [hli], a
+ ld a, "@"
+ ld [hl], a
+
+.lost
+ pop af
+ ld [InBattleTowerBattle], a
+ pop af
+ ld [Options], a
+ ld a, $1
+ ld [wBattleTowerBattleEnded], a
+ ret
+
+
+ReadBTTrainerParty: ; 1702b7
+; Initialise the BattleTower-Trainer and his Pkmn
+ call CopyBTTrainer_FromBT_OT_TowBT_OTTemp
+
+; Check the nicknames for illegal characters, and replace bad nicknames
+; with their species names.
+ ld de, wBT_OTTempPkmn1Name ; $c643
+ ld c, PKMN_NAME_LENGTH
+ farcall CheckStringForErrors
+ jr nc, .skip_mon_1
+
+ ld a, [wBT_OTTempPkmn1]
+ ld [wNamedObjectIndexBuffer], a
+ call GetPokemonName
+ ld l, e
+ ld h, d
+ ld de, wBT_OTTempPkmn1Name ; $c643
+ ld bc, PKMN_NAME_LENGTH
+ call CopyBytes
+
+.skip_mon_1
+ ld de, wBT_OTTempPkmn2Name ; $c67e
+ ld c, PKMN_NAME_LENGTH
+ farcall CheckStringForErrors
+ jr nc, .skip_mon_2
+ ld a, [wBT_OTTempPkmn2] ; [$c64e]
+ ld [wNamedObjectIndexBuffer], a
+ call GetPokemonName
+ ld l, e
+ ld h, d
+ ld de, wBT_OTTempPkmn2Name ; $c67e
+ ld bc, PKMN_NAME_LENGTH
+ call CopyBytes
+
+.skip_mon_2
+ ld de, wBT_OTTempPkmn3Name ; $c686 + 51 = $c6b9
+ ld c, PKMN_NAME_LENGTH
+ farcall CheckStringForErrors
+ jr nc, .skip_mon_3
+ ld a, [wBT_OTTempPkmn3] ; [$c689]
+ ld [wNamedObjectIndexBuffer], a
+ call GetPokemonName
+ ld l, e
+ ld h, d
+ ld de, wBT_OTTempPkmn3Name ; $c686 + 51 = $c6b9
+ ld bc, PKMN_NAME_LENGTH
+ call CopyBytes
+
+.skip_mon_3
+; Add the terminator character to each of these names
+ ld a, "@"
+ ld [wBT_OTTempPkmn1NameEnd - 1], a ; $c64d
+ ld [wBT_OTTempPkmn2NameEnd - 1], a ; $c688
+ ld [wBT_OTTempPkmn3NameEnd - 1], a ; $c68a + 57 = $c6c3
+; Fix errors in the movesets
+ call CheckBTMonMovesForErrors
+; Repair the trainer name if needed, then copy it to OTPlayerName
+ ld de, wBT_OTTempName
+ ld c, NAME_LENGTH - 1
+ farcall CheckStringForErrors
+ jr nc, .trainer_name_okay
+ ld hl, BT_ChrisName
+ jr .done_trainer_name
+
+.trainer_name_okay
+ ld hl, wBT_OTTempName ; 0xc608
+
+.done_trainer_name
+ ld de, OTPlayerName
+ ld bc, NAME_LENGTH - 1
+ call CopyBytes
+ ld a, "@"
+ ld [de], a
+
+ ld hl, wBT_OTTempTrainerClass
+ ld a, [hli]
+ ld [OtherTrainerClass], a
+ ld a, OTPartyMonNicknames % $100
+ ld [BGMapBuffer], a
+ ld a, OTPartyMonNicknames / $100
+ ld [BGMapBuffer + 1], a
+
+ ; Copy Pkmn into Memory from the address in hl
+ ld de, OTPartyMon1Species
+ ld bc, OTPartyCount
+ ld a, BATTLETOWER_NROFPKMNS ; Number of Pkmn the BattleTower-Trainer has
+ ld [bc], a
+ inc bc
+.otpartymon_loop
+ push af
+ ld a, [hl]
+ ld [bc], a
+ inc bc
+ push bc
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call CopyBytes
+ push de
+ ld a, [BGMapBuffer]
+ ld e, a
+ ld a, [BGMapBuffer + 1]
+ ld d, a
+ ld bc, PKMN_NAME_LENGTH
+ call CopyBytes
+ ld a, e
+ ld [BGMapBuffer], a
+ ld a, d
+ ld [BGMapBuffer + 1], a
+ pop de
+ pop bc
+ pop af
+ dec a
+ and a
+ jr nz, .otpartymon_loop
+ ld a, -1
+ ld [bc], a
+ ret
+; 170394
+
+ValidateBTParty: ; 170394
+; Check for and fix errors in party data
+ ld hl, wBT_OTTempPkmn1Species
+ ld d, BATTLETOWER_NROFPKMNS
+.pkmn_loop
+ push de
+ push hl
+ ld b, h
+ ld c, l
+ ld a, [hl]
+ and a
+idx = $ff
+rept ($ff +- NUM_POKEMON)
+ jr z, .invalid
+ cp idx
+idx = idx +- 1
+endr
+ jr nz, .valid
+
+.invalid
+ ld a, SMEARGLE
+ ld [hl], a
+
+.valid
+ ld [CurSpecies], a
+ call GetBaseData
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$b2fb] ; s5_b2fb ; max level?
+ call CloseSRAM
+ ld e, a
+ ld hl, MON_LEVEL
+ add hl, bc
+ ld a, [hl]
+ cp MIN_LEVEL
+ ld a, MIN_LEVEL
+ jr c, .load
+ ld a, [hl]
+ cp e
+ jr c, .dont_load
+ ld a, e
+
+.load
+ ld [hl], a
+
+.dont_load
+ ld [CurPartyLevel], a
+ ld hl, MON_MOVES
+ add hl, bc
+ ld d, NUM_MOVES - 1
+ ld a, [hli]
+ and a
+ jr z, .not_move
+ cp NUM_ATTACKS + 1
+ jr nc, .not_move
+ jr .valid_move
+
+.not_move
+ dec hl
+ ld a, POUND
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ jr .done_moves
+
+.valid_move
+ ld a, [hl]
+ cp NUM_ATTACKS + 1
+ jr c, .next
+ ld [hl], $0
+
+.next
+ inc hl
+ dec d
+ jr nz, .valid_move
+
+.done_moves
+ ld hl, MON_MAXHP
+ add hl, bc
+ ld d, h
+ ld e, l
+ push hl
+ push de
+ ld hl, MON_STAT_EXP - 1
+ add hl, bc
+ ld b, $1
+ predef CalcPkmnStats
+ pop de
+ pop hl
+ dec de
+ dec de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ pop hl
+ ld bc, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
+ add hl, bc
+ pop de
+ dec d
+ jp nz, .pkmn_loop
+ ret
+; 170426
+
+BT_ChrisName: ; 170426
+ db "CHRIS@"
+; 17042c
+
+Function17042c: ; 17042c
+ ld hl, w3_d202TrainerData
+ ld a, BATTLETOWER_NROFTRAINERS
+.loop
+ push af
+ push hl
+ ld c, BATTLETOWER_TRAINERDATALENGTH / 2
+.loop2
+ ; First byte is a comparison value.
+ ld a, [hli]
+ ld b, a
+ ; Second byte is a lookup index.
+ ld a, [hli]
+ and a
+ jr z, .empty
+ cp 15
+ jr nc, .copy_data
+
+ push hl
+ ld hl, Unknown_170470
+ dec a
+ ld e, a
+ ld d, 0
+ add hl, de
+ ld a, [hl]
+ pop hl
+
+ ; If Unknown_170470[a-1] <= b, overwrite the current trainer's data
+ ; with Unknown17047e, and exit the inner loop.
+ cp b
+ jr c, .copy_data
+ jr z, .copy_data
+ jr .next_iteration
+
+.empty
+ ; If a == 0 and b >= $fc, overwrite the current trainer's data with
+ ; Unknown17047e, and exit the inner loop.
+ ld a, b
+ cp $fc
+ jr nc, .copy_data
+
+.next_iteration
+ dec c
+ jr nz, .loop2
+ jr .next_trainer
+
+.copy_data
+ pop de
+ push de
+ ld hl, Unknown_17047e
+ ld bc, BATTLETOWER_TRAINERDATALENGTH
+ call CopyBytes
+
+.next_trainer
+ pop hl
+ ld de, BATTLE_TOWER_STRUCT_LENGTH
+ add hl, de
+ pop af
+ dec a
+ jr nz, .loop
+ ret
+; 170470
+
+Unknown_170470:
+ db $12
+ db $24
+ db $45
+ db $45
+ db $42
+ db $42
+ db $45
+ db $42
+ db $27
+ db $27
+ db $45
+ db $27
+ db $42
+ db $24
+
+Unknown_17047e:
+; see data/battle_tower_2.asm
+ db $03, 4
+ db $05, 8
+ db $03, 5
+ db $0e, 6
+ db $03, 2
+ db $00, 0
+ db $39, 7
+ db $07, 4
+ db $00, 5
+ db $04, 7
+ db $01, 5
+ db $00, 0
+ db $0f, 5
+ db $14, 7
+ db $05, 5
+ db $11, 12
+ db $0c, 6
+ db $06, 4
+
+
+CopyBTTrainer_FromBT_OT_TowBT_OTTemp: ; 1704a2
+; copy the BattleTower-Trainer data that lies at 'BT_OTTrainer' to 'wBT_OTTemp'
+ ld a, [rSVBK]
+ push af
+ ld a, BANK(BT_OTTrainer)
+ ld [rSVBK], a
+
+ ld hl, BT_OTTrainer
+ ld de, wBT_OTTemp
+ ld bc, BATTLE_TOWER_STRUCT_LENGTH
+ call CopyBytes
+
+ pop af
+ ld [rSVBK], a
+
+ ld a, BANK(sBattleTowerChallengeState)
+ call GetSRAMBank
+ ld a, BATTLETOWER_CHALLENGE_IN_PROGESS
+ ld [sBattleTowerChallengeState], a
+ ld hl, sNrOfBeatenBattleTowerTrainers
+ inc [hl]
+ call CloseSRAM
+SkipBattleTowerTrainer: ; 1704c9
+ ret
+; 1704ca
+
+Function1704ca: ; 1704ca
+; unreferenced mobile function
+ ld a, [$be46]
+ cp $7
+ jr c, .asm_1704d3
+ ld a, $6
+
+.asm_1704d3
+ ld hl, $afce
+ ld de, -$e0
+.asm_1704d9
+ and a
+ jr z, .asm_1704e0
+ add hl, de
+ dec a
+ jr .asm_1704d9
+
+.asm_1704e0
+ ret
+; 1704e1
+
+Function1704e1: ; 1704e1
+; unreferenced special
+ call SpeechTextBox
+ call FadeToMenu
+ call InitBattleTowerChallengeRAM
+ call .JumptableLoop
+ call CloseSubmenu
+ ret
+; 1704f1
+
+.JumptableLoop: ; 1704f1
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearScreen
+.loop
+ call JoyTextDelay
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .done
+ call .DoJumptable
+ farcall ReloadMapPart
+ jr .loop
+
+.done
+ ret
+; 170510
+
+.DoJumptable: ; 170510
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, 0
+ ld hl, .dw
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+; 17051f
+
+.dw ; 17051f
+ dw .Jumptable_0
+ dw .Jumptable_1
+ dw .Jumptable_2
+; 170525
+
+.Jumptable_0: ; 170525
+ ld a, $5
+ call GetSRAMBank
+
+ ld hl, $a89c
+ ld de, StringBuffer3
+ ld bc, $16
+ call CopyBytes
+
+ ld hl, $a8b2
+ ld de, wMisc
+ ld bc, $0096
+ call CopyBytes
+
+ call CloseSRAM
+ hlcoord 1, 1
+ ld de, StringBuffer3
+ call PlaceString
+ hlcoord 1, 3
+ ld de, .String_Mail
+ call PlaceString
+ hlcoord 4, 3
+ ld de, StringBuffer4
+ call PlaceString
+ hlcoord 8, 3
+ ld de, .String_PastReaders
+ call PlaceString
+ call .DrawBorder
+ call .PlaceTextItems
+ jr .NextJumptableFunction
+
+
+.Jumptable_1:
+ call SetPalettes
+ call .NextJumptableFunction
+
+
+.Jumptable_2:
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .pressed_a_or_b
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, .pressed_a_or_b
+ ld a, [hl]
+ and D_UP
+ jr nz, .pressed_up
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .pressed_down
+ ret
+
+.pressed_up
+ ld a, [wNrOfBeatenBattleTowerTrainers]
+ and a
+ ret z
+ sub 15
+ ld [wNrOfBeatenBattleTowerTrainers], a
+ call .PlaceTextItems
+ ret
+
+.pressed_down
+ ld a, [wNrOfBeatenBattleTowerTrainers]
+ cp 60
+ ret z
+ add 15
+ ld [wNrOfBeatenBattleTowerTrainers], a
+ call .PlaceTextItems
+ ret
+
+.pressed_a_or_b
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+.NextJumptableFunction:
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+; 1705b7
+
+.DrawBorder: ; 1705b7
+ hlcoord 0, 4
+ ld a, $79
+ ld [hli], a
+ ld c, SCREEN_WIDTH - 2
+.top_border_loop
+ ld a, $7a
+ ld [hli], a
+ dec c
+ jr nz, .top_border_loop
+ ld a, $7b
+ ld [hli], a
+ ld de, SCREEN_WIDTH
+ ld c, 12
+.left_border_loop
+ ld a, $7c
+ ld [hl], a
+ add hl, de
+ dec c
+ jr nz, .left_border_loop
+ ld a, $7d
+ ld [hli], a
+ ld c, SCREEN_WIDTH - 2
+.bottom_border_loop
+ ld a, $7a
+ ld [hli], a
+ dec c
+ jr nz, .bottom_border_loop
+ ld a, $7e
+ ld [hl], a
+ ld de, -SCREEN_WIDTH
+ add hl, de
+ ld c, 12
+.right_border_loop
+ ld a, $7c
+ ld [hl], a
+ add hl, de
+ dec c
+ jr nz, .right_border_loop
+ ret
+; 1705f0
+
+.PlaceTextItems: ; 1705f0
+ call .ClearBox
+ call .PlaceUpDownArrows
+ ld a, $50
+ ld [wcd4e], a
+ ld hl, wMisc
+ ld a, [wNrOfBeatenBattleTowerTrainers]
+ ld c, a
+ xor a
+ ld b, a
+ add hl, bc
+ push hl
+ pop bc
+ hlcoord 1, 6
+ ld a, 6
+.loop1
+ push af
+ push hl
+ ld a, 3
+.loop2
+ push af
+ ld de, wcd49
+ ld a, [bc]
+ and a
+ jr z, .fill_with_e3
+; .copy
+ ld a, 5
+.loop3a
+ push af
+ ld a, [bc]
+ ld [de], a
+ inc bc
+ inc de
+ pop af
+ dec a
+ jr nz, .loop3a
+ jr .rejoin
+
+.fill_with_e3
+ ld a, 5
+.loop3b
+ push af
+ ld a, $e3
+ ld [de], a
+ inc de
+ inc bc
+ pop af
+ dec a
+ jr nz, .loop3b
+
+.rejoin
+ ld de, wcd49
+ push bc
+ call PlaceString
+ ld de, NAME_LENGTH_JAPANESE
+ add hl, de
+ pop bc
+ pop af
+ dec a
+ jr nz, .loop2
+ pop hl
+ ld de, $28
+ add hl, de
+ pop af
+ dec a
+ jr nz, .loop1
+ ret
+; 17064b
+
+.ClearBox: ; 17064b
+ hlcoord 1, 5
+ xor a
+ ld b, 12
+.clearbox_row
+ ld c, SCREEN_WIDTH - 2
+.clearbox_column
+ ld [hli], a
+ dec c
+ jr nz, .clearbox_column
+ inc hl
+ inc hl
+ dec b
+ jr nz, .clearbox_row
+ ret
+; 17065d
+
+.PlaceUpDownArrows: ; 17065d
+ ld a, [wNrOfBeatenBattleTowerTrainers]
+ and a
+ jr z, .nope
+ hlcoord 18, 5
+ ld a, "▲"
+ ld [hl], a
+
+.nope
+ ld a, [wNrOfBeatenBattleTowerTrainers]
+ cp 60
+ ret z
+ hlcoord 18, 16
+ ld a, "▼"
+ ld [hl], a
+ ret
+; 170676
+
+.String_Mail: ; 170676
+ db "ルーム@"
+; 17067a
+
+.String_PastReaders: ; 17067a
+ db "れきだいりーダーいちらん@"
+; 170687
+
+BattleTowerAction: ; 170687
+ ld a, [ScriptVar]
+ ld e, a
+ ld d, 0
+ ld hl, .dw
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+; 170696
+
+
+.dw ; 170696 (5c:4696)
+ dw BattleTowerAction_CheckExplanationRead ; 0x00
+ dw BattleTowerAction_SetExplanationRead ; 0x01
+ dw BattleTowerAction_GetChallengeState ; 0x02
+ dw BattleTowerAction_SetByteToQuickSaveChallenge ; 0x03
+ dw BattleTowerAction_SetByteToCancelChallenge ; 0x04
+ dw Function1707ac ; 0x05
+ dw Function1707f4 ; 0x06
+ dw SaveBattleTowerLevelGroup ; 0x07
+ dw LoadBattleTowerLevelGroup ; 0x08
+ dw BattleTower_CheckSaveFileExistsAndIsYours ; 0x09
+ dw Function1708b1 ; 0x0a
+ dw CheckMobileEventIndex ; 0x0b
+ dw Function1708c8 ; 0x0c
+ dw Function1708f0 ; 0x0d
+ dw BattleTowerAction_EggTicket ; 0x0e
+ dw Function1709aa ; 0x0f
+ dw Function1709bb ; 0x10
+ dw Function170a9c ; 0x11
+ dw Function170aa0 ; 0x12
+ dw Function170aaf ; 0x13
+ dw Function170abe ; 0x14
+ dw Function170ad7 ; 0x15
+ dw Function170807 ; 0x16
+ dw Function17081d ; 0x17
+ dw BattleTowerAction_LevelCheck ; 0x18
+ dw BattleTowerAction_UbersCheck ; 0x19
+ dw ResetBattleTowerTrainersSRAM ; 0x1a
+ dw BattleTower_GiveReward ; 0x1b
+ dw Function17071b ; 0x1c
+ dw Function170729 ; 0x1d
+ dw BattleTower_RandomlyChooseReward ; 0x1e
+ dw BattleTower_SaveOptions ; 0x1f
+
+
+; Reset the save memory for BattleTower-Trainers (Counter and all 7 TrainerBytes)
+ResetBattleTowerTrainersSRAM: ; 1706d6 (5c:46d6) BattleTowerAction $1a
+ ld a, BANK(sBTTrainers)
+ call GetSRAMBank
+
+ ld a, $ff
+ ld hl, sBTTrainers
+ ld bc, BATTLETOWER_NROFTRAINERS
+ call ByteFill
+
+ xor a
+ ld [sNrOfBeatenBattleTowerTrainers], a
+
+ call CloseSRAM
+
+ ret
+
+BattleTower_GiveReward: ; 1706ee (5c:46ee) BattleTowerAction $1b
+ ld a, BANK(sBattleTowerReward)
+ call GetSRAMBank
+
+ ld a, [sBattleTowerReward]
+ call CloseSRAM
+ ld [ScriptVar], a
+ ld hl, NumItems
+ ld a, [hli]
+ cp MAX_ITEMS
+ ret c
+ ld b, MAX_ITEMS
+ ld a, [ScriptVar]
+ ld c, a
+.loop
+ ld a, [hli]
+ cp c
+ jr nz, .next
+ ld a, [hl]
+ cp 95
+ ret c
+.next
+ inc hl
+ dec b
+ jr nz, .loop
+ ld a, POTION
+ ld [ScriptVar], a
+ ret
+
+Function17071b: ; 17071b (5c:471b) BattleTowerAction $1c
+ ld a, BANK(sBattleTowerChallengeState)
+ call GetSRAMBank
+ ld a, BATTLETOWER_WON_CHALLENGE
+ ld [sBattleTowerChallengeState], a
+ call CloseSRAM
+ ret
+
+Function170729: ; 170729 (5c:4729) BattleTowerAction $1d
+ ld a, BANK(sBattleTowerChallengeState)
+ call GetSRAMBank
+ ld a, BATTLETOWER_RECEIVED_REWARD
+ ld [sBattleTowerChallengeState], a
+ call CloseSRAM
+ ret
+
+BattleTower_SaveOptions: ; 170737 (5c:4737) BattleTowerAction $1f
+ farcall SaveOptions
+ ret
+
+BattleTower_RandomlyChooseReward: ; 17073e (5c:473e) BattleTowerAction $1e
+; Generate a random stat boosting item.
+.loop
+ call Random
+ ld a, [hRandomAdd]
+ and $7
+ cp 6
+ jr c, .okay
+ sub 6
+.okay
+ add HP_UP
+ cp LUCKY_PUNCH
+ jr z, .loop
+ push af
+ ld a, BANK(sBattleTowerReward)
+ call GetSRAMBank
+ pop af
+ ld [sBattleTowerReward], a
+ call CloseSRAM
+ ret
+
+BattleTowerAction_CheckExplanationRead: ; 17075f (5c:475f) BattleTowerAction $00
+ call BattleTower_CheckSaveFileExistsAndIsYours
+ ld a, [ScriptVar]
+ and a
+ ret z
+
+ ld a, BANK(sBattleTowerSaveFileFlags)
+ call GetSRAMBank
+ ld a, [sBattleTowerSaveFileFlags]
+ and $2
+ ld [ScriptVar], a
+ call CloseSRAM
+ ret
+
+BattleTowerAction_GetChallengeState: ; 170778 (5c:4778) BattleTowerAction $02
+ ld hl, sBattleTowerChallengeState
+ ld a, BANK(sBattleTowerChallengeState)
+ call GetSRAMBank
+ ld a, [hl]
+ ld [ScriptVar], a
+ call CloseSRAM
+ ret
+
+BattleTowerAction_SetExplanationRead: ; 170788 (5c:4788) BattleTowerAction $01
+ ld a, BANK(sBattleTowerSaveFileFlags)
+ call GetSRAMBank
+ ld a, [sBattleTowerSaveFileFlags]
+ or $2
+ ld [sBattleTowerSaveFileFlags], a
+ call CloseSRAM
+ ret
+
+BattleTowerAction_SetByteToQuickSaveChallenge: ; 170799 (5c:4799) BattleTowerAction $03
+ ld c, BATTLETOWER_SAVED_AND_LEFT
+ jr asm_17079f
+
+BattleTowerAction_SetByteToCancelChallenge: ; 17079d (5c:479d) BattleTowerAction $04
+ ld c, BATTLETOWER_NO_CHALLENGE
+asm_17079f: ; 17079f (5c:479f)
+ ld a, BANK(sBattleTowerChallengeState)
+ call GetSRAMBank
+ ld a, c
+ ld [sBattleTowerChallengeState], a
+ call CloseSRAM
+ ret
+
+Function1707ac: ; 1707ac (5c:47ac) BattleTowerAction $05
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$aa8c]
+ ld b, a
+ ld a, [$be46]
+ ld [ScriptVar], a
+ call CloseSRAM
+ and a
+ ret z
+ ld a, b
+ cp $2
+ jr nc, .asm_1707ef
+ push bc
+ call UpdateTime
+ pop bc
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$aa8b]
+ call CloseSRAM
+ ld c, a
+ ld a, [CurDay]
+ sub c
+ jr c, .asm_1707e5
+ cp $8
+ jr nc, .asm_1707ef
+ ld a, b
+ and a
+ jr nz, .asm_1707ef
+ ret
+.asm_1707e5
+ ld hl, CurDay
+ ld a, $8c
+ sub c
+ add [hl]
+ cp $8
+ ret c
+.asm_1707ef
+ ld a, $8
+ ld [ScriptVar], a
+
+Function1707f4: ; 1707f4 (5c:47f4) BattleTowerAction $06
+ ld a, $5
+ call GetSRAMBank
+ xor a
+ ld [$be46], a
+ ld [$aa8b], a
+ ld [$aa8c], a
+ call CloseSRAM
+ ret
+
+Function170807: ; 170807 (5c:4807) BattleTowerAction $16
+ call UpdateTime
+ ld a, $5
+ call GetSRAMBank
+ ld a, [CurDay]
+ ld [$b2f9], a
+ xor a
+ ld [$b2fa], a
+ call CloseSRAM
+ ret
+
+Function17081d: ; 17081d (5c:481d) BattleTowerAction $17
+ xor a
+ ld [ScriptVar], a
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$b2f9]
+ ld c, a
+ ld a, [$b2fa]
+ ld b, a
+ call CloseSRAM
+ cp $2
+ jr nc, .asm_170853
+ push bc
+ call UpdateTime
+ pop bc
+ ld a, [CurDay]
+ sub c
+ jr c, .asm_170849
+ cp $b
+ jr nc, .asm_170853
+ ld a, b
+ and a
+ jr nz, .asm_170853
+ ret
+
+.asm_170849
+ ld hl, CurDay
+ ld a, 140
+ sub c
+ add [hl]
+ cp $b
+ ret c
+.asm_170853
+ ld a, $1
+ ld [ScriptVar], a
+ ld a, $5
+ call GetSRAMBank
+ xor a
+ ld [$b2f9], a
+ ld [$b2fa], a
+ call CloseSRAM
+ ret
+
+SaveBattleTowerLevelGroup: ; 170868 (5c:4868) BattleTowerAction $07
+ ld a, BANK(sBTChoiceOfLevelGroup)
+ call GetSRAMBank
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+ ld a, [wBTChoiceOfLvlGroup]
+ ld [sBTChoiceOfLevelGroup], a
+ pop af
+ ld [rSVBK], a
+ call CloseSRAM
+ ret
+
+LoadBattleTowerLevelGroup: ; 170881 (5c:4881) BattleTowerAction $08 ; Load level group choice
+ ld a, BANK(sBTChoiceOfLevelGroup)
+ call GetSRAMBank
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+ ld a, [sBTChoiceOfLevelGroup]
+ ld [wBTChoiceOfLvlGroup], a
+ pop af
+ ld [rSVBK], a
+ call CloseSRAM
+ ret
+
+BattleTower_CheckSaveFileExistsAndIsYours: ; 17089a BattleTowerAction $09
+ ld a, [wSaveFileExists]
+ and a
+ jr z, .nope
+ farcall CompareLoadedAndSavedPlayerID
+ jr z, .yes
+ xor a
+ jr .nope
+
+.yes
+ ld a, $1
+
+.nope
+ ld [ScriptVar], a
+ ret
+; 1708b1
+
+
+Function1708b1: ; 1708b1 (5c:48b1) BattleTowerAction $0a
+ xor a
+ ld [MusicFade], a
+ call MaxVolume
+ ret
+
+CheckMobileEventIndex: ; 1708b9 (5c:48b9) BattleTowerAction $0b something to do with GS Ball
+ ld a, BANK(sMobileEventIndex)
+ call GetSRAMBank
+ ld a, [sMobileEventIndex]
+ ld [ScriptVar], a
+ call CloseSRAM
+ ret
+
+Function1708c8: ; 1708c8 (5c:48c8) BattleTowerAction $0c
+ call UpdateTime
+ ld a, $5
+ call GetSRAMBank
+ ld a, [CurDay]
+ ld [$aa8b], a
+ xor a
+ ld [$aa8c], a
+ ld a, [$aa5d]
+ cp $2
+ jr nc, .asm_1708ec
+ ld a, [CurDay]
+ ld [$aa48], a
+ ld a, $1
+ ld [$aa47], a
+.asm_1708ec
+ call CloseSRAM
+ ret
+
+Function1708f0: ; 1708f0 (5c:48f0) BattleTowerAction $0d
+ xor a
+ ld [ScriptVar], a
+ call UpdateTime
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$aa48]
+ ld c, a
+ ld a, [$aa47]
+ call CloseSRAM
+ and a
+ ret z
+ ld hl, CurDay
+ ld a, c
+ cp [hl]
+ jr nz, Function170923
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$aa5d]
+ call CloseSRAM
+ cp $5
+ ret c
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+
+
+Function170923: ; 170923
+ ld a, $5
+ call GetSRAMBank
+ xor a
+ ld [$aa48], a
+ ld [$aa47], a
+ ld hl, $aa5d
+ ld bc, $0011
+ call ByteFill
+ call CloseSRAM
+ ret
+; 17093c
+
+
+BattleTowerAction_EggTicket: ; 17093c (5c:493c) BattleTowerAction $0e
+ xor a
+ ld [ScriptVar], a
+ ld a, EGG_TICKET
+ ld [CurItem], a
+ ld hl, NumItems
+ call CheckItem
+ ret nc
+ ld a, [PartyCount]
+ ld b, 0
+ ld c, a
+ ld hl, PartySpecies
+.loop
+ ld a, [hli]
+ cp EGG
+ jr nz, .not_egg
+ push hl
+ ld hl, PartyMonOT
+ ld de, NAME_LENGTH_JAPANESE
+ ld a, b
+ and a
+ jr z, .skip
+.loop2
+ add hl, de
+ dec a
+ jr nz, .loop2
+.skip
+ ld de, String_1709a4
+ ld a, NAME_LENGTH_JAPANESE
+.compare_loop
+ push af
+ ld a, [de]
+ inc de
+ cp [hl]
+ inc hl
+ jr nz, .different
+ pop af
+ dec a
+ jr nz, .compare_loop
+rept 4
+ dec hl
+endr
+ ld a, "@"
+ ld [hli], a
+ ld [hli], a
+ pop hl
+ ld a, EGG_TICKET
+ ld [CurItem], a
+ ld a, 1
+ ld [wItemQuantityChangeBuffer], a
+ ld a, -1
+ ld [CurItemQuantity], a
+ ld hl, NumItems
+ call TossItem
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+
+.different
+ pop af
+ pop hl
+.not_egg
+ inc b
+ dec c
+ jr nz, .loop
+ ret
+; 1709a4 (5c:49a4)
+
+String_1709a4: ; 1709a4
+ db "なぞナゾ@@"
+
+Function1709aa: ; 1709aa (5c:49aa) BattleTowerAction $0f
+ ld a, [rSVBK]
+ push af
+ ld a, BANK(w3_d090)
+ ld [rSVBK], a
+ ld a, [w3_d090]
+ ld [ScriptVar], a
+ pop af
+ ld [rSVBK], a
+ ret
+
+Function1709bb: ; 1709bb (5c:49bb) BattleTowerAction $10
+ xor a
+ ld [ScriptVar], a
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$a800]
+ call CloseSRAM
+ cp 6
+ jr nc, .invalid
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_1709e7
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+.invalid
+ ld a, $5
+ call GetSRAMBank
+ xor a
+ ld [$a800], a
+ call CloseSRAM
+ ret
+; 1709e7 (5c:49e7)
+
+Jumptable_1709e7: ; 1709e7
+ dw .NoAction
+ dw .NoAction
+ dw .DoAction1
+ dw .DoAction1
+ dw .Action4
+ dw .Action5
+; 1709f3
+
+.DoAction1: ; 1709f3
+ ld a, $5
+ call GetSRAMBank
+ ld a, $1
+ ld [$a800], a
+ call CloseSRAM
+
+.NoAction: ; 170a00
+ ret
+; 170a01
+
+.Action4: ; 170a01
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $b023
+ ld de, wMisc
+ ld bc, $0069
+ call CopyBytes
+ ld a, [$a825]
+ ld [wcd30], a
+ ld a, [$a826]
+ ld [wcd31], a
+ call CloseSRAM
+ farcall Function11b6b4
+ farcall Function17d0f3
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+; 170a33
+
+.Action5: ; 170a33
+ ld a, $0
+ call GetSRAMBank
+ ld hl, wRTC
+ ld de, wMisc
+ ld bc, $0004
+ call CopyBytes
+ call CloseSRAM
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $b08c
+ ld de, wMisc
+ ld c, $4
+.compare_loop
+ ld a, [de]
+ inc de
+ cp [hl]
+ jr nz, .different
+ inc hl
+ dec c
+ jr nz, .compare_loop
+ call CloseSRAM
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ call GetMapSceneID
+ ld a, d
+ or e
+ jr z, .no_scene
+ ld a, [de]
+ and a
+ ret nz
+
+.no_scene
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+
+.different
+ call CloseSRAM
+ ld a, $5
+ call GetSRAMBank
+ xor a
+ ld [$a800], a
+ call CloseSRAM
+ ld [ScriptVar], a
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ call GetMapSceneID
+ ld a, d
+ or e
+ jr z, .no_scene_2
+ xor a
+ ld [de], a
+
+.no_scene_2
+ ret
+; 170a9c
+
+Function170a9c: ; 170a9c (5c:4a9c) BattleTowerAction $11
+ ld c, $0
+ jr asm_170aa2
+
+Function170aa0: ; 170aa0 (5c:4aa0) BattleTowerAction $12
+ ld c, $1
+asm_170aa2: ; 170aa2 (5c:4aa2)
+ ld a, $5
+ call GetSRAMBank
+ ld a, c
+ ld [$aa8d], a
+ call CloseSRAM
+ ret
+
+Function170aaf: ; 170aaf (5c:4aaf) BattleTowerAction $13
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$aa8d]
+ ld [ScriptVar], a
+ call CloseSRAM
+ ret
+
+Function170abe: ; 170abe (5c:4abe) BattleTowerAction $14
+ call BattleTower_CheckSaveFileExistsAndIsYours
+ ld a, [ScriptVar]
+ and a
+ ret z
+
+ ld a, BANK(sBattleTowerSaveFileFlags)
+ call GetSRAMBank
+ ld a, [sBattleTowerSaveFileFlags]
+ and $1
+ ld [ScriptVar], a
+ call CloseSRAM
+ ret
+
+Function170ad7: ; 170ad7 (5c:4ad7) BattleTowerAction $15
+ ld a, BANK(sBattleTowerSaveFileFlags)
+ call GetSRAMBank
+ ld a, [sBattleTowerSaveFileFlags]
+ or $1
+ ld [sBattleTowerSaveFileFlags], a
+ call CloseSRAM
+ ret
+
+BattleTowerAction_LevelCheck: ; 170ae8 (5c:4ae8) BattleTowerAction $18
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$b2fb]
+ call CloseSRAM
+ ld c, 10
+ call SimpleDivide
+ ld a, b
+ ld [wcd4f], a
+ xor a
+ ld [ScriptVar], a
+ farcall BattleTower_LevelCheck ; level check
+ ret nc
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$b2fb]
+ call CloseSRAM
+ ld [ScriptVar], a
+ ret
+
+BattleTowerAction_UbersCheck: ; 170b16 (5c:4b16) BattleTowerAction $19
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$b2fb]
+ call CloseSRAM
+ ld c, 10
+ call SimpleDivide
+ ld a, b
+ ld [wcd4f], a
+ xor a
+ ld [ScriptVar], a
+ farcall BattleTower_UbersCheck
+ ret nc
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$b2fb]
+ call CloseSRAM
+ ld [ScriptVar], a
+ ret
+
+Function_LoadOpponentTrainerAndPokemonsWithOTSprite: ; 0x170b44
+ farcall Function_LoadOpponentTrainerAndPokemons
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+ ld hl, BT_OTTrainerClass
+ ld a, [hl]
+ dec a
+ ld c, a
+ ld b, $0
+ pop af
+ ld [rSVBK], a
+ ld hl, .Sprites
+ add hl, bc
+ ld a, [hl]
+ ld [wBTTempOTSprite], a
+
+; Load sprite of the opponent trainer
+; because s/he is chosen randomly and appears out of nowhere
+ ld a, [ScriptVar]
+ dec a
+ sla a
+ ld e, a
+ sla a
+ sla a
+ sla a
+ ld c, a
+ ld b, 0
+ ld d, 0
+ ld hl, MapObjects
+ add hl, bc
+ inc hl
+ ld a, [wBTTempOTSprite]
+ ld [hl], a
+ ld hl, UsedSprites
+ add hl, de
+ ld [hli], a
+ ld [hUsedSpriteIndex], a
+ ld a, [hl]
+ ld [hUsedSpriteTile], a
+ farcall GetUsedSprite
+ ret
+; 170b90
+
+.Sprites:
+ db SPRITE_FALKNER
+ db SPRITE_WHITNEY
+ db SPRITE_BUGSY
+ db SPRITE_MORTY
+ db SPRITE_PRYCE
+ db SPRITE_JASMINE
+ db SPRITE_CHUCK
+ db SPRITE_CLAIR
+ db SPRITE_SILVER
+ db SPRITE_OAK
+ db SPRITE_WILL
+ db SPRITE_CHRIS
+ db SPRITE_BRUNO
+ db SPRITE_KAREN
+ db SPRITE_KOGA
+ db SPRITE_LANCE
+ db SPRITE_BROCK
+ db SPRITE_MISTY
+ db SPRITE_SURGE
+ db SPRITE_SCIENTIST
+ db SPRITE_ERIKA
+ db SPRITE_YOUNGSTER
+ db SPRITE_YOUNGSTER
+ db SPRITE_YOUNGSTER
+ db SPRITE_LASS
+ db SPRITE_JANINE
+ db SPRITE_COOLTRAINER_M
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_BUENA
+ db SPRITE_SUPER_NERD
+ db SPRITE_ROCKET
+ db SPRITE_GENTLEMAN
+ db SPRITE_BUENA
+ db SPRITE_TEACHER
+ db SPRITE_SABRINA
+ db SPRITE_BUG_CATCHER
+ db SPRITE_FISHER
+ db SPRITE_SUPER_NERD
+ db SPRITE_COOLTRAINER_F
+ db SPRITE_SAILOR
+ db SPRITE_SUPER_NERD
+ db SPRITE_BLUE
+ db SPRITE_ROCKER
+ db SPRITE_POKEFAN_M
+ db SPRITE_BIKER
+ db SPRITE_BLAINE
+ db SPRITE_PHARMACIST
+ db SPRITE_FISHER
+ db SPRITE_SUPER_NERD
+ db SPRITE_BLACK_BELT
+ db SPRITE_ROCKET
+ db SPRITE_YOUNGSTER
+ db SPRITE_LASS
+ db SPRITE_YOUNGSTER
+ db SPRITE_ROCKET_GIRL
+ db SPRITE_SAGE
+ db SPRITE_GRANNY
+ db SPRITE_ROCKER
+ db SPRITE_POKEFAN_M
+ db SPRITE_KIMONO_GIRL
+ db SPRITE_TWIN
+ db SPRITE_POKEFAN_F
+ db SPRITE_RED
+ db SPRITE_BLUE
+ db SPRITE_OFFICER
+ db SPRITE_ROCKET_GIRL
+
+ret_170bd2: ; 170bd2
+ ret
+; 170bd3
+
+SpecialCheckForBattleTowerRules: ; 170bd3
+ farcall CheckForBattleTowerRules
+ jr c, .asm_170bde
+ xor a
+ jr .asm_170be0
+
+.asm_170bde
+ ld a, $1
+
+.asm_170be0
+ ld [ScriptVar], a
+ ret
+; 170be4
diff --git a/mobile/fixed_words.asm b/mobile/fixed_words.asm
new file mode 100755
index 000000000..5f6fc1808
--- /dev/null
+++ b/mobile/fixed_words.asm
@@ -0,0 +1,4294 @@
+; These functions seem to be related to the selection of preset phrases
+; for use in mobile communications. Annoyingly, they separate the
+; Battle Tower function above from the data it references.
+Function11c05d: ; 11c05d
+ ld a, e
+ or d
+ jr z, .error
+ ld a, e
+ and d
+ cp $ff
+ jr z, .error
+ push hl
+ call CopyMobileEZChatToC608
+ pop hl
+ call PlaceString
+ and a
+ ret
+
+.error
+ ld c, l
+ ld b, h
+ scf
+ ret
+; 11c075
+
+Function11c075: ; 11c075
+ push de
+ ld a, c
+ call Function11c254
+ pop de
+ ld bc, wcd36
+ call Function11c08f
+ ret
+; 11c082
+
+Function11c082: ; 11c082
+; XXX
+ push de
+ ld a, c
+ call Function11c254
+ pop de
+ ld bc, wcd36
+ call PrintEZChatBattleMessage
+ ret
+; 11c08f
+
+Function11c08f: ; 11c08f
+ ld l, e
+ ld h, d
+ push hl
+ ld a, 3
+.loop
+ push af
+ ld a, [bc]
+ ld e, a
+ inc bc
+ ld a, [bc]
+ ld d, a
+ inc bc
+ push bc
+ call Function11c05d
+ jr c, .okay
+ inc bc
+
+.okay
+ ld l, c
+ ld h, b
+ pop bc
+ pop af
+ dec a
+ jr nz, .loop
+ pop hl
+ ld de, 2 * SCREEN_WIDTH
+ add hl, de
+ ld a, $3
+.loop2
+ push af
+ ld a, [bc]
+ ld e, a
+ inc bc
+ ld a, [bc]
+ ld d, a
+ inc bc
+ push bc
+ call Function11c05d
+ jr c, .okay2
+ inc bc
+
+.okay2
+ ld l, c
+ ld h, b
+ pop bc
+ pop af
+ dec a
+ jr nz, .loop2
+ ret
+; 11c0c6
+
+PrintEZChatBattleMessage: ; 11c0c6
+; Use up to 6 words from bc to print text starting at de.
+ ; Preserve $cf63, $cf64
+ ld a, [wJumptableIndex]
+ ld l, a
+ ld a, [wcf64]
+ ld h, a
+ push hl
+ ; reset value at c618 (not preserved)
+ ld hl, $c618
+ ld a, $0
+ ld [hli], a
+ ; preserve de
+ push de
+ ; $cf63 keeps track of which line we're on (0, 1, or 2)
+ ; $cf64 keeps track of how much room we have left in the current line
+ xor a
+ ld [wJumptableIndex], a
+ ld a, 18
+ ld [wcf64], a
+ ld a, $6 ; up to 6 times
+.loop
+ push af
+ ; load the 2-byte word data pointed to by bc
+ ld a, [bc]
+ ld e, a
+ inc bc
+ ld a, [bc]
+ ld d, a
+ inc bc
+ ; if $0000, we're done
+ or e
+ jr z, .done
+ ; preserving hl and bc, get the length of the word
+ push hl
+ push bc
+ call CopyMobileEZChatToC608
+ call GetLengthOfWordAtC608
+ ld e, c
+ pop bc
+ pop hl
+ ; if the functions return 0, we're done
+ ld a, e
+ or a
+ jr z, .done
+.loop2
+ ; e contains the length of the word
+ ; add 1 for the space, unless we're at the start of the line
+ ld a, [wcf64]
+ cp 18
+ jr z, .skip_inc
+ inc e
+
+.skip_inc
+ ; if the word fits, put it on the same line
+ cp e
+ jr nc, .same_line
+ ; otherwise, go to the next line
+ ld a, [wJumptableIndex]
+ inc a
+ ld [wJumptableIndex], a
+ ; if we're on line 2, insert "<NEXT>"
+ ld [hl], "<NEXT>"
+ rra
+ jr c, .got_line_terminator
+ ; else, insert "<CONT>"
+ ld [hl], "<CONT>"
+
+.got_line_terminator
+ inc hl
+ ; init the next line, holding on to the same word
+ ld a, 18
+ ld [wcf64], a
+ dec e
+ jr .loop2
+
+.same_line
+ ; add the space, unless we're at the start of the line
+ cp 18
+ jr z, .skip_space
+ ld [hl], " "
+ inc hl
+
+.skip_space
+ ; deduct the length of the word
+ sub e
+ ld [wcf64], a
+ ld de, $c608
+.place_string_loop
+ ; load the string from de to hl
+ ld a, [de]
+ cp "@"
+ jr z, .done
+ inc de
+ ld [hli], a
+ jr .place_string_loop
+
+.done
+ ; next word?
+ pop af
+ dec a
+ jr nz, .loop
+ ; we're finished, place "<DONE>"
+ ld [hl], "<DONE>"
+ ; now, let's place the string from c618 to bc
+ pop bc
+ ld hl, $c618
+ call PlaceHLTextAtBC
+ ; restore the original values of $cf63 and $cf64
+ pop hl
+ ld a, l
+ ld [wJumptableIndex], a
+ ld a, h
+ ld [wcf64], a
+ ret
+; 11c14a
+
+GetLengthOfWordAtC608: ; 11c14a
+ ld c, $0
+ ld hl, $c608
+.loop
+ ld a, [hli]
+ cp "@"
+ ret z
+ inc c
+ jr .loop
+; 11c156
+
+CopyMobileEZChatToC608: ; 11c156
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, "@"
+ ld hl, $c608
+ ld bc, NAME_LENGTH
+ call ByteFill
+ ld a, d
+ and a
+ jr z, .get_name
+ ld hl, MobileEZChatCategoryPointers
+ dec d
+ sla d
+ ld c, d
+ ld b, $0
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ ld b, a
+ push bc
+ pop hl
+ ld c, e
+ ld b, $0
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ add hl, bc
+ ld bc, NAME_LENGTH_JAPANESE - 1
+.copy_string
+ ld de, $c608
+ call CopyBytes
+ ld de, $c608
+ pop af
+ ld [rSVBK], a
+ ret
+
+.get_name
+ ld a, e
+ ld [wd265], a
+ call GetPokemonName
+ ld hl, StringBuffer1
+ ld bc, PKMN_NAME_LENGTH - 1
+ jr .copy_string
+; 11c1ab
+
+Function11c1ab: ; 11c1ab
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ call Function11c1b9
+ pop af
+ ld [hInMenu], a
+ ret
+; 11c1b9
+
+Function11c1b9: ; 11c1b9
+ call .InitKanaMode
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ call EZChat_MasterLoop
+ pop af
+ ld [rSVBK], a
+ ret
+; 11c1ca
+
+.InitKanaMode: ; 11c1ca
+ xor a
+ ld [wJumptableIndex], a
+ ld [wcf64], a
+ ld [wcf65], a
+ ld [wcf66], a
+ ld [wcd23], a
+ ld [wcd20], a
+ ld [wcd21], a
+ ld [wcd22], a
+ ld [wcd35], a
+ ld [wcd2b], a
+ ld a, $ff
+ ld [wcd24], a
+ ld a, [wMenuCursorY]
+ dec a
+ call Function11c254
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearScreen
+ call Function11d323
+ call SetPalettes
+ call DisableLCD
+ ld hl, GFX_11d67e
+ ld de, VTiles2
+ ld bc, $60
+ call CopyBytes
+ ld hl, LZ_11d6de
+ ld de, VTiles0
+ call Decompress
+ call EnableLCD
+ farcall ReloadMapPart
+ farcall ClearSpriteAnims
+ farcall LoadPokemonData
+ farcall Pokedex_ABCMode
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $c6d0
+ ld de, LYOverrides
+ ld bc, $100
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ call EZChat_GetCategoryWordsByKana
+ call EZChat_GetSeenPokemonByKana
+ ret
+; 11c254
+
+Function11c254: ; 11c254
+ push af
+ ld a, $4
+ call GetSRAMBank
+ ld hl, $a007
+ pop af
+ sla a
+ sla a
+ ld c, a
+ sla a
+ add c
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld de, wcd36
+ ld bc, 12
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 11c277
+
+EZChat_ClearBottom12Rows: ; 11c277 (47:4277)
+ ld a, " "
+ hlcoord 0, 6
+ ld bc, (SCREEN_HEIGHT - 6) * SCREEN_WIDTH
+ call ByteFill
+ ret
+
+EZChat_MasterLoop: ; 11c283
+.loop
+ call JoyTextDelay
+ ld a, [hJoyPressed]
+ ld [hJoypadPressed], a
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .exit
+ call .DoJumptableFunction
+ farcall PlaySpriteAnimations
+ farcall ReloadMapPart
+ jr .loop
+
+.exit
+ farcall ClearSpriteAnims
+ call ClearSprites
+ ret
+; 11c2ac
+
+.DoJumptableFunction: ; 11c2ac
+ jumptable .Jumptable, wJumptableIndex
+; 11c2bb
+
+.Jumptable: ; 11c2bb (47:42bb)
+ dw .SpawnObjects ; 00
+ dw .InitRAM ; 01
+ dw Function11c35f ; 02
+ dw Function11c373 ; 03
+ dw Function11c3c2 ; 04
+ dw Function11c3ed ; 05
+ dw Function11c52c ; 06
+ dw Function11c53d ; 07
+ dw Function11c658 ; 08
+ dw Function11c675 ; 09
+ dw Function11c9bd ; 0a
+ dw Function11c9c3 ; 0b
+ dw Function11caad ; 0c
+ dw Function11cab3 ; 0d
+ dw Function11cb52 ; 0e
+ dw Function11cb66 ; 0f
+ dw Function11cbf5 ; 10
+ dw Function11ccef ; 11
+ dw Function11cd04 ; 12
+ dw Function11cd20 ; 13
+ dw Function11cd54 ; 14
+ dw Function11ce0b ; 15
+ dw Function11ce2b ; 16
+
+.SpawnObjects: ; 11c2e9 (47:42e9)
+ depixel 3, 1, 2, 5
+ ld a, SPRITE_ANIM_INDEX_1D
+ call _InitSpriteAnimStruct
+ depixel 8, 1, 2, 5
+
+ ld a, SPRITE_ANIM_INDEX_1D
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, $1
+ ld [hl], a
+
+ depixel 9, 2, 2, 0
+ ld a, SPRITE_ANIM_INDEX_1D
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, $3
+ ld [hl], a
+
+ depixel 10, 16
+ ld a, SPRITE_ANIM_INDEX_1D
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, $4
+ ld [hl], a
+
+ depixel 10, 4
+ ld a, SPRITE_ANIM_INDEX_1D
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, $5
+ ld [hl], a
+
+ depixel 10, 2
+ ld a, SPRITE_ANIM_INDEX_1D
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, $2
+ ld [hl], a
+
+ ld hl, wcd23
+ set 1, [hl]
+ set 2, [hl]
+ jp Function11cfb5
+
+.InitRAM: ; 11c346 (47:4346)
+ ld a, $9
+ ld [wcd2d], a
+ ld a, $2
+ ld [wcd2e], a
+ ld [wcd2f], a
+ ld [wcd30], a
+ ld de, wcd2d
+ call Function11cfce
+ jp Function11cfb5
+
+Function11c35f: ; 11c35f (47:435f)
+ ld hl, wcd2f
+ inc [hl]
+ inc [hl]
+ dec hl
+ dec hl
+ dec [hl]
+ push af
+ ld de, wcd2d
+ call Function11cfce
+ pop af
+ ret nz
+ jp Function11cfb5
+
+Function11c373: ; 11c373 (47:4373)
+ ld hl, wcd30
+ inc [hl]
+ inc [hl]
+ dec hl
+ dec hl
+ dec [hl]
+ push af
+ ld de, wcd2d
+ call Function11cfce
+ pop af
+ ret nz
+ call Function11c38a
+ jp Function11cfb5
+
+Function11c38a: ; 11c38a (47:438a)
+ ld hl, Unknown_11c986
+ ld bc, wcd36
+ ld a, $6
+.asm_11c392
+ push af
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ push hl
+ push de
+ pop hl
+ ld a, [bc]
+ inc bc
+ ld e, a
+ ld a, [bc]
+ inc bc
+ ld d, a
+ push bc
+ or e
+ jr z, .asm_11c3af
+ ld a, e
+ and d
+ cp $ff
+ jr z, .asm_11c3af
+ call Function11c05d
+ jr .asm_11c3b5
+.asm_11c3af
+ ld de, String_11c3bc
+ call PlaceString
+.asm_11c3b5
+ pop bc
+ pop hl
+ pop af
+ dec a
+ jr nz, .asm_11c392
+ ret
+; 11c3bc (47:43bc)
+
+String_11c3bc: ; 11c3bc
+ db "ーーーーー@"
+; 11c3c2
+
+Function11c3c2: ; 11c3c2 (47:43c2)
+ call EZChat_ClearBottom12Rows
+ ld de, Unknown_11cfbe
+ call Function11d035
+ hlcoord 1, 7
+ ld de, String_11c4db
+ call PlaceString
+ hlcoord 1, 16
+ ld de, String_11c51b
+ call PlaceString
+ call Function11c4be
+ ld hl, wcd23
+ set 0, [hl]
+ ld hl, wcd24
+ res 0, [hl]
+ call Function11cfb5
+
+Function11c3ed: ; 11c3ed (47:43ed)
+ ld hl, wcd20 ; wcd20
+ ld de, hJoypadPressed ; $ffa3
+ ld a, [de]
+ and $8
+ jr nz, .asm_11c426
+ ld a, [de]
+ and $2
+ jr nz, .asm_11c41a
+ ld a, [de]
+ and $1
+ jr nz, .asm_11c42c
+ ld de, hJoyLast
+ ld a, [de]
+ and $40
+ jr nz, .asm_11c47c
+ ld a, [de]
+ and $80
+ jr nz, .asm_11c484
+ ld a, [de]
+ and $20
+ jr nz, .asm_11c48c
+ ld a, [de]
+ and $10
+ jr nz, .asm_11c498
+ ret
+
+.asm_11c41a
+ call PlayClickSFX
+.asm_11c41d
+ ld hl, wcd24
+ set 0, [hl]
+ ld a, $c
+ jr .asm_11c475
+.asm_11c426
+ ld a, $8
+ ld [wcd20], a ; wcd20
+ ret
+
+.asm_11c42c
+ ld a, [wcd20] ; wcd20
+ cp $6
+ jr c, .asm_11c472
+ sub $6
+ jr z, .asm_11c469
+ dec a
+ jr z, .asm_11c41d
+ ld hl, wcd36
+ ld c, $c
+ xor a
+.asm_11c440
+ or [hl]
+ inc hl
+ dec c
+ jr nz, .asm_11c440
+ and a
+ jr z, .asm_11c460
+ ld de, Unknown_11cfba
+ call Function11cfce
+ decoord 1, 2
+ ld bc, wcd36
+ call Function11c08f
+ ld hl, wcd24
+ set 0, [hl]
+ ld a, $e
+ jr .asm_11c475
+.asm_11c460
+ ld hl, wcd24
+ set 0, [hl]
+ ld a, $11
+ jr .asm_11c475
+.asm_11c469
+ ld hl, wcd24
+ set 0, [hl]
+ ld a, $a
+ jr .asm_11c475
+.asm_11c472
+ call Function11c4a5
+.asm_11c475
+ ld [wJumptableIndex], a
+ call PlayClickSFX
+ ret
+
+.asm_11c47c
+ ld a, [hl]
+ cp $3
+ ret c
+ sub $3
+ jr .asm_11c4a3
+.asm_11c484
+ ld a, [hl]
+ cp $6
+ ret nc
+ add $3
+ jr .asm_11c4a3
+.asm_11c48c
+ ld a, [hl]
+ and a
+ ret z
+ cp $3
+ ret z
+ cp $6
+ ret z
+ dec a
+ jr .asm_11c4a3
+.asm_11c498
+ ld a, [hl]
+ cp $2
+ ret z
+ cp $5
+ ret z
+ cp $8
+ ret z
+ inc a
+.asm_11c4a3
+ ld [hl], a
+ ret
+
+Function11c4a5: ; 11c4a5 (47:44a5)
+ ld hl, wcd23
+ res 0, [hl]
+ ld a, [wcd2b]
+ and a
+ jr nz, .asm_11c4b7
+ xor a
+ ld [wcd21], a
+ ld a, $6
+ ret
+
+.asm_11c4b7
+ xor a
+ ld [wcd22], a
+ ld a, $15
+ ret
+
+Function11c4be: ; 11c4be (47:44be)
+ ld a, $1
+ hlcoord 0, 6, AttrMap
+ ld bc, $a0
+ call ByteFill
+ ld a, $7
+ hlcoord 0, 14, AttrMap
+ ld bc, $28
+ call ByteFill
+ farcall ReloadMapPart
+ ret
+; 11c4db (47:44db)
+
+String_11c4db: ; 11c4db
+ db "6つのことば¯くみあわせます"
+ next "かえたいところ¯えらぶと でてくる"
+ next "ことばのグループから いれかえたい"
+ next "たんご¯えらんでください"
+ db "@"
+; 11c51b
+
+String_11c51b: ; 11c51b
+ db "ぜんぶけす やめる けってい@"
+; 11c52c
+
+Function11c52c: ; 11c52c (47:452c)
+ call EZChat_ClearBottom12Rows
+ call EZChat_PlaceCategoryNames
+ call Function11c618
+ ld hl, wcd24
+ res 1, [hl]
+ call Function11cfb5
+
+Function11c53d: ; 11c53d (47:453d)
+ ld hl, wcd21
+ ld de, hJoypadPressed ; $ffa3
+
+ ld a, [de]
+ and START
+ jr nz, .start
+
+ ld a, [de]
+ and SELECT
+ jr nz, .select
+
+ ld a, [de]
+ and B_BUTTON
+ jr nz, .b
+
+ ld a, [de]
+ and A_BUTTON
+ jr nz, .a
+
+ ld de, hJoyLast
+
+ ld a, [de]
+ and D_UP
+ jr nz, .up
+
+ ld a, [de]
+ and D_DOWN
+ jr nz, .down
+
+ ld a, [de]
+ and D_LEFT
+ jr nz, .left
+
+ ld a, [de]
+ and D_RIGHT
+ jr nz, .right
+
+ ret
+
+.a
+ ld a, [wcd21]
+ cp 15
+ jr c, .got_category
+ sub $f
+ jr z, .done
+ dec a
+ jr z, .mode
+ jr .b
+
+.start
+ ld hl, wcd24
+ set 0, [hl]
+ ld a, $8
+ ld [wcd20], a ; wcd20
+
+.b
+ ld a, $4
+ jr .go_to_function
+
+.select
+ ld a, [wcd2b]
+ xor $1
+ ld [wcd2b], a
+ ld a, $15
+ jr .go_to_function
+
+.mode
+ ld a, $13
+ jr .go_to_function
+
+.got_category
+ ld a, $8
+
+.go_to_function
+ ld hl, wcd24
+ set 1, [hl]
+ ld [wJumptableIndex], a
+ call PlayClickSFX
+ ret
+
+.done
+ ld a, [wcd20] ; wcd20
+ call Function11ca6a
+ call PlayClickSFX
+ ret
+
+.up
+ ld a, [hl]
+ cp $3
+ ret c
+ sub $3
+ jr .finish_dpad
+
+.down
+ ld a, [hl]
+ cp $f
+ ret nc
+ add $3
+ jr .finish_dpad
+
+.left
+ ld a, [hl]
+ and a
+ ret z
+ cp $3
+ ret z
+ cp $6
+ ret z
+ cp $9
+ ret z
+ cp $c
+ ret z
+ cp $f
+ ret z
+ dec a
+ jr .finish_dpad
+
+.right
+ ld a, [hl]
+ cp $2
+ ret z
+ cp $5
+ ret z
+ cp $8
+ ret z
+ cp $b
+ ret z
+ cp $e
+ ret z
+ cp $11
+ ret z
+ inc a
+
+.finish_dpad
+ ld [hl], a
+ ret
+; 11c5f0
+
+EZChat_PlaceCategoryNames: ; 11c5f0 (47:45f0)
+ ld de, MobileEZChatCategoryNames
+ ld bc, Coords_11c63a
+ ld a, 15
+.loop
+ push af
+ ld a, [bc]
+ inc bc
+ ld l, a
+ ld a, [bc]
+ inc bc
+ ld h, a
+ push bc
+ call PlaceString
+ ; The category names are padded with "@".
+ ; To find the next category, the system must
+ ; find the first character at de that is not "@".
+.find_next_string_loop
+ inc de
+ ld a, [de]
+ cp "@"
+ jr z, .find_next_string_loop
+ pop bc
+ pop af
+ dec a
+ jr nz, .loop
+ hlcoord 1, 17
+ ld de, EZChatString_Stop_Mode_Cancel
+ call PlaceString
+ ret
+
+Function11c618: ; 11c618 (47:4618)
+ ld a, $2
+ hlcoord 0, 6, AttrMap
+ ld bc, $c8
+ call ByteFill
+ farcall ReloadMapPart
+ ret
+; 11c62a (47:462a)
+
+EZChatString_Stop_Mode_Cancel: ; 11c62a
+ db "けす モード やめる@"
+; 11c63a
+
+Coords_11c63a: ; 11c63a
+ dwcoord 1, 7
+ dwcoord 7, 7
+ dwcoord 13, 7
+ dwcoord 1, 9
+ dwcoord 7, 9
+ dwcoord 13, 9
+ dwcoord 1, 11
+ dwcoord 7, 11
+ dwcoord 13, 11
+ dwcoord 1, 13
+ dwcoord 7, 13
+ dwcoord 13, 13
+ dwcoord 1, 15
+ dwcoord 7, 15
+ dwcoord 13, 15
+; 11c658
+
+Function11c658: ; 11c658 (47:4658)
+ call EZChat_ClearBottom12Rows
+ call Function11c770
+ ld de, Unknown_11cfc2
+ call Function11d035
+ call Function11c9ab
+ call Function11c7bc
+ call Function11c86e
+ ld hl, wcd24
+ res 3, [hl]
+ call Function11cfb5
+
+Function11c675: ; 11c675 (47:4675)
+ ld hl, wMobileCommsJumptableIndex
+ ld de, hJoypadPressed ; $ffa3
+ ld a, [de]
+ and A_BUTTON
+ jr nz, .a
+ ld a, [de]
+ and B_BUTTON
+ jr nz, .b
+ ld a, [de]
+ and START
+ jr nz, .start
+ ld a, [de]
+ and SELECT
+ jr z, .select
+
+ ld a, [wcd26]
+ and a
+ ret z
+ sub $c
+ jr nc, .asm_11c699
+ xor a
+.asm_11c699
+ ld [wcd26], a
+ jr .asm_11c6c4
+
+.start
+ ld hl, wcd28
+ ld a, [wcd26]
+ add $c
+ cp [hl]
+ ret nc
+ ld [wcd26], a
+ ld a, [hl]
+ ld b, a
+ ld hl, wMobileCommsJumptableIndex
+ ld a, [wcd26]
+ add [hl]
+ jr c, .asm_11c6b9
+ cp b
+ jr c, .asm_11c6c4
+.asm_11c6b9
+ ld a, [wcd28]
+ ld hl, wcd26
+ sub [hl]
+ dec a
+ ld [wMobileCommsJumptableIndex], a
+.asm_11c6c4
+ call Function11c992
+ call Function11c7bc
+ call Function11c86e
+ ret
+
+.select
+ ld de, hJoyLast
+ ld a, [de]
+ and D_UP
+ jr nz, .asm_11c708
+ ld a, [de]
+ and D_DOWN
+ jr nz, .asm_11c731
+ ld a, [de]
+ and D_LEFT
+ jr nz, .asm_11c746
+ ld a, [de]
+ and D_RIGHT
+ jr nz, .asm_11c755
+ ret
+
+.a
+ call Function11c8f6
+ ld a, $4
+ ld [wcd35], a
+ jr .asm_11c6fc
+.b
+ ld a, [wcd2b]
+ and a
+ jr nz, .asm_11c6fa
+ ld a, $6
+ jr .asm_11c6fc
+.asm_11c6fa
+ ld a, $15
+.asm_11c6fc
+ ld [wJumptableIndex], a
+ ld hl, wcd24
+ set 3, [hl]
+ call PlayClickSFX
+ ret
+
+.asm_11c708
+ ld a, [hl]
+ cp $3
+ jr c, .asm_11c711
+ sub $3
+ jr .asm_11c76e
+.asm_11c711
+ ld a, [wcd26]
+ sub $3
+ ret c
+ ld [wcd26], a
+ jr .asm_11c6c4
+.asm_11c71c
+ ld hl, wcd28
+ ld a, [wcd26]
+ add $c
+ ret c
+ cp [hl]
+ ret nc
+ ld a, [wcd26]
+ add $3
+ ld [wcd26], a
+ jr .asm_11c6c4
+.asm_11c731
+ ld a, [wcd28]
+ ld b, a
+ ld a, [wcd26]
+ add [hl]
+ add $3
+ cp b
+ ret nc
+ ld a, [hl]
+ cp $9
+ jr nc, .asm_11c71c
+ add $3
+ jr .asm_11c76e
+.asm_11c746
+ ld a, [hl]
+ and a
+ ret z
+ cp $3
+ ret z
+ cp $6
+ ret z
+ cp $9
+ ret z
+ dec a
+ jr .asm_11c76e
+.asm_11c755
+ ld a, [wcd28]
+ ld b, a
+ ld a, [wcd26]
+ add [hl]
+ inc a
+ cp b
+ ret nc
+ ld a, [hl]
+ cp $2
+ ret z
+ cp $5
+ ret z
+ cp $8
+ ret z
+ cp $b
+ ret z
+ inc a
+.asm_11c76e
+ ld [hl], a
+ ret
+
+Function11c770: ; 11c770 (47:4770)
+ xor a
+ ld [wMobileCommsJumptableIndex], a
+ ld [wcd26], a
+ ld [wcd27], a
+ ld a, [wcd2b]
+ and a
+ jr nz, .cd2b_is_nonzero
+ ld a, [wcd21]
+ and a
+ jr z, .cd21_is_zero
+ ; load from data array
+ dec a
+ sla a
+ ld hl, MobileEZChatData_WordAndPageCounts
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld a, [hli]
+ ld [wcd28], a
+ ld a, [hl]
+.load
+ ld [wcd29], a
+ ret
+
+.cd21_is_zero
+ ; compute from [wc7d2]
+ ld a, [wc7d2]
+ ld [wcd28], a
+.div_12
+ ld c, 12
+ call SimpleDivide
+ and a
+ jr nz, .no_need_to_floor
+ dec b
+.no_need_to_floor
+ ld a, b
+ jr .load
+
+.cd2b_is_nonzero
+ ; compute from [c6a8 + 2 * [cd22]]
+ ld hl, $c6a8 ; $c68a + 30
+ ld a, [wcd22]
+ ld c, a
+ ld b, 0
+ add hl, bc
+ add hl, bc
+ ld a, [hl]
+ ld [wcd28], a
+ jr .div_12
+
+Function11c7bc: ; 11c7bc (47:47bc)
+ ld bc, Unknown_11c854
+ ld a, [wcd2b]
+ and a
+ jr nz, .asm_11c814
+ ld a, [wcd21]
+ ld d, a
+ and a
+ jr z, .asm_11c7e9
+ ld a, [wcd26]
+ ld e, a
+.asm_11c7d0
+ ld a, [bc]
+ ld l, a
+ inc bc
+ ld a, [bc]
+ ld h, a
+ inc bc
+ and l
+ cp $ff
+ ret z
+ push bc
+ push de
+ call Function11c05d
+ pop de
+ pop bc
+ inc e
+ ld a, [wcd28]
+ cp e
+ jr nz, .asm_11c7d0
+ ret
+
+.asm_11c7e9
+ ld hl, wListPointer
+ ld a, [wcd26]
+ ld e, a
+ add hl, de
+.asm_11c7f1
+ push de
+ ld a, [hli]
+ ld e, a
+ ld d, $0
+ push hl
+ ld a, [bc]
+ ld l, a
+ inc bc
+ ld a, [bc]
+ ld h, a
+ inc bc
+ and l
+ cp $ff
+ jr z, .asm_11c811
+ push bc
+ call Function11c05d
+ pop bc
+ pop hl
+ pop de
+ inc e
+ ld a, [wcd28]
+ cp e
+ jr nz, .asm_11c7f1
+ ret
+
+.asm_11c811
+ pop hl
+ pop de
+ ret
+
+.asm_11c814
+ ld hl, $c648
+ ld a, [wcd22]
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ push de
+ pop hl
+ ld a, [wcd26]
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [wcd26]
+ ld e, a
+.asm_11c831
+ push de
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ push hl
+ ld a, [bc]
+ ld l, a
+ inc bc
+ ld a, [bc]
+ ld h, a
+ inc bc
+ and l
+ cp $ff
+ jr z, .asm_11c851
+ push bc
+ call Function11c05d
+ pop bc
+ pop hl
+ pop de
+ inc e
+ ld a, [wcd28]
+ cp e
+ jr nz, .asm_11c831
+ ret
+
+.asm_11c851
+ pop hl
+ pop de
+ ret
+; 11c854 (47:4854)
+
+Unknown_11c854: ; 11c854
+ dwcoord 2, 8
+ dwcoord 8, 8
+ dwcoord 14, 8
+ dwcoord 2, 10
+ dwcoord 8, 10
+ dwcoord 14, 10
+ dwcoord 2, 12
+ dwcoord 8, 12
+ dwcoord 14, 12
+ dwcoord 2, 14
+ dwcoord 8, 14
+ dwcoord 14, 14
+ dw -1
+; 11c86e
+
+Function11c86e: ; 11c86e (47:486e)
+ ld a, [wcd26]
+ and a
+ jr z, .asm_11c88a
+ hlcoord 2, 17
+ ld de, MobileString_Prev
+ call PlaceString
+ hlcoord 6, 17
+ ld c, $3
+ xor a
+.asm_11c883
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_11c883
+ jr .asm_11c895
+.asm_11c88a
+ hlcoord 2, 17
+ ld c, $7
+ ld a, $7f
+.asm_11c891
+ ld [hli], a
+ dec c
+ jr nz, .asm_11c891
+.asm_11c895
+ ld hl, wcd28
+ ld a, [wcd26]
+ add $c
+ jr c, .asm_11c8b7
+ cp [hl]
+ jr nc, .asm_11c8b7
+ hlcoord 16, 17
+ ld de, MobileString_Next
+ call PlaceString
+ hlcoord 11, 17
+ ld a, $3
+ ld c, a
+.asm_11c8b1
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_11c8b1
+ ret
+
+.asm_11c8b7
+ hlcoord 17, 16
+ ld a, $7f
+ ld [hl], a
+ hlcoord 11, 17
+ ld c, $7
+.asm_11c8c2
+ ld [hli], a
+ dec c
+ jr nz, .asm_11c8c2
+ ret
+; 11c8c7 (47:48c7)
+
+BCD2String: ; 11c8c7
+ inc a
+ push af
+ and $f
+ ld [hDividend], a
+ pop af
+ and $f0
+ swap a
+ ld [hDividend + 1], a
+ xor a
+ ld [hDividend + 2], a
+ push hl
+ farcall Function11a80c
+ pop hl
+ ld a, [wcd63]
+ add "0"
+ ld [hli], a
+ ld a, [wcd62]
+ add "0"
+ ld [hli], a
+ ret
+; 11c8ec
+
+MobileString_Page: ; 11c8ec
+ db "ぺージ@"
+; 11c8f0
+
+MobileString_Prev: ; 11c8f0
+ db "まえ@"
+; 11c8f3
+
+MobileString_Next: ; 11c8f3
+ db "つぎ@"
+; 11c8f6
+
+Function11c8f6: ; 11c8f6 (47:48f6)
+ ld a, [wcd20] ; wcd20
+ call Function11c95d
+ push hl
+ ld a, [wcd2b]
+ and a
+ jr nz, .asm_11c938
+ ld a, [wcd21]
+ ld d, a
+ and a
+ jr z, .asm_11c927
+ ld hl, wcd26
+ ld a, [wMobileCommsJumptableIndex]
+ add [hl]
+.asm_11c911
+ ld e, a
+.asm_11c912
+ pop hl
+ push de
+ call Function11c05d
+ pop de
+ ld a, [wcd20] ; wcd20
+ ld c, a
+ ld b, $0
+ ld hl, wcd36
+ add hl, bc
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+.asm_11c927
+ ld hl, wcd26
+ ld a, [wMobileCommsJumptableIndex]
+ add [hl]
+ ld c, a
+ ld b, $0
+ ld hl, wListPointer
+ add hl, bc
+ ld a, [hl]
+ jr .asm_11c911
+.asm_11c938
+ ld hl, $c648
+ ld a, [wcd22]
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ push de
+ pop hl
+ ld a, [wcd26]
+ ld e, a
+ ld d, $0
+ add hl, de
+ add hl, de
+ ld a, [wMobileCommsJumptableIndex]
+ ld e, a
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ jr .asm_11c912
+
+Function11c95d: ; 11c95d (47:495d)
+ sla a
+ ld c, a
+ ld b, 0
+ ld hl, Unknown_11c986
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ ld b, a
+ push bc
+ push bc
+ pop hl
+ ld a, $5
+ ld c, a
+ ld a, $7f
+.asm_11c972
+ ld [hli], a
+ dec c
+ jr nz, .asm_11c972
+ dec hl
+ ld bc, -20
+ add hl, bc
+ ld a, $5
+ ld c, a
+ ld a, $7f
+.asm_11c980
+ ld [hld], a
+ dec c
+ jr nz, .asm_11c980
+ pop hl
+ ret
+; 11c986 (47:4986)
+
+Unknown_11c986:
+ dwcoord 1, 2
+ dwcoord 7, 2
+ dwcoord 13, 2
+ dwcoord 1, 4
+ dwcoord 7, 4
+ dwcoord 13, 4
+; 11c992
+
+Function11c992: ; 11c992 (47:4992)
+ ld a, $8
+ hlcoord 2, 7
+.asm_11c997
+ push af
+ ld a, $7f
+ push hl
+ ld bc, $11
+ call ByteFill
+ pop hl
+ ld bc, $14
+ add hl, bc
+ pop af
+ dec a
+ jr nz, .asm_11c997
+ ret
+
+Function11c9ab: ; 11c9ab (47:49ab)
+ ld a, $7
+ hlcoord 0, 6, AttrMap
+ ld bc, $c8
+ call ByteFill
+ farcall ReloadMapPart
+ ret
+
+Function11c9bd: ; 11c9bd (47:49bd)
+ ld de, String_11ca38
+ call Function11ca7f
+
+Function11c9c3: ; 11c9c3 (47:49c3)
+ ld hl, wcd2a
+ ld de, hJoypadPressed ; $ffa3
+ ld a, [de]
+ and $1
+ jr nz, .asm_11c9de
+ ld a, [de]
+ and $2
+ jr nz, .asm_11c9e9
+ ld a, [de]
+ and $40
+ jr nz, .asm_11c9f7
+ ld a, [de]
+ and $80
+ jr nz, .asm_11c9fc
+ ret
+
+.asm_11c9de
+ ld a, [hl]
+ and a
+ jr nz, .asm_11c9e9
+ call Function11ca5e
+ xor a
+ ld [wcd20], a ; wcd20
+.asm_11c9e9
+ ld hl, wcd24
+ set 4, [hl]
+ ld a, $4
+ ld [wJumptableIndex], a
+ call PlayClickSFX
+ ret
+
+.asm_11c9f7
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ret
+
+.asm_11c9fc
+ ld a, [hl]
+ and a
+ ret nz
+ inc [hl]
+ ret
+
+Function11ca01: ; 11ca01 (47:4a01)
+ hlcoord 14, 7, AttrMap
+ ld de, $14
+ ld a, $5
+ ld c, a
+.asm_11ca0a
+ push hl
+ ld a, $6
+ ld b, a
+ ld a, $7
+.asm_11ca10
+ ld [hli], a
+ dec b
+ jr nz, .asm_11ca10
+ pop hl
+ add hl, de
+ dec c
+ jr nz, .asm_11ca0a
+
+Function11ca19: ; 11ca19 (47:4a19)
+ hlcoord 0, 12, AttrMap
+ ld de, $14
+ ld a, $6
+ ld c, a
+.asm_11ca22
+ push hl
+ ld a, $14
+ ld b, a
+ ld a, $7
+.asm_11ca28
+ ld [hli], a
+ dec b
+ jr nz, .asm_11ca28
+ pop hl
+ add hl, de
+ dec c
+ jr nz, .asm_11ca22
+ farcall ReloadMapPart
+ ret
+; 11ca38 (47:4a38)
+
+String_11ca38: ; 11ca38
+ db "とうろくちゅう", $25, "あいさつ¯ぜんぶ"
+ next "けしても よろしいですか?@"
+; 11ca57
+
+String_11ca57: ; 11ca57
+ db "はい"
+ next "いいえ@"
+; 11ca5e
+
+Function11ca5e: ; 11ca5e (47:4a5e)
+ xor a
+.loop
+ push af
+ call Function11ca6a
+ pop af
+ inc a
+ cp $6
+ jr nz, .loop
+ ret
+
+Function11ca6a: ; 11ca6a (47:4a6a)
+ ld hl, wcd36
+ ld c, a
+ ld b, $0
+ add hl, bc
+ add hl, bc
+ ld [hl], b
+ inc hl
+ ld [hl], b
+ call Function11c95d
+ ld de, String_11c3bc
+ call PlaceString
+ ret
+
+Function11ca7f: ; 11ca7f (47:4a7f)
+ push de
+ ld de, Unknown_11cfc6
+ call Function11cfce
+ ld de, Unknown_11cfca
+ call Function11cfce
+ hlcoord 1, 14
+ pop de
+ call PlaceString
+ hlcoord 16, 8
+ ld de, String_11ca57
+ call PlaceString
+ call Function11ca01
+ ld a, $1
+ ld [wcd2a], a
+ ld hl, wcd24
+ res 4, [hl]
+ call Function11cfb5
+ ret
+
+Function11caad: ; 11caad (47:4aad)
+ ld de, String_11cb1c
+ call Function11ca7f
+
+Function11cab3: ; 11cab3 (47:4ab3)
+ ld hl, wcd2a
+ ld de, hJoypadPressed ; $ffa3
+ ld a, [de]
+ and $1
+ jr nz, .asm_11cace
+ ld a, [de]
+ and $2
+ jr nz, .asm_11caf9
+ ld a, [de]
+ and $40
+ jr nz, .asm_11cb12
+ ld a, [de]
+ and $80
+ jr nz, .asm_11cb17
+ ret
+
+.asm_11cace
+ call PlayClickSFX
+ ld a, [hl]
+ and a
+ jr nz, .asm_11cafc
+ ld a, [wcd35]
+ and a
+ jr z, .asm_11caf3
+ cp $ff
+ jr z, .asm_11caf3
+ ld a, $ff
+ ld [wcd35], a
+ hlcoord 1, 14
+ ld de, String_11cb31
+ call PlaceString
+ ld a, $1
+ ld [wcd2a], a
+ ret
+
+.asm_11caf3
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+
+.asm_11caf9
+ call PlayClickSFX
+.asm_11cafc
+ ld hl, wcd24
+ set 4, [hl]
+ ld a, $4
+ ld [wJumptableIndex], a
+ ld a, [wcd35]
+ cp $ff
+ ret nz
+ ld a, $1
+ ld [wcd35], a
+ ret
+
+.asm_11cb12
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ret
+
+.asm_11cb17
+ ld a, [hl]
+ and a
+ ret nz
+ inc [hl]
+ ret
+; 11cb1c (47:4b1c)
+
+String_11cb1c: ; 11cb1c
+ db "あいさつ", $25, "とうろく¯ちゅうし"
+ next "しますか?@"
+; 11cb31
+
+String_11cb31: ; 11cb31
+ db "とうろくちゅう", $25, "あいさつ", $24, "ほぞん"
+ next "されません", $4a, "よろしい ですか?@"
+; 11cb52
+
+Function11cb52: ; 11cb52 (47:4b52)
+ ld hl, Unknown_11cc01
+ ld a, [wMenuCursorY]
+.asm_11cb58
+ dec a
+ jr z, .asm_11cb5f
+ inc hl
+ inc hl
+ jr .asm_11cb58
+.asm_11cb5f
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ call Function11ca7f
+
+Function11cb66: ; 11cb66 (47:4b66)
+ ld hl, wcd2a
+ ld de, hJoypadPressed ; $ffa3
+ ld a, [de]
+ and $1
+ jr nz, .asm_11cb81
+ ld a, [de]
+ and $2
+ jr nz, .asm_11cbd7
+ ld a, [de]
+ and $40
+ jr nz, .asm_11cbeb
+ ld a, [de]
+ and $80
+ jr nz, .asm_11cbf0
+ ret
+
+.asm_11cb81
+ ld a, [hl]
+ and a
+ jr nz, .asm_11cbd4
+ ld a, $4
+ call GetSRAMBank
+ ld hl, $a007
+ ld a, [wMenuCursorY]
+ dec a
+ sla a
+ sla a
+ ld c, a
+ sla a
+ add c
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld de, wcd36
+ ld c, $c
+.asm_11cba2
+ ld a, [de]
+ ld [hli], a
+ inc de
+ dec c
+ jr nz, .asm_11cba2
+ call CloseSRAM
+ call PlayClickSFX
+ ld de, Unknown_11cfc6
+ call Function11cfce
+ ld hl, Unknown_11cc7e
+ ld a, [wMenuCursorY]
+.asm_11cbba
+ dec a
+ jr z, .asm_11cbc1
+ inc hl
+ inc hl
+ jr .asm_11cbba
+.asm_11cbc1
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ hlcoord 1, 14
+ call PlaceString
+ ld hl, wJumptableIndex
+ inc [hl]
+ inc hl
+ ld a, $10
+ ld [hl], a
+ ret
+
+.asm_11cbd4
+ call PlayClickSFX
+.asm_11cbd7
+ ld de, Unknown_11cfba
+ call Function11cfce
+ call Function11c38a
+ ld hl, wcd24
+ set 4, [hl]
+ ld a, $4
+ ld [wJumptableIndex], a
+ ret
+
+.asm_11cbeb
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ret
+
+.asm_11cbf0
+ ld a, [hl]
+ and a
+ ret nz
+ inc [hl]
+ ret
+
+Function11cbf5: ; 11cbf5 (47:4bf5)
+ call WaitSFX
+ ld hl, wcf64
+ dec [hl]
+ ret nz
+ dec hl
+ set 7, [hl]
+ ret
+; 11cc01 (47:4c01)
+
+Unknown_11cc01: ; 11cc01
+ dw String_11cc09
+ dw String_11cc23
+ dw String_11cc42
+ dw String_11cc60
+
+String_11cc09: ; 11cc09
+ db "じこしょうかい は"
+ next "この あいさつで いいですか?@"
+
+String_11cc23: ; 11cc23
+ db "たいせん ", $4a, "はじまるとき は"
+ next "この あいさつで いいですか?@"
+
+String_11cc42: ; 11cc42
+ db "たいせん ", $1d, "かったとき は"
+ next "この あいさつで いいですか?@"
+
+String_11cc60: ; 11cc60
+ db "たいせん ", $1d, "まけたとき は"
+ next "この あいさつで いいですか?@"
+; 11cc7e
+
+Unknown_11cc7e: ; 11cc7e
+ dw String_11cc86
+ dw String_11cc9d
+ dw String_11ccb9
+ dw String_11ccd4
+
+String_11cc86: ; 11cc86
+ db "じこしょうかい の"
+ next "あいさつ¯とうろくした!@"
+
+String_11cc9d: ; 11cc9d
+ db "たいせん ", $4a, "はじまるとき の"
+ next "あいさつ¯とうろくした!@"
+
+String_11ccb9: ; 11ccb9
+ db "たいせん ", $1d, "かったとき の"
+ next "あいさつ¯とうろくした!@"
+
+String_11ccd4: ; 11ccd4
+ db "たいせん ", $1d, "まけたとき の"
+ next "あいさつ¯とうろくした!@"
+; 11ccef
+
+Function11ccef: ; 11ccef (47:4cef)
+ ld de, Unknown_11cfc6
+ call Function11cfce
+ hlcoord 1, 14
+ ld de, String_11cd10
+ call PlaceString
+ call Function11ca19
+ call Function11cfb5
+
+Function11cd04: ; 11cd04 (47:4d04)
+ ld de, hJoypadPressed ; $ffa3
+ ld a, [de]
+ and a
+ ret z
+ ld a, $4
+ ld [wJumptableIndex], a
+ ret
+; 11cd10 (47:4d10)
+
+String_11cd10: ; 11cd10
+ db "なにか ことば¯いれてください@"
+; 11cd20
+
+Function11cd20: ; 11cd20 (47:4d20)
+ call EZChat_ClearBottom12Rows
+ ld de, Unknown_11cfc6
+ call Function11cfce
+ hlcoord 1, 14
+ ld a, [wcd2b]
+ ld [wcd2c], a
+ and a
+ jr nz, .asm_11cd3a
+ ld de, String_11cdc7
+ jr .asm_11cd3d
+.asm_11cd3a
+ ld de, String_11cdd9
+.asm_11cd3d
+ call PlaceString
+ hlcoord 4, 8
+ ld de, String_11cdf5
+ call PlaceString
+ call Function11cdaa
+ ld hl, wcd24
+ res 5, [hl]
+ call Function11cfb5
+
+Function11cd54: ; 11cd54 (47:4d54)
+ ld hl, wcd2c
+ ld de, hJoypadPressed ; $ffa3
+ ld a, [de]
+ and A_BUTTON
+ jr nz, .asm_11cd6f
+ ld a, [de]
+ and B_BUTTON
+ jr nz, .asm_11cd73
+ ld a, [de]
+ and D_UP
+ jr nz, .asm_11cd8b
+ ld a, [de]
+ and D_DOWN
+ jr nz, .asm_11cd94
+ ret
+
+.asm_11cd6f
+ ld a, [hl]
+ ld [wcd2b], a
+.asm_11cd73
+ ld a, [wcd2b]
+ and a
+ jr nz, .asm_11cd7d
+ ld a, $6
+ jr .asm_11cd7f
+
+.asm_11cd7d
+ ld a, $15
+.asm_11cd7f
+ ld [wJumptableIndex], a
+ ld hl, wcd24
+ set 5, [hl]
+ call PlayClickSFX
+ ret
+
+.asm_11cd8b
+ ld a, [hl]
+ and a
+ ret z
+ dec [hl]
+ ld de, String_11cdc7
+ jr .asm_11cd9b
+
+.asm_11cd94
+ ld a, [hl]
+ and a
+ ret nz
+ inc [hl]
+ ld de, String_11cdd9
+.asm_11cd9b
+ push de
+ ld de, Unknown_11cfc6
+ call Function11cfce
+ pop de
+ hlcoord 1, 14
+ call PlaceString
+ ret
+
+Function11cdaa: ; 11cdaa (47:4daa)
+ ld a, $2
+ hlcoord 0, 6, AttrMap
+ ld bc, 6 * SCREEN_WIDTH
+ call ByteFill
+ ld a, $7
+ hlcoord 0, 12, AttrMap
+ ld bc, 4 * SCREEN_WIDTH
+ call ByteFill
+ farcall ReloadMapPart
+ ret
+; 11cdc7 (47:4dc7)
+
+String_11cdc7: ; 11cdc7
+; Words will be displayed by category
+ db "ことば¯しゅるいべつに"
+ next "えらべます@"
+; 11cdd9
+
+String_11cdd9: ; 11cdd9
+; Words will be displayed in alphabetical order
+ db "ことば¯アイウエォ の"
+ next "じゅんばんで ひょうじ します@"
+; 11cdf5
+
+String_11cdf5: ; 11cdf5
+ db "しゅるいべつ モード" ; Category mode
+ next "アイウエォ モード@" ; ABC mode
+; 11ce0b
+
+Function11ce0b: ; 11ce0b (47:4e0b)
+ call EZChat_ClearBottom12Rows
+ hlcoord 1, 7
+ ld de, String_11cf79
+ call PlaceString
+ hlcoord 1, 17
+ ld de, EZChatString_Stop_Mode_Cancel
+ call PlaceString
+ call Function11c618
+ ld hl, wcd24
+ res 2, [hl]
+ call Function11cfb5
+
+Function11ce2b: ; 11ce2b (47:4e2b)
+ ld a, [wcd22]
+ sla a
+ sla a
+ ld c, a
+ ld b, 0
+ ld hl, Unknown_11ceb9
+ add hl, bc
+
+ ld de, hJoypadPressed ; $ffa3
+ ld a, [de]
+ and START
+ jr nz, .start
+ ld a, [de]
+ and SELECT
+ jr nz, .select
+ ld a, [de]
+ and A_BUTTON
+ jr nz, .a
+ ld a, [de]
+ and B_BUTTON
+ jr nz, .b
+
+ ld de, hJoyLast
+ ld a, [de]
+ and D_UP
+ jr nz, .up
+ ld a, [de]
+ and D_DOWN
+ jr nz, .down
+ ld a, [de]
+ and D_LEFT
+ jr nz, .left
+ ld a, [de]
+ and D_RIGHT
+ jr nz, .right
+
+ ret
+
+.a
+ ld a, [wcd22]
+ cp NUM_KANA
+ jr c, .place
+ sub NUM_KANA
+ jr z, .done
+ dec a
+ jr z, .mode
+ jr .b
+
+.start
+ ld hl, wcd24
+ set 0, [hl]
+ ld a, $8
+ ld [wcd20], a ; wcd20
+.b
+ ld a, $4
+ jr .load
+
+.select
+ ld a, [wcd2b]
+ xor $1
+ ld [wcd2b], a
+ ld a, $6
+ jr .load
+
+.place
+ ld a, $8
+ jr .load
+
+.mode
+ ld a, $13
+.load
+ ld [wJumptableIndex], a
+ ld hl, wcd24
+ set 2, [hl]
+ call PlayClickSFX
+ ret
+
+.done
+ ld a, [wcd20] ; wcd20
+ call Function11ca6a
+ call PlayClickSFX
+ ret
+
+.left
+ inc hl
+.down
+ inc hl
+.right
+ inc hl
+.up
+ ld a, [hl]
+ cp $ff
+ ret z
+ ld [wcd22], a
+ ret
+; 11ceb9 (47:4eb9)
+
+Unknown_11ceb9: ; 11ceb9
+ ; up left down right
+ db $ff, $01
+ db $05, $ff
+ db $ff, $02
+ db $06, $00
+ db $ff, $03
+ db $07, $01
+ db $ff, $04
+ db $08, $02
+ db $ff, $14
+ db $09, $03
+ db $00, $06
+ db $0a, $ff
+ db $01, $07
+ db $0b, $05
+ db $02, $08
+ db $0c, $06
+ db $03, $09
+ db $0d, $07
+ db $04, $19
+ db $0e, $08
+ db $05, $0b
+ db $0f, $ff
+ db $06, $0c
+ db $10, $0a
+ db $07, $0d
+ db $11, $0b
+ db $08, $0e
+ db $12, $0c
+ db $09, $1e
+ db $13, $0d
+ db $0a, $10
+ db $2d, $ff
+ db $0b, $11
+ db $2d, $0f
+ db $0c, $12
+ db $2d, $10
+ db $0d, $13
+ db $2d, $11
+ db $0e, $26
+ db $2d, $12
+ db $ff, $15
+ db $19, $04
+ db $ff, $16
+ db $1a, $14
+ db $ff, $17
+ db $1b, $15
+ db $ff, $18
+ db $1c, $16
+ db $ff, $23
+ db $1d, $17
+ db $14, $1a
+ db $1e, $09
+ db $15, $1b
+ db $1f, $19
+ db $16, $1c
+ db $20, $1a
+ db $17, $1d
+ db $21, $1b
+ db $18, $2b
+ db $22, $1c
+ db $19, $1f
+ db $26, $0e
+ db $1a, $20
+ db $27, $1e
+ db $1b, $21
+ db $28, $1f
+ db $1c, $22
+ db $29, $20
+ db $1d, $2c
+ db $2a, $21
+ db $ff, $24
+ db $2b, $18
+ db $ff, $25
+ db $2b, $23
+ db $ff, $ff
+ db $2b, $24
+ db $1e, $27
+ db $2e, $13
+ db $1f, $28
+ db $2e, $26
+ db $20, $29
+ db $2e, $27
+ db $21, $2a
+ db $2e, $28
+ db $22, $ff
+ db $2e, $29
+ db $23, $ff
+ db $2c, $1d
+ db $2b, $ff
+ db $2f, $22
+ db $0f, $2e
+ db $ff, $ff
+ db $26, $2f
+ db $ff, $2d
+ db $2c, $ff
+ db $ff, $2e
+; 11cf79
+
+String_11cf79: ; 11cf79
+; Hiragana table
+ db "あいうえお なにぬねの や ゆ よ"
+ next "かきくけこ はひふへほ わ"
+ next "さしすせそ まみむめも そのた"
+ next "たちつてと らりるれろ"
+ db "@"
+; 11cfb5
+
+Function11cfb5: ; 11cfb5 (47:4fb5)
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+; 11cfba (47:4fba)
+
+Unknown_11cfba:
+ db 0, 0 ; start coords
+ db 20, 6 ; end coords
+
+Unknown_11cfbe:
+ db 0, 14 ; start coords
+ db 20, 4 ; end coords
+
+Unknown_11cfc2:
+ db 0, 6 ; start coords
+ db 20, 10 ; end coords
+
+Unknown_11cfc6:
+ db 0, 12 ; start coords
+ db 20, 6 ; end coords
+
+Unknown_11cfca:
+ db 14, 7 ; start coords
+ db 6, 5 ; end coords
+; 11cfce
+
+Function11cfce: ; 11cfce (47:4fce)
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH
+ ld a, [de]
+ inc de
+ push af
+ ld a, [de]
+ inc de
+ and a
+.add_n_times
+ jr z, .done_add_n_times
+ add hl, bc
+ dec a
+ jr .add_n_times
+.done_add_n_times
+ pop af
+ ld c, a
+ ld b, 0
+ add hl, bc
+ push hl
+ ld a, $79
+ ld [hli], a
+ ld a, [de]
+ inc de
+ dec a
+ dec a
+ jr z, .skip_fill
+ ld c, a
+ ld a, $7a
+.fill_loop
+ ld [hli], a
+ dec c
+ jr nz, .fill_loop
+.skip_fill
+ ld a, $7b
+ ld [hl], a
+ pop hl
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld a, [de]
+ dec de
+ dec a
+ dec a
+ jr z, .skip_section
+ ld b, a
+.loop
+ push hl
+ ld a, $7c
+ ld [hli], a
+ ld a, [de]
+ dec a
+ dec a
+ jr z, .skip_row
+ ld c, a
+ ld a, $7f
+.row_loop
+ ld [hli], a
+ dec c
+ jr nz, .row_loop
+.skip_row
+ ld a, $7c
+ ld [hl], a
+ pop hl
+ push bc
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .loop
+.skip_section
+ ld a, $7d
+ ld [hli], a
+ ld a, [de]
+ dec a
+ dec a
+ jr z, .skip_remainder
+ ld c, a
+ ld a, $7a
+.final_loop
+ ld [hli], a
+ dec c
+ jr nz, .final_loop
+.skip_remainder
+ ld a, $7e
+ ld [hl], a
+ ret
+
+Function11d035: ; 11d035 (47:5035)
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH
+ ld a, [de]
+ inc de
+ push af
+ ld a, [de]
+ inc de
+ and a
+.add_n_times
+ jr z, .done_add_n_times
+ add hl, bc
+ dec a
+ jr .add_n_times
+.done_add_n_times
+ pop af
+ ld c, a
+ ld b, $0
+ add hl, bc
+ push hl
+ ld a, $79
+ ld [hl], a
+ pop hl
+ push hl
+ ld a, [de]
+ dec a
+ inc de
+ ld c, a
+ add hl, bc
+ ld a, $7b
+ ld [hl], a
+ call .AddNMinusOneTimes
+ ld a, $7e
+ ld [hl], a
+ pop hl
+ push hl
+ call .AddNMinusOneTimes
+ ld a, $7d
+ ld [hl], a
+ pop hl
+ push hl
+ inc hl
+ push hl
+ call .AddNMinusOneTimes
+ pop bc
+ dec de
+ ld a, [de]
+ cp $2
+ jr z, .skip
+ dec a
+ dec a
+.loop
+ push af
+ ld a, $7a
+ ld [hli], a
+ ld [bc], a
+ inc bc
+ pop af
+ dec a
+ jr nz, .loop
+.skip
+ pop hl
+ ld bc, $14
+ add hl, bc
+ push hl
+ ld a, [de]
+ dec a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ pop bc
+ inc de
+ ld a, [de]
+ cp $2
+ ret z
+ push bc
+ dec a
+ dec a
+ ld c, a
+ ld b, a
+ ld de, $14
+.loop2
+ ld a, $7c
+ ld [hl], a
+ add hl, de
+ dec c
+ jr nz, .loop2
+ pop hl
+.loop3
+ ld a, $7c
+ ld [hl], a
+ add hl, de
+ dec b
+ jr nz, .loop3
+ ret
+
+.AddNMinusOneTimes: ; 11d0ac (47:50ac)
+ ld a, [de]
+ dec a
+ ld bc, SCREEN_WIDTH
+.add_n_minus_one_times
+ add hl, bc
+ dec a
+ jr nz, .add_n_minus_one_times
+ ret
+
+AnimateEZChatCursor: ; 11d0b6 (47:50b6)
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, [hl]
+ ld e, a
+ ld d, 0
+ ld hl, .Jumptable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+.Jumptable:
+ dw .zero
+ dw .one
+ dw .two
+ dw .three
+ dw .four
+ dw .five
+ dw .six
+ dw .seven
+ dw .eight
+ dw .nine
+ dw .ten
+
+.zero ; 11d0dd (47:50dd)
+ ld a, [wcd20] ; wcd20
+ sla a
+ ld hl, .Coords_Zero
+ ld e, $1
+ jr .load
+
+.one ; 11d0e9 (47:50e9)
+ ld a, [wcd21]
+ sla a
+ ld hl, .Coords_One
+ ld e, $2
+ jr .load
+
+.two ; 11d0f5 (47:50f5)
+ ld hl, .FramesetsIDs_Two
+ ld a, [wcd22]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ call ReinitSpriteAnimFrame
+
+ ld a, [wcd22]
+ sla a
+ ld hl, .Coords_Two
+ ld e, $4
+ jr .load
+
+.three ; 11d10f (47:510f)
+ ld a, SPRITE_ANIM_FRAMESET_27
+ call ReinitSpriteAnimFrame
+ ld a, [wMobileCommsJumptableIndex]
+ sla a
+ ld hl, .Coords_Three
+ ld e, $8
+.load ; 11d11e (47:511e)
+ push de
+ ld e, a
+ ld d, $0
+ add hl, de
+ push hl
+ pop de
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ ld [hl], a
+ pop de
+ ld a, e
+ call .UpdateObjectFlags
+ ret
+
+.four ; 11d134 (47:5134)
+ ld a, SPRITE_ANIM_FRAMESET_27
+ call ReinitSpriteAnimFrame
+ ld a, [wcd2a]
+ sla a
+ ld hl, .Coords_Four
+ ld e, $10
+ jr .load
+
+.five ; 11d145 (47:5145)
+ ld a, SPRITE_ANIM_FRAMESET_27
+ call ReinitSpriteAnimFrame
+ ld a, [wcd2c]
+ sla a
+ ld hl, .Coords_Five
+ ld e, $20
+ jr .load
+
+.six ; 11d156 (47:5156)
+ ld a, SPRITE_ANIM_FRAMESET_2A
+ call ReinitSpriteAnimFrame
+ ; X = [wcd4a] * 8 + 24
+ ld a, [wcd4a]
+ sla a
+ sla a
+ sla a
+ add $18
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld [hli], a
+ ; Y = 48
+ ld a, $30
+ ld [hl], a
+
+ ld a, $1
+ ld e, a
+ call .UpdateObjectFlags
+ ret
+
+.seven ; 11d175 (47:5175)
+ ld a, [wEZChatCursorYCoord]
+ cp $4
+ jr z, .frameset_26
+ ld a, SPRITE_ANIM_FRAMESET_28
+ jr .got_frameset
+
+.frameset_26
+ ld a, SPRITE_ANIM_FRAMESET_26
+.got_frameset
+ call ReinitSpriteAnimFrame
+ ld a, [wEZChatCursorYCoord]
+ cp $4
+ jr z, .asm_11d1b1
+ ; X = [wEZChatCursorXCoord] * 8 + 32
+ ld a, [wEZChatCursorXCoord]
+ sla a
+ sla a
+ sla a
+ add $20
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld [hli], a
+ ; Y = [wEZChatCursorYCoord] * 16 + 72
+ ld a, [wEZChatCursorYCoord]
+ sla a
+ sla a
+ sla a
+ sla a
+ add $48
+ ld [hl], a
+ ld a, $2
+ ld e, a
+ call .UpdateObjectFlags
+ ret
+
+.asm_11d1b1
+ ; X = [wEZChatCursorXCoord] * 40 + 24
+ ld a, [wEZChatCursorXCoord]
+ sla a
+ sla a
+ sla a
+ ld e, a
+ sla a
+ sla a
+ add e
+ add $18
+ ld hl, SPRITEANIMSTRUCT_XCOORD
+ add hl, bc
+ ld [hli], a
+ ; Y = 138
+ ld a, $8a
+ ld [hl], a
+ ld a, $2
+ ld e, a
+ call .UpdateObjectFlags
+ ret
+
+.nine ; 11d1d1 (47:51d1)
+ ld d, -13 * 8
+ ld a, SPRITE_ANIM_FRAMESET_2C
+ jr .eight_nine_load
+
+.eight ; 11d1d7 (47:51d7)
+ ld d, 2 * 8
+ ld a, SPRITE_ANIM_FRAMESET_2B
+.eight_nine_load ; 11d1db (47:51db)
+ push de
+ call ReinitSpriteAnimFrame
+ ld a, [wcd4a]
+ sla a
+ sla a
+ sla a
+ ld e, a
+ sla a
+ add e
+ add 8 * 8
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ ld [hld], a
+ pop af
+ ld [hl], a
+ ld a, $4
+ ld e, a
+ call .UpdateObjectFlags
+ ret
+
+.ten ; 11d1fc (47:51fc)
+ ld a, SPRITE_ANIM_FRAMESET_26
+ call ReinitSpriteAnimFrame
+ ld a, $8
+ ld e, a
+ call .UpdateObjectFlags
+ ret
+; 11d208 (47:5208)
+
+.Coords_Zero: ; 11d208
+ dbpixel 1, 3, 5, 2
+ dbpixel 7, 3, 5, 2
+ dbpixel 13, 3, 5, 2
+ dbpixel 1, 5, 5, 2
+ dbpixel 7, 5, 5, 2
+ dbpixel 13, 5, 5, 2
+ dbpixel 1, 17, 5, 2
+ dbpixel 7, 17, 5, 2
+ dbpixel 13, 17, 5, 2
+
+.Coords_One: ; 11d21a
+ dbpixel 1, 8, 5, 2
+ dbpixel 7, 8, 5, 2
+ dbpixel 13, 8, 5, 2
+ dbpixel 1, 10, 5, 2
+ dbpixel 7, 10, 5, 2
+ dbpixel 13, 10, 5, 2
+ dbpixel 1, 12, 5, 2
+ dbpixel 7, 12, 5, 2
+ dbpixel 13, 12, 5, 2
+ dbpixel 1, 14, 5, 2
+ dbpixel 7, 14, 5, 2
+ dbpixel 13, 14, 5, 2
+ dbpixel 1, 16, 5, 2
+ dbpixel 7, 16, 5, 2
+ dbpixel 13, 16, 5, 2
+ dbpixel 1, 18, 5, 2
+ dbpixel 7, 18, 5, 2
+ dbpixel 13, 18, 5, 2
+
+.Coords_Two: ; 11d23e
+ dbpixel 2, 9 ; 00
+ dbpixel 3, 9 ; 01
+ dbpixel 4, 9 ; 02
+ dbpixel 5, 9 ; 03
+ dbpixel 6, 9 ; 04
+ dbpixel 2, 11 ; 05
+ dbpixel 3, 11 ; 06
+ dbpixel 4, 11 ; 07
+ dbpixel 5, 11 ; 08
+ dbpixel 6, 11 ; 09
+ dbpixel 2, 13 ; 0a
+ dbpixel 3, 13 ; 0b
+ dbpixel 4, 13 ; 0c
+ dbpixel 5, 13 ; 0d
+ dbpixel 6, 13 ; 0e
+ dbpixel 2, 15 ; 0f
+ dbpixel 3, 15 ; 10
+ dbpixel 4, 15 ; 11
+ dbpixel 5, 15 ; 12
+ dbpixel 6, 15 ; 13
+ dbpixel 8, 9 ; 14
+ dbpixel 9, 9 ; 15
+ dbpixel 10, 9 ; 16
+ dbpixel 11, 9 ; 17
+ dbpixel 12, 9 ; 18
+ dbpixel 8, 11 ; 19
+ dbpixel 9, 11 ; 1a
+ dbpixel 10, 11 ; 1b
+ dbpixel 11, 11 ; 1c
+ dbpixel 12, 11 ; 1d
+ dbpixel 8, 13 ; 1e
+ dbpixel 9, 13 ; 1f
+ dbpixel 10, 13 ; 20
+ dbpixel 11, 13 ; 21
+ dbpixel 12, 13 ; 22
+ dbpixel 14, 9 ; 23
+ dbpixel 16, 9 ; 24
+ dbpixel 18, 9 ; 25
+ dbpixel 8, 15 ; 26
+ dbpixel 9, 15 ; 27
+ dbpixel 10, 15 ; 28
+ dbpixel 11, 15 ; 29
+ dbpixel 12, 15 ; 2a
+ dbpixel 14, 11 ; 2b
+ dbpixel 14, 13 ; 2c
+ dbpixel 1, 18, 5, 2 ; 2d
+ dbpixel 7, 18, 5, 2 ; 2e
+ dbpixel 13, 18, 5, 2 ; 2f
+
+.Coords_Three: ; 11d29e
+ dbpixel 2, 10
+ dbpixel 8, 10
+ dbpixel 14, 10
+ dbpixel 2, 12
+ dbpixel 8, 12
+ dbpixel 14, 12
+ dbpixel 2, 14
+ dbpixel 8, 14
+ dbpixel 14, 14
+ dbpixel 2, 16
+ dbpixel 8, 16
+ dbpixel 14, 16
+
+.Coords_Four: ; 11d2b6
+ dbpixel 16, 10
+ dbpixel 16, 12
+
+.Coords_Five: ; 11d2ba
+ dbpixel 4, 10
+ dbpixel 4, 12
+
+.FramesetsIDs_Two: ; 11d2be
+ db SPRITE_ANIM_FRAMESET_28 ; 00
+ db SPRITE_ANIM_FRAMESET_28 ; 01
+ db SPRITE_ANIM_FRAMESET_28 ; 02
+ db SPRITE_ANIM_FRAMESET_28 ; 03
+ db SPRITE_ANIM_FRAMESET_28 ; 04
+ db SPRITE_ANIM_FRAMESET_28 ; 05
+ db SPRITE_ANIM_FRAMESET_28 ; 06
+ db SPRITE_ANIM_FRAMESET_28 ; 07
+ db SPRITE_ANIM_FRAMESET_28 ; 08
+ db SPRITE_ANIM_FRAMESET_28 ; 09
+ db SPRITE_ANIM_FRAMESET_28 ; 0a
+ db SPRITE_ANIM_FRAMESET_28 ; 0b
+ db SPRITE_ANIM_FRAMESET_28 ; 0c
+ db SPRITE_ANIM_FRAMESET_28 ; 0d
+ db SPRITE_ANIM_FRAMESET_28 ; 0e
+ db SPRITE_ANIM_FRAMESET_28 ; 0f
+ db SPRITE_ANIM_FRAMESET_28 ; 10
+ db SPRITE_ANIM_FRAMESET_28 ; 11
+ db SPRITE_ANIM_FRAMESET_28 ; 12
+ db SPRITE_ANIM_FRAMESET_28 ; 13
+ db SPRITE_ANIM_FRAMESET_28 ; 14
+ db SPRITE_ANIM_FRAMESET_28 ; 15
+ db SPRITE_ANIM_FRAMESET_28 ; 16
+ db SPRITE_ANIM_FRAMESET_28 ; 17
+ db SPRITE_ANIM_FRAMESET_28 ; 18
+ db SPRITE_ANIM_FRAMESET_28 ; 19
+ db SPRITE_ANIM_FRAMESET_28 ; 1a
+ db SPRITE_ANIM_FRAMESET_28 ; 1b
+ db SPRITE_ANIM_FRAMESET_28 ; 1c
+ db SPRITE_ANIM_FRAMESET_28 ; 1d
+ db SPRITE_ANIM_FRAMESET_28 ; 1e
+ db SPRITE_ANIM_FRAMESET_28 ; 1f
+ db SPRITE_ANIM_FRAMESET_28 ; 20
+ db SPRITE_ANIM_FRAMESET_28 ; 21
+ db SPRITE_ANIM_FRAMESET_28 ; 22
+ db SPRITE_ANIM_FRAMESET_28 ; 23
+ db SPRITE_ANIM_FRAMESET_28 ; 24
+ db SPRITE_ANIM_FRAMESET_28 ; 25
+ db SPRITE_ANIM_FRAMESET_28 ; 26
+ db SPRITE_ANIM_FRAMESET_28 ; 27
+ db SPRITE_ANIM_FRAMESET_28 ; 28
+ db SPRITE_ANIM_FRAMESET_28 ; 29
+ db SPRITE_ANIM_FRAMESET_28 ; 2a
+ db SPRITE_ANIM_FRAMESET_28 ; 2b
+ db SPRITE_ANIM_FRAMESET_29 ; 2c
+ db SPRITE_ANIM_FRAMESET_26 ; 2d
+ db SPRITE_ANIM_FRAMESET_26 ; 2e
+ db SPRITE_ANIM_FRAMESET_26 ; 2f
+
+.UpdateObjectFlags: ; 11d2ee (47:52ee)
+ ld hl, wcd24
+ and [hl]
+ jr nz, .update_y_offset
+ ld a, e
+ ld hl, wcd23
+ and [hl]
+ jr z, .reset_y_offset
+ ld hl, SPRITEANIMSTRUCT_0E
+ add hl, bc
+ ld a, [hl]
+ and a
+ jr z, .flip_bit_0
+ dec [hl]
+ ret
+
+.flip_bit_0
+ ld a, $0
+ ld [hld], a
+ ld a, $1
+ xor [hl]
+ ld [hl], a
+ and a
+ jr nz, .update_y_offset
+.reset_y_offset
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ xor a
+ ld [hl], a
+ ret
+
+.update_y_offset
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ ld a, $b0
+ sub [hl]
+ ld hl, SPRITEANIMSTRUCT_YOFFSET
+ add hl, bc
+ ld [hl], a
+ ret
+
+Function11d323: ; 11d323
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_11d33a
+ ld de, UnknBGPals
+ ld bc, 16 palettes
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ret
+; 11d33a
+
+Palette_11d33a:
+ RGB 31, 31, 31
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 31, 16, 31
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 23, 17, 31
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+; 11d3ba
+
+EZChat_GetSeenPokemonByKana: ; 11d3ba
+ ld a, [rSVBK]
+ push af
+ ld hl, $c648
+ ld a, w5_d800 % $100
+ ld [wcd2d], a
+ ld [hli], a
+ ld a, w5_d800 / $100
+ ld [wcd2e], a
+ ld [hl], a
+
+ ld a, SortedPokemon % $100
+ ld [wcd2f], a
+ ld a, SortedPokemon / $100
+ ld [wcd30], a
+
+ ld a, $c6a8 % $100
+ ld [wcd31], a
+ ld a, $c6a8 / $100
+ ld [wcd32], a
+
+ ld a, $c64a % $100
+ ld [wcd33], a
+ ld a, $c64a / $100
+ ld [wcd34], a
+
+ ld hl, EZChat_SortedWords
+ ld a, (EZChat_SortedWordsEnd - EZChat_SortedWords) / 4
+
+.MasterLoop: ; 11d3ef
+ push af
+; read row
+; offset
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+; size
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+; save the pointer to the next row
+ push hl
+; add de to w3_d000
+ ld hl, w3_d000
+ add hl, de
+; recover de from wcd2d (default: w5_d800)
+ ld a, [wcd2d]
+ ld e, a
+ ld a, [wcd2e]
+ ld d, a
+; save bc for later
+ push bc
+
+.loop1
+; copy 2*bc bytes from 3:hl to 5:de
+ ld a, $3
+ ld [rSVBK], a
+ ld a, [hli]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ pop af
+ ld [de], a
+ inc de
+
+ ld a, $3
+ ld [rSVBK], a
+ ld a, [hli]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ pop af
+ ld [de], a
+ inc de
+
+ dec bc
+ ld a, c
+ or b
+ jr nz, .loop1
+
+; recover the pointer from wcd2f (default: SortedPokemon)
+ ld a, [wcd2f]
+ ld l, a
+ ld a, [wcd30]
+ ld h, a
+; copy the pointer from [hl] to bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+; store the pointer to the next pointer back in wcd2f
+ ld a, l
+ ld [wcd2f], a
+ ld a, h
+ ld [wcd30], a
+; push pop that pointer to hl
+ push bc
+ pop hl
+ ld c, $0
+.loop2
+; Have you seen this Pokemon?
+ ld a, [hl]
+ cp $ff
+ jr z, .done
+ call .CheckSeenMon
+ jr nz, .next
+; If not, skip it.
+ inc hl
+ jr .loop2
+
+.next
+; If so, append it to the list at 5:de, and increase the count.
+ ld a, [hli]
+ ld [de], a
+ inc de
+ xor a
+ ld [de], a
+ inc de
+ inc c
+ jr .loop2
+
+.done
+; Remember the original value of bc from the table?
+; Well, the stack remembers it, and it's popping it to hl.
+ pop hl
+; Add the number of seen Pokemon from the list.
+ ld b, $0
+ add hl, bc
+; Push pop to bc.
+ push hl
+ pop bc
+; Load the pointer from [wcd31] (default: $c6a8)
+ ld a, [wcd31]
+ ld l, a
+ ld a, [wcd32]
+ ld h, a
+; Save the quantity from bc to [hl]
+ ld a, c
+ ld [hli], a
+ ld a, b
+ ld [hli], a
+; Save the new value of hl to [wcd31]
+ ld a, l
+ ld [wcd31], a
+ ld a, h
+ ld [wcd32], a
+; Recover the pointer from [wcd33] (default: $c64a)
+ ld a, [wcd33]
+ ld l, a
+ ld a, [wcd34]
+ ld h, a
+; Save the current value of de there
+ ld a, e
+ ld [wcd2d], a
+ ld [hli], a
+ ld a, d
+ ld [wcd2e], a
+; Save the new value of hl back to [wcd33]
+ ld [hli], a
+ ld a, l
+ ld [wcd33], a
+ ld a, h
+ ld [wcd34], a
+; Next row
+ pop hl
+ pop af
+ dec a
+ jr z, .ExitMasterLoop
+ jp .MasterLoop
+
+.ExitMasterLoop:
+ pop af
+ ld [rSVBK], a
+ ret
+; 11d493
+
+.CheckSeenMon: ; 11d493
+ push hl
+ push bc
+ push de
+ dec a
+ ld hl, rSVBK
+ ld e, $1
+ ld [hl], e
+ call CheckSeenMon
+ ld hl, rSVBK
+ ld e, $5
+ ld [hl], e
+ pop de
+ pop bc
+ pop hl
+ ret
+; 11d4aa
+
+EZChat_GetCategoryWordsByKana: ; 11d4aa
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+
+ ; load pointers
+ ld hl, MobileEZChatCategoryPointers
+ ld bc, MobileEZChatData_WordAndPageCounts
+
+ ; init WRAM registers
+ xor a
+ ld [wcd2d], a
+ inc a
+ ld [wcd2e], a
+
+ ; enter the first loop
+ ld a, 14
+.loop1
+ push af
+
+ ; load the pointer to the category
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ push hl
+
+ ; skip to the attributes
+ ld hl, NAME_LENGTH_JAPANESE - 1
+ add hl, de
+
+ ; get the number of words in the category
+ ld a, [bc] ; number of entries to copy
+ inc bc
+ inc bc
+ push bc
+
+.loop2
+ push af
+ push hl
+
+ ; load offset at [hl]
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+
+ ; add to w3_d000
+ ld hl, w3_d000
+ add hl, de
+
+ ; copy from wcd2d and increment [wcd2d] in place
+ ld a, [wcd2d]
+ ld [hli], a
+ inc a
+ ld [wcd2d], a
+
+ ; copy from wcd2e
+ ld a, [wcd2e]
+ ld [hl], a
+
+ ; next entry
+ pop hl
+ ld de, 8
+ add hl, de
+ pop af
+ dec a
+ jr nz, .loop2
+
+ ; reset and go to next category
+ ld hl, wcd2d
+ xor a
+ ld [hli], a
+ inc [hl]
+ pop bc
+ pop hl
+ pop af
+ dec a
+ jr nz, .loop1
+ pop af
+ ld [rSVBK], a
+ ret
+; 11d4fe
+
+SortedPokemon:
+; Pokemon sorted by kana.
+; Notably, Rhydon is missing.
+ dw .a
+ dw .i
+ dw .u
+ dw .e
+ dw .o
+ dw .ka_ga
+ dw .ki_gi
+ dw .ku_gu
+ dw .ke_ge
+ dw .ko_go
+ dw .sa_za
+ dw .shi_ji
+ dw .su_zu
+ dw .se_ze
+ dw .so_zo
+ dw .ta_da
+ dw .chi_dhi
+ dw .tsu_du
+ dw .te_de
+ dw .to_do
+ dw .na
+ dw .ni
+ dw .nu
+ dw .ne
+ dw .no
+ dw .ha_ba_pa
+ dw .hi_bi_pi
+ dw .fu_bu_pu
+ dw .he_be_pe
+ dw .ho_bo_po
+ dw .ma
+ dw .mi
+ dw .mu
+ dw .me
+ dw .mo
+ dw .ya
+ dw .yu
+ dw .yo
+ dw .ra
+ dw .ri
+ dw .ru
+ dw .re
+ dw .ro
+ dw .wa
+ dw .end
+
+.a: db EKANS, ARBOK, SEAKING, ARIADOS, CROCONAW, UNOWN, -1
+.i: db EEVEE, GEODUDE, SPINARAK, PILOSWINE, ONIX, -1
+.u: db ARCANINE, SUDOWOODO, WEEPINBELL, VICTREEBEL, WOOPER, SWINUB, -1
+.e: db SKARMORY, AIPOM, ESPEON, HITMONCHAN, ELEKID, ELECTABUZZ, ENTEI, -1
+.o: db FERALIGATR, FURRET, OCTILLERY, PRIMEAPE, SENTRET, STANTLER, SPEAROW, FEAROW, OMASTAR, OMANYTE, -1
+.ka_ga db GROWLITHE, MACHAMP, DRAGONITE, PINSIR, SNORLAX, KABUTO, KABUTOPS, HITMONTOP, WARTORTLE, BLASTOISE, FARFETCH_D, CUBONE, MAROWAK, KANGASKHAN, -1
+.ki_gi db SUNFLORA, CATERPIE, GYARADOS, RAPIDASH, NINETALES, GIRAFARIG, BELLOSSOM, KINGDRA, KINGLER, -1
+.ku_gu db GLOOM, PINECO, GLIGAR, KRABBY, GRANBULL, CROBAT, -1
+.ke_ge db ABRA, GENGAR, TAUROS, -1
+.ko_go db MAGIKARP, MAGNEMITE, GASTLY, HAUNTER, MACHOKE, KAKUNA, PSYDUCK, PHANPY, RATTATA, GOLDUCK, GOLBAT, GOLEM, GRAVELER, VENONAT, -1
+.sa_za db RHYHORN, PUPITAR, CORSOLA, HITMONLEE, ZAPDOS, JOLTEON, SANDSHREW, SANDSLASH, -1 ; RHYDON should lead this list
+.shi_ji db SEADRA, SHELLDER, VAPOREON, DEWGONG, -1
+.su_zu db SUICUNE, STARMIE, SCYTHER, ZUBAT, BEEDRILL, HYPNO, DROWZEE, -1
+.se_ze db SQUIRTLE, CELEBI, -1
+.so_zo db WOBBUFFET, -1
+.ta_da db DUGTRIO, HORSEA, EXEGGCUTE, -1
+.chi_dhi db CHIKORITA, CHINCHOU, -1
+.tsu_du db SHUCKLE, -1
+.te_de db DIGLETT, REMORAID, DELIBIRD, HOUNDOUR, AMPHAROS, -1
+.to_do db DODUO, DODRIO, SMEARGLE, KOFFING, TENTACRUEL, TOGETIC, TOGEPI, GOLDEEN, METAPOD, DONPHAN, -1
+.na db ODDISH, EXEGGUTOR, -1
+.ni db NIDOKING, NIDOQUEEN, NIDORAN_M, NIDORAN_F, NIDORINA, NIDORINO, MEOWTH, SNEASEL, POLIWHIRL, POLITOED, POLIWRATH, POLIWAG, -1
+.nu db QUAGSIRE, -1
+.ne db NATU, XATU, -1
+.no db DUNSPARCE, -1
+.ha_ba_pa db SEEL, STEELIX, TYPHLOSION, DRAGONAIR, BUTTERFREE, SCIZOR, HOPPIP, BLISSEY, PARAS, PARASECT, QWILFISH, MR__MIME, TYROGUE, CLOYSTER, TYRANITAR, -1
+.hi_bi_pi db CLEFFA, WEEDLE, PIKACHU, CLEFABLE, PIDGEOT, PIDGEOTTO, PICHU, CLEFAIRY, CHARMANDER, STARYU, CYNDAQUIL, SUNKERN, TEDDIURSA, VOLTORB, -1
+.fu_bu_pu db MOLTRES, FLAREON, ALAKAZAM, MAGMAR, FORRETRESS, WIGGLYTUFF, IVYSAUR, BULBASAUR, VENUSAUR, AERODACTYL, MAGBY, IGGLYBUFF, UMBREON, ARTICUNO, JIGGLYPUFF, SNUBBULL, -1
+.he_be_pe db BAYLEEF, GRIMER, MUK, HERACROSS, HOUNDOOM, PERSIAN, LICKITUNG, -1
+.ho_bo_po db HO_OH, HOOTHOOT, PIDGEY, PONYTA, SKIPLOOM, PORYGON, PORYGON2, -1
+.ma db MAGCARGO, SLUGMA, QUILAVA, BELLSPROUT, WEEZING, MARILL, AZUMARILL, ELECTRODE, MANKEY, MANTINE, -1
+.mi db DRATINI, MEW, MEWTWO, MILTANK, -1
+.mu db MISDREAVUS, SMOOCHUM, -1
+.me db MEGANIUM, DITTO, TENTACOOL, MAREEP, -1
+.mo db FLAAFFY, VENOMOTH, TANGELA, -1
+.ya db SLOWKING, SLOWBRO, SLOWPOKE, MURKROW, YANMA, -1
+.yu db KADABRA, -1
+.yo db LARVITAR, NOCTOWL, -1
+.ra db RAIKOU, RAICHU, CHANSEY, RATICATE, LAPRAS, VILEPLUME, LANTURN, -1
+.ri db CHARMELEON, CHARIZARD, URSARING, -1
+.ru db JYNX, LUGIA, -1
+.re db MAGNETON, LEDIAN, LEDYBA, -1
+.ro db VULPIX, -1
+.wa db JUMPLUFF, TOTODILE, MACHOP;, -1
+.end db -1
+; 11d67e
+
+GFX_11d67e:
+INCBIN "gfx/pokedex/select_start.2bpp"
+; 11d6de
+
+LZ_11d6de:
+INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
+; 11da52
+
+MobileEZChatCategoryNames: ; 11da52
+; Fixed message categories
+ db "ポケモン@@" ; 00
+ db "タイプ@@@" ; 01
+ db "あいさつ@@" ; 02
+ db "ひと@@@@" ; 03
+ db "バトル@@@" ; 04
+ db "こえ@@@@" ; 05
+ db "かいわ@@@" ; 06
+ db "きもち@@@" ; 07
+ db "じょうたい@" ; 08
+ db "せいかつ@@" ; 09
+ db "しゅみ@@@" ; 0a
+ db "こうどう@@" ; 0b
+ db "じかん@@@" ; 0c
+ db "むすび@@@" ; 0d
+ db "あれこれ@@" ; 0e
+; 11daac
+
+MobileEZChatCategoryPointers: ; 11daac
+; entries correspond to EZCHAT_* constants
+ dw .Types ; 01
+ dw .Greetings ; 02
+ dw .People ; 03
+ dw .Battle ; 04
+ dw .Exclamations ; 05
+ dw .Conversation ; 06
+ dw .Feelings ; 07
+ dw .Conditions ; 08
+ dw .Life ; 09
+ dw .Hobbies ; 0a
+ dw .Actions ; 0b
+ dw .Time ; 0c
+ dw .Farewells ; 0d
+ dw .ThisAndThat ; 0e
+
+.Types: ; 11dac8
+ db "あく@@@", $26, $0, $0
+ db "いわ@@@", $aa, $0, $0
+ db "エスパー@", $da, $0, $0
+ db "かくとう@", $4e, $1, $0
+ db "くさ@@@", $ba, $1, $0
+ db "ゴースト@", $e4, $1, $0
+ db "こおり@@", $e6, $1, $0
+ db "じめん@@", $68, $2, $0
+ db "タイプ@@", $e8, $2, $0
+ db "でんき@@", $8e, $3, $0
+ db "どく@@@", $ae, $3, $0
+ db "ドラゴン@", $bc, $3, $0
+ db "ノーマル@", $22, $4, $0
+ db "はがね@@", $36, $4, $0
+ db "ひこう@@", $5e, $4, $0
+ db "ほのお@@", $b2, $4, $0
+ db "みず@@@", $f4, $4, $0
+ db "むし@@@", $12, $5, $0
+
+.Greetings: ; 11db58
+ db "ありがと@", $58, $0, $0
+ db "ありがとう", $5a, $0, $0
+ db "いくぜ!@", $80, $0, $0
+ db "いくよ!@", $82, $0, $0
+ db "いくわよ!", $84, $0, $0
+ db "いやー@@", $a6, $0, $0
+ db "おっす@@", $a, $1, $0
+ db "おはつです", $22, $1, $0
+ db "おめでとう", $2a, $1, $0
+ db "ごめん@@", $f8, $1, $0
+ db "ごめんよ@", $fa, $1, $0
+ db "こらっ@@", $fc, $1, $0
+ db "こんちは!", $a, $2, $0
+ db "こんにちは", $10, $2, $0
+ db "さようなら", $28, $2, $0
+ db "サンキュー", $2e, $2, $0
+ db "さんじょう", $30, $2, $0
+ db "しっけい@", $48, $2, $0
+ db "しつれい@", $4c, $2, $0
+ db "じゃーね@", $6c, $2, $0
+ db "すいません", $8c, $2, $0
+ db "それじゃ@", $ca, $2, $0
+ db "どうも@@", $a6, $3, $0
+ db "なんじゃ@", $ee, $3, $0
+ db "ハーイ@@", $2c, $4, $0
+ db "はいはい@", $32, $4, $0
+ db "バイバイ@", $34, $4, $0
+ db "へイ@@@", $8a, $4, $0
+ db "またね@@", $de, $4, $0
+ db "もしもし@", $32, $5, $0
+ db "やあ@@@", $3e, $5, $0
+ db "やっほー@", $4e, $5, $0
+ db "よう@@@", $62, $5, $0
+ db "ようこそ@", $64, $5, $0
+ db "よろしく@", $80, $5, $0
+ db "らっしゃい", $94, $5, $0
+
+.People: ; 11dc78
+ db "あいて@@", $1c, $0, $0
+ db "あたし@@", $36, $0, $0
+ db "あなた@@", $40, $0, $0
+ db "あなたが@", $42, $0, $0
+ db "あなたに@", $44, $0, $0
+ db "あなたの@", $46, $0, $0
+ db "あなたは@", $48, $0, $0
+ db "あなたを@", $4a, $0, $0
+ db "おかあさん", $e8, $0, $0
+ db "おじいさん", $fc, $0, $0
+ db "おじさん@", $2, $1, $0
+ db "おとうさん", $e, $1, $0
+ db "おとこのこ", $10, $1, $0
+ db "おとな@@", $14, $1, $0
+ db "おにいさん", $16, $1, $0
+ db "おねえさん", $18, $1, $0
+ db "おばあさん", $1c, $1, $0
+ db "おばさん@", $20, $1, $0
+ db "おれさま@", $34, $1, $0
+ db "おんなのこ", $3a, $1, $0
+ db "ガール@@", $40, $1, $0
+ db "かぞく@@", $52, $1, $0
+ db "かのじょ@", $72, $1, $0
+ db "かれ@@@", $7c, $1, $0
+ db "きみ@@@", $9a, $1, $0
+ db "きみが@@", $9c, $1, $0
+ db "きみに@@", $9e, $1, $0
+ db "きみの@@", $a0, $1, $0
+ db "きみは@@", $a2, $1, $0
+ db "きみを@@", $a4, $1, $0
+ db "ギャル@@", $ae, $1, $0
+ db "きょうだい", $b2, $1, $0
+ db "こども@@", $f0, $1, $0
+ db "じぶん@@", $54, $2, $0
+ db "じぶんが@", $56, $2, $0
+ db "じぶんに@", $58, $2, $0
+ db "じぶんの@", $5a, $2, $0
+ db "じぶんは@", $5c, $2, $0
+ db "じぶんを@", $5e, $2, $0
+ db "だれ@@@", $18, $3, $0
+ db "だれか@@", $1a, $3, $0
+ db "だれが@@", $1c, $3, $0
+ db "だれに@@", $1e, $3, $0
+ db "だれの@@", $20, $3, $0
+ db "だれも@@", $22, $3, $0
+ db "だれを@@", $24, $3, $0
+ db "ちゃん@@", $38, $3, $0
+ db "ともだち@", $b8, $3, $0
+ db "なかま@@", $d4, $3, $0
+ db "ひと@@@", $62, $4, $0
+ db "ボーイ@@", $98, $4, $0
+ db "ボク@@@", $a0, $4, $0
+ db "ボクが@@", $a2, $4, $0
+ db "ボクに@@", $a4, $4, $0
+ db "ボクの@@", $a6, $4, $0
+ db "ボクは@@", $a8, $4, $0
+ db "ボクを@@", $aa, $4, $0
+ db "みんな@@", $4, $5, $0
+ db "みんなが@", $6, $5, $0
+ db "みんなに@", $8, $5, $0
+ db "みんなの@", $a, $5, $0
+ db "みんなは@", $c, $5, $0
+ db "ライバル@", $8a, $5, $0
+ db "わたし@@", $c2, $5, $0
+ db "わたしが@", $c4, $5, $0
+ db "わたしに@", $c6, $5, $0
+ db "わたしの@", $c8, $5, $0
+ db "わたしは@", $ca, $5, $0
+ db "わたしを@", $cc, $5, $0
+
+.Battle: ; 11dea0
+ db "あいしょう", $18, $0, $0
+ db "いけ!@@", $88, $0, $0
+ db "いちばん@", $96, $0, $0
+ db "かくご@@", $4c, $1, $0
+ db "かたせて@", $54, $1, $0
+ db "かち@@@", $56, $1, $0
+ db "かつ@@@", $58, $1, $0
+ db "かった@@", $60, $1, $0
+ db "かったら@", $62, $1, $0
+ db "かって@@", $64, $1, $0
+ db "かてない@", $66, $1, $0
+ db "かてる@@", $68, $1, $0
+ db "かなわない", $70, $1, $0
+ db "きあい@@", $84, $1, $0
+ db "きめた@@", $a8, $1, $0
+ db "きりふだ@", $b6, $1, $0
+ db "くらえ@@", $c2, $1, $0
+ db "こい!@@", $da, $1, $0
+ db "こうげき@", $e0, $1, $0
+ db "こうさん@", $e2, $1, $0
+ db "こんじょう", $8, $2, $0
+ db "さいのう@", $16, $2, $0
+ db "さくせん@", $1a, $2, $0
+ db "さばき@@", $22, $2, $0
+ db "しょうぶ@", $7e, $2, $0
+ db "しょうり@", $80, $2, $0
+ db "せめ@@@", $b4, $2, $0
+ db "センス@@", $b6, $2, $0
+ db "たいせん@", $e6, $2, $0
+ db "たたかい@", $f6, $2, $0
+ db "ちから@@", $32, $3, $0
+ db "チャレンジ", $36, $3, $0
+ db "つよい@@", $58, $3, $0
+ db "つよすぎ@", $5a, $3, $0
+ db "つらい@@", $5c, $3, $0
+ db "つらかった", $5e, $3, $0
+ db "てかげん@", $6c, $3, $0
+ db "てき@@@", $6e, $3, $0
+ db "てんさい@", $90, $3, $0
+ db "でんせつ@", $94, $3, $0
+ db "トレーナー", $c6, $3, $0
+ db "にげ@@@", $4, $4, $0
+ db "ぬるい@@", $10, $4, $0
+ db "ねらう@@", $16, $4, $0
+ db "バトル@@", $4a, $4, $0
+ db "ファイト@", $72, $4, $0
+ db "ふっかつ@", $78, $4, $0
+ db "ポイント@", $94, $4, $0
+ db "ポケモン@", $ac, $4, $0
+ db "ほんき@@", $bc, $4, $0
+ db "まいった!", $c4, $4, $0
+ db "まけ@@@", $c8, $4, $0
+ db "まけたら@", $ca, $4, $0
+ db "まけて@@", $cc, $4, $0
+ db "まける@@", $ce, $4, $0
+ db "まもり@@", $ea, $4, $0
+ db "みかた@@", $f2, $4, $0
+ db "みとめない", $fe, $4, $0
+ db "みとめる@", $0, $5, $0
+ db "むてき@@", $16, $5, $0
+ db "もらった!", $3c, $5, $0
+ db "よゆう@@", $7a, $5, $0
+ db "よわい@@", $82, $5, $0
+ db "よわすぎ@", $84, $5, $0
+ db "らくしょう", $8e, $5, $0
+ db "りーダー@", $9e, $5, $0
+ db "ルール@@", $a0, $5, $0
+ db "レべル@@", $a6, $5, $0
+ db "わざ@@@", $be, $5, $0
+
+.Exclamations: ; 11e0c8
+ db "!@@@@", $0, $0, $0
+ db "!!@@@", $2, $0, $0
+ db "!?@@@", $4, $0, $0
+ db "?@@@@", $6, $0, $0
+ db "…@@@@", $8, $0, $0
+ db "…!@@@", $a, $0, $0
+ db "………@@", $c, $0, $0
+ db "ー@@@@", $e, $0, $0
+ db "ーーー@@", $10, $0, $0
+ db "あーあ@@", $14, $0, $0
+ db "あーん@@", $16, $0, $0
+ db "あははー@", $52, $0, $0
+ db "あら@@@", $54, $0, $0
+ db "いえ@@@", $72, $0, $0
+ db "イエス@@", $74, $0, $0
+ db "うう@@@", $ac, $0, $0
+ db "うーん@@", $ae, $0, $0
+ db "うおー!@", $b0, $0, $0
+ db "うおりゃー", $b2, $0, $0
+ db "うひょー@", $bc, $0, $0
+ db "うふふ@@", $be, $0, $0
+ db "うわー@@", $ca, $0, $0
+ db "うわーん@", $cc, $0, $0
+ db "ええ@@@", $d2, $0, $0
+ db "えー@@@", $d4, $0, $0
+ db "えーん@@", $d6, $0, $0
+ db "えへへ@@", $dc, $0, $0
+ db "おいおい@", $e0, $0, $0
+ db "おお@@@", $e2, $0, $0
+ db "おっと@@", $c, $1, $0
+ db "がーん@@", $42, $1, $0
+ db "キャー@@", $aa, $1, $0
+ db "ギャー@@", $ac, $1, $0
+ db "ぐふふふふ", $bc, $1, $0
+ db "げっ@@@", $ce, $1, $0
+ db "しくしく@", $3e, $2, $0
+ db "ちえっ@@", $2e, $3, $0
+ db "てへ@@@", $86, $3, $0
+ db "ノー@@@", $20, $4, $0
+ db "はあー@@", $2a, $4, $0
+ db "はい@@@", $30, $4, $0
+ db "はっはっは", $48, $4, $0
+ db "ひいー@@", $56, $4, $0
+ db "ひゃあ@@", $6a, $4, $0
+ db "ふっふっふ", $7c, $4, $0
+ db "ふにゃ@@", $7e, $4, $0
+ db "ププ@@@", $80, $4, $0
+ db "ふふん@@", $82, $4, $0
+ db "ふん@@@", $88, $4, $0
+ db "へっへっへ", $8e, $4, $0
+ db "へへー@@", $90, $4, $0
+ db "ほーほほほ", $9c, $4, $0
+ db "ほら@@@", $b6, $4, $0
+ db "まあ@@@", $c0, $4, $0
+ db "むきー!!", $10, $5, $0
+ db "むふー@@", $18, $5, $0
+ db "むふふ@@", $1a, $5, $0
+ db "むむ@@@", $1c, $5, $0
+ db "よーし@@", $6a, $5, $0
+ db "よし!@@", $72, $5, $0
+ db "ラララ@@", $98, $5, $0
+ db "わーい@@", $ac, $5, $0
+ db "わーん!!", $b0, $5, $0
+ db "ワォ@@@", $b2, $5, $0
+ db "わっ!!@", $ce, $5, $0
+ db "わははは!", $d0, $5, $0
+
+.Conversation: ; 11e2d8
+ db "あのね@@", $50, $0, $0
+ db "あんまり@", $6e, $0, $0
+ db "いじわる@", $8e, $0, $0
+ db "うそ@@@", $b6, $0, $0
+ db "うむ@@@", $c4, $0, $0
+ db "おーい@@", $e4, $0, $0
+ db "おすすめ@", $6, $1, $0
+ db "おばかさん", $1e, $1, $0
+ db "かなり@@", $6e, $1, $0
+ db "から@@@", $7a, $1, $0
+ db "きぶん@@", $98, $1, $0
+ db "けど@@@", $d6, $1, $0
+ db "こそ@@@", $ea, $1, $0
+ db "こと@@@", $ee, $1, $0
+ db "さあ@@@", $12, $2, $0
+ db "さっぱり@", $1e, $2, $0
+ db "さて@@@", $20, $2, $0
+ db "じゅうぶん", $72, $2, $0
+ db "すぐ@@@", $94, $2, $0
+ db "すごく@@", $98, $2, $0
+ db "すこしは@", $9a, $2, $0
+ db "すっっごい", $a0, $2, $0
+ db "ぜーんぜん", $b0, $2, $0
+ db "ぜったい@", $b2, $2, $0
+ db "それで@@", $ce, $2, $0
+ db "だけ@@@", $f2, $2, $0
+ db "だって@@", $fc, $2, $0
+ db "たぶん@@", $6, $3, $0
+ db "たら@@@", $14, $3, $0
+ db "ちょー@@", $3a, $3, $0
+ db "ちょっと@", $3c, $3, $0
+ db "ったら@@", $4e, $3, $0
+ db "って@@@", $50, $3, $0
+ db "ていうか@", $62, $3, $0
+ db "でも@@@", $88, $3, $0
+ db "どうしても", $9c, $3, $0
+ db "とうぜん@", $a0, $3, $0
+ db "どうぞ@@", $a2, $3, $0
+ db "とりあえず", $be, $3, $0
+ db "なあ@@@", $cc, $3, $0
+ db "なんて@@", $f4, $3, $0
+ db "なんでも@", $fc, $3, $0
+ db "なんとか@", $fe, $3, $0
+ db "には@@@", $8, $4, $0
+ db "バッチり@", $46, $4, $0
+ db "ばりばり@", $52, $4, $0
+ db "ほど@@@", $b0, $4, $0
+ db "ほんと@@", $be, $4, $0
+ db "まさに@@", $d0, $4, $0
+ db "マジ@@@", $d2, $4, $0
+ db "マジで@@", $d4, $4, $0
+ db "まったく@", $e4, $4, $0
+ db "まで@@@", $e6, $4, $0
+ db "まるで@@", $ec, $4, $0
+ db "ムード@@", $e, $5, $0
+ db "むしろ@@", $14, $5, $0
+ db "めちゃ@@", $24, $5, $0
+ db "めっぽう@", $28, $5, $0
+ db "もう@@@", $2c, $5, $0
+ db "モード@@", $2e, $5, $0
+ db "もっと@@", $36, $5, $0
+ db "もはや@@", $38, $5, $0
+ db "やっと@@", $4a, $5, $0
+ db "やっぱり@", $4c, $5, $0
+ db "より@@@", $7c, $5, $0
+ db "れば@@@", $a4, $5, $0
+
+.Feelings: ; 11e4e8
+ db "あいたい@", $1a, $0, $0
+ db "あそびたい", $32, $0, $0
+ db "いきたい@", $7c, $0, $0
+ db "うかれて@", $b4, $0, $0
+ db "うれしい@", $c6, $0, $0
+ db "うれしさ@", $c8, $0, $0
+ db "エキサイト", $d8, $0, $0
+ db "えらい@@", $de, $0, $0
+ db "おかしい@", $ec, $0, $0
+ db "ォッケー@", $8, $1, $0
+ db "かえりたい", $48, $1, $0
+ db "がっくし@", $5a, $1, $0
+ db "かなしい@", $6c, $1, $0
+ db "がんばって", $80, $1, $0
+ db "きがしない", $86, $1, $0
+ db "きがする@", $88, $1, $0
+ db "ききたい@", $8a, $1, $0
+ db "きになる@", $90, $1, $0
+ db "きのせい@", $96, $1, $0
+ db "きらい@@", $b4, $1, $0
+ db "くやしい@", $be, $1, $0
+ db "くやしさ@", $c0, $1, $0
+ db "さみしい@", $24, $2, $0
+ db "ざんねん@", $32, $2, $0
+ db "しあわせ@", $36, $2, $0
+ db "したい@@", $44, $2, $0
+ db "したくない", $46, $2, $0
+ db "しまった@", $64, $2, $0
+ db "しょんぼり", $82, $2, $0
+ db "すき@@@", $92, $2, $0
+ db "だいきらい", $da, $2, $0
+ db "たいくつ@", $dc, $2, $0
+ db "だいじ@@", $de, $2, $0
+ db "だいすき@", $e4, $2, $0
+ db "たいへん@", $ea, $2, $0
+ db "たのしい@", $0, $3, $0
+ db "たのしすぎ", $2, $3, $0
+ db "たべたい@", $8, $3, $0
+ db "ダメダメ@", $e, $3, $0
+ db "たりない@", $16, $3, $0
+ db "ちくしょー", $34, $3, $0
+ db "どうしよう", $9e, $3, $0
+ db "ドキドキ@", $ac, $3, $0
+ db "ナイス@@", $d0, $3, $0
+ db "のみたい@", $26, $4, $0
+ db "びっくり@", $60, $4, $0
+ db "ふあん@@", $74, $4, $0
+ db "ふらふら@", $86, $4, $0
+ db "ほしい@@", $ae, $4, $0
+ db "ボロボロ@", $b8, $4, $0
+ db "まだまだ@", $e0, $4, $0
+ db "まてない@", $e8, $4, $0
+ db "まんぞく@", $f0, $4, $0
+ db "みたい@@", $f8, $4, $0
+ db "めずらしい", $22, $5, $0
+ db "メラメラ@", $2a, $5, $0
+ db "やだ@@@", $46, $5, $0
+ db "やったー@", $48, $5, $0
+ db "やばい@@", $50, $5, $0
+ db "やばすぎる", $52, $5, $0
+ db "やられた@", $54, $5, $0
+ db "やられて@", $56, $5, $0
+ db "よかった@", $6e, $5, $0
+ db "ラブラブ@", $96, $5, $0
+ db "ロマン@@", $a8, $5, $0
+ db "ろんがい@", $aa, $5, $0
+ db "わから@@", $b4, $5, $0
+ db "わかり@@", $b6, $5, $0
+ db "わくわく@", $ba, $5, $0
+
+.Conditions: ; 11e710
+ db "あつい@@", $38, $0, $0
+ db "あった@@", $3a, $0, $0
+ db "あり@@@", $56, $0, $0
+ db "ある@@@", $5e, $0, $0
+ db "あわてて@", $6a, $0, $0
+ db "いい@@@", $70, $0, $0
+ db "いか@@@", $76, $0, $0
+ db "イカス@@", $78, $0, $0
+ db "いきおい@", $7a, $0, $0
+ db "いける@@", $8a, $0, $0
+ db "いじょう@", $8c, $0, $0
+ db "いそがしい", $90, $0, $0
+ db "いっしょに", $9a, $0, $0
+ db "いっぱい@", $9c, $0, $0
+ db "いない@@", $a0, $0, $0
+ db "いや@@@", $a4, $0, $0
+ db "いる@@@", $a8, $0, $0
+ db "うまい@@", $c0, $0, $0
+ db "うまく@@", $c2, $0, $0
+ db "おおきい@", $e6, $0, $0
+ db "おくれ@@", $f2, $0, $0
+ db "おしい@@", $fa, $0, $0
+ db "おもしろい", $2c, $1, $0
+ db "おもしろく", $2e, $1, $0
+ db "かっこいい", $5c, $1, $0
+ db "かわいい@", $7e, $1, $0
+ db "かんぺき@", $82, $1, $0
+ db "けっこう@", $d0, $1, $0
+ db "げんき@@", $d8, $1, $0
+ db "こわい@@", $6, $2, $0
+ db "さいこう@", $14, $2, $0
+ db "さむい@@", $26, $2, $0
+ db "さわやか@", $2c, $2, $0
+ db "しかたない", $38, $2, $0
+ db "すごい@@", $96, $2, $0
+ db "すごすぎ@", $9c, $2, $0
+ db "すてき@@", $a4, $2, $0
+ db "たいした@", $e0, $2, $0
+ db "だいじょぶ", $e2, $2, $0
+ db "たかい@@", $ec, $2, $0
+ db "ただしい@", $f8, $2, $0
+ db "だめ@@@", $c, $3, $0
+ db "ちいさい@", $2c, $3, $0
+ db "ちがう@@", $30, $3, $0
+ db "つかれ@@", $48, $3, $0
+ db "とくい@@", $b0, $3, $0
+ db "とまらない", $b6, $3, $0
+ db "ない@@@", $ce, $3, $0
+ db "なかった@", $d2, $3, $0
+ db "なし@@@", $d8, $3, $0
+ db "なって@@", $dc, $3, $0
+ db "はやい@@", $50, $4, $0
+ db "ひかる@@", $5a, $4, $0
+ db "ひくい@@", $5c, $4, $0
+ db "ひどい@@", $64, $4, $0
+ db "ひとりで@", $66, $4, $0
+ db "ひま@@@", $68, $4, $0
+ db "ふそく@@", $76, $4, $0
+ db "へた@@@", $8c, $4, $0
+ db "まちがって", $e2, $4, $0
+ db "やさしい@", $42, $5, $0
+ db "よく@@@", $70, $5, $0
+ db "よわって@", $86, $5, $0
+ db "らく@@@", $8c, $5, $0
+ db "らしい@@", $90, $5, $0
+ db "わるい@@", $d4, $5, $0
+
+.Life: ; 11e920
+ db "アルバイト", $64, $0, $0
+ db "うち@@@", $ba, $0, $0
+ db "おかね@@", $ee, $0, $0
+ db "おこづかい", $f4, $0, $0
+ db "おふろ@@", $24, $1, $0
+ db "がっこう@", $5e, $1, $0
+ db "きねん@@", $92, $1, $0
+ db "グループ@", $c6, $1, $0
+ db "ゲット@@", $d2, $1, $0
+ db "こうかん@", $de, $1, $0
+ db "しごと@@", $40, $2, $0
+ db "しゅぎょう", $74, $2, $0
+ db "じゅぎょう", $76, $2, $0
+ db "じゅく@@", $78, $2, $0
+ db "しんか@@", $88, $2, $0
+ db "ずかん@@", $90, $2, $0
+ db "せいかつ@", $ae, $2, $0
+ db "せんせい@", $b8, $2, $0
+ db "センター@", $ba, $2, $0
+ db "タワー@@", $28, $3, $0
+ db "つうしん@", $40, $3, $0
+ db "テスト@@", $7e, $3, $0
+ db "テレビ@@", $8c, $3, $0
+ db "でんわ@@", $96, $3, $0
+ db "どうぐ@@", $9a, $3, $0
+ db "トレード@", $c4, $3, $0
+ db "なまえ@@", $e8, $3, $0
+ db "ニュース@", $a, $4, $0
+ db "にんき@@", $c, $4, $0
+ db "パーティー", $2e, $4, $0
+ db "べんきょう", $92, $4, $0
+ db "マシン@@", $d6, $4, $0
+ db "めいし@@", $1e, $5, $0
+ db "メッセージ", $26, $5, $0
+ db "もようがえ", $3a, $5, $0
+ db "ゆめ@@@", $5a, $5, $0
+ db "ようちえん", $66, $5, $0
+ db "ラジォ@@", $92, $5, $0
+ db "ワールド@", $ae, $5, $0
+
+.Hobbies: ; 11ea58
+ db "アイドル@", $1e, $0, $0
+ db "アニメ@@", $4c, $0, $0
+ db "うた@@@", $b8, $0, $0
+ db "えいが@@", $d0, $0, $0
+ db "おかし@@", $ea, $0, $0
+ db "おしゃべり", $4, $1, $0
+ db "おままごと", $28, $1, $0
+ db "おもちゃ@", $30, $1, $0
+ db "おんがく@", $38, $1, $0
+ db "カード@@", $3e, $1, $0
+ db "かいもの@", $46, $1, $0
+ db "グルメ@@", $c8, $1, $0
+ db "ゲーム@@", $cc, $1, $0
+ db "ざっし@@", $1c, $2, $0
+ db "さんぽ@@", $34, $2, $0
+ db "じてんしゃ", $50, $2, $0
+ db "しゅみ@@", $7a, $2, $0
+ db "スポーツ@", $a8, $2, $0
+ db "ダイエット", $d8, $2, $0
+ db "たからもの", $f0, $2, $0
+ db "たび@@@", $4, $3, $0
+ db "ダンス@@", $2a, $3, $0
+ db "つり@@@", $60, $3, $0
+ db "デート@@", $6a, $3, $0
+ db "でんしゃ@", $92, $3, $0
+ db "ぬいぐるみ", $e, $4, $0
+ db "パソコン@", $3e, $4, $0
+ db "はな@@@", $4c, $4, $0
+ db "ヒーロー@", $58, $4, $0
+ db "ひるね@@", $6e, $4, $0
+ db "ヒロイン@", $70, $4, $0
+ db "ぼうけん@", $96, $4, $0
+ db "ボード@@", $9a, $4, $0
+ db "ボール@@", $9e, $4, $0
+ db "ほん@@@", $ba, $4, $0
+ db "マンガ@@", $ee, $4, $0
+ db "やくそく@", $40, $5, $0
+ db "やすみ@@", $44, $5, $0
+ db "よてい@@", $74, $5, $0
+
+.Actions: ; 11eb90
+ db "あう@@@", $20, $0, $0
+ db "あきらめ@", $24, $0, $0
+ db "あげる@@", $28, $0, $0
+ db "あせる@@", $2e, $0, $0
+ db "あそび@@", $30, $0, $0
+ db "あそぶ@@", $34, $0, $0
+ db "あつめ@@", $3e, $0, $0
+ db "あるき@@", $60, $0, $0
+ db "あるく@@", $62, $0, $0
+ db "いく@@@", $7e, $0, $0
+ db "いけ@@@", $86, $0, $0
+ db "おき@@@", $f0, $0, $0
+ db "おこり@@", $f6, $0, $0
+ db "おこる@@", $f8, $0, $0
+ db "おしえ@@", $fe, $0, $0
+ db "おしえて@", $0, $1, $0
+ db "おねがい@", $1a, $1, $0
+ db "おぼえ@@", $26, $1, $0
+ db "かえる@@", $4a, $1, $0
+ db "がまん@@", $74, $1, $0
+ db "きく@@@", $8c, $1, $0
+ db "きたえ@@", $8e, $1, $0
+ db "きめ@@@", $a6, $1, $0
+ db "くる@@@", $c4, $1, $0
+ db "さがし@@", $18, $2, $0
+ db "さわぎ@@", $2a, $2, $0
+ db "した@@@", $42, $2, $0
+ db "しって@@", $4a, $2, $0
+ db "して@@@", $4e, $2, $0
+ db "しない@@", $52, $2, $0
+ db "しまう@@", $60, $2, $0
+ db "じまん@@", $66, $2, $0
+ db "しらない@", $84, $2, $0
+ db "しる@@@", $86, $2, $0
+ db "しんじて@", $8a, $2, $0
+ db "する@@@", $aa, $2, $0
+ db "たべる@@", $a, $3, $0
+ db "つかう@@", $42, $3, $0
+ db "つかえ@@", $44, $3, $0
+ db "つかって@", $46, $3, $0
+ db "できない@", $70, $3, $0
+ db "できる@@", $72, $3, $0
+ db "でない@@", $84, $3, $0
+ db "でる@@@", $8a, $3, $0
+ db "なげる@@", $d6, $3, $0
+ db "なやみ@@", $ea, $3, $0
+ db "ねられ@@", $18, $4, $0
+ db "ねる@@@", $1a, $4, $0
+ db "のがし@@", $24, $4, $0
+ db "のむ@@@", $28, $4, $0
+ db "はしり@@", $3a, $4, $0
+ db "はしる@@", $3c, $4, $0
+ db "はたらき@", $40, $4, $0
+ db "はたらく@", $42, $4, $0
+ db "はまって@", $4e, $4, $0
+ db "ぶつけ@@", $7a, $4, $0
+ db "ほめ@@@", $b4, $4, $0
+ db "みせて@@", $f6, $4, $0
+ db "みて@@@", $fc, $4, $0
+ db "みる@@@", $2, $5, $0
+ db "めざす@@", $20, $5, $0
+ db "もって@@", $34, $5, $0
+ db "ゆずる@@", $58, $5, $0
+ db "ゆるす@@", $5c, $5, $0
+ db "ゆるせ@@", $5e, $5, $0
+ db "られない@", $9a, $5, $0
+ db "られる@@", $9c, $5, $0
+ db "わかる@@", $b8, $5, $0
+ db "わすれ@@", $c0, $5, $0
+
+.Time: ; 11edb8
+ db "あき@@@", $22, $0, $0
+ db "あさ@@@", $2a, $0, $0
+ db "あした@@", $2c, $0, $0
+ db "いちにち@", $94, $0, $0
+ db "いつか@@", $98, $0, $0
+ db "いつも@@", $9e, $0, $0
+ db "いま@@@", $a2, $0, $0
+ db "えいえん@", $ce, $0, $0
+ db "おととい@", $12, $1, $0
+ db "おわり@@", $36, $1, $0
+ db "かようび@", $78, $1, $0
+ db "きのう@@", $94, $1, $0
+ db "きょう@@", $b0, $1, $0
+ db "きんようび", $b8, $1, $0
+ db "げつようび", $d4, $1, $0
+ db "このあと@", $f4, $1, $0
+ db "このまえ@", $f6, $1, $0
+ db "こんど@@", $c, $2, $0
+ db "じかん@@", $3c, $2, $0
+ db "じゅうねん", $70, $2, $0
+ db "すいようび", $8e, $2, $0
+ db "スタート@", $9e, $2, $0
+ db "ずっと@@", $a2, $2, $0
+ db "ストップ@", $a6, $2, $0
+ db "そのうち@", $c4, $2, $0
+ db "ついに@@", $3e, $3, $0
+ db "つぎ@@@", $4a, $3, $0
+ db "どようび@", $ba, $3, $0
+ db "なつ@@@", $da, $3, $0
+ db "にちようび", $6, $4, $0
+ db "はじめ@@", $38, $4, $0
+ db "はる@@@", $54, $4, $0
+ db "ひる@@@", $6c, $4, $0
+ db "ふゆ@@@", $84, $4, $0
+ db "まいにち@", $c6, $4, $0
+ db "もくようび", $30, $5, $0
+ db "よなか@@", $76, $5, $0
+ db "よる@@@", $7e, $5, $0
+ db "らいしゅう", $88, $5, $0
+
+.Farewells: ; 11eef0
+ db "いたします", $92, $0, $0
+ db "おります@", $32, $1, $0
+ db "か!?@@", $3c, $1, $0
+ db "かい?@@", $44, $1, $0
+ db "かしら?@", $50, $1, $0
+ db "かな?@@", $6a, $1, $0
+ db "かも@@@", $76, $1, $0
+ db "くれ@@@", $ca, $1, $0
+ db "ございます", $e8, $1, $0
+ db "しがち@@", $3a, $2, $0
+ db "します@@", $62, $2, $0
+ db "じゃ@@@", $6a, $2, $0
+ db "じゃん@@", $6e, $2, $0
+ db "しよう@@", $7c, $2, $0
+ db "ぜ!@@@", $ac, $2, $0
+ db "ぞ!@@@", $bc, $2, $0
+ db "た@@@@", $d4, $2, $0
+ db "だ@@@@", $d6, $2, $0
+ db "だからね@", $ee, $2, $0
+ db "だぜ@@@", $f4, $2, $0
+ db "だった@@", $fa, $2, $0
+ db "だね@@@", $fe, $2, $0
+ db "だよ@@@", $10, $3, $0
+ db "だよねー!", $12, $3, $0
+ db "だわ@@@", $26, $3, $0
+ db "ッス@@@", $4c, $3, $0
+ db "ってかんじ", $52, $3, $0
+ db "っぱなし@", $54, $3, $0
+ db "つもり@@", $56, $3, $0
+ db "ていない@", $64, $3, $0
+ db "ている@@", $66, $3, $0
+ db "でーす!@", $68, $3, $0
+ db "でした@@", $74, $3, $0
+ db "でしょ?@", $76, $3, $0
+ db "でしょー!", $78, $3, $0
+ db "です@@@", $7a, $3, $0
+ db "ですか?@", $7c, $3, $0
+ db "ですよ@@", $80, $3, $0
+ db "ですわ@@", $82, $3, $0
+ db "どうなの?", $a4, $3, $0
+ db "どうよ?@", $a8, $3, $0
+ db "とかいって", $aa, $3, $0
+ db "なの@@@", $e0, $3, $0
+ db "なのか@@", $e2, $3, $0
+ db "なのだ@@", $e4, $3, $0
+ db "なのよ@@", $e6, $3, $0
+ db "なんだね@", $f2, $3, $0
+ db "なんです@", $f8, $3, $0
+ db "なんてね@", $fa, $3, $0
+ db "ね@@@@", $12, $4, $0
+ db "ねー@@@", $14, $4, $0
+ db "の@@@@", $1c, $4, $0
+ db "の?@@@", $1e, $4, $0
+ db "ばっかり@", $44, $4, $0
+ db "まーす!@", $c2, $4, $0
+ db "ます@@@", $d8, $4, $0
+ db "ますわ@@", $da, $4, $0
+ db "ません@@", $dc, $4, $0
+ db "みたいな@", $fa, $4, $0
+ db "よ!@@@", $60, $5, $0
+ db "よー@@@", $68, $5, $0
+ db "よーん@@", $6c, $5, $0
+ db "よね@@@", $78, $5, $0
+ db "るよ@@@", $a2, $5, $0
+ db "わけ@@@", $bc, $5, $0
+ db "わよ!@@", $d2, $5, $0
+
+.ThisAndThat: ; 11f100
+ db "ああ@@@", $12, $0, $0
+ db "あっち@@", $3c, $0, $0
+ db "あの@@@", $4e, $0, $0
+ db "ありゃ@@", $5c, $0, $0
+ db "あれ@@@", $66, $0, $0
+ db "あれは@@", $68, $0, $0
+ db "あんな@@", $6c, $0, $0
+ db "こう@@@", $dc, $1, $0
+ db "こっち@@", $ec, $1, $0
+ db "この@@@", $f2, $1, $0
+ db "こりゃ@@", $fe, $1, $0
+ db "これ@@@", $0, $2, $0
+ db "これだ!@", $2, $2, $0
+ db "これは@@", $4, $2, $0
+ db "こんな@@", $e, $2, $0
+ db "そう@@@", $be, $2, $0
+ db "そっち@@", $c0, $2, $0
+ db "その@@@", $c2, $2, $0
+ db "そりゃ@@", $c6, $2, $0
+ db "それ@@@", $c8, $2, $0
+ db "それだ!@", $cc, $2, $0
+ db "それは@@", $d0, $2, $0
+ db "そんな@@", $d2, $2, $0
+ db "どう@@@", $98, $3, $0
+ db "どっち@@", $b2, $3, $0
+ db "どの@@@", $b4, $3, $0
+ db "どりゃ@@", $c0, $3, $0
+ db "どれ@@@", $c2, $3, $0
+ db "どれを@@", $c8, $3, $0
+ db "どんな@@", $ca, $3, $0
+ db "なに@@@", $de, $3, $0
+ db "なんか@@", $ec, $3, $0
+ db "なんだ@@", $f0, $3, $0
+ db "なんで@@", $f6, $3, $0
+ db "なんなんだ", $0, $4, $0
+ db "なんの@@", $2, $4, $0
+; 11f220
+
+MobileEZChatData_WordAndPageCounts:
+macro_11f220: macro
+; parameter: number of words
+ db \1
+; 12 words per page (0-based indexing)
+x = \1 / 12
+if \1 % 12 == 0
+x = x +- 1
+endc
+ db x
+endm
+ macro_11f220 18 ; 01: Types
+ macro_11f220 36 ; 02: Greetings
+ macro_11f220 69 ; 03: People
+ macro_11f220 69 ; 04: Battle
+ macro_11f220 66 ; 05: Exclamations
+ macro_11f220 66 ; 06: Conversation
+ macro_11f220 69 ; 07: Feelings
+ macro_11f220 66 ; 08: Conditions
+ macro_11f220 39 ; 09: Life
+ macro_11f220 39 ; 0a: Hobbies
+ macro_11f220 69 ; 0b: Actions
+ macro_11f220 39 ; 0c: Time
+ macro_11f220 66 ; 0d: Farewells
+ macro_11f220 36 ; 0e: ThisAndThat
+
+EZChat_SortedWords:
+; Addresses in WRAM bank 3 where EZChat words beginning
+; with the given kana are sorted in memory, and the pre-
+; allocated size for each.
+; These arrays are expanded dynamically to accomodate
+; any Pokemon you've seen that starts with each kana.\
+macro_11f23c: macro
+ dw x - w3_d000, \1
+x = x + 2 * \1
+endm
+x = $d012
+ macro_11f23c $2f ; a
+ macro_11f23c $1e ; i
+ macro_11f23c $11 ; u
+ macro_11f23c $09 ; e
+ macro_11f23c $2e ; o
+ macro_11f23c $24 ; ka_ga
+ macro_11f23c $1b ; ki_gi
+ macro_11f23c $09 ; ku_gu
+ macro_11f23c $07 ; ke_ge
+ macro_11f23c $1c ; ko_go
+ macro_11f23c $12 ; sa_za
+ macro_11f23c $2b ; shi_ji
+ macro_11f23c $10 ; su_zu
+ macro_11f23c $08 ; se_ze
+ macro_11f23c $0c ; so_zo
+ macro_11f23c $2c ; ta_da
+ macro_11f23c $09 ; chi_dhi
+ macro_11f23c $12 ; tsu_du
+ macro_11f23c $1b ; te_de
+ macro_11f23c $1a ; to_do
+ macro_11f23c $1c ; na
+ macro_11f23c $05 ; ni
+ macro_11f23c $02 ; nu
+ macro_11f23c $05 ; ne
+ macro_11f23c $07 ; no
+ macro_11f23c $16 ; ha_ba_pa
+ macro_11f23c $0e ; hi_bi_pi
+ macro_11f23c $0c ; fu_bu_pu
+ macro_11f23c $05 ; he_be_pe
+ macro_11f23c $16 ; ho_bo_po
+ macro_11f23c $19 ; ma
+ macro_11f23c $0e ; mi
+ macro_11f23c $08 ; mu
+ macro_11f23c $07 ; me
+ macro_11f23c $09 ; mo
+ macro_11f23c $0d ; ya
+ macro_11f23c $04 ; yu
+ macro_11f23c $14 ; yo
+ macro_11f23c $0b ; ra
+ macro_11f23c $01 ; ri
+ macro_11f23c $02 ; ru
+ macro_11f23c $02 ; re
+ macro_11f23c $02 ; ro
+ macro_11f23c $15 ; wa
+x = $d000
+ macro_11f23c $09 ; end
+EZChat_SortedWordsEnd:
diff --git a/mobile/get_trainer_class.asm b/mobile/get_trainer_class.asm
new file mode 100644
index 000000000..37fe91c56
--- /dev/null
+++ b/mobile/get_trainer_class.asm
@@ -0,0 +1,46 @@
+GetMobileOTTrainerClass: ; mobile function
+ ld h, b
+ ld l, c
+ call .GetMobileOTTrainerClass
+ ld c, a
+ ret
+
+.GetMobileOTTrainerClass: ; 4e930
+ ld a, [hli]
+ xor [hl]
+ ld c, a
+ jr z, .skip_male_trainers
+ srl c
+ srl c
+.male_trainer_loop
+ srl c
+ ld a, c
+ cp MaleTrainersEnd - MaleTrainers - 1
+ jr nc, .male_trainer_loop
+ inc c
+
+.skip_male_trainers
+ ld a, [de]
+ cp $1
+ ld hl, MaleTrainers
+ jr nz, .finished
+
+ ld hl, FemaleTrainers
+ ld a, c
+ and a
+ jr z, .finished
+
+.female_trainer_loop
+ srl c
+ ld a, c
+ cp FemaleTrainersEnd - FemaleTrainers - 1
+ jr nc, .female_trainer_loop
+ inc c
+
+.finished
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ ret
+
+INCLUDE "data/trainers/gendered_trainers.asm"
diff --git a/mobile/mobile_12.asm b/mobile/mobile_12.asm
new file mode 100755
index 000000000..d3c1c0be3
--- /dev/null
+++ b/mobile/mobile_12.asm
@@ -0,0 +1,1845 @@
+InitMobileProfile: ; 4802f (12:402f)
+ xor a
+ set 6, a
+ ld [wd002], a
+ ld hl, wd003
+ set 0, [hl]
+ ld a, c
+ and a
+ call z, InitCrystalData
+ call ClearBGPalettes
+ call Function48d3d
+ ld a, [wd479]
+ bit 1, a
+ jr z, .not_yet_initialized
+ ld a, [wd003]
+ set 0, a
+ set 1, a
+ set 2, a
+ set 3, a
+ ld [wd003], a
+.not_yet_initialized
+ call Function486bf
+ call LoadFontsExtra
+ ld de, MobileUpArrowGFX
+ ld hl, VTiles2 tile $10
+ lb bc, BANK(MobileUpArrowGFX), 1
+ call Request1bpp
+ ld de, MobileDownArrowGFX
+ ld hl, VTiles2 tile $11
+ lb bc, BANK(MobileDownArrowGFX), 1
+ call Request1bpp
+ call Function4a3a7
+ call ClearBGPalettes
+ ld a, [wd002]
+ bit 6, a
+ jr z, .asm_4808a
+ call Function48689
+ jr .asm_480d7
+.asm_4808a
+ ld a, $5
+ ld [MusicFade], a
+ ld a, MUSIC_MOBILE_ADAPTER_MENU % $100
+ ld [MusicFadeID], a
+ ld a, MUSIC_MOBILE_ADAPTER_MENU / $100
+ ld [MusicFadeID + 1], a
+ ld c, 20
+ call DelayFrames
+ ld b, $1
+ call GetMysteryGift_MobileAdapterLayout
+ call ClearBGPalettes
+ hlcoord 0, 0
+ ld b, 2
+ ld c, 20
+ call ClearBox
+ hlcoord 0, 1
+ ld a, $c
+ ld [hl], a
+ ld bc, $13
+ add hl, bc
+ ld [hl], a
+ ld de, MobileProfileString
+ hlcoord 1, 1
+ call PlaceString
+ hlcoord 0, 2
+ ld b, $a
+ ld c, $12
+ call Function48cdc
+ hlcoord 2, 4
+ ld de, MobileString_Gender
+ call PlaceString
+.asm_480d7
+ hlcoord 2, 6
+ ld de, MobileString_Age
+ call PlaceString
+ hlcoord 2, 8
+ ld de, MobileString_Address
+ call PlaceString
+ hlcoord 2, 10
+ ld de, MobileString_ZipCode
+ call PlaceString
+ hlcoord 2, 12
+ ld de, MobileString_OK
+ call PlaceString
+ ld a, [wd002]
+ bit 6, a
+ jr nz, .asm_48113
+ ld a, [PlayerGender]
+ ld hl, Strings_484fb
+ call GetNthString
+ ld d, h
+ ld e, l
+ hlcoord 11, 4
+ call PlaceString
+.asm_48113
+ hlcoord 11, 6
+ call Function487ec
+ ld a, [wd474]
+ dec a
+ ld hl, Prefectures
+ call GetNthString
+ ld d, h
+ ld e, l
+ hlcoord 11, 8
+ call PlaceString
+ hlcoord 11, 10
+ call Function489ea
+ hlcoord 0, 14
+ ld b, $2
+ ld c, $12
+ call TextBox
+ hlcoord 1, 16
+ ld de, MobileString_PersonalInfo
+ call PlaceString
+ call Function48187
+ call WaitBGMap2
+ call SetPalettes
+ call StaticMenuJoypad
+ ld hl, wMenuCursorY
+ ld b, [hl]
+ push bc
+ jr asm_4815f
+
+Function48157: ; 48157 (12:4157)
+ call ScrollingMenuJoypad
+ ld hl, wMenuCursorY
+ ld b, [hl]
+ push bc
+asm_4815f: ; 4815f (12:415f)
+ bit A_BUTTON_F, a
+ jp nz, Function4820d
+ ld b, a
+ ld a, [wd002]
+ bit 6, a
+ jr z, .dont_check_b_button
+ ld hl, wd479
+ bit 1, [hl]
+ jr z, .dont_check_b_button
+ bit B_BUTTON_F, b
+ jr nz, .b_button
+.dont_check_b_button
+ jp Function48272
+
+.b_button
+ call ClearBGPalettes
+ call Function48d30
+ pop bc
+ call ClearTileMap
+ ld a, $ff
+ ret
+
+Function48187: ; 48187 (12:4187)
+ ld a, [wd479]
+ bit 1, a
+ jr nz, .asm_481f1
+ ld a, [wd003]
+ ld d, a
+ call Function48725
+ jr c, .asm_481a2
+ lb bc, 1, 4
+ hlcoord 2, 12
+ call ClearBox
+ jr .asm_481ad
+.asm_481a2
+ push de
+ hlcoord 2, 12
+ ld de, MobileString_OK
+ call PlaceString
+ pop de
+.asm_481ad
+ ld a, [wd002]
+ bit 6, a
+ jr nz, .asm_481c1
+ bit 0, d
+ jr nz, .asm_481c1
+ lb bc, 1, 8
+ hlcoord 11, 4
+ call ClearBox
+.asm_481c1
+ bit 1, d
+ jr nz, .asm_481ce
+ lb bc, 1, 8
+ hlcoord 11, 6
+ call ClearBox
+.asm_481ce
+ bit 2, d
+ jr nz, .asm_481db
+ lb bc, 2, 8
+ hlcoord 11, 7
+ call ClearBox
+.asm_481db
+ bit 3, d
+ jr nz, .asm_481f1
+ ld a, [wd479]
+ bit 0, a
+ jr nz, .asm_481f8
+ lb bc, 1, 8
+ hlcoord 11, 10
+ call ClearBox
+ jr .asm_48201
+.asm_481f1
+ ld a, [wd479]
+ bit 0, a
+ jr nz, .asm_48201
+.asm_481f8
+ hlcoord 11, 10
+ ld de, .String_TellLater
+ call PlaceString
+.asm_48201
+ ret
+; 48202 (12:4202)
+
+.String_TellLater: ; 48202
+ db "Tell Later@"
+; 4820d
+
+Function4820d: ; 4820d (12:420d)
+ call PlaceHollowCursor
+ ld hl, wMenuCursorY
+ ld a, [hl]
+ push af
+ ld a, [wd002]
+ bit 6, a
+ jr z, .asm_4821f
+ pop af
+ inc a
+ push af
+.asm_4821f
+ pop af
+ cp $1
+ jr z, asm_4828d
+ cp $2
+ jp z, Function4876f
+ cp $3
+ jp z, Function48304
+ cp $4
+ jp z, Function488d3
+ ld a, $2
+ call MenuClickSound
+ ld a, [wd002]
+ bit 6, a
+ jr z, .asm_4825c
+ jr .asm_4825c
+; 48241 (12:4241)
+
+ hlcoord 1, 15
+ ld b, $2
+ ld c, $12
+ call ClearBox
+ ld de, MobileString_ProfileChanged
+ hlcoord 1, 16
+ call PlaceString
+ call WaitBGMap
+ ld c, 48
+ call DelayFrames
+
+.asm_4825c
+ call ClearBGPalettes
+ call Function48d30
+ pop bc
+ call ClearTileMap
+ ld b, SCGB_DIPLOMA
+ call GetSGBLayout
+ ld hl, wd479
+ set 1, [hl]
+ xor a
+ ret
+
+Function48272: ; 48272 (12:4272)
+ jp Function4840c
+; 48275 (12:4275)
+
+MobileString_PersonalInfo: ; 48275
+ db "Personal Info@"
+; 48283
+
+Function48283: ; 48283 (12:4283)
+ lb bc, 2, 18
+ hlcoord 1, 15
+ call ClearBox
+ ret
+
+asm_4828d: ; 4828d (12:428d)
+ call Function48283
+ hlcoord 1, 16
+ ld de, MobileDesc_Gender
+ call PlaceString
+ ld hl, MenuDataHeader_0x484f1
+ call LoadMenuDataHeader
+ call Function4873c
+ hlcoord 11, 2
+ ld b, $4
+ ld c, $7
+ call Function48cdc
+ hlcoord 13, 4
+ ld de, String_484fb
+ call PlaceString
+ hlcoord 13, 6
+ ld de, String_484ff
+ call PlaceString
+ call WaitBGMap
+ ld a, [PlayerGender]
+ inc a
+ ld [wMenuCursorBuffer], a
+ call StaticMenuJoypad
+ call PlayClickSFX
+ call ExitMenu
+ bit 0, a
+ jp z, Function4840c
+ ld hl, wMenuCursorY
+ ld a, [hl]
+ ld hl, Strings_484fb
+ cp $1
+ jr z, .asm_482ed
+.asm_482e1
+ ld a, [hli]
+ cp $50
+ jr nz, .asm_482e1
+ ld a, $1
+ ld [PlayerGender], a
+ jr .asm_482f1
+.asm_482ed
+ xor a
+ ld [PlayerGender], a
+.asm_482f1
+ ld d, h
+ ld e, l
+ hlcoord 11, 4
+ call PlaceString
+ ld a, [wd003]
+ set 0, a
+ ld [wd003], a
+ jp Function4840c
+
+Function48304: ; 48304 (12:4304)
+ call Function48283
+ hlcoord 1, 16
+ ld de, MobileDesc_Address
+ call PlaceString
+ ld hl, MenuDataHeader_0x48504
+ call LoadMenuDataHeader
+ ld hl, MenuDataHeader_0x48513
+ call LoadMenuDataHeader
+ hlcoord 10, 0
+ ld b, $c
+ ld c, $8
+ call Function48cdc
+ ld a, [wMenuCursorBuffer]
+ ld b, a
+ ld a, [wMenuScrollPosition]
+ ld c, a
+ push bc
+ ld a, [wd474]
+ dec a
+ cp $29
+ jr c, .asm_4833f
+ sub $29
+ inc a
+ ld [wMenuCursorBuffer], a
+ ld a, $29
+.asm_4833f
+ ld [wMenuScrollPosition], a
+ farcall Mobile_OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
+.asm_48348
+ call ScrollingMenu
+ ld de, $629
+ call Function48383
+ jr c, .asm_48348
+ ld d, a
+ pop bc
+ ld a, b
+ ld [wMenuCursorBuffer], a
+ ld a, c
+ ld [wMenuScrollPosition], a
+ ld a, d
+ push af
+ call ExitMenu
+ call ExitMenu
+ pop af
+ ld a, [hJoyPressed]
+ bit 0, a
+ jr z, .asm_48377
+ call Function483bb
+ ld a, [wd003]
+ set 2, a
+ ld [wd003], a
+.asm_48377
+ call Function48187
+ farcall Mobile_OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
+ jp Function4840c
+
+Function48383: ; 48383 (12:4383)
+ push bc
+ push af
+ bit 5, a
+ jr nz, .asm_48390
+ bit 4, a
+ jr nz, .asm_4839f
+ and a
+ jr .asm_483b7
+.asm_48390
+ ld a, [wMenuScrollPosition]
+ sub d
+ ld [wMenuScrollPosition], a
+ jr nc, .asm_483af
+ xor a
+ ld [wMenuScrollPosition], a
+ jr .asm_483af
+.asm_4839f
+ ld a, [wMenuScrollPosition]
+ add d
+ ld [wMenuScrollPosition], a
+ cp e
+ jr c, .asm_483af
+ ld a, e
+ ld [wMenuScrollPosition], a
+ jr .asm_483af
+.asm_483af
+ ld hl, wMenuCursorY
+ ld a, [hl]
+ ld [wMenuCursorBuffer], a
+ scf
+.asm_483b7
+ pop bc
+ ld a, b
+ pop bc
+ ret
+
+Function483bb: ; 483bb (12:43bb)
+ ld hl, wScrollingMenuCursorPosition
+ ld a, [hl]
+ inc a
+ ld [wd474], a
+ dec a
+ ld b, a
+ ld hl, Prefectures
+.asm_483c8
+ and a
+ jr z, .asm_483d5
+.asm_483cb
+ ld a, [hli]
+ cp "@"
+ jr nz, .asm_483cb
+ ld a, b
+ dec a
+ ld b, a
+ jr .asm_483c8
+.asm_483d5
+ ld d, h
+ ld e, l
+ ld b, $2
+ ld c, $8
+ hlcoord 11, 7
+ call ClearBox
+ hlcoord 11, 8
+ call PlaceString
+ ret
+; 483e8 (12:43e8)
+
+Function483e8: ; 483e8
+ push de
+ ld hl, Prefectures
+ ld a, [MenuSelection]
+ cp $ff
+ jr nz, .asm_483f8
+ ld hl, Wakayama ; last string
+ jr .asm_48405
+
+.asm_483f8
+ ld d, a
+ and a
+ jr z, .asm_48405
+.asm_483fc
+ ld a, [hli]
+ cp "@"
+ jr nz, .asm_483fc
+ ld a, d
+ dec a
+ jr .asm_483f8
+
+.asm_48405
+ ld d, h
+ ld e, l
+ pop hl
+ call PlaceString
+ ret
+; 4840c
+
+Function4840c: ; 4840c (12:440c)
+ call Function48187
+ call Function48283
+ hlcoord 1, 16
+ ld de, MobileString_PersonalInfo
+ call PlaceString
+ call Function486bf
+ pop bc
+ ld hl, wMenuCursorY
+ ld [hl], b
+ ld a, [wd002]
+ bit 6, a
+ jr nz, .narrower_box
+ ld b, 9
+ ld c, 1
+ hlcoord 1, 4
+ call ClearBox
+ jp Function48157
+
+.narrower_box
+ ld b, 7
+ ld c, 1
+ hlcoord 1, 6
+ call ClearBox
+ jp Function48157
+
+Mobile12_Bin2Dec: ; 48444 (12:4444)
+ push bc
+ push af
+ push de
+ push hl
+ ld hl, .DigitStrings
+.loop
+ and a
+ jr z, .got_string
+ inc hl
+ inc hl
+ dec a
+ jr .loop
+.got_string
+ ld d, h
+ ld e, l
+ pop hl
+ call PlaceString
+ pop de
+ pop af
+ pop bc
+ ret
+; 4845d (12:445d)
+
+.DigitStrings: ; 4845d
+; 4845d
+ db "0@"
+ db "1@"
+ db "2@"
+ db "3@"
+ db "4@"
+ db "5@"
+ db "6@"
+ db "7@"
+ db "8@"
+ db "9@"
+; 48471
+
+MobileProfileString: db " Mobile Profile@"
+MobileString_Gender: db "Gender@"
+MobileString_Age: db "Age@"
+MobileString_Address: db "Address@"
+MobileString_ZipCode: db "Zip Code@"
+MobileString_OK: db "OK@"
+MobileString_ProfileChanged: db "Profile Changed@"
+MobileDesc_Gender: db "Boy or girl?@"
+MobileDesc_Age: db "How old are you?@"
+MobileDesc_Address: db "Where do you live?@"
+MobileDesc_ZipCode: db "Your zip code?@"
+; 484f1
+
+MenuDataHeader_0x484f1: ; 0x484f1
+ db $40 ; flags
+ db 02, 11 ; start coords
+ db 07, 19 ; end coords
+ dw MenuData2_0x484f9
+ db 1 ; default option
+; 0x484f9
+
+MenuData2_0x484f9: ; 0x484f9
+ db $a0 ; flags
+ db 2 ; items
+Strings_484fb:
+String_484fb: db "Boy@"
+String_484ff: db "Girl@"
+; 0x48504
+
+MenuDataHeader_0x48504: ; 0x48504
+ db $40 ; flags
+ db 00, 10 ; start coords
+ db 17, 19 ; end coords
+
+MenuDataHeader_0x48509: ; 0x48509
+ db $40 ; flags
+ db 05, 10 ; start coords
+ db 07, 19 ; end coords
+
+MenuDataHeader_0x4850e: ; 0x4850e
+ db $40 ; flags
+ db 09, 10 ; start coords
+ db 11, 19 ; end coords
+
+MenuDataHeader_0x48513: ; 0x48513
+ db $40 ; flags
+ db 01, 11 ; start coords
+ db 12, 18 ; end coords
+ dw MenuData2_0x4851b
+ db 1 ; default option
+; 0x4851b
+
+MenuData2_0x4851b: ; 0x4851b
+ db $1d ; flags
+ db 6 ; items
+
+Unknown_4851d: ; 4851d
+ db $00, $01, $12, $2b, $45, $12, $e8, $43, $00, $00, $00, $00, $00, $00, $2e, $00, $01, $02, $03, $04
+ db $05, $06, $07, $08, $09, $0a, $0b, $0c, $0d, $0e, $0f, $10, $11, $12, $13, $14, $15, $16, $17, $18
+ db $19, $1a, $1b, $1c, $1d, $1e, $1f, $20, $21, $22, $23, $24, $25, $26, $27, $28, $29, $2a, $2b, $2c
+ db $2d, $ff
+
+Prefectures:
+Aichi: db "あいちけん@" ; Aichi
+Aomori: db "あおもりけん@" ; Aomori
+Akita: db "あきたけん@" ; Akita
+Ishikawa: db "いしかわけん@" ; Ishikawa
+Ibaraki: db "いばらきけん@" ; Ibaraki
+Iwate: db "いわてけん@" ; Iwate
+Ehime: db "えひめけん@" ; Ehime
+Oita: db "おおいたけん@" ; Oita
+Osakafu: db "おおさかふ@" ; Osakafu
+Okayama: db "おかやまけん@" ; Okayama
+Okinawa: db "おきなわけん@" ; Okinawa
+Kagawa: db "かがわけん@" ; Kagawa
+Kagoshima: db "かごしまけん@" ; Kagoshima
+Kanagawa: db "かながわけん@" ; Kanagawa
+Gifu: db "ぎふけん@" ; Gifu
+Kyotofu: db "きょうとふ@" ; Kyotofu
+Kumamoto: db "くまもとけん@" ; Kumamoto
+Gunma: db "ぐんまけん@" ; Gunma
+Kochi: db "こうちけん@" ; Kochi
+Saitama: db "さいたまけん@" ; Saitama
+Saga: db "さがけん@" ; Saga
+Shiga: db "しがけん@" ; Shiga
+Shizuoka: db "しずおかけん@" ; Shizuoka
+Shimane: db "しまねけん@" ; Shimane
+Chiba: db "ちばけん@" ; Chiba
+Tokyo: db "とうきょうと@" ; Tokyo
+Tokushima: db "とくしまけん@" ; Tokushima
+Tochigi: db "とちぎけん@" ; Tochigi
+Tottori: db "とっとりけん@" ; Tottori
+Toyama: db "とやまけん@" ; Toyama
+Nagasaki: db "ながさきけん@" ; Nagasaki
+Nagano: db "ながのけん@" ; Nagano
+Naraken: db "ならけん@" ; Naraken
+Niigata: db "にいがたけん@" ; Niigata
+Hyogo: db "ひょうごけん@" ; Hyogo
+Hiroshima: db "ひろしまけん@" ; Hiroshima
+Fukui: db "ふくいけん@" ; Fukui
+Fukuoka: db "ふくおかけん@" ; Fukuoka
+Fukushima: db "ふくしまけん@" ; Fukushima
+Hokkaido: db "ほっかいどう@" ; Hokkaido
+Mie: db "みえけん@" ; Mie
+Miyagi: db "みやぎけん@" ; Miyagi
+Miyazaki: db "みやざきけん@" ; Miyazaki
+Yamagata: db "やまがたけん@" ; Yamagata
+Yamaguchi: db "やまぐちけん@" ; Yamaguchi
+Yamanashi: db "やまなしけん@" ; Yamanashi
+Wakayama: db "わかやまけん@" ; Wakayama
+; 48689
+
+Function48689: ; 48689 (12:4689)
+ ld c, 7
+ call DelayFrames
+ ld b, $1
+ call GetMysteryGift_MobileAdapterLayout
+ call ClearBGPalettes
+ hlcoord 0, 0
+ ld b, 4
+ ld c, SCREEN_WIDTH
+ call ClearBox
+ hlcoord 0, 2
+ ld a, $c
+ ld [hl], a
+ ld bc, SCREEN_WIDTH - 1
+ add hl, bc
+ ld [hl], a
+ ld de, MobileProfileString
+ hlcoord 1, 2
+ call PlaceString
+ hlcoord 0, 4
+ ld b, $8
+ ld c, $12
+ call Function48cdc
+ ret
+
+Function486bf: ; 486bf (12:46bf)
+ ld hl, w2DMenuCursorInitY
+ ld a, [wd002]
+ bit 6, a
+ jr nz, .start_at_6
+ ld a, 4
+ ld [hli], a
+ jr .got_init_y
+
+.start_at_6
+ ld a, 6
+ ld [hli], a
+.got_init_y
+ ld a, 1
+ ld [hli], a ; init x
+ ld a, [wd002]
+ bit 6, a
+ jr nz, .check_wd479
+ call Function48725
+ ld a, 4
+ jr nc, .got_num_rows_1
+ ld a, 5
+.got_num_rows_1
+ ld [hli], a
+ jr .got_num_rows_2
+
+.check_wd479
+ ld a, [wd479]
+ bit 1, a
+ jr nz, .four_rows
+ call Function48725
+ jr c, .four_rows
+ ld a, 3
+ ld [hli], a
+ jr .got_num_rows_2
+
+.four_rows
+ ld a, 4
+ ld [hli], a
+.got_num_rows_2
+ ld a, 1
+ ld [hli], a ; num cols
+ ld [hl], $0 ; flags 1
+ set 5, [hl]
+ inc hl
+ xor a
+ ld [hli], a ; flags 2
+ ld a, $20
+ ld [hli], a ; cursor offsets
+ ld a, A_BUTTON
+ add D_UP
+ add D_DOWN
+ push af
+ ld a, [wd002]
+ bit 6, a
+ jr z, .got_joypad_mask
+ pop af
+ add B_BUTTON
+ push af
+.got_joypad_mask
+ pop af
+ ld [hli], a
+ ld a, $1
+ ld [hli], a ; cursor y
+ ld [hli], a ; cursor x
+ xor a
+ ld [hli], a ; off char
+ ld [hli], a ; cursor tile
+ ld [hli], a ; cursor tile + 1
+ ret
+
+Function48725: ; 48725 (12:4725)
+; ld a, [wd003]
+; and $f
+; cp $f
+; jr nz, .clear_carry
+; scf
+; ret
+; .clear_carry
+; and a
+; ret
+
+ ld a, [wd003]
+ bit 0, a
+ jr z, .clear_carry
+ bit 1, a
+ jr z, .clear_carry
+ bit 2, a
+ jr z, .clear_carry
+ bit 3, a
+ jr z, .clear_carry
+ scf
+ ret
+
+.clear_carry
+ and a
+ ret
+
+Function4873c: ; 4873c (12:473c)
+ ld hl, w2DMenuCursorInitY
+ ld a, 4
+ ld [hli], a
+ ld a, 12
+ ld [hli], a ; init x
+ ld a, 2
+ ld [hli], a ; num rows
+ ld a, 1
+ ld [hli], a ; num cols
+ ld [hl], $0 ; flags 1
+ set 5, [hl]
+ inc hl
+ xor a
+ ld [hli], a ; flags 2
+ ln a, 2, 0
+ ld [hli], a ; cursor offsets
+ ld a, A_BUTTON
+ add B_BUTTON
+ ld [hli], a ; joypad filter
+ ; ld a, [PlayerGender]
+ ; xor 1
+ ; inc a
+ ld a, [PlayerGender]
+ and a
+ jr z, .male
+ ld a, 2
+ jr .okay_gender
+
+.male
+ ld a, 1
+.okay_gender
+ ld [hli], a ; cursor y
+ ld a, $1
+ ld [hli], a ; cursor x
+ xor a
+ ld [hli], a ; off char
+ ld [hli], a ; cursor tile
+ ld [hli], a ; cursor tile + 1
+ ret
+
+Function4876f: ; 4876f (12:476f)
+ call Function48283
+ hlcoord 1, 16
+ ld de, MobileDesc_Age
+ call PlaceString
+ ld hl, MenuDataHeader_0x48509
+ call LoadMenuDataHeader
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ hlcoord 10, 5
+ ld b, $1
+ ld c, $8
+ call Function48cdc
+ call WaitBGMap
+ ld a, [wd473]
+ and a
+ jr z, .asm_487ab
+ cp $64
+ jr z, .asm_487b2
+ hlcoord 12, 5
+ ld [hl], $10
+ hlcoord 12, 7
+ ld [hl], $11
+ jr .asm_487b7
+.asm_487ab
+ hlcoord 12, 5
+ ld [hl], $10
+ jr .asm_487b7
+.asm_487b2
+ hlcoord 12, 7
+ ld [hl], $11
+.asm_487b7
+ hlcoord 11, 6
+ call Function487ec
+ ld c, 10
+ call DelayFrames
+ ld a, [wd473]
+ push af
+.asm_487c6
+ call JoyTextDelay
+ call Function4880e
+ jr nc, .asm_487c6
+ ld a, $1
+ call MenuClickSound
+ pop bc
+ jr nz, .asm_487da
+ ld a, b
+ ld [wd473], a
+.asm_487da
+ ld a, [wd473]
+ call ExitMenu
+ hlcoord 11, 6
+ call Function487ec
+ pop af
+ ld [hInMenu], a
+ jp Function4840c
+
+Function487ec: ; 487ec (12:47ec)
+ push hl
+ ld de, wd473
+ call Function487ff
+ pop hl
+rept 4
+ inc hl
+endr
+ ld de, String_4880d
+ call PlaceString
+ ret
+
+Function487ff: ; 487ff (12:47ff)
+ push hl
+ ld a, " "
+ ld [hli], a
+ ld [hl], a
+ pop hl
+ ld b, PRINTNUM_LEADINGZEROS | 1
+ ld c, 3
+ call PrintNum
+ ret
+; 4880d (12:480d)
+
+String_4880d: ; 4880d
+ db "@"
+; 4880e
+
+Function4880e: ; 4880e (12:480e)
+ ld a, [hJoyPressed]
+ and A_BUTTON
+ jp nz, Function488b9
+ ld a, [hJoyPressed]
+ and B_BUTTON
+ jp nz, Function488b4
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_UP
+ jr nz, .asm_48843
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .asm_48838
+ ld a, [hl]
+ and D_LEFT
+ jr nz, .asm_4884f
+ ld a, [hl]
+ and D_RIGHT
+ jr nz, .asm_4885f
+ call DelayFrame
+ and a
+ ret
+.asm_48838
+ ld hl, wd473
+ ld a, [hl]
+ and a
+ jr z, .asm_48840
+ dec a
+.asm_48840
+ ld [hl], a
+ jr .asm_4886f
+.asm_48843
+ ld hl, wd473
+ ld a, [hl]
+ cp $64
+ jr nc, .asm_4884c
+ inc a
+.asm_4884c
+ ld [hl], a
+ jr .asm_4886f
+.asm_4884f
+ ld a, [wd473]
+ cp $5b
+ jr c, .asm_48858
+ ld a, $5a
+.asm_48858
+ add $a
+ ld [wd473], a
+ jr .asm_4886f
+.asm_4885f
+ ld a, [wd473]
+ cp $a
+ jr nc, .asm_48868
+ ld a, $a
+.asm_48868
+ sub $a
+ ld [wd473], a
+ jr .asm_4886f
+.asm_4886f
+ ld a, [wd473]
+ and a
+ jr z, .asm_48887
+ cp $64
+ jr z, .asm_48898
+ jr z, .asm_488a7
+ hlcoord 12, 5
+ ld [hl], $10
+ hlcoord 12, 7
+ ld [hl], $11
+ jr .asm_488a7
+.asm_48887
+ hlcoord 10, 5
+ ld b, $1
+ ld c, $8
+ call Function48cdc
+ hlcoord 12, 5
+ ld [hl], $10
+ jr .asm_488a7
+.asm_48898
+ hlcoord 10, 5
+ ld b, $1
+ ld c, $8
+ call Function48cdc
+ hlcoord 12, 7
+ ld [hl], $11
+.asm_488a7
+ hlcoord 11, 6
+ call Function487ec
+ call WaitBGMap
+ ld a, $1
+ and a
+ ret
+
+Function488b4: ; 488b4 (12:48b4)
+ ld a, $0
+ and a
+ scf
+ ret
+
+Function488b9: ; 488b9 (12:48b9)
+ ld a, [wd003]
+ set 1, a
+ ld [wd003], a
+ scf
+ ret
+; 488c3 (12:48c3)
+
+MobileUpArrowGFX: ; 488c3
+INCBIN "gfx/mobile/up_arrow.2bpp"
+
+MobileDownArrowGFX: ; 488cb
+INCBIN "gfx/mobile/down_arrow.2bpp"
+
+Function488d3: ; 488d3 (12:48d3)
+ call Function48283
+ hlcoord 1, 16
+ ld de, MobileDesc_ZipCode
+ call PlaceString
+ call Function48a3a
+ jp c, Function4840c
+ ld hl, MenuDataHeader_0x4850e
+ call LoadMenuDataHeader
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ hlcoord 10, 9
+ ld b, $1
+ ld c, $8
+ call Function48cdc
+ ld a, [wd475]
+ and $f
+ ld d, $0
+ hlcoord 11, 10
+ call Function489ea
+ call WaitBGMap
+ ld a, [wd475]
+ ld b, a
+ ld a, [wd476]
+ ld c, a
+ ld a, [wd477]
+ ld d, a
+ ld a, [wd478]
+ ld e, a
+ push de
+ push bc
+ ld d, $0
+ ld b, $0
+
+asm_48922: ; 48922 (12:4922)
+ push bc
+ call JoyTextDelay
+ ld a, [hJoyDown]
+ and a
+ jp z, Function4896e
+ bit 0, a
+ jp nz, Function4896e
+ bit 1, a
+ jp nz, Function4896e
+ ld a, [wd002]
+ and %11001111
+ res 7, a
+ ld [wd002], a
+ pop bc
+ inc b
+ ld a, b
+ cp $5
+ push bc
+ jr c, .asm_4894c
+ pop bc
+ ld b, $4
+ push bc
+.asm_4894c
+ pop bc
+ push bc
+ ld a, b
+ cp $4
+ jr nz, asm_48972
+ ld c, 10
+ call DelayFrames
+ jr asm_48972
+; 4895a (12:495a)
+
+Function4895a: ; 4895a
+ ld a, [hJoyPressed]
+ and a
+ jr z, .asm_48965
+ pop bc
+ ld b, $1
+ push bc
+ jr asm_48972
+
+.asm_48965
+ ld a, [hJoyLast]
+ and a
+ jr z, asm_48972
+
+ pop bc
+ ld b, $1
+ push bc
+
+Function4896e: ; 4896e (12:496e)
+ pop bc
+ ld b, $0
+ push bc
+
+asm_48972: ; 48972 (12:4972)
+ call Function48ab5
+ push af
+ cp $f0
+ jr z, .asm_48994
+ cp $f
+ jr nz, .asm_48988
+ ld a, [wd002]
+ set 7, a
+ and $cf
+ ld [wd002], a
+.asm_48988
+ hlcoord 11, 10
+ ld b, $0
+ ld c, d
+ add hl, bc
+ ld b, $3
+ call Function48c11
+.asm_48994
+ call WaitBGMap
+ pop af
+ pop bc
+ jr nc, asm_48922
+ jr nz, .asm_489b1
+ pop bc
+ ld a, b
+ ld [wd475], a
+ ld a, c
+ ld [wd476], a
+ pop bc
+ ld a, b
+ ld [wd477], a
+ ld a, c
+ ld [wd478], a
+ jr .asm_489c5
+.asm_489b1
+ push af
+ ld a, [wd479]
+ set 0, a
+ ld [wd479], a
+ ld a, [wd003]
+ set 3, a
+ ld [wd003], a
+ pop af
+ pop bc
+ pop bc
+.asm_489c5
+ push af
+ push bc
+ push de
+ push hl
+ ld a, $1
+ call MenuClickSound
+ pop hl
+ pop de
+ pop bc
+ pop af
+ call ExitMenu
+ hlcoord 11, 10
+ call Function489ea
+ hlcoord 11, 9
+ lb bc, 1, 8
+ call ClearBox
+ pop af
+ ld [hInMenu], a
+ jp Function4840c
+
+Function489ea: ; 489ea (12:49ea)
+ push de
+ ld a, [wd475]
+ and $f
+ call Mobile12_Bin2Dec
+ ld a, [wd476]
+ and $f0
+ swap a
+ inc hl
+ call Mobile12_Bin2Dec
+ ld a, [wd476]
+ and $f
+ inc hl
+ call Mobile12_Bin2Dec
+ inc hl
+ ld de, String_48a38
+ call PlaceString
+ ld a, [wd477]
+ and $f0
+ swap a
+ inc hl
+ call Mobile12_Bin2Dec
+ ld a, [wd477]
+ and $f
+ inc hl
+ call Mobile12_Bin2Dec
+ ld a, [wd478]
+ and $f0
+ swap a
+ inc hl
+ call Mobile12_Bin2Dec
+ ld a, [wd478]
+ and $f
+ inc hl
+ call Mobile12_Bin2Dec
+ pop de
+ ret
+; 48a38 (12:4a38)
+
+String_48a38: ; 48a38
+ db "-@"
+; 48a3a
+
+Function48a3a: ; 48a3a (12:4a3a)
+ ld hl, MenuDataHeader_0x48a9c
+ call LoadMenuDataHeader
+ call Function4873c
+ ld a, $a
+ ld [w2DMenuCursorInitY], a
+ ld a, $b
+ ld [w2DMenuCursorInitX], a
+ ld a, $1
+ ld [wMenuCursorY], a
+ hlcoord 10, 8
+ ld b, $4
+ ld c, $8
+ call Function48cdc
+ hlcoord 12, 10
+ ld de, String_48aa1
+ call PlaceString
+ call StaticMenuJoypad
+ push af
+ call PlayClickSFX
+ call ExitMenu
+ pop af
+ bit 1, a
+ jp nz, Function48a9a
+ ld a, [wMenuCursorY]
+ cp $1
+ jr z, .asm_48a98
+ ld a, [wd003]
+ set 3, a
+ ld [wd003], a
+ ld a, [wd479]
+ res 0, a
+ ld [wd479], a
+ xor a
+ ld bc, $4
+ ld hl, wd475
+ call ByteFill
+ jr Function48a9a
+.asm_48a98
+ and a
+ ret
+
+Function48a9a: ; 48a9a (12:4a9a)
+ scf
+ ret
+; 48a9c (12:4a9c)
+
+MenuDataHeader_0x48a9c: ; 0x48a9c
+ db $40 ; flags
+ db 08, 10 ; start coords
+ db 13, 19 ; end coord
+
+String_48aa1: ; 48aa1
+ db "Tell Now"
+ next "Tell Later@"
+; 48ab5
+
+
+Function48ab5: ; 48ab5 (12:4ab5)
+ ld a, [hJoyPressed]
+ and A_BUTTON
+ jp nz, Function48c0f
+ ld a, [hJoyPressed]
+ and B_BUTTON
+ jp nz, Function48c0d
+ ld a, d
+ and a
+ jr z, .asm_48adf
+ cp $1
+ jr z, .asm_48ae7
+ cp $2
+ jr z, .asm_48af1
+ cp $3
+ jr z, .asm_48af9
+ cp $4
+ jr z, .asm_48b03
+ cp $5
+ jr z, .asm_48b0b
+ cp $6
+ jr .asm_48b15
+.asm_48adf
+ ld hl, wd475
+ ld a, [hl]
+ and $f
+ jr .asm_48b1d
+.asm_48ae7
+ ld hl, wd476
+ ld a, [hl]
+ swap a
+ or $f0
+ jr .asm_48b1d
+.asm_48af1
+ ld hl, wd476
+ ld a, [hl]
+ and $f
+ jr .asm_48b1d
+.asm_48af9
+ ld hl, wd477
+ ld a, [hl]
+ swap a
+ or $f0
+ jr .asm_48b1d
+.asm_48b03
+ ld hl, wd477
+ ld a, [hl]
+ and $f
+ jr .asm_48b1d
+.asm_48b0b
+ ld hl, wd478
+ ld a, [hl]
+ swap a
+ or $f0
+ jr .asm_48b1d
+.asm_48b15
+ ld hl, wd478
+ ld a, [hl]
+ and $f
+ jr .asm_48b1d
+.asm_48b1d
+ push hl
+ push af
+ ld e, $0
+ hlcoord 11, 10
+ ld a, d
+.asm_48b25
+ and a
+ jr z, .asm_48b2c
+ inc e
+ dec a
+ jr .asm_48b25
+.asm_48b2c
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_UP
+ jr nz, .asm_48b8d
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .asm_48b55
+ ld a, [hl]
+ and D_LEFT
+ jp nz, Function48bd7
+ ld a, [hl]
+ and D_RIGHT
+ jr nz, .asm_48b9d
+ hlcoord 11, 10
+ call Function489ea
+ ld a, [wd002]
+ bit 7, a
+ jr nz, .asm_48b51
+.asm_48b51
+ pop bc
+ pop bc
+ and a
+ ret
+.asm_48b55
+ pop af
+ ld b, a
+ and $f
+ and a
+ ld a, b
+ jr nz, .asm_48b61
+ and $f0
+ add $a
+.asm_48b61
+ dec a
+.asm_48b62
+ push de
+ push af
+ hlcoord 10, 9
+ ld b, $1
+ ld c, $8
+ call Function48cdc
+ pop af
+ pop de
+ hlcoord 11, 10
+ ld b, a
+ ld a, d
+ cp $3
+ jr c, .asm_48b7a
+ inc hl
+.asm_48b7a
+ ld a, b
+ pop hl
+ bit 7, a
+ jr z, .asm_48b85
+ call Function48c4d
+ jr .asm_48b88
+.asm_48b85
+ call Function48c5a
+.asm_48b88
+ ld a, $f0
+ jp Function48c00
+.asm_48b8d
+ pop af
+ ld b, a
+ and $f
+ cp $9
+ ld a, b
+ jr c, .asm_48b9a
+ and $f0
+ add $ff
+.asm_48b9a
+ inc a
+ jr .asm_48b62
+.asm_48b9d
+ push de
+ hlcoord 10, 9
+ ld b, $1
+ ld c, $8
+ call Function48cdc
+ pop de
+ ld a, d
+ cp $6
+ jr nc, .asm_48baf
+ inc d
+.asm_48baf
+ pop af
+ pop hl
+ ld b, a
+ ld a, d
+ cp $6
+ ld a, b
+ jr z, .asm_48bc4
+ bit 7, a
+ jr nz, .asm_48bc4
+ inc hl
+ ld a, [hl]
+ swap a
+ and $f
+ jr asm_48bc7
+.asm_48bc4
+ ld a, [hl]
+ and $f
+
+asm_48bc7: ; 48bc7 (12:4bc7)
+ hlcoord 11, 10
+ push af
+ ld a, d
+ cp $3
+ pop bc
+ ld a, b
+ jr c, .asm_48bd3
+ inc hl
+.asm_48bd3
+ ld a, $f
+ jr Function48c00
+
+Function48bd7: ; 48bd7 (12:4bd7)
+ push de
+ hlcoord 10, 9
+ ld b, $1
+ ld c, $8
+ call Function48cdc
+ pop de
+ ld a, d
+ and a
+ pop af
+ pop hl
+ ld b, a
+ ld a, d
+ and a
+ ld a, b
+ jr z, .asm_48bf3
+ bit 7, a
+ jr z, .asm_48bf8
+ dec d
+ dec hl
+.asm_48bf3
+ ld a, [hl]
+ and $f
+ jr asm_48bc7
+.asm_48bf8
+ dec d
+ ld a, [hl]
+ swap a
+ and $f
+ jr asm_48bc7
+
+Function48c00: ; 48c00 (12:4c00)
+ push af
+ hlcoord 11, 10
+ call Function489ea
+ ld a, $1
+ and a
+ pop bc
+ ld a, b
+ ret
+
+Function48c0d: ; 48c0d (12:4c0d)
+ xor a
+ and a
+
+Function48c0f: ; 48c0f (12:4c0f)
+ scf
+ ret
+
+Function48c11: ; 48c11 (12:4c11)
+ ld a, [wd002]
+ bit 7, a
+ jr z, .asm_48c20
+ ld a, d
+ cp $3
+ jr c, .asm_48c1e
+ inc hl
+.asm_48c1e
+ ld [hl], $7f
+.asm_48c20
+ ld a, [wd002]
+ swap a
+ and $3
+ inc a
+ cp b
+ jr nz, .asm_48c40
+ ld a, [wd002]
+ bit 7, a
+ jr z, .asm_48c3a
+ res 7, a
+ ld [wd002], a
+ xor a
+ jr .asm_48c40
+.asm_48c3a
+ set 7, a
+ ld [wd002], a
+ xor a
+.asm_48c40
+ swap a
+ ld b, a
+ ld a, [wd002]
+ and $cf
+ or b
+ ld [wd002], a
+ ret
+
+Function48c4d: ; 48c4d (12:4c4d)
+ swap a
+ and $f0
+ push af
+ ld a, [hl]
+ and $f
+ ld [hl], a
+ pop af
+ or [hl]
+ ld [hl], a
+ ret
+
+Function48c5a: ; 48c5a (12:4c5a)
+ push af
+ ld a, [hl]
+ and $f0
+ ld [hl], a
+ pop af
+ or [hl]
+ ld [hl], a
+ ret
+
+Function48c63: ; 48c63
+ ld a, "@"
+ ld [de], a
+ ld a, c
+ cp $30
+ jr nc, .asm_48c8c
+ and a
+ jr z, .asm_48c8c
+ dec c
+ push de
+ ld h, d
+ ld l, e
+ ld a, "@"
+ ld b, 7
+.asm_48c76
+ ld [hli], a
+ dec b
+ jr nz, .asm_48c76
+ ld hl, Prefectures
+ ld a, c
+ call GetNthString
+.asm_48c81
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ cp "@"
+ jr nz, .asm_48c81
+ and a
+ pop de
+ ret
+
+.asm_48c8c
+ scf
+ ret
+; 48c8e
+
+Function48c8e: ; 48c8e
+; unreferenced
+ ld hl, $d02a
+ ld d, h
+ ld e, l
+ farcall Function48c63
+ hlcoord 10, 7
+ call PlaceString
+ call WaitBGMap
+ ret
+; 48ca3
+
+Function48ca3: ; 48ca3
+ push af
+ push bc
+ push de
+ push hl
+ ld b, 0
+ ld c, 0
+ ld d, 0
+.asm_48cad
+ cp 100
+ jr c, .asm_48cb6
+ sub 100
+ inc b
+ jr .asm_48cad
+
+.asm_48cb6
+ cp 10
+ jr c, .asm_48cbf
+ sub 10
+ inc c
+ jr .asm_48cb6
+
+.asm_48cbf
+ cp 1
+ jr c, .asm_48cc7
+ dec a
+ inc d
+ jr .asm_48cbf
+
+.asm_48cc7
+ ld a, b
+ call Mobile12_Bin2Dec
+ inc hl
+ ld a, c
+ call Mobile12_Bin2Dec
+ inc hl
+ ld a, d
+ call Mobile12_Bin2Dec
+ pop hl
+ pop de
+ pop bc
+ pop af
+ ret
+; 48cda
+
+Function48cda: ; 48cda (12:4cda)
+ ld h, d
+ ld l, e
+
+Function48cdc: ; 48cdc (12:4cdc)
+ push bc
+ push hl
+ call Function48cfd
+ pop hl
+ pop bc
+ ld de, AttrMap - TileMap
+ add hl, de
+ inc b
+ inc b
+ inc c
+ inc c
+ ld a, $0
+.asm_48ced
+ push bc
+ push hl
+.asm_48cef
+ ld [hli], a
+ dec c
+ jr nz, .asm_48cef
+ pop hl
+ ld de, $14
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .asm_48ced
+ ret
+
+Function48cfd: ; 48cfd (12:4cfd)
+ push hl
+ ld a, $4
+ ld [hli], a
+ inc a
+ call Function48d2a
+ inc a
+ ld [hl], a
+ pop hl
+ ld de, $14
+ add hl, de
+.asm_48d0c
+ push hl
+ ld a, $7
+ ld [hli], a
+ ld a, $7f
+ call Function48d2a
+ ld [hl], $8
+ pop hl
+ ld de, $14
+ add hl, de
+ dec b
+ jr nz, .asm_48d0c
+ ld a, $9
+ ld [hli], a
+ ld a, $a
+ call Function48d2a
+ ld [hl], $b
+ ret
+
+Function48d2a: ; 48d2a (12:4d2a)
+ ld d, c
+.asm_48d2b
+ ld [hli], a
+ dec d
+ jr nz, .asm_48d2b
+ ret
+
+Function48d30: ; 48d30 (12:4d30)
+ ld hl, wd475
+ call Function48d4a
+ ld hl, wd477
+ call Function48d4a
+ ret
+
+Function48d3d: ; 48d3d (12:4d3d)
+ ld hl, wd475
+ call Function48d94
+ ld hl, wd477
+ call Function48d94
+ ret
+
+Function48d4a: ; 48d4a (12:4d4a)
+ inc hl
+ ld a, [hl]
+ ld b, a
+ and $f
+ ld c, a
+ srl b
+ srl b
+ srl b
+ srl b
+ push bc
+ ld c, 10
+ ld a, b
+ call SimpleMultiply
+ pop bc
+ add c
+ ld [hld], a
+ xor a
+ ld [hMultiplicand + 0], a
+ ld [hMultiplicand + 1], a
+ ld a, [hl]
+ srl a
+ srl a
+ srl a
+ srl a
+ ld c, 10
+ call SimpleMultiply
+ ld b, a
+ ld a, [hli]
+ and $f
+ add b
+ ld [hMultiplicand + 2], a
+ ld a, 100
+ ld [hMultiplier], a
+ call Multiply
+ ld a, [hProduct + 2]
+ ld b, a
+ ld a, [hProduct + 3]
+ ld c, a
+ ld e, [hl]
+ add e
+ ld c, a
+ ld a, b
+ adc $0
+ ld b, a
+ ld a, c
+ ld [hld], a
+ ld [hl], b
+ ret
+
+Function48d94: ; 48d94 (12:4d94)
+ xor a
+ ld [hDividend + 0], a
+ ld [hDividend + 1], a
+ ld a, [hli]
+ ld [hDividend + 0], a
+ ld a, [hl]
+ ld [hDividend + 1], a
+ ld a, 100
+ ld [hDivisor], a
+ ld b, 2
+ call Divide
+ ld a, [hRemainder]
+ ld c, 10
+ call SimpleDivide
+ sla b
+ sla b
+ sla b
+ sla b
+ or b
+ ld [hld], a
+ ld a, [hQuotient + 2]
+ ld c, 10
+ call SimpleDivide
+ sla b
+ sla b
+ sla b
+ sla b
+ or b
+ ld [hl], a
+ ret
diff --git a/mobile/mobile_12_2.asm b/mobile/mobile_12_2.asm
new file mode 100755
index 000000000..ba663cf86
--- /dev/null
+++ b/mobile/mobile_12_2.asm
@@ -0,0 +1,936 @@
+MobileCheckOwnMonAnywhere: ; 4a843
+; Like CheckOwnMonAnywhere, but only check for species.
+; OT/ID don't matter.
+
+ ld a, [PartyCount]
+ and a
+ ret z
+
+ ld d, a
+ ld e, 0
+ ld hl, PartyMon1Species
+ ld bc, PartyMonOT
+.asm_4a851
+ call .CheckMatch
+ ret c
+ push bc
+ ld bc, PARTYMON_STRUCT_LENGTH
+ add hl, bc
+ pop bc
+ call .CopyName
+ dec d
+ jr nz, .asm_4a851
+ ld a, BANK(sBoxCount)
+ call GetSRAMBank
+ ld a, [sBoxCount]
+ and a
+ jr z, .asm_4a888
+ ld d, a
+ ld hl, sBoxMon1Species
+ ld bc, sBoxMonOT
+.asm_4a873
+ call .CheckMatch
+ jr nc, .asm_4a87c
+ call CloseSRAM
+ ret
+
+.asm_4a87c
+ push bc
+ ld bc, BOXMON_STRUCT_LENGTH
+ add hl, bc
+ pop bc
+ call .CopyName
+ dec d
+ jr nz, .asm_4a873
+
+.asm_4a888
+ call CloseSRAM
+ ld c, 0
+.asm_4a88d
+ ld a, [wCurBox]
+ and $f
+ cp c
+ jr z, .asm_4a8d1
+ ld hl, .BoxAddrs
+ ld b, 0
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ call GetSRAMBank
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hl]
+ and a
+ jr z, .asm_4a8d1
+ push bc
+ push hl
+ ld de, sBoxMons - sBoxCount
+ add hl, de
+ ld d, h
+ ld e, l
+ pop hl
+ push de
+ ld de, sBoxMonOT - sBoxCount
+ add hl, de
+ ld b, h
+ ld c, l
+ pop hl
+ ld d, a
+.asm_4a8ba
+ call .CheckMatch
+ jr nc, .asm_4a8c4
+ pop bc
+ call CloseSRAM
+ ret
+
+.asm_4a8c4
+ push bc
+ ld bc, BOXMON_STRUCT_LENGTH
+ add hl, bc
+ pop bc
+ call .CopyName
+ dec d
+ jr nz, .asm_4a8ba
+ pop bc
+
+.asm_4a8d1
+ inc c
+ ld a, c
+ cp NUM_BOXES
+ jr c, .asm_4a88d
+ call CloseSRAM
+ and a
+ ret
+; 4a8dc
+
+.CheckMatch: ; 4a8dc
+ push bc
+ push hl
+ push de
+ ld d, b
+ ld e, c
+ ld a, [ScriptVar]
+ ld b, [hl]
+ cp b
+ jr nz, .no_match
+ jr .match
+
+.no_match
+ pop de
+ pop hl
+ pop bc
+ and a
+ ret
+
+.match
+ pop de
+ pop hl
+ pop bc
+ scf
+ ret
+; 4a8f4
+
+.BoxAddrs: ; 4a8f4
+ dba sBox1
+ dba sBox2
+ dba sBox3
+ dba sBox4
+ dba sBox5
+ dba sBox6
+ dba sBox7
+ dba sBox8
+ dba sBox9
+ dba sBox10
+ dba sBox11
+ dba sBox12
+ dba sBox13
+ dba sBox14
+; 4a91e
+
+.CopyName: ; 4a91e
+ push hl
+ ld hl, NAME_LENGTH
+ add hl, bc
+ ld b, h
+ ld c, l
+ pop hl
+ ret
+; 4a927
+
+FindItemInPCOrBag: ; 4a927
+ ld a, [ScriptVar]
+ ld [CurItem], a
+ ld hl, PCItems
+ call CheckItem
+ jr c, .found
+
+ ld a, [ScriptVar]
+ ld [CurItem], a
+ ld hl, NumItems
+ call CheckItem
+ jr c, .found
+
+ xor a
+ ld [ScriptVar], a
+ ret
+
+.found
+ ld a, 1
+ ld [ScriptVar], a
+ ret
+; 4a94e
+
+Function4a94e: ; 4a94e
+ call FadeToMenu
+ ld a, -1
+ ld hl, wd002
+ ld bc, 3
+ call ByteFill
+ xor a
+ ld [wd018], a
+ ld [wd019], a
+ ld b, SCGB_PACKPALS
+ call GetSGBLayout
+ call SetPalettes
+ call Function4aa22
+ jr c, .asm_4a985
+ jr z, .asm_4a9a1
+ jr .asm_4a97b
+
+.asm_4a974
+ call Function4aa25
+ jr c, .asm_4a985
+ jr z, .asm_4a9a1
+
+.asm_4a97b
+ call Function4ac58
+ ld hl, wd019
+ res 1, [hl]
+ jr .asm_4a974
+
+.asm_4a985
+ ld a, [wd018]
+ and a
+ jr nz, .asm_4a990
+ call Function4aba8
+ jr c, .asm_4a974
+
+.asm_4a990
+ call CloseSubmenu
+ ld hl, wd002
+ ld a, -1
+ ld bc, 3
+ call ByteFill
+ scf
+ jr .asm_4a9af
+
+.asm_4a9a1
+ call Function4a9c3
+ jr c, .asm_4a9b0
+ call Function4a9d7
+ jr c, .asm_4a974
+ call CloseSubmenu
+ and a
+
+.asm_4a9af
+ ret
+
+.asm_4a9b0
+ ld de, SFX_WRONG
+ call PlaySFX
+ ld hl, UnknownText_0x4a9be
+ call PrintText
+ jr .asm_4a974
+; 4a9be
+
+UnknownText_0x4a9be: ; 0x4a9be
+ ; Pick three #MON for battle.
+ text_jump UnknownText_0x1c51d7
+ db "@"
+; 0x4a9c3
+
+Function4a9c3: ; 4a9c3
+ ld hl, wd002
+ ld a, $ff
+ cp [hl]
+ jr z, .asm_4a9d5
+ inc hl
+ cp [hl]
+ jr z, .asm_4a9d5
+ inc hl
+ cp [hl]
+ jr z, .asm_4a9d5
+ and a
+ ret
+
+.asm_4a9d5
+ scf
+ ret
+; 4a9d7
+
+Function4a9d7: ; 4a9d7
+ ld a, [wd002]
+ ld hl, PartyMonNicknames
+ call GetNick
+ ld h, d
+ ld l, e
+ ld de, EndFlypoint
+ ld bc, 6
+ call CopyBytes
+ ld a, [wd003]
+ ld hl, PartyMonNicknames
+ call GetNick
+ ld h, d
+ ld l, e
+ ld de, wd00c
+ ld bc, 6
+ call CopyBytes
+ ld a, [wd004]
+ ld hl, PartyMonNicknames
+ call GetNick
+ ld h, d
+ ld l, e
+ ld de, wd012
+ ld bc, 6
+ call CopyBytes
+ ld hl, UnknownText_0x4aa1d
+ call PrintText
+ call YesNoBox
+ ret
+; 4aa1d
+
+UnknownText_0x4aa1d: ; 0x4aa1d
+ ; , @ and @ . Use these three?
+ text_jump UnknownText_0x1c51f4
+ db "@"
+; 0x4aa22
+
+Function4aa22: ; 4aa22
+ call ClearBGPalettes
+
+Function4aa25: ; 4aa25
+ farcall LoadPartyMenuGFX
+ farcall InitPartyMenuWithCancel
+ call Function4aad3
+
+Function4aa34: ; 4aa34
+ ld a, PARTYMENUACTION_MOBILE
+ ld [PartyMenuActionText], a
+ farcall WritePartyMenuTilemap
+ xor a
+ ld [PartyMenuActionText], a
+ farcall PrintPartyMenuText
+ call Function4aab6
+ call WaitBGMap
+ call SetPalettes
+ call DelayFrame
+ call Function4ab1a
+ jr z, .asm_4aa66
+ push af
+ call Function4aafb
+ jr c, .asm_4aa67
+ call Function4ab06
+ jr c, .asm_4aa67
+ pop af
+
+.asm_4aa66
+ ret
+
+.asm_4aa67
+ ld hl, wd019
+ set 1, [hl]
+ pop af
+ ret
+; 4aa6e
+
+Function4aa6e: ; 4aa6e
+ pop af
+ ld de, SFX_WRONG
+ call PlaySFX
+ call WaitSFX
+ jr Function4aa34
+; 4aa7a
+
+Function4aa7a: ; 4aa7a
+ ld hl, wd002
+ ld d, $3
+.loop
+ ld e, PARTY_LENGTH
+ ld a, [hli]
+ push de
+ push hl
+ cp -1
+ jr z, .done
+ ld hl, wSpriteAnimationStructs
+ inc a
+ ld d, a
+.inner_loop
+ ld a, [hl]
+ and a
+ jr z, .next
+ cp d
+ jr z, .same_as_d
+ jr .next
+
+ ld a, $3
+ jr .proceed
+
+.same_as_d
+ ld a, $2
+
+.proceed
+ push hl
+ ld c, l
+ ld b, h
+ ld hl, $2
+ add hl, bc
+ ld [hl], a
+ pop hl
+
+.next
+ ld bc, $10
+ add hl, bc
+ dec e
+ jr nz, .inner_loop
+ pop hl
+ pop de
+ dec d
+ jr nz, .loop
+ jr .finished
+
+.done
+ pop hl
+ pop de
+
+.finished
+ ret
+; 4aab6
+
+Function4aab6: ; 4aab6
+ ld hl, wd002
+ ld d, $3
+.loop
+ ld a, [hli]
+ cp -1
+ jr z, .done
+ push de
+ push hl
+ hlcoord 0, 1
+ ld bc, $28
+ call AddNTimes
+ ld [hl], $ec
+ pop hl
+ pop de
+ dec d
+ jr nz, .loop
+
+.done
+ ret
+; 4aad3
+
+Function4aad3: ; 4aad3
+ ld hl, PartyCount
+ ld a, [hli]
+ and a
+ ret z ; Nothing in your party
+
+ ld c, a
+ xor a
+ ld [hObjectStructIndexBuffer], a
+.loop
+ push bc
+ push hl
+ ld e, 0
+ farcall LoadMenuMonIcon
+ ld a, [hObjectStructIndexBuffer]
+ inc a
+ ld [hObjectStructIndexBuffer], a
+ pop hl
+ pop bc
+ dec c
+ jr nz, .loop
+
+ call Function4aa7a
+ farcall PlaySpriteAnimations
+ ret
+; 4aafb
+
+Function4aafb: ; 4aafb
+ ld a, [CurPartySpecies]
+ cp EGG
+ jr z, .egg
+ and a
+ ret
+
+.egg
+ scf
+ ret
+; 4ab06
+
+Function4ab06: ; 4ab06
+ ld a, [CurPartyMon]
+ ld bc, PARTYMON_STRUCT_LENGTH
+ ld hl, PartyMon1HP
+ call AddNTimes
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ or b
+ jr nz, .NotFainted
+ scf
+
+.NotFainted:
+ ret
+; 4ab1a
+
+Function4ab1a: ; 4ab1a
+.asm_4ab1a
+ ld a, $fb
+ ld [wMenuJoypadFilter], a
+ ld a, $26
+ ld [w2DMenuCursorOffsets], a
+ ld a, $2
+ ld [w2DMenuNumCols], a
+ call Function4adf7
+ call StaticMenuJoypad
+ call Function4abc3
+ jr c, .asm_4ab1a
+ push af
+ call Function4ab99
+ call nc, PlaceHollowCursor
+ pop af
+ bit 1, a
+ jr nz, .asm_4ab6d
+ ld a, [PartyCount]
+ inc a
+ ld b, a
+ ld a, [wMenuCursorY]
+ ld [wPartyMenuCursor], a
+ cp b
+ jr z, .asm_4ab7e
+ ld a, [wMenuCursorY]
+ dec a
+ ld [CurPartyMon], a
+ ld c, a
+ ld b, $0
+ ld hl, PartySpecies
+ add hl, bc
+ ld a, [hl]
+ ld [CurPartySpecies], a
+ ld de, SFX_READ_TEXT_2
+ call PlaySFX
+ call WaitSFX
+ ld a, $1
+ and a
+ ret
+
+.asm_4ab6d
+ ld a, [wMenuCursorY]
+ ld [wPartyMenuCursor], a
+.asm_4ab73
+ ld de, SFX_READ_TEXT_2
+ call PlaySFX
+ call WaitSFX
+ scf
+ ret
+
+.asm_4ab7e
+ ld a, $1
+ ld [wd018], a
+ ld a, [wMenuCursorX]
+ cp $2
+ jr z, .asm_4ab73
+ ld de, SFX_READ_TEXT_2
+ call PlaySFX
+ call WaitSFX
+ xor a
+ ld [wd018], a
+ and a
+ ret
+; 4ab99
+
+Function4ab99: ; 4ab99
+ bit 1, a
+ jr z, .asm_4aba6
+ ld a, [wd002]
+ cp $ff
+ jr z, .asm_4aba6
+ scf
+ ret
+
+.asm_4aba6
+ and a
+ ret
+; 4aba8
+
+Function4aba8: ; 4aba8
+ ld hl, wd004
+ ld a, [hl]
+ cp $ff
+ jr nz, .asm_4abbe
+ dec hl
+ ld a, [hl]
+ cp $ff
+ jr nz, .asm_4abbe
+ dec hl
+ ld a, [hl]
+ cp $ff
+ jr nz, .asm_4abbe
+ and a
+ ret
+
+.asm_4abbe
+ ld a, $ff
+ ld [hl], a
+ scf
+ ret
+; 4abc3
+
+Function4abc3: ; 4abc3
+ bit 3, a
+ jr z, .asm_4abd5
+ ld a, [PartyCount]
+ inc a
+ ld [wMenuCursorY], a
+ ld a, $1
+ ld [wMenuCursorX], a
+ jr .asm_4ac29
+
+.asm_4abd5
+ bit 6, a
+ jr z, .asm_4abeb
+ ld a, [wMenuCursorY]
+ ld [wMenuCursorY], a
+ and a
+ jr nz, .asm_4ac29
+ ld a, [PartyCount]
+ inc a
+ ld [wMenuCursorY], a
+ jr .asm_4ac29
+
+.asm_4abeb
+ bit 7, a
+ jr z, .asm_4ac08
+ ld a, [wMenuCursorY]
+ ld [wMenuCursorY], a
+ ld a, [PartyCount]
+ inc a
+ inc a
+ ld b, a
+ ld a, [wMenuCursorY]
+ cp b
+ jr nz, .asm_4ac29
+ ld a, $1
+ ld [wMenuCursorY], a
+ jr .asm_4ac29
+
+.asm_4ac08
+ bit 4, a
+ jr nz, .asm_4ac10
+ bit 5, a
+ jr z, .asm_4ac56
+
+.asm_4ac10
+ ld a, [wMenuCursorY]
+ ld b, a
+ ld a, [PartyCount]
+ inc a
+ cp b
+ jr nz, .asm_4ac29
+ ld a, [wMenuCursorX]
+ cp $1
+ jr z, .asm_4ac26
+ ld a, $1
+ jr .asm_4ac29
+
+.asm_4ac26
+ ld [wMenuCursorX], a
+
+.asm_4ac29
+ hlcoord 0, 1
+ lb bc, 13, 1
+ call ClearBox
+ call Function4aab6
+ ld a, [PartyCount]
+ hlcoord 6, 1
+.asm_4ac3b
+ ld bc, $28
+ add hl, bc
+ dec a
+ jr nz, .asm_4ac3b
+ ld [hl], $7f
+ ld a, [wMenuCursorY]
+ ld b, a
+ ld a, [PartyCount]
+ inc a
+ cp b
+ jr z, .asm_4ac54
+ ld a, $1
+ ld [wMenuCursorX], a
+
+.asm_4ac54
+ scf
+ ret
+
+.asm_4ac56
+ and a
+ ret
+; 4ac58
+
+Function4ac58: ; 4ac58
+ lb bc, 2, 18
+ hlcoord 1, 15
+ call ClearBox
+ farcall FreezeMonIcons
+ ld hl, MenuDataHeader_0x4aca2
+ call LoadMenuDataHeader
+ ld hl, wd019
+ bit 1, [hl]
+ jr z, .asm_4ac89
+ hlcoord 11, 13
+ ld b, $3
+ ld c, $7
+ call TextBox
+ hlcoord 13, 14
+ ld de, String_4ada7
+ call PlaceString
+ jr .asm_4ac96
+
+.asm_4ac89
+ hlcoord 11, 9
+ ld b, $7
+ ld c, $7
+ call TextBox
+ call Function4ad68
+
+.asm_4ac96
+ ld a, $1
+ ld [hBGMapMode], a
+ call Function4acaa
+ call ExitMenu
+ and a
+ ret
+; 4aca2
+
+MenuDataHeader_0x4aca2: ; 0x4aca2
+ db $40 ; flags
+ db 09, 11 ; start coords
+ db 17, 19 ; end coords
+ dw NULL
+ db 1 ; default option
+; 0x4acaa
+
+Function4acaa: ; 4acaa
+.asm_4acaa
+ ld a, $a0
+ ld [wMenuData2Flags], a
+ ld a, [wd019]
+ bit 1, a
+ jr z, .asm_4acc2
+ ld a, $2
+ ld [wMenuData2Items], a
+ ld a, $c
+ ld [wMenuBorderTopCoord], a
+ jr .asm_4accc
+
+.asm_4acc2
+ ld a, $4
+ ld [wMenuData2Items], a
+ ld a, $8
+ ld [wMenuBorderTopCoord], a
+
+.asm_4accc
+ ld a, $b
+ ld [wMenuBorderLeftCoord], a
+ ld a, $1
+ ld [wMenuCursorBuffer], a
+ call InitVerticalMenuCursor
+ ld hl, w2DMenuFlags1
+ set 6, [hl]
+ call StaticMenuJoypad
+ ld de, SFX_READ_TEXT_2
+ call PlaySFX
+ ld a, [hJoyPressed]
+ bit 0, a
+ jr nz, .asm_4acf4
+ bit 1, a
+ jr nz, .asm_4acf3
+ jr .asm_4acaa
+
+.asm_4acf3
+ ret
+
+.asm_4acf4
+ ld a, [wd019]
+ bit 1, a
+ jr nz, .asm_4ad0e
+ ld a, [wMenuCursorY]
+ cp $1
+ jr z, Function4ad17
+ cp $2
+ jp z, Function4ad56
+ cp $3
+ jp z, Function4ad60
+ jr .asm_4acf3
+
+.asm_4ad0e
+ ld a, [wMenuCursorY]
+ cp $1
+ jr z, Function4ad56
+ jr .asm_4acf3
+
+Function4ad17: ; 4ad17
+ call Function4adb2
+ jr z, .asm_4ad4a
+ ld hl, wd002
+ ld a, $ff
+ cp [hl]
+ jr z, .asm_4ad39
+ inc hl
+ cp [hl]
+ jr z, .asm_4ad39
+ inc hl
+ cp [hl]
+ jr z, .asm_4ad39
+ ld de, SFX_WRONG
+ call WaitPlaySFX
+ ld hl, UnknownText_0x4ad51
+ call PrintText
+ ret
+
+.asm_4ad39
+ ld a, [CurPartyMon]
+ ld [hl], a
+ call Function4a9c3
+ ret c
+ ld a, [wd019]
+ set 0, a
+ ld [wd019], a
+ ret
+
+.asm_4ad4a
+ ld a, $ff
+ ld [hl], a
+ call Function4adc2
+ ret
+
+UnknownText_0x4ad51: ; 0x4ad51
+ ; Only three #MON may enter.
+ text_jump UnknownText_0x1c521c
+ db "@"
+; 0x4ad56
+
+Function4ad56: ; 4ad56
+ farcall OpenPartyStats
+ call WaitBGMap2
+ ret
+; 4ad60
+
+Function4ad60: ; 4ad60
+ farcall ManagePokemonMoves
+ ret
+; 4ad67
+
+Function4ad67: ; 4ad67
+ ret
+; 4ad68
+
+Function4ad68: ; 4ad68
+ hlcoord 13, 12
+ ld de, String_4ad88
+ call PlaceString
+ call Function4adb2
+ jr c, .asm_4ad7e
+ hlcoord 13, 10
+ ld de, String_4ada0
+ jr .asm_4ad84
+
+.asm_4ad7e
+ hlcoord 13, 10
+ ld de, String_4ad9a
+
+.asm_4ad84
+ call PlaceString
+ ret
+; 4ad88
+
+String_4ad88: ; 4ad88
+ db "つよさをみる"
+ next "つかえるわざ"
+ next "もどる@"
+; 4ad9a
+
+String_4ad9a: ; 4ad9a
+ db "さんかする@"
+; 4ada0
+
+String_4ada0: ; 4ada0
+ db "さんかしない@"
+; 4ada7
+
+String_4ada7: ; 4ada7
+ db "つよさをみる"
+ next "もどる@" ; BACK
+; 4adb2
+
+Function4adb2: ; 4adb2
+ ld hl, wd002
+ ld a, [CurPartyMon]
+ cp [hl]
+ ret z
+ inc hl
+ cp [hl]
+ ret z
+ inc hl
+ cp [hl]
+ ret z
+ scf
+ ret
+; 4adc2
+
+Function4adc2: ; 4adc2
+ ld a, [wd002]
+ cp $ff
+ jr nz, .skip
+ ld a, [wd003]
+ cp $ff
+ jr nz, .skip2
+ ld a, [wd004]
+ ld [wd002], a
+ ld a, $ff
+ ld [wd004], a
+ jr .skip
+
+.skip2
+ ld [wd002], a
+ ld a, $ff
+ ld [wd003], a
+
+.skip
+ ld a, [wd003]
+ cp $ff
+ ret nz
+ ld b, a
+ ld a, [wd004]
+ ld [wd003], a
+ ld a, b
+ ld [wd004], a
+ ret
+; 4adf7
+
+Function4adf7: ; 4adf7
+ ld a, [wd019]
+ bit 0, a
+ ret z
+ ld a, [PartyCount]
+ inc a
+ ld [wMenuCursorY], a
+ ld a, $1
+ ld [wMenuCursorX], a
+ ld a, [wd019]
+ res 0, a
+ ld [wd019], a
+ ret
+; 4ae12
diff --git a/mobile/mobile_22.asm b/mobile/mobile_22.asm
new file mode 100644
index 000000000..fa58b7a05
--- /dev/null
+++ b/mobile/mobile_22.asm
@@ -0,0 +1,4450 @@
+String_89116:
+ db "-----@"
+
+String_8911c: ; 8911c
+ db "でんわばんごうが ただしく" ; Phone number is not
+ next "はいって いません!@" ; entered correctly!
+; 89135
+
+String_89135: ; 89135
+ db "データが かわって いますが" ; The data has changed.
+ next "かきかえないで やめますか?@" ; Quit anyway?
+; 89153
+
+String_89153: ; 89153
+ db "メッセージは ありません@" ; No message
+; 89160
+
+OpenSRAMBank4: ; 89160
+ push af
+ ld a, $4
+ call GetSRAMBank
+ pop af
+ ret
+; 89168
+
+
+Function89168: ; 89168 (22:5168)
+ ld hl, GameTimerPause
+ set 7, [hl]
+ ret
+
+Function8916e: ; 8916e (22:516e)
+ ld hl, GameTimerPause
+ res 7, [hl]
+ ret
+
+Function89174: ; 89174 (22:5174)
+ ld hl, GameTimerPause
+ bit 7, [hl]
+ ret
+
+Function8917a: ; 8917a (22:517a)
+ ld hl, wd002
+ ld bc, $32
+ xor a
+ call ByteFill
+ ret
+
+Function89185: ; 89185 (22:5185)
+; strcmp(hl, de, c)
+; Compares c bytes starting at de and hl and incrementing together until a mismatch is found.
+; Preserves hl and de.
+ push de
+ push hl
+.loop
+ ld a, [de]
+ inc de
+ cp [hl]
+ jr nz, .done
+ inc hl
+ dec c
+ jr nz, .loop
+.done
+ pop hl
+ pop de
+ ret
+
+Function89193: ; 89193
+; copy(hl, de, 4)
+; Copies c bytes from hl to de.
+; Preserves hl and de.
+ push de
+ push hl
+.loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .loop
+ pop hl
+ pop de
+ ret
+; 8919e
+
+
+Function8919e: ; 8919e (22:519e)
+; Searches for the c'th string starting at de. Returns the pointer in de.
+ ld a, c
+ and a
+ ret z
+.loop
+ ld a, [de]
+ inc de
+ cp "@"
+ jr nz, .loop
+ dec c
+ jr nz, .loop
+ ret
+
+Function891ab: ; 891ab
+ call Mobile22_SetBGMapMode1
+ farcall ReloadMapPart
+ call Mobile22_SetBGMapMode0
+ ret
+; 891b8
+
+Function891b8: ; 891b8
+ call Mobile22_SetBGMapMode0
+ hlcoord 0, 0
+ ld a, " "
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call ByteFill
+ call DelayFrame
+ ret
+; 891ca
+
+
+Function891ca: ; 891ca (22:51ca)
+ push bc
+ call Function891b8
+ call WaitBGMap
+ pop bc
+ ret
+
+Function891d3: ; 891d3 (22:51d3)
+ push bc
+ call Function891ca
+ ld c, $10
+ call DelayFrames
+ pop bc
+ ret
+
+Function891de: ; 891de
+ call Mobile22_SetBGMapMode0
+ call ClearPalettes
+ hlcoord 0, 0, AttrMap
+ ld a, $7
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call ByteFill
+ hlcoord 0, 0
+ ld a, " "
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call ByteFill
+ call Function891ab
+ ret
+; 891fe
+
+Function891fe: ; 891fe
+ push bc
+ call Function891de
+ ld c, $10
+ call DelayFrames
+ pop bc
+ ret
+; 89209
+
+Function89209: ; 89209
+ ld a, 1
+ ld [wSpriteUpdatesEnabled], a
+ ret
+; 8920f
+
+Function8920f: ; 8920f
+ ld a, 0
+ ld [wSpriteUpdatesEnabled], a
+ ret
+; 89215
+
+Function89215: ; 89215
+ push hl
+ push bc
+ ld bc, AttrMap - TileMap
+ add hl, bc
+ ld [hl], a
+ pop bc
+ pop hl
+ ret
+; 8921f
+
+
+Function8921f: ; 8921f (22:521f)
+ push de
+ ld de, SCREEN_WIDTH
+ add hl, de
+ inc hl
+ ld a, $7f
+.loop
+ push bc
+ push hl
+.asm_89229
+ ld [hli], a
+ dec c
+ jr nz, .asm_89229
+ pop hl
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .loop
+ pop de
+ ret
+
+Mobile22_ButtonSound: ; 89235 (22:5235)
+ call JoyWaitAorB
+ call PlayClickSFX
+ ret
+
+Mobile22_SetBGMapMode0: ; 8923c
+ xor a
+ ld [hBGMapMode], a
+ ret
+; 89240
+
+Mobile22_SetBGMapMode1: ; 89240
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+; 89245
+
+
+Function89245: ; 89245 (22:5245)
+ farcall TryLoadSaveFile
+ ret c
+ farcall _LoadData
+ and a
+ ret
+
+Function89254: ; 89254 (22:5254)
+ ld bc, $d07
+ jr Function89261
+
+Function89259: ; 89259
+ ld bc, $0e07
+ jr Function89261
+
+Function8925e: ; 8925e
+ ld bc, $0e0c
+
+Function89261: ; 89261
+ push af
+ push bc
+ ld hl, MenuDataHeader_0x892a3
+ call CopyMenuDataHeader
+ pop bc
+ ld hl, wMenuBorderTopCoord
+ ld a, c
+ ld [hli], a
+ ld a, b
+ ld [hli], a
+ ld a, c
+ add $4
+ ld [hli], a
+ ld a, b
+ add $5
+ ld [hl], a
+ pop af
+ ld [wMenuCursorBuffer], a
+ call PushWindow
+ call Mobile22_SetBGMapMode0
+ call Function89209
+ call VerticalMenu
+ push af
+ ld c, $a
+ call DelayFrames
+ call CloseWindow
+ call Function8920f
+ pop af
+ jr c, .done
+ ld a, [wMenuCursorY]
+ cp $2
+ jr z, .done
+ and a
+ ret
+
+.done
+ scf
+ ret
+; 892a3
+
+MenuDataHeader_0x892a3: ; 0x892a3
+ db $40 ; flags
+ db 05, 10 ; start coords
+ db 09, 15 ; end coords
+ dw MenuData2_0x892ab
+ db 1 ; default option
+; 0x892ab
+
+MenuData2_0x892ab: ; 0x892ab
+ db $c0 ; flags
+ db 2 ; items
+ db "はい@"
+ db "いいえ@"
+; 0x892b4
+
+Function892b4: ; 892b4 (22:52b4)
+ call Function8931b
+
+Function892b7: ; 892b7
+ ld d, b
+ ld e, c
+ ld hl, 0
+ add hl, bc
+ ld a, "@"
+ ld bc, 6
+ call ByteFill
+ ld b, d
+ ld c, e
+ ld hl, 6
+ add hl, bc
+ ld a, "@"
+ ld bc, 6
+ call ByteFill
+ ld b, d
+ ld c, e
+ ld hl, 12
+ add hl, bc
+ xor a
+ ld [hli], a
+ ld [hl], a
+ ld hl, 14
+ add hl, bc
+ ld [hli], a
+ ld [hl], a
+ ld hl, 16
+ add hl, bc
+ ld [hl], a
+ ld hl, 17
+ add hl, bc
+ ld a, -1
+ ld bc, 8
+ call ByteFill
+ ld b, d
+ ld c, e
+ ld e, 6
+ ld hl, 25
+ add hl, bc
+.loop
+ ld a, -1
+ ld [hli], a
+ ld a, -1
+ ld [hli], a
+ dec e
+ jr nz, .loop
+ ret
+; 89305
+
+
+Function89305: ; 89305 (22:5305)
+ xor a
+ ld [MenuSelection], a
+ ld c, 40
+.loop
+ ld a, [MenuSelection]
+ inc a
+ ld [MenuSelection], a
+ push bc
+ call Function892b4
+ pop bc
+ dec c
+ jr nz, .loop
+ ret
+
+Function8931b: ; 8931b
+ push hl
+ ld hl, $a03b ; 4:a03b
+ ld a, [MenuSelection]
+ dec a
+ ld bc, 37
+ call AddNTimes
+ ld b, h
+ ld c, l
+ pop hl
+ ret
+; 8932d
+
+Function8932d: ; 8932d
+ ld hl, 0
+ add hl, bc
+
+Function89331: ; 89331
+; Scans up to 5 characters starting at hl, looking for a nonspace character up to the next terminator.
+; Sets carry if it does not find a nonspace character.
+; Returns the location of the following character in hl.
+ push bc
+ ld c, NAME_LENGTH_JAPANESE - 1
+.loop
+ ld a, [hli]
+ cp "@"
+ jr z, .terminator
+ cp " "
+ jr nz, .nonspace
+ dec c
+ jr nz, .loop
+
+.terminator
+ scf
+ jr .done
+
+.nonspace
+ and a
+
+.done
+ pop bc
+ ret
+; 89346
+
+
+Function89346: ; 89346 (22:5346)
+ ld h, b
+ ld l, c
+ jr _incave
+
+Function8934a: ; 8934a
+ ld hl, NAME_LENGTH_JAPANESE
+ add hl, bc
+_incave:
+; Scans up to 5 characters starting at hl, looking for a nonspace character up to the next terminator. Sets carry if it does not find a nonspace character. Returns the location of the following character in hl.
+ push bc
+ ld c, NAME_LENGTH_JAPANESE - 1
+.loop
+ ld a, [hli]
+ cp "@"
+ jr z, .terminator
+ cp " "
+ jr nz, .nonspace
+ dec c
+ jr nz, .loop
+
+.terminator
+ scf
+ jr .done
+
+.nonspace
+ and a
+
+.done
+ pop bc
+ ret
+; 89363
+
+Function89363: ; 89363
+; Scans six byte pairs starting at bc to find $ff. Sets carry if it does not find a $ff. Returns the location of the byte after the first $ff found in hl.
+ ld h, b
+ ld l, c
+ jr ._incave
+
+ ld hl, 25
+ add hl, bc
+
+._incave
+ push de
+ ld e, NAME_LENGTH_JAPANESE
+.loop
+ ld a, [hli]
+ cp -1
+ jr nz, .ok
+ ld a, [hli]
+ cp -1
+ jr nz, .ok
+ dec e
+ jr nz, .loop
+ scf
+ jr .done
+
+.ok
+ and a
+
+.done
+ pop de
+ ret
+; 89381
+
+Function89381: ; 89381
+ push bc
+ push de
+ call Function89b45
+ jr c, .ok
+ push hl
+ ld a, -1
+ ld bc, 8
+ call ByteFill
+ pop hl
+
+.ok
+ pop de
+ ld c, 8
+ call Function89193
+ pop bc
+ ret
+; 8939a
+
+Function8939a: ; 8939a
+ push bc
+ ld hl, 0
+ add hl, bc
+ ld de, wd002
+ ld c, 6
+ call Function89193
+ pop bc
+ ld hl, 17
+ add hl, bc
+ ld de, wd008
+ call Function89381
+ ret
+; 893b3
+
+
+Function893b3: ; 893b3 (22:53b3)
+ call DisableLCD
+ call ClearSprites
+ call LoadStandardFont
+ call LoadFontsExtra
+ call Function893ef
+ call Function8942b
+ call Function89455
+ call EnableLCD
+ ret
+
+Function893cc: ; 893cc
+ call DisableLCD
+ call ClearSprites
+ call LoadStandardFont
+ call LoadFontsExtra
+ call Function893ef
+ call Function89464
+ call EnableLCD
+ ret
+; 893e2
+
+
+Function893e2: ; 893e2 (22:53e2)
+ call Function89b1e
+ call Function893b3
+ call Function8a5b6
+ call Function8949c
+ ret
+
+Function893ef: ; 893ef
+ ld de, VTiles0
+ ld hl, GFX_8940b
+ ld bc, $20
+ ld a, BANK(GFX_8940b)
+ call FarCopyBytes
+ ret
+; 893fe
+
+Function893fe: ; 893fe
+ call DisableLCD
+ call Function893ef
+ call EnableLCD
+ call DelayFrame
+ ret
+; 8940b
+
+GFX_8940b: ; 8940b
+INCBIN "gfx/unknown/08940b.2bpp"
+; 8942b
+
+Function8942b: ; 8942b (22:542b)
+ ld de, VTiles0 tile $02
+ ld hl, MobileAdapterGFX + $7d0
+ ld bc, $80
+ ld a, BANK(MobileAdapterGFX)
+ call FarCopyBytes
+ ld de, VTiles0 tile $0a
+ ld hl, MobileAdapterGFX + $c60
+ ld bc, $40
+ ld a, BANK(MobileAdapterGFX)
+ call FarCopyBytes
+ ret
+
+Function89448: ; 89448 (22:5448)
+; Clears the Sprites array
+ push af
+ ld hl, Sprites
+ ld d, $10 * 6
+ xor a
+.loop
+ ld [hli], a
+ dec d
+ jr nz, .loop
+ pop af
+ ret
+
+Function89455: ; 89455 (22:5455)
+ ld hl, MobileAdapterGFX + $7d0
+ ld de, VTiles2 tile $0c
+ ld bc, $490
+ ld a, BANK(MobileAdapterGFX)
+ call FarCopyBytes
+ ret
+
+Function89464: ; 89464
+ ld hl, MobileAdapterGFX
+ ld de, VTiles2
+ ld bc, $200
+ ld a, BANK(MobileAdapterGFX)
+ call FarCopyBytes
+ ld hl, MobileAdapterGFX + $660
+ ld de, VTiles2 tile $20
+ ld bc, $170
+ ld a, BANK(MobileAdapterGFX)
+ call FarCopyBytes
+ ret
+; 89481
+
+Function89481: ; 89481
+ ld d, 2
+ call Function8934a
+ ret c
+ ld d, 0
+ ld hl, 16
+ add hl, bc
+ bit 0, [hl]
+ ret z
+ inc d
+ ret
+; 89492
+
+
+Function89492: ; 89492 (22:5492)
+ ld d, 0
+ ld a, [PlayerGender]
+ bit 0, a
+ ret z
+ inc d
+ ret
+
+Function8949c: ; 8949c
+ ld a, [rSVBK]
+ push af
+ ld a, 5
+ ld [rSVBK], a
+ ld hl, Palette_894b3
+ ld de, UnknBGPals + 8 * 7
+ ld bc, 8
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ret
+; 894b3
+
+Palette_894b3: ; 894b3
+ RGB 31, 31, 31
+ RGB 31, 31, 31
+ RGB 31, 31, 31
+ RGB 00, 00, 00
+; 894bb
+
+Function894bb: ; 894bb
+ call Function894dc
+ push bc
+ call Function8956f
+ call Function8949c
+ call Function8a60d
+ pop bc
+ ret
+; 894ca
+
+
+Function894ca: ; 894ca (22:54ca)
+ push bc
+ call Function894dc
+ call Function895c7
+ call Function8949c
+ call Function8a60d
+ call SetPalettes
+ pop bc
+ ret
+
+Function894dc: ; 894dc
+ push bc
+ ld a, [rSVBK]
+ push af
+ ld a, 5
+ ld [rSVBK], a
+
+ ld c, d
+ ld b, 0
+ ld hl, .PalettePointers
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, UnknBGPals
+ ld bc, 3 palettes
+ call CopyBytes
+ ld hl, .Pals345
+ ld de, UnknBGPals + 3 palettes
+ ld bc, 3 palettes
+ call CopyBytes
+
+ pop af
+ ld [rSVBK], a
+ pop bc
+ ret
+; 89509
+
+.PalettePointers: ; 89509
+ dw .Pals012a
+ dw .Pals012b
+ dw .Pals012c
+; 8950f
+
+.Pals012a: ; 8950f
+ RGB 31, 31, 31
+ RGB 10, 17, 13
+ RGB 10, 08, 22
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 16, 20, 31
+ RGB 10, 08, 22
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 16, 20, 31
+ RGB 10, 17, 13
+ RGB 00, 00, 00
+
+.Pals012b: ; 89527
+ RGB 31, 31, 31
+ RGB 30, 22, 11
+ RGB 31, 08, 15
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 16, 20, 31
+ RGB 31, 08, 15
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 16, 20, 31
+ RGB 30, 22, 11
+ RGB 00, 00, 00
+
+.Pals012c: ; 8953f
+ RGB 31, 31, 31
+ RGB 15, 20, 26
+ RGB 25, 07, 20
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 16, 20, 31
+ RGB 25, 07, 20
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 16, 20, 31
+ RGB 15, 20, 26
+ RGB 00, 00, 00
+
+.Pals345: ; 89557
+ RGB 31, 31, 31
+ RGB 31, 31, 31
+ RGB 31, 13, 00
+ RGB 14, 08, 00
+
+ RGB 31, 31, 31
+ RGB 16, 16, 31
+ RGB 00, 00, 31
+ RGB 00, 00, 00
+
+ RGB 19, 31, 11
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+; 8956f
+
+Function8956f: ; 8956f
+ push bc
+ ld hl, 16
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld hl, $000c
+ add hl, bc
+ ld b, h
+ ld c, l
+ farcall GetMobileOTTrainerClass
+ ld a, c
+ ld [TrainerClass], a
+ ld a, [rSVBK]
+ push af
+ ld a, 5
+ ld [rSVBK], a
+ ld hl, wd030
+ ld a, -1
+ ld [hli], a
+ ld a, " "
+ ld [hl], a
+ pop af
+ ld [rSVBK], a
+ ld a, [TrainerClass]
+ ld h, 0
+ ld l, a
+ add hl, hl
+ add hl, hl
+ ld de, TrainerPalettes
+ add hl, de
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld de, wd032
+ ld c, 4
+.loop
+ ld a, BANK(TrainerPalettes)
+ call GetFarByte
+ ld [de], a
+ inc de
+ inc hl
+ dec c
+ jr nz, .loop
+ ld hl, wd036
+ xor a
+ ld [hli], a
+ ld [hl], a
+ pop af
+ ld [rSVBK], a
+ pop bc
+ ret
+; 895c7
+
+
+Function895c7: ; 895c7 (22:55c7)
+ ld a, [rSVBK]
+ push af
+ ld a, 5
+ ld [rSVBK], a
+ ld hl, Palette_895de
+ ld de, wd030
+ ld bc, 8
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ret
+; 895de (22:55de)
+
+Palette_895de: ; 895de
+ RGB 31, 31, 31
+ RGB 07, 07, 06
+ RGB 07, 07, 06
+ RGB 00, 00, 00
+; 895e6
+
+Function895e6: ; 895e6
+ ld a, 7
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call ByteFill
+ ret
+; 895f2
+
+Function895f2: ; 895f2
+ push bc
+ xor a
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call ByteFill
+ call Function89605
+ call Function89655
+ pop bc
+ ret
+; 89605
+
+Function89605: ; 89605
+ hlcoord 19, 2, AttrMap
+ ld a, 1
+ ld de, SCREEN_WIDTH
+ ld c, 14
+.loop
+ ld [hl], a
+ dec c
+ jr z, .done
+ add hl, de
+ inc a
+ ld [hl], a
+ dec a
+ add hl, de
+ dec c
+ jr nz, .loop
+
+.done
+ hlcoord 0, 16, AttrMap
+ ld c, 10
+ ld a, 2
+.loop2
+ ld [hli], a
+ dec a
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .loop2
+ hlcoord 1, 11, AttrMap
+ ld a, 4
+ ld bc, 4
+ call ByteFill
+ ld a, 5
+ ld bc, 14
+ call ByteFill
+ ret
+; 8963d
+
+Function8963d: ; 8963d
+ hlcoord 12, 3, AttrMap
+ ld a, 6
+ ld de, SCREEN_WIDTH
+ lb bc, 7, 7
+.loop
+ push hl
+ ld c, 7
+.next
+ ld [hli], a
+ dec c
+ jr nz, .next
+ pop hl
+ add hl, de
+ dec b
+ jr nz, .loop
+ ret
+; 89655
+
+Function89655: ; 89655
+ hlcoord 1, 12, AttrMap
+ ld de, SCREEN_WIDTH
+ ld a, 5
+ ld b, 4
+.loop
+ ld c, 18
+ push hl
+.next
+ ld [hli], a
+ dec c
+ jr nz, .next
+ pop hl
+ add hl, de
+ dec b
+ jr nz, .loop
+ ret
+; 8966c
+
+Function8966c: ; 8966c
+ push bc
+ call Function89688
+ hlcoord 4, 0
+ ld c, 8
+ call Function896f5
+ pop bc
+ ret
+; 8967a
+
+
+Function8967a: ; 8967a (22:567a)
+ push bc
+ call Function89688
+ hlcoord 2, 0
+ ld c, 12
+ call Function896f5
+ pop bc
+ ret
+
+Function89688: ; 89688
+ hlcoord 0, 0
+ ld a, 1
+ ld e, SCREEN_WIDTH
+ call Function896e1
+ ld a, 2
+ ld e, SCREEN_WIDTH
+ call Function896eb
+ ld a, 3
+ ld [hli], a
+ ld a, 4
+ ld e, SCREEN_HEIGHT
+ call Function896e1
+ ld a, 6
+ ld [hli], a
+ push bc
+ ld c, 13
+.loop
+ call Function896cb
+ dec c
+ jr z, .done
+ call Function896d6
+ dec c
+ jr nz, .loop
+
+.done
+ pop bc
+ ld a, 25
+ ld [hli], a
+ ld a, 26
+ ld e, SCREEN_HEIGHT
+ call Function896e1
+ ld a, 28
+ ld [hli], a
+ ld a, 2
+ ld e, SCREEN_WIDTH
+ call Function896eb
+ ret
+; 896cb
+
+Function896cb: ; 896cb
+ ld de, SCREEN_WIDTH - 1
+ ld a, 7
+ ld [hl], a
+ add hl, de
+ ld a, 9
+ ld [hli], a
+ ret
+; 896d6
+
+Function896d6: ; 896d6
+ ld de, SCREEN_WIDTH - 1
+ ld a, 10
+ ld [hl], a
+ add hl, de
+ ld a, 11
+ ld [hli], a
+ ret
+; 896e1
+
+Function896e1: ; 896e1
+.loop
+ ld [hli], a
+ inc a
+ dec e
+ ret z
+ ld [hli], a
+ dec a
+ dec e
+ jr nz, .loop
+ ret
+; 896eb
+
+Function896eb: ; 896eb
+.loop
+ ld [hli], a
+ dec a
+ dec e
+ ret z
+ ld [hli], a
+ inc a
+ dec e
+ jr nz, .loop
+ ret
+; 896f5
+
+Function896f5: ; 896f5
+ call Function8971f
+ call Function89736
+ inc hl
+ inc hl
+ ld b, 2
+
+ClearScreenArea: ; 0x896ff
+; clears an area of the screen
+; INPUT:
+; hl = address of upper left corner of the area
+; b = height
+; c = width
+
+ ld a, " " ; blank tile
+ ld de, 20 ; screen width
+.loop
+ push bc
+ push hl
+.innerLoop
+ ld [hli], a
+ dec c
+ jr nz, .innerLoop
+ pop hl
+ pop bc
+ add hl, de
+ dec b
+ jr nz, .loop
+
+ dec hl
+ inc c
+ inc c
+.asm_89713
+ ld a, $36
+ ld [hli], a
+ dec c
+ ret z
+ ld a, $18
+ ld [hli], a
+ dec c
+ jr nz, .asm_89713 ; 0x8971c $f5
+ ret
+; 0x8971f
+
+Function8971f: ; 8971f
+ ld a, $2c
+ ld [hli], a
+ ld a, $2d
+ ld [hld], a
+ push hl
+ ld de, SCREEN_WIDTH
+ add hl, de
+ ld a, $31
+ ld [hli], a
+ ld a, $32
+ ld [hld], a
+ add hl, de
+ ld a, $35
+ ld [hl], a
+ pop hl
+ ret
+; 89736
+
+Function89736: ; 89736
+ push hl
+ inc hl
+ inc hl
+ ld e, c
+ ld d, $0
+ add hl, de
+ ld a, $2f
+ ld [hli], a
+ ld a, $30
+ ld [hld], a
+ ld de, SCREEN_WIDTH
+ add hl, de
+ ld a, $33
+ ld [hli], a
+ ld a, $34
+ ld [hl], a
+ add hl, de
+ ld a, $1f
+ ld [hl], a
+ pop hl
+ ret
+; 89753
+
+Function89753: ; 89753
+ ld a, $c
+ ld [hl], a
+ xor a
+ call Function89215
+ ret
+; 8975b
+
+Function8975b: ; 8975b
+ ld a, $1d
+ ld [hli], a
+ inc a
+ ld [hli], a
+ ld a, $d
+ ld [hl], a
+ dec hl
+ dec hl
+ ld a, $4
+ ld e, $3
+.asm_89769
+ call Function89215
+ inc hl
+ dec e
+ jr nz, .asm_89769
+ ret
+; 89771
+
+Function89771: ; 89771
+ ld a, $12
+ ld [hl], a
+ ld a, $3
+ call Function89215
+ ret
+; 8977a
+
+Function8977a: ; 8977a
+ ld e, $4
+ ld d, $13
+.asm_8977e
+ ld a, d
+ ld [hl], a
+ ld a, $4
+ call Function89215
+ inc hl
+ inc d
+ dec e
+ jr nz, .asm_8977e
+ ld e, $e
+.asm_8978c
+ ld a, d
+ ld [hl], a
+ xor a
+ call Function89215
+ inc hl
+ dec e
+ jr nz, .asm_8978c
+ ret
+; 89797
+
+Function89797: ; 89797
+ push bc
+ ld a, $e
+ ld [hl], a
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ ld a, $11
+ ld [hli], a
+ ld a, $10
+ ld c, $8
+.asm_897a6
+ ld [hli], a
+ dec c
+ jr nz, .asm_897a6
+ ld a, $f
+ ld [hl], a
+ pop bc
+ ret
+; 897af
+
+Function897af: ; 897af
+ push bc
+ ld hl, $0010
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld hl, $000c
+ add hl, bc
+ ld b, h
+ ld c, l
+ farcall GetMobileOTTrainerClass
+ ld a, c
+ ld [TrainerClass], a
+ xor a
+ ld [CurPartySpecies], a
+ ld de, VTiles2 tile $37
+ farcall GetTrainerPic
+ pop bc
+ ret
+; 897d5
+
+Function897d5: ; 897d5
+ push bc
+ call Function8934a
+ jr nc, .asm_897f3
+ hlcoord 12, 3, AttrMap
+ xor a
+ ld de, SCREEN_WIDTH
+ lb bc, 7, 7
+.asm_897e5
+ push hl
+ ld c, $7
+.asm_897e8
+ ld [hli], a
+ dec c
+ jr nz, .asm_897e8
+ pop hl
+ add hl, de
+ dec b
+ jr nz, .asm_897e5
+ pop bc
+ ret
+
+.asm_897f3
+ ld a, $37
+ ld [hGraphicStartTile], a
+ hlcoord 12, 3
+ lb bc, 7, 7
+ predef PlaceGraphic
+ call Function8963d
+ pop bc
+ ret
+; 89807
+
+
+Function89807: ; 89807 (22:5807)
+ ld hl, MobileAdapterGFX + $200
+ ld a, [PlayerGender]
+ bit 0, a
+ jr z, .asm_89814
+ ld hl, MobileAdapterGFX + $200 + $230
+.asm_89814
+ call DisableLCD
+ ld de, VTiles2 tile $37
+ ld bc, $230
+ ld a, BANK(MobileAdapterGFX)
+ call FarCopyBytes
+ call EnableLCD
+ call DelayFrame
+ ret
+
+Function89829: ; 89829 (22:5829)
+ push bc
+ ld bc, $705
+ ld de, $14
+ ld a, $37
+.asm_89832
+ push bc
+ push hl
+.asm_89834
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_89834
+ pop hl
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .asm_89832
+ call Function8963d
+ pop bc
+ ret
+
+Function89844: ; 89844
+ call Function89481
+ call Function894bb
+ call Function897af
+ push bc
+ call WaitBGMap2
+ call SetPalettes
+ pop bc
+ ret
+; 89856
+
+Function89856: ; 89856
+ push bc
+ call Function891b8
+ pop bc
+ call Function895f2
+ call Function8966c
+ call Function899d3
+ call Function898aa
+ call Function898be
+ call Function898dc
+ call Function898f3
+ push bc
+ ld bc, wd008
+ hlcoord 2, 10
+ call Function89975
+ pop bc
+ call Function897d5
+ ret
+; 8987f
+
+
+Function8987f: ; 8987f (22:587f)
+ call Function891b8
+ call Function895f2
+ call Function8967a
+ call Function899d3
+ hlcoord 5, 1
+ call Function8999c
+ hlcoord 13, 3
+ call Function89829
+ call Function899b2
+ hlcoord 5, 5
+ call Function899c9
+ ld bc, wd008
+ hlcoord 2, 10
+ call Function89975
+ ret
+
+Function898aa: ; 898aa
+ ld a, [MenuSelection]
+ and a
+ ret z
+ push bc
+ hlcoord 6, 1
+ ld de, MenuSelection
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+ call PrintNum
+ pop bc
+ ret
+; 898be
+
+Function898be: ; 898be
+ push bc
+ ld de, wd002
+ ld hl, wd002
+ call Function89331
+ jr nc, .asm_898cd
+ ld de, String_89116
+
+.asm_898cd
+ hlcoord 9, 1
+ ld a, [MenuSelection]
+ and a
+ jr nz, .asm_898d7
+ dec hl
+
+.asm_898d7
+ call PlaceString
+ pop bc
+ ret
+; 898dc
+
+Function898dc: ; 898dc
+ ld hl, $0006
+ add hl, bc
+ push bc
+ ld d, h
+ ld e, l
+ call Function8934a
+ jr nc, .asm_898eb
+ ld de, String_89116
+
+.asm_898eb
+ hlcoord 6, 4
+ call PlaceString
+ pop bc
+ ret
+; 898f3
+
+Function898f3: ; 898f3
+ push bc
+ ld hl, $000c
+ add hl, bc
+ ld d, h
+ ld e, l
+ call Function8934a
+ jr c, .asm_8990a
+ hlcoord 5, 5
+ lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+ call PrintNum
+ jr .asm_89913
+
+.asm_8990a
+ hlcoord 5, 5
+ ld de, String_89116
+ call PlaceString
+
+.asm_89913
+ pop bc
+ ret
+; 89915
+
+Function89915: ; 89915
+ push bc
+ push hl
+ ld de, Unknown_89942
+ ld c, $8
+.asm_8991c
+ ld a, [de]
+ ld [hl], a
+ ld a, $4
+ call Function89215
+ inc hl
+ inc de
+ dec c
+ jr nz, .asm_8991c
+ pop hl
+ ld b, $4
+ ld c, $2b
+ ld a, $8
+ ld de, Unknown_8994a
+.asm_89932
+ push af
+ ld a, [de]
+ cp [hl]
+ jr nz, .asm_8993b
+ call Function8994e
+ inc de
+
+.asm_8993b
+ inc hl
+ pop af
+ dec a
+ jr nz, .asm_89932
+ pop bc
+ ret
+; 89942
+
+Unknown_89942: ; 89942
+ db $24, $25, $26, " ", $27, $28, $29, $2a
+Unknown_8994a: ; 8994a
+ db $24, $27, $29, $ff
+; 8994e
+
+Function8994e: ; 8994e
+ push hl
+ push de
+ ld de, SCREEN_WIDTH
+ ld a, l
+ sub e
+ ld l, a
+ ld a, h
+ sbc d
+ ld h, a
+ ld a, c
+ ld [hl], a
+ ld a, b
+ call Function89215
+ pop de
+ pop hl
+ ret
+; 89962
+
+Function89962: ; 89962
+ push bc
+ ld c, $4
+ ld b, $20
+.asm_89967
+ ld a, b
+ ld [hl], a
+ ld a, $4
+ call Function89215
+ inc hl
+ inc b
+ dec c
+ jr nz, .asm_89967
+ pop bc
+ ret
+; 89975
+
+Function89975: ; 89975
+ push bc
+ ld e, $8
+.asm_89978
+ ld a, [bc]
+ ld d, a
+ call Function8998b
+ swap d
+ inc hl
+ ld a, d
+ call Function8998b
+ inc bc
+ inc hl
+ dec e
+ jr nz, .asm_89978
+ pop bc
+ ret
+; 8998b
+
+Function8998b: ; 8998b
+ push bc
+ and $f
+ cp $a
+ jr nc, .asm_89997
+ ld c, $f6
+ add c
+ jr .asm_89999
+
+.asm_89997
+ ld a, $7f
+
+.asm_89999
+ ld [hl], a
+ pop bc
+ ret
+; 8999c
+
+
+Function8999c: ; 8999c (22:599c)
+ ld de, PlayerName
+ call PlaceString
+ inc bc
+ ld h, b
+ ld l, c
+ ld de, String_899ac
+ call PlaceString
+ ret
+; 899ac (22:59ac)
+
+String_899ac: ; 899ac
+ db "の めいし@"
+; 899b2
+
+Function899b2: ; 899b2 (22:59b2)
+ ld bc, PlayerName
+ call Function89346
+ jr c, .asm_899bf
+ ld de, PlayerName
+ jr .asm_899c2
+.asm_899bf
+ ld de, String_89116
+.asm_899c2
+ hlcoord 6, 4
+ call PlaceString
+ ret
+
+Function899c9: ; 899c9 (22:59c9)
+ ld de, PlayerID
+ lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+ call PrintNum
+ ret
+
+Function899d3: ; 899d3
+ hlcoord 1, 4
+ call Function89753
+ hlcoord 2, 5
+ call Function8975b
+ hlcoord 1, 9
+ call Function89771
+ hlcoord 1, 11
+ call Function8977a
+ hlcoord 1, 5
+ call Function89797
+ hlcoord 2, 4
+ call Function89962
+ hlcoord 2, 9
+ call Function89915
+ ret
+; 899fe
+
+Function899fe: ; 899fe
+ push bc
+ push hl
+ ld hl, $0019
+ add hl, bc
+ ld b, h
+ ld c, l
+ pop hl
+ call Function89a0c
+ pop bc
+ ret
+; 89a0c
+
+Function89a0c: ; 89a0c
+ push hl
+ call Function89363
+ pop hl
+ jr c, .asm_89a1c
+ ld d, h
+ ld e, l
+ farcall Function11c08f
+ ret
+
+.asm_89a1c
+ ld de, String_89153
+ call PlaceString
+ ret
+; 89a23
+
+
+Function89a23: ; 89a23 (22:5a23)
+ hlcoord 0, 11
+ ld b, $4
+ ld c, $12
+ call Function8921f
+ ret
+
+Function89a2e: ; 89a2e (22:5a2e)
+ hlcoord 11, 12
+ ld b, $2
+ ld c, $6
+ call TextBox
+ hlcoord 13, 13
+ ld de, String_89a4e
+ call PlaceString
+ hlcoord 13, 14
+ ld de, String_89a53
+ call PlaceString
+ call Function89655
+ ret
+; 89a4e (22:5a4e)
+
+String_89a4e: ; 89a4e
+ db "けってい@"
+; 89a53
+
+String_89a53: ; 89a53
+ db "やめる@"
+; 89a57
+
+Function89a57: ; 89a57
+ call JoyTextDelay_ForcehJoyDown ; joypad
+ bit D_UP_F, c
+ jr nz, .d_up
+ bit D_DOWN_F, c
+ jr nz, .d_down
+ bit A_BUTTON_F, c
+ jr nz, .a_b_button
+ bit B_BUTTON_F, c
+ jr nz, .a_b_button
+ bit START_F, c
+ jr nz, .start_button
+ scf
+ ret
+
+.a_b_button
+ ld a, $1
+ and a
+ ret
+
+.start_button
+ ld a, $2
+ and a
+ ret
+
+.d_up
+ call .MoveCursorUp
+ call nc, .PlayPocketSwitchSFX
+ ld a, $0
+ ret
+
+.d_down
+ call .MoveCursorDown
+ call nc, .PlayPocketSwitchSFX
+ ld a, $0
+ ret
+; 89a8a
+
+.PlayPocketSwitchSFX: ; 89a8a
+ push af
+ ld de, SFX_SWITCH_POCKETS
+ call PlaySFX
+ pop af
+ ret
+; 89a93
+
+.MoveCursorDown: ; 89a93
+ ld d, 40
+ ld e, 1
+ call .ApplyCursorMovement
+ ret
+; 89a9b
+
+.MoveCursorUp: ; 89a9b
+ ld d, 1
+ ld e, -1
+ call .ApplyCursorMovement
+ ret
+; 89aa3
+
+.ApplyCursorMovement: ; 89aa3
+ ld a, [MenuSelection]
+ ld c, a
+ push bc
+.loop
+ ld a, [MenuSelection]
+ cp d
+ jr z, .equal_to_d
+ add e
+ jr nz, .not_zero
+ inc a
+
+.not_zero
+ ld [MenuSelection], a
+ call .Function89ac7 ; BCD conversion of data in SRAM?
+ jr nc, .loop
+ call .Function89ae6 ; split [MenuSelection] into [wd030] + [wd031] where [wd030] <= 5
+ pop bc
+ and a
+ ret
+
+.equal_to_d
+ pop bc
+ ld a, c
+ ld [MenuSelection], a
+ scf
+ ret
+; 89ac7
+
+.Function89ac7: ; 89ac7
+ call OpenSRAMBank4
+ call Function8931b
+ call .Function89ad4
+ call CloseSRAM
+ ret
+; 89ad4
+
+.Function89ad4: ; 89ad4
+ push de
+ call Function8932d ; find a non-space character within 5 bytes of bc
+ jr c, .no_nonspace_character
+ ld hl, 17
+ add hl, bc
+ call Function89b45
+ jr c, .finish_decode
+
+.no_nonspace_character
+ and a
+
+.finish_decode
+ pop de
+ ret
+; 89ae6
+
+.Function89ae6: ; 89ae6
+ ld hl, wd031
+ xor a
+ ld [hl], a
+ ld a, [MenuSelection]
+.loop2
+ cp 6
+ jr c, .load_and_ret
+ sub 5
+ ld c, a
+ ld a, [hl]
+ add 5
+ ld [hl], a
+ ld a, c
+ jr .loop2
+
+.load_and_ret
+ ld [wd030], a
+ ret
+; 89b00
+
+
+Function89b00: ; 89b00 (22:5b00)
+ farcall MG_Mobile_Layout_LoadPals
+ ret
+; 89b07 (22:5b07)
+
+Function89b07: ; 89b07
+ call Mobile22_SetBGMapMode0
+ call DelayFrame
+ farcall Function4a3a7
+ ret
+; 89b14
+
+Function89b14: ; 89b14
+ call ClearBGPalettes
+ call Function89b07
+ call Function89b00
+ ret
+; 89b1e
+
+Function89b1e: ; 89b1e (22:5b1e)
+ farcall Function4a485
+ call Function89b00
+ ret
+
+Function89b28: ; 89b28 (22:5b28)
+ call Function891de
+ call ClearBGPalettes
+ call Function893e2
+ call Call_ExitMenu
+ call Function891ab
+ call SetPalettes
+ ret
+
+Function89b3b: ; 89b3b (22:5b3b)
+ call Mobile22_SetBGMapMode0
+ farcall Function48cda
+ ret
+
+Function89b45: ; 89b45
+ ; some sort of decoder?
+ ; BCD?
+ push hl
+ push bc
+ ld c, $10
+ ld e, $0
+.loop
+ ld a, [hli]
+ ld b, a
+ and $f
+ cp 10
+ jr c, .low_nybble_less_than_10
+ ld a, c
+ cp $b
+ jr nc, .clear_carry
+ jr .set_carry
+
+.low_nybble_less_than_10
+ dec c
+ swap b
+ inc e
+ ld a, b
+ and $f
+ cp 10
+ jr c, .high_nybble_less_than_10
+ ld a, c
+ cp $b
+ jr nc, .clear_carry
+ jr .set_carry
+
+.high_nybble_less_than_10
+ inc e
+ dec c
+ jr nz, .loop
+ dec e
+
+.set_carry
+ scf
+ jr .finish
+
+.clear_carry
+ and a
+
+.finish
+ pop bc
+ pop hl
+ ret
+; 89b78
+
+
+Function89b78: ; 89b78 (22:5b78)
+ push bc
+ ld a, [wd010]
+ cp $10
+ jr c, .asm_89b8c
+ ld a, e
+ and a
+ jr z, .asm_89b89
+ ld c, e
+.asm_89b85
+ inc hl
+ dec c
+ jr nz, .asm_89b85
+.asm_89b89
+ ld a, $7f
+ ld [hl], a
+.asm_89b8c
+ ld a, [wd010]
+ inc a
+ and $1f
+ ld [wd010], a
+ pop bc
+ ret
+
+Function89b97: ; 89b97 (22:5b97)
+ call Function89c34
+ jr c, .asm_89ba0
+ call Function89448
+ ret
+.asm_89ba0
+ ld a, [wd011]
+ ld hl, Unknown_89bd8
+ and a
+ jr z, .asm_89bae
+.asm_89ba9
+ inc hl
+ inc hl
+ dec a
+ jr nz, .asm_89ba9
+.asm_89bae
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld de, Sprites
+.asm_89bb4
+ ld a, [hli]
+ cp $ff
+ ret z
+ ld c, a
+ ld b, $0
+.asm_89bbb
+ push hl
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ add b
+ ld [de], a
+ inc de
+ ld a, $8
+ add b
+ ld b, a
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ pop hl
+ dec c
+ jr nz, .asm_89bbb
+ ld b, $0
+ ld c, $4
+ add hl, bc
+ jr .asm_89bb4
+; 89bd8 (22:5bd8)
+
+Unknown_89bd8: ; 89bd8
+ dw Unknown_89be0
+ dw Unknown_89bf5
+ dw Unknown_89c0a
+ dw Unknown_89c1f
+; 89be0
+
+Unknown_89be0: ; 89be0
+ db $01, $12, $4e, $01, $00
+ db $01, $19, $4e, $01, $40
+ db $01, $12, $72, $01, $20
+ db $01, $19, $72, $01, $60
+ db $ff
+
+Unknown_89bf5: ; 89bf5
+ db $01, $60, $16, $01, $00
+ db $01, $62, $16, $01, $40
+ db $01, $60, $92, $01, $20
+ db $01, $62, $92, $01, $60
+ db $ff
+
+Unknown_89c0a: ; 89c0a
+ db $01, $78, $66, $01, $00
+ db $01, $78, $66, $01, $40
+ db $01, $78, $92, $01, $20
+ db $01, $78, $92, $01, $60
+ db $ff
+
+Unknown_89c1f: ; 89c1f
+ db $01, $80, $66, $01, $00
+ db $01, $80, $66, $01, $40
+ db $01, $80, $92, $01, $20
+ db $01, $80, $92, $01, $60
+ db $ff
+; 89c34
+
+Function89c34: ; 89c34 (22:5c34)
+ push bc
+ ld a, [wd012]
+ ld c, a
+ inc a
+ and $f
+ ld [wd012], a
+ ld a, c
+ cp $8
+ pop bc
+ ret
+
+Function89c44: ; 89c44 (22:5c44)
+ call Function89c34
+ jr c, .asm_89c4f
+ push de
+ call Function89448
+ pop de
+ ret
+.asm_89c4f
+ ld hl, Sprites
+ push de
+ ld a, b
+ ld [hli], a
+ ld d, $8
+ ld a, e
+ and a
+ ld a, c
+ jr z, .asm_89c60
+.asm_89c5c
+ add d
+ dec e
+ jr nz, .asm_89c5c
+.asm_89c60
+ pop de
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ret
+
+Function89c67: ; 89c67 (22:5c67)
+; menu scrolling?
+ call JoyTextDelay_ForcehJoyDown ; joypad
+ ld b, $0
+ bit A_BUTTON_F, c
+ jr z, .not_a_button
+ ld b, $1
+ and a
+ ret
+
+.not_a_button
+ bit B_BUTTON_F, c
+ jr z, .not_b_button
+ scf
+ ret
+
+.not_b_button
+ xor a
+ bit D_UP_F, c
+ jr z, .not_d_up
+ ld a, $1
+.not_d_up
+ bit D_DOWN_F, c
+ jr z, .not_d_down
+ ld a, $2
+.not_d_down
+ bit D_LEFT_F, c
+ jr z, .not_d_left
+ ld a, $3
+.not_d_left
+ bit D_RIGHT_F, c
+ jr z, .not_d_right
+ ld a, $4
+.not_d_right
+ and a
+ ret z ; no dpad pressed
+ dec a
+ ld c, a
+ ld d, $0
+ ld hl, .ScrollData0
+ ld a, [wd02f]
+ and a
+ jr z, .got_data
+ ld hl, .ScrollData1
+.got_data
+ ld a, [wd011]
+ and a
+ jr z, .got_row
+ ld e, $4
+.add_n_times
+ add hl, de
+ dec a
+ jr nz, .add_n_times
+.got_row
+ ld e, c
+ add hl, de
+ ld a, [hl]
+ and a
+ ret z
+ dec a
+ ld [wd011], a
+ xor a
+ ld [wd012], a
+ ret
+; 89cbf (22:5cbf)
+
+.ScrollData0: ; 89cbf
+ db 0, 2, 0, 0
+ db 1, 3, 0, 0
+ db 2, 4, 0, 0
+ db 3, 0, 0, 0
+
+.ScrollData1: ; 89ccf
+ db 0, 0, 0, 0
+ db 0, 3, 0, 0
+ db 2, 4, 0, 0
+ db 3, 0, 0, 0
+; 89cdf
+
+Function89cdf: ; 89cdf (22:5cdf)
+ ld a, $10
+ add b
+ ld b, a
+ ld a, $8
+ add c
+ ld c, a
+ ld e, $2
+ ld a, $2
+ ld hl, Sprites
+.asm_89cee
+ push af
+ push bc
+ ld d, $4
+.asm_89cf2
+ ld a, b
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld a, $1
+ ld [hli], a
+ ld a, $8
+ add c
+ ld c, a
+ inc e
+ dec d
+ jr nz, .asm_89cf2
+ pop bc
+ ld a, $8
+ add b
+ ld b, a
+ pop af
+ dec a
+ jr nz, .asm_89cee
+ ret
+
+Function89d0d: ; 89d0d (22:5d0d)
+ call Mobile22_SetBGMapMode0
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+
+ ld c, 8
+ ld de, UnknBGPals
+.loop
+ push bc
+ ld hl, .Palette1
+ ld bc, 1 palettes
+ call CopyBytes
+ pop bc
+ dec c
+ jr nz, .loop
+
+ ld hl, .Palette2
+ ld de, UnknBGPals + 2 palettes
+ ld bc, 1 palettes
+ call CopyBytes
+
+ pop af
+ ld [rSVBK], a
+
+ call SetPalettes
+ farcall PrintMail_
+ call Mobile22_SetBGMapMode1
+ ld c, 24
+ call DelayFrames
+ call RestartMapMusic
+ ret
+; 89d4e (22:5d4e)
+
+.Palette1: ; 89d4e
+ RGB 31, 31, 31
+ RGB 19, 19, 19
+ RGB 15, 15, 15
+ RGB 00, 00, 00
+; 89d56
+
+.Palette2: ; 89d56
+ RGB 31, 31, 31
+ RGB 19, 19, 19
+ RGB 19, 19, 19
+ RGB 00, 00, 00
+; 89d5e
+
+Function89d5e: ; 89d5e (22:5d5e)
+ push af
+ call CopyMenuDataHeader
+ pop af
+ ld [wMenuCursorBuffer], a
+ call Mobile22_SetBGMapMode0
+ call PlaceVerticalMenuItems
+ call InitVerticalMenuCursor
+ ld hl, w2DMenuFlags1
+ set 7, [hl]
+ ret
+
+Function89d75: ; 89d75 (22:5d75)
+ push hl
+ call Mobile22_SetBGMapMode0
+ call _hl_
+ farcall Mobile_OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
+ pop hl
+ jr asm_89d90
+
+Function89d85: ; 89d85 (22:5d85)
+ push hl
+ call Mobile22_SetBGMapMode0
+ call _hl_
+ call CGBOnly_CopyTilemapAtOnce
+ pop hl
+
+asm_89d90: ; 89d90 (22:5d90)
+ call Mobile22_SetBGMapMode0
+ push hl
+ call _hl_
+ call Function89dab
+ ld a, [wMenuCursorY]
+ push af
+ call Function891ab
+ pop af
+ pop hl
+ jr c, .asm_89da9
+ jr z, asm_89d90
+ scf
+ ret
+.asm_89da9
+ and a
+ ret
+
+Function89dab: ; 89dab (22:5dab)
+ call Mobile22_SetBGMapMode0
+ farcall MobileMenuJoypad
+ call Mobile22_SetBGMapMode0
+ ld a, c
+ ld hl, wMenuJoypadFilter
+ and [hl]
+ ret z
+ bit 0, a
+ jr nz, .asm_89dc7
+ bit 1, a
+ jr nz, .asm_89dd9
+ xor a
+ ret
+.asm_89dc7
+ call PlayClickSFX
+ ld a, [w2DMenuNumRows]
+ ld c, a
+ ld a, [wMenuCursorY]
+ cp c
+ jr z, .asm_89dd9
+ call PlaceHollowCursor
+ scf
+ ret
+.asm_89dd9
+ call PlayClickSFX
+ ld a, $1
+ and a
+ ret
+
+Function89de0: ; 89de0 (22:5de0)
+ call ClearSprites
+ call Function89e0a
+ jr c, .asm_89e00
+ ld c, $1
+.asm_89dea
+ call Function8a31c
+ jr z, .asm_89dfd
+ ld a, [wMenuCursorY]
+ ld c, a
+ push bc
+ ld hl, Jumptable_89e04
+ ld a, e
+ dec a
+ rst JumpTable
+ pop bc
+ jr .asm_89dea
+.asm_89dfd
+ call Function891fe
+.asm_89e00
+ call Function8917a
+ ret
+
+Jumptable_89e04: ; 89e04 (22:5e04)
+ dw Function8a62c
+ dw Function8a999
+ dw Function8ab93
+
+
+Function89e0a: ; 89e0a (22:5e0a)
+ call OpenSRAMBank4
+ call Function8b3b0
+ call CloseSRAM
+ ld hl, Jumptable_89e18
+ rst JumpTable
+ ret
+
+Jumptable_89e18: ; 89e18 (22:5e18)
+ dw Function89e1e
+ dw Function8a116
+ dw Function8a2aa
+
+
+Function89e1e: ; 89e1e (22:5e1e)
+ call OpenSRAMBank4
+ ld bc, $a037 ; 4:a037
+ call Function8b36c
+ call CloseSRAM
+ xor a
+ ld [wd02d], a
+
+asm_89e2e: ; 89e2e (22:5e2e)
+ ld a, [wd02d]
+ ld hl, Jumptable_89e3c
+ rst JumpTable
+ ret
+
+Function89e36: ; 89e36 (22:5e36)
+ ld hl, wd02d
+ inc [hl]
+ jr asm_89e2e
+
+Jumptable_89e3c: ; 89e3c (22:5e3c)
+ dw Function89e6f
+ dw Function89fed
+ dw Function89ff6
+ dw Function8a03d
+ dw Function89eb9
+ dw Function89efd
+ dw Function89fce
+ dw Function8a04c
+ dw Function8a055
+ dw Function8a0e6
+ dw Function8a0ec
+ dw Function8a0f5
+ dw Function89e58
+ dw Function89e68
+
+
+Function89e58: ; 89e58 (22:5e58)
+ ld a, $1
+ call Function8a2fe
+ call Function891fe
+ call Function893e2
+ call Function89168
+ and a
+ ret
+
+Function89e68: ; 89e68 (22:5e68)
+ call Function891fe
+ ld a, $1
+ scf
+ ret
+
+Function89e6f: ; 89e6f (22:5e6f)
+ call Function891de
+ call Function89245
+ call Function89ee1
+ call Function89e9a
+ hlcoord 7, 4
+ call Function8a58d
+ ld a, $5
+ hlcoord 7, 4, AttrMap
+ call Function8a5a3
+ ld a, $6
+ hlcoord 10, 4, AttrMap
+ call Function8a5a3
+ call Function891ab
+ call SetPalettes
+ jp Function89e36
+
+Function89e9a: ; 89e9a (22:5e9a)
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_89eb1
+ ld de, UnknBGPals palette 5
+ ld bc, 1 palettes
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ret
+; 89eb1 (22:5eb1)
+
+Palette_89eb1: ; 89eb1
+ RGB 31, 31, 31
+ RGB 31, 31, 31
+ RGB 27, 19, 00
+ RGB 00, 00, 00
+; 89eb9
+
+Function89eb9: ; 89eb9 (22:5eb9)
+ call Function891fe
+ call Function89ee1
+ call Function89e9a
+ hlcoord 7, 4
+ call Function8a58d
+ ld a, $5
+ hlcoord 7, 4, AttrMap
+ call Function8a5a3
+ ld a, $6
+ hlcoord 10, 4, AttrMap
+ call Function8a5a3
+ call Function891ab
+ call SetPalettes
+ jp Function89e36
+
+Function89ee1: ; 89ee1 (22:5ee1)
+ call ClearBGPalettes
+ call Function893e2
+ call Mobile22_SetBGMapMode0
+ farcall Function4a3a7
+ farcall MG_Mobile_Layout_CreatePalBoxes
+ hlcoord 1, 0
+ call Function8a53d
+ ret
+
+Function89efd: ; 89efd (22:5efd)
+ ld hl, wd012
+ ld a, $ff
+ ld [hli], a
+ xor a
+rept 4
+ ld [hli], a
+endr
+ ld [hl], a
+.asm_89f09
+ ld hl, wd012
+ inc [hl]
+ ld a, [hli]
+ and $3
+ jr nz, .asm_89f2e
+ ld a, [hl]
+ cp $4
+ jr nc, .asm_89f2e
+ ld b, $32
+ inc [hl]
+ ld a, [hl]
+ dec a
+ jr z, .asm_89f26
+ ld c, a
+.asm_89f1f
+ ld a, $b
+ add b
+ ld b, a
+ dec c
+ jr nz, .asm_89f1f
+.asm_89f26
+ ld c, $e8
+ ld a, [wd013]
+ call Function89fa5
+.asm_89f2e
+ ld a, [wd013]
+ and a
+ jr z, .asm_89f58
+.asm_89f34
+ call Function89f6a
+ ld e, a
+ ld a, c
+ cp $a8
+ jr nc, .asm_89f4d
+ cp $46
+ jr c, .asm_89f4d
+ ld d, $0
+ dec e
+ ld hl, wd014
+ add hl, de
+ set 0, [hl]
+ inc e
+ jr .asm_89f51
+.asm_89f4d
+ ld a, $2
+ add c
+ ld c, a
+.asm_89f51
+ ld a, e
+ call Function89f77
+ dec a
+ jr nz, .asm_89f34
+.asm_89f58
+ call DelayFrame
+ ld hl, wd014
+ ld c, $4
+.asm_89f60
+ ld a, [hli]
+ and a
+ jr z, .asm_89f09
+ dec c
+ jr nz, .asm_89f60
+ jp Function89e36
+
+Function89f6a: ; 89f6a (22:5f6a)
+ push af
+ ld de, $10
+ call Function89f9a
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld c, a
+ pop af
+ ret
+
+Function89f77: ; 89f77 (22:5f77)
+ push af
+ ld de, $10
+ call Function89f9a
+ ld d, $2
+.asm_89f80
+ push bc
+ ld e, $2
+.asm_89f83
+ ld a, b
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ inc hl
+ inc hl
+ ld a, $8
+ add c
+ ld c, a
+ dec e
+ jr nz, .asm_89f83
+ pop bc
+ ld a, $8
+ add b
+ ld b, a
+ dec d
+ jr nz, .asm_89f80
+ pop af
+ ret
+
+Function89f9a: ; 89f9a (22:5f9a)
+ dec a
+ ld hl, Sprites
+ and a
+ ret z
+.asm_89fa0
+ add hl, de
+ dec a
+ jr nz, .asm_89fa0
+ ret
+
+Function89fa5: ; 89fa5 (22:5fa5)
+ ld de, $10
+ call Function89f9a
+ ld e, $2
+ ld d, $a
+.asm_89faf
+ push bc
+ ld a, $2
+.asm_89fb2
+ push af
+ ld a, b
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld a, d
+ inc d
+ ld [hli], a
+ ld a, $1
+ ld [hli], a
+ ld a, $8
+ add c
+ ld c, a
+ pop af
+ dec a
+ jr nz, .asm_89fb2
+ pop bc
+ ld a, $8
+ add b
+ ld b, a
+ dec e
+ jr nz, .asm_89faf
+ ret
+
+Function89fce: ; 89fce (22:5fce)
+ call Function8a5b6
+ ld a, $5
+ hlcoord 7, 4, AttrMap
+ call Function8a5a3
+ ld a, $6
+ hlcoord 10, 4, AttrMap
+ call Function8a5a3
+ call Function89448
+ call SetPalettes
+ call Function891ab
+ jp Function89e36
+
+Function89fed: ; 89fed (22:5fed)
+ ld hl, UnknownText_0x8a102
+ call PrintText
+ jp Function89e36
+
+Function89ff6: ; 89ff6 (22:5ff6)
+ call Function891fe
+ call ClearBGPalettes
+ call Function893cc
+ call Function89807
+ call Function89492
+ call Function894ca
+ call OpenSRAMBank4
+ ld hl, $a603
+ ld a, -1
+ ld bc, 8
+ call ByteFill
+ ld hl, $a603
+ ld de, wd008
+ call Function89381
+ call CloseSRAM
+ call Function8987f
+ call OpenSRAMBank4
+ hlcoord 1, 13
+ ld bc, $a007
+ call Function89a0c
+ call CloseSRAM
+ call Function891ab
+ call Mobile22_ButtonSound
+ jp Function89e36
+
+Function8a03d: ; 8a03d (22:603d)
+ ld hl, UnknownText_0x8a107
+ call Function89209
+ call PrintText
+ call Function8920f
+ jp Function89e36
+
+Function8a04c: ; 8a04c (22:604c)
+ ld hl, UnknownText_0x8a10c
+ call PrintText
+ jp Function89e36
+
+Function8a055: ; 8a055 (22:6055)
+ ld c, $7
+ ld b, $4
+.asm_8a059
+ call Function8a0a1
+ inc c
+ call Function8a0c9
+ push bc
+ call Function8a58d
+ pop bc
+ call Function8a0de
+ push bc
+ push hl
+ ld a, $5
+ call Function8a5a3
+ pop hl
+ inc hl
+ inc hl
+ inc hl
+ ld a, $6
+ call Function8a5a3
+ call CGBOnly_CopyTilemapAtOnce
+ pop bc
+ ld a, c
+ cp $b
+ jr nz, .asm_8a059
+ call Function8a0a1
+ hlcoord 12, 4
+ call Function8a58d
+ ld a, $5
+ hlcoord 12, 4, AttrMap
+ call Function8a5a3
+ pop hl
+ ld a, $6
+ hlcoord 15, 4, AttrMap
+ call Function8a5a3
+ call CGBOnly_CopyTilemapAtOnce
+ jp Function89e36
+
+Function8a0a1: ; 8a0a1 (22:60a1)
+ call Mobile22_SetBGMapMode0
+ push bc
+ call Function8a0c9
+ ld e, $6
+.asm_8a0aa
+ push hl
+ ld bc, $6
+ add hl, bc
+ ld d, [hl]
+ call Function8a0c1
+ pop hl
+ ld [hl], d
+ call Function89215
+ ld bc, $14
+ add hl, bc
+ dec e
+ jr nz, .asm_8a0aa
+ pop bc
+ ret
+
+Function8a0c1: ; 8a0c1 (22:60c1)
+ push hl
+ ld bc, AttrMap - TileMap
+ add hl, bc
+ ld a, [hl]
+ pop hl
+ ret
+
+Function8a0c9: ; 8a0c9 (22:60c9)
+ push bc
+ hlcoord 0, 0
+ ld de, $14
+ ld a, b
+ and a
+ jr z, .asm_8a0d8
+.asm_8a0d4
+ add hl, de
+ dec b
+ jr nz, .asm_8a0d4
+.asm_8a0d8
+ ld d, $0
+ ld e, c
+ add hl, de
+ pop bc
+ ret
+
+Function8a0de: ; 8a0de (22:60de)
+ call Function8a0c9
+ ld de, AttrMap - TileMap
+ add hl, de
+ ret
+
+Function8a0e6: ; 8a0e6 (22:60e6)
+ call Function8b539
+ jp Function89e36
+
+Function8a0ec: ; 8a0ec (22:60ec)
+ ld hl, UnknownText_0x8a111
+ call PrintText
+ jp Function89e36
+
+Function8a0f5: ; 8a0f5 (22:60f5)
+ call Function8b555
+ jp nc, Function8a0ff
+ ld hl, wd02d
+ inc [hl]
+
+Function8a0ff: ; 8a0ff (22:60ff)
+ jp Function89e36
+; 8a102 (22:6102)
+
+UnknownText_0x8a102: ; 0x8a102
+ ; The CARD FOLDER stores your and your friends' CARDS. A CARD contains information like the person's name, phone number and profile.
+ text_jump UnknownText_0x1c5238
+ db "@"
+; 0x8a107
+
+UnknownText_0x8a107: ; 0x8a107
+ ; This is your CARD. Once you've entered your phone number, you can trade CARDS with your friends.
+ text_jump UnknownText_0x1c52bc
+ db "@"
+; 0x8a10c
+
+UnknownText_0x8a10c: ; 0x8a10c
+ ; If you have your friend's CARD, you can use it to make a call from a mobile phone on the 2nd floor of a #MON CENTER.
+ text_jump UnknownText_0x1c531e
+ db "@"
+; 0x8a111
+
+UnknownText_0x8a111: ; 0x8a111
+ ; To safely store your collection of CARDS, you must set a PASSCODE for your CARD FOLDER.
+ text_jump UnknownText_0x1c5394
+ db "@"
+; 0x8a116
+
+Function8a116: ; 8a116 (22:6116)
+ ld a, $1
+ ld [wd030], a
+ ld hl, MenuDataHeader_0x8a176
+ call LoadMenuDataHeader
+.asm_8a121
+ call Mobile22_SetBGMapMode0
+ call Function8a17b
+ jr c, .asm_8a16b
+ ld a, [wMenuCursorY]
+ ld [wd030], a
+ dec d
+ jr z, .asm_8a140
+ call Function8a20d
+ jr c, .asm_8a121
+ xor a
+ call Function8a2fe
+ call Function8916e
+ jr .asm_8a16b
+.asm_8a140
+ call Function89174
+ jr nz, .asm_8a14c
+ call Function8a241
+ jr c, .asm_8a121
+ jr .asm_8a15a
+.asm_8a14c
+ call WaitSFX
+ ld de, SFX_TWINKLE
+ call PlaySFX
+ ld c, $10
+ call DelayFrames
+.asm_8a15a
+ call ExitMenu
+ call Function891de
+ call Function893e2
+ call Function89245
+ call Function89168
+ and a
+ ret
+.asm_8a16b
+ call Function89209
+ call CloseWindow
+ call Function8920f
+ scf
+ ret
+; 8a176 (22:6176)
+
+MenuDataHeader_0x8a176: ; 0x8a176
+ db $40 ; flags
+ db 00, 14 ; start coords
+ db 06, 19 ; end coords
+; 8a17b
+
+Function8a17b: ; 8a17b (22:617b)
+ decoord 14, 0
+ ld b, $5
+ ld c, $4
+ call Function89b3b
+ ld hl, MenuDataHeader_0x8a19a
+ ld a, [wd030]
+ call Function89d5e
+ ld hl, Function8a1b0
+ call Function89d75
+ jr nc, .asm_8a198
+ ld a, $0
+.asm_8a198
+ ld d, a
+ ret
+; 8a19a (22:619a)
+
+MenuDataHeader_0x8a19a: ; 0x8a19a
+ db $40 ; flags
+ db 00, 14 ; start coords
+ db 06, 19 ; end coords
+ dw MenuData2_0x8a1a2
+ db 1 ; default option
+; 0x8a1a2
+
+MenuData2_0x8a1a2: ; 0x8a1a2
+ db $e0 ; flags
+ db 3 ; items
+ db "ひらく@"
+ db "すてる@"
+ db "もどる@"
+; 0x8a1b0
+
+Function8a1b0: ; 8a1b0
+ hlcoord 0, 12
+ ld b, $4
+ ld c, $12
+ call TextBox
+ hlcoord 1, 14
+ ld a, [wMenuCursorY]
+ ld de, Strings_8a1cc
+ dec a
+ ld c, a
+ call Function8919e
+ call PlaceString
+ ret
+; 8a1cc
+
+Strings_8a1cc: ; 8a1cc
+ db "めいし", $25, "せいりと へんしゅうを"
+ next "おこないます"
+ db "@"
+
+ db "めいしフ,ルダー", $25, "めいしと"
+ next "あんしょうばんごう", $1f, "けします"
+ db "@"
+
+ db "まえ", $25, "がめん", $1d, "もどります"
+ db "@"
+; 8a20d
+
+
+Function8a20d: ; 8a20d (22:620d)
+ ld hl, UnknownText_0x8a232
+ call PrintText
+ ld a, $2
+ call Function89259
+ ret c
+ ld hl, UnknownText_0x8a237
+ call PrintText
+ ld a, $2
+ call Function89259
+ ret c
+ xor a
+ call Function8a2fe
+ ld hl, UnknownText_0x8a23c
+ call PrintText
+ xor a
+ and a
+ ret
+; 8a232 (22:6232)
+
+UnknownText_0x8a232: ; 0x8a232
+ ; If the CARD FOLDER is deleted, all its CARDS and the PASSCODE will also be deleted. Beware--a deleted CARD FOLDER can't be restored. Want to delete your CARD FOLDER?
+ text_jump UnknownText_0x1c53ee
+ db "@"
+; 0x8a237
+
+UnknownText_0x8a237: ; 0x8a237
+ ; Are you sure you want to delete it?
+ text_jump UnknownText_0x1c5494
+ db "@"
+; 0x8a23c
+
+UnknownText_0x8a23c: ; 0x8a23c
+ ; The CARD FOLDER has been deleted.
+ text_jump UnknownText_0x1c54b9
+ db "@"
+; 0x8a241
+
+Function8a241: ; 8a241 (22:6241)
+ call LoadStandardMenuDataHeader
+ call Function891fe
+ call Function8a262
+ jr nc, .asm_8a254
+ call Function891fe
+ call Function89b28
+ scf
+ ret
+.asm_8a254
+ call Function891de
+ call ClearBGPalettes
+ call Call_ExitMenu
+ call Function891de
+ and a
+ ret
+
+Function8a262: ; 8a262 (22:6262)
+ call ClearBGPalettes
+ call Function893e2
+ call Mobile22_SetBGMapMode0
+ farcall Function4a3a7
+ farcall MG_Mobile_Layout_CreatePalBoxes
+ hlcoord 1, 0
+ call Function8a53d
+ hlcoord 12, 4
+ call Function8a58d
+ ld a, $5
+ hlcoord 12, 4, AttrMap
+ call Function8a5a3
+ ld a, $6
+ hlcoord 15, 4, AttrMap
+ call Function8a5a3
+ xor a
+ ld [wd02e], a
+ ld bc, wd013
+ call Function8b36c
+ call Function8b493
+ call Function891ab
+ call SetPalettes
+ call Function8b5e7
+ ret
+
+Function8a2aa: ; 8a2aa (22:62aa)
+ ld hl, MenuDataHeader_0x8a2ef
+ call LoadMenuDataHeader
+ ld hl, UnknownText_0x8a2f4
+ call PrintText
+ ld a, $1
+ call Function89259
+ jr nc, .asm_8a2cf
+ ld hl, UnknownText_0x8a2f9
+ call PrintText
+ ld a, $2
+ call Function89259
+ jr c, .asm_8a2ea
+ call Function8a20d
+ jr .asm_8a2ea
+.asm_8a2cf
+ call ExitMenu
+ call Function8a241
+ jr c, .asm_8a2ed
+ ld a, $1
+ call Function8a313
+ call CloseSRAM
+ call Function891de
+ call Function89245
+ call Function89168
+ and a
+ ret
+.asm_8a2ea
+ call CloseWindow
+.asm_8a2ed
+ scf
+ ret
+; 8a2ef (22:62ef)
+
+MenuDataHeader_0x8a2ef: ; 0x8a2ef
+ db $40 ; flags
+ db 12, 00 ; start coords
+ db 17, 19 ; end coords
+; 8a2f4
+
+UnknownText_0x8a2f4: ; 0x8a2f4
+ ; There is an older CARD FOLDER from a previous journey. Do you want to open it?
+ text_jump UnknownText_0x1c54dd
+ db "@"
+; 0x8a2f9
+
+UnknownText_0x8a2f9: ; 0x8a2f9
+ ; Delete the old CARD FOLDER?
+ text_jump UnknownText_0x1c552d
+ db "@"
+; 0x8a2fe
+
+Function8a2fe: ; 8a2fe (22:62fe)
+ call Function8a313
+ call Function89305
+ ld hl, $a603
+ ld bc, $8
+ ld a, -1
+ call ByteFill
+ call CloseSRAM
+ ret
+
+Function8a313: ; 8a313 (22:6313)
+ ld c, a
+ call OpenSRAMBank4
+ ld a, c
+ ld [$a60b], a
+ ret
+
+Function8a31c: ; 8a31c (22:631c)
+ push bc
+ call Mobile22_SetBGMapMode0
+ farcall Function4a3a7
+ farcall MG_Mobile_Layout_CreatePalBoxes
+ hlcoord 1, 0
+ call Function8a53d
+ hlcoord 12, 4
+ call Function8a58d
+ call Function8a3b2
+ pop bc
+ ld a, c
+ ld [wMenuCursorBuffer], a
+ ld [MenuSelection], a
+ call PlaceVerticalMenuItems
+ call InitVerticalMenuCursor
+ ld hl, w2DMenuFlags1
+ set 7, [hl]
+.asm_8a34e
+ call Function8a3a2
+ call Mobile22_SetBGMapMode0
+ call Function8a453
+ call Function8a4d3
+ call Function8a4fc
+ call Function891ab
+ call SetPalettes
+ call Function8a383
+ jr c, .asm_8a370
+ jr z, .asm_8a34e
+.asm_8a36a
+ call Function89448
+ xor a
+ ld e, a
+ ret
+.asm_8a370
+ call Function89448
+ call PlaceHollowCursor
+ call Function8a3a2
+ ld a, [MenuSelection]
+ cp $ff
+ jr z, .asm_8a36a
+ ld e, a
+ and a
+ ret
+
+Function8a383: ; 8a383 (22:6383)
+ farcall MobileMenuJoypad
+ ld a, c
+ ld hl, wMenuJoypadFilter
+ and [hl]
+ ret z
+ bit 0, a
+ jr nz, .asm_8a399
+ bit 1, a
+ jr nz, .asm_8a39e
+ xor a
+ ret
+.asm_8a399
+ call PlayClickSFX
+ scf
+ ret
+.asm_8a39e
+ call PlayClickSFX
+ ret
+
+Function8a3a2: ; 8a3a2 (22:63a2)
+ ld a, [wMenuCursorY]
+ dec a
+ ld hl, wd002
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [hl]
+ ld [MenuSelection], a
+ ret
+
+Function8a3b2: ; 8a3b2 (22:63b2)
+ ld a, $1
+ ld [MenuSelection], a
+ call Function8a4fc
+ call Function8a3df
+ jr nc, .asm_8a3ce
+ decoord 0, 2
+ ld b, $6
+ ld c, $9
+ call Function89b3b
+ ld hl, MenuDataHeader_0x8a435
+ jr .asm_8a3db
+.asm_8a3ce
+ decoord 0, 2
+ ld b, $8
+ ld c, $9
+ call Function89b3b
+ ld hl, MenuDataHeader_0x8a40f
+.asm_8a3db
+ call CopyMenuDataHeader
+ ret
+
+Function8a3df: ; 8a3df (22:63df)
+ call OpenSRAMBank4
+ ld hl, $a603
+ call Function89b45
+ call CloseSRAM
+ ld hl, wd002
+ jr c, .asm_8a3f8
+ ld de, Unknown_8a408
+ call Function8a400
+ scf
+ ret
+.asm_8a3f8
+ ld de, Unknown_8a40b
+ call Function8a400
+ and a
+ ret
+
+Function8a400: ; 8a400 (22:6400)
+ ld a, [de]
+ inc de
+ ld [hli], a
+ cp $ff
+ jr nz, Function8a400
+ ret
+; 8a408 (22:6408)
+
+Unknown_8a408: db 1, 2, -1
+Unknown_8a40b: db 1, 2, 3, -1
+
+MenuDataHeader_0x8a40f: ; 0x8a40f
+ db $40 ; flags
+ db 02, 00 ; start coords
+ db 11, 10 ; end coords
+ dw MenuData2_0x8a417
+ db 1 ; default option
+; 0x8a417
+
+MenuData2_0x8a417: ; 0x8a417
+ db $a0 ; flags
+ db 4 ; items
+ db "めいしりスト@"
+ db "じぶんの めいし@"
+ db "めいしこうかん@"
+ db "やめる@"
+; 0x8a435
+
+MenuDataHeader_0x8a435: ; 0x8a435
+ db $40 ; flags
+ db 02, 00 ; start coords
+ db 09, 10 ; end coords
+ dw MenuData2_0x8a43d
+ db 1 ; default option
+; 0x8a43d
+
+MenuData2_0x8a43d: ; 0x8a43d
+ db $a0 ; flags
+ db 3 ; items
+ db "めいしりスト@"
+ db "じぶんの めいし@"
+ db "やめる@"
+; 0x8a453
+
+Function8a453: ; 8a453 (22:6453)
+ hlcoord 0, 12
+ ld b, $4
+ ld c, $12
+ call TextBox
+ hlcoord 1, 14
+ ld de, String_8a476
+ ld a, [MenuSelection]
+ cp $ff
+ jr z, .asm_8a472
+ ld de, Strings_8a483
+ dec a
+ ld c, a
+ call Function8919e
+.asm_8a472
+ call PlaceString
+ ret
+; 8a476 (22:6476)
+
+String_8a476: ; 8a476
+ db "まえ", $25, "がめん", $1d, "もどります@"
+; 8a483
+
+Strings_8a483: ; 8a483
+ db "おともだち", $25, "めいしは"
+ next "ここ", $1d, "いれておきます@"
+
+ db "でんわばんごう", $1f, "いれると"
+ next "めいしこうかん", $4a, "できます@"
+
+ db "ともだちと じぶん", $25, "めいしを"
+ next "せきがいせんで こうかん します@"
+; 8a4d3
+
+Function8a4d3: ; 8a4d3 (22:64d3)
+ ld a, [MenuSelection]
+ cp $1
+ jr nz, .asm_8a4eb
+ ld a, $5
+ hlcoord 12, 4, AttrMap
+ call Function8a5a3
+ ld a, $7
+ hlcoord 15, 4, AttrMap
+ call Function8a5a3
+ ret
+.asm_8a4eb
+ ld a, $7
+ hlcoord 12, 4, AttrMap
+ call Function8a5a3
+ ld a, $6
+ hlcoord 15, 4, AttrMap
+ call Function8a5a3
+ ret
+
+Function8a4fc: ; 8a4fc (22:64fc)
+ ld a, [MenuSelection]
+ cp $3
+ jr nz, asm_8a529
+ ld hl, wd012
+ ld a, [hli]
+ ld b, a
+ ld a, [hld]
+ add b
+ ld [hl], a
+ ld b, a
+ ld c, $80
+ call Function89cdf
+ call Function8a515
+ ret
+
+Function8a515: ; 8a515 (22:6515)
+ ld hl, wd012
+ ld a, [hl]
+ cp $38
+ jr c, .asm_8a520
+ cp $3c
+ ret c
+.asm_8a520
+ ld a, [wd013]
+ cpl
+ inc a
+ ld [wd013], a
+ ret
+
+asm_8a529: ; 8a529 (22:6529)
+ ld hl, wd012
+ ld a, $3c
+ ld [hli], a
+ ld a, $ff
+ ld [hli], a
+ ld hl, Sprites
+ xor a
+ ld bc, $20
+ call ByteFill
+ ret
+
+Function8a53d: ; 8a53d (22:653d)
+ push hl
+ ld a, $15
+ ld c, $8
+ ld de, $14
+ call Function8a573
+ ld a, $1d
+ ld c, $9
+ call Function8a57c
+ inc a
+ ld [hl], a
+ call Function8a584
+ pop hl
+ add hl, de
+ ld a, $1f
+ ld c, $8
+ call Function8a573
+ dec hl
+ ld a, $51
+ ld [hli], a
+ ld a, $26
+ ld c, $1
+ call Function8a57c
+ ld a, $52
+ ld c, $3
+ call Function8a573
+ ld a, $27
+ ld c, $6
+
+Function8a573: ; 8a573 (22:6573)
+ ld [hl], a
+ call Function8a584
+ inc a
+ dec c
+ jr nz, Function8a573
+ ret
+
+Function8a57c: ; 8a57c (22:657c)
+ ld [hl], a
+ call Function8a584
+ dec c
+ jr nz, Function8a57c
+ ret
+
+Function8a584: ; 8a584 (22:6584)
+ push af
+ ld a, $4
+ call Function89215
+ inc hl
+ pop af
+ ret
+
+Function8a58d: ; 8a58d (22:658d)
+ ld a, $2d
+ ld bc, $606
+ ld de, $14
+.asm_8a595
+ push bc
+ push hl
+.asm_8a597
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_8a597
+ pop hl
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .asm_8a595
+ ret
+
+Function8a5a3: ; 8a5a3 (22:65a3)
+ ld bc, $603
+ ld de, $14
+.asm_8a5a9
+ push bc
+ push hl
+.asm_8a5ab
+ ld [hli], a
+ dec c
+ jr nz, .asm_8a5ab
+ pop hl
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .asm_8a5a9
+ ret
+
+Function8a5b6: ; 8a5b6 (22:65b6)
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_8a5e5
+ ld de, UnknBGPals + 4 palettes
+ ld bc, 3 palettes
+ call CopyBytes
+ ld hl, Palette_8a5fd
+ ld de, UnknOBPals
+ ld bc, 1 palettes
+ call CopyBytes
+ ld hl, Palette_8a605
+ ld de, UnknOBPals + 1 palettes
+ ld bc, 1 palettes
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ret
+; 8a5e5 (22:65e5)
+
+Palette_8a5e5: ; 8a5e5
+ RGB 31, 31, 31
+ RGB 27, 19, 00
+ RGB 07, 11, 22
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 16, 16, 31
+ RGB 27, 19, 00
+ RGB 00, 00, 00
+
+ RGB 31, 31, 31
+ RGB 31, 00, 00
+ RGB 27, 19, 00
+ RGB 00, 00, 00
+; 8a5fd
+
+Palette_8a5fd: ; 8a5fd
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 00, 00, 00
+ RGB 31, 31, 31
+; 8a605
+
+Palette_8a605: ; 8a605
+ RGB 00, 00, 00
+ RGB 14, 18, 31
+ RGB 16, 16, 31
+ RGB 31, 31, 31
+; 8a60d
+
+Function8a60d: ; 8a60d
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_8a624
+ ld de, UnknOBPals
+ ld bc, 1 palettes
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ret
+; 8a624
+
+Palette_8a624: ; 8a624
+ RGB 31, 31, 31
+ RGB 31, 31, 31
+ RGB 31, 31, 31
+ RGB 00, 00, 00
+; 8a62c
+
+Function8a62c: ; 8a62c (22:662c)
+ call LoadStandardMenuDataHeader
+ call Function891fe
+ xor a
+ call Function8b94a
+ call Function8b677
+.asm_8a639
+ xor a
+ ld [wd033], a
+ ld [wd032], a
+ ld [wd0e3], a
+ call Function8b7bd
+ ld a, c
+ and a
+ jr z, .asm_8a66a
+ ld [MenuSelection], a
+ ld b, a
+ ld a, [wScrollingMenuCursorPosition]
+ inc a
+ ld [wd034], a
+ push bc
+ call Function8b960
+ ld a, c
+ pop bc
+ jr z, .asm_8a639
+ ld c, a
+ ld hl, Jumptable_8a671
+ ld a, b
+ ld [MenuSelection], a
+ ld a, c
+ dec a
+ rst JumpTable
+ jr .asm_8a639
+.asm_8a66a
+ call Function891fe
+ call Function89b28
+ ret
+
+Jumptable_8a671: ; 8a671 (22:6671)
+ dw Function8a679
+ dw Function8a6cd
+ dw Function8a8c3
+ dw Function8a930
+
+
+Function8a679: ; 8a679 (22:6679)
+ call Function891de
+ call ClearBGPalettes
+ call Function893cc
+ call OpenSRAMBank4
+ call Function8931b
+ call Function89844
+ call CloseSRAM
+ call OpenSRAMBank4
+ call Function8939a
+ call Function89856
+ hlcoord 1, 13
+ call Function899fe
+ call Function891ab
+ call CloseSRAM
+.asm_8a6a3
+ call Function89a57
+ jr c, .asm_8a6a3
+ and a
+ jr z, Function8a679
+ ld hl, Jumptable_8a6bc
+ dec a
+ rst JumpTable
+ jr c, Function8a679
+ call Function891fe
+ call Function8b677
+ call Function89448
+ ret
+
+Jumptable_8a6bc: ; 8a6bc (22:66bc)
+ dw Function8a6c0
+ dw Function8a6c5
+
+
+Function8a6c0: ; 8a6c0 (22:66c0)
+ call PlayClickSFX
+ and a
+ ret
+
+Function8a6c5: ; 8a6c5 (22:66c5)
+ call PlayClickSFX
+ call Function89d0d
+ scf
+ ret
+
+Function8a6cd: ; 8a6cd (22:66cd)
+ call Function891de
+ call ClearBGPalettes
+ call Function893cc
+ call OpenSRAMBank4
+ call Function8931b
+ call Function89844
+ call Function8a757
+ call CloseSRAM
+.asm_8a6e5
+ call OpenSRAMBank4
+ call Function8931b
+ call Function89856
+ call Function89a2e
+ call Function891ab
+ xor a
+ ld [wd02f], a
+ call CloseSRAM
+.asm_8a6fb
+ call Function89b97
+ call Function89c67
+ jr c, .asm_8a718
+ ld a, b
+ and a
+ jr z, .asm_8a6fb
+ call PlayClickSFX
+ call Function89448
+ ld a, [wd011]
+ ld hl, Jumptable_8a74f
+ rst JumpTable
+ jr nc, .asm_8a6e5
+ jr .asm_8a742
+.asm_8a718
+ call OpenSRAMBank4
+ call Function8a765
+ call CloseSRAM
+ jr nc, .asm_8a73f
+ call Mobile22_SetBGMapMode0
+ call Function89448
+ call Function89a23
+ hlcoord 1, 13
+ ld de, String_89135
+ call PlaceString
+ call WaitBGMap
+ ld a, $2
+ call Function89254
+ jr c, .asm_8a6e5
+.asm_8a73f
+ call CloseSRAM
+.asm_8a742
+ call ClearBGPalettes
+ call Function89448
+ call Function891d3
+ call Function8b677
+ ret
+
+Jumptable_8a74f: ; 8a74f (22:674f)
+ dw Function8a78c
+ dw Function8a7cb
+ dw Function8a818
+ dw Function8a8a1
+
+
+Function8a757: ; 8a757 (22:6757)
+ call Function8939a
+ xor a
+ ld [wd010], a
+ ld [wd011], a
+ ld [wd012], a
+ ret
+
+Function8a765: ; 8a765 (22:6765)
+ call Function8931b
+ push bc
+ ld hl, $0
+ add hl, bc
+ ld de, wd002
+ ld c, $6
+ call Function89185
+ pop bc
+ jr nz, .asm_8a78a
+ push bc
+ ld hl, $11
+ add hl, bc
+ ld de, wd008
+ ld c, $8
+ call Function89185
+ pop bc
+ jr nz, .asm_8a78a
+ and a
+ ret
+.asm_8a78a
+ scf
+ ret
+
+Function8a78c: ; 8a78c (22:678c)
+ call Function891fe
+ ld de, wd002
+ ld b, $5
+ farcall NamingScreen
+ call OpenSRAMBank4
+ call Function8931b
+ push bc
+ ld hl, $0
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld hl, wd002
+ call InitName
+ call CloseSRAM
+ call DelayFrame
+ call JoyTextDelay
+ call Function891de
+ call ClearBGPalettes
+ call Function893cc
+ call OpenSRAMBank4
+ pop bc
+ call Function89844
+ call CloseSRAM
+ and a
+ ret
+
+Function8a7cb: ; 8a7cb (22:67cb)
+ ld a, [MenuSelection]
+ push af
+ call Function891de
+ ld de, wd008
+ ld c, $0
+ farcall Function17a68f
+ jr c, .asm_8a7f4
+ ld hl, wd008
+ ld a, $ff
+ ld bc, $8
+ call ByteFill
+ ld h, d
+ ld l, e
+ ld de, wd008
+ ld c, $8
+ call Function89193
+.asm_8a7f4
+ pop af
+ ld [MenuSelection], a
+ call Function891de
+ call ClearBGPalettes
+ call Function893cc
+ call OpenSRAMBank4
+ call Function8931b
+ call Function89844
+ call Function89856
+ call Function89a2e
+ call Function891ab
+ call CloseSRAM
+ and a
+ ret
+
+Function8a818: ; 8a818 (22:6818)
+ call Function89a23
+ ld hl, wd002
+ call Function89331
+ jr c, .asm_8a875
+ ld hl, wd008
+ call Function89b45
+ jr nc, .asm_8a87a
+ call OpenSRAMBank4
+ call Function8a765
+ jr nc, .asm_8a863
+ call Function8931b
+ push bc
+ ld hl, $0
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld hl, wd002
+ ld c, $6
+ call Function89193
+ pop bc
+ ld hl, $11
+ add hl, bc
+ ld d, h
+ ld e, l
+ ld hl, wd008
+ ld c, $8
+ call Function89193
+ hlcoord 1, 13
+ ld de, .string_8a868
+ call PlaceString
+ call WaitBGMap
+ call JoyWaitAorB
+.asm_8a863
+ call CloseSRAM
+ scf
+ ret
+; 8a868 (22:6868)
+
+.string_8a868
+ db "めいし", $1f, "かきかえ まし", $22, "@"
+
+.asm_8a875
+ ld de, String_8a88b
+ jr .asm_8a87d
+.asm_8a87a
+ ld de, String_8911c
+.asm_8a87d
+ hlcoord 1, 13
+ call PlaceString
+ call WaitBGMap
+ call JoyWaitAorB
+ and a
+ ret
+; 8a88b (22:688b)
+
+String_8a88b: ; 8a88b
+ db "おともだち", $25, "なまえが"
+ next "かかれて いません!@"
+; 8a8a1
+
+Function8a8a1: ; 8a8a1 (22:68a1)
+ call OpenSRAMBank4
+ call Function8a765
+ call CloseSRAM
+ jr nc, .asm_8a8bf
+ call Function89a23
+ hlcoord 1, 13
+ ld de, String_89135
+ call PlaceString
+ ld a, $2
+ call Function89254
+ jr c, .asm_8a8c1
+.asm_8a8bf
+ scf
+ ret
+.asm_8a8c1
+ and a
+ ret
+
+Function8a8c3: ; 8a8c3 (22:68c3)
+ call Function891de
+ call ClearBGPalettes
+ call Function893cc
+ call OpenSRAMBank4
+ call Function8931b
+ call Function89844
+ call Function8939a
+ call Function89856
+ call CloseSRAM
+ call Function891ab
+ hlcoord 1, 13
+ ld de, String_8a919
+ call PlaceString
+ ld a, $2
+ call Function89254
+ jr c, .asm_8a90f
+ call OpenSRAMBank4
+ call Function892b4
+ call CloseSRAM
+ call Function89a23
+ call Mobile22_SetBGMapMode0
+ hlcoord 1, 13
+ ld de, String_8a926
+ call PlaceString
+ call WaitBGMap
+ call JoyWaitAorB
+.asm_8a90f
+ call Function89448
+ call Function891fe
+ call Function8b677
+ ret
+; 8a919 (22:6919)
+
+String_8a919: ; 8a919
+ db "このデータ", $1f, "けしますか?@"
+; 8a926
+
+String_8a926: ; 8a926
+ db "データ", $1f, "けしまし", $22, "@"
+; 8a930
+
+Function8a930: ; 8a930 (22:6930)
+ ld a, [MenuSelection]
+ push af
+ xor a
+ ld [wd032], a
+ ld a, $1
+ ld [wd033], a
+ ld a, [wd034]
+ ld [wd0e3], a
+.asm_8a943
+ call Function8b7bd
+ ld a, [wMenuJoypad]
+ and $1
+ jr nz, .asm_8a953
+ ld a, c
+ and a
+ jr nz, .asm_8a943
+ pop af
+ ret
+.asm_8a953
+ call OpenSRAMBank4
+ pop af
+ cp c
+ jr z, .asm_8a995
+ push bc
+ ld [MenuSelection], a
+ call Function8931b
+ push bc
+ ld h, b
+ ld l, c
+ ld de, wd002
+ ld bc, $25
+ call CopyBytes
+ pop de
+ pop bc
+ ld a, c
+ ld [MenuSelection], a
+ call Function8931b
+ push bc
+ ld h, b
+ ld l, c
+ ld bc, $25
+ call CopyBytes
+ pop de
+ ld hl, wd002
+ ld bc, $25
+ call CopyBytes
+ ld de, SFX_SWITCH_POKEMON
+ call WaitPlaySFX
+ ld de, SFX_SWITCH_POKEMON
+ call WaitPlaySFX
+.asm_8a995
+ call CloseSRAM
+ ret
+
+Function8a999: ; 8a999 (22:6999)
+ ld hl, MenuDataHeader_0x8a9c9
+ call LoadMenuDataHeader
+ ld c, $1
+.asm_8a9a1
+ call Function8a9ce
+ jr c, .asm_8a9bb
+ push bc
+ push de
+ call LoadStandardMenuDataHeader
+ pop de
+ dec e
+ ld a, e
+ ld hl, Jumptable_8a9c5
+ rst JumpTable
+ call Function891fe
+ call Function89b28
+ pop bc
+ jr .asm_8a9a1
+.asm_8a9bb
+ call Function89209
+ call CloseWindow
+ call Function8920f
+ ret
+
+Jumptable_8a9c5: ; 8a9c5 (22:69c5)
+ dw Function8aa0a
+ dw Function8ab3b
+; 8a9c9 (22:69c9)
+
+MenuDataHeader_0x8a9c9: ; 0x8a9c9
+ db $40 ; flags
+ db 04, 11 ; start coords
+ db 11, 18 ; end coords
+; 8a9ce
+
+Function8a9ce: ; 8a9ce (22:69ce)
+ push bc
+ decoord 11, 4
+ ld b, $6
+ ld c, $6
+ call Function89b3b
+ pop bc
+ ld a, c
+ ld hl, MenuDataHeader_0x8a9f2
+ call Function89d5e
+ ld hl, Function8aa09
+ call Function89d85
+ jr c, .asm_8a9ed
+ ld c, a
+ ld e, a
+ and a
+ ret
+.asm_8a9ed
+ ld c, a
+ ld e, $0
+ scf
+ ret
+; 8a9f2 (22:69f2)
+
+MenuDataHeader_0x8a9f2: ; 0x8a9f2
+ db $40 ; flags
+ db 04, 11 ; start coords
+ db 11, 18 ; end coords
+ dw MenuData2_0x8a9fa
+ db 1 ; default option
+; 0x8a9fa
+
+MenuData2_0x8a9fa: ; 0x8a9fa
+ db $a0 ; flags
+ db 3 ; items
+ db "へんしゅう@"
+ db "みる@"
+ db "やめる@"
+; 0x8aa09
+
+Function8aa09: ; 8aa09
+ ret
+; 8aa0a
+
+Function8aa0a: ; 8aa0a (22:6a0a)
+ ld a, $1
+ ld [wd02f], a
+ ld [wd011], a
+ xor a
+ ld [wd010], a
+ ld [wd012], a
+ call OpenSRAMBank4
+ ld hl, $a603
+ ld de, wd008
+ call Function89381
+ call CloseSRAM
+ call Function891fe
+ call ClearBGPalettes
+ call Function893cc
+ call Function89807
+ call Function89492
+ call Function894ca
+.asm_8aa3a
+ call Function8987f
+ call Function89a2e
+ call Function891ab
+.asm_8aa43
+ call Function89b97
+ call Function89c67
+ jr c, .asm_8aa61
+ ld a, b
+ and a
+ jr z, .asm_8aa43
+ call PlayClickSFX
+ call Function89448
+ ld a, [wd011]
+ dec a
+ ld hl, Jumptable_8aa6d
+ rst JumpTable
+ jr nc, .asm_8aa3a
+ jr .asm_8aa69
+.asm_8aa61
+ call Function89448
+ call Function8ab11
+ jr nc, .asm_8aa3a
+.asm_8aa69
+ call Function89448
+ ret
+
+Jumptable_8aa6d: ; 8aa6d (22:6a6d)
+ dw Function8aa73
+ dw Function8aab6
+ dw Function8ab11
+
+
+Function8aa73: ; 8aa73 (22:6a73)
+ ld a, [MenuSelection]
+ ld e, a
+ push de
+ call Function891de
+ ld de, wd008
+ ld c, $0
+ farcall Function17a68f
+ jr c, .asm_8aa9d
+ ld hl, wd008
+ ld a, $ff
+ ld bc, $8
+ call ByteFill
+ ld h, d
+ ld l, e
+ ld de, wd008
+ ld c, $8
+ call Function89193
+.asm_8aa9d
+ call Function891fe
+ call ClearBGPalettes
+ call Function893cc
+ call Function89807
+ call Function89492
+ call Function894ca
+ pop de
+ ld a, e
+ ld [MenuSelection], a
+ and a
+ ret
+
+Function8aab6: ; 8aab6 (22:6ab6)
+ call Function89a23
+ ld hl, wd008
+ call Function89b45
+ jr nc, Function8ab00
+ call OpenSRAMBank4
+ ld de, wd008
+ ld hl, $a603
+ ld c, $8
+ call Function89185
+ jr z, .asm_8aaeb
+ ld hl, wd008
+ ld de, $a603
+ ld c, $8
+ call Function89193
+ hlcoord 1, 13
+ ld de, String_8aaf0
+ call PlaceString
+ call WaitBGMap
+ call JoyWaitAorB
+.asm_8aaeb
+ call CloseSRAM
+ scf
+ ret
+; 8aaf0 (22:6af0)
+
+String_8aaf0: ; 8aaf0
+ db "あたらしい めいし<PKMN>できまし<LNBRK>@"
+; 8ab00
+
+Function8ab00: ; 8ab00
+ ld de, String_8911c
+ hlcoord 1, 13
+ call PlaceString
+ call WaitBGMap
+ call Mobile22_ButtonSound
+ and a
+ ret
+
+Function8ab11: ; 8ab11 (22:6b11)
+ call OpenSRAMBank4
+ ld hl, $a603
+ ld de, wd008
+ ld c, $8
+ call Function89185
+ call CloseSRAM
+ jr z, .asm_8ab37
+ call Function89a23
+ hlcoord 1, 13
+ ld de, String_89135
+ call PlaceString
+ ld a, $2
+ call Function89254
+ jr c, .asm_8ab39
+.asm_8ab37
+ scf
+ ret
+.asm_8ab39
+ and a
+ ret
+
+Function8ab3b: ; 8ab3b (22:6b3b)
+.pressed_start
+ call Function891fe
+ call ClearBGPalettes
+ call Function893cc
+ call Function89807
+ call Function89492
+ call Function894ca
+ call OpenSRAMBank4
+ ld hl, $a603
+ ld de, wd008
+ call Function89381
+ call CloseSRAM
+ call Function8987f
+ call OpenSRAMBank4
+ hlcoord 1, 13
+ ld bc, $a007
+ call Function89a0c
+ call CloseSRAM
+ call Function891ab
+ call .JoypadLoop
+ jr c, .pressed_start
+ ret
+
+.JoypadLoop: ; 8ab77 (22:6b77)
+ call JoyTextDelay_ForcehJoyDown
+ bit A_BUTTON_F, c
+ jr nz, .a_b_button
+ bit B_BUTTON_F, c
+ jr nz, .a_b_button
+ bit START_F, c
+ jr z, .JoypadLoop
+ call PlayClickSFX
+ call Function89d0d
+ scf
+ ret
+
+.a_b_button
+ call PlayClickSFX
+ and a
+ ret
+
+Function8ab93: ; 8ab93 (22:6b93)
+ call ClearBGPalettes
+ call LoadStandardMenuDataHeader
+ farcall Function105688
+ call ClearSprites
+ call Function891fe
+ call Function89b28
+ ret
+; 8aba9 (22:6ba9)
+
+Function8aba9: ; 8aba9
+ ld a, $2
+ call Function8b94a
+ ld a, $1
+ ld [wd032], a
+.asm_8abb3
+ call Function891fe
+ call Function8b677
+.asm_8abb9
+ call Function8b7bd
+ jr z, .asm_8abdf
+ ld a, c
+ ld [MenuSelection], a
+ call OpenSRAMBank4
+ call Function8931b
+ ld hl, $0011
+ add hl, bc
+ call Function89b45
+ call CloseSRAM
+ jr c, .asm_8abe2
+ ld de, SFX_WRONG
+ call WaitPlaySFX
+ call CloseSRAM
+ jr .asm_8abb9
+
+.asm_8abdf
+ xor a
+ ld c, a
+ ret
+
+.asm_8abe2
+ call PlayClickSFX
+.asm_8abe5
+ call Function891de
+ call ClearBGPalettes
+ call Function893cc
+ call OpenSRAMBank4
+ call Function8931b
+ call Function89844
+ call CloseSRAM
+ call OpenSRAMBank4
+ call Function8939a
+ call Function89856
+ hlcoord 1, 13
+ call Function899fe
+ call CloseSRAM
+ call Function891ab
+.asm_8ac0f
+ call Function89a57
+ jr c, .asm_8ac0f
+ and a
+ jr z, .asm_8abe5
+ cp $2
+ jr z, .asm_8ac0f
+ hlcoord 0, 12
+ ld b, $4
+ ld c, $12
+ call TextBox
+ hlcoord 1, 14
+ ld de, String_8ac3b
+ call PlaceString
+ ld a, $1
+ call Function8925e
+ jp c, .asm_8abb3
+ ld a, [MenuSelection]
+ ld c, a
+ ret
+; 8ac3b
+
+String_8ac3b: ; 8ac3b
+ db "こ", $25, "ともだち", $1d, "でんわを"
+ next "かけますか?@"
+; 8ac4e
+
+Function8ac4e: ; 8ac4e
+ xor a
+ ld [MenuSelection], a
+ push de
+ call Function891de
+ call ClearBGPalettes
+ call Function893cc
+ pop bc
+ call Function89844
+ call Function8939a
+ call Function89856
+ hlcoord 1, 13
+ call Function899fe
+ call Function891ab
+ ret
+; 8ac70
+
+Function8ac70: ; 8ac70
+ push de
+ ld a, $3
+ call Function8b94a
+
+Function8ac76: ; 8ac76
+ call Function891fe
+ call Function8b677
+
+Function8ac7c: ; 8ac7c
+ call Function8b7bd
+ jr z, .asm_8acf0
+ ld a, c
+ ld [wd02f], a
+ ld [MenuSelection], a
+ call OpenSRAMBank4
+ call Function8931b
+ call Function8932d
+ call CloseSRAM
+ jr nc, .asm_8acb0
+ call OpenSRAMBank4
+ ld hl, $0011
+ add hl, bc
+ call Function89b45
+ call CloseSRAM
+ jr nc, .asm_8accc
+ call OpenSRAMBank4
+ call Function892b7
+ call CloseSRAM
+ jr .asm_8accc
+
+.asm_8acb0
+ call Function8ad0b
+ jr c, Function8ac76
+ and a
+ jr nz, .asm_8accc
+ call OpenSRAMBank4
+ ld h, b
+ ld l, c
+ ld d, $0
+ ld e, $6
+ add hl, de
+ ld d, h
+ ld e, l
+ pop hl
+ ld c, $1f
+ call Function89193
+ jr .asm_8ace4
+
+.asm_8accc
+ pop hl
+ call OpenSRAMBank4
+ ld d, b
+ ld e, c
+ ld c, $6
+ call Function89193
+ ld a, $6
+ add e
+ ld e, a
+ ld a, $0
+ adc d
+ ld d, a
+ ld c, $1f
+ call Function89193
+
+.asm_8ace4
+ call CloseSRAM
+ call LoadStandardFont
+ ld a, [wd02f]
+ ld c, a
+ and a
+ ret
+
+.asm_8acf0
+ ld hl, UnknownText_0x8ad06
+ call PrintText
+ ld a, $2
+ call Function89259
+ jp c, Function8ac7c
+ call LoadStandardFont
+ pop de
+ ld c, $0
+ scf
+ ret
+; 8ad06
+
+UnknownText_0x8ad06: ; 0x8ad06
+ ; Finish registering CARDS?
+ text_jump UnknownText_0x1c554a
+ db "@"
+; 0x8ad0b
+
+Function8ad0b: ; 8ad0b
+.asm_8ad0b
+ ld a, [MenuSelection]
+ ld [wd02f], a
+ call Function891de
+ call ClearBGPalettes
+ call Function893cc
+ call OpenSRAMBank4
+ call Function8931b
+ push bc
+ call Function89844
+ call Function8939a
+ call Function89856
+ hlcoord 1, 13
+ call Function899fe
+ call CloseSRAM
+ call Function891ab
+ pop bc
+.asm_8ad37
+ push bc
+ call Function89a57
+ pop bc
+ jr c, .asm_8ad37
+ and a
+ jr z, .asm_8ad0b
+ cp $2
+ jr z, .asm_8ad37
+ call Mobile22_SetBGMapMode0
+ push bc
+ hlcoord 0, 12
+ ld b, $4
+ ld c, $12
+ call TextBox
+ ld de, String_8ad89
+ hlcoord 1, 14
+ call PlaceString
+ ld a, $2
+ call Function8925e
+ jr c, .asm_8ad87
+ call Mobile22_SetBGMapMode0
+ hlcoord 0, 12
+ ld b, $4
+ ld c, $12
+ call TextBox
+ ld de, String_8ad9c
+ hlcoord 1, 14
+ call PlaceString
+ ld a, $1
+ call Function8925e
+ jr c, .asm_8ad84
+ ld a, $0
+ jr .asm_8ad86
+
+.asm_8ad84
+ ld a, $1
+
+.asm_8ad86
+ and a
+
+.asm_8ad87
+ pop bc
+ ret
+; 8ad89
+
+String_8ad89: ; 8ad89
+ db "こ", $25, "めいし", $1f, "けして"
+ next "いれかえますか?@"
+; 8ad9c
+
+String_8ad9c: ; 8ad9c
+ db "おともだち", $25, "なまえを"
+ next "のこして おきますか?@"
+; 8adb3
+
+Function8adb3: ; 8adb3
+ call Function891de
+ call Function8a262
+ push af
+ call Function891de
+ pop af
+ ret
+; 8adbf
+
+Function8adbf: ; 8adbf
+ call OpenSRAMBank4
+ ld hl, $a603
+ call Function89b45
+ call CloseSRAM
+ ret
+; 8adcc
+
+Function8adcc: ; 8adcc
+ call OpenSRAMBank4
+ call Function8b3b0
+ call CloseSRAM
+ ret nc
+ cp $2
+ ret z
+ scf
+ ret
+; 8addb
diff --git a/mobile/mobile_22_2.asm b/mobile/mobile_22_2.asm
new file mode 100644
index 000000000..49780d4aa
--- /dev/null
+++ b/mobile/mobile_22_2.asm
@@ -0,0 +1,1162 @@
+Function8b342:: ; 8b342
+; Loads the secondary map header pointer, then runs through a
+; dw with three dummy functions. Spends a lot of energy
+; doing pretty much nothing.
+ call GetSecondaryMapHeaderPointer
+ ld d, h
+ ld e, l
+
+; Everything between here and "ret" is useless.
+ xor a
+.loop
+ push af
+ ld hl, .dw
+ rst JumpTable
+ pop af
+ inc a
+ cp 3
+ jr nz, .loop
+ ret
+; 8b354
+
+.dw ; 8b354
+ dw .zero
+ dw .one
+ dw .two
+; 8b35a
+
+.zero ; 8b35a
+ mobile
+; 8b35b
+
+.one ; 8b35b
+ mobile
+; 8b35c
+
+.two ; 8b35c
+ mobile
+; 8b35d
+
+Function8b35d: ; 8b35d
+ ld a, h
+ cp d
+ ret nz
+ ld a, l
+ cp e
+ ret
+; 8b363
+
+Function8b363: ; 8b363
+ push bc
+ farcall Mobile_AlwaysReturnNotCarry
+ pop bc
+ ret
+; 8b36c
+
+Function8b36c: ; 8b36c (22:736c)
+ ; [bc + (0:4)] = -1
+ push bc
+ ld h, b
+ ld l, c
+ ld bc, 4
+ ld a, -1
+ call ByteFill
+ pop bc
+ ret
+
+Function8b379: ; 8b379 (22:7379)
+ ; d = [bc + e]
+ push bc
+ ld a, c
+ add e
+ ld c, a
+ ld a, $0
+ adc b
+ ld b, a
+ ld a, [bc]
+ ld d, a
+ pop bc
+ ret
+
+Function8b385: ; 8b385 (22:7385)
+ ; [bc + e] = d
+ push bc
+ ld a, c
+ add e
+ ld c, a
+ ld a, $0
+ adc b
+ ld b, a
+ ld a, d
+ ld [bc], a
+ pop bc
+ ret
+
+Function8b391: ; 8b391 (22:7391)
+ ; find first e in range(4) such that [bc + e] == -1
+ ; if none exist, return carry
+ push bc
+ ld e, 0
+ ld d, 4
+.loop
+ ld a, [bc]
+ inc bc
+ cp -1
+ jr z, .done
+ inc e
+ dec d
+ jr nz, .loop
+ dec e
+ scf
+.done
+ pop bc
+ ret
+
+Function8b3a4: ; 8b3a4 (22:73a4)
+ ; strcmp(hl, bc, 4)
+ push de
+ push bc
+ ld d, b
+ ld e, c
+ ld c, 4
+ call Function89185
+ pop bc
+ pop de
+ ret
+
+Function8b3b0: ; 8b3b0 (22:73b0)
+ ld bc, $a037 ; 4:a037
+ ld a, [$a60b]
+ and a
+ jr z, .asm_8b3c2
+ cp $3
+ jr nc, .asm_8b3c2
+ call Function8b391
+ jr c, .asm_8b3c9
+.asm_8b3c2
+ call Function8b36c
+ xor a
+ ld [$a60b], a
+.asm_8b3c9
+ ld a, [$a60b]
+ ret
+
+Function8b3cd: ; 8b3cd (22:73cd)
+ push de
+ push bc
+ ld e, $4
+.asm_8b3d1
+ ld a, [bc]
+ inc bc
+ call Function8998b
+ inc hl
+ dec e
+ jr nz, .asm_8b3d1
+ pop bc
+ pop de
+ ret
+
+Function8b3dd: ; 8b3dd (22:73dd)
+ push de
+ push bc
+ call JoyTextDelay_ForcehJoyDown ; joypad
+ ld a, c
+ pop bc
+ pop de
+ bit A_BUTTON_F, a
+ jr nz, .a_button
+ bit B_BUTTON_F, a
+ jr nz, .b_button
+ bit D_UP_F, a
+ jr nz, .d_up
+ bit D_DOWN_F, a
+ jr nz, .d_down
+ and a
+ ret
+
+.a_button
+ ld a, e
+ cp $3
+ jr z, .e_is_zero
+ inc e
+ ld d, 0
+ call Function8b385
+ xor a
+ ld [wd010], a
+ ret
+
+.e_is_zero
+ call PlayClickSFX
+ ld d, $0
+ scf
+ ret
+
+.b_button
+ ld a, e
+ and a
+ jr nz, .e_is_not_zero
+ call PlayClickSFX
+ ld d, -1
+ call Function8b385
+ ld d, 1
+ scf
+ ret
+
+.e_is_not_zero
+ ld d, -1
+ call Function8b385
+ dec e
+ xor a
+ ld [wd010], a
+ ret
+
+.d_up
+ call Function8b379
+ ld a, d
+ cp $a
+ jr c, .less_than_10_up_1
+ ld d, $9
+.less_than_10_up_1
+ inc d
+ ld a, d
+ cp $a
+ jr c, .less_than_10_up_2
+ ld d, $0
+.less_than_10_up_2
+ call Function8b385
+ xor a
+ ld [wd010], a
+ ret
+
+.d_down
+ call Function8b379
+ ld a, d
+ cp $a
+ jr c, .less_than_10_down
+ ld d, $0
+.less_than_10_down
+ ld a, d
+ dec d
+ and a
+ jr nz, .nonzero_down
+ ld d, $9
+.nonzero_down
+ call Function8b385
+ xor a
+ ld [wd010], a
+ ret
+
+Function8b45c: ; 8b45c (22:745c)
+ call Function8b36c
+ xor a
+ ld [wd010], a
+ ld [wd012], a
+ call Function8b391
+ ld d, $0
+ call Function8b385
+.asm_8b46e
+ call Mobile22_SetBGMapMode0
+ call Function8b493
+ call Function8b4cc
+ call Function8b518
+ call Function89b78
+ push bc
+ call Function8b4fd
+ call Function89c44
+ ld a, $1
+ ld [hBGMapMode], a
+ pop bc
+ call Function8b3dd
+ jr nc, .asm_8b46e
+ ld a, d
+ and a
+ ret z
+ scf
+ ret
+
+Function8b493: ; 8b493 (22:7493)
+ push bc
+ call Mobile22_SetBGMapMode0
+ call Function8b521
+ ld hl, Jumptable_8b4a0
+ pop bc
+ rst JumpTable
+ ret
+
+Jumptable_8b4a0: ; 8b4a0 (22:74a0)
+ dw Function8b4a4
+ dw Function8b4b8
+
+
+Function8b4a4: ; 8b4a4 (22:74a4)
+ push bc
+ push de
+ call Function8b4d8
+ call TextBox
+ pop de
+ pop bc
+ call Function8b4cc
+ call Function8b518
+ call Function8b3cd
+ ret
+
+Function8b4b8: ; 8b4b8 (22:74b8)
+ push bc
+ push de
+ call Function8b4ea
+ call Function89b3b
+ pop de
+ pop bc
+ call Function8b4cc
+ call Function8b518
+ call Function8b3cd
+ ret
+
+Function8b4cc: ; 8b4cc (22:74cc)
+ push bc
+ ld hl, Unknown_8b529
+ call Function8b50a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop bc
+ ret
+
+Function8b4d8: ; 8b4d8 (22:74d8)
+ ld hl, Unknown_8b529
+ call Function8b50a
+ push hl
+ inc hl
+ inc hl
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld c, a
+ pop hl
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+
+Function8b4ea: ; 8b4ea (22:74ea)
+ ld hl, Unknown_8b529
+ call Function8b50a
+ push hl
+ inc hl
+ inc hl
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld c, a
+ pop hl
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ ret
+
+Function8b4fd: ; 8b4fd (22:74fd)
+ ld hl, Unknown_8b529 + 4
+ call Function8b50a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld d, a
+ ret
+
+Function8b50a: ; 8b50a (22:750a)
+ ld a, [wd02e]
+ and a
+ ret z
+ ld b, $0
+ ld c, $8
+.asm_8b513
+ add hl, bc
+ dec a
+ jr nz, .asm_8b513
+ ret
+
+Function8b518: ; 8b518 (22:7518)
+ push de
+ ld d, $0
+ ld e, $14
+ add hl, de
+ inc hl
+ pop de
+ ret
+
+Function8b521: ; 8b521 (22:7521)
+ ld hl, Unknown_8b529 + 7
+ call Function8b50a
+ ld a, [hl]
+ ret
+; 8b529 (22:7529)
+
+Unknown_8b529: ; 8b529
+ dwcoord 2, 5
+ db 1, 4, $20, $49, 0, 1
+ dwcoord 7, 4
+ db 1, 4, $48, $41, 0, 0
+; 8b539
+
+Function8b539: ; 8b539 (22:7539)
+ ld bc, wd017
+ call Function8b36c
+ xor a
+ ld [wd012], a
+ ld [wd02e], a
+ call Function8b493
+ call Function8b4fd
+ ld e, $0
+ call Function89c44
+ call CGBOnly_CopyTilemapAtOnce
+ ret
+
+Function8b555: ; 8b555 (22:7555)
+.loop
+ ld hl, UnknownText_0x8b5ce
+ call PrintText
+ ld bc, wd017
+ call Function8b45c
+ jr c, .asm_8b5c8
+ call Function89448
+ ld bc, wd017
+ call Function8b493
+ ld bc, wd017
+ call Function8b664
+ jr nz, .asm_8b57c
+ ld hl, UnknownText_0x8b5e2
+ call PrintText
+ jr .loop
+
+.asm_8b57c
+ ld hl, UnknownText_0x8b5d3
+ call PrintText
+ ld bc, wd013
+ call Function8b45c
+ jr c, .loop
+ ld bc, wd017
+ ld hl, wd013
+ call Function8b3a4
+ jr z, .strings_equal
+ call Function89448
+ ld bc, wd013
+ call Function8b493
+ ld hl, UnknownText_0x8b5d8
+ call PrintText
+ jr .asm_8b57c
+
+.strings_equal
+ call OpenSRAMBank4
+ ld hl, wd013
+ ld de, $a037 ; 4:a037
+ ld bc, $4
+ call CopyBytes
+ call CloseSRAM
+ call Function89448
+ ld bc, wd013
+ call Function8b493
+ ld hl, UnknownText_0x8b5dd
+ call PrintText
+ and a
+.asm_8b5c8
+ push af
+ call Function89448
+ pop af
+ ret
+; 8b5ce (22:75ce)
+
+UnknownText_0x8b5ce: ; 0x8b5ce
+ ; Please enter any four-digit number.
+ text_jump UnknownText_0x1bc187
+ db "@"
+; 0x8b5d3
+
+UnknownText_0x8b5d3: ; 0x8b5d3
+ ; Enter the same number to confirm.
+ text_jump UnknownText_0x1bc1ac
+ db "@"
+; 0x8b5d8
+
+UnknownText_0x8b5d8: ; 0x8b5d8
+ ; That's not the same number.
+ text_jump UnknownText_0x1bc1cf
+ db "@"
+; 0x8b5dd
+
+UnknownText_0x8b5dd: ; 0x8b5dd
+ ; Your PASSCODE has been set. Enter this number next time to open the CARD FOLDER.
+ text_jump UnknownText_0x1bc1eb
+ db "@"
+; 0x8b5e2
+
+UnknownText_0x8b5e2: ; 0x8b5e2
+ ; 0000 is invalid!
+ text_jump UnknownText_0x1bc23e
+ db "@"
+; 0x8b5e7
+
+Function8b5e7: ; 8b5e7 (22:75e7)
+ ld bc, wd013
+ call Function8b36c
+ xor a
+ ld [wd012], a
+ ld [wd02e], a
+ call Function8b493
+ call Function891ab
+ call Function8b4fd
+ ld e, $0
+ call Function89c44
+.asm_8b602
+ ld hl, UnknownText_0x8b642
+ call PrintText
+ ld bc, wd013
+ call Function8b45c
+ jr c, .asm_8b63c
+ call Function89448
+ ld bc, wd013
+ call Function8b493
+ call OpenSRAMBank4
+ ld hl, $a037 ; 4:a037
+ call Function8b3a4
+ call CloseSRAM
+ jr z, .asm_8b635
+ ld hl, UnknownText_0x8b647
+ call PrintText
+ ld bc, wd013
+ call Function8b36c
+ jr .asm_8b602
+.asm_8b635
+ ld hl, UnknownText_0x8b64c
+ call PrintText
+ and a
+.asm_8b63c
+ push af
+ call Function89448
+ pop af
+ ret
+; 8b642 (22:7642)
+
+UnknownText_0x8b642: ; 0x8b642
+ ; Enter the CARD FOLDER PASSCODE.
+ text_jump UnknownText_0x1bc251
+ db "@"
+; 0x8b647
+
+UnknownText_0x8b647: ; 0x8b647
+ ; Incorrect PASSCODE!
+ text_jump UnknownText_0x1bc272
+ db "@"
+; 0x8b64c
+
+UnknownText_0x8b64c: ; 0x8b64c
+ ; CARD FOLDER open.@ @
+ text_jump UnknownText_0x1bc288
+ start_asm
+ ld de, SFX_TWINKLE
+ call PlaySFX
+ call WaitSFX
+ ld c, $8
+ call DelayFrames
+ ld hl, .string_8b663
+ ret
+.string_8b663
+ db "@"
+; 8b664
+
+Function8b664: ; 8b664 (22:7664)
+ push bc
+ ld de, $4
+.asm_8b668
+ ld a, [bc]
+ cp $0
+ jr nz, .asm_8b66e
+ inc d
+.asm_8b66e
+ inc bc
+ dec e
+ jr nz, .asm_8b668
+ pop bc
+ ld a, d
+ cp $4
+ ret
+
+Function8b677: ; 8b677
+ call ClearBGPalettes
+ call DisableLCD
+ call Function8b690
+ call Function8b6bb
+ call Function8b6ed
+ call EnableLCD
+ call Function891ab
+ call SetPalettes
+ ret
+; 8b690
+
+Function8b690: ; 8b690
+ ld hl, GFX_17afa5 + $514
+ ld de, VTiles2
+ ld bc, $160
+ ld a, BANK(GFX_17afa5)
+ call FarCopyBytes
+ ld hl, GFX_17afa5 + $514 + $160 - $10
+ ld de, VTiles2 tile $61
+ ld bc, $10
+ ld a, BANK(GFX_17afa5)
+ call FarCopyBytes
+ ld hl, GFX_17afa5 + $514 + $160
+ ld de, VTiles1 tile $6e
+ ld bc, $10
+ ld a, BANK(GFX_17afa5)
+ call FarCopyBytes
+ ret
+; 8b6bb
+
+Function8b6bb: ; 8b6bb
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_8b6d5
+ ld de, UnknBGPals
+ ld bc, $0018
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ call Function8949c
+ ret
+; 8b6d5
+
+Palette_8b6d5: ; 8b6d5
+ RGB 31, 31, 31
+ RGB 31, 21, 00
+ RGB 14, 07, 03
+ RGB 00, 00, 00
+ RGB 31, 31, 31
+ RGB 31, 21, 00
+ RGB 22, 09, 17
+ RGB 00, 00, 00
+ RGB 31, 31, 31
+ RGB 31, 21, 00
+ RGB 06, 24, 08
+ RGB 00, 00, 00
+; 8b6ed
+
+Function8b6ed: ; 8b6ed
+ hlcoord 0, 0, AttrMap
+ ld bc, $012c
+ xor a
+ call ByteFill
+ hlcoord 0, 14, AttrMap
+ ld bc, $0050
+ ld a, $7
+ call ByteFill
+ ret
+; 8b703
+
+Function8b703: ; 8b703
+ call Mobile22_SetBGMapMode0
+ push hl
+ ld a, $c
+ ld [hli], a
+ inc a
+ call Function8b73e
+ inc a
+ ld [hl], a
+ pop hl
+ push hl
+ push bc
+ ld de, SCREEN_WIDTH
+ add hl, de
+.asm_8b717
+ push hl
+ ld a, $f
+ ld [hli], a
+ ld a, $7f
+ call Function8b73e
+ ld a, $11
+ ld [hl], a
+ pop hl
+ ld de, SCREEN_WIDTH
+ add hl, de
+ dec b
+ jr nz, .asm_8b717
+ call Function8b732
+ pop bc
+ pop hl
+ jr Function8b744
+; 8b732
+
+Function8b732: ; 8b732
+ ld a, $12
+ ld [hli], a
+ ld a, $13
+ call Function8b73e
+ ld a, $14
+ ld [hl], a
+ ret
+; 8b73e
+
+Function8b73e: ; 8b73e
+ ld d, c
+.asm_8b73f
+ ld [hli], a
+ dec d
+ jr nz, .asm_8b73f
+ ret
+; 8b744
+
+Function8b744: ; 8b744
+ ld de, AttrMap - TileMap
+ add hl, de
+ inc b
+ inc b
+ inc c
+ inc c
+ xor a
+.asm_8b74d
+ push bc
+ push hl
+.asm_8b74f
+ ld [hli], a
+ dec c
+ jr nz, .asm_8b74f
+ pop hl
+ ld de, SCREEN_WIDTH
+ add hl, de
+ pop bc
+ dec b
+ jr nz, .asm_8b74d
+ ret
+; 8b75d
+
+Function8b75d: ; 8b75d
+ call Mobile22_SetBGMapMode0
+ hlcoord 0, 0
+ ld a, $1
+ ld bc, SCREEN_WIDTH
+ call ByteFill
+ hlcoord 0, 1
+ ld a, $2
+ ld [hl], a
+ hlcoord 9, 1
+ ld c, $b
+ call Function8b788
+ hlcoord 1, 1
+ ld a, $4
+ ld e, $8
+.asm_8b780
+ ld [hli], a
+ inc a
+ dec e
+ jr nz, .asm_8b780
+ jr Function8b79e
+; 8b787
+
+Function8b787: ; 8b787
+ ret
+; 8b788
+
+Function8b788: ; 8b788
+.asm_8b788
+ ld a, $2
+ ld [hli], a
+ dec c
+ ret z
+ ld a, $1
+ ld [hli], a
+ dec c
+ ret z
+ ld a, $3
+ ld [hli], a
+ dec c
+ ret z
+ ld a, $1
+ ld [hli], a
+ dec c
+ jr nz, .asm_8b788
+ ret
+; 8b79e
+
+Function8b79e: ; 8b79e
+ hlcoord 0, 1, AttrMap
+ ld a, $1
+ ld [hli], a
+ hlcoord 9, 1, AttrMap
+ ld e, $b
+.asm_8b7a9
+ ld a, $2
+ ld [hli], a
+ dec e
+ ret z
+ xor a
+ ld [hli], a
+ dec e
+ ret z
+ ld a, $1
+ ld [hli], a
+ dec e
+ ret z
+ xor a
+ ld [hli], a
+ dec e
+ jr nz, .asm_8b7a9
+ ret
+; 8b7bd
+
+Function8b7bd: ; 8b7bd
+ call Function8b855
+ ld hl, MenuDataHeader_0x8b867
+ call CopyMenuDataHeader
+ ld a, [wd030]
+ ld [wMenuCursorBuffer], a
+ ld a, [wd031]
+ ld [wMenuScrollPosition], a
+ ld a, [wd032]
+ and a
+ jr z, .asm_8b7e0
+ ld a, [wMenuFlags]
+ set 3, a
+ ld [wMenuFlags], a
+
+.asm_8b7e0
+ ld a, [wd0e3]
+ and a
+ jr z, .asm_8b7ea
+ dec a
+ ld [wScrollingMenuCursorPosition], a
+
+.asm_8b7ea
+ hlcoord 0, 2
+ ld b, $b
+ ld c, $12
+ call Function8b703
+ call Function8b75d
+ call UpdateSprites
+ call Function89209
+ call ScrollingMenu
+ call Function8920f
+ ld a, [wMenuJoypad]
+ cp $2
+ jr z, .asm_8b823
+ cp $20
+ jr nz, .asm_8b813
+ call Function8b832
+ jr .asm_8b7ea
+
+.asm_8b813
+ cp $10
+ jr nz, .asm_8b81c
+ call Function8b83e
+ jr .asm_8b7ea
+
+.asm_8b81c
+ ld a, [MenuSelection]
+ cp $ff
+ jr nz, .asm_8b824
+
+.asm_8b823
+ xor a
+
+.asm_8b824
+ ld c, a
+ ld a, [wMenuCursorY]
+ ld [wd030], a
+ ld a, [wMenuScrollPosition]
+ ld [wd031], a
+ ret
+; 8b832
+
+Function8b832: ; 8b832
+ ld a, [wMenuScrollPosition]
+ ld hl, wMenuData2Items
+ sub [hl]
+ jr nc, Function8b84b
+ xor a
+ jr Function8b84b
+; 8b83e
+
+Function8b83e: ; 8b83e
+ ld a, [wMenuScrollPosition]
+ ld hl, wMenuData2Items
+ add [hl]
+ cp $24
+ jr c, Function8b84b
+ ld a, $24
+
+Function8b84b: ; 8b84b
+ ld [wMenuScrollPosition], a
+ ld a, [wMenuCursorY]
+ ld [wMenuCursorBuffer], a
+ ret
+; 8b855
+
+Function8b855: ; 8b855
+ ld a, $28
+ ld hl, wd002
+ ld [hli], a
+ ld c, $28
+ xor a
+.asm_8b85e
+ inc a
+ ld [hli], a
+ dec c
+ jr nz, .asm_8b85e
+ ld a, $ff
+ ld [hl], a
+ ret
+; 8b867
+
+MenuDataHeader_0x8b867: ; 0x8b867
+ db $40 ; flags
+ db 03, 01 ; start coords
+ db 13, 18 ; end coords
+ dw MenuData2_0x8b870
+ db 1 ; default option
+; 0x8b86f
+
+ db 0
+
+MenuData2_0x8b870: ; 0x8b870
+ db $3c ; flags
+ db 5 ; items
+ db 3, 1
+ dbw 0, wd002
+ dba Function8b880
+ dba Function8b88c
+ dba Function8b8c8
+; 8b880
+
+Function8b880: ; 8b880
+ ld h, d
+ ld l, e
+ ld de, MenuSelection
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+ call PrintNum
+ ret
+; 8b88c
+
+Function8b88c: ; 8b88c
+ call OpenSRAMBank4
+ ld h, d
+ ld l, e
+ push hl
+ ld de, String_89116
+ call Function8931b
+ call Function8932d
+ jr c, .asm_8b8a3
+ ld hl, 0
+ add hl, bc
+ ld d, h
+ ld e, l
+
+.asm_8b8a3
+ pop hl
+ push hl
+ call PlaceString
+ pop hl
+ ld d, $0
+ ld e, $6
+ add hl, de
+ push hl
+ ld de, String_89116
+ call Function8931b
+ call Function8934a
+ jr c, .asm_8b8c0
+ ld hl, $0006
+ add hl, bc
+ ld d, h
+ ld e, l
+
+.asm_8b8c0
+ pop hl
+ call PlaceString
+ call CloseSRAM
+ ret
+; 8b8c8
+
+Function8b8c8: ; 8b8c8
+ hlcoord 0, 14
+ ld b, $2
+ ld c, $12
+ call TextBox
+ ld a, [wd033]
+ ld b, 0
+ ld c, a
+ ld hl, Unknown_8b903
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld d, h
+ ld e, l
+ hlcoord 1, 16
+ call PlaceString
+ hlcoord 0, 13
+ ld a, $f
+ ld [hl], a
+ hlcoord 19, 13
+ ld a, $11
+ ld [hl], a
+ ld a, [wMenuScrollPosition]
+ cp $24
+ ret c
+ hlcoord 0, 13
+ ld c, $12
+ call Function8b732
+ ret
+; 8b903
+
+Unknown_8b903: ; 8b903
+ dw String_8b90b
+ dw String_8b919
+ dw String_8b92a
+ dw String_8b938
+
+String_8b90b: db "めいしを えらんでください@" ; Please select a noun.
+String_8b919: db "どの めいしと いれかえますか?@" ; OK to swap with any noun?
+String_8b92a: db "あいてを えらんでください@" ; Please select an opponent.
+String_8b938: db "いれる ところを えらんでください@" ; Please select a location.
+; 8b94a
+
+Function8b94a: ; 8b94a
+ ld [wd033], a
+ xor a
+ ld [wMenuScrollPosition], a
+ ld [wd032], a
+ ld [wd0e3], a
+ ld [wd031], a
+ ld a, $1
+ ld [wd030], a
+ ret
+; 8b960
+
+
+Function8b960: ; 8b960 (22:7960)
+ ld hl, MenuDataHeader_0x8b9ac
+ call LoadMenuDataHeader
+ call Function8b9e9
+ jr c, .asm_8b97a
+ hlcoord 11, 0
+ ld b, $6
+ ld c, $7
+ call Function8b703
+ ld hl, MenuDataHeader_0x8b9b1
+ jr .asm_8b987
+.asm_8b97a
+ hlcoord 11, 0
+ ld b, $a
+ ld c, $7
+ call Function8b703
+ ld hl, MenuDataHeader_0x8b9ca
+.asm_8b987
+ ld a, $1
+ call Function89d5e
+ ld hl, Function8b9ab
+ call Function89d85
+ call ExitMenu
+ jr c, .asm_8b99c
+ call Function8b99f
+ jr nz, .asm_8b99d
+.asm_8b99c
+ xor a
+.asm_8b99d
+ ld c, a
+ ret
+
+Function8b99f: ; 8b99f (22:799f)
+ ld hl, wd002
+ dec a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ cp $ff
+ ret
+; 8b9ab (22:79ab)
+
+Function8b9ab: ; 8b9ab
+ ret
+; 8b9ac
+
+MenuDataHeader_0x8b9ac: ; 0x8b9ac
+ db $40 ; flags
+ db 00, 11 ; start coords
+ db 11, 19 ; end coords
+
+MenuDataHeader_0x8b9b1: ; 0x8b9b1
+ db $40 ; flags
+ db 00, 11 ; start coords
+ db 07, 19 ; end coords
+ dw MenuData2_0x8b9b9
+ db 1 ; default option
+; 0x8b9b9
+
+MenuData2_0x8b9b9: ; 0x8b9b9
+ db $a0 ; flags
+ db 3 ; items
+ db "へんしゅう@" ; EDIT
+ db "いれかえ@" ; REPLACE
+ db "やめる@" ; QUIT
+; 0x8b9ca
+
+MenuDataHeader_0x8b9ca: ; 0x8b9ca
+ db $40 ; flags
+ db 00, 11 ; start coords
+ db 11, 19 ; end coords
+ dw MenuData2_0x8b9d2
+ db 1 ; default option
+; 0x8b9d2
+
+MenuData2_0x8b9d2: ; 0x8b9d2
+ db $a0 ; flags
+ db 5 ; items
+ db "みる@" ; VIEW
+ db "へんしゅう@" ; EDIT
+ db "いれかえ@" ; REPLACE
+ db "けす@" ; ERASE
+ db "やめる@" ; QUIT
+; 0x8b9e9
+
+Function8b9e9: ; 8b9e9 (22:79e9)
+ call OpenSRAMBank4
+ call Function8931b
+ call Function8932d
+ jr nc, .asm_8b9f6
+ jr .asm_8b9ff
+.asm_8b9f6
+ ld hl, $11
+ add hl, bc
+ call Function89b45
+ jr c, .asm_8ba08
+.asm_8b9ff
+ call Function892b4
+ and a
+ ld de, Unknown_8ba1c
+ jr .asm_8ba0c
+.asm_8ba08
+ ld de, Unknown_8ba1f
+ scf
+.asm_8ba0c
+ push af
+ ld hl, wd002
+.asm_8ba10
+ ld a, [de]
+ inc de
+ ld [hli], a
+ cp $ff
+ jr nz, .asm_8ba10
+ call CloseSRAM
+ pop af
+ ret
+; 8ba1c (22:7a1c)
+
+Unknown_8ba1c: ; 8b1ac
+ db 2, 4, -1
+
+Unknown_8ba1f: ; 8ba1f
+ db 1, 2, 4, 3, -1
+; 8ba24
diff --git a/mobile/mobile_40.asm b/mobile/mobile_40.asm
new file mode 100644
index 000000000..fc8ea13cf
--- /dev/null
+++ b/mobile/mobile_40.asm
@@ -0,0 +1,8158 @@
+SECTION "mobile_40", ROMX
+
+Function100000: ; 100000
+; d: 1 or 2
+; e: bank
+; bc: addr
+ ld a, [rSVBK]
+ push af
+ ld a, 1
+ ld [rSVBK], a
+
+ call Function100022
+ call Function1000ba
+ call Function100675
+ call Function100057
+ call Function10016f
+ call Function100276
+
+ push bc
+ call Function100301
+ pop bc
+
+ pop af
+ ld [rSVBK], a
+ ret
+; 100022
+
+Function100022: ; 100022
+ push de
+ push bc
+ call SetRAMStateForMobile
+ pop bc
+ pop de
+ ld a, d
+ ld [wcd21], a
+ ld a, e
+ ld [wcd22], a
+ ld a, c
+ ld [wcd23], a
+ ld a, b
+ ld [wcd24], a
+ farcall Function10127e
+ farcall MobileFunc_106462
+ farcall Function106464 ; load broken gfx
+ farcall Function11615a ; init RAM
+ ld hl, VramState
+ set 1, [hl]
+ ret
+; 100057
+
+Function100057: ; 100057
+ call DisableMobile
+ call ReturnToMapFromSubmenu
+ ld hl, VramState
+ res 1, [hl]
+ ret
+; 100063
+
+SetRAMStateForMobile: ; 100063
+ xor a
+ ld hl, BGMapBuffer
+ ld bc, $65
+ call ByteFill
+ xor a
+ ld hl, wc300
+ ld bc, $100
+ call ByteFill
+ ld a, [rIE]
+ ld [BGMapBuffer], a
+ xor a
+ ld [hMapAnims], a
+ ld [hLCDCPointer], a
+ ret
+; 100082
+
+EnableMobile: ; 100082
+ xor a
+ ld hl, OverworldMap
+ ld bc, OverworldMapEnd - OverworldMap
+ call ByteFill
+
+ di
+ call DoubleSpeed
+ xor a
+ ld [rIF], a
+ ld a, 1 << VBLANK + 1 << LCD_STAT + 1 << TIMER + 1 << SERIAL
+ ld [rIE], a
+ xor a
+ ld [hMapAnims], a
+ ld [hLCDCPointer], a
+ ld a, $01
+ ld [hMobileReceive], a
+ ld [hMobile], a
+ ei
+
+ ret
+; 0x1000a4
+
+DisableMobile: ; 1000a4
+ di
+ xor a
+ ld [hMobileReceive], a
+ ld [hMobile], a
+ xor a
+ ld [hVBlank], a
+ call NormalSpeed
+ xor a
+ ld [rIF], a
+ ld a, [BGMapBuffer]
+ ld [rIE], a
+ ei
+ ret
+; 1000ba
+
+Function1000ba: ; 1000ba
+.loop
+ ; call [wcd22]:([wcd23][wcd24] + [wMobileCommsJumptableIndex])
+ ld hl, wcd23
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [wMobileCommsJumptableIndex]
+ ld e, a
+ ld d, 0
+ add hl, de
+ add hl, de
+ ld a, [wcd22]
+ call GetFarHalfword
+ ld a, [wcd22]
+ rst FarCall
+
+ call Function1000e8
+ call Function1000fa
+ call Function100144
+ call Function100163
+ ld a, [wcd2b]
+ and a
+ jr z, .loop
+ call DelayFrame
+ ret
+; 1000e8
+
+Function1000e8: ; 1000e8
+ ld hl, wcd29
+ bit 7, [hl]
+ ret z
+ farcall Function115dd3
+ ld hl, wcd29
+ set 6, [hl]
+ ret
+; 1000fa
+
+Function1000fa: ; 1000fa
+ ld a, [wc30d]
+ and a
+ ret z
+ ld hl, wcd29
+ bit 4, [hl]
+ ret z
+ ld a, [wcd2b]
+ and a
+ jr nz, .asm_100117
+ farcall Function11619d
+ ld hl, wcd29
+ set 6, [hl]
+ ret
+
+.asm_100117
+ di
+ xor a
+ ld [rIF], a
+ ld a, [rIE]
+ and $13
+ ld [rIE], a
+ xor a
+ ld [hMobileReceive], a
+ ld [hMobile], a
+ ei
+
+ ld a, [wLinkMode]
+ push af
+ xor a
+ ld [wLinkMode], a
+ ld a, $04
+ ld [wc314 + 5], a
+ farcall Function11619d
+ ld hl, wcd29
+ set 6, [hl]
+ pop af
+ ld [wLinkMode], a
+ ret
+; 100144
+
+Function100144: ; 100144
+ ld hl, wcd29
+ bit 5, [hl]
+ jr z, .asm_100155
+ res 5, [hl]
+ res 2, [hl]
+ res 6, [hl]
+ call Function100320
+ ret
+
+.asm_100155
+ bit 2, [hl]
+ ret z
+ res 2, [hl]
+ res 6, [hl]
+ farcall HDMATransferTileMapToWRAMBank3
+ ret
+; 100163
+
+Function100163: ; 100163
+ ld hl, wcd29
+ bit 6, [hl]
+ ret z
+ res 6, [hl]
+ call DelayFrame
+ ret
+; 10016f
+
+Function10016f: ; 10016f
+ ld a, [wcd2b]
+ cp $01
+ ret z
+ cp $02
+ ret z
+ cp $ff
+ jp z, .asm_1001f5
+ cp $fe
+ jr z, .asm_1001c4
+ cp $f5
+ jr z, .asm_1001e7
+ cp $f6
+ jr z, .asm_1001b6
+ cp $fa
+ jp z, .asm_1001bd
+ cp $f7
+ jp z, .asm_1001ee
+ cp $f4
+ jr z, .asm_1001d2
+ cp $f3
+ jr z, .asm_1001cb
+ cp $f1
+ jr z, .asm_1001c4
+ cp $f2
+ jr z, .asm_1001c4
+ cp $fc
+ jr z, .asm_1001e6
+ cp $fb
+ jr z, .asm_1001af
+ cp $f8
+ ret z
+ ret ; ????????????????????????????
+
+.asm_1001af
+ ld a, $d7
+ ld de, 0
+ jr .asm_1001d7
+
+.asm_1001b6
+ ld a, $d5
+ ld de, 0
+ jr .asm_1001d7
+
+.asm_1001bd
+ ld a, $d6
+ ld de, 0
+ jr .asm_1001d7
+
+.asm_1001c4
+ ld a, $d2
+ ld de, 2
+ jr .asm_1001d7
+
+.asm_1001cb
+ ld a, $d1
+ ld de, 1
+ jr .asm_1001d7
+
+.asm_1001d2
+ ld a, $d0
+ ld de, 0
+
+.asm_1001d7
+ ld [wc300], a
+ ld a, d
+ ld [wc302], a
+ ld a, e
+ ld [wc301], a
+ call Function10020b
+ ret
+
+.asm_1001e6
+ ret
+
+.asm_1001e7
+ ld de, String10025e
+ call Function100232
+ ret
+
+.asm_1001ee
+ ld de, String10024d
+ call Function100232
+ ret
+
+.asm_1001f5
+ ld a, [wcd2c]
+ ld [wc300], a
+ ld a, [wcd2d]
+ ld [wc302], a
+ ld a, [wcd2d]
+ ld [wc301], a
+ call Function10020b
+ ret
+; 10020b
+
+Function10020b: ; 10020b
+ xor a
+ ld [wc303], a
+ farcall FadeOutPalettes
+ farcall Function106464
+ call HideSprites
+ call DelayFrame
+
+ ld a, [rSVBK]
+ push af
+ ld a, $01
+ ld [rSVBK], a
+
+ farcall DisplayMobileError
+
+ pop af
+ ld [rSVBK], a
+ ret
+; 100232
+
+Function100232: ; 100232
+ push de
+ farcall Function106464
+ call Function3f20
+ call UpdateSprites
+ hlcoord 1, 2
+ pop de
+ call PlaceString
+ call Function100320
+ call JoyWaitAorB
+ ret
+; 10024d
+
+String10024d: ; 10024d
+ db "つうしんを キャンセル しました@"
+; 10025e
+
+String10025e: ; 10025e
+ db "おともだちと えらんだ へやが"
+ next "ちがうようです@"
+; 100276
+
+Function100276: ; 100276
+ ld a, [wcd2b]
+ cp $01
+ jr z, .asm_10029f
+ cp $02
+ jr z, .asm_100296
+ cp $f5
+ jr z, .asm_1002a5
+ cp $f6
+ jr z, .asm_1002a5
+ cp $f7
+ jr z, .asm_100293
+ cp $f8
+ jr z, .asm_1002b1
+ jr .asm_1002c0
+
+.asm_100293
+ ld c, $02
+ ret
+
+.asm_100296
+ farcall Script_reloadmappart
+ ld c, $04
+ ret
+
+.asm_10029f
+ call Function1002dc
+ ld c, 0
+ ret
+
+.asm_1002a5
+ farcall Script_reloadmappart
+ call Function1002ed
+ ld c, $03
+ ret
+
+.asm_1002b1
+ call Function1002c9
+ call Function1002dc
+ ld de, String10024d
+ call Function100232
+ ld c, $02
+ ret
+
+.asm_1002c0
+ call Function1002c9
+ call Function1002dc
+ ld c, $01
+ ret
+; 1002c9
+
+Function1002c9: ; 1002c9
+ ld hl, wcd2a
+ bit 0, [hl]
+ ret z
+ farcall CleanUpBattleRAM
+ farcall LoadPokemonData
+ ret
+; 1002dc
+
+Function1002dc: ; 1002dc
+ ld a, MAPSETUP_LINKRETURN
+ ld [hMapEntryMethod], a
+ farcall RunMapSetupScript
+ xor a
+ ld [hMapEntryMethod], a
+ call LoadStandardFont
+ ret
+; 1002ed
+
+Function1002ed: ; 1002ed
+ farcall LoadOW_BGPal7
+ farcall ApplyPals
+ ld a, $01
+ ld [hCGBPalUpdate], a
+ call DelayFrame
+ ret
+; 100301
+
+Function100301: ; 100301
+ ld hl, wcd2a
+ bit 1, [hl]
+ ret z
+ farcall Function106464
+ farcall Function10202c
+ farcall Function115dd3
+ call Function100320
+ call JoyWaitAorB
+ ret
+; 100320
+
+Function100320: ; 100320
+ farcall Mobile_ReloadMapPart
+ ret
+; 100327
+
+Function100327: ; 100327
+ farcall HDMATransferTileMapToWRAMBank3
+ ret
+; 100327
+
+
+Function10032e: ; 10032e
+ call Function10034d
+ ld e, a
+ ret nc
+ ld [wcd2b], a
+ ret
+; 100337
+
+Function100337: ; 100337
+ call Function10032e
+ ret c
+ ld a, [wc821]
+ bit 4, a
+ jr z, .asm_100345
+ ld a, e
+ and a
+ ret
+
+.asm_100345
+ ld a, $f9
+ ld e, a
+ ld [wcd2b], a
+ scf
+ ret
+; 10034d
+
+Function10034d: ; 10034d
+ ld a, [wc821]
+ bit 1, a
+ jr nz, .asm_10036a
+ bit 2, a
+ jr nz, .asm_10037e
+ bit 3, a
+ jr nz, .asm_100366
+ bit 0, a
+ jr nz, .asm_100364
+ ld a, $01
+ and a
+ ret
+
+.asm_100364
+ xor a
+ ret
+
+.asm_100366
+ ld a, $02
+ and a
+ ret
+
+.asm_10036a
+ ld a, 0
+ call Function3e32
+ ld [wcd2c], a
+ ld a, h
+ ld [wcd2d], a
+ ld a, l
+ ld [wcd2e], a
+ ld a, $ff
+ scf
+ ret
+
+.asm_10037e
+ ld a, $fe
+ scf
+ ret
+; 100382
+
+Function100382: ; 100382
+ ld a, [wcd27]
+ ld hl, Jumptable_10044e
+ rst JumpTable
+ ret
+; 10038a
+
+Function10038a: ; 10038a
+ ld hl, wccb4
+ ld a, $2e
+ call Function3e32
+ ret
+; 100393
+
+Function100393: ; 100393
+ ld hl, wcc60
+ ld a, $3a
+ call Function3e32
+ ret
+; 10039c
+
+Function10039c: ; 10039c
+ ld hl, wcc60
+ ld de, w3_d000
+ ld bc, $54
+ ld a, $03
+ call FarCopyWRAM
+ ret
+; 1003ab
+
+Function1003ab: ; 1003ab
+ ld hl, w3_d000
+ ld de, wcc60
+ ld bc, $54
+ ld a, $03
+ call FarCopyWRAM
+ ret
+; 1003ba
+
+Function1003ba: ; 1003ba
+ ld hl, wccb4
+ ld de, w3_d080
+ ld bc, $54
+ ld a, $03
+ call FarCopyWRAM
+ ret
+; 1003c9
+
+Function1003c9: ; 1003c9
+ ld hl, w3_d080
+ ld de, wccb4
+ ld bc, $54
+ ld a, $03
+ call FarCopyWRAM
+ ret
+; 1003d8
+
+Function1003d8: ; 1003d8
+ ld hl, wccb4
+ ld a, [hli]
+ ld c, a
+ ld b, 0
+ push hl
+ add hl, bc
+ ld a, [BGMapPalBuffer]
+ ld [hl], a
+ pop hl
+ inc bc
+ call Function10043a
+ add hl, bc
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld a, c
+ add $02
+ ld [wccb4], a
+ ret
+; 1003f5
+
+Function1003f5: ; 1003f5
+ ld a, [wcc60]
+ sub $03
+ ld [wcc60], a
+ ld a, [wccb4]
+ sub $03
+ ld [wccb4], a
+ ret
+; 100406
+
+Function100406: ; 100406
+ ld a, [wcc60]
+ sub $02
+ ld c, a
+ ld b, 0
+ ld hl, wcc61
+ call Function10043a
+ add hl, bc
+ ld a, [hli]
+ cp e
+ jr nz, .asm_100426
+ ld a, [hld]
+ cp d
+ jr nz, .asm_100426
+ dec hl
+ ld a, [BGMapPalBuffer]
+ cp [hl]
+ jr nz, .asm_10042d
+ xor a
+ ret
+
+.asm_100426
+ ld a, $f4
+ ld [wcd2b], a
+ jr .asm_100432
+
+.asm_10042d
+ ld a, $f3
+ ld [wcd2b], a
+
+.asm_100432
+ push hl
+ ld hl, wcd7c
+ inc [hl]
+ pop hl
+ scf
+ ret
+; 10043a
+
+Function10043a: ; 10043a
+ push hl
+ push bc
+ ld de, 0
+.asm_10043f
+ ld a, [hli]
+ add e
+ ld e, a
+ ld a, d
+ adc 0
+ ld d, a
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_10043f
+ pop bc
+ pop hl
+ ret
+; 10044e
+
+
+Jumptable_10044e: ; 10044e (40:444e)
+ dw Function10046a
+ dw Function10047c
+ dw Function100493
+ dw Function1004ba
+ dw Function1004f4
+ dw Function1004ce
+ dw Function1004de
+ dw Function1004a4
+ dw Function100495
+ dw Function1004ce
+ dw Function1004de
+ dw Function1004e9
+ dw Function1004f4
+ dw Function1004a4
+
+Function10046a: ; 10046a
+ ld hl, BGMapPalBuffer
+ inc [hl]
+ call Function1003d8
+ call Function1003ba
+ ld a, [wcd27]
+ inc a
+ ld [wcd27], a
+ ret
+; 10047c
+
+Function10047c: ; 10047c
+ call Function100337
+ ret c
+ ret z
+ cp $02
+ jr z, .asm_100487
+ jr .asm_10048d
+
+.asm_100487
+ ld a, $08
+ ld [wcd27], a
+ ret
+
+.asm_10048d
+ ld a, $02
+ ld [wcd27], a
+ ret
+; 100493
+
+Function100493: ; 100493
+ jr asm_100497
+
+Function100495: ; 100495
+ jr asm_100497
+
+asm_100497
+ call Function100337
+ ret c
+ ret z
+ ld a, [wcd27]
+ inc a
+ ld [wcd27], a
+ ret
+; 1004a4
+
+Function1004a4: ; 1004a4
+ call Function100406
+ jr c, .asm_1004b8
+ call Function1003c9
+ call Function1003f5
+ ld a, [wcd27]
+ set 7, a
+ ld [wcd27], a
+ ret
+
+.asm_1004b8
+ scf
+ ret
+; 1004ba
+
+Function1004ba: ; 1004ba
+ call Function10038a
+ and a
+ jr nz, .asm_1004c8
+ ld a, [wcd27]
+ inc a
+ ld [wcd27], a
+ ret
+
+.asm_1004c8
+ ld a, $08
+ ld [wcd27], a
+ ret
+; 1004ce
+
+Function1004ce: ; 1004ce
+ call Function100337
+ ret c
+ ret z
+ cp $02
+ ret nz
+ ld a, [wcd27]
+ inc a
+ ld [wcd27], a
+ ret
+; 1004de
+
+Function1004de: ; 1004de
+ call Function100393
+ ld a, [wcd27]
+ inc a
+ ld [wcd27], a
+ ret
+; 1004e9
+
+Function1004e9: ; 1004e9
+ call Function10038a
+ ld a, [wcd27]
+ inc a
+ ld [wcd27], a
+ ret
+; 1004f4
+
+Function1004f4: ; 1004f4
+ call Function100337
+ ret c
+ ret z
+ ld a, [wcd27]
+ inc a
+ ld [wcd27], a
+ call Function10039c
+ ret
+; 100504
+
+Function100504: ; 100504
+ push de
+ call Function3f20
+ call UpdateSprites
+ pop de
+ hlcoord 4, 2
+ call PlaceString
+ ret
+; 100513
+
+Function100513: ; 100513
+ call Function3f7c
+ call PlaceVerticalMenuItems
+ call InitVerticalMenuCursor
+ ld hl, w2DMenuFlags1
+ set 7, [hl]
+ ret
+; 100522
+
+Function100522: ; 100522
+ ld a, [wcd28]
+ ld hl, Jumptable_10052a
+ rst JumpTable
+ ret
+; 10052a
+
+Jumptable_10052a: ; 10052a
+ dw Function100534
+ dw Function100545
+ dw Function100545
+ dw Function100545
+ dw Function10054d
+; 100534
+
+Function100534: ; 100534
+ call Function100513
+ call UpdateSprites
+ call ApplyTilemap
+ ld a, [wcd28]
+ inc a
+ ld [wcd28], a
+ ret
+; 100545
+
+Function100545: ; 100545
+ ld a, [wcd28]
+ inc a
+ ld [wcd28], a
+ ret
+; 10054d
+
+Function10054d: ; 10054d
+ farcall MobileMenuJoypad
+ ld a, c
+ ld hl, wMenuJoypadFilter
+ and [hl]
+ ret z
+ call MenuClickSound
+ bit 0, a
+ jr nz, .asm_100565
+ bit 1, a
+ jr nz, .asm_10056f
+ ret
+
+.asm_100565
+ ld a, [wcd28]
+ set 7, a
+ ld [wcd28], a
+ and a
+ ret
+
+.asm_10056f
+ ld a, [wcd28]
+ set 7, a
+ ld [wcd28], a
+ scf
+ ret
+; 100579
+
+Function100579: ; 100579
+ ld a, [wcd26]
+ ld hl, Jumptable_100581
+ rst JumpTable
+ ret
+; 100581
+
+Jumptable_100581: ; 100581
+ dw Function100585
+ dw Function100597
+; 100585
+
+Function100585: ; 100585
+ ld hl, MenuDataHeader_1005b2
+ call LoadMenuDataHeader
+ ld a, 0
+ ld [wcd28], a
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+
+Function100597: ; 100597
+ call Function100522
+ ld a, [wcd28]
+ bit 7, a
+ ret z
+ jr nc, .asm_1005a6
+ xor a
+ ld [wMenuCursorY], a
+
+.asm_1005a6
+ call ExitMenu
+ ld a, [wcd26]
+ set 7, a
+ ld [wcd26], a
+ ret
+; 1005b2
+
+MenuDataHeader_1005b2: ; 1005b2
+ db $40 ; flags
+ db 6, 14
+ db 10, 19
+ dw MenuData2_1005ba
+ db 1 ; default option
+
+MenuData2_1005ba:
+ db $c0 ; flags
+ db 2
+ db "はい@"
+ db "いいえ@"
+; 1005c3
+
+Function1005c3: ; 1005c3
+ ld a, [wcd26]
+ ld hl, Jumptable_1005cb
+ rst JumpTable
+ ret
+; 1005cb
+
+Jumptable_1005cb: ; 1005cb
+ dw Function1005cf
+ dw Function1005e1
+; 1005cf
+
+Function1005cf: ; 1005cf
+ ld hl, MenuDataHeader_1005fc
+ call LoadMenuDataHeader
+ ld a, 0
+ ld [wcd28], a
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+
+Function1005e1: ; 1005e1
+ call Function100522
+ ld a, [wcd28]
+ bit 7, a
+ ret z
+ jr nc, .asm_1005f0
+ xor a
+ ld [wMenuCursorY], a
+.asm_1005f0
+ call ExitMenu
+ ld a, [wcd26]
+ set 7, a
+ ld [wcd26], a
+ ret
+; 1005fc
+
+MenuDataHeader_1005fc: ; 1005fc
+ db $40 ; flags
+ db 6, 14
+ db 10, 19
+ dw MenuData2_100604
+ db 1 ; default option
+
+MenuData2_100604: ; 100604
+ db $c0 ; flags
+ db 2
+ db "かける@"
+ db "まつ@"
+; 10060d
+
+Mobile_CommunicationStandby: ; 10060d
+ hlcoord 3, 10
+ ld b, 1
+ ld c, 11
+ call Function3eea
+ ld de, .String
+ hlcoord 4, 11
+ call PlaceString
+ ret
+; 100621
+
+.String: ; 100621
+ db "つうしんたいきちゅう!@"
+; 10062d
+
+AdvanceMobileInactivityTimerAndCheckExpired: ; 10062d
+ push bc
+ call IncrementMobileInactivityTimerByCFrames
+ pop bc
+ ld a, [wMobileInactivityTimerMinutes]
+ cp b
+ jr nc, .timed_out
+ and a
+ ret
+
+.timed_out
+ ld a, $fa
+ ld [wcd2b], a
+ scf
+ ret
+; 100641
+
+StartMobileInactivityTimer: ; 100641
+ xor a
+ ld [wMobileInactivityTimerMinutes], a
+ ld [wMobileInactivityTimerSeconds], a
+ ld [wMobileInactivityTimerFrames], a
+ ret
+; 10064c
+
+IncrementMobileInactivityTimerBy1Frame: ; 10064c
+ ld c, 1
+IncrementMobileInactivityTimerByCFrames: ; 10064e
+ ld hl, wMobileInactivityTimerFrames ; timer?
+ ld a, [hl]
+ add c
+ cp 60
+ jr c, .seconds
+ xor a
+
+.seconds
+ ld [hld], a
+ ret c
+ ld a, [hl]
+ inc a
+ cp 60
+ jr c, .minutes
+ xor a
+
+.minutes
+ ld [hld], a
+ ret c
+ inc [hl]
+ ret
+; 100665
+
+Function100665: ; 100665
+ call UpdateTime
+ ld hl, wcd36
+ ld a, [hHours]
+ ld [hli], a
+ ld a, [hMinutes]
+ ld [hli], a
+ ld a, [hSeconds]
+ ld [hl], a
+ ret
+; 100675
+
+Function100675: ; 100675
+ ld hl, wcd2a
+ bit 2, [hl]
+ set 2, [hl]
+ ret nz
+ call Function1006d3
+ ret
+; 100681
+
+Function100681: ; 100681
+ push hl
+ ld hl, wcd2a
+ bit 2, [hl]
+ ld hl, wcd2a
+ set 2, [hl]
+ pop hl
+ jr nz, .asm_100694
+ push hl
+ call Function1006d3
+ pop hl
+.asm_100694
+ ld de, wcd32
+
+Function100697: ; 100697
+ ld a, [de]
+ and a
+ jr nz, .asm_1006bb
+ inc de
+ push de
+ call .asm_1006b4
+ ld de, String1006c2
+ call PlaceString
+ ld h, b
+ ld l, c
+ pop de
+ inc de
+ call .asm_1006b4
+ ld de, String1006c6
+ call PlaceString
+ ret
+
+.asm_1006b4
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+ call PrintNum
+ ret
+
+.asm_1006bb
+ ld de, String1006ca
+ call PlaceString
+ ret
+; 1006c2
+
+String1006c2: ; 1006c2
+ db "ふん @"
+String1006c6: ; 1006c6
+ db "びょう@"
+String1006ca: ; 1006ca
+ db "1じかんいじょう@"
+; 1006d3
+
+Function1006d3: ; 1006d3
+ call UpdateTime
+ ld de, wcd34
+ ld hl, wcd38
+
+Function1006dc: ; 1006dc
+ ld a, [hld]
+ ld c, a
+ ld a, [hSeconds]
+ sub c
+ jr nc, .asm_1006e5
+ add $3c
+
+.asm_1006e5
+ ld [de], a
+ dec de
+ ld a, [hld]
+ ld c, a
+ ld a, [hMinutes]
+ sbc c
+ jr nc, .asm_1006f0
+ add $3c
+
+.asm_1006f0
+ ld [de], a
+ dec de
+ ld a, [hl]
+ ld c, a
+ ld a, [hHours]
+ sbc c
+ jr nc, .asm_1006fb
+ add $18
+
+.asm_1006fb
+ ld [de], a
+ ret
+; 1006fd
+
+Function1006fd: ; 1006fd
+ ld a, $04
+ ld hl, $a800
+ call GetSRAMBank
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ call CloseSRAM
+ ret
+; 10070d
+
+Function10070d: ; 10070d
+ ld a, $04
+ ld hl, $a800
+ call GetSRAMBank
+ xor a
+ ld [hli], a
+ ld a, $0a
+ ld [hli], a
+ xor a
+ ld [hli], a
+ call CloseSRAM
+ ret
+; 100720
+
+Function100720: ; 100720
+ xor a
+ ld [wcd6a], a
+ call UpdateTime
+ ld a, [hHours]
+ ld [wcd72], a
+ ld a, [hMinutes]
+ ld [wcd73], a
+ ld a, [hSeconds]
+ ld [wcd74], a
+ ld a, $04
+ ld hl, $a800
+ call GetSRAMBank
+ ld a, [hli]
+ ld [wcd6c], a
+ ld a, [hli]
+ ld [wcd6d], a
+ ld a, [hli]
+ ld [wcd6e], a
+ call CloseSRAM
+ ld a, [wcd6d]
+ ld [wcd6b], a
+ ret
+; 100754
+
+Function100754: ; 100754
+ call UpdateTime
+ ld a, [hHours]
+ ld [wcd72], a
+ ld a, [hMinutes]
+ ld [wcd73], a
+ ld a, [hSeconds]
+ ld [wcd74], a
+ ld a, [wcd6d]
+ ld [wcd6b], a
+ ld hl, wcd2a
+ res 6, [hl]
+ ret
+; 100772
+
+Function100772: ; 100772
+ push de
+ ld hl, wcd6c
+ ld a, [de]
+ cp [hl]
+ jr c, .asm_10079a
+ jr nz, .asm_10078c
+ inc hl
+ inc de
+ ld a, [de]
+ cp [hl]
+ jr c, .asm_10079a
+ jr nz, .asm_10078c
+ inc hl
+ inc de
+ ld a, [de]
+ cp [hl]
+ jr c, .asm_10079a
+ jr z, .asm_10079a
+
+.asm_10078c
+ pop hl
+ ld a, [hli]
+ ld [wcd6c], a
+ ld a, [hli]
+ ld [wcd6d], a
+ ld a, [hli]
+ ld [wcd6e], a
+ ret
+
+.asm_10079a
+ pop de
+ ret
+; 10079c
+
+
+Function10079c: ; 10079c
+ ld a, [wcd21]
+ cp $01
+ jr nz, .dont_quit
+ ld hl, wcd2a
+ bit 5, [hl]
+ jr nz, .dont_quit
+ ld hl, wcd2a
+ bit 6, [hl]
+ jr nz, .dont_quit
+ ld a, [wcd6a]
+ add c
+ cp 60
+ jr nc, .overflow
+ ld [wcd6a], a
+ and a
+ ret
+
+.overflow
+ sub 60
+ ld [wcd6a], a
+ ld d, b
+ push de
+ call Function1007f6
+ pop de
+ jr c, .quit
+ ld a, c
+ and a
+ jr nz, .quit
+ ld a, b
+ cp 10
+ jr nc, .quit
+ ld a, d
+ and a
+ ret z
+ ld a, [wcd6b]
+ cp b
+ ret z
+ ld a, b
+ ld [wcd6b], a
+ call Function1008e0
+ and a
+ ret
+
+.quit
+ call Function1008e0
+ ld hl, wcd2a
+ set 4, [hl]
+ ld a, $fc
+ ld [wcd2b], a
+ scf
+ ret
+
+.dont_quit
+ and a
+ ret
+; 1007f6
+
+Function1007f6: ; 1007f6
+ call UpdateTime
+ ld hl, wcd74
+ ld de, wcd71
+ call Function1006dc
+ ld a, $04
+ call GetSRAMBank
+ ld hl, $a802
+ call Function100826
+ call CloseSRAM
+ ld hl, wcd6e
+ call Function100826
+ ld a, [hHours]
+ ld [wcd72], a
+ ld a, [hMinutes]
+ ld [wcd73], a
+ ld a, [hSeconds]
+ ld [wcd74], a
+ ret
+; 100826
+
+Function100826: ; 100826
+ ld a, [wcd71]
+ add [hl]
+ sub $3c
+ jr nc, .asm_100830
+ add $3c
+
+.asm_100830
+ ld [hld], a
+ ccf
+ ld a, [BGMapBufferPtrs]
+ adc [hl]
+ sub $3c
+ jr nc, .asm_10083c
+ add $3c
+
+.asm_10083c
+ ld [hld], a
+ ld b, a
+ ccf
+ ld a, [wcd6f]
+ adc [hl]
+ ld [hl], a
+ ld c, a
+ ret
+; 100846
+
+Function100846: ; 100846
+ ld hl, wcd2a
+ bit 5, [hl]
+ jr nz, .asm_10087c
+ ld a, [wcd6e]
+ ld c, a
+ ld a, 0
+ sub c
+ jr nc, .asm_100858
+ add $3c
+
+.asm_100858
+ ld [StringBuffer2 + 2], a
+ ld a, [wcd6d]
+ ld c, a
+ ld a, $0a
+ sbc c
+ ld [StringBuffer2 + 1], a
+ xor a
+ ld [StringBuffer2], a
+ ld de, String_10088e
+ hlcoord 1, 14
+ call PlaceString
+ ld de, StringBuffer2
+ hlcoord 4, 16
+ call Function100697
+ ret
+
+.asm_10087c
+ ld de, String_10088e
+ hlcoord 1, 14
+ call PlaceString
+ ld h, b
+ ld l, c
+ ld de, String_10089f
+ call PlaceString
+ ret
+; 10088e
+
+String_10088e: ; 10088e
+ db "モバイルたいせん できる"
+ next "じかん@"
+; 10089f
+
+String_10089f: ; 10089f
+ db " むせいげん@"
+; 1008a6
+
+Function1008a6: ; 1008a6
+ ld a, $04
+ ld hl, $a800
+ call GetSRAMBank
+ ld a, [hli]
+ ld [StringBuffer2], a
+ ld a, [hli]
+ ld [StringBuffer2 + 1], a
+ ld a, [hli]
+ ld [StringBuffer2 + 2], a
+ call CloseSRAM
+ ld a, [StringBuffer2 + 2]
+ ld b, a
+ ld a, 0
+ sub b
+ jr nc, .asm_1008c8
+ add $3c
+
+.asm_1008c8
+ ld b, a
+ ld a, [StringBuffer2 + 1]
+ ld c, a
+ ld a, $0a
+ sbc c
+ ld c, a
+ jr c, .asm_1008da
+ ld a, [StringBuffer2]
+ and a
+ jr nz, .asm_1008da
+ ret
+
+.asm_1008da
+ call Function10070d
+ ld c, 0
+ ret
+; 1008e0
+
+
+Function1008e0: ; 1008e0
+ ld a, [hBGMapMode]
+ ld b, a
+ ld a, [hVBlank]
+ ld c, a
+ push bc
+ xor a
+ ld [hBGMapMode], a
+ ld a, $03
+ ld [hVBlank], a
+ call Function100970
+ call Function100902
+ call Function100989
+ call DelayFrame
+ pop bc
+ ld a, c
+ ld [hVBlank], a
+ ld a, b
+ ld [hBGMapMode], a
+ ret
+; 100902
+
+Function100902: ; 100902
+ hlcoord 3, 10
+ ld b, $01
+ ld c, $0b
+ call TextBox
+ ld a, [wcd6d]
+ ld c, a
+ ld a, $0a
+ sub c
+ ld [StringBuffer2], a
+ jr z, .asm_10093f
+ ld de, .string_100966
+ hlcoord 4, 11
+ call PlaceString
+ hlcoord 8, 11
+ lb bc, 1, 2
+ ld de, StringBuffer2
+ call PrintNum
+ ld de, SFX_TWO_PC_BEEPS
+ call PlaySFX
+ farcall ReloadMapPart
+ ld c, $3c
+ call DelayFrames
+ ret
+
+.asm_10093f
+ ld de, .string_10095a
+ hlcoord 4, 11
+ call PlaceString
+ ld de, SFX_4_NOTE_DITTY
+ call PlaySFX
+ farcall ReloadMapPart
+ ld c, 120
+ call DelayFrames
+ ret
+; 10095a
+
+.string_10095a ; 10095a
+ db "たいせん しゅうりょう@"
+.string_100966 ; 100966
+ db "のこり ふん", $e7, "@"
+; 100970
+
+
+Function100970: ; 100970
+ hlcoord 0, 0
+ ld de, w3_dc00
+ call Function1009a5
+ hlcoord 0, 0, AttrMap
+ ld de, w3_dd68
+ call Function1009a5
+ call Function1009d2
+ call Function1009ae
+ ret
+; 100989
+
+Function100989: ; 100989
+ ld hl, w3_dc00
+ decoord 0, 0
+ call Function1009a5
+ call Function1009ae
+ farcall ReloadMapPart
+ ld hl, w3_dd68
+ decoord 0, 0, AttrMap
+ call Function1009a5
+ ret
+; 1009a5
+
+Function1009a5: ; 1009a5
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, $03
+ call FarCopyWRAM
+ ret
+; 1009ae
+
+Function1009ae: ; 1009ae
+ ld a, [rSVBK]
+ push af
+ ld a, $03
+ ld [rSVBK], a
+
+ ld hl, w3_d800
+ decoord 0, 0, AttrMap
+ ld c, SCREEN_WIDTH
+ ld b, SCREEN_HEIGHT
+.loop_row
+ push bc
+.loop_col
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .loop_col
+ ld bc, BG_MAP_WIDTH - SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .loop_row
+
+ pop af
+ ld [rSVBK], a
+ ret
+; 1009d2
+
+Function1009d2: ; 1009d2
+ ld a, [rSVBK]
+ push af
+ ld a, $03
+ ld [rSVBK], a
+
+ ld a, [rVBK]
+ push af
+ ld a, $01
+ ld [rVBK], a
+
+ ld hl, w3_d800
+ debgcoord 0, 0
+ lb bc, $03, $24
+ call Get2bpp
+
+ pop af
+ ld [rVBK], a
+
+ pop af
+ ld [rSVBK], a
+ ret
+; 1009f3
+
+Function1009f3: ; 1009f3
+ ld a, [hJoyDown]
+ and SELECT + A_BUTTON
+ cp SELECT + A_BUTTON
+ jr nz, .select_a
+ ld hl, wcd2a
+ set 4, [hl]
+ ld a, $f8
+ ld [wcd2b], a
+ scf
+ ret
+
+.select_a
+ xor a
+ ret
+; 100a09
+
+_LinkBattleSendReceiveAction: ; 100a09
+ call .StageForSend
+ ld [wd431], a
+ farcall PlaceWaitingText
+ ld a, [wLinkMode]
+ cp LINK_MOBILE
+ jr nz, .not_mobile
+
+ call .MobileBattle_SendReceiveAction
+ call Function100da5
+ farcall FinishBattleAnim
+ jr .done
+
+.not_mobile
+ call .LinkBattle_SendReceiveAction
+
+.done
+ ret
+; 100a2e
+
+.StageForSend: ; 100a2e
+ ld a, [wPlayerAction]
+ and a
+ jr nz, .switch
+ ld a, [CurPlayerMove]
+ ld b, BATTLEACTION_E
+ cp STRUGGLE
+ jr z, .struggle
+ ld b, BATTLEACTION_D
+ cp $ff
+ jr z, .struggle
+ ld a, [CurMoveNum]
+ jr .use_move
+
+.switch
+ ld a, [CurPartyMon]
+ add BATTLEACTION_SWITCH1
+ jr .use_move
+
+.struggle
+ ld a, b
+
+.use_move
+ and $0f
+ ret
+; 100a53
+
+.LinkBattle_SendReceiveAction: ; 100a53
+ ld a, [wd431]
+ ld [wPlayerLinkAction], a
+ ld a, $ff
+ ld [wOtherPlayerLinkAction], a
+.waiting
+ call LinkTransfer
+ call DelayFrame
+ ld a, [wOtherPlayerLinkAction]
+ inc a
+ jr z, .waiting
+
+ ld b, 10
+.receive
+ call DelayFrame
+ call LinkTransfer
+ dec b
+ jr nz, .receive
+
+ ld b, 10
+.acknowledge
+ call DelayFrame
+ call LinkDataReceived
+ dec b
+ jr nz, .acknowledge
+
+ ld a, [wOtherPlayerLinkAction]
+ ld [wBattleAction], a
+ ret
+; 100a87
+
+.MobileBattle_SendReceiveAction: ; 100a87
+ call Function100acf
+ call StartMobileInactivityTimer
+ ld a, 0
+ ld [wcd27], a
+.asm_100a92
+ call DelayFrame
+ call GetJoypad
+ farcall Function100382
+ ld c, $01
+ ld b, $03
+ push bc
+ call AdvanceMobileInactivityTimerAndCheckExpired
+ pop bc
+ jr c, .asm_100ac7
+ ld b, $01
+ call Function10079c
+ jr c, .asm_100ac7
+ call Function1009f3
+ jr c, .asm_100ac7
+ ld a, [wcd2b]
+ and a
+ jr nz, .asm_100ac7
+ ld a, [wcd27]
+ bit 7, a
+ jr z, .asm_100a92
+ call Function100ae7
+ jr .asm_100ace
+
+.asm_100ac7
+ ld a, $0f
+ ld [wd430], a
+ jr .asm_100ace
+
+.asm_100ace
+ ret
+; 100acf
+
+Function100acf: ; 100acf
+ ld de, Unknown_100b0a
+ ld hl, wccb5
+ ld a, [wd431]
+ ld [hli], a
+ ld c, $01
+.asm_100adb
+ ld a, [de]
+ inc de
+ ld [hli], a
+ inc c
+ and a
+ jr nz, .asm_100adb
+ ld a, c
+ ld [wccb4], a
+ ret
+; 100ae7
+
+Function100ae7: ; 100ae7
+ ld de, Unknown_100b0a
+ ld hl, wcc62
+.asm_100aed
+ ld a, [de]
+ inc de
+ and a
+ jr z, .asm_100af8
+ cp [hl]
+ jr nz, .asm_100aff
+ inc hl
+ jr .asm_100aed
+
+.asm_100af8
+ ld a, [wcc61]
+ ld [wd430], a
+ ret
+
+.asm_100aff
+ ld a, $0f
+ ld [wd430], a
+ ld a, $f1
+ ld [wcd2b], a
+ ret
+; 100b0a
+
+
+SECTION "tetsuji", ROMX
+
+ charmap " ", $20 ; revert to ascii
+
+Unknown_100b0a: ; 100b0a
+ db "tetsuji", 0
+; 100b12
+
+
+SECTION "bank40_2", ROMX
+
+Function100b12: ; 100b12
+ call Function100dd8
+ ret c
+ ld hl, BattleMenuDataHeader
+ ld a, BANK(BattleMenuDataHeader)
+ ld de, LoadMenuDataHeader
+ call FarCall_de
+ ld a, BANK(BattleMenuDataHeader)
+ ld [wMenuData2_2DMenuItemStringsBank], a
+ ld a, [wBattleMenuCursorBuffer]
+ ld [wMenuCursorBuffer], a
+ call Function100e72
+ call Function100b45
+ farcall InitPartyMenuBGPal7
+ call Function100ed4
+ ld a, [wMenuCursorBuffer]
+ ld [wBattleMenuCursorBuffer], a
+ call ExitMenu
+ ret
+; 100b45
+
+Function100b45: ; 100b45
+ call Function100b7a
+.loop
+ call Mobile_SetOverworldDelay
+ farcall MobileMenuJoypad
+ push bc
+ farcall HDMATransferTileMapToWRAMBank3
+ call Function100e2d
+ pop bc
+ jr c, .asm_100b6b
+ ld a, [wMenuJoypadFilter]
+ and c
+ jr z, .loop
+ farcall Mobile_GetMenuSelection
+ ret
+
+.asm_100b6b
+ ld a, [w2DMenuNumCols]
+ ld c, a
+ ld a, [w2DMenuNumRows]
+ call SimpleMultiply
+ ld [wMenuCursorBuffer], a
+ and a
+ ret
+; 100b7a
+
+Function100b7a: ; 100b7a
+ ld hl, CopyMenuData2
+ ld a, [wMenuData2_2DMenuItemStringsBank]
+ rst FarCall
+ farcall Draw2DMenu
+ farcall MobileTextBorder
+ call UpdateSprites
+ call ApplyTilemap
+ farcall Init2DMenuCursorPosition
+ ld hl, w2DMenuFlags1
+ set 7, [hl]
+ ret
+; 100b9f
+
+MobileMoveSelectionScreen: ; 100b9f
+ xor a
+ ld [wMoveSwapBuffer], a
+ farcall CheckPlayerHasUsableMoves
+ ret z
+ call Function100dd8
+ jp c, xor_a_dec_a
+ call Function100e72
+ call .GetMoveSelection
+ push af
+ farcall InitPartyMenuBGPal7
+ call Function100ed4
+ pop af
+ ret
+; 100bc2
+
+.GetMoveSelection: ; 100bc2
+ xor a
+ ld [hBGMapMode], a
+ call Function100c74
+ call Function100c98
+.master_loop
+ farcall MoveInfoBox
+.loop
+ call Mobile_SetOverworldDelay
+ farcall MobileMenuJoypad
+ push bc
+ farcall HDMATransferTileMapToWRAMBank3
+ call Function100e2d
+ pop bc
+ jr c, .b_button
+ ld a, [wMenuJoypadFilter]
+ and c
+ bit D_UP_F, a
+ jp nz, .d_up
+ bit D_DOWN_F, a
+ jp nz, .d_down
+ bit A_BUTTON_F, a
+ jr nz, .a_button
+ bit B_BUTTON_F, a
+ jr nz, .b_button
+ jr .loop
+
+.d_up
+ ld a, [wMenuCursorY]
+ and a
+ jp nz, .master_loop
+ ld a, [wNumMoves]
+ inc a
+ ld [wMenuCursorY], a
+ jp .master_loop
+
+.d_down
+ ld a, [wMenuCursorY]
+ ld b, a
+ ld a, [wNumMoves]
+ inc a
+ inc a
+ cp b
+ jp nz, .master_loop
+ ld a, $01
+ ld [wMenuCursorY], a
+ jp .master_loop
+
+.b_button
+ ld a, [wMenuCursorY]
+ dec a
+ ld [CurMoveNum], a
+ ld a, $01
+ and a
+ ret
+
+.a_button
+ ld a, [wMenuCursorY]
+ dec a
+ ld [CurMoveNum], a
+ ld a, [wMenuCursorY]
+ dec a
+ ld c, a
+ ld b, 0
+ ld hl, BattleMonPP
+ add hl, bc
+ ld a, [hl]
+ and $3f
+ jr z, .no_pp_left
+ ld a, [PlayerDisableCount]
+ swap a
+ and $0f
+ dec a
+ cp c
+ jr z, .move_disabled
+ ld a, [wMenuCursorY]
+ dec a
+ ld c, a
+ ld b, 0
+ ld hl, BattleMonMoves
+ add hl, bc
+ ld a, [hl]
+ ld [CurPlayerMove], a
+ xor a
+ ret
+
+.move_disabled
+ ld hl, BattleText_TheMoveIsDisabled
+ jr .print_text
+
+.no_pp_left
+ ld hl, BattleText_TheresNoPPLeftForThisMove
+
+.print_text
+ call StdBattleTextBox
+ call Call_LoadTempTileMapToTileMap
+ jp .GetMoveSelection
+; 100c74
+
+Function100c74: ; 100c74
+ hlcoord 0, 8
+ ld b, 8
+ ld c, 8
+ call TextBox
+ ld hl, BattleMonMoves
+ ld de, wListMoves_MoveIndicesBuffer
+ ld bc, NUM_MOVES
+ call CopyBytes
+ ld a, SCREEN_WIDTH * 2
+ ld [Buffer1], a
+ hlcoord 2, 10
+ predef ListMoves
+ ret
+; 100c98
+
+Function100c98: ; 100c98
+ ld de, .attrs
+ call SetMenuAttributes
+ ld a, [wNumMoves]
+ inc a
+ ld [w2DMenuNumRows], a
+ ld a, [CurMoveNum]
+ inc a
+ ld [wMenuCursorY], a
+ ret
+; 100cad
+
+.attrs ; 100cad
+ db 10, 1
+ db 255, 1
+ db $a0, $00
+ dn 2, 0
+ db D_UP | D_DOWN | A_BUTTON | B_BUTTON
+
+Mobile_PartyMenuSelect: ; 100cb5
+ call Function100dd8
+ ret c
+ ld hl, w2DMenuFlags1
+ set 7, [hl]
+ res 6, [hl]
+.loop
+ call Mobile_SetOverworldDelay
+ farcall MobileMenuJoypad
+ push bc
+ farcall PlaySpriteAnimations
+ farcall HDMATransferTileMapToWRAMBank3
+ call MobileComms_CheckInactivityTimer
+ pop bc
+ jr c, .done
+ ld a, [wMenuJoypadFilter]
+ and c
+ jr z, .loop
+ call PlaceHollowCursor
+ ld a, [PartyCount]
+ inc a
+ ld b, a
+ ld a, [wMenuCursorY]
+ cp b
+ jr z, .done
+ ld [wPartyMenuCursor], a
+ ld a, [hJoyLast]
+ ld b, a
+ bit 1, b
+ jr nz, .done
+ ld a, [wMenuCursorY]
+ dec a
+ ld [CurPartyMon], a
+ ld c, a
+ ld b, 0
+ ld hl, PartySpecies
+ add hl, bc
+ ld a, [hl]
+ ld [CurPartySpecies], a
+ ld de, SFX_READ_TEXT_2
+ call PlaySFX
+ call WaitSFX
+ and a
+ ret
+
+.done
+ ld de, SFX_READ_TEXT_2
+ call PlaySFX
+ call WaitSFX
+ scf
+ ret
+; 100d22
+
+MobileBattleMonMenu: ; 100d22
+ call Function100dd8
+ ret c
+ call Function100d67
+ ld hl, w2DMenuFlags1
+ set 7, [hl]
+ res 6, [hl]
+.asm_100d30
+ call Mobile_SetOverworldDelay
+ farcall MobileMenuJoypad
+ push bc
+ farcall PlaySpriteAnimations
+ farcall HDMATransferTileMapToWRAMBank3
+ call MobileComms_CheckInactivityTimer
+ pop bc
+ jr c, .asm_100d54
+ ld a, [wMenuJoypadFilter]
+ and c
+ jr nz, .asm_100d56
+ jr .asm_100d30
+
+.asm_100d54
+ scf
+ ret
+
+.asm_100d56
+ push af
+ ld de, SFX_READ_TEXT_2
+ call PlaySFX
+ pop af
+ bit 1, a
+ jr z, .asm_100d65
+ ret z
+ scf
+ ret
+
+.asm_100d65
+ and a
+ ret
+; 100d67
+
+Function100d67: ; 100d67
+ ld hl, .MenuDataHeader
+ call CopyMenuDataHeader
+ xor a
+ ld [hBGMapMode], a
+ call MenuBox
+ call UpdateSprites
+ call PlaceVerticalMenuItems
+ call WaitBGMap
+ call CopyMenuData2
+ call InitVerticalMenuCursor
+ ld hl, w2DMenuFlags1
+ set 6, [hl]
+ ret
+; 100d88
+
+.MenuDataHeader: ; 100d88
+ db 0 ; flags
+ db 11, 11 ; start coords
+ db 17, 19 ; end coords
+ dw .MenuData2
+ db 1 ; default option
+
+.MenuData2: ; 100d90
+ db $c0 ; flags
+ db 3
+ db "いれかえる@" ; TRADE
+ db "つよさをみる@" ; STATS
+ db "キャンセル@" ; CANCEL
+; 100da5
+
+Function100da5: ; 100da5
+ ld hl, wcd2a
+ res 3, [hl]
+ ld hl, wcd29
+ res 0, [hl]
+ ret
+; 100db0
+
+Function100db0: ; 100db0
+ ld hl, wcd2a
+ bit 3, [hl]
+ jr nz, .asm_100dbe
+ ld hl, wcd2a
+ set 3, [hl]
+ scf
+ ret
+
+.asm_100dbe
+ xor a
+ ret
+; 100dc0
+
+
+
+Function100dc0: ; 100dc0
+ ld a, [wLinkMode]
+ cp LINK_MOBILE
+ jr nz, .mobile
+ ld hl, wcd2a
+ bit 3, [hl]
+ jr z, .mobile
+ scf
+ ret
+
+.mobile
+ xor a
+ ret
+; 100dd2
+
+Mobile_SetOverworldDelay: ; 100dd2
+ ld a, 30
+ ld [OverworldDelay], a
+ ret
+; 100dd8
+
+Function100dd8: ; 100dd8
+ ld c, $01
+ ld b, $03
+ farcall AdvanceMobileInactivityTimerAndCheckExpired
+ jr c, .asm_100dfb
+ ld c, $3c
+ ld b, $01
+ call Function10079c
+ jr c, .asm_100dfb
+ farcall Function10032e
+ ld a, [wcd2b]
+ and a
+ jr nz, .asm_100dfb
+ xor a
+ ret
+
+.asm_100dfb
+ scf
+ ret
+; 100dfd
+
+MobileComms_CheckInactivityTimer: ; 100dfd
+ ld a, [OverworldDelay]
+ ld c, a
+ ld a, 30
+ sub c
+ ld c, a
+ ld b, 3
+ push bc
+ farcall AdvanceMobileInactivityTimerAndCheckExpired ; useless to farcall
+ pop bc
+ jr c, .quit
+ ld b, 1
+ call Function10079c
+ jr c, .quit
+ call Function1009f3
+ jr c, .quit
+ farcall Function10032e ; useless to farcall
+ ld a, [wcd2b]
+ and a
+ jr nz, .quit
+ xor a
+ ret
+
+.quit
+ scf
+ ret
+; 100e2d
+
+Function100e2d: ; 100e2d
+ ld a, [OverworldDelay]
+ ld c, a
+ ld a, 30
+ sub c
+ ld c, a
+ ld b, 3
+ push bc
+ farcall AdvanceMobileInactivityTimerAndCheckExpired
+ pop bc
+ jr c, .asm_100e61
+ ld b, 1
+ call Function10079c
+ jr c, .asm_100e61
+ call Function1009f3
+ jr c, .asm_100e61
+ farcall Function10032e
+ ld a, [wcd2b]
+ and a
+ jr nz, .asm_100e61
+ call Function100e63
+ call Function100e84
+ xor a
+ ret
+
+.asm_100e61
+ scf
+ ret
+; 100e63
+
+Function100e63: ; 100e63
+ ld a, e
+ cp $02
+ ret nz
+ call Function100db0
+ ret nc
+ ld de, SFX_ELEVATOR_END
+ call PlaySFX
+ ret
+; 100e72
+
+Function100e72: ; 100e72
+ xor a
+ ld hl, wcd29
+ bit 0, [hl]
+ jr z, .asm_100e7c
+ ld a, $0a
+
+.asm_100e7c
+ ld [wcd67], a
+ xor a
+ ld [wcd68], a
+ ret
+; 100e84
+
+Function100e84: ; 100e84
+ ld a, [wcd67]
+ ld hl, Jumptable_100e8c
+ rst JumpTable
+ ret
+; 100e8c
+
+
+Jumptable_100e8c: ; 100e8c (40:4e8c)
+ dw Function100ea2
+ dw Function100eae
+ dw Function100eb4
+ dw Function100eae
+ dw Function100eb4
+ dw Function100eae
+ dw Function100eb4
+ dw Function100eae
+ dw Function100eb4
+ dw Function100eae
+ dw Function100ec4
+
+
+Function100ea2: ; 100ea2 (40:4ea2)
+ call Function100dc0
+ ret nc
+ ld hl, wcd29
+ set 0, [hl]
+ call Function100ec5
+
+
+Function100eae: ; 100eae
+ scf
+ call Function100eca
+ jr asm_100eb8
+
+Function100eb4: ; 100eb4
+ and a
+ call Function100eca
+
+asm_100eb8
+ ld hl, wcd68
+ inc [hl]
+ ld a, [hl]
+ cp $02
+ ret c
+ ld [hl], 0
+ jr Function100ec5
+
+Function100ec4: ; 100ec4
+ ret
+
+Function100ec5
+ ld hl, wcd67
+ inc [hl]
+ ret
+; 100eca
+
+Function100eca: ; 100eca
+ farcall Mobile_InitPartyMenuBGPal7
+ call Function100ed4
+ ret
+; 100ed4
+
+Function100ed4: ; 100ed4
+ farcall ApplyPals
+ ld a, $01
+ ld [hCGBPalUpdate], a
+ ret
+; 100edf
+
+Function100edf: ; 100edf
+ ld hl, Unknown_100fc0
+ ld c, 1
+ jr asm_100f02
+
+Function100ee6: ; 100ee6
+ ld hl, Unknown_100fc0
+ ld c, 2
+ jr asm_100f02
+
+Function100eed: ; 100eed
+ ld hl, Unknown_100feb
+ ld c, 1
+ jr asm_100f02
+
+Function100ef4: ; 100ef4
+ ld hl, Unknown_100ff3
+ ld c, 1
+ jr asm_100f02
+
+Function100efb: ; 100efb
+ ld hl, Unknown_10102c
+ ld c, 1
+ jr asm_100f02
+
+asm_100f02:
+ ld a, c
+ ld [StringBuffer2], a
+ ; someting that was previously stored in de gets backed up to here
+ ld a, e
+ ld [StringBuffer2 + 1], a
+ ld a, d
+ ld [StringBuffer2 + 2], a
+ ; empty this
+ xor a
+ ld [StringBuffer2 + 4], a
+ ld [StringBuffer2 + 5], a
+.loop
+ ld a, [hl]
+ cp $ff
+ jr z, .done
+ ld [StringBuffer2 + 3], a ; bank
+ push hl
+ inc hl
+ ; addr 1
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ; size
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ; addr 2
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call Function100f3d
+ ; next line
+ pop hl
+ ld de, 7
+ add hl, de
+ jr .loop
+
+.done
+ ; recover the values into bc
+ ld a, [StringBuffer2 + 4]
+ ld c, a
+ ld a, [StringBuffer2 + 5]
+ ld b, a
+ ret
+; 100f3d
+
+Function100f3d: ; 100f3d
+ ; parameter
+ ld a, [StringBuffer2]
+ cp $02
+ jr z, .two
+ cp $01
+ jr z, .one
+ cp $03
+ jr z, .three
+ ret
+
+.three
+ ; what was once in de gets copied to hl,
+ ; modified by Function100f8d, and put back
+ ; into this backup
+ ld a, [StringBuffer2 + 1]
+ ld l, a
+ ld a, [StringBuffer2 + 2]
+ ld h, a
+ call Function100f8d
+ ld a, l
+ ld [StringBuffer2 + 1], a
+ ld a, h
+ ld [StringBuffer2 + 2], a
+ ret
+
+.two
+ ; hl gets backed up to de, then
+ ; do the same as in .three
+ ld d, h
+ ld e, l
+ ld a, [StringBuffer2 + 1]
+ ld l, a
+ ld a, [StringBuffer2 + 2]
+ ld h, a
+ call Function100f8d
+ ld a, l
+ ld [StringBuffer2 + 1], a
+ ld a, h
+ ld [StringBuffer2 + 2], a
+ ret
+
+.one
+ ; de gets copied to hl, then
+ ; load the backup into de,
+ ; finally run Function100f8d
+ ; and store the de result
+ ld h, d
+ ld l, e
+ ld a, [StringBuffer2 + 1]
+ ld e, a
+ ld a, [StringBuffer2 + 2]
+ ld d, a
+ call Function100f8d
+ ld a, e
+ ld [StringBuffer2 + 1], a
+ ld a, d
+ ld [StringBuffer2 + 2], a
+ ret
+; 100f8d
+
+Function100f8d: ; 100f8d
+ push hl
+ ld a, [StringBuffer2 + 4]
+ ld l, a
+ ld a, [StringBuffer2 + 5]
+ ld h, a
+ add hl, bc
+ ld a, l
+ ld [StringBuffer2 + 4], a
+ ld a, h
+ ld [StringBuffer2 + 5], a
+ pop hl
+ ld a, [StringBuffer2 + 3]
+ bit 7, a
+ res 7, a
+ jr z, .sram
+ and a
+ jr nz, .far_wram
+ call CopyBytes
+ ret
+
+.far_wram
+ and $7f
+ call FarCopyWRAM
+ ret
+
+.sram
+ call GetSRAMBank
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 100fc0
+
+Unknown_100fc0: ; 100fc0
+ ; first byte:
+ ; Bit 7 set: Not SRAM
+ ; Lower 7 bits: Bank
+ ; Address, size (dw), address
+ dbwww $80, PlayerName, NAME_LENGTH, OTPlayerName
+ dbwww $80, PartyCount, 1 + PARTY_LENGTH + 1, OTPartyCount
+ dbwww $80, PlayerID, 2, OTPlayerID
+ dbwww $80, PartyMons, PARTYMON_STRUCT_LENGTH * PARTY_LENGTH, OTPartyMons
+ dbwww $80, PartyMonOT, NAME_LENGTH * PARTY_LENGTH, OTPartyMonOT
+ dbwww $80, PartyMonNicknames, PKMN_NAME_LENGTH * PARTY_LENGTH, OTPartyMonNicknames
+ db -1
+
+Unknown_100feb: ; 100feb
+ dbwww $00, sPartyMail, MAIL_STRUCT_LENGTH * PARTY_LENGTH, NULL
+ db -1
+
+Unknown_100ff3: ; 100ff3
+ dbwww $80, wdc41, 1, NULL
+ dbwww $80, PlayerName, NAME_LENGTH, NULL
+ dbwww $80, PlayerName, NAME_LENGTH, NULL
+ dbwww $80, PlayerID, 2, NULL
+ dbwww $80, wSecretID, 2, NULL
+ dbwww $80, PlayerGender, 1, NULL
+ dbwww $04, $a603, 8, NULL
+ dbwww $04, $a007, PARTYMON_STRUCT_LENGTH, NULL
+ db -1
+
+Unknown_10102c: ; 10102c
+ dbwww $80, OTPlayerName, NAME_LENGTH, NULL
+ dbwww $80, OTPlayerID, 2, NULL
+ dbwww $80, OTPartyMonNicknames, PKMN_NAME_LENGTH * PARTY_LENGTH, NULL
+ dbwww $80, OTPartyMonOT, NAME_LENGTH * PARTY_LENGTH, NULL
+ dbwww $80, OTPartyMons, PARTYMON_STRUCT_LENGTH * PARTY_LENGTH, NULL
+ db -1
+; 10104f
+
+Function101050: ; 101050
+ call Function10107d
+ ld a, [OTPartyCount]
+rept 2 ; ???
+ ld hl, wc608
+endr
+ ld bc, wc7bb - wc608
+ call Function1010de
+ ld hl, wc7bb
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld a, $07
+ call GetSRAMBank
+ ld hl, wc608
+ ld de, $a001
+ ld bc, wc7bd - wc608
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 10107d
+
+Function10107d: ; 10107d
+ xor a
+ ld hl, wc608
+ ld bc, wc7bd - wc608
+ call ByteFill
+ ld hl, OTPlayerName
+ ld de, wc608
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ ld hl, wd271
+ ld a, [hli]
+ ld [wc608 + 11], a
+ ld a, [hl]
+ ld [wc608 + 12], a
+ ld hl, OTPartyMonNicknames
+ ld de, wc608 + 13
+ ld bc, NAME_LENGTH
+ call .CopyAllFromOT
+ ld hl, OTPartyMonOT
+ ld de, OTClassName + 1
+ ld bc, NAME_LENGTH
+ call .CopyAllFromOT
+ ld hl, OTPartyMon1Species
+ ld de, $c699
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call .CopyAllFromOT
+ ld a, $50
+ ld [wc7b9], a
+ ld a, $33
+ ld [wc7ba], a
+ ret
+; 1010cd
+
+.CopyAllFromOT: ; 1010cd
+ push hl
+ ld hl, 0
+ ld a, [OTPartyCount]
+ call AddNTimes
+ ld b, h
+ ld c, l
+ pop hl
+ call CopyBytes
+ ret
+; 1010de
+
+Function1010de: ; 1010de
+ push hl
+ push bc
+ ld de, 0
+.loop
+ ld a, [hli]
+ add e
+ ld e, a
+ ld a, d
+ adc 0
+ ld d, a
+ dec bc
+ ld a, b
+ or c
+ jr nz, .loop
+ pop bc
+ pop hl
+ ret
+; 1010f2
+
+LoadSelectedPartiesForColosseum: ; 1010f2
+ xor a
+ ld hl, StringBuffer2
+ ld bc, 9
+ call ByteFill
+ ld hl, wPlayerMonSelection
+ ld de, PartyCount
+ call .CopyThreeSpecies
+ ld hl, wPlayerMonSelection
+ ld de, PartyMon1Species
+ call .CopyPartyStruct
+ ld hl, wPlayerMonSelection
+ ld de, PartyMonOT
+ call .CopyName
+ ld hl, wPlayerMonSelection
+ ld de, PartyMonNicknames
+ call .CopyName
+ ld hl, wOTMonSelection
+ ld de, OTPartyCount
+ call .CopyThreeSpecies
+ ld hl, wOTMonSelection
+ ld de, OTPartyMon1Species
+ call .CopyPartyStruct
+ ld hl, wOTMonSelection
+ ld de, OTPartyMonOT
+ call .CopyName
+ ld hl, wOTMonSelection
+ ld de, OTPartyMonNicknames
+ call .CopyName
+ ret
+; 101145
+
+.CopyThreeSpecies: ; 101145
+; Load the 3 choices to the buffer
+ push de
+ ld bc, StringBuffer2 + NAME_LENGTH_JAPANESE
+ xor a
+.party_loop
+ push af
+ call .GetNthSpecies
+ ld [bc], a
+ inc bc
+ pop af
+ inc a
+ cp 3
+ jr nz, .party_loop
+ pop de
+; Copy the 3 choices to the party
+ ld a, 3
+ ld [de], a
+ inc de
+ ld hl, StringBuffer2 + NAME_LENGTH_JAPANESE
+ ld bc, 3
+ call CopyBytes
+ ld a, $ff
+ ld [de], a
+ ret
+; 101168
+
+.GetNthSpecies: ; 101168
+; Preserves hl and de
+; Get the index of the Nth selection
+ push hl
+ add l
+ ld l, a
+ ld a, h
+ adc 0
+ ld h, a
+ ld a, [hl]
+ pop hl
+; Get the corresponding species
+ push de
+ inc de
+ add e
+ ld e, a
+ ld a, d
+ adc 0
+ ld d, a
+ ld a, [de]
+ pop de
+ ret
+; 10117c
+
+.CopyPartyStruct: ; 10117c
+ ld bc, PARTYMON_STRUCT_LENGTH
+ jr .ContinueCopy
+
+.CopyName: ; 101181
+ ld bc, NAME_LENGTH
+
+.ContinueCopy:
+ ; Copy, via wc608...
+ ld a, wc608 % $100
+ ld [StringBuffer2], a
+ ld a, wc608 / $100
+ ld [StringBuffer2 + 1], a
+ ; ... bc bytes...
+ ld a, c
+ ld [StringBuffer2 + 2], a
+ ld a, b
+ ld [StringBuffer2 + 3], a
+ ; ... to de...
+ ld a, e
+ ld [StringBuffer2 + 4], a
+ ld a, d
+ ld [StringBuffer2 + 5], a
+ ; ... 3 times.
+ ld a, 3
+.big_copy_loop
+ push af
+ ld a, [hli]
+ push hl
+ push af
+ call .GetDestinationAddress
+ call .GetCopySize
+ pop af
+ call AddNTimes
+ ld a, [StringBuffer2]
+ ld e, a
+ ld a, [StringBuffer2 + 1]
+ ld d, a
+ call CopyBytes
+ ld a, e
+ ld [StringBuffer2], a
+ ld a, d
+ ld [StringBuffer2 + 1], a
+ pop hl
+ pop af
+ dec a
+ jr nz, .big_copy_loop
+ call .GetCopySize
+ ld a, 3
+ ld hl, 0
+ call AddNTimes
+ ld b, h
+ ld c, l
+ call .GetDestinationAddress
+ ld d, h
+ ld e, l
+ ld hl, wc608
+ call CopyBytes
+ ret
+; 1011df
+
+.GetDestinationAddress: ; 1011df
+ ld a, [StringBuffer2 + 4]
+ ld l, a
+ ld a, [StringBuffer2 + 5]
+ ld h, a
+ ret
+; 1011e8
+
+.GetCopySize: ; 1011e8
+ ld a, [StringBuffer2 + 2]
+ ld c, a
+ ld a, [StringBuffer2 + 3]
+ ld b, a
+ ret
+; 1011f1
+
+Function1011f1: ; 1011f1
+ ld a, $04
+ call GetSRAMBank
+ ld a, [$a60c]
+ ld [wdc41], a
+ call CloseSRAM
+ ld hl, wdc41
+ res 4, [hl]
+ ld hl, GameTimerPause
+ bit 7, [hl]
+ jr z, .skip
+ ld hl, wdc41
+ set 4, [hl]
+
+.skip
+ call Function10209c
+ xor a
+ ld [wdc5f], a
+ ld [wdc60], a
+ ld a, LINK_MOBILE
+ ld [wLinkMode], a
+ ret
+; 101220
+
+Function101220: ; 101220
+ xor a
+ ld [wLinkMode], a
+ ret
+; 101225
+
+Function101225: ; 101225
+ ld d, 1
+ ld e, BANK(Jumptable_101297)
+ ld bc, Jumptable_101297
+ call Function100000
+ jr Function10123d
+
+Function101231: ; 101231
+ ld d, 2
+ ld e, BANK(Jumptable_101297)
+ ld bc, Jumptable_101297
+ call Function100000
+ jr Function10123d
+
+Function10123d: ; 10123d
+ xor a
+ ld [ScriptVar], a
+ ld a, c
+ ld hl, Jumptable_101247
+ rst JumpTable
+ ret
+; 101247
+
+Jumptable_101247: ; 101247
+ dw Function101251
+ dw Function10127d
+ dw Function10127c
+ dw Function10126c
+ dw Function101265
+; 101251
+
+Function101251: ; 101251
+ call UpdateSprites
+ call RefreshScreen
+ ld hl, UnknownText_0x1021f4
+ call Function1021e0
+ call Function1020ea
+ ret c
+ call Function102142
+ ret
+; 101265
+
+Function101265: ; 101265
+ ld hl, UnknownText_0x1021ef
+ call Function1021e0
+ ret
+; 10126c
+
+Function10126c: ; 10126c
+ call UpdateSprites
+ farcall Script_reloadmappart
+ ld hl, UnknownText_0x1021f4
+ call Function1021e0
+ ret
+; 10127c
+
+Function10127c: ; 10127c
+ ret
+; 10127d
+
+Function10127d: ; 10127d
+ ret
+; 10127e
+
+Function10127e: ; 10127e
+ ld a, [wdc5f]
+ and a
+ jr z, .zero
+ cp 1
+ ld c, $27
+ jr z, .load
+ cp 2
+ ld c, $37
+ jr z, .load
+.zero
+ ld c, 0
+.load
+ ld a, c
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101297
+
+Jumptable_101297: ; 101297
+ dw Function101a97 ; 00
+ dw Function101ab4 ; 01
+ dw Function101475 ; 02
+ dw Function101b0f ; 03
+ dw Function101438 ; 04
+ dw Function101b2b ; 05
+ dw Function101b59 ; 06
+ dw Function101475 ; 07
+ dw Function101b70 ; 08
+ dw Function101438 ; 09
+ dw Function101b8f ; 0a
+ dw Function101d7b ; 0b
+ dw Function101d95 ; 0c
+ dw Function101475 ; 0d
+ dw Function101db2 ; 0e
+ dw Function101e4f ; 0f
+ dw Function101475 ; 10
+ dw Function101e64 ; 11
+ dw Function101e4f ; 12
+ dw Function101475 ; 13
+ dw Function101e64 ; 14
+ dw Function101d95 ; 15
+ dw Function101475 ; 16
+ dw Function101db2 ; 17
+ dw Function101dd0 ; 18
+ dw Function101de3 ; 19
+ dw Function101e39 ; 1a
+ dw Function101e09 ; 1b
+ dw Function101e4f ; 1c
+ dw Function101475 ; 1d
+ dw Function101e64 ; 1e
+ dw Function101d95 ; 1f
+ dw Function101475 ; 20
+ dw Function101db2 ; 21
+ dw Function101e09 ; 22
+ dw Function101e31 ; 23
+ dw Function101bc8 ; 24
+ dw Function101438 ; 25
+ dw Function101be5 ; 26
+ dw Function101ac6 ; 27
+ dw Function101ab4 ; 28
+ dw Function101475 ; 29
+ dw Function101c11 ; 2a
+ dw Function1014f4 ; 2b
+ dw Function101cc8 ; 2c
+ dw Function1014e2 ; 2d
+ dw Function1014e2 ; 2e
+ dw Function101d10 ; 2f
+ dw Function101d2a ; 30
+ dw Function101d2a ; 31
+ dw Function101507 ; 32
+ dw Function10156d ; 33
+ dw Function101557 ; 34
+ dw Function10158a ; 35
+ dw Function101c42 ; 36
+ dw Function101aed ; 37
+ dw Function101ab4 ; 38
+ dw Function101475 ; 39
+ dw Function101c2b ; 3a
+ dw Function1014f4 ; 3b
+ dw Function101cdf ; 3c
+ dw Function1014e2 ; 3d
+ dw Function1014e2 ; 3e
+ dw Function101d1e ; 3f
+ dw Function101d2a ; 40
+ dw Function101d2a ; 41
+ dw Function101507 ; 42
+ dw Function10156d ; 43
+ dw Function101544 ; 44
+ dw Function10158a ; 45
+ dw Function101c42 ; 46
+ dw Function101c50 ; 47
+ dw Function1014ce ; 48
+ dw Function101cf6 ; 49
+ dw Function101826 ; 4a
+ dw Function1017e4 ; 4b
+ dw Function1017f1 ; 4c
+ dw Function1018a8 ; 4d
+ dw Function1018d6 ; 4e
+ dw Function1017e4 ; 4f
+ dw Function1017f1 ; 50
+ dw Function1018e1 ; 51
+ dw Function1015df ; 52
+ dw Function10167d ; 53
+ dw Function10168a ; 54
+ dw Function10162a ; 55
+ dw Function1015be ; 56
+ dw Function10167d ; 57
+ dw Function10168a ; 58
+ dw Function10161f ; 59
+ dw Function10159d ; 5a
+ dw Function10167d ; 5b
+ dw Function10168a ; 5c
+ dw Function101600 ; 5d
+ dw Function101d03 ; 5e
+ dw Function101d6b ; 5f
+ dw Function10159d ; 60
+ dw Function1014ce ; 61
+ dw Function10168e ; 62
+ dw Function101600 ; 63
+ dw Function101913 ; 64
+ dw Function10194b ; 65
+ dw _SelectMonsForMobileBattle ; 66
+ dw Function1017e4 ; 67
+ dw Function1017f5 ; 68
+ dw _StartMobileBattle ; 69
+ dw Function101537 ; 6a
+ dw Function101571 ; 6b
+ dw Function101c92 ; 6c
+ dw Function10152a ; 6d
+ dw Function101571 ; 6e
+ dw Function101a4f ; 6f
+ dw Function101cbc ; 70
+ dw Function101c62 ; 71
+ dw Function101537 ; 72
+ dw Function101571 ; 73
+ dw Function101c92 ; 74
+ dw Function10152a ; 75
+ dw Function101571 ; 76
+ dw Function101ca0 ; 77
+ dw Function101475 ; 78
+ dw Function101cbc ; 79
+; 10138b
+
+Function10138b: ; 10138b
+ farcall Function8adcc
+ ld c, 0
+ jr c, .asm_101396
+ inc c
+
+.asm_101396
+ sla c
+ ld a, [wcd2f]
+ and a
+ jr z, .asm_10139f
+ inc c
+
+.asm_10139f
+ sla c
+ ld a, [wcd21]
+ cp $01
+ jr z, .asm_1013a9
+ inc c
+
+.asm_1013a9
+ ret
+; 1013aa
+
+Function1013aa: ; 1013aa
+ call ClearBGPalettes
+ call Call_ExitMenu
+ call ReloadTilesetAndPalettes
+ farcall Function106464
+ call UpdateSprites
+ call FinishExitMenu
+ ret
+; 1013c0
+
+Function1013c0: ; 1013c0
+ farcall BlankScreen
+ farcall MobileFunc_106462
+ farcall Function106464
+ call FinishExitMenu
+ ret
+; 1013d6
+
+Function1013d6: ; 1013d6
+ farcall HDMATransferAttrMapAndTileMapToWRAMBank3
+ ret
+; 1013dd
+
+Function1013dd: ; 1013dd
+ call CGBOnly_CopyTilemapAtOnce
+ ret
+; 1013e1
+
+Function1013e1: ; 1013e1 ; unreferenced
+ push de
+ inc de
+ ld b, a
+ ld c, 0
+.asm_1013e6
+ inc c
+ ld a, [hli]
+ ld [de], a
+ inc de
+ and a
+ jr z, .asm_1013f1
+ dec b
+ jr nz, .asm_1013e6
+ scf
+
+.asm_1013f1
+ pop de
+ ld a, c
+ ld [de], a
+ ret
+; 1013f5
+
+Function1013f5: ; 1013f5
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld c, a
+.asm_1013f9
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_1013f9
+ ret
+; 101400
+
+Function101400: ; 101400 ; unreferenced
+ ld a, [de]
+ inc de
+ cp [hl]
+ jr nz, asm_101416
+ inc hl
+
+Function101406: ; 101406
+ ld c, a
+ ld b, 0
+.asm_101409
+ ld a, [de]
+ inc de
+ cp [hl]
+ jr nz, asm_101416
+ inc hl
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_101409
+ and a
+ ret
+
+asm_101416
+ scf
+ ret
+; 101418
+
+Function101418: ; 101418
+ call GetJoypad
+ ld a, [hJoyDown]
+ and SELECT + A_BUTTON
+ cp SELECT + A_BUTTON
+ jr z, .asm_101425
+ xor a
+ ret
+
+.asm_101425
+ ld a, $f7
+ ld [wcd2b], a
+ scf
+ ret
+; 10142c
+
+Function10142c: ; 10142c
+ ld a, $01
+ ld [wc305], a
+ farcall Function115e18
+ ret
+; 101438
+
+Function101438: ; 101438
+ ld hl, wcd29
+ set 6, [hl]
+ ld a, [wcd26]
+ ld hl, Jumptable_101457
+ rst JumpTable
+ ld a, [wcd26]
+ bit 7, a
+ ret z
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101457
+
+Jumptable_101457: ; 101457
+ dw Function10145b
+ dw Function101467
+; 10145b
+
+Function10145b: ; 10145b
+ ld a, $3c
+ ld [wcd42], a
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+
+Function101467: ; 101467
+ ld hl, wcd42
+ dec [hl]
+ ret nz
+ ld a, [wcd26]
+ set 7, a
+ ld [wcd26], a
+ ret
+; 101475
+
+Function101475: ; 101475
+ ld hl, wcd29
+ set 6, [hl]
+ ld a, [wcd26]
+ ld hl, Jumptable_101494
+ rst JumpTable
+ ld a, [wcd26]
+ bit 7, a
+ ret z
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101494
+
+Jumptable_101494: ; 101494
+ dw Function10149a
+ dw Function1014a6
+ dw Function1014b7
+; 10149a
+
+Function10149a: ; 10149a
+ ld a, $28
+ ld [wcd42], a
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+
+Function1014a6: ; 1014a6
+ ld hl, wcd42
+ dec [hl]
+ ret nz
+ ld a, $50
+ ld [wcd42], a
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+
+Function1014b7: ; 1014b7
+ call GetJoypad
+ ld a, [hJoyPressed]
+ and $03
+ jr nz, .asm_1014c5
+ ld hl, wcd42
+ dec [hl]
+ ret nz
+
+.asm_1014c5
+ ld a, [wcd26]
+ set 7, a
+ ld [wcd26], a
+ ret
+; 1014ce
+
+Function1014ce: ; 1014ce
+ farcall Function100720
+ farcall StartMobileInactivityTimer
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1014e2
+
+Function1014e2: ; 1014e2
+ ld hl, wcd29
+ set 6, [hl]
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1014f4
+
+Function1014f4: ; 1014f4
+ farcall EnableMobile
+ ld hl, wcd29
+ set 6, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101507
+
+Function101507: ; 101507
+ ld de, wcd30
+ ld hl, $40
+ ld bc, $40
+ ld a, $02
+ call Function3e32
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 10151d
+
+Function10151d: ; 10151d ; unreferenced
+ ld a, $34
+ call Function3e32
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 10152a
+
+Function10152a: ; 10152a
+ ld a, $36
+ call Function3e32
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101537
+
+Function101537: ; 101537
+ ld a, $0a
+ call Function3e32
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101544
+
+Function101544: ; 101544
+ farcall StartMobileInactivityTimer
+ ld a, $12
+ call Function3e32
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101557
+
+Function101557: ; 101557
+ farcall StartMobileInactivityTimer
+ ld hl, wcd53
+ ld a, $08
+ call Function3e32
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 10156d
+
+Function10156d: ; 10156d
+ call Function101418
+ ret c
+
+Function101571: ; 101571
+ farcall Function10032e
+ ret c
+ ret z
+ ld a, e
+ cp $01
+ jr z, .asm_101582
+ ld [wcd2b], a
+ ret
+
+.asm_101582
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 10158a
+
+Function10158a: ; 10158a
+ farcall IncrementMobileInactivityTimerBy1Frame
+ ld a, [wMobileInactivityTimerMinutes]
+ cp $0a
+ jr c, Function10156d
+ ld a, $fb
+ ld [wcd2b], a
+ ret
+; 10159d
+
+Function10159d: ; 10159d
+ ld de, wc608
+ farcall Function100edf
+ ld de, wc608
+ ld a, $05
+ ld hl, w5_d800
+ call Function10174c
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1015be
+
+Function1015be: ; 1015be
+ ld de, wc608
+ farcall Function100eed
+ ld de, wc608
+ ld a, $05
+ ld hl, w5_d800
+ call Function10174c
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1015df
+
+Function1015df: ; 1015df
+ ld de, wc608
+ farcall Function100ef4
+ ld de, wc608
+ ld a, $05
+ ld hl, w5_d800
+ call Function10174c
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101600
+
+Function101600: ; 101600
+ ld hl, w5_d800
+ ld de, wc608
+ ld bc, $1e0
+ ld a, $05
+ call FarCopyWRAM
+ ld de, wc608
+ farcall Function100ee6
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 10161f
+
+Function10161f: ; 10161f
+ call Function101649
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 10162a
+
+Function10162a: ; 10162a
+ call Function101663
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101635
+
+Function101635: ; 101635
+ ld de, wc608
+ ld bc, $1e0
+ call FarCopyWRAM
+ ret
+; 10163f
+
+Function10163f: ; 10163f
+ ld hl, wc608
+ ld bc, $1e0
+ call FarCopyWRAM
+ ret
+; 101649
+
+Function101649: ; 101649
+ ld a, $05
+ ld hl, w5_d800
+ call Function101635
+ ld a, $05
+ ld de, w5_da00
+ call Function10163f
+ ret
+; 10165a
+
+Function10165a: ; 10165a
+ ld a, $05
+ ld hl, w5_da00
+ call Function101635
+ ret
+; 101663
+
+Function101663: ; 101663
+ ld a, $05
+ ld hl, w5_d800
+ call Function101635
+ ld a, $05
+ ld de, w5_dc00
+ call Function10163f
+ ret
+; 101674
+
+Function101674: ; 101674 ; unreferenced
+ ld a, $05
+ ld hl, w5_dc00
+ call Function101635
+ ret
+; 10167d
+
+Function10167d: ; 10167d
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 10168a
+
+Function10168a: ; 10168a
+ call Function101418
+ ret c
+
+Function10168e: ; 10168e
+ ld b, 0
+ ld c, $01
+ farcall Function10079c
+ ret c
+ ld c, $01
+ ld b, $03
+ farcall AdvanceMobileInactivityTimerAndCheckExpired
+ ret c
+ ld a, [wcd26]
+ ld hl, Jumptable_1016c3
+ rst JumpTable
+ ld hl, wcd29
+ set 6, [hl]
+ ld a, [wcd26]
+ bit 7, a
+ ret z
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1016c3
+
+Jumptable_1016c3: ; 1016c3
+ dw Function1016cf
+ dw Function1016de
+ dw Function1016f8
+ dw Function101705
+ dw Function101719
+ dw Function101724
+; 1016cf
+
+Function1016cf: ; 1016cf
+ ld hl, wcd3a
+ inc [hl]
+ call Function10176f
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+ ret
+; 1016de
+
+Function1016de: ; 1016de
+ call Function10177b
+ jr nc, .asm_1016eb
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+ ret
+
+.asm_1016eb
+ ld a, $ff
+ ld [wcd39], a
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+ ret
+; 1016f8
+
+Function1016f8: ; 1016f8
+ ld a, 0
+ ld [wcd27], a
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+ ret
+; 101705
+
+Function101705: ; 101705
+ farcall Function100382
+ ld a, [wcd27]
+ bit 7, a
+ ret z
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+ ret
+; 101719
+
+Function101719: ; 101719
+ call Function1017c7
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+ ret
+; 101724
+
+Function101724: ; 101724
+ ld a, [wcd39]
+ cp $ff
+ jr z, .asm_101731
+ ld a, 0
+ ld [wcd26], a
+ ret
+
+.asm_101731
+ ld a, [wcd26]
+ set 7, a
+ ld [wcd26], a
+ ret
+; 10173a
+
+Unknown_10173a:
+ db $50
+
+Function10173b: ; 10173b
+ push bc
+ push af
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [Unknown_10173a]
+ ld c, a
+ ld b, 0
+ pop af
+ call AddNTimes
+ pop bc
+ ret
+; 10174c
+
+Function10174c: ; 10174c
+ ld [wcd3d], a
+ ld a, l
+ ld [wcd3e], a
+ ld a, h
+ ld [wcd3f], a
+ ld a, e
+ ld [wcd3b], a
+ ld a, d
+ ld [wcd3c], a
+ ld a, c
+ ld [wcd40], a
+ ld a, b
+ ld [wcd41], a
+ xor a
+ ld [wcd39], a
+ ld [wcd3a], a
+ ret
+; 10176f
+
+Function10176f: ; 10176f
+ ld hl, wccb4
+ ld bc, $54
+ ld a, $11
+ call ByteFill
+ ret
+; 10177b
+
+Function10177b: ; 10177b
+ ld a, [Unknown_10173a]
+ ld c, a
+ ld b, 0
+ ld a, [wcd3a]
+ ld hl, 0
+ call AddNTimes
+ ld e, l
+ ld d, h
+ ld hl, wcd40
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, l
+ sub e
+ ld l, a
+ ld a, h
+ sbc d
+ ld h, a
+ jr c, .asm_1017a0
+ add hl, bc
+ call Function1017b0
+ scf
+ ret
+
+.asm_1017a0
+ ld a, $ff
+ ld [wcd39], a
+ add hl, bc
+ ld a, h
+ or l
+ ret z
+ ld c, l
+ ld b, h
+ call Function1017b0
+ xor a
+ ret
+; 1017b0
+
+Function1017b0: ; 1017b0
+ ld a, c
+ ld [wccb4], a
+ push bc
+ ld a, [wcd3a]
+ dec a
+ ld hl, wcd3b
+ call Function10173b
+ pop bc
+ ld de, wccb5
+ call CopyBytes
+ ret
+; 1017c7
+
+Function1017c7: ; 1017c7
+ ld a, [wcc60]
+ ld c, a
+ ld b, 0
+ ld a, [wcd3a]
+ dec a
+ ld hl, wcd3e
+ call Function10173b
+ ld e, l
+ ld d, h
+ ld hl, wcc61
+ ld a, [wcd3d]
+ call FarCopyWRAM
+ and a
+ ret
+; 1017e4
+
+Function1017e4: ; 1017e4
+ ld a, 0
+ ld [wcd27], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1017f1
+
+Function1017f1: ; 1017f1
+ call Function101418
+ ret c
+
+Function1017f5: ; 1017f5
+ ld b, 0
+ ld c, $01
+ farcall Function10079c
+ ret c
+ ld c, $01
+ ld b, $03
+ farcall AdvanceMobileInactivityTimerAndCheckExpired
+ ret c
+ farcall Function100382
+ ld a, [wcd27]
+ bit 7, a
+ jr nz, .next
+ ld hl, wcd29
+ set 6, [hl]
+ ret
+
+.next
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101826
+
+Function101826: ; 101826
+ ld a, [wcd21]
+ cp $02
+ jr z, .asm_101833
+ cp $01
+ jr z, .asm_101844
+ jr .asm_101869
+
+.asm_101833
+ ld hl, Unknown_10186f
+ ld de, wccb4
+ call Function1013f5
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101844
+ farcall Function103654
+ ld a, c
+ ld hl, Unknown_101882
+ cp $01
+ jr z, .asm_10185b
+ ld hl, Unknown_101895
+ cp $02
+ jr z, .asm_10185b
+ jr .asm_101869
+
+.asm_10185b
+ ld de, wccb4
+ call Function1013f5
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101869
+ ld a, $fe
+ ld [wcd2b], a
+ ret
+; 10186f
+
+
+SECTION "ascii 10186f", ROMX
+
+ charmap " ", $20 ; revert to ascii
+
+Unknown_10186f:
+ db .end - @
+ db $19, $73, $09, $13, "trade_crystal"
+.end db 0
+
+Unknown_101882:
+ db .end - @
+ db $19, $67, $10, $01, "free__crystal"
+.end db 0
+
+Unknown_101895:
+ db .end - @
+ db $19, $67, $10, $01, "limit_crystal"
+.end db 0
+; 1018a8
+
+
+SECTION "bank40_3", ROMX
+
+Function1018a8: ; 1018a8
+ ld hl, wccb5
+ ld de, wcc61
+ ld a, $04
+ call Function101406
+ jr c, .asm_1018d0
+ ld hl, wccb9
+ ld de, wcc65
+ ld a, $06
+ call Function101406
+ jr c, .asm_1018ca
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_1018ca
+ ld a, $f6
+ ld [wcd2b], a
+ ret
+
+.asm_1018d0
+ ld a, $f5
+ ld [wcd2b], a
+ ret
+; 1018d6
+
+Function1018d6: ; 1018d6
+ call Function1018ec
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1018e1
+
+Function1018e1: ; 1018e1
+ call Function1018fb
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1018ec
+
+Function1018ec: ; 1018ec
+ ld a, $0a
+ ld hl, wccb4
+ ld [hli], a
+ ld c, a
+.asm_1018f3
+ call Random
+ ld [hli], a
+ dec c
+ jr nz, .asm_1018f3
+ ret
+; 1018fb
+
+Function1018fb: ; 1018fb
+ ld a, [wcd2f]
+ and a
+ jr z, .asm_101906
+ ld hl, wcc61
+ jr .asm_101909
+
+.asm_101906
+ ld hl, wccb5
+
+.asm_101909
+ ld de, LinkBattleRNs
+ ld bc, 10
+ call CopyBytes
+ ret
+; 101913
+
+Function101913: ; 101913
+ ld hl, wcd2a
+ set 0, [hl]
+ xor a
+ ld [wc30d], a
+ ld hl, wcd29
+ res 4, [hl]
+ xor a
+ ld [wc305], a
+ ld hl, wcd29
+ res 7, [hl]
+ ld a, $90
+ ld [hWY], a
+ ld a, [wcd21]
+ cp $01
+ jr z, .asm_10193f
+ cp $02
+ jr z, .asm_101945
+ ld a, $71
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_10193f
+ ld a, $66
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101945
+ ld a, $65
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 10194b
+
+Function10194b: ; 10194b
+ call DisableSpriteUpdates
+ call ClearSprites
+ farcall Function1021f9
+ ld hl, wcd29
+ bit 3, [hl]
+ jr nz, .asm_101967
+ call Function1013c0
+ ld a, $71
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101967
+ ld a, $60
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 10196d
+
+_SelectMonsForMobileBattle: ; 10196d
+ farcall BlankScreen
+ farcall Mobile_CommunicationStandby
+ ld hl, wcd29
+ set 5, [hl]
+ ld hl, wcd2a
+ set 6, [hl]
+ ld a, $06
+ ld [wccb4], a
+ ld hl, wPlayerMonSelection
+ ld de, wccb5
+ ld bc, 3
+ call CopyBytes
+ ld hl, wcd6c
+ ld a, [hli]
+ ld [wccb8], a
+ ld a, [hli]
+ ld [wccb9], a
+ ld a, [hl]
+ ld [wccba], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1019ab
+
+_StartMobileBattle: ; 1019ab
+ call CopyOtherPlayersBattleMonSelection
+ farcall Function100754
+ xor a
+ ld [wdc5f], a
+ ld [wdc60], a
+ farcall BlankScreen
+ call SpeechTextBox
+ farcall Function100846
+ ld c, 120
+ call DelayFrames
+ farcall ClearTileMap
+ call .CopyOTDetails
+ call StartMobileBattle
+ ld a, [wcd2b]
+ cp $fc
+ jr nz, .asm_1019e6
+ xor a
+ ld [wcd2b], a
+.asm_1019e6
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1019ee
+
+.CopyOTDetails: ; 1019ee
+ ld a, [rSVBK]
+ push af
+ ld a, 5
+ ld [rSVBK], a
+
+ ld bc, w5_dc0d
+ ld de, w5_dc11
+ farcall GetMobileOTTrainerClass
+
+ pop af
+ ld [rSVBK], a
+
+ ld a, c
+ ld [OtherTrainerClass], a
+ ld hl, OTPlayerName
+ ld de, OTClassName
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ ld a, [wcd2f]
+ and a
+ ld a, 2
+ jr z, .got_link_player_number
+ ld a, 1
+.got_link_player_number
+ ld [hLinkPlayerNumber], a
+ ret
+; 101a21
+
+StartMobileBattle: ; 101a21
+ ; force stereo and fast text speed
+ ld hl, Options
+ ld a, [hl]
+ push af
+ and (1 << STEREO)
+ or 1 ; 1 frame per character i.e. fast text
+ ld [hl], a
+ ld a, 1
+ ld [wDisableTextAcceleration], a
+ farcall BattleIntro
+ farcall DoBattle
+ farcall ShowLinkBattleParticipantsAfterEnd
+ xor a
+ ld [wDisableTextAcceleration], a
+ ld a, $ff
+ ld [hLinkPlayerNumber], a
+ pop af
+ ld [Options], a
+ ret
+; 101a4f
+
+Function101a4f: ; 101a4f
+ ld a, 1
+ ld [wDisableTextAcceleration], a
+ farcall DisplayLinkBattleResult
+ xor a
+ ld [wDisableTextAcceleration], a
+ farcall CleanUpBattleRAM
+ farcall LoadPokemonData
+ call Function1013c0
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101a75
+
+CopyOtherPlayersBattleMonSelection: ; 101a75
+ ld hl, wcc61
+ ld de, wOTMonSelection
+ ld bc, 3
+ call CopyBytes
+ ld de, wcc64
+ farcall Function100772
+ farcall Function101050
+ farcall LoadSelectedPartiesForColosseum
+ ret
+; 101a97
+
+Function101a97: ; 101a97
+ farcall Function115d99
+ ld hl, wcd29
+ set 7, [hl]
+ ld c, $02
+ call Function10142c
+ ld hl, wcd29
+ set 6, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101ab4
+
+Function101ab4: ; 101ab4
+ ld e, $01
+ call Function101ee4
+ ld hl, wcd29
+ set 5, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101ac6
+
+Function101ac6: ; 101ac6
+ farcall Function115d99
+ ld hl, wcd29
+ set 7, [hl]
+ ld c, $02
+ call Function10142c
+ ld hl, wcd29
+ set 6, [hl]
+ xor a
+ ld [wcd2f], a
+ ld de, wdc42
+ call Function102068
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101aed
+
+Function101aed: ; 101aed
+ farcall Function115d99
+ ld hl, wcd29
+ set 7, [hl]
+ ld c, $02
+ call Function10142c
+ ld hl, wcd29
+ set 6, [hl]
+ ld a, $01
+ ld [wcd2f], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101b0f
+
+Function101b0f: ; 101b0f
+ ld c, 0
+ call Function10142c
+ ld e, $03
+ call Function101ee4
+ ld hl, wcd29
+ set 5, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ld a, 0
+ ld [wcd26], a
+ ret
+; 101b2b
+
+Function101b2b: ; 101b2b
+ farcall Function100579
+ ld hl, wcd29
+ set 2, [hl]
+ ld a, [wcd26]
+ bit 7, a
+ ret z
+ call Function1013dd
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMenuCursorY]
+ cp $01
+ jr z, .asm_101b51
+ ld a, $02
+ ld [wcd2b], a
+ ret
+
+.asm_101b51
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101b59
+
+Function101b59: ; 101b59
+ ld c, $02
+ call Function10142c
+ ld e, $02
+ call Function101ee4
+ ld hl, wcd29
+ set 5, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101b70
+
+Function101b70: ; 101b70
+ ld c, $02
+ call Function10142c
+ ld e, $04
+ call Function101ee4
+ ld hl, wcd29
+ set 5, [hl]
+ call UpdateSprites
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ld a, 0
+ ld [wcd26], a
+ ret
+; 101b8f
+
+Function101b8f: ; 101b8f
+ farcall Function1005c3
+ ld hl, wcd29
+ set 2, [hl]
+ ld a, [wcd26]
+ bit 7, a
+ ret z
+ call Function1013dd
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMenuCursorY]
+ cp $01
+ jr z, .asm_101bbc
+ ld a, $01
+ ld [wcd2f], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101bbc
+ xor a
+ ld [wcd2f], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101bc8
+
+Function101bc8: ; 101bc8
+ ld c, $02
+ call Function10142c
+ ld e, $08
+ call Function101ee4
+ call Function102048
+ call Function1013dd
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101be5
+
+Function101be5: ; 101be5
+ farcall Function100579
+ ld hl, wcd29
+ set 2, [hl]
+ ld a, [wcd26]
+ bit 7, a
+ ret z
+ call Function1013dd
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMenuCursorY]
+ cp $01
+ jr nz, .asm_101c0b
+ ld a, $2a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101c0b
+ ld a, $02
+ ld [wcd2b], a
+ ret
+; 101c11
+
+Function101c11: ; 101c11
+ ld a, $01
+ ld [wdc5f], a
+ ld e, $09
+ call Function101ee4
+ call Function102048
+ ld hl, wcd29
+ set 5, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101c2b
+
+Function101c2b: ; 101c2b
+ ld a, $02
+ ld [wdc5f], a
+ ld e, $07
+ call Function101ee4
+ ld hl, wcd29
+ set 5, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101c42
+
+Function101c42: ; 101c42
+ ld hl, wcd2a
+ set 1, [hl]
+ call Function100665
+ ld a, $47
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101c50
+
+Function101c50: ; 101c50
+ ld e, $0a
+ call Function101ee4
+ ld hl, wcd29
+ set 2, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101c62
+
+Function101c62: ; 101c62
+ farcall Function115d99
+ ld hl, wcd29
+ set 7, [hl]
+ ld c, $01
+ call Function10142c
+ xor a
+ ld [wc30d], a
+ ld hl, wcd29
+ res 4, [hl]
+ ld e, $0b
+ call Function101ee4
+ ld hl, wcd29
+ set 5, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ld a, 0
+ ld [wcd26], a
+ ret
+; 101c92
+
+Function101c92: ; 101c92
+ farcall Function100675
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101ca0
+
+Function101ca0: ; 101ca0
+ ld c, $02
+ call Function10142c
+ ld e, $0c
+ call Function101ee4
+ ld hl, wcd29
+ set 5, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ld a, 0
+ ld [wcd26], a
+ ret
+; 101cbc
+
+Function101cbc: ; 101cbc
+ ld a, $01
+ ld [wcd2b], a
+ ret
+; 101cc2
+
+Function101cc2: ; 101cc2 ; unreferenced
+ ld a, $02
+ ld [wcd2b], a
+ ret
+; 101cc8
+
+Function101cc8: ; 101cc8
+ ld a, $01
+ ld [wc314], a
+ ld a, $01
+ ld [wc30d], a
+ ld hl, wcd29
+ set 4, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101cdf
+
+Function101cdf: ; 101cdf
+ ld a, $06
+ ld [wc314], a
+ ld a, $01
+ ld [wc30d], a
+ ld hl, wcd29
+ set 4, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101cf6
+
+Function101cf6: ; 101cf6
+ ld a, $0b
+ ld [wc314 + 1], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101d03
+
+Function101d03: ; 101d03
+ ld a, $0e
+ ld [wc314 + 1], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101d10
+
+Function101d10: ; 101d10
+ ld c, $01
+ call Function10142c
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ jr Function101d2a
+
+Function101d1e: ; 101d1e
+ ld c, $03
+ call Function10142c
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+
+Function101d2a: ; 101d2a
+ call Function101418
+ ret c
+ ld hl, wcd29
+ set 6, [hl]
+ ld a, [wcd26]
+ ld hl, Jumptable_101d4d
+ rst JumpTable
+ ld a, [wcd26]
+ bit 7, a
+ ret z
+ ld a, 0
+ ld [wcd26], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101d4d
+
+Jumptable_101d4d: ; 101d4d
+ dw Function101d51
+ dw Function101d5d
+; 101d51
+
+Function101d51: ; 101d51
+ ld a, $3c
+ ld [wcd42], a
+ ld a, [wcd26]
+ inc a
+ ld [wcd26], a
+
+Function101d5d: ; 101d5d
+ ld hl, wcd42
+ dec [hl]
+ ret nz
+ ld a, [wcd26]
+ set 7, a
+ ld [wcd26], a
+ ret
+; 101d6b
+
+Function101d6b: ; 101d6b
+ ld a, [wc30d]
+ and a
+ ret nz
+ ld hl, wcd29
+ res 4, [hl]
+ ld a, $64
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101d7b
+
+Function101d7b: ; 101d7b
+ farcall Function10138b
+ ld b, 0
+ ld hl, Unknown_101d8d
+ add hl, bc
+ ld c, [hl]
+ ld a, c
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101d8d
+
+Unknown_101d8d: ; 101d8d
+ db $15, $15, $1f, $1f, $0c, $12, $3a, $3a
+; 101d95
+
+Function101d95: ; 101d95
+ call Function101ee2
+ call LoadStandardMenuDataHeader
+ ld e, $0e
+ call Function101ee4
+ ld hl, wcd29
+ set 5, [hl]
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ld a, 0
+ ld [wcd26], a
+ ret
+; 101db2
+
+Function101db2: ; 101db2
+ farcall Function103302
+ call ExitMenu
+ ld hl, wcd29
+ set 5, [hl]
+ jr c, .asm_101dca
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101dca
+ ld a, $02
+ ld [wcd2b], a
+ ret
+; 101dd0
+
+Function101dd0: ; 101dd0
+ ld hl, wdc41
+ bit 1, [hl]
+ jr nz, .asm_101ddd
+ ld a, $19
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101ddd
+ ld a, $1b
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101de3
+
+Function101de3: ; 101de3
+ call Function101ecc
+ call Function101ead
+ jr c, .asm_101df3
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101df3
+ call Function101e98
+ jr c, .asm_101e00
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101e00
+ call Function101ed3
+ ld a, $02
+ ld [wcd2b], a
+ ret
+; 101e09
+
+Function101e09: ; 101e09
+ call Function101ead
+ jr c, .asm_101e16
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101e16
+ call Function101ecc
+ call Function101e98
+ push af
+ call Function101ed3
+ pop af
+ jr c, .asm_101e2b
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101e2b
+ ld a, $02
+ ld [wcd2b], a
+ ret
+; 101e31
+
+Function101e31: ; 101e31
+ ld a, $3a
+ ld [wMobileCommsJumptableIndex], a
+ jp Function101c2b
+; 101e39
+
+Function101e39: ; 101e39
+ call Function1020bf
+ push af
+ call Function101ed3
+ pop af
+ jr c, .asm_101e49
+ ld a, $2a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101e49
+ ld a, $02
+ ld [wcd2b], a
+ ret
+; 101e4f
+
+Function101e4f: ; 101e4f
+ ld e, $06
+ call Function101ee4
+ call Function1013d6
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ld a, 0
+ ld [wcd26], a
+ ret
+; 101e64
+
+Function101e64: ; 101e64
+ call Function101ecc
+ call Function1020a8
+ push af
+ call Function101ed3
+ pop af
+ jr c, .asm_101e77
+ ld a, $24
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_101e77
+ ld hl, wcd29
+ set 5, [hl]
+ ld a, $02
+ ld [wcd2b], a
+ ret
+; 101e82
+
+Function101e82: ; 101e82 ; unreferenced
+ call Function101ecc
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101e8d
+
+Function101e8d: ; 101e8d ; unreferenced
+ call Function101ed3
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 101e98
+
+Function101e98: ; 101e98
+ call ClearSprites
+ farcall Function8adb3
+ ret c
+ ld hl, GameTimerPause
+ set 7, [hl]
+ ld hl, wdc41
+ set 4, [hl]
+ ret
+; 101ead
+
+Function101ead: ; 101ead
+ ld hl, GameTimerPause
+ bit 7, [hl]
+ jr nz, .asm_101ec8
+ ld hl, wdc41
+ bit 2, [hl]
+ jr z, .asm_101eca
+ ld a, [wcd2f]
+ and a
+ jr nz, .asm_101ec8
+ ld hl, wdc41
+ bit 1, [hl]
+ jr z, .asm_101eca
+
+.asm_101ec8
+ xor a
+ ret
+
+.asm_101eca
+ scf
+ ret
+; 101ecc
+
+Function101ecc: ; 101ecc
+ call Function101ee2
+ call FadeToMenu
+ ret
+; 101ed3
+
+Function101ed3: ; 101ed3
+ call Function1013aa
+ farcall Function115d99
+ ld hl, wcd29
+ set 7, [hl]
+ ret
+; 101ee2
+
+Function101ee2: ; 101ee2
+ ld e, 0
+
+Function101ee4: ; 101ee4
+ ld d, 0
+ ld hl, Unknown_101ef5
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld d, [hl]
+ ld e, a
+ farcall Function100504
+ ret
+; 101ef5
+
+Unknown_101ef5: ; 101ef5
+ dw String_101f13
+ dw String_101f14
+ dw String_101f32
+ dw String_101f4f
+ dw String_101f69
+ dw String_101f81
+ dw String_101f93
+ dw String_101faa
+ dw String_101fc5
+ dw String_101fd2
+ dw String_101fe1
+ dw String_101fef
+ dw String_102000
+ dw String_10200c
+ dw String_102014
+
+String_101f13: ; 101f13
+ db "@"
+
+String_101f14: ; 101f14
+ db "モバイルアダプタを つかって"
+ next "おともだちと つうしんします@"
+
+String_101f32: ; 101f32
+ db "でんわを かけるひとには"
+ next "つうわりょうきんが かかります@"
+
+String_101f4f: ; 101f4f
+ db "モバイルアダプタの じゅんびは"
+ next "できて いますか?@"
+
+String_101f69: ; 101f69
+ db "あなたが おともだちに"
+ next "でんわを かけますか?@"
+
+String_101f81: ; 101f81
+ db "めいしフ,ルダーを"
+ next "つかいますか?@"
+
+String_101f93: ; 101f93
+ db "でんわばんごうを にゅうりょく"
+ next "してください@"
+
+String_101faa: ; 101faa
+ db "それでは おともだちからの"
+ next "でんわを おまちします…@"
+
+String_101fc5: ; 101fc5
+ next "に でんわを かけます@"
+
+String_101fd2: ; 101fd2
+ next "に でんわを かけています@"
+
+String_101fe1: ; 101fe1
+ db "でんわが つながりました!@"
+
+String_101fef: ; 101fef
+ db "つうわを"
+ next "しゅうりょう します…@"
+
+String_102000: ; 102000
+ db "つうしん しゅうりょう@"
+
+String_10200c: ; 10200c
+ db "つうわ じかん@"
+
+String_102014: ; 102014
+ db "それでは つうしんの"
+ next "せっていを してください@"
+; 10202c
+
+Function10202c: ; 10202c
+ farcall Function115d99
+ ld hl, wcd29
+ set 7, [hl]
+ ld c, $02
+ call Function10142c
+ ld e, $0d
+ call Function101ee4
+ hlcoord 4, 4
+ call Function100681
+ ret
+; 102048
+
+Function102048: ; 102048
+ call Function10204c
+ ret
+; 10204c
+
+Function10204c: ; 10204c
+ hlcoord 3, 2
+ ld c, $10
+ ld de, wcd53
+.asm_102054
+ ld a, [de]
+ inc de
+ and a
+ jr z, .asm_102067
+ sub $30
+ jr c, .asm_102067
+ cp $0a
+ jr nc, .asm_102067
+ add $f6
+ ld [hli], a
+ dec c
+ jr nz, .asm_102054
+
+.asm_102067
+ ret
+; 102068
+
+Function102068: ; 102068
+ ld hl, wcd53
+ ld c, $08
+.asm_10206d
+ ld a, [de]
+ call Function102080
+ jr c, .asm_10207f
+ ld a, [de]
+ swap a
+ call Function102080
+ jr c, .asm_10207f
+ inc de
+ dec c
+ jr nz, .asm_10206d
+
+.asm_10207f
+ ret
+; 102080
+
+Function102080: ; 102080
+ and $0f
+ cp $0f
+ jr z, .asm_10208a
+ add $30
+ ld [hli], a
+ ret
+
+.asm_10208a
+ ld [hl], 0
+ scf
+ ret
+; 10208e
+
+Function10208e: ; 10208e
+ push de
+ ld h, d
+ ld l, e
+ ld de, wdc42
+ ld bc, 8
+ call CopyBytes
+ pop de
+ ret
+; 10209c
+
+Function10209c: ; 10209c
+ ld a, $ff
+ ld hl, wdc42
+ ld bc, 8
+ call ByteFill
+ ret
+; 1020a8
+
+Function1020a8: ; 1020a8
+ call Function10209c
+ ld c, $01
+ ld de, wdc42
+ farcall Function17a68f
+ ret c
+ call Function10208e
+ call Function102068
+ xor a
+ ret
+; 1020bf
+
+Function1020bf: ; 1020bf
+ call ClearSprites
+ farcall Function8aba9
+ ld a, c
+ and a
+ jr z, .asm_1020e8
+ dec a
+ ld hl, $a04c
+ ld bc, $25
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ld a, $04
+ call GetSRAMBank
+ call Function10208e
+ call Function102068
+ call CloseSRAM
+ xor a
+ ret
+
+.asm_1020e8
+ scf
+ ret
+; 1020ea
+
+Function1020ea: ; 1020ea
+ ld hl, wdc41
+ bit 4, [hl]
+ jr z, .quit
+ ld hl, wdc41
+ bit 2, [hl]
+ jr nz, .quit
+ call Function10218d
+ ld hl, wc608
+ bit 4, [hl]
+ jr z, .quit
+ ld hl, wc608
+ bit 2, [hl]
+ jr nz, .quit
+ call Function102112
+ jr z, .quit
+ and a
+ ret
+
+.quit
+ scf
+ ret
+; 102112
+
+Function102112: ; 102112
+ ld a, $04
+ call GetSRAMBank
+ ld hl, $a041
+ ld c, 40
+.outer_loop
+ push hl
+ ld de, $c60f
+ ld b, 31
+.inner_loop
+ ld a, [de]
+ cp [hl]
+ jr nz, .not_matching
+ inc de
+ inc hl
+ dec b
+ jr nz, .inner_loop
+ pop hl
+ xor a
+ jr .done
+
+.not_matching
+ pop hl
+ ld de, 37
+ add hl, de
+ dec c
+ jr nz, .outer_loop
+ ld a, $01
+ and a
+ jr .done ; useless jr
+
+.done
+ push af
+ call CloseSRAM
+ pop af
+ ret
+; 102142
+
+Function102142: ; 102142
+ call Function10218d
+ call Function102180
+ ld hl, UnknownText_0x1021d1
+ call MenuTextBox
+ ld de, SFX_LEVEL_UP
+ call PlaySFX
+ call JoyWaitAorB
+ call ExitMenu
+ call Function10219f
+ ld hl, UnknownText_0x1021d6
+ call MenuTextBox
+ call YesNoBox
+ call ExitMenu
+ jr c, .asm_10217c
+ call Function1021b8
+ jr c, .asm_10217c
+ call Function10218d
+ call Function102180
+ ld hl, UnknownText_0x1021db
+ call PrintText
+
+.asm_10217c
+ call Function1013d6
+ ret
+; 102180
+
+Function102180: ; 102180
+ ld hl, wc608 + 1
+ ld de, StringBuffer2
+ ld bc, 11
+ call CopyBytes
+ ret
+; 10218d
+
+Function10218d: ; 10218d
+ ld hl, w5_dc00
+ ld de, wc608
+ ld bc, $26
+ ld a, $05
+ call FarCopyWRAM
+ ld de, wc608 + 1 ; useless
+ ret
+; 10219f
+
+Function10219f: ; 10219f
+ call FadeToMenu
+ call Function10218d
+ ld de, wc608 + 1
+ farcall Function8ac4e
+ call JoyWaitAorB
+ call PlayClickSFX
+ call Function1013aa
+ ret
+; 1021b8
+
+Function1021b8: ; 1021b8
+ call FadeToMenu
+ call Function10218d
+ ld de, wPlayerMoveStruct
+ farcall Function8ac70
+ ld a, c
+ ld [StringBuffer1], a
+ push af
+ call Function1013aa
+ pop af
+ ret
+; 1021d1
+
+UnknownText_0x1021d1: ; 1021d1
+ text_jump UnknownText_0x1bd19a
+ db "@"
+
+UnknownText_0x1021d6: ; 1021d1
+ text_jump UnknownText_0x1bd1ba
+ db "@"
+
+UnknownText_0x1021db: ; 1021d1
+ text_jump UnknownText_0x1bd1dd
+ db "@"
+; 1021e0
+
+Function1021e0: ; 1021e0
+ call MenuTextBox
+ call JoyWaitAorB
+ call ExitMenu
+ ret
+; 1021ea
+
+UnknownText_0x1021ea: ; 1021ea
+ text_jump UnknownText_0x1bd201
+ db "@"
+
+UnknownText_0x1021ef:
+ text_jump UnknownText_0x1bd211
+ db "@"
+
+UnknownText_0x1021f4:
+ text_jump UnknownText_0x1bd223
+ db "@"
+; 1021f9
+
+Function1021f9: ; 1021f9
+ call Function102233
+ ld a, $0 ; Function10234b
+ ld [wcd49], a
+ ld hl, wcd29
+ bit 3, [hl]
+ res 3, [hl]
+ jr z, .asm_10220f
+ ld a, $1 ; Function102361
+ ld [wcd49], a
+
+.asm_10220f
+ call Function1022ca
+ ld a, [wcd49]
+ ld hl, Jumptable_1022f5
+ rst JumpTable
+ call Function102241
+ call Function1022d0
+ jr c, .asm_102231
+ ld a, [wcd49]
+ bit 7, a
+ jr z, .asm_10220f
+ xor a
+ ld hl, wcd29
+ bit 3, [hl]
+ ret z
+ scf
+ ret
+
+.asm_102231
+ xor a
+ ret
+; 102233
+
+Function102233: ; 102233
+ ld hl, wcd49
+ ld bc, 10
+ xor a
+ call ByteFill
+ call Function10304f
+ ret
+; 102241
+
+Function102241: ; 102241
+ call Function10226a
+ call Function102274
+ call Function10224b
+ ret
+; 10224b
+
+Function10224b: ; 10224b
+ ld hl, wcd4b
+ bit 1, [hl]
+ jr nz, .asm_10225e
+ bit 2, [hl]
+ jr nz, .asm_10225e
+ call DelayFrame
+ call DelayFrame
+ xor a
+ ret
+
+.asm_10225e
+ res 1, [hl]
+ res 2, [hl]
+ farcall Mobile_ReloadMapPart
+ scf
+ ret
+; 10226a
+
+Function10226a: ; 10226a
+ ld hl, wcd4b
+ bit 0, [hl]
+ ret z
+ call Function10305d
+ ret
+; 102274
+
+Function102274: ; 102274
+ ld hl, wcd4b
+ bit 3, [hl]
+ ret z
+ res 3, [hl]
+ ld de, 8
+ call PlaySFX
+ ret
+; 102283
+
+Function102283: ; 102283
+ ld a, $01
+ ld [AttrMapEnd], a
+ ld hl, wcd4b
+ set 0, [hl]
+ ret
+; 10228e
+
+Function10228e: ; 10228e
+ xor a
+ ld [AttrMapEnd], a
+ ld hl, wcd4b
+ res 0, [hl]
+ ret
+; 102298
+
+Function102298: ; 102298
+ ld a, e
+ cp $02
+ ret nz
+ ld hl, wcd4b
+ bit 6, [hl]
+ jr z, .asm_1022b6
+ ld hl, wcd4b
+ bit 7, [hl]
+ ld hl, wcd4b
+ set 7, [hl]
+ ret nz
+ ld de, SFX_ELEVATOR_END
+ call PlaySFX
+ jr .asm_1022c1
+
+.asm_1022b6
+ ld hl, wcd4b
+ bit 7, [hl]
+ ld hl, wcd4b
+ res 7, [hl]
+ ret z
+
+.asm_1022c1
+ call Function10304f
+ ld a, $01
+ ld [AttrMapEnd], a
+ ret
+; 1022ca
+
+Function1022ca: ; 1022ca
+ ld a, 30
+ ld [OverworldDelay], a
+ ret
+; 1022d0
+
+Function1022d0: ; 1022d0
+ farcall Function10032e
+ ld a, [wcd2b]
+ and a
+ jr nz, .asm_1022f3
+ call Function102298
+ ld a, [OverworldDelay]
+ ld c, a
+ ld a, 30
+ sub c
+ ld c, a
+ ld b, $03
+ farcall AdvanceMobileInactivityTimerAndCheckExpired
+ jr c, .asm_1022f3
+ xor a
+ ret
+
+.asm_1022f3
+ scf
+ ret
+; 1022f5
+
+Jumptable_1022f5: ; 1022f5
+ dw Function10234b ; 00
+ dw Function102361 ; 01
+ dw Function10236e ; 02
+ dw Function102387 ; 03
+ dw Function1023a1 ; 04
+ dw Function1025c7 ; 05
+ dw Function1025dc ; 06
+ dw Function1024f6 ; 07
+ dw Function10250c ; 08
+ dw Function1024a8 ; 09
+ dw Function102591 ; 0a
+ dw Function1024a8 ; 0b
+ dw Function1025b0 ; 0c
+ dw Function1025bd ; 0d
+ dw Function102814 ; 0e
+ dw Function10283c ; 0f
+ dw Function102862 ; 10
+ dw Function10286f ; 11
+ dw Function1024a8 ; 12
+ dw Function1028a5 ; 13
+ dw Function1028ab ; 14
+ dw Function1023b5 ; 15
+ dw Function1023c6 ; 16
+ dw Function1024af ; 17
+ dw Function102416 ; 18
+ dw Function102423 ; 19
+ dw Function10244b ; 1a
+ dw Function1024af ; 1b
+ dw Function10246a ; 1c
+ dw Function102652 ; 1d
+ dw Function10266b ; 1e
+ dw Function1025e9 ; 1f
+ dw Function1025ff ; 20
+ dw Function102738 ; 21
+ dw Function102754 ; 22
+ dw Function1026b7 ; 23
+ dw Function1026c8 ; 24
+ dw Function1028bf ; 25
+ dw Function1028c6 ; 26
+ dw Function1028d3 ; 27
+ dw Function1028da ; 28
+ dw Function1024a8 ; 29
+ dw Function10248d ; 2a
+; 10234b
+
+Function10234b: ; 10234b
+ call Function102d9a
+ call Function102dd3
+ call Function102dec
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 102361
+
+Function102361: ; 102361
+ ld a, $cc
+ call Function1028e8
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 10236e
+
+Function10236e: ; 10236e
+ call Function1028fc
+ ret nc
+ ld a, [wcd51]
+ cp $cc
+ jr z, .asm_10237f
+ ld a, $f2
+ ld [wcd2b], a
+ ret
+
+.asm_10237f
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 102387
+
+Function102387: ; 102387
+ ld hl, wcd4b
+ set 6, [hl]
+ xor a
+ ld [wdc5f], a
+ ld de, MUSIC_ROUTE_30
+ call PlayMusic
+ call Function102d9a
+ call Function102dd3
+ ld a, $01
+ ld [wMenuCursorY], a
+
+Function1023a1: ; 1023a1
+ call Function102283
+ call Function102db7
+ call Function102dec
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, $1d
+ ld [wcd49], a
+ ret
+; 1023b5
+
+Function1023b5: ; 1023b5
+ call Function10228e
+ call Function102a3b
+ call Function102b12
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 1023c6
+
+Function1023c6: ; 1023c6
+ call Function102c48
+ call Function102c87
+ ld a, [wcd4c]
+ dec a
+ ld [CurPartyMon], a
+ xor a
+ ld [wPokemonWithdrawDepositParameter], a
+ farcall RemoveMonFromPartyOrBox
+ ld hl, PartyCount
+ inc [hl]
+ ld a, [hli]
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld [hl], $ff
+ ld a, [PartyCount]
+ ld [wcd4c], a
+ call Function102c07
+ call Function102d48
+ call Function102b32
+ call Function102f50
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, $14
+ ld [wcd4e], a
+ ld a, 0
+ ld [wcd4f], a
+ ld a, 0
+ ld [wcd4a], a
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 102416
+
+Function102416: ; 102416
+ ld a, $aa
+ call Function1028e8
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 102423
+
+Function102423: ; 102423
+ call Function102921
+ ret nc
+ farcall SaveAfterLinkTrade
+ farcall TrainerRankings_Trades
+ farcall BackupMobileEventIndex
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, 0
+ ld [wcd4a], a
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 10244b
+
+Function10244b: ; 10244b
+ call Function102f32
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, $19
+ ld [wcd4e], a
+ ld a, 0
+ ld [wcd4f], a
+ ld a, 0
+ ld [wcd4a], a
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 10246a
+
+Function10246a: ; 10246a
+ call Function102d9a
+ ld hl, wcd29
+ set 3, [hl]
+ call Function102e07
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, $2a
+ ld [wcd49], a
+ ret
+; 102480
+
+Function102480: ; 102480
+ ld c, $32
+ call DelayFrames
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 10248d
+
+Function10248d: ; 10248d
+ ld a, [wcd49]
+ set 7, a
+ ld [wcd49], a
+ ret
+; 102496
+
+Function102496: ; 102496
+ ld hl, wcd4e
+ dec [hl]
+ ret nz
+ ld a, 0
+ ld [wcd4a], a
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 1024a8
+
+Function1024a8: ; 1024a8
+ farcall Function1009f3
+ ret c
+
+Function1024af: ; 1024af
+ call GetJoypad
+ ld a, [wcd4a]
+ ld hl, Jumptable_1024ba
+ rst JumpTable
+ ret
+; 1024ba
+
+Jumptable_1024ba: ; 1024ba
+ dw Function1024c0
+ dw Function1024cb
+ dw Function1024de
+; 1024c0
+
+Function1024c0: ; 1024c0
+ ld hl, wcd4e
+ inc [hl]
+ ld a, [wcd4a]
+ inc a
+ ld [wcd4a], a
+
+Function1024cb: ; 1024cb
+ ld hl, wcd4e
+ dec [hl]
+ ret nz
+ ld a, [wcd4f]
+ inc a
+ ld [wcd4e], a
+ ld a, [wcd4a]
+ inc a
+ ld [wcd4a], a
+
+Function1024de: ; 1024de
+ ld hl, wcd4e
+ dec [hl]
+ jr z, .asm_1024e9
+ ld a, [hJoyPressed]
+ and A_BUTTON | B_BUTTON
+ ret z
+
+.asm_1024e9
+ ld a, 0
+ ld [wcd4a], a
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 1024f6
+
+Function1024f6: ; 1024f6
+ call PlaceHollowCursor
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, [wcd4c]
+ call Function1028e8
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 10250c
+
+Function10250c: ; 10250c
+ call Function1028fc
+ ret nc
+ ld a, [wcd51]
+ cp $0f
+ jr z, .asm_10254b
+ and a
+ jr z, .asm_102572
+ cp $aa
+ jr z, .asm_102572
+ cp $07
+ jr nc, .asm_102572
+ ld [wcd4d], a
+ dec a
+ ld [wd003], a
+ ld a, [wcd4c]
+ dec a
+ ld [wd002], a
+ call Function102b9c
+ call Function102bdc
+ jr c, .asm_10256d
+ farcall Functionfb5dd
+ jr c, .asm_102568
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, $0e
+ ld [wcd49], a
+ ret
+
+.asm_10254b
+ call Function103021
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, 0
+ ld [wcd4a], a
+ ld a, $1e
+ ld [wcd4e], a
+ ld a, $1e
+ ld [wcd4f], a
+ ld a, $29
+ ld [wcd49], a
+ ret
+
+.asm_102568
+ call Function102ff5
+ jr .asm_102577
+
+.asm_10256d
+ call Function102f85
+ jr .asm_102577
+
+.asm_102572
+ call Function102fce
+ jr .asm_102577
+
+.asm_102577
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, 0
+ ld [wcd4a], a
+ ld a, $1e
+ ld [wcd4e], a
+ ld a, $3c
+ ld [wcd4f], a
+ ld a, $09
+ ld [wcd49], a
+ ret
+; 102591
+
+Function102591: ; 102591
+ call Function102ee7
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, 0
+ ld [wcd4a], a
+ ld a, $1e
+ ld [wcd4e], a
+ ld a, $3c
+ ld [wcd4f], a
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 1025b0
+
+Function1025b0: ; 1025b0
+ ld a, $09
+ call Function1028e8
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 1025bd
+
+Function1025bd: ; 1025bd
+ call Function1028fc
+ ret nc
+ ld a, $04
+ ld [wcd49], a
+ ret
+; 1025c7
+
+Function1025c7: ; 1025c7
+ call Function102f6d
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, $0f
+ call Function1028e8
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 1025dc
+
+Function1025dc: ; 1025dc
+ call Function1028fc
+ ret nc
+ ld a, [wcd49]
+ set 7, a
+ ld [wcd49], a
+ ret
+; 1025e9
+
+Function1025e9: ; 1025e9
+ nop
+ ld hl, wcd4b
+ set 6, [hl]
+ call Function102b4e
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 1025ff
+
+Function1025ff: ; 1025ff
+ ld hl, wcd4b
+ set 2, [hl]
+ farcall Function1009f3
+ ret c
+ farcall MobileMenuJoypad
+ ld a, [wMenuJoypadFilter]
+ and c
+ ret z
+ bit A_BUTTON_F, c
+ jr nz, .a_button
+ bit D_UP_F, c
+ jr nz, .d_up
+ bit D_DOWN_F, c
+ jr nz, .d_down
+ ret
+
+.a_button
+ ld hl, wcd4b
+ set 3, [hl]
+ ld a, $27 ; Function1028d3
+ ld [wcd49], a
+ ret
+
+.d_up
+ ld a, [wMenuCursorY]
+ ld b, a
+ ld a, [OTPartyCount]
+ cp b
+ ret nz
+ call HideCursor
+ ld a, [PartyCount]
+ ld [wMenuCursorY], a
+ ld a, $1d ; Function102652
+ ld [wcd49], a
+ ret
+
+.d_down
+ ld a, [wMenuCursorY]
+ cp $01
+ ret nz
+ ld a, $23 ; Function1026b7
+ ld [wcd49], a
+ ret
+; 102652
+
+Function102652: ; 102652
+ nop
+ ld hl, wcd4b
+ set 6, [hl]
+ nop
+ call Function102b7b
+ nop
+ ld hl, wcd4b
+ set 1, [hl]
+ nop
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 10266b
+
+Function10266b: ; 10266b
+ ld hl, wcd4b
+ set 2, [hl]
+ farcall Function1009f3
+ ret c
+ farcall MobileMenuJoypad
+ ld a, [wMenuJoypadFilter]
+ and c
+ ret z
+ bit A_BUTTON_F, c
+ jr nz, .a_button
+ bit D_DOWN_F, c
+ jr nz, .d_down
+ bit D_UP_F, c
+ jr nz, .d_up
+ ret
+
+.a_button
+ ld hl, wcd4b
+ set 3, [hl]
+ ld a, $21 ; Function102738
+ ld [wcd49], a
+ ret
+
+.d_down
+ ld a, [wMenuCursorY]
+ dec a
+ ret nz
+ call HideCursor
+ ld a, $1f ; Function1025e9
+ ld [wcd49], a
+ ret
+
+.d_up
+ ld a, [wMenuCursorY]
+ ld b, a
+ ld a, [PartyCount]
+ cp b
+ ret nz
+ ld a, $23 ; Function1026b7
+ ld [wcd49], a
+ ret
+; 1026b7
+
+Function1026b7: ; 1026b7
+ ld hl, wcd4b
+ set 6, [hl]
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ld a, 0
+ ld [wcd4a], a
+
+Function1026c8: ; 1026c8
+ call GetJoypad
+ farcall Function1009f3
+ ret c
+ ld a, [wcd4a]
+ ld hl, Jumptable_1026da
+ rst JumpTable
+ ret
+; 1026da
+
+Jumptable_1026da: ; 1026da
+ dw Function1026de
+ dw Function1026f3
+; 1026de
+
+Function1026de: ; 1026de
+ call HideCursor
+ hlcoord 9, 17
+ ld [hl], $ed
+ ld a, [wcd4a]
+ inc a
+ ld [wcd4a], a
+ ld hl, wcd4b
+ set 1, [hl]
+ ret
+; 1026f3
+
+Function1026f3: ; 1026f3
+ ld a, [hJoyPressed]
+ bit A_BUTTON_F, a
+ jr nz, .asm_102723
+ bit D_UP_F, a
+ jr nz, .asm_102712
+ bit D_DOWN_F, a
+ jr nz, .asm_102702
+ ret
+
+.asm_102702
+ hlcoord 9, 17
+ ld [hl], " "
+ ld a, $01
+ ld [wMenuCursorY], a
+ ld a, $1d ; Function102652
+ ld [wcd49], a
+ ret
+
+.asm_102712
+ hlcoord 9, 17
+ ld [hl], " "
+ ld a, [OTPartyCount]
+ ld [wMenuCursorY], a
+ ld a, $1f ; Function1025e9
+ ld [wcd49], a
+ ret
+
+.asm_102723
+ hlcoord 9, 17
+ ld [hl], "▷"
+ ld hl, wcd4b
+ set 3, [hl]
+ ld hl, wcd4b
+ set 2, [hl]
+ ld a, $5 ; Function1025c7
+ ld [wcd49], a
+ ret
+; 102738
+
+Function102738: ; 102738
+ ld hl, wcd4b
+ set 6, [hl]
+ call PlaceHollowCursor
+ call Function1027eb
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ld a, 0
+ ld [wcd4a], a
+
+Function102754: ; 102754
+ call GetJoypad
+ farcall Function1009f3
+ ret c
+ ld a, [wcd4a]
+ ld hl, Jumptable_102766
+ rst JumpTable
+ ret
+; 102766
+
+Jumptable_102766: ; 102766
+ dw Function102770
+ dw Function102775
+ dw Function10278c
+ dw Function1027a0
+ dw Function1027b7
+; 102770
+
+Function102770: ; 102770
+ ld a, $01
+ ld [wcd4a], a
+
+Function102775: ; 102775
+ hlcoord 1, 16
+ ld [hl], "▶"
+ hlcoord 11, 16
+ ld [hl], " "
+ ld hl, wcd4b
+ set 2, [hl]
+ ld a, [wcd4a]
+ inc a
+ ld [wcd4a], a
+ ret
+; 10278c
+
+Function10278c: ; 10278c
+ ld a, [hJoyPressed]
+ bit A_BUTTON_F, a
+ jr nz, asm_1027c6
+ bit B_BUTTON_F, a
+ jr nz, asm_1027e2
+ bit D_RIGHT_F, a
+ jr nz, .asm_10279b
+ ret
+
+.asm_10279b
+ ld a, $03
+ ld [wcd4a], a
+Function1027a0: ; 1027a0
+ hlcoord 1, 16
+ ld [hl], " "
+ hlcoord 11, 16
+ ld [hl], "▶"
+ ld hl, wcd4b
+ set 2, [hl]
+ ld a, [wcd4a]
+ inc a
+ ld [wcd4a], a
+ ret
+
+Function1027b7: ; 1027b7
+ ld a, [hJoyPressed]
+ bit A_BUTTON_F, a
+ jr nz, asm_1027d1
+ bit B_BUTTON_F, a
+ jr nz, asm_1027e2
+ bit D_LEFT_F, a
+ jr nz, Function102770
+ ret
+
+asm_1027c6:
+ ld hl, wcd4b
+ set 3, [hl]
+ ld a, $25 ; Function1028bf
+ ld [wcd49], a
+ ret
+
+asm_1027d1:
+ ld hl, wcd4b
+ set 3, [hl]
+ ld a, [wMenuCursorY]
+ ld [wcd4c], a
+ ld a, $7 ; Function1024f6
+ ld [wcd49], a
+ ret
+
+asm_1027e2:
+ call Function102db7
+ ld a, $1d ; Function102652
+ ld [wcd49], a
+ ret
+; 1027eb
+
+Function1027eb: ; 1027eb
+ hlcoord 0, 14
+ ld b, 2
+ ld c, 18
+ ld d, h
+ ld e, l
+ farcall _LinkTextbox
+ ld de, .Stats_Trade
+ hlcoord 2, 16
+ call PlaceString
+ ret
+; 102804
+
+.Stats_Trade: ; 102804
+ db "STATS TRADE@"
+; 102814
+
+Function102814: ; 102814
+ ld a, [wMenuCursorY]
+ ld [wcd52], a
+ ld a, [wcd4c]
+ dec a
+ ld [wd002], a
+ ld a, [wcd4d]
+ dec a
+ ld [wd003], a
+ call Function102ea8
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ld a, 0
+ ld [wcd4a], a
+ ld hl, wcd4b
+ set 1, [hl]
+
+Function10283c: ; 10283c
+ ld hl, wcd4b
+ set 2, [hl]
+ call Function1029c3
+ ret z
+ jr c, .asm_102852
+ ld a, $10 ; Function102862
+ ld [wcd49], a
+ ld hl, wcd4b
+ set 1, [hl]
+ ret
+
+.asm_102852
+ ld a, $14 ; Function1028ab
+ ld [wcd49], a
+ ld hl, wcd4b
+ set 3, [hl]
+ ld hl, wcd4b
+ set 1, [hl]
+ ret
+; 102862
+
+Function102862: ; 102862
+ ld a, $08
+ call Function1028e8
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 10286f
+
+Function10286f: ; 10286f
+ call Function1028fc
+ ret nc
+ ld a, [wcd52]
+ ld [wMenuCursorY], a
+ ld a, [wcd51]
+ cp $08
+ jr nz, .asm_102886
+ ld a, $15 ; Function1023b5
+ ld [wcd49], a
+ ret
+
+.asm_102886
+ call Function102ee7
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, $1e
+ ld [wcd4e], a
+ ld a, $3c
+ ld [wcd4f], a
+ ld a, 0
+ ld [wcd4a], a
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ret
+; 1028a5
+
+Function1028a5: ; 1028a5
+ ld a, $4 ; Function1023a1
+ ld [wcd49], a
+ ret
+; 1028ab
+
+Function1028ab: ; 1028ab
+ ld a, [wcd52]
+ ld [wMenuCursorY], a
+ call Function102f15
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, $c ; Function1025b0
+ ld [wcd49], a
+ ret
+; 1028bf
+
+Function1028bf: ; 1028bf
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+
+Function1028c6: ; 1028c6
+ xor a
+ ld [MonType], a
+ call Function102bac
+ ld a, $1d ; Function102652
+ ld [wcd49], a
+ ret
+; 1028d3
+
+Function1028d3: ; 1028d3
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+
+Function1028da: ; 1028da
+ ld a, OTPARTYMON
+ ld [MonType], a
+ call Function102bac
+ ld a, $1f ; Function1025e9
+ ld [wcd49], a
+ ret
+; 1028e8
+
+Function1028e8: ; 1028e8
+ ld hl, wcd4b
+ res 6, [hl]
+ ld [wcd50], a
+ farcall StartMobileInactivityTimer
+ ld a, 0
+ ld [wcd4a], a
+ ret
+; 1028fc
+
+Function1028fc: ; 1028fc
+ call GetJoypad
+ farcall Function1009f3
+ jr nc, .asm_102909
+ and a
+ ret
+
+.asm_102909
+ ld a, [wcd4a]
+ ld hl, Jumptable_102917
+ rst JumpTable
+ ret nc
+ ld a, 0
+ ld [wcd4a], a
+ ret
+; 102917
+
+Jumptable_102917: ; 102917
+ dw Function102933
+ dw Function10294f
+ dw Function10295d
+ dw Function10296e
+ dw Function102996
+; 102921
+
+Function102921: ; 102921
+ ld a, [wcd4a]
+ ld hl, Jumptable_10292f
+ rst JumpTable
+ ret nc
+ ld a, 0
+ ld [wcd4a], a
+ ret
+; 10292f
+
+Jumptable_10292f: ; 10292f
+ dw Function10295d
+ dw Function102984
+; 102933
+
+Function102933: ; 102933
+ ld hl, MenuDataHeader_1029bb
+ call LoadMenuDataHeader
+ call Function102e07
+ ld a, $32
+ ld [TextDelayFrames], a
+ ld hl, wcd4b
+ set 1, [hl]
+ ld a, [wcd4a]
+ inc a
+ ld [wcd4a], a
+ and a
+ ret
+; 10294f
+
+Function10294f: ; 10294f
+ ld a, [TextDelayFrames]
+ and a
+ ret nz
+ ld a, [wcd4a]
+ inc a
+ ld [wcd4a], a
+ and a
+ ret
+; 10295d
+
+Function10295d: ; 10295d
+ call Function10299e
+ ld a, 0
+ ld [wcd27], a
+ ld a, [wcd4a]
+ inc a
+ ld [wcd4a], a
+ and a
+ ret
+; 10296e
+
+Function10296e: ; 10296e
+ farcall Function100382
+ and a
+ ld a, [wcd27]
+ bit 7, a
+ ret z
+ ld a, [wcd4a]
+ inc a
+ ld [wcd4a], a
+ and a
+ ret
+; 102984
+
+Function102984: ; 102984
+ farcall Function100382
+ and a
+ ld a, [wcd27]
+ bit 7, a
+ ret z
+ call Function1029af
+ scf
+ ret
+; 102996
+
+Function102996: ; 102996
+ call Function1029af
+ call ExitMenu
+ scf
+ ret
+; 10299e
+
+Function10299e: ; 10299e
+ ld a, $01
+ ld [wccb4], a
+ ld a, [wcd50]
+ ld [wccb5], a
+ ld a, $aa
+ ld [wcd51], a
+ ret
+; 1029af
+
+Function1029af: ; 1029af
+ ld hl, wcd4b
+ res 7, [hl]
+ ld a, [wcc61]
+ ld [wcd51], a
+ ret
+; 1029bb
+
+MenuDataHeader_1029bb: ; 1029bb
+ db $40 ; flags
+ db 10, 3 ; start coords
+ db 12, 15 ; end coords
+ dw NULL
+ db 1 ; default option
+; 1029c3
+
+Function1029c3: ; 1029c3
+ ld a, [wcd4a]
+ ld hl, Jumptable_1029cb
+ rst JumpTable
+ ret
+; 1029cb
+
+Jumptable_1029cb: ; 1029cb
+ dw Function1029cf
+ dw Function1029fe
+; 1029cf
+
+Function1029cf: ; 1029cf
+ call LoadStandardMenuDataHeader
+ hlcoord 10, 7
+ ld b, 3
+ ld c, 8
+ ld d, h
+ ld e, l
+ farcall _LinkTextbox
+ ld de, String_102a26
+ hlcoord 12, 8
+ call PlaceString
+ ld hl, wcd4b
+ set 1, [hl]
+ ld de, MenuData3_102a33
+ call SetMenuAttributes
+ ld a, [wcd4a]
+ inc a
+ ld [wcd4a], a
+ xor a
+ ret
+; 1029fe
+
+Function1029fe: ; 1029fe
+ farcall Function1009f3
+ ret c
+ farcall MobileMenuJoypad
+ ld a, c
+ ld hl, wMenuJoypadFilter
+ and [hl]
+ ret z
+ push af
+ call ExitMenu
+ pop af
+ ld a, [wMenuCursorY]
+ cp $01
+ jr nz, .asm_102a21
+ ld a, $01
+ and a
+ ret
+
+.asm_102a21
+ ld a, $01
+ and a
+ scf
+ ret
+; 102a26
+
+String_102a26: ; 102a26
+ db "TRADE"
+ next "CANCEL"
+ db "@"
+; 102a33
+
+MenuData3_102a33:
+ db 8, 11
+ db 2, 1
+ db $80, $00
+ dn 2, 0
+ db A_BUTTON
+
+Function102a3b: ; 102a3b
+ ld a, [wcd30]
+ ld [wc74e], a
+ ld hl, PlayerName
+ ld de, wPlayerTrademonSenderName
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ ld a, [wcd4c]
+ dec a
+ ld c, a
+ ld b, 0
+ ld hl, PartySpecies
+ add hl, bc
+ ld a, [hl]
+ ld [wPlayerTrademonSpecies], a
+ ld a, [wcd4c]
+ dec a
+ ld hl, PartyMonOT
+ call SkipNames
+ ld de, wPlayerTrademonOTName
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ ld a, [wcd4c]
+ dec a
+ ld hl, PartyMon1ID
+ call GetPartyLocation
+ ld a, [hli]
+ ld [wPlayerTrademonID], a
+ ld a, [hl]
+ ld [wPlayerTrademonID + 1], a
+ ld a, [wcd4c]
+ dec a
+ ld hl, PartyMon1DVs
+ call GetPartyLocation
+ ld a, [hli]
+ ld [wPlayerTrademonDVs], a
+ ld a, [hl]
+ ld [wPlayerTrademonDVs + 1], a
+ ld a, [wcd4c]
+ dec a
+ ld hl, PartyMon1Species
+ call GetPartyLocation
+ ld b, h
+ ld c, l
+ farcall GetCaughtGender
+ ld a, c
+ ld [wPlayerTrademonCaughtData], a
+ ld hl, OTPlayerName
+ ld de, wOTTrademonSenderName
+ ld bc, NAME_LENGTH
+ call CopyBytes
+
+ ld a, [wcd4d]
+ dec a
+ ld c, a
+ ld b, 0
+ ld hl, OTPartySpecies
+ add hl, bc
+ ld a, [hl]
+ ld [wOTTrademonSpecies], a
+ ld a, [wcd4d]
+ dec a
+ ld hl, OTPartyMonOT
+ call SkipNames
+ ld de, wOTTrademonOTName
+ ld bc, NAME_LENGTH
+ call CopyBytes
+ ld a, [wcd4d]
+ dec a
+ ld hl, OTPartyMon1ID
+ call GetPartyLocation
+ ld a, [hli]
+ ld [wOTTrademonID], a
+ ld a, [hl]
+ ld [wOTTrademonID + 1], a
+ ld a, [wcd4d]
+ dec a
+ ld hl, OTPartyMon1DVs
+ call GetPartyLocation
+ ld a, [hli]
+ ld [wOTTrademonDVs], a
+ ld a, [hl]
+ ld [wOTTrademonDVs + 1], a
+ ld a, [wcd4d]
+ dec a
+ ld hl, OTPartyMon1Species
+ call GetPartyLocation
+ ld b, h
+ ld c, l
+ farcall GetCaughtGender
+ ld a, c
+ ld [wOTTrademonCaughtData], a
+ ret
+; 102b12
+
+Function102b12: ; 102b12
+ ld c, 100
+ call DelayFrames
+ call Function102d9a
+ call LoadFontsBattleExtra
+ ld a, [wcd2f]
+ and a
+ jr nz, .asm_102b2b
+ farcall Function108026
+ jr .asm_102b31
+
+.asm_102b2b
+ farcall Function10802a
+
+.asm_102b31
+ ret
+; 102b32
+
+Function102b32: ; 102b32
+ ld a, [wcd4c]
+ dec a
+ ld [CurPartyMon], a
+ ld a, $01
+ ld [wForceEvolution], a
+ farcall EvolvePokemon
+ call Function102d9a
+ call Function102dd3
+ call Function102dec
+ ret
+; 102b4e
+
+Function102b4e: ; 102b4e
+ ld a, OTPARTYMON
+ ld [MonType], a
+ ld a, [wMenuCursorY]
+ push af
+ ld de, Unknown_102b73
+ call SetMenuAttributes
+ pop af
+ ld [wMenuCursorY], a
+ ld a, [OTPartyCount]
+ ld [w2DMenuNumRows], a
+ ret
+; 102b68
+
+Function102b68: ; 102b68 ; unreferenced
+ xor a
+ ld hl, wWindowStackPointer
+ ld bc, $10
+ call ByteFill
+ ret
+; 102b73
+
+Unknown_102b73:
+ db 9, 6
+ db 255, 1
+ db $a0, $00
+ dn 1, 0
+ db D_UP | D_DOWN | A_BUTTON
+
+Function102b7b: ; 102b7b
+ xor a
+ ld [MonType], a
+ ld a, [wMenuCursorY]
+ push af
+ ld de, Unknown_102b94
+ call SetMenuAttributes
+ pop af
+ ld [wMenuCursorY], a
+ ld a, [PartyCount]
+ ld [w2DMenuNumRows], a
+ ret
+; 102b94
+
+Unknown_102b94:
+ db 1, 6
+ db 255, 1
+ db $a0, $00
+ dn 1, 0
+ db D_UP | D_DOWN | A_BUTTON
+
+Function102b9c: ; 102b9c
+ ld a, [wcd4d]
+ dec a
+ hlcoord 6, 9
+ ld bc, $14
+ call AddNTimes
+ ld [hl], $ec
+ ret
+; 102bac
+
+Function102bac: ; 102bac
+ ld a, [wMenuCursorY]
+ dec a
+ ld [CurPartyMon], a
+ call LowVolume
+ call ClearSprites
+ farcall _MobileStatsScreenInit
+ ld a, [CurPartyMon]
+ inc a
+ ld [wMenuCursorY], a
+ call Function102d9a
+ call ClearPalettes
+ call DelayFrame
+ call MaxVolume
+ call Function102dd3
+ call Function102dec
+ call Function102db7
+ ret
+; 102bdc
+
+Function102bdc: ; 102bdc
+ ld a, [wcd4d]
+ dec a
+ ld hl, OTPartyMon1Species
+ call GetPartyLocation
+ push hl
+ ld a, [wcd4d]
+ ld c, a
+ ld b, 0
+ ld hl, OTPartyCount
+ add hl, bc
+ ld a, [hl]
+ pop hl
+ cp EGG
+ jr z, .asm_102bfa
+ cp [hl]
+ jr nz, .asm_102c05
+
+.asm_102bfa
+ ld bc, MON_LEVEL
+ add hl, bc
+ ld a, [hl]
+ cp MAX_LEVEL + 1
+ jr nc, .asm_102c05
+ and a
+ ret
+
+.asm_102c05
+ scf
+ ret
+; 102c07
+
+Function102c07: ; 102c07
+ call Function102c14
+ call Function102c3b
+ call Function102c21
+ call Function102c2e
+ ret
+; 102c14
+
+Function102c14: ; 102c14
+ ld hl, PartySpecies
+ ld de, OTPartySpecies
+ ld bc, 1
+ call Function102c71
+ ret
+; 102c21
+
+Function102c21: ; 102c21
+ ld hl, PartyMonNicknames
+ ld de, OTPartyMonNicknames
+ ld bc, 11
+ call Function102c71
+ ret
+; 102c2e
+
+Function102c2e: ; 102c2e
+ ld hl, PartyMonOT
+ ld de, OTPartyMonOT
+ ld bc, 11
+ call Function102c71
+ ret
+; 102c3b
+
+Function102c3b: ; 102c3b
+ ld hl, PartyMon1
+ ld de, OTPartyMon1
+ ld bc, $30
+ call Function102c71
+ ret
+; 102c48
+
+Function102c48: ; 102c48
+ farcall Function10165a
+ ld a, 0
+ call GetSRAMBank
+ ld hl, $a600
+ ld de, wc608
+ ld bc, $2f
+ call Function102c71
+ call CloseSRAM
+ ld hl, wc608
+ ld de, w5_da00
+ ld bc, $1e0
+ ld a, $05
+ call FarCopyWRAM
+ ret
+; 102c71
+
+Function102c71: ; 102c71
+ ld a, [wcd4c]
+ dec a
+ call AddNTimes
+ push hl
+ ld h, d
+ ld l, e
+ ld a, [wcd4d]
+ dec a
+ call AddNTimes
+ pop de
+ call SwapBytes
+ ret
+; 102c87
+
+Function102c87: ; 102c87
+ ld a, [wJumptableIndex]
+ push af
+ ld a, [wcf64]
+ push af
+ ld a, [wcd4c]
+ ld [wJumptableIndex], a
+ ld a, [PartyCount]
+ ld [wcf64], a
+ ld a, 0
+ ld hl, $a600
+ ld de, wc608
+ ld bc, $11a
+ call Function102d3e
+ call Function102cee
+ ld a, 0
+ ld hl, wc608
+ ld de, $a600
+ ld bc, $11a
+ call Function102d3e
+ ld a, [wcd4d]
+ ld [wJumptableIndex], a
+ ld a, [OTPartyCount]
+ ld [wcf64], a
+ ld a, $05
+ ld hl, w5_da00
+ ld de, wc608
+ ld bc, $11a
+ call FarCopyWRAM
+ call Function102cee
+ ld a, $05
+ ld hl, wc608
+ ld de, w5_da00
+ ld bc, $11a
+ call FarCopyWRAM
+ pop af
+ ld [wcf64], a
+ pop af
+ ld [wJumptableIndex], a
+ ret
+; 102cee
+
+Function102cee: ; 102cee
+ ld a, [wJumptableIndex]
+ dec a
+ call Function102d34
+ ld de, wd002
+ ld bc, $2f
+ call CopyBytes
+ ld a, [wJumptableIndex]
+ ld c, a
+ ld a, $06
+ sub c
+ ret z
+ ld bc, $2f
+ ld hl, 0
+ call AddNTimes
+ push hl
+ ld a, [wJumptableIndex]
+ dec a
+ call Function102d34
+ ld d, h
+ ld e, l
+ ld hl, $2f
+ add hl, de
+ pop bc
+ call CopyBytes
+ ld a, [wcf64]
+ dec a
+ call Function102d34
+ ld d, h
+ ld e, l
+ ld hl, wd002
+ ld bc, $2f
+ call CopyBytes
+ ret
+; 102d34
+
+Function102d34: ; 102d34
+ ld hl, wc608
+ ld bc, $2f
+ call AddNTimes
+ ret
+; 102d3e
+
+Function102d3e: ; 102d3e
+ call GetSRAMBank
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 102d48
+
+Function102d48: ; 102d48
+ ld a, [wcd4c]
+ ld e, a
+ ld d, 0
+ ld hl, PartyCount
+ add hl, de
+ ld a, [hl]
+ ld [wd265], a
+ cp EGG
+ jr z, .asm_102d6d
+ dec a
+ call SetSeenAndCaughtMon
+ ld a, [wcd4c]
+ dec a
+ ld bc, PARTYMON_STRUCT_LENGTH
+ ld hl, PartyMon1Happiness
+ call AddNTimes
+ ld [hl], BASE_HAPPINESS
+
+.asm_102d6d
+ ld a, [wd265]
+ cp UNOWN
+ jr nz, .asm_102d98
+ ld a, [wcd4c]
+ dec a
+ ld bc, PARTYMON_STRUCT_LENGTH
+ ld hl, PartyMon1DVs
+ call AddNTimes
+ predef GetUnownLetter
+ farcall UpdateUnownDex
+ ld a, [wFirstUnownSeen]
+ and a
+ jr nz, .asm_102d98
+ ld a, [UnownLetter]
+ ld [wFirstUnownSeen], a
+
+.asm_102d98
+ and a
+ ret
+; 102d9a
+
+Function102d9a: ; 102d9a
+ ld a, " "
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call ByteFill
+ ld a, $07
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call ByteFill
+ farcall HDMATransferAttrMapAndTileMapToWRAMBank3
+ ret
+; 102db7
+
+Function102db7: ; 102db7
+ call Function102e4f
+ call Function102e3e
+ ld hl, wcd4b
+ set 1, [hl]
+ ret
+; 102dc3
+
+Function102dc3: ; 102dc3
+ hlcoord 0, 12
+ ld b, 4
+ ld c, 18
+ ld d, h
+ ld e, l
+ farcall _LinkTextbox
+ ret
+; 102dd3
+
+Function102dd3: ; 102dd3
+ call DisableLCD
+ ld de, GFX_1032a2
+ ld hl, VTiles0
+ lb bc, BANK(GFX_1032a2), 4
+ call Get2bpp
+ farcall __LoadTradeScreenBorder
+ call EnableLCD
+ ret
+; 102dec
+
+Function102dec: ; 102dec
+ ld hl, Palettes_1032e2
+ ld de, UnknOBPals
+ ld bc, 4 palettes
+ ld a, $05
+ call FarCopyWRAM
+ farcall Function49742
+ call SetPalettes
+ call DelayFrame
+ ret
+; 102e07
+
+Function102e07: ; 102e07
+ hlcoord 3, 10
+ ld b, 1
+ ld c, 11
+ ld a, [wBattleMode]
+ and a
+ jr z, .link_battle
+ call TextBox
+ jr .okay
+
+.link_battle
+; this is idiotic
+ hlcoord 3, 10
+ ld b, 1
+ ld c, 11
+ ld d, h
+ ld e, l
+ farcall _LinkTextbox
+
+.okay
+ ld de, .waiting
+ hlcoord 4, 11
+ call PlaceString
+ ret
+; 102e32
+
+.waiting ; 102e32
+ db "Waiting...!@"
+; 102e3e
+
+Function102e3e: ; 102e3e
+ ld de, .CANCEL
+ hlcoord 10, 17
+ call PlaceString
+ ret
+; 102e48
+
+.CANCEL: ; 102e48
+ db "CANCEL@"
+; 102e4f
+
+Function102e4f: ; 102e4f
+ farcall Function16d42e
+ farcall _InitMG_Mobile_LinkTradePalMap
+ ld de, PlayerName
+ hlcoord 4, 0
+ call PlaceString
+ ld a, $14
+ ld [bc], a
+ ld de, OTPlayerName
+ hlcoord 4, 8
+ call PlaceString
+ ld a, $14
+ ld [bc], a
+ hlcoord 7, 1
+ ld de, PartySpecies
+ call .PlaceSpeciesNames
+ hlcoord 7, 9
+ ld de, OTPartySpecies
+ call .PlaceSpeciesNames
+ ret
+; 102e86
+
+.PlaceSpeciesNames: ; 102e86
+ ld c, 0
+.count_loop
+ ld a, [de]
+ cp $ff
+ ret z
+ ld [wd265], a
+ push bc
+ push hl
+ push de
+ push hl
+ ld a, c
+ ld [hDividend], a
+ call GetPokemonName
+ pop hl
+ call PlaceString
+ pop de
+ inc de
+ pop hl
+ ld bc, SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ inc c
+ jr .count_loop
+; 102ea8
+
+Function102ea8: ; 102ea8
+ call Function102dc3
+ ld a, [wcd4c]
+ dec a
+ ld c, a
+ ld b, 0
+ ld hl, PartySpecies
+ add hl, bc
+ ld a, [hl]
+ ld [wd265], a
+ call GetPokemonName
+ ld hl, StringBuffer1
+ ld de, StringBuffer2
+ ld bc, 11
+ call CopyBytes
+ ld a, [wcd4d]
+ dec a
+ ld c, a
+ ld b, 0
+ ld hl, OTPartySpecies
+ add hl, bc
+ ld a, [hl]
+ ld [wd265], a
+ call GetPokemonName
+ ld hl, UnknownText_0x102ee2
+ call PrintTextBoxText
+ ret
+; 102ee2
+
+UnknownText_0x102ee2: ; 102ee2
+ text_jump UnknownText_0x1bd286
+ db "@"
+
+Function102ee7: ; 102ee7
+ call Function102dc3
+ ld de, String_102ef4
+ hlcoord 1, 14
+ call PlaceString
+ ret
+; 102ef4
+
+String_102ef4: ; 102ef4
+ db "Too bad! The trade"
+ next "was canceled!"
+ db "@"
+; 102f15
+
+Function102f15: ; 102f15
+ call Function102dc3
+ ld de, .TooBadTheTradeWasCanceled
+ hlcoord 1, 14
+ call PlaceString
+ ret
+; 102f22
+
+.TooBadTheTradeWasCanceled: ; 102f22
+ db "こうかんを キャンセルしました@"
+; 102f32
+
+Function102f32: ; 102f32
+ call Function102dc3
+ ld de, .TradeCompleted
+ hlcoord 1, 14
+ call PlaceString
+ ret
+; 102f3f
+
+.TradeCompleted: ; 102f3f
+ db "Trade completed!@"
+; 102f50
+
+Function102f50: ; 102f50
+ call Function102dc3
+ ld de, .PleaseWait
+ hlcoord 1, 14
+ call PlaceString
+ ret
+; 102f5d
+
+.PleaseWait: ; 102f5d
+ db "しょうしょう おまち ください@"
+; 102f6d
+
+Function102f6d: ; 102f6d
+ call Function102dc3
+ ld de, .Finished
+ hlcoord 1, 14
+ call PlaceString
+ ret
+; 102f7a
+
+.Finished: ; 102f7a
+ db "しゅうりょう します@"
+; 102f85
+
+Function102f85: ; 102f85
+ ld a, [wd003]
+ ld c, a
+ ld b, 0
+ ld hl, OTPartySpecies
+ add hl, bc
+ ld a, [hl]
+ ld [wd265], a
+ call GetPokemonName
+ call Function102dc3
+ ld de, String_102fb2
+ hlcoord 1, 14
+ call PlaceString
+ ld de, StringBuffer1
+ hlcoord 13, 14
+ call PlaceString
+ ld de, String_102fcc
+ call PlaceString
+ ret
+; 102fb2
+
+String_102fb2: ; 102fb2
+ db "あいてがわ<PKMN>えらんだ "
+ next "いじょう<PKMN>あるようです!!"
+ db "@"
+; 102fcc
+
+String_102fcc: ; 102fcc
+ db "に@"
+; 102fce
+
+Function102fce: ; 102fce
+ call Function102dc3
+ ld de, String_102fdb
+ hlcoord 1, 14
+ call PlaceString
+ ret
+; 102fdb
+
+String_102fdb: ; 102fdb
+ db "あいてがわ%せんたくに"
+ next "いじょう<PKMN>あるようです!!"
+ done
+; 102ff5
+
+Function102ff5: ; 102ff5
+ call Function102dc3
+ ld de, String_103002
+ hlcoord 1, 14
+ call PlaceString
+ ret
+; 103002
+
+String_103002: ; 103002
+ db "その#を こうかんすると"
+ next "せんとう できなく なっちゃうよ!"
+ db "@"
+; 103021
+
+Function103021: ; 103021
+ call Function102dc3
+ ld de, String_10302e
+ hlcoord 1, 14
+ call PlaceString
+ ret
+; 10302e
+
+String_10302e: ; 10302e
+ db "あいてが ちゅうしを えらんだので"
+ next "こうかんを ちゅうし します"
+ db "@"
+; 10304f
+
+Function10304f: ; 10304f
+ xor a
+ ld [AttrMapEnd], a
+ ld [wcf42], a
+ ld [wcf44], a
+ ld [wcf45], a
+ ret
+; 10305d
+
+Function10305d: ; 10305d
+ nop
+ ld a, [AttrMapEnd]
+ and a
+ ret z
+ call Function10307f
+ ret c
+ call Function103094
+ call Function10306e
+ ret
+; 10306e
+
+Function10306e: ; 10306e
+ ld a, $01
+ ld [hOAMUpdate], a
+ call ClearSprites
+ ld de, Sprites
+ call Function1030cd
+ xor a
+ ld [hOAMUpdate], a
+ ret
+; 10307f
+
+Function10307f: ; 10307f
+ ld c, $02
+ ld hl, wcd4b
+ bit 7, [hl]
+ jr z, .asm_10308a
+ ld c, $01
+
+.asm_10308a
+ ld hl, wcf45
+ inc [hl]
+ ld a, [hl]
+ cp c
+ ret c
+ xor a
+ ld [hl], a
+ ret
+; 103094
+
+Function103094: ; 103094
+ ld hl, wcd4b
+ bit 7, [hl]
+ jr nz, .asm_1030c0
+ ld a, [wcf42]
+ bit 7, a
+ jr nz, .asm_1030b2
+ ld a, [wcf44]
+ inc a
+ ld [wcf44], a
+ cp $2c
+ ret nz
+ ld hl, wcf42
+ set 7, [hl]
+ ret
+
+.asm_1030b2
+ ld a, [wcf44]
+ dec a
+ ld [wcf44], a
+ ret nz
+ ld hl, wcf42
+ res 7, [hl]
+ ret
+
+.asm_1030c0
+ ld hl, wcf44
+ ld a, [hl]
+ and a
+ jr z, .asm_1030ca
+ dec a
+ ld [hl], a
+ ret nz
+
+.asm_1030ca
+ ld [hl], $2c
+ ret
+; 1030cd
+
+Function1030cd: ; 1030cd
+ ld a, [wcf44]
+ ld l, a
+ ld h, 0
+ add hl, hl
+ add hl, hl
+ add hl, hl
+ ld bc, Unknown_103112
+ add hl, bc
+ ld b, $30
+ ld c, $08
+.asm_1030de
+ push hl
+ ld hl, wcd4b
+ bit 7, [hl]
+ pop hl
+ ld a, 0
+ jr z, .asm_1030eb
+ ld a, $05
+.asm_1030eb
+
+ add [hl]
+ inc hl
+ push hl
+
+ add a
+ add a
+
+ add Unknown_10327a % $100
+ ld l, a
+ ld a, Unknown_10327a / $100
+ adc 0
+ ld h, a
+
+ ld a, b
+ add [hl]
+ inc hl
+ ld [de], a
+ inc de
+ ld a, $0a
+ add [hl]
+ inc hl
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ pop hl
+ ld a, b
+ add $08
+ ld b, a
+ dec c
+ jr nz, .asm_1030de
+ ret
+; 103112
+
+Unknown_103112: ; 103112
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $01, $00, $00, $00, $00, $00, $00, $00
+ db $02, $01, $00, $00, $00, $00, $00, $00
+ db $03, $02, $01, $00, $00, $00, $00, $00
+ db $04, $03, $02, $01, $00, $00, $00, $00
+ db $04, $04, $03, $02, $01, $00, $00, $00
+ db $04, $04, $04, $03, $02, $01, $00, $00
+ db $04, $04, $04, $04, $03, $02, $01, $00
+ db $04, $04, $04, $04, $04, $03, $02, $01
+ db $04, $04, $04, $04, $04, $04, $03, $02
+ db $04, $04, $04, $04, $04, $04, $04, $03
+ db $04, $04, $04, $04, $04, $04, $04, $04
+ db $04, $04, $04, $04, $04, $04, $04, $04
+ db $04, $04, $04, $04, $04, $04, $04, $04
+ db $04, $04, $04, $04, $04, $04, $04, $04
+ db $04, $04, $04, $04, $04, $04, $04, $04
+ db $04, $04, $04, $04, $04, $04, $04, $04
+ db $04, $04, $04, $04, $04, $04, $04, $04
+ db $04, $04, $04, $04, $04, $04, $04, $04
+ db $03, $04, $04, $04, $04, $04, $04, $04
+ db $02, $03, $04, $04, $04, $04, $04, $04
+ db $01, $02, $03, $04, $04, $04, $04, $04
+ db $00, $01, $02, $03, $04, $04, $04, $04
+ db $00, $00, $01, $02, $03, $04, $04, $04
+ db $00, $00, $00, $01, $02, $03, $04, $04
+ db $00, $00, $00, $00, $01, $02, $03, $04
+ db $00, $00, $00, $00, $00, $01, $02, $03
+ db $00, $00, $00, $00, $00, $00, $01, $02
+ db $00, $00, $00, $00, $00, $00, $00, $01
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+ db $00, $00, $00, $00, $00, $00, $00, $00
+; 10327a
+
+Unknown_10327a: ; 10327a
+ db $00, $00, $00, $00
+ db $00, $00, $01, $00
+ db $00, $00, $02, $00
+ db $00, $00, $03, $00
+ db $00, $00, $01, $01
+ db $00, $00, $00, $00
+ db $00, $00, $01, $02
+ db $00, $00, $02, $02
+ db $00, $00, $03, $02
+ db $00, $00, $01, $03
+
+GFX_1032a2:
+INCBIN "gfx/unknown/1032a2.2bpp"
+
+Palettes_1032e2:
+ RGB 0, 0, 0
+ RGB 31, 31, 7
+ RGB 20, 31, 6
+ RGB 13, 20, 16
+
+ RGB 0, 0, 0
+ RGB 7, 11, 17
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+ RGB 0, 0, 0
+ RGB 31, 24, 4
+ RGB 25, 12, 0
+ RGB 31, 7, 4
+
+ RGB 0, 0, 0
+ RGB 25, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+; 103302
+
+Function103302: ; 103302
+ call Function103309
+ call Function103362
+ ret
+; 103309
+
+Function103309: ; 103309
+ xor a
+ ld [hBGMapMode], a
+ ld hl, Buffer1
+ ld bc, 10
+ xor a
+ call ByteFill
+ ld a, $04
+ call GetSRAMBank
+ ld a, [wdc41]
+ ld [$a60c], a
+ ld [Buffer1], a
+ call CloseSRAM
+ call Function1035c6
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld [wd1ef], a
+ ld a, [hli]
+ ld [wd1ec], a
+ ld a, [hli]
+ ld [wd1ed], a
+ ld h, d
+ ld l, e
+ call Function3eea
+ ld hl, wd1ec
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hl]
+ ld [wd1ee], a
+ call Function1034be
+ call UpdateSprites
+ farcall HDMATransferAttrMapAndTileMapToWRAMBank3
+ ld a, $01
+ ld [wd1f0], a
+ call Function10339a
+ ret
+; 103362
+
+Function103362: ; 103362
+.asm_103362
+ ld a, [wd1f0]
+ ld [wd1f1], a
+ call Function1033af
+ call Function10339a
+ call Function10342c
+ farcall HDMATransferTileMapToWRAMBank3
+ ld a, [Buffer2]
+ bit 7, a
+ jr z, .asm_103362
+ ld hl, Buffer2
+ bit 6, [hl]
+ jr z, .asm_103398
+ ld a, $04
+ call GetSRAMBank
+ ld a, [Buffer1]
+ ld [$a60c], a
+ ld [wdc41], a
+ call CloseSRAM
+ xor a
+ ret
+
+.asm_103398
+ scf
+ ret
+; 10339a
+
+Function10339a: ; 10339a
+ ld a, [wd1f0]
+ ld [wd1f2], a
+ ld c, a
+ ld b, 0
+ ld hl, wd1ec
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, bc
+ ld a, [hl]
+ ld [wd1f3], a
+ ret
+; 1033af
+
+Function1033af: ; 1033af
+ call GetJoypad
+ ld a, [hJoyPressed]
+ bit D_LEFT_F, a
+ jr nz, .left
+ bit D_RIGHT_F, a
+ jr nz, .right
+ bit B_BUTTON_F, a
+ jr nz, .b
+ bit A_BUTTON_F, a
+ jr nz, .a
+ bit D_UP_F, a
+ jr nz, .up
+ bit D_DOWN_F, a
+ jr nz, .down
+ ret
+
+.up
+ ld a, [wd1f0]
+ dec a
+ ld [wd1f0], a
+ cp 1
+ ret nc
+ ld a, [wd1ee]
+ ld [wd1f0], a
+ ret
+
+.down
+ ld a, [wd1f0]
+ inc a
+ ld [wd1f0], a
+ ld c, a
+ ld a, [wd1ee]
+ cp c
+ ret nc
+ ld a, 1
+ ld [wd1f0], a
+ ret
+
+.b
+ call PlayClickSFX
+ ld hl, Buffer2
+ set 7, [hl]
+ ret
+
+.a
+ ld a, [wd1f3]
+ cp 3
+ jr nz, .a_return
+ ld de, SFX_TRANSACTION
+ call PlaySFX
+ ld hl, Buffer2
+ set 7, [hl]
+ ld hl, Buffer2
+ set 6, [hl]
+ ret
+
+.left
+.right
+.a_return
+ ld a, [wd1f3]
+ cp 3
+ ret z
+ ld de, SFX_PUSH_BUTTON
+ call PlaySFX
+ ld bc, 8
+ call Function10350f
+ ld a, [Buffer1]
+ xor e
+ ld [Buffer1], a
+ ret
+; 10342c
+
+Function10342c: ; 10342c
+ ld a, [wd1f0]
+ ld [wd1f2], a
+ call Function103490
+ call Function10343c
+ call Function1034a7
+ ret
+; 10343c
+
+Function10343c: ; 10343c
+ ld a, [wd1f3]
+ cp $02
+ jr nz, .asm_103452
+ ld bc, 1
+ call Function1034f7
+ ld c, $12
+ ld b, $01
+ call Function1034e0
+ jr .asm_10345f
+
+.asm_103452
+ ld bc, $ffed
+ call Function1034f7
+ ld c, $12
+ ld b, $02
+ call Function1034e0
+
+.asm_10345f
+ ld bc, 0
+ call Function10350f
+ ld bc, 1
+ call Function103487
+ ld bc, 8
+ call Function10350f
+ ld a, [Buffer1]
+ and e
+ ld bc, 2
+ jr z, .asm_10347d
+ ld bc, 4
+
+.asm_10347d
+ call Function10350f
+ ld bc, 11
+ call Function103487
+ ret
+; 103487
+
+Function103487: ; 103487
+ push de
+ call Function1034f7
+ pop de
+ call PlaceString
+ ret
+; 103490
+
+Function103490: ; 103490
+ hlcoord 0, 15
+ ld c, $14
+ ld b, $03
+ call Function1034e0
+ ld bc, 6
+ call Function10350f
+ hlcoord 1, 16
+ call PlaceString
+ ret
+; 1034a7
+
+Function1034a7: ; 1034a7
+ ld a, [wd1f1]
+ ld [wd1f2], a
+ ld bc, 10
+ call Function1034f7
+ ld [hl], $7f
+ ld bc, 10
+ call Function1034f1
+ ld [hl], $ed
+ ret
+; 1034be
+
+Function1034be: ; 1034be
+ ld a, $01
+ ld [wd1f2], a
+ ld hl, wd1ec
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hli]
+.asm_1034ca
+ push af
+ ld a, [hli]
+ push hl
+ ld [wd1f3], a
+ call Function10343c
+ ld hl, wd1f2
+ inc [hl]
+ pop hl
+ pop af
+ dec a
+ jr nz, .asm_1034ca
+ call Function103490
+ ret
+; 1034e0
+
+Function1034e0: ; 1034e0
+ push bc
+ push hl
+ call ClearBox
+ pop hl
+ ld bc, AttrMap - TileMap
+ add hl, bc
+ pop bc
+ ld a, $06
+ call FillBoxWithByte
+ ret
+; 1034f1
+
+Function1034f1: ; 1034f1
+ ld a, [wd1f0]
+ ld [wd1f2], a
+
+Function1034f7: ; 10134f7
+ hlcoord 0, 0
+ add hl, bc
+ ld a, [wd1ef]
+ ld bc, SCREEN_WIDTH
+ call AddNTimes
+ ld a, [wd1f2]
+ dec a
+ ld bc, 40
+ call AddNTimes
+ ret
+; 10350f
+
+Function10350f: ; 10350f
+ ld a, [wd1f3]
+ push bc
+ ld hl, Unknown_103522
+ ld bc, 9
+ call AddNTimes
+ pop bc
+ add hl, bc
+ ld a, [hli]
+ ld d, [hl]
+ ld e, a
+ ret
+; 103522
+
+Unknown_103522: ; 103522
+ dw String_103546
+ dw String_103598
+ dw String_1035a0
+ dw String_10355f
+ db $01
+ dw String_10354f
+ dw String_1035a8
+ dw String_1035b1
+ dw String_103571
+ db $02
+ dw String_103557
+ dw String_1035ba
+ dw String_1035bd
+ dw String_103585
+ db $04
+ dw String_103545
+ dw String_1035c1
+ dw String_1035c1
+ dw String_103545
+
+String_103545: db "@"
+String_103546: db "せんとう アニメ@"
+String_10354f: db "でんわばんごう@"
+String_103557: db "めいしこうかん@"
+String_10355f: db "でんわを かけるひとが きめられる@"
+String_103571: db "でんわばんごうの にゅうりょくのしかた@"
+String_103585: db "あたらしいめいしが あれば こうかん@"
+String_103598: db "とばして みる@"
+String_1035a0: db "じっくり みる@"
+String_1035a8: db "めいしからえらぶ@"
+String_1035b1: db "すうじで いれる@"
+String_1035ba: db "する@"
+String_1035bd: db "しない@"
+String_1035c1: db "けってい@"
+; 1035c6
+
+Function1035c6: ; 1035c6
+ farcall Function10138b
+ ld b, 0
+ ld hl, Unknown_1035d7
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+; 1035d7
+
+Unknown_1035d7: ; 1035d7
+ dw Unknown_1035e7
+ dw Unknown_1035f3
+ dw Unknown_103608
+ dw Unknown_103608
+ dw Unknown_1035fe
+ dw AskMobileOrCable
+ dw AskMobileOrCable
+ dw AskMobileOrCable
+
+Unknown_1035e7: ; 1035e7
+ dwcoord 0, 6
+ db $12, $07, $07
+ dw .this
+.this
+ db 4, 2, 1, 0, 3
+
+Unknown_1035f3: ; 1035f3
+ dwcoord 0, 7
+ db $12, $06, $09
+ dw .this
+.this
+ db 3, 2, 1, 3
+
+Unknown_1035fe: ; 1035fe
+ dwcoord 0, 9
+ db $12, $04, $0b
+ dw .this
+.this
+ db 2, 0, 3
+
+Unknown_103608: ; 103608
+ dwcoord 0, 9
+ db $12, $04, $0b
+ dw .this
+.this
+ db 2, 2, 3
+; 103612
+
+AskMobileOrCable: ; 103612
+ ld hl, MenuDataHeader_103640
+ call LoadMenuDataHeader
+ ld a, [wMobileOrCable_LastSelection]
+ and $0f
+ jr z, .skip_load
+ ld [wMenuCursorBuffer], a
+
+.skip_load
+ call VerticalMenu
+ call CloseWindow
+ jr c, .pressed_b
+ ld a, [wMenuCursorY]
+ ld [ScriptVar], a
+ ld c, a
+ ld a, [wMobileOrCable_LastSelection]
+ and $f0
+ or c
+ ld [wMobileOrCable_LastSelection], a
+ ret
+
+.pressed_b
+ xor a
+ ld [ScriptVar], a
+ ret
+; 103640
+
+MenuDataHeader_103640: ; 103640
+ db $40 ; flags
+ db 6, 13 ; start coords
+ db 11, 19 ; end coords
+ dw MenuData2_103648
+ db 1 ; default option
+
+MenuData2_103648: ; 103648
+ db $80 ; flags
+ db 2
+ db "モバイル@"
+ db "ケーブル@"
+; 103654
+
+Function103654: ; 103654
+ farcall Mobile_AlwaysReturnNotCarry
+ bit 7, c
+ jr nz, .asm_103666
+ ld hl, wcd2a
+ res 5, [hl]
+ ld c, $02
+ ret
+
+.asm_103666
+ ld hl, wcd2a
+ set 5, [hl]
+ ld c, $01
+ ret
+; 10366e
+
+Mobile_SelectThreeMons: ; 10366e
+ farcall Mobile_AlwaysReturnNotCarry
+ bit 7, c
+ jr z, .asm_10369b
+ ld hl, UnknownText_0x10375d
+ call PrintText
+ call YesNoBox
+ jr c, .asm_103696
+ farcall CheckForMobileBattleRules
+ jr nc, .asm_103690
+ call JoyWaitAorB
+ jr .asm_103696
+
+.asm_103690
+ ld a, $01
+ ld [ScriptVar], a
+ ret
+
+.asm_103696
+ xor a
+ ld [ScriptVar], a
+ ret
+
+.asm_10369b
+ ld hl, wMobileOrCable_LastSelection
+ bit 7, [hl]
+ set 7, [hl]
+ jr nz, .asm_1036b5
+ ld hl, UnknownText_0x103762
+ call PrintText
+ call YesNoBox
+ jr c, .asm_1036b5
+ call Function1036f9
+ call JoyWaitAorB
+
+.asm_1036b5
+ call Function103700
+ jr c, .asm_1036f4
+ ld hl, MenuDataHeader_103747
+ call LoadMenuDataHeader
+ call VerticalMenu
+ call ExitMenu
+ jr c, .asm_1036f4
+ ld a, [wMenuCursorY]
+ cp $01
+ jr z, .asm_1036d9
+ cp $02
+ jr z, .asm_1036f4
+ cp $03
+ jr z, .asm_1036ec
+ jr .asm_1036b5
+
+.asm_1036d9
+ farcall CheckForMobileBattleRules
+ jr nc, .asm_1036e6
+ call JoyWaitAorB
+ jr .asm_1036f4
+
+.asm_1036e6
+ ld a, $01
+ ld [ScriptVar], a
+ ret
+
+.asm_1036ec
+ call Function1036f9
+ call JoyWaitAorB
+ jr .asm_1036b5
+
+.asm_1036f4
+ xor a
+ ld [ScriptVar], a
+ ret
+; 1036f9
+
+Function1036f9: ; 1036f9
+ ld hl, UnknownText_0x103767
+ call PrintText
+ ret
+; 103700
+
+Function103700: ; 103700
+ ld c, $0a
+ ld hl, SwarmFlags
+ bit 4, [hl]
+ jr z, .asm_10370f
+ farcall Function1008a6
+
+.asm_10370f
+ ld a, c
+ ld [StringBuffer2], a
+ ld a, [StringBuffer2]
+ cp $05
+ jr nc, .asm_103724
+ cp $02
+ jr nc, .asm_10372c
+ cp $01
+ jr nc, .asm_103734
+ jr .asm_10373c
+
+.asm_103724
+ ld hl, UnknownText_0x10376c
+ call PrintText
+ and a
+ ret
+
+.asm_10372c
+ ld hl, UnknownText_0x103771
+ call PrintText
+ and a
+ ret
+
+.asm_103734
+ ld hl, UnknownText_0x103776
+ call PrintText
+ and a
+ ret
+
+.asm_10373c
+ ld hl, UnknownText_0x10377b
+ call PrintText
+ call JoyWaitAorB
+ scf
+ ret
+; 103747
+
+MenuDataHeader_103747: ; 103747
+ db $40 ; flags
+ db 5, 13 ; start coords
+ db 11, 19 ; end coords
+ dw MenuData2_10374f
+ db 1 ; default option
+
+MenuData2_10374f: ; 10374f
+ db $c0 ; flags
+ db 3
+ db "はい@"
+ db "やめる@"
+ db "せつめい@"
+; 10375d
+
+UnknownText_0x10375d: ; 0x10375d
+ text_jump UnknownText_0x1c422a
+ db "@"
+; 0x103762
+UnknownText_0x103762: ; 0x103762
+ text_jump UnknownText_0x1c4275
+ db "@"
+; 0x103767
+UnknownText_0x103767: ; 0x103767
+ text_jump UnknownText_0x1c4298
+ db "@"
+; 0x10376c
+UnknownText_0x10376c: ; 0x10376c
+ text_jump UnknownText_0x1c439c
+ db "@"
+; 0x103771
+UnknownText_0x103771: ; 0x103771
+ text_jump UnknownText_0x1c43dc
+ db "@"
+; 0x103776
+UnknownText_0x103776: ; 0x103776
+ text_jump UnknownText_0x1c4419
+ db "@"
+; 0x10377b
+UnknownText_0x10377b: ; 0x10377b
+ text_jump UnknownText_0x1c445a
+ db "@"
+; 0x103780
+
+Function103780: ; 103780
+ ld a, [wd265]
+ push af
+ call Function10378c
+ pop af
+ ld [wd265], a
+ ret
+; 10378c
+
+Function10378c: ; 10378c
+ ld c, 0
+ ld hl, SwarmFlags
+ bit 4, [hl]
+ jr nz, .already_set
+ ld c, $01
+ ld hl, SwarmFlags
+ set 4, [hl]
+
+.already_set
+ push bc
+ farcall Link_SaveGame
+ pop bc
+ jr c, .failed_to_save
+ ld a, $01
+ ld [ScriptVar], a
+ ld a, c
+ and a
+ ret z
+ farcall Function1006fd
+ ret
+
+.failed_to_save
+ xor a
+ ld [ScriptVar], a
+ ld a, c
+ and a
+ ret z
+ ld hl, SwarmFlags
+ res 4, [hl]
+ ret
+; 1037c2
+
+Function1037c2: ; 1037c2
+ call Function103823
+ jr c, .nope
+ ld a, [wdc5f]
+ and a
+ jr z, .nope
+ ld hl, UnknownText_0x1037e6
+ call PrintText
+ call YesNoBox
+ jr c, .nope
+ ld a, $01
+ ld [ScriptVar], a
+ ret
+
+.nope
+ xor a
+ ld [wdc5f], a
+ ld [ScriptVar], a
+ ret
+; 1037e6
+
+UnknownText_0x1037e6: ; 0x1037e6
+ text_jump UnknownText_0x1c449c
+ db "@"
+; 0x1037eb
+
+Function1037eb: ; 1037eb
+ call Function103823
+ jr nc, .asm_103807
+ ld hl, UnknownText_0x103819
+ call PrintText
+ call JoyWaitAorB
+ ld hl, UnknownText_0x10381e
+ call PrintText
+ call JoyWaitAorB
+ xor a
+ ld [ScriptVar], a
+ ret
+
+.asm_103807
+ ld a, [wdc60]
+ and a
+ jr nz, .asm_103813
+ ld a, $01
+ ld [ScriptVar], a
+ ret
+
+.asm_103813
+ ld a, $02
+ ld [ScriptVar], a
+ ret
+; 103819
+
+UnknownText_0x103819: ; 0x103819
+ text_jump UnknownText_0x1c44c0
+ db "@"
+; 0x10381e
+
+UnknownText_0x10381e: ; 0x10381e
+ text_jump UnknownText_0x1c44e7
+ db "@"
+; 0x103823
+
+Function103823: ; 103823
+ farcall Mobile_AlwaysReturnNotCarry
+ bit 7, c
+ jr nz, .asm_103838
+ farcall Function1008a6
+ ld a, c
+ cp $01
+ jr c, .asm_10383a
+
+.asm_103838
+ xor a
+ ret
+
+.asm_10383a
+ scf
+ ret
+; 10383c
+
+Function10383c: ; 10383c
+ ld a, $01
+ ld [wdc60], a
+ xor a
+ ld hl, wPlayerMonSelection
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+ ld hl, UnknownText_0x103876
+ call PrintText
+ call JoyWaitAorB
+ farcall Script_reloadmappart
+ farcall Function4a94e
+ jr c, .asm_103870
+ ld hl, wd002
+ ld de, wPlayerMonSelection
+ ld bc, 3
+ call CopyBytes
+ xor a
+ ld [ScriptVar], a
+ ret
+
+.asm_103870
+ ld a, $01
+ ld [ScriptVar], a
+ ret
+; 103876
+
+UnknownText_0x103876: ; 0x103876
+ text_jump UnknownText_0x1c4508
+ db "@"
+; 0x10387b
+
+Function10387b: ; 10387b
+ farcall Mobile_AlwaysReturnNotCarry
+ bit 7, c
+ ret nz
+ farcall Function1008a6
+ ld a, c
+ ld [StringBuffer2], a
+ ld hl, UnknownText_0x103898
+ call PrintText
+ call JoyWaitAorB
+ ret
+; 103898
+
+UnknownText_0x103898: ; 0x103898
+ text_jump UnknownText_0x1c4525
+ db "@"
+; 0x10389d
diff --git a/mobile/mobile_41.asm b/mobile/mobile_41.asm
new file mode 100755
index 000000000..7e1d20db6
--- /dev/null
+++ b/mobile/mobile_41.asm
@@ -0,0 +1,1113 @@
+; These functions deal with miscellaneous statistics
+; which were used for Trainer Rankings in Pokémon News.
+
+; Copies certain values at the time the player enters the Hall of Fame.
+TrainerRankings_HallOfFame2:: mobile ; 0x105ef6
+ ld a, BANK(sTrainerRankingGameTimeHOF)
+ call GetSRAMBank
+
+ ld hl, GameTimeHours
+ ld de, sTrainerRankingGameTimeHOF
+ ld bc, 4
+ call CopyBytes
+
+ ld hl, sTrainerRankingStepCount
+ ld de, sTrainerRankingStepCountHOF
+ ld bc, 4
+ call CopyBytes
+
+ ; sTrainerRankingHealings is only a 3-byte value.
+ ; One extraneous byte is copied from sTrainerRankingMysteryGift.
+ ld hl, sTrainerRankingHealings
+ ld de, sTrainerRankingHealingsHOF
+ ld bc, 4
+ call CopyBytes
+
+ ld hl, sTrainerRankingBattles
+ ld de, sTrainerRankingBattlesHOF
+ ld bc, 3
+ call CopyBytes
+
+ call UpdateTrainerRankingsChecksum
+ call CloseSRAM
+ ret
+; 105f33
+
+TrainerRankings_MagikarpLength: mobile ; 105f33
+ ld a, BANK(sTrainerRankingLongestMagikarp)
+ call GetSRAMBank
+ ld de, Buffer1
+ ld hl, sTrainerRankingLongestMagikarp
+
+ ; Is this Magikarp the longest measured?
+ ld a, [de]
+ cp [hl]
+ jr z, .isLowByteHigher
+ jr nc, .newRecordLongest
+ jr .checkShortest
+
+.isLowByteHigher
+ inc hl
+ inc de
+ ld a, [de]
+ cp [hl]
+ dec hl
+ dec de
+ jr c, .checkShortest
+
+.newRecordLongest
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ dec de
+ ld [hl], a
+
+.checkShortest
+ ; First, check if the record for shortest Magikarp is 0.
+ ; This seems unnecessary, because the value is initialized to 100.0 cm.
+ ld hl, sTrainerRankingShortestMagikarp
+ ld a, [hli]
+ or [hl]
+ dec hl
+ jr z, .newRecordShortest
+
+ ; Now check if this Magikarp is the shortest
+ ld a, [de]
+ cp [hl]
+ jr z, .isLowByteLower
+ jr c, .newRecordShortest
+ jr .done
+
+.isLowByteLower
+ inc hl
+ inc de
+ ld a, [de]
+ cp [hl]
+ jr nc, .done
+ dec hl
+ dec de
+
+.newRecordShortest
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, [de]
+ ld [hl], a
+
+.done
+ call UpdateTrainerRankingsChecksum
+ call CloseSRAM
+ ret
+; 105f79
+
+TrainerRankings_BugContestScore: mobile ; 105f79
+ ld a, BANK(sTrainerRankingBugContestScore)
+ call GetSRAMBank
+ ld a, [hProduct]
+ ld hl, sTrainerRankingBugContestScore
+ cp [hl]
+ jr z, .isLowByteHigher
+ jr nc, .newHighScore
+ jr .done
+
+.isLowByteHigher
+ inc hl
+ ld a, [hMultiplicand]
+ cp [hl]
+ jr c, .done
+ dec hl
+
+.newHighScore
+ ld a, [hProduct]
+ ld [hli], a
+ ld a, [hMultiplicand]
+ ld [hl], a
+
+.done
+ call UpdateTrainerRankingsChecksum
+ call CloseSRAM
+ ret
+; 105f9f
+
+TrainerRankings_AddToSlotsWinStreak: mobile ; 105f9f
+ ld a, BANK(sTrainerRankingCurrentSlotsStreak)
+ call GetSRAMBank
+
+ ; Increment the current streak
+ ld hl, sTrainerRankingCurrentSlotsStreak + 1
+ inc [hl]
+ jr nz, .noCarry
+ dec hl
+ inc [hl]
+ inc hl
+
+.noCarry
+ dec hl
+ ; Now check if this is a new record for longest streak
+ ld a, [sTrainerRankingLongestSlotsStreak]
+ cp [hl]
+ jr z, .isLowByteHigher
+ jr c, .newRecordStreak
+ jr .done
+
+.isLowByteHigher
+ inc hl
+ ld a, [sTrainerRankingLongestSlotsStreak + 1]
+ cp [hl]
+ jr nc, .done
+ dec hl
+
+.newRecordStreak
+ ld a, [hli]
+ ld [sTrainerRankingLongestSlotsStreak], a
+ ld a, [hl]
+ ld [sTrainerRankingLongestSlotsStreak + 1], a
+
+.done
+ call UpdateTrainerRankingsChecksum
+ call CloseSRAM
+ ret
+; 105fd0
+
+TrainerRankings_EndSlotsWinStreak: mobile ; 105fd0
+ ld a, BANK(sTrainerRankingCurrentSlotsStreak)
+ call GetSRAMBank
+ ld hl, sTrainerRankingCurrentSlotsStreak
+ xor a
+ ld [hli], a
+ ld [hl], a
+ call UpdateTrainerRankingsChecksum
+ call CloseSRAM
+ ret
+; 105fe3
+
+TrainerRankings_AddToSlotsPayouts: mobile ; 105fe3
+ ld a, BANK(sTrainerRankingTotalSlotsPayouts)
+ call GetSRAMBank
+ ld hl, sTrainerRankingTotalSlotsPayouts + 3
+ ld a, e
+ add [hl]
+ ld [hld], a
+ ld a, d
+ adc [hl]
+ ld [hld], a
+ jr nc, .done
+ inc [hl]
+ jr nz, .done
+ dec hl
+ inc [hl]
+ jr nz, .done
+ ld a, $ff
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+
+.done
+ call UpdateTrainerRankingsChecksum
+ call CloseSRAM
+ ret
+; 106008
+
+TrainerRankings_AddToBattlePayouts: mobile ; 106008
+ ld a, BANK(sTrainerRankingTotalBattlePayouts)
+ call GetSRAMBank
+ ld hl, sTrainerRankingTotalBattlePayouts + 3
+ ld a, [bc]
+ dec bc
+ add [hl]
+ ld [hld], a
+ ld a, [bc]
+ dec bc
+ adc [hl]
+ ld [hld], a
+ ld a, [bc]
+ adc [hl]
+ ld [hld], a
+ jr nc, .done
+ inc [hl]
+ jr nz, .done
+ ld a, $ff
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ld [hl], a
+
+.done
+ call UpdateTrainerRankingsChecksum
+ call CloseSRAM
+ ret
+; 10602e
+
+TrainerRankings_StepCount: mobile ; 10602e (41:602e)
+ ld hl, sTrainerRankingStepCount
+ jp TrainerRankings_Increment4Byte
+
+; Unreferenced in English version.
+TrainerRankings_BattleTowerWins: mobile ; 106035
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$aa8d]
+ and a
+ call CloseSRAM
+ ret nz
+ ld hl, sTrainerRankingBattleTowerWins
+ jp TrainerRankings_Increment2Byte
+
+TrainerRankings_TMsHMsTaught: mobile ; 106049
+ ld hl, sTrainerRankingTMsHMsTaught
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_Battles: mobile ; 106050
+ ld a, [BattleType]
+ cp BATTLETYPE_TUTORIAL ; Exclude the Dude’s tutorial battle
+ ret z
+ ld hl, sTrainerRankingBattles
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_WildBattles: mobile ; 10605d
+ ld a, [BattleType]
+ cp BATTLETYPE_TUTORIAL ; Exclude the Dude’s tutorial battle
+ ret z
+ ld hl, sTrainerRankingWildBattles
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_TrainerBattles: mobile ; 10606a
+ ld hl, sTrainerRankingTrainerBattles
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_Unused1: mobile ; 106071
+ ld hl, sTrainerRankingUnused1
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_HallOfFame:: mobile ; 0x106078
+ ld hl, sTrainerRankingHOFEntries
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_WildMonsCaught: mobile ; 10607f (41:607f)
+ ld hl, sTrainerRankingWildMonsCaught
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_HookedEncounters: mobile ; 106086
+ ld hl, sTrainerRankingHookedEncounters
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_EggsHatched: mobile ; 10608d (41:608d)
+ ld hl, sTrainerRankingEggsHatched
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_MonsEvolved: mobile ; 106094
+ ld hl, sTrainerRankingMonsEvolved
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_FruitPicked: mobile ; 10609b
+ ld hl, sTrainerRankingFruitPicked
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_Healings: mobile ; 1060a2
+ ld hl, sTrainerRankingHealings
+ jp TrainerRankings_Increment3Byte
+
+TrainerRankings_MysteryGift: mobile ; 1060a9 (41:60a9)
+ ld hl, sTrainerRankingMysteryGift
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_Trades: mobile ; 1060af
+ ld hl, sTrainerRankingTrades
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_Fly: mobile ; 1060b5
+ ld hl, sTrainerRankingFly
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_Surf: mobile ; 1060bb
+ ld hl, sTrainerRankingSurf
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_Waterfall: mobile ; 1060c1
+ ld hl, sTrainerRankingWaterfall
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_WhiteOuts: mobile ; 1060c7
+ ld hl, sTrainerRankingWhiteOuts
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_LuckyNumberShow: mobile ; 1060cd
+ ld hl, sTrainerRankingLuckyNumberShow
+ jr TrainerRankings_Increment2Byte
+
+TrainerRankings_PhoneCalls: mobile ; 1060d3
+ ld hl, sTrainerRankingPhoneCalls
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_Unused2: mobile ; 1060df
+ ld hl, sTrainerRankingUnused2
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_LinkBattles: mobile ; 1060df
+ ld hl, sTrainerRankingLinkBattles
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_Splash: mobile ; 1060e5
+ ; Only counts if it’s the player’s turn
+ ld a, [hBattleTurn]
+ and a
+ ret nz
+ ld hl, sTrainerRankingSplash
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_TreeEncounters: mobile ; 1060ef
+ ld hl, sTrainerRankingTreeEncounters
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_Unused3: mobile ; 1060f5
+ ld hl, sTrainerRankingUnused3
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_ColosseumWins: mobile ; win
+ ld hl, sTrainerRankingColosseumWins
+ jr TrainerRankings_Increment3Byte
+
+TrainerRankings_ColosseumLosses: mobile ; lose
+ ld hl, sTrainerRankingColosseumLosses
+ jr TrainerRankings_Increment3Byte
+; 106107
+
+TrainerRankings_ColosseumDraws: mobile ; draw
+ ld hl, sTrainerRankingColosseumDraws
+ jr TrainerRankings_Increment3Byte
+; 10610d
+
+; Counts uses of both Selfdestruct and Explosion.
+TrainerRankings_Selfdestruct: mobile ; 10610d
+ ; Only counts if it’s the player’s turn
+ ld a, [hBattleTurn]
+ and a
+ ret nz
+ ld hl, sTrainerRankingSelfdestruct
+ jr TrainerRankings_Increment3Byte
+; 106117
+
+TrainerRankings_Increment4Byte: ; 106117
+ push bc
+ ld bc, 3
+ jr TrainerRankings_Increment
+; 10611d
+
+TrainerRankings_Increment3Byte: ; 10611d
+ push bc
+ ld bc, 2
+ jr TrainerRankings_Increment
+; 106123
+
+TrainerRankings_Increment2Byte: ; 106123
+ push bc
+ ld bc, 1
+ jr TrainerRankings_Increment
+; 106129
+
+; unused
+TrainerRankings_Increment1Byte: ; 106129
+ push bc
+ ld bc, 0
+
+; Increments a big-endian value of bc + 1 bytes at hl
+TrainerRankings_Increment: ; 10612d
+ ld a, BANK(sTrainerRankings)
+ call GetSRAMBank
+ push hl
+ push de
+ ld e, c
+ inc e
+.asm_106136
+ ld a, [hli]
+ inc a
+ jr nz, .asm_10613d
+ dec e
+ jr nz, .asm_106136
+
+.asm_10613d
+ pop de
+ pop hl
+ jr z, .asm_10614d
+ add hl, bc
+.asm_106142
+ inc [hl]
+ jr nz, .asm_10614d
+ ld a, c
+ and a
+ jr z, .asm_10614d
+ dec hl
+ dec c
+ jr .asm_106142
+
+.asm_10614d
+ call UpdateTrainerRankingsChecksum
+ call CloseSRAM
+ pop bc
+ ret
+; 106155
+
+; Used when SRAM bank 5 isn’t already loaded — what’s the point of this?
+UpdateTrainerRankingsChecksum2: mobile ; 106155
+ ld a, BANK(sTrainerRankings)
+ call GetSRAMBank
+ call UpdateTrainerRankingsChecksum
+ call CloseSRAM
+ ret
+; 106162
+
+UpdateTrainerRankingsChecksum: ; 106162
+ push de
+ call CalculateTrainerRankingsChecksum
+ ld hl, sTrainerRankingsChecksum
+ ld [hl], d
+ inc hl
+ ld [hl], e
+ pop de
+ ret
+; 10616e
+
+CalculateTrainerRankingsChecksum: ; 10616e
+ push bc
+ ld hl, sTrainerRankings
+ ld bc, sTrainerRankingsChecksum - sTrainerRankings
+ xor a
+ ld de, 0
+.asm_106179
+ ld a, e
+ add [hl]
+ ld e, a
+ jr nc, .asm_10617f
+ inc d
+
+.asm_10617f
+ inc hl
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_106179
+ pop bc
+ ret
+; 106187
+
+
+BackupMobileEventIndex: ; 106187
+ ld a, BANK(sMobileEventIndex)
+ call GetSRAMBank
+ ld a, [sMobileEventIndex]
+ push af
+ ld a, BANK(sMobileEventIndexBackup)
+ call GetSRAMBank
+ pop af
+ ld [sMobileEventIndexBackup], a
+ call CloseSRAM
+ ret
+; 10619d
+
+
+RestoreMobileEventIndex: ; 10619d (41:619d)
+ ld a, BANK(sMobileEventIndexBackup)
+ call GetSRAMBank
+ ld a, [sMobileEventIndexBackup]
+ push af
+ ld a, BANK(sMobileEventIndex)
+ call GetSRAMBank
+ pop af
+ ld [sMobileEventIndex], a
+ call CloseSRAM
+ ret
+; 1061b3 (41:61b3)
+
+; Unreferenced in English version.
+VerifyTrainerRankingsChecksum: ; 1061b3
+ call CalculateTrainerRankingsChecksum
+ ld hl, sTrainerRankingsChecksum
+ ld a, d
+ cp [hl]
+ ret nz
+ inc hl
+ ld a, e
+ cp [hl]
+ ret
+; 1061c0
+
+DeleteMobileEventIndex: ; 1061c0 (41:61c0)
+ ld a, BANK(sMobileEventIndex)
+ call GetSRAMBank
+ xor a
+ ld [sMobileEventIndex], a
+ call CloseSRAM
+ ret
+; 1061cd (41:61cd)
+
+; Used in the Japanese version to initialize Trainer Rankings data
+; for a new save file. Unreferenced in the English version.
+InitializeTrainerRankings:
+ ld hl, sTrainerRankings
+ ld bc, sTrainerRankingsEnd - sTrainerRankings
+ xor a
+ call ByteFill
+
+ ; Initialize the shortest Magikarp to 100.0 cm
+ ld hl, sTrainerRankingShortestMagikarp
+ ld a, $3
+ ld [hli], a
+ ld [hl], $e8
+
+ call UpdateTrainerRankingsChecksum
+ ld hl, sTrainerRankings
+ ld de, sTrainerRankingsBackup
+ ld bc, sTrainerRankingsEnd - sTrainerRankings
+ call CopyBytes
+ ret
+; 1061ef
+
+
+_MobilePrintNum:: ; 1061ef
+; Supports signed 31-bit integers (up to 10 digits)
+; b: Bits 0-4 = # bytes
+; Bit 7 = set if negative
+; c: Number of digits
+; de: highest byte of number to convert
+; hl: where to print the converted string
+ push bc
+ xor a
+ ld [hPrintNum1], a
+ ld [hPrintNum2], a
+ ld [hPrintNum3], a
+ ld a, b
+ and $f
+ cp $1
+ jr z, .one_byte
+ cp $2
+ jr z, .two_bytes
+ cp $3
+ jr z, .three_bytes
+; four bytes
+ ld a, [de]
+ ld [hPrintNum1], a
+ inc de
+
+.three_bytes
+ ld a, [de]
+ ld [hPrintNum2], a
+ inc de
+
+.two_bytes
+ ld a, [de]
+ ld [hPrintNum3], a
+ inc de
+
+.one_byte
+ ld a, [de]
+ ld [hPrintNum4], a
+ inc de
+
+ push de
+ xor a
+ ld [hPrintNum9], a
+ ld a, b
+ ld [hPrintNum10], a
+ ld a, c
+ cp 2
+ jr z, .two_digits
+ ld de, ._2
+ cp 3
+ jr z, .three_to_nine_digits
+ ld de, ._3
+ cp 4
+ jr z, .three_to_nine_digits
+ ld de, ._4
+ cp 5
+ jr z, .three_to_nine_digits
+ ld de, ._5
+ cp 6
+ jr z, .three_to_nine_digits
+ ld de, ._6
+ cp 7
+ jr z, .three_to_nine_digits
+ ld de, ._7
+ cp 8
+ jr z, .three_to_nine_digits
+ ld de, ._8
+ cp 9
+ jr z, .three_to_nine_digits
+ ld de, ._9
+
+.three_to_nine_digits
+ inc de
+ inc de
+ inc de
+ dec a
+ dec a
+
+.digit_loop
+ push af
+ call .Function1062b2
+ call .Function1062ff
+rept 4
+ inc de
+endr
+ pop af
+ dec a
+ jr nz, .digit_loop
+
+.two_digits
+ ld c, 0
+ ld a, [hPrintNum4]
+.mod_ten_loop
+ cp 10
+ jr c, .simple_divide_done
+ sub 10
+ inc c
+ jr .mod_ten_loop
+
+.simple_divide_done
+ ld b, a
+ ld a, [hPrintNum9]
+ or c
+ ld [hPrintNum9], a
+ jr nz, .create_digit
+ call .LoadMinusTenIfNegative
+ jr .done
+
+.create_digit
+ ld a, "0"
+ add c
+ ld [hl], a
+
+.done
+ call .Function1062ff
+ ld a, "0"
+ add b
+ ld [hli], a
+ pop de
+ pop bc
+ ret
+; 106292
+
+._9 dd 1000000000
+._8 dd 100000000
+._7 dd 10000000
+._6 dd 1000000
+._5 dd 100000
+._4 dd 10000
+._3 dd 1000
+._2 dd 100
+; 1062b2
+
+.Function1062b2: ; 1062b2
+ ld c, $0
+.asm_1062b4
+ ld a, [de]
+ dec de
+ ld b, a
+ ld a, [hPrintNum4]
+ sub b
+ ld [hPrintNum8], a
+ ld a, [de]
+ dec de
+ ld b, a
+ ld a, [hPrintNum3]
+ sbc b
+ ld [hPrintNum7], a
+ ld a, [de]
+ dec de
+ ld b, a
+ ld a, [hPrintNum2]
+ sbc b
+ ld [hPrintNum6], a
+ ld a, [de]
+ inc de
+ inc de
+ inc de
+ ld b, a
+ ld a, [hPrintNum1]
+ sbc b
+ ld [hPrintNum5], a
+ jr c, .asm_1062eb
+ ld a, [hPrintNum5]
+ ld [hPrintNum1], a
+ ld a, [hPrintNum6]
+ ld [hPrintNum2], a
+ ld a, [hPrintNum7]
+ ld [hPrintNum3], a
+ ld a, [hPrintNum8]
+ ld [hPrintNum4], a
+ inc c
+ jr .asm_1062b4
+
+.asm_1062eb
+ ld a, [hPrintNum9]
+ or c
+ jr z, .LoadMinusTenIfNegative
+ ld a, -10
+ add c
+ ld [hl], a
+ ld [hPrintNum9], a
+ ret
+
+.LoadMinusTenIfNegative:
+ ld a, [hPrintNum10]
+ bit 7, a
+ ret z
+
+ ld [hl], -10
+ ret
+; 1062ff
+
+.Function1062ff: ; 1062ff
+ ld a, [hPrintNum10]
+ bit 7, a
+ jr nz, .asm_10630d
+ bit 6, a
+ jr z, .asm_10630d
+ ld a, [hPrintNum9]
+ and a
+ ret z
+
+.asm_10630d
+ inc hl
+ ret
+; 10630f
+
+; functions related to the cable club and various NPC scripts referencing mobile communications
+
+Mobile_DummyReturnFalse: ; 10630f
+ xor a
+ ld [ScriptVar], a
+ ret
+; 106314
+
+MobileFn_106314: mobile ; 106314
+ ld a, $4
+ call GetSRAMBank
+ ld a, c
+ cpl
+ ld [$b000], a
+ call CloseSRAM
+ ld a, $7
+ call GetSRAMBank
+ ld a, c
+ ld [$a800], a
+ call CloseSRAM
+ ret
+; 10632f
+
+Mobile_AlwaysReturnNotCarry: ; 10632f
+ or a
+ ret
+
+Function106331: ; 106331 - called by Mobile_DummyReturnFalse in Crystal-J
+ ; check ~[4:b000] == [7:a800]
+ ld a, $4
+ call GetSRAMBank
+ ld a, [$b000]
+ cpl
+ ld b, a
+ call CloseSRAM
+ ld a, $7
+ call GetSRAMBank
+ ld a, [$a800]
+ ld c, a
+ call CloseSRAM
+ ld a, c
+ cp b
+ jr nz, .nope
+
+ ; check [7:a800] != 0
+ and a
+ jr z, .nope
+
+ ; check !([7:a800] & %01110000)
+ and %10001111
+ cp c
+ jr nz, .nope
+
+ ld c, a
+ scf
+ ret
+
+.nope
+ xor a
+ ld c, a
+ ret
+; 10635c
+
+Function10635c: ; 10635c
+ ld a, [wMobileCommsJumptableIndex]
+ bit 7, a
+ ret nz
+ ld a, [wMobileCommsJumptableIndex]
+ ld hl, .Jumptable
+ rst JumpTable
+ ret
+; 10636a
+
+.Jumptable: ; 10636a
+ dw .init
+ dw Function106392
+ dw Function1063cc
+ dw Function1063d8
+ dw Function1063e5
+ dw Function1063f3
+ dw Function106403
+ dw Function106442
+ dw Function106453
+; 10637c
+
+.init: ; 10637c
+ ld de, wcd30
+ ld hl, $41
+ ld bc, $41
+ ld a, $40
+ call Function3e32
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 106392
+
+Function106392: ; 106392
+ xor a
+ ld [wcf64], a
+ ld a, [wc821]
+ bit 1, a
+ jr nz, .asm_1063a2
+ bit 0, a
+ jr z, .asm_1063bf
+ ret
+
+.asm_1063a2
+ call Mobile_AlwaysReturnNotCarry
+ ld a, c
+ and a
+ jr nz, .asm_1063b4
+ ld a, $b
+ ld [wcf64], a
+ ld a, $7
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_1063b4
+ ld a, $7
+ ld [wcf64], a
+ ld a, $7
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_1063bf
+ ld a, $1
+ ld [wcf64], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1063cc
+
+Function1063cc: ; 1063cc
+ ld a, $78
+ ld [wcd42], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+
+Function1063d8: ; 1063d8
+ ld hl, wcd42
+ dec [hl]
+ ret nz
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1063e5
+
+Function1063e5: ; 1063e5
+ ld a, [wcf64]
+ cp $3
+ ret nz
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 1063f3
+
+Function1063f3: ; 1063f3
+ ld de, wcd31
+ ld a, $32
+ call Function3e32
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 106403
+
+Function106403: ; 106403
+ ld a, [wc821]
+ bit 1, a
+ jr nz, .asm_106426
+ bit 0, a
+ jr z, .asm_10640f
+ ret
+
+.asm_10640f
+ ld a, [wcd31]
+ and $80
+ ld c, a
+ ld a, [wcd30]
+ or c
+ inc a
+ ld c, a
+ call MobileFn_106314
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_106426
+ call Mobile_AlwaysReturnNotCarry
+ ld a, c
+ and a
+ jr z, .asm_106435
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+
+.asm_106435
+ ld c, $0
+ call MobileFn_106314
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+ ret
+; 106442
+
+Function106442: ; 106442
+ ld a, $36
+ call Function3e32
+ xor a
+ ld [hMobile], a
+ ld [hMobileReceive], a
+ ld a, [wMobileCommsJumptableIndex]
+ inc a
+ ld [wMobileCommsJumptableIndex], a
+
+Function106453: ; 106453
+ ld a, [wMobileCommsJumptableIndex]
+ set 7, a
+ ld [wMobileCommsJumptableIndex], a
+ nop
+ ld a, $4
+ ld [wcf64], a
+ ret
+; 106462
+
+MobileFunc_106462: mobile
+ ret
+; 106464
+
+Function106464:: ; 106464
+ ld de, MobilePhoneTilesGFX
+ ld hl, VTiles2 tile $60
+ lb bc, BANK(MobilePhoneTilesGFX), 1
+ call Get2bpp
+ ld de, FontsExtra2_UpArrowGFX
+ ld hl, VTiles2 tile $61
+ lb bc, BANK(FontsExtra2_UpArrowGFX), 1
+ call Get2bpp
+ ld de, GFX_106514
+ ld hl, VTiles2 tile $62
+ ld c, 9
+ ld b, BANK(GFX_106514)
+ call Get2bpp
+ ld de, $40b0
+ ld hl, VTiles2 tile $6b
+ ld b, $f ; XXX no graphics at 0f:40b0
+ call Get2bpp
+ farcall LoadFrame
+ ret
+; 10649b
+
+Function10649b: ; 10649b
+ ld a, [TextBoxFrame]
+ and $7
+ ld bc, 3 tiles
+ ld hl, Frames
+ call AddNTimes
+ ld d, h
+ ld e, l
+ ld hl, VTiles2 tile $79
+ ld c, 6
+ ld b, BANK(Frames)
+ call Function1064c3
+ ld hl, VTiles2 tile $7f
+ ld de, TextBoxSpaceGFX
+ ld c, 1
+ ld b, BANK(TextBoxSpaceGFX)
+ call Function1064c3
+ ret
+; 1064c3
+
+Function1064c3: ; 1064c3
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ push bc
+ push hl
+ ld hl, Function3f88
+ ld a, b
+ rst FarCall
+ pop hl
+ pop bc
+ pop af
+ ld [rSVBK], a
+ jr asm_1064ed
+
+Function1064d8: ; 1064d8
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ push bc
+ push hl
+ ld hl, Function3f9f
+ ld a, b
+ rst FarCall
+ pop hl
+ pop bc
+ pop af
+ ld [rSVBK], a
+ jr asm_1064ed
+
+asm_1064ed
+ ld de, wDecompressScratch
+ ld b, $0
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld a, [rVBK]
+ push af
+ ld a, $1
+ ld [rVBK], a
+ call Get2bpp
+ pop af
+ ld [rVBK], a
+ pop af
+ ld [rSVBK], a
+ ret
+; 10650a
+
+Function10650a: ; 10650a
+ ld de, MobilePhoneTilesGFX + $20
+ lb bc, BANK(MobilePhoneTilesGFX), $11
+ call Get2bpp
+ ret
+; 106514
+
+GFX_106514:
+INCBIN "gfx/unknown/106514.2bpp"
diff --git a/mobile/mobile_42.asm b/mobile/mobile_42.asm
new file mode 100644
index 000000000..e551b5245
--- /dev/null
+++ b/mobile/mobile_42.asm
@@ -0,0 +1,2009 @@
+MobileTradeAnimation_SendGivemonToGTS: ; 108000
+ ld a, $80
+ ld [wcf65], a
+ ld de, .TradeAnimScript
+ jp RunMobileTradeAnim_NoFrontpics
+; 10800b
+
+.TradeAnimScript:
+ mobiletradeanim_showgtsgivemon
+ mobiletradeanim_12
+ mobiletradeanim_10
+ mobiletradeanim_sendmon
+ mobiletradeanim_06
+ mobiletradeanim_0f
+ mobiletradeanim_end
+
+MobileTradeAnimation_RetrieveGivemonFromGTS:
+ ld a, $80
+ jr asm_108018
+
+MobileTradeAnimation_ReceiveGetmonFromGTS: ; 108016
+ ld a, $0
+asm_108018:
+ ld [wcf65], a
+ ld de, .TradeAnimScript
+ jp RunMobileTradeAnim_NoFrontpics
+; 108021
+
+.TradeAnimScript:
+ mobiletradeanim_11
+ mobiletradeanim_07
+ mobiletradeanim_receivemon
+ mobiletradeanim_showgtsgetmon
+ mobiletradeanim_end
+
+Function108026: ; 108026
+ ld a, $0
+ jr asm_10802c
+
+Function10802a: ; 10802a
+ ld a, $1
+
+asm_10802c:
+ ld [wcf65], a
+ ld de, .TradeAnimScript
+ jp RunMobileTradeAnim_Frontpics
+; 108035
+
+.TradeAnimScript: ; trade
+ mobiletradeanim_showgivemon
+ mobiletradeanim_12
+ mobiletradeanim_02
+ mobiletradeanim_sendmon
+ mobiletradeanim_05
+ mobiletradeanim_receivemon
+ mobiletradeanim_showgetmon
+ mobiletradeanim_end
+
+Function10803d: ; 10803d
+ ld a, $0
+ ld [wcf65], a
+ ld de, .TradeAnimScript
+ jp RunMobileTradeAnim_NoFrontpics
+; 108048
+
+.TradeAnimScript:
+ mobiletradeanim_11
+ mobiletradeanim_07
+ mobiletradeanim_receivemon
+ mobiletradeanim_showoddegg
+ mobiletradeanim_end
+
+Function10804d: ; 10804d
+ ld a, $0
+ ld [wcf65], a
+ ld de, .TradeAnimScript
+ jp RunMobileTradeAnim_NoFrontpics
+; 108058
+
+.TradeAnimScript:
+ mobiletradeanim_11
+ mobiletradeanim_showgtsgetmon
+ mobiletradeanim_end
+
+RunMobileTradeAnim_Frontpics: ; 10805b
+ ld hl, wTradeAnimAddress
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld a, [hMapAnims]
+ push af
+ xor a
+ ld [hMapAnims], a
+ ld hl, VramState
+ ld a, [hl]
+ push af
+ res 0, [hl]
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set NO_TEXT_SCROLL, [hl]
+ call Function1080b7
+.loop
+ call MobileTradeAnim_JumptableLoop
+ jr nc, .loop
+ pop af
+ ld [Options], a
+ pop af
+ ld [VramState], a
+ pop af
+ ld [hMapAnims], a
+ ret
+; 108089
+
+RunMobileTradeAnim_NoFrontpics: ; 108089
+ ld hl, wTradeAnimAddress
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld a, [hMapAnims]
+ push af
+ xor a
+ ld [hMapAnims], a
+ ld hl, VramState
+ ld a, [hl]
+ push af
+ res 0, [hl]
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set NO_TEXT_SCROLL, [hl]
+ call Function108157
+.loop
+ call MobileTradeAnim_JumptableLoop
+ jr nc, .loop
+ pop af
+ ld [Options], a
+ pop af
+ ld [VramState], a
+ pop af
+ ld [hMapAnims], a
+ ret
+; 1080b7
+
+Function1080b7: ; 1080b7
+ xor a
+ ld [wJumptableIndex], a
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ call DisableLCD
+ call MobileTradeAnim_ClearVTiles
+ call MobileTradeAnim_ClearBGMap
+ call LoadStandardFont
+ call LoadFontsBattleExtra
+
+ ld a, $1
+ ld [rVBK], a
+ ld hl, LZ_108da7
+ ld de, VTiles2
+ call Decompress
+
+ ld a, $0
+ ld [rVBK], a
+ ld hl, LZ_108d27
+ ld de, VTiles0 tile $20
+ call Decompress
+
+ call EnableLCD
+
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ farcall ClearSpriteAnims
+
+ call DelayFrame
+
+ ld de, TradeBallGFX
+ ld hl, VTiles0
+ lb bc, BANK(TradeBallGFX), $06
+ call Request2bpp
+
+ ld de, TradePoofGFX
+ ld hl, VTiles0 tile $06
+ lb bc, BANK(TradePoofGFX), $0c
+ call Request2bpp
+
+ xor a
+ ld hl, wSpriteAnimDict
+ ld [hli], a
+ ld [hl], $0
+
+ ld a, [wPlayerTrademonSpecies]
+ ld hl, wPlayerTrademonDVs
+ ld de, VTiles0 tile $30
+ call MobileTradeAnim_GetFrontpic
+
+ ld a, [wOTTrademonSpecies]
+ ld hl, wOTTrademonDVs
+ ld de, VTiles2 tile $31
+ call MobileTradeAnim_GetFrontpic
+
+ ld a, [wPlayerTrademonSpecies]
+ ld de, wPlayerTrademonSpeciesName
+ call MobileTradeAnim_InitSpeciesName
+
+ ld a, [wOTTrademonSpecies]
+ ld de, wOTTrademonSpeciesName
+ call MobileTradeAnim_InitSpeciesName
+
+ xor a
+ call Function108b98
+ call Function108af4
+ ret
+; 108157
+
+Function108157: ; 108157
+ xor a
+ ld [wJumptableIndex], a
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ call DisableLCD
+ call MobileTradeAnim_ClearVTiles
+ call MobileTradeAnim_ClearBGMap
+ call LoadStandardFont
+ call LoadFontsBattleExtra
+ call EnableLCD
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ farcall ClearSpriteAnims
+ xor a
+ ld hl, wSpriteAnimDict
+ ld [hli], a
+ ld [hl], $0
+ call DelayFrame
+ ld a, [wPlayerTrademonSpecies]
+ ld de, wPlayerTrademonSpeciesName
+ call MobileTradeAnim_InitSpeciesName
+ ld a, [wOTTrademonSpecies]
+ ld de, wOTTrademonSpeciesName
+ call MobileTradeAnim_InitSpeciesName
+ xor a
+ call Function108b98
+ call Function108af4
+ ret
+; 1081ad
+
+MobileTradeAnim_ClearVTiles: ; 1081ad
+ ld a, $1
+ ld [rVBK], a
+ ld hl, VTiles0
+ ld bc, 3 * $80 tiles
+ xor a
+ call ByteFill
+ ld a, $0
+ ld [rVBK], a
+ ld hl, VTiles0
+ ld bc, 3 * $80 tiles
+ xor a
+ call ByteFill
+ ret
+; 1081ca
+
+MobileTradeAnim_ClearBGMap: ; 1081ca
+ ld a, $1
+ ld [rVBK], a
+ hlbgcoord 0, 0
+ ld bc, 2 * BG_MAP_HEIGHT * BG_MAP_WIDTH
+ ld a, $0
+ call ByteFill
+ ld a, $0
+ ld [rVBK], a
+ hlbgcoord 0, 0
+ ld bc, 2 * BG_MAP_HEIGHT * BG_MAP_WIDTH
+ ld a, $7f
+ call ByteFill
+ ret
+; 1081e9
+
+MobileTradeAnim_GetFrontpic: ; 1081e9
+ push de
+ push af
+ predef GetUnownLetter
+ pop af
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ call GetBaseData
+ pop de
+ predef GetMonFrontpic
+ ret
+; 108201
+
+Function108201: ; 108201
+ push de
+ push af
+ predef GetUnownLetter
+ pop af
+ ld [CurPartySpecies], a
+ ld [CurSpecies], a
+ call GetBaseData
+ pop de
+ predef GetAnimatedFrontpicPredef
+ ret
+; 108219
+
+Function108219: ; 108219
+ ld [CurPartySpecies], a
+ hlcoord 7, 2
+ ld d, $0
+ ld e, ANIM_MON_TRADE
+ predef AnimateFrontpic
+ ret
+; 108229
+
+Function108229: ; 108229
+ ld [CurPartySpecies], a
+ hlcoord 7, 2
+ ld d, $0
+ ld e, ANIM_MON_TRADE
+ predef LoadMonAnimation
+ ret
+; 108239
+
+MobileTradeAnim_InitSpeciesName: ; 108239
+ push de
+ ld [wd265], a
+ call GetPokemonName
+ ld hl, StringBuffer1
+ pop de
+ ld bc, PKMN_NAME_LENGTH
+ call CopyBytes
+ ret
+; 10824b
+
+MobileTradeAnim_JumptableLoop: ; 10824b
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .StopAnim
+ call .ExecuteMobileTradeAnimCommand
+ call DelayFrame
+ and a
+ ret
+
+.StopAnim:
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ call LoadStandardFont
+ call LoadFontsBattleExtra
+ farcall MobileFunc_106462
+ farcall Function106464
+ scf
+ ret
+; 10827b
+
+.ExecuteMobileTradeAnimCommand: ; 10827b
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, 0
+ ld hl, .Jumptable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+; 10828a
+
+.Jumptable: ; 10828a
+
+ dw GetMobileTradeAnimByte ; 00
+ dw MobileTradeAnim_ShowPlayerMonToBeSent ; 01
+ dw MobileTradeAnim_02 ; 02
+ dw MobileTradeAnim_GiveTrademon1 ; 03
+ dw MobileTradeAnim_GiveTrademon2 ; 04
+ dw MobileTradeAnim_05 ; 05
+ dw MobileTradeAnim_06 ; 06
+ dw MobileTradeAnim_07 ; 07
+ dw MobileTradeAnim_GetTrademon1 ; 08
+ dw MobileTradeAnim_GetTrademon2 ; 09
+ dw MobileTradeAnim_GetTrademon3 ; 0a
+ dw MobileTradeAnim_ShowOTMonFromTrade ; 0b
+ dw EndMobileTradeAnim ; 0c
+ dw MobileTradeAnim_ShowPlayerMonForGTS ; 0d
+ dw MobileTradeAnim_ShowOTMonFromGTS ; 0e
+ dw MobileTradeAnim_0f ; 0f
+ dw MobileTradeAnim_10 ; 10
+ dw MobileTradeAnim_11 ; 11
+ dw MobileTradeAnim_FadeToBlack ; 12
+ dw MobileTradeAnim_GetOddEgg ; 13 get odd egg
+; 1082b2
+
+MobileTradeAnim_Next: ; 1082b2
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+; 1082b7
+
+GetMobileTradeAnimByte: ; 1082b7
+ ld hl, wTradeAnimAddress
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ ld [wJumptableIndex], a
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ ret
+; 1082c6
+
+EndMobileTradeAnim: ; 1082c6
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+; 1082cc
+
+WaitMobileTradeSpriteAnims: ; 1082cc
+.loop
+ push bc
+ farcall PlaySpriteAnimations
+ pop bc
+ call DelayFrame
+ dec c
+ jr nz, .loop
+ ret
+; 1082db
+
+Function1082db: ; 1082db
+.loop
+ farcall PlaySpriteAnimations
+ farcall SetUpPokeAnim
+ farcall HDMATransferTileMapToWRAMBank3
+ jr nc, .loop
+ ret
+; 1082f0
+
+Function1082f0: ; 1082f0
+.loop
+ call Function108b78
+ call DelayFrame
+ dec c
+ jr nz, .loop
+ ret
+; 1082fa
+
+Function1082fa: ; 1082fa
+.loop
+ call Function108b78
+ push hl
+ push bc
+ farcall PlaySpriteAnimations
+ pop bc
+ pop hl
+ call DelayFrame
+ dec c
+ jr nz, .loop
+ ret
+; 10830e
+
+MobileTradeAnim_ShowPlayerMonToBeSent: ; 10830e
+ ld de, MUSIC_EVOLUTION
+ call PlayMusic2
+ ld a, $80
+ ld [hSCX], a
+ xor a
+ ld [hSCY], a
+ ld a, $87
+ ld [hWX], a
+ ld a, $50
+ ld [hWY], a
+ call MobileTradeAnim_DisplayMonToBeSent
+ ld a, [wPlayerTrademonSpecies]
+ ld [CurPartySpecies], a
+ call Function10895e
+ ld a, [wPlayerTrademonDVs]
+ ld [TempMonDVs], a
+ ld a, [wPlayerTrademonDVs + 1]
+ ld [TempMonDVs + 1], a
+ ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
+ call GetSGBLayout
+ ld a, %11100100 ; 3,2,1,0
+ call DmgToCgbBGPals
+ call WaitBGMap
+.loop
+ ld a, [hWX]
+ cp $7
+ jr z, .okay
+ sub $4
+ ld [hWX], a
+ ld a, [hSCX]
+ sub $4
+ ld [hSCX], a
+ call DelayFrame
+ jr .loop
+
+.okay
+ ld a, $7
+ ld [hWX], a
+ xor a
+ ld [hSCX], a
+ ld a, [wPlayerTrademonSpecies]
+ call GetCryIndex
+ jr c, .skip_cry
+ ld e, c
+ ld d, b
+ call PlayCryHeader
+
+.skip_cry
+ ld c, 80
+ call DelayFrames
+ call Function108bec
+ depixel 10, 11, 4, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL
+ call _InitSpriteAnimStruct
+ ld de, SFX_BALL_POOF
+ call PlaySFX
+ hlcoord 0, 0
+ ld bc, 12 * SCREEN_WIDTH
+ ld a, " "
+ call ByteFill
+ ld c, 80
+ call WaitMobileTradeSpriteAnims
+ call GetMobileTradeAnimByte
+ ret
+; 10839b
+
+MobileTradeAnim_ShowOTMonFromTrade: ; 10839b
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ call DisableLCD
+ call MobileTradeAnim_ClearBGMap
+ ld a, [wOTTrademonSpecies]
+ ld [CurPartySpecies], a
+ ld hl, wOTTrademonDVs
+ ld de, VTiles2
+ call Function108201
+ call EnableLCD
+ farcall DeinitializeAllSprites
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ depixel 10, 11, 4, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
+ call _InitSpriteAnimStruct
+ call Function108b45
+ ld a, $1
+ call Function108b98
+ call Function108af4
+ ld c, 48
+ call WaitMobileTradeSpriteAnims
+ ld de, SFX_BALL_POOF
+ call PlaySFX
+ call MobileTradeAnim_DisplayReceivedMon
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $50
+ ld [hWY], a
+ ld a, [wOTTrademonSpecies]
+ ld [CurPartySpecies], a
+ ld a, [wOTTrademonDVs]
+ ld [TempMonDVs], a
+ ld a, [wOTTrademonDVs + 1]
+ ld [TempMonDVs + 1], a
+ ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
+ call GetSGBLayout
+ ld a, %11100100 ; 3,2,1,0
+ call DmgToCgbBGPals
+ call Function108963
+ ld a, [wOTTrademonSpecies]
+ call Function108229
+ call Function1082db
+ call Function108c16
+ call GetMobileTradeAnimByte
+ ret
+; 10842c
+
+MobileTradeAnim_ShowPlayerMonForGTS: ; 10842c
+ ld de, MUSIC_EVOLUTION
+ call PlayMusic2
+ ld a, $80
+ ld [hSCX], a
+ xor a
+ ld [hSCY], a
+ ld a, $87
+ ld [hWX], a
+ ld a, $50
+ ld [hWY], a
+ call MobileTradeAnim_DisplayMonToBeSent
+ ld a, [wPlayerTrademonSpecies]
+ ld [CurPartySpecies], a
+ ld hl, wPlayerTrademonDVs
+ call Function10898a
+ call DelayFrame
+ ld de, TradeBallGFX
+ ld hl, VTiles0
+ lb bc, BANK(TradeBallGFX), $06
+ call Request2bpp
+ ld de, TradePoofGFX
+ ld hl, VTiles0 tile $06
+ lb bc, BANK(TradePoofGFX), $0c
+ call Request2bpp
+ ld a, [wPlayerTrademonDVs]
+ ld [TempMonDVs], a
+ ld a, [wPlayerTrademonDVs + 1]
+ ld [TempMonDVs + 1], a
+ ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
+ call GetSGBLayout
+ ld a, %11100100 ; 3,2,1,0
+ call DmgToCgbBGPals
+ call WaitBGMap
+.loop
+ ld a, [hWX]
+ cp $7
+ jr z, .done
+ sub $4
+ ld [hWX], a
+ ld a, [hSCX]
+ sub $4
+ ld [hSCX], a
+ call DelayFrame
+ jr .loop
+
+.done
+ ld a, $7
+ ld [hWX], a
+ xor a
+ ld [hSCX], a
+ ld a, [wPlayerTrademonSpecies]
+ call GetCryIndex
+ jr c, .skip_cry
+ ld e, c
+ ld d, b
+ call PlayCryHeader
+
+.skip_cry
+ ld c, 80
+ call DelayFrames
+ call Function108c2b
+ depixel 10, 11, 4, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_SENT_BALL
+ call _InitSpriteAnimStruct
+ ld de, SFX_BALL_POOF
+ call PlaySFX
+ hlcoord 0, 0
+ ld bc, 12 * SCREEN_WIDTH
+ ld a, " "
+ call ByteFill
+ ld c, 80
+ call WaitMobileTradeSpriteAnims
+ call GetMobileTradeAnimByte
+ ret
+; 1084d7
+
+MobileTradeAnim_ShowOTMonFromGTS: ; 1084d7
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ call DisableLCD
+ call MobileTradeAnim_ClearBGMap
+ ld a, [wOTTrademonSpecies]
+ ld [CurPartySpecies], a
+ ld hl, wOTTrademonDVs
+ ld de, VTiles2
+ call Function108201
+ call EnableLCD
+ farcall DeinitializeAllSprites
+ call DelayFrame
+ ld de, TradeBallGFX
+ ld hl, VTiles0
+ lb bc, BANK(TradeBallGFX), $06
+ call Request2bpp
+ ld de, TradePoofGFX
+ ld hl, VTiles0 tile $06
+ lb bc, BANK(TradePoofGFX), $0c
+ call Request2bpp
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ depixel 10, 11, 4, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
+ call _InitSpriteAnimStruct
+ call Function108b45
+ ld a, $1
+ call Function108b98
+ call Function108af4
+ ld c, 48
+ call WaitMobileTradeSpriteAnims
+ ld de, SFX_BALL_POOF
+ call PlaySFX
+ call MobileTradeAnim_DisplayReceivedMon
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $50
+ ld [hWY], a
+ ld a, [wOTTrademonSpecies]
+ ld [CurPartySpecies], a
+ ld a, [wOTTrademonDVs]
+ ld [TempMonDVs], a
+ ld a, [wOTTrademonDVs + 1]
+ ld [TempMonDVs + 1], a
+ ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
+ call GetSGBLayout
+ ld a, %11100100 ; 3,2,1,0
+ call DmgToCgbBGPals
+ ld a, [wOTTrademonSpecies]
+ ld hl, wOTTrademonDVs
+ call Function10898a
+ ld a, [wOTTrademonSpecies]
+ call Function108229
+ call Function1082db
+ call Function108c40
+ call GetMobileTradeAnimByte
+ ret
+; 108589
+
+MobileTradeAnim_GetOddEgg: ; 108589
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ call DisableLCD
+ call MobileTradeAnim_ClearBGMap
+ ld a, [wOTTrademonSpecies]
+ ld [CurPartySpecies], a
+ ld hl, wOTTrademonDVs
+ ld de, VTiles2
+ call Function108201
+ call EnableLCD
+ farcall DeinitializeAllSprites
+ call DelayFrame
+ ld de, TradeBallGFX
+ ld hl, VTiles0
+ lb bc, BANK(TradeBallGFX), $06
+ call Request2bpp
+ ld de, TradePoofGFX
+ ld hl, VTiles0 tile $06
+ lb bc, BANK(TradePoofGFX), $0c
+ call Request2bpp
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ depixel 10, 11, 4, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_TRADE_OT_BALL
+ call _InitSpriteAnimStruct
+ call Function108b45
+ ld a, $1
+ call Function108b98
+ call Function108af4
+ ld c, 48
+ call WaitMobileTradeSpriteAnims
+ ld de, SFX_BALL_POOF
+ call PlaySFX
+ call Function108a33
+ xor a
+ ld [hSCX], a
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $50
+ ld [hWY], a
+ ld a, [wOTTrademonSpecies]
+ ld [CurPartySpecies], a
+ ld a, [wOTTrademonDVs]
+ ld [TempMonDVs], a
+ ld a, [wOTTrademonDVs + 1]
+ ld [TempMonDVs + 1], a
+ ld b, SCGB_PLAYER_OR_MON_FRONTPIC_PALS
+ call GetSGBLayout
+ ld a, %11100100 ; 3,2,1,0
+ call DmgToCgbBGPals
+ ld a, [wOTTrademonSpecies]
+ ld hl, wOTTrademonDVs
+ call Function10898a
+ ld a, [wOTTrademonSpecies]
+ call Function108229
+ call Function1082db
+ call GetMobileTradeAnimByte
+ ret
+; 108638
+
+MobileTradeAnim_02: ; 108638
+ farcall DeinitializeAllSprites
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ xor a
+ ld [hBGMapMode], a
+ call DisableLCD
+ call MobileTradeAnim_ClearBGMap
+ call Function108c80
+ call Function108c6d
+ call EnableLCD
+ ld a, $c
+ ld [hSCX], a
+ ld a, $78
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_109107
+ ld de, UnknBGPals
+ ld bc, 8 palettes
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ call Function108d07
+ call Function108af4
+ call GetMobileTradeAnimByte
+ ret
+; 108689
+
+MobileTradeAnim_10: ; 108689
+ farcall DeinitializeAllSprites
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ xor a
+ ld [hBGMapMode], a
+ call DisableLCD
+ call MobileTradeAnim_ClearBGMap
+ ld a, $1
+ ld [rVBK], a
+ ld hl, LZ_108da7
+ ld de, VTiles2
+ call Decompress
+ ld a, $0
+ ld [rVBK], a
+ ld hl, LZ_108d27
+ ld de, VTiles0 tile $20
+ call Decompress
+ call Function108c80
+ call Function108c6d
+ call EnableLCD
+ ld a, $c
+ ld [hSCX], a
+ ld a, $78
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_109107
+ ld de, UnknBGPals
+ ld bc, 8 palettes
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ call Function108d07
+ call Function108af4
+ call GetMobileTradeAnimByte
+ ret
+; 1086f4
+
+MobileTradeAnim_11: ; 1086f4
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ xor a
+ ld [hBGMapMode], a
+ call DisableLCD
+ ld a, $1
+ ld [rVBK], a
+ ld hl, LZ_108da7
+ ld de, VTiles2
+ call Decompress
+ ld a, $0
+ ld [rVBK], a
+ ld hl, LZ_108d27
+ ld de, VTiles0 tile $20
+ call Decompress
+ call Function108c80
+ call Function108c6d
+ call EnableLCD
+ ld a, $80
+ ld [hSCX], a
+ ld a, $90
+ ld [hSCY], a
+ ld a, $7
+ ld [hWX], a
+ ld a, $90
+ ld [hWY], a
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_109107
+ ld de, UnknBGPals
+ ld bc, 8 palettes
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ call Function108d07
+ call Function108af4
+ call Function108b5a
+ ld a, $e0
+ ld [hSCX], a
+ ld de, MUSIC_EVOLUTION
+ call PlayMusic2
+ call GetMobileTradeAnimByte
+ ret
+; 108763
+
+MobileTradeAnim_GiveTrademon1: ; 108763
+ ld de, SFX_GIVE_TRADEMON
+ call PlaySFX
+ ld c, 40
+ ld hl, BGPals palette 6
+ call Function1082f0
+ call Function108af4
+.loop
+ ld a, [hSCX]
+ cp $e0
+ jr z, .loop2
+ dec a
+ dec a
+ ld [hSCX], a
+ cp $f8
+ jr nz, .next
+ depixel 10, 11, 4, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_22
+ call _InitSpriteAnimStruct
+
+.next
+ ld c, 1
+ call WaitMobileTradeSpriteAnims
+ jr .loop
+
+.loop2
+ ld a, [hSCY]
+ cp $f8
+ jr z, .done
+ dec a
+ dec a
+ ld [hSCY], a
+ cp $40
+ jr z, .init
+ cp $30
+ jr z, .delete
+ cp $68
+ jr z, .replace
+ jr .next2
+
+.init
+ depixel 10, 11, 4, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_22
+ call _InitSpriteAnimStruct
+ xor a
+ call Function108ad4
+ jr .next2
+
+.delete
+ call MobileTradeAnim_DeleteSprites
+ jr .next2
+
+.replace
+ call MobileTradeAnim_DeleteSprites
+ ld a, $1
+ call Function108ad4
+.next2
+ ld c, 1
+ call WaitMobileTradeSpriteAnims
+ jr .loop2
+
+.done
+ call MobileTradeAnim_Next
+ ret
+; 1087cf
+
+MobileTradeAnim_GiveTrademon2: ; 1087cf
+ ld c, 40
+ ld hl, BGPals + 1 palettes
+ call Function1082f0
+ call Function108af4
+ call Function108b5a
+ depixel 9, 10, 2, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_25
+ call _InitSpriteAnimStruct
+ ld de, SFX_FORESIGHT
+ call PlaySFX
+ ld c, 10
+ call WaitMobileTradeSpriteAnims
+ xor a
+ ld [wcf64], a
+ depixel 9, 10, 2, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_23
+ call _InitSpriteAnimStruct
+.loop
+ ld a, [hSCY]
+ cp $90
+ jr z, .done
+ sub $8
+ ld [hSCY], a
+ ld c, 1
+ call WaitMobileTradeSpriteAnims
+ jr .loop
+
+.done
+ call GetMobileTradeAnimByte
+ ret
+; 108811
+
+MobileTradeAnim_05: ; 108811
+ ld c, 40
+ call WaitMobileTradeSpriteAnims
+ ld a, $1
+ ld [wcf64], a
+ ld de, SFX_SHARPEN
+ call PlaySFX
+ ld c, 60
+ call WaitMobileTradeSpriteAnims
+ depixel 30, 10, 2, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_24
+ call _InitSpriteAnimStruct
+ call GetMobileTradeAnimByte
+ ld de, SFX_THROW_BALL
+ call PlaySFX
+ ret
+; 108838
+
+MobileTradeAnim_06: ; 108838
+ ld c, 40
+ call WaitMobileTradeSpriteAnims
+ ld a, $1
+ ld [wcf64], a
+ ld de, SFX_SHARPEN
+ call PlaySFX
+ call GetMobileTradeAnimByte
+ ret
+; 10884c
+
+MobileTradeAnim_07: ; 10884c
+ ld c, 80
+ call DelayFrames
+ depixel 30, 10, 2, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_24
+ call _InitSpriteAnimStruct
+ call GetMobileTradeAnimByte
+ ld de, SFX_THROW_BALL
+ call PlaySFX
+ ret
+; 108863
+
+MobileTradeAnim_GetTrademon1: ; 108863
+ ld c, 40
+ call WaitMobileTradeSpriteAnims
+.loop
+ ld a, [hSCY]
+ cp $f8
+ jr z, .done
+ add $8
+ ld [hSCY], a
+ ld c, 1
+ call WaitMobileTradeSpriteAnims
+ jr .loop
+
+.done
+ farcall DeinitializeAllSprites
+ depixel 9, 10, 2, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_25
+ call _InitSpriteAnimStruct
+ ld de, SFX_GLASS_TING_2
+ call PlaySFX
+ call Function108af4
+ call MobileTradeAnim_Next
+ ret
+; 108894
+
+MobileTradeAnim_GetTrademon2: ; 108894
+ ld c, 20
+ ld hl, BGPals + 1 palettes
+ call Function1082fa
+ ld de, SFX_GIVE_TRADEMON
+ call PlaySFX
+ ld c, 20
+ ld hl, BGPals + 1 palettes
+ call Function1082fa
+ call Function108af4
+.asm_1088ad
+ ld a, [hSCY]
+ cp $78
+ jr z, .asm_1088ee
+ inc a
+ inc a
+ ld [hSCY], a
+ cp $30
+ jr z, .asm_1088c5
+ cp $40
+ jr z, .asm_1088dd
+ cp $68
+ jr z, .asm_1088cf
+ jr .asm_1088e7
+
+.asm_1088c5
+ depixel 10, 11, 4, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_22
+ call _InitSpriteAnimStruct
+ jr .asm_1088e7
+
+.asm_1088cf
+ depixel 10, 11, 4, 0
+ ld a, SPRITE_ANIM_INDEX_MOBILE_22
+ call _InitSpriteAnimStruct
+ xor a
+ call Function108ad4
+ jr .asm_1088e7
+
+.asm_1088dd
+ call MobileTradeAnim_DeleteSprites
+ ld a, $1
+ call Function108ad4
+ jr .asm_1088e7
+
+.asm_1088e7
+ ld c, 1
+ call WaitMobileTradeSpriteAnims
+ jr .asm_1088ad
+
+.asm_1088ee
+ ld a, [hSCX]
+ cp $c
+ jr z, .asm_108906
+ inc a
+ inc a
+ ld [hSCX], a
+ cp -8
+ jr nz, .asm_1088e7
+ call MobileTradeAnim_DeleteSprites
+ ld c, 1
+ call WaitMobileTradeSpriteAnims
+ jr .asm_1088ee
+
+.asm_108906
+ call MobileTradeAnim_Next
+ ret
+; 10890a
+
+MobileTradeAnim_GetTrademon3: ; 10890a
+ ld c, 40
+ ld hl, BGPals palette 6
+ call Function1082f0
+ call Function108af4
+ call GetMobileTradeAnimByte
+ ret
+; 108919
+
+MobileTradeAnim_0f: ; 108919
+ ld c, 40
+ call WaitMobileTradeSpriteAnims
+ farcall DeinitializeAllSprites
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ call DisableLCD
+ call MobileTradeAnim_ClearVTiles
+ call MobileTradeAnim_ClearBGMap
+ call EnableLCD
+ call GetMobileTradeAnimByte
+ ret
+; 10893d
+
+MobileTradeAnim_FadeToBlack: ; 10893d
+.loop
+ ld a, [rBGP]
+ and a
+ jr z, .blank
+ sla a
+ sla a
+ call DmgToCgbBGPals
+ call DmgToCgbObjPal0
+ ld c, 4
+ call DelayFrames
+ jr .loop
+
+.blank
+ xor a
+ call DmgToCgbBGPals
+ call DmgToCgbObjPal0
+ call GetMobileTradeAnimByte
+ ret
+; 10895e
+
+Function10895e: ; 10895e
+ ld de, VTiles0 tile $30
+ jr asm_108966
+
+Function108963:
+ ld de, VTiles2 tile $31
+asm_108966
+ call DelayFrame
+ ld hl, VTiles2
+ lb bc, $a, $31 ; $a is the bank of ?????
+ call Request2bpp
+ call WaitTop
+ call MobileTradeAnim_ClearTilemap
+ hlcoord 7, 2
+ xor a
+ ld [hGraphicStartTile], a
+ lb bc, 7, 7
+ predef PlaceGraphic
+ call WaitBGMap
+ ret
+; 10898a
+
+Function10898a: ; 10898a
+ ld de, VTiles2
+ call MobileTradeAnim_GetFrontpic
+ call WaitTop
+ call MobileTradeAnim_ClearTilemap
+ hlcoord 7, 2
+ xor a
+ ld [hGraphicStartTile], a
+ lb bc, 7, 7
+ predef PlaceGraphic
+ call WaitBGMap
+ ret
+; 1089a8
+
+MobileTradeAnim_DisplayMonToBeSent: ; 1089a8
+ ld de, wPlayerTrademonSpecies
+ ld a, [de]
+ cp EGG
+ jr z, MobileTradeAnim_DisplayEggData
+ call MobileTradeAnim_LoadMonTemplate
+ ld de, wPlayerTrademonSpecies
+ call MobileTradeAnim_MonDisplay_PrintSpeciesNumber
+ ld de, wPlayerTrademonSpeciesName
+ call MobileTradeAnim_MonDisplay_PrintSpeciesName
+ ld a, [wPlayerTrademonCaughtData]
+ ld de, wPlayerTrademonOTName
+ call MobileTradeAnim_MonDisplay_PrintOTNameAndGender
+ ld de, wPlayerTrademonID
+ call MobileTradeAnim_MonDisplay_PrintIDNumber
+ call MobileTradeAnim_MonDisplay_UpdateBGMap
+ ret
+
+MobileTradeAnim_DisplayReceivedMon:
+ ld de, wOTTrademonSpecies
+ ld a, [de]
+ cp EGG
+ jr z, MobileTradeAnim_DisplayEggData
+ call MobileTradeAnim_LoadMonTemplate
+ ld de, wOTTrademonSpecies
+ call MobileTradeAnim_MonDisplay_PrintSpeciesNumber
+ ld de, wOTTrademonSpeciesName
+ call MobileTradeAnim_MonDisplay_PrintSpeciesName
+ ld a, [wOTTrademonCaughtData]
+ ld de, wOTTrademonOTName
+ call MobileTradeAnim_MonDisplay_PrintOTNameAndGender
+ ld de, wOTTrademonID
+ call MobileTradeAnim_MonDisplay_PrintIDNumber
+ call MobileTradeAnim_MonDisplay_UpdateBGMap
+ ret
+
+MobileTradeAnim_DisplayEggData
+ call WaitTop
+ call MobileTradeAnim_ClearTilemap
+ ld a, VBGMap1 / $100
+ ld [hBGMapAddress + 1], a
+ hlcoord 5, 0
+ ld b, 6
+ ld c, 9
+ call TextBox
+ hlcoord 6, 2
+ ld de, .EggTemplate
+ call PlaceString
+ call MobileTradeAnim_MonDisplay_UpdateBGMap
+ ret
+; 108a1d
+
+.EggTemplate: ; 108a1d
+ db "タマゴ"
+ next "おや/?????"
+ next "<ID>№<DOT>?????"
+ db "@"
+; 108a33
+
+Function108a33: ; 108a33
+ call WaitTop
+ call MobileTradeAnim_ClearTilemap
+ ld a, VBGMap1 / $100
+ ld [hBGMapAddress + 1], a
+ hlcoord 5, 0
+ ld b, 6
+ ld c, 9
+ call TextBox
+ hlcoord 7, 4
+ ld de, .OddEgg
+ call PlaceString
+ call MobileTradeAnim_MonDisplay_UpdateBGMap
+ ret
+; 108a54
+
+.OddEgg: ; 108a54
+ db "なぞのタマゴ@"
+; 108a5b
+
+MobileTradeAnim_LoadMonTemplate: ; 108a5b
+ call WaitTop
+ call MobileTradeAnim_ClearTilemap
+ ld a, VBGMap1 / $100
+ ld [hBGMapAddress + 1], a
+ hlcoord 4, 0
+ ld b, 6
+ ld c, 10
+ call TextBox
+ hlcoord 5, 0
+ ld de, .MonTemplate
+ call PlaceString
+ ret
+; 108a79
+
+.MonTemplate: ; 108a79
+ db "─ №<DOT>"
+ next ""
+ next "おや/"
+ next "<ID>№<DOT>"
+ db "@"
+; 108a87
+
+MobileTradeAnim_MonDisplay_UpdateBGMap: ; 108a87
+ call WaitBGMap
+ call WaitTop
+ ld a, VBGMap0 / $100
+ ld [hBGMapAddress + 1], a
+ ret
+; 108a92
+
+MobileTradeAnim_MonDisplay_PrintSpeciesNumber: ; 108a92
+ hlcoord 9, 0
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 3
+ call PrintNum
+ ret
+; 108a9c
+
+MobileTradeAnim_MonDisplay_PrintSpeciesName: ; 108a9c
+ hlcoord 5, 2
+ call PlaceString
+ ret
+; 108aa3
+
+MobileTradeAnim_MonDisplay_PrintOTNameAndGender: ; 108aa3
+ cp $3
+ jr c, .got_gender
+ xor a
+.got_gender
+ push af
+ hlcoord 8, 4
+ call PlaceString
+ inc bc
+ pop af
+ ld hl, .GenderChars
+ ld d, 0
+ ld e, a
+ add hl, de
+ ld a, [hl]
+ ld [bc], a
+ ret
+; 108abb
+
+.GenderChars: ; 108abb
+ db " "
+ db "♂"
+ db "♀"
+; 108abe
+
+MobileTradeAnim_MonDisplay_PrintIDNumber: ; 108abe
+ hlcoord 8, 6
+ lb bc, PRINTNUM_LEADINGZEROS | 2, 5
+ call PrintNum
+ ret
+; 108ac8
+
+MobileTradeAnim_ClearTilemap: ; 108ac8
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ ld a, " "
+ call ByteFill
+ ret
+; 108ad4
+
+Function108ad4: ; 108ad4
+ and a
+ jr z, .asm_108adc
+ ld de, GFX_1092c7
+ jr .asm_108adf
+
+.asm_108adc
+ ld de, GFX_1091c7
+.asm_108adf
+ ld a, $1
+ ld [rVBK], a
+ ld hl, VTiles2 tile $4a
+ lb bc, BANK(GFX_1092c7), 16
+ call Get2bpp_2
+ call DelayFrame
+ ld a, $0
+ ld [rVBK], a
+ ret
+; 108af4
+
+Function108af4: ; 108af4
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld a, [wcf65]
+ and $1
+ jr z, .copy_palette_109147
+ ld hl, Palette_109187
+ ld de, UnknOBPals
+ ld bc, 8 palettes
+ call CopyBytes
+ ld hl, Palette_109187
+ ld de, OBPals
+ ld bc, 8 palettes
+ call CopyBytes
+ jr .done_copy
+
+.copy_palette_109147
+ ld hl, Palette_109147
+ ld de, UnknOBPals
+ ld bc, 8 palettes
+ call CopyBytes
+ ld hl, Palette_109147
+ ld de, OBPals
+ ld bc, 8 palettes
+ call CopyBytes
+
+.done_copy
+ pop af
+ ld [rSVBK], a
+ ld a, %11100100 ; 3,2,1,0
+ call DmgToCgbObjPal0
+ ld a, %11100100 ; 3,2,1,0
+ call DmgToCgbBGPals
+ call DelayFrame
+ ret
+; 108b45
+
+Function108b45: ; 108b45
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld de, (31 << 10) + (31 << 5) + 31 ; $7fff
+ ld hl, UnknBGPals
+ ld a, e
+ ld [hli], a
+ ld d, a
+ ld [hli], a
+ pop af
+ ld [rSVBK], a
+ ret
+; 108b5a
+
+Function108b5a: ; 108b5a
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld de, (15 << 10) + (31 << 5) + 18 ; $3ff2
+ ld hl, BGPals + 4 palettes
+ ld c, $10
+.loop
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ dec c
+ jr nz, .loop
+ pop af
+ ld [rSVBK], a
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+; 108b78
+
+Function108b78: ; 108b78
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld a, c
+ and $2
+ jr z, .Orange
+ ld de, (31 << 10) + (31 << 5) + 31 ; $7fff
+ jr .load_pal
+
+.Orange:
+ ld de, ( 1 << 10) + (15 << 5) + 31 ; $05ff
+.load_pal
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hld], a
+ pop af
+ ld [rSVBK], a
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+; 108b98
+
+Palette_108b98:
+; removed
+
+Function108b98: ; 108b98
+ ld d, a
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld a, [wcf65]
+ and $1
+ xor d
+ jr z, .asm_108bad
+ ld hl, Palette_108b98 + 1 palettes
+ jr .asm_108bb0
+
+.asm_108bad
+ ld hl, Palette_108b98
+.asm_108bb0
+ ld de, UnknBGPals + 7 palettes
+ ld bc, 8 palettes
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ ret
+; 108bbd
+
+MobileTradeAnim_DeleteSprites: ; 108bbd
+ farcall DeinitializeAllSprites
+ call ClearSprites
+ ret
+; 108bc7
+
+Function108bc7: ; 108bc7 (42:4bc7)
+ ld a, [wcf64]
+ and a
+ ret z
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ ld a, [hl]
+ cp -1 * 8 - 6
+ jr z, .delete
+ sub 1 * 8
+ ld [hl], a
+ ret
+
+.delete
+ farcall DeinitializeSprite
+ ret
+
+Function108be0: ; 108be0 (42:4be0)
+ ld hl, SPRITEANIMSTRUCT_YCOORD
+ add hl, bc
+ ld a, [hl]
+ cp 9 * 8 + 2
+ ret z
+ add 1 * 8
+ ld [hl], a
+ ret
+; 108bec (42:4bec)
+
+Function108bec: ; 108bec
+ ld a, $90
+ ld [hWY], a
+ ld hl, .PlayerWillTradeMon
+ call PrintText
+ ld c, 80
+ call DelayFrames
+ ld hl, .ForPartnersMon
+ call PrintText
+ ld c, 80
+ call DelayFrames
+ ret
+; 108c07
+
+.PlayerWillTradeMon: ; 0x108c07
+ text_jump UnknownText_0x1bc787
+ db "@"
+; 0x108c0c
+
+.ForPartnersMon: ; 0x108c0c
+ text_jump UnknownText_0x1bc79d
+ db "@"
+; 0x108c11
+
+.UnusedTextPlayersMonTrade: ; 0x108c11
+ text_jump UnknownText_0x1bc7b0
+ db "@"
+; 0x108c16
+
+Function108c16: ; 108c16
+ ld a, $90
+ ld [hWY], a
+ ld hl, .TakeGoodCareOfMon
+ call PrintText
+ ld c, 80
+ call DelayFrames
+ ret
+; 108c26
+
+.TakeGoodCareOfMon: ; 0x108c26
+ text_jump UnknownText_0x1bc7c3
+ db "@"
+; 0x108c2b
+
+Function108c2b: ; 108c2b
+ ld a, $90
+ ld [hWY], a
+ ld hl, .PlayersMonTrade
+ call PrintText
+ ld c, 80
+ call DelayFrames
+ ret
+; 108c3b
+
+.PlayersMonTrade: ; 0x108c3b
+ text_jump UnknownText_0x1bc7dd
+ db "@"
+; 0x108c40
+
+Function108c40: ; 108c40
+ ld a, $90
+ ld [hWY], a
+ ld a, [wcf65]
+ and %10000000
+ jr z, .Getmon
+ ld hl, .CameBack
+ call PrintText
+ ld c, 80
+ call DelayFrames
+ ret
+
+.Getmon:
+ ld hl, .TakeGoodCareOf
+ call PrintText
+ ld c, 80
+ call DelayFrames
+ ret
+; 108c63
+
+.TakeGoodCareOf: ; 0x108c63
+ text_jump UnknownText_0x1bc7f0
+ db "@"
+; 0x108c68
+
+.CameBack: ; 0x108c68
+ text_jump UnknownText_0x1bc80a
+ db "@"
+; 0x108c6d
+
+Function108c6d: ; 108c6d
+ ld hl, LZ_108fe7
+ debgcoord 0, 0
+ call Decompress
+ ld hl, LZ_108fe7
+ debgcoord 0, 0, VBGMap1
+ call Decompress
+ ret
+; 108c80
+
+Function108c80: ; 108c80
+ ld a, $1
+ ld [rVBK], a
+ ld hl, LZ_1090a7
+ debgcoord 0, 0
+ call Decompress
+ ld hl, LZ_1090a7
+ debgcoord 0, 0, VBGMap1
+ call Decompress
+ ld a, $0
+ ld [rVBK], a
+ ret
+; 108c9b
+
+DebugMobileTrade: ; 108c9b
+; localization error: NAME_LENGTH (11) should be NAME_LENGTH_JAPANESE (6) here
+
+ ld hl, .DebugTradeData
+ ld a, [hli]
+ ld [wPlayerTrademonSpecies], a
+
+ ld de, wPlayerTrademonSenderName
+ ld c, NAME_LENGTH
+.your_name_loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .your_name_loop
+
+ ld de, wPlayerTrademonID
+ ld c, 2
+.your_id_loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .your_id_loop
+
+ ld de, wPlayerTrademonOTName
+ ld c, NAME_LENGTH
+.your_ot_loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .your_ot_loop
+
+ ld a, [hli]
+ ld [wOTTrademonSpecies], a
+
+ ld de, wOTTrademonSenderName
+ ld c, NAME_LENGTH
+.their_name_loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .their_name_loop
+
+ ld de, wOTTrademonID
+ ld c, 2
+.their_id_loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .their_id_loop
+
+ ld de, wOTTrademonOTName
+ ld c, NAME_LENGTH
+.their_ot_loop
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .their_ot_loop
+
+ ret
+; 108ce9
+
+.DebugTradeData:
+ db VENUSAUR
+ db "ゲーフり@@"
+ dw $0123
+ db "かびーん@@"
+ db CHARIZARD
+ db "クりーチャ@"
+ dw $0456
+ db "マツミヤ@@"
+; 108d07
+
+Function108d07: ; 108d07
+ ld a, [wc74e]
+ and $7f
+ cp $8
+ jr c, .asm_108d12
+ ld a, $7
+
+.asm_108d12
+ ld bc, 1 palettes
+ ld hl, Palette_1093c7
+ call AddNTimes
+ ld a, $5
+ ld de, UnknBGPals + 4 palettes
+ ld bc, 1 palettes
+ call FarCopyWRAM
+ ret
+; 108d27
+
+LZ_108d27:
+INCBIN "gfx/unknown/108d27.2bpp.lz"
+
+LZ_108da7:
+INCBIN "gfx/unknown/108da7.2bpp.lz"
+
+LZ_108fe7:
+INCBIN "gfx/unknown/108fe7.tilemap.lz"
+
+LZ_1090a7:
+INCBIN "gfx/unknown/1090a7.tilemap.lz"
+
+Palette_1090f7:
+; unreferenced
+ RGB 31, 31, 31
+ RGB 0, 0, 0
+
+ RGB 31, 0, 25
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 0, 0, 0
+
+ RGB 9, 19, 31
+ RGB 0, 0, 0
+
+Palette_109107:
+ RGB 18, 31, 15
+ RGB 20, 20, 20
+ RGB 11, 11, 11
+ RGB 0, 0, 0
+
+ RGB 31, 15, 1
+ RGB 14, 14, 31
+ RGB 12, 9, 31
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 14, 14, 31
+ RGB 12, 9, 31
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 20, 20, 20
+ RGB 11, 11, 11
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 31, 7, 9
+ RGB 18, 0, 1
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 20, 20, 20
+ RGB 11, 11, 11
+ RGB 0, 0, 0
+
+ RGB 31, 15, 1
+ RGB 18, 0, 30
+ RGB 9, 0, 17
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 18, 0, 30
+ RGB 9, 0, 17
+ RGB 0, 0, 0
+
+Palette_109147:
+ RGB 31, 31, 31
+ RGB 31, 31, 12
+ RGB 31, 13, 12
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 31, 23, 15
+ RGB 31, 18, 7
+ RGB 31, 15, 0
+
+ RGB 31, 31, 31
+ RGB 20, 20, 20
+ RGB 11, 11, 11
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 31, 0, 25
+ RGB 31, 0, 25
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 9, 19, 31
+ RGB 9, 19, 31
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+Palette_109187:
+ RGB 31, 31, 31
+ RGB 31, 31, 12
+ RGB 31, 13, 12
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 31, 23, 15
+ RGB 31, 18, 7
+ RGB 31, 15, 0
+
+ RGB 31, 31, 31
+ RGB 20, 20, 20
+ RGB 11, 11, 11
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 9, 19, 31
+ RGB 9, 19, 31
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 31, 0, 25
+ RGB 31, 0, 25
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+ RGB 31, 31, 31
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+GFX_1091c7:
+INCBIN "gfx/unknown/1091c7.2bpp"
+GFX_1092c7:
+INCBIN "gfx/unknown/1092c7.2bpp"
+
+Palette_1093c7:
+ RGB 18, 31, 15
+ RGB 4, 13, 31
+ RGB 0, 0, 31
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 31, 31, 0
+ RGB 31, 15, 0
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 9, 24, 0
+ RGB 2, 16, 0
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 31, 7, 9
+ RGB 18, 0, 1
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 28, 5, 31
+ RGB 17, 0, 17
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 9, 9, 9
+ RGB 4, 4, 4
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 31, 13, 21
+ RGB 27, 7, 12
+ RGB 0, 0, 0
+
+ RGB 18, 31, 15
+ RGB 21, 20, 20
+ RGB 14, 14, 31
+ RGB 0, 0, 0
diff --git a/mobile/mobile_45.asm b/mobile/mobile_45.asm
new file mode 100644
index 000000000..1c2adbfce
--- /dev/null
+++ b/mobile/mobile_45.asm
@@ -0,0 +1,7690 @@
+
+SECTION "bank45", ROMX
+
+ charmap " ", $20 ; revert to ascii
+
+String_114000:
+ db "---", 0
+String_114004:
+ db "CGB-AAAA-00", 0, 0
+
+Unknown_114011: ; 114011
+ dw String_114033
+ dw String_11403a
+ dw String_114043
+ dw String_11404e
+ dw String_114053
+ dw String_114058
+ dw String_114062
+ dw String_114074
+ dw String_11408d
+ dw String_11409f
+ dw String_1140b8
+ dw String_1140e6
+ dw String_114110
+ dw String_11413f
+ dw String_114160
+ dw String_114160
+ dw String_114163
+
+String_114033: ; 114033
+ db "From: ", 0
+String_11403a: ; 11403a
+ db "Sender: ", 0
+String_114043: ; 114043
+ db "Reply-To: ", 0
+String_11404e: ; 11404e
+ db "To: ", 0
+String_114053: ; 114053
+ db "Cc: ", 0
+String_114058: ; 114058
+ db "Subject: ", 0
+String_114062: ; 114062
+ db "MIME-Version: 1.0", 0
+String_114074: ; 114074
+ db "X-Game-title: XXXXXXXXXX", 0
+String_11408d: ; 11408d
+ db "X-Game-code: CGB-", 0
+String_11409f: ; 11409f
+ db "X-GBmail-type: exclusive", 0
+String_1140b8: ; 1140b8
+ db "Content-Type: text/plain; charset=iso-2022-jp", 0
+String_1140e6: ; 1140e6
+ db "Content-Type: multipart/mixed; boundary=\"", 0
+String_114110: ; 114110
+ db "Content-Type: Application/Octet-Stream; name=\"", 0
+String_11413f: ; 11413f
+ db "Content-Transfer-Encoding:Base64", 0
+String_114160: ; 114160
+ db "--", 0
+String_114163: ; 114163
+ db ".", 0
+; 114165
+
+Jumptable_114165: ; 114165
+ dw Function114268
+ dw Function114269
+ dw Function11433c
+ dw Function1143b7
+ dw Function1144d1
+ dw Function114b55
+ dw Function114bbc
+ dw Function114cd9
+ dw Function114e62
+ dw Function1152b8
+ dw Function1154d4
+ dw Function1156cc
+ dw Function1159fb
+; 11417f
+
+Unknown_11417f: ; 11417f
+ dw .From
+ dw .Sender
+ dw .ReplyTo
+ dw .To
+ dw .CC
+ dw .Subject
+ dw .Date
+ dw .ContentType
+ dw .MimeVersion
+ dw .XMailer
+ dw .XGameTitle
+ dw .XGameCode
+ dw .XGBMailType
+
+.From: ; 114199
+ db "FROM:", 0
+.Sender: ; 11419f
+ db "SENDER:", 0
+.ReplyTo: ; 1141a7
+ db "REPLY-TO:", 0
+.To: ; 1141b1
+ db "TO:", 0
+.CC: ; 1141b5
+ db "CC:", 0
+.Subject: ; 1141b9
+ db "SUBJECT:", 0
+.Date: ; 1141c2
+ db "DATE:", 0
+.ContentType: ; 1141c8
+ db "CONTENT-TYPE:", 0
+.MimeVersion: ; 1141d6
+ db "MIME-VERSION:", 0
+.XMailer: ; 1141e4
+ db "X-MAILER:", 0
+.XGameTitle: ; 1141ee
+ db "X-GAME-TITLE:", 0
+.XGameCode: ; 1141fc
+ db "X-GAME-CODE:", 0
+.XGBMailType: ; 114209
+ db "X-GBMAIL-TYPE:", 0
+; 114218
+
+String_114218: ; 114218
+ db "NAME=", 0
+String_11421e: ; 11421e
+ db "MULTIPART", 0
+String_114228: ; 114228
+ db "BOUNDARY=", 0
+String_114232: ; 114232
+ db "=?ISO-2022-JP?B?", 0
+; 114243
+
+Function114243:: ; 114243
+ ld a, SRAM_ENABLE
+ ld [MBC3SRamEnable], a
+ ld a, [hFF8C]
+ push af ; if [$dc02] == 0, this is popped to pc.
+ push de
+ ld a, [$dc02]
+ add a
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_114165
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop de
+ jp hl
+
+; 11425c
+
+Function11425c: ; 11425c
+ ld [$dc02], a
+ pop af
+ ld [hFF8C], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ret
+
+; 114268
+
+Function114268: mobile
+
+; 114269
+
+Function114269: ; 114269
+ ld h, d
+ ld l, e
+ xor a
+ ld [$dc02], a
+ ld [$dc03], a
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+.asm_114282
+ ld a, [de]
+ and a
+ jr z, .asm_1142a4
+ ld h, a
+ ld a, [$dc03]
+ and a
+ jr nz, .asm_114292
+ ld a, h
+ cp $80
+ jr nc, .asm_1142ae
+
+.asm_114292
+ ld a, h
+ cp $d
+ jr z, .asm_1142bb
+ xor a
+ ld [$dc02], a
+.asm_11429b
+ inc e
+ call z, Function114333
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_114282
+
+.asm_1142a4
+ ld a, [$dc03]
+ and a
+ jr nz, .asm_114303
+ ld b, $80
+ jr .asm_1142b0
+
+.asm_1142ae
+ ld b, $81
+
+.asm_1142b0
+ ld a, [$dc00]
+ ld c, a
+ ld a, $1
+ ld h, d
+ ld l, e
+ jp Function11425c
+
+.asm_1142bb
+ and a
+ jr z, .asm_1142a4
+ inc e
+ call z, Function114333
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1142a4
+ ld a, [de]
+ ld h, a
+ ld a, [$dc03]
+ and a
+ jr nz, .asm_1142d4
+ ld a, h
+ cp $80
+ jr nc, .asm_1142ae
+
+.asm_1142d4
+ ld a, h
+ cp $a
+ jr nz, .asm_1142ae
+ ld a, [$dc03]
+ and a
+ jr nz, .asm_11430d
+ ld a, [$dc02]
+ and a
+ jr nz, .asm_114309
+ ld a, $1
+ ld [$dc02], a
+ inc e
+ call z, Function114333
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1142a4
+ ld a, [de]
+ cp $20
+ jr z, .asm_11429b
+ cp $9
+ jr z, .asm_11429b
+ jr .asm_114282
+
+.asm_1142fe
+ xor a
+ ld b, a
+ jp Function11425c
+
+.asm_114303
+ xor a
+ ld b, $1
+ jp Function11425c
+
+.asm_114309
+ xor a
+ ld [$dc02], a
+
+.asm_11430d
+ ld a, [$dc02]
+ and a
+ jr nz, .asm_1142fe
+ ld a, $1
+ ld [$dc03], a
+ inc e
+ call z, Function114333
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1142a4
+ ld a, [de]
+ and a
+ jp z, .asm_1142a4
+ cp $2e
+ jp nz, .asm_114282
+ ld a, $1
+ ld [$dc02], a
+ jp .asm_11429b
+
+; 114333
+
+Function114333: ; 114333
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ ret
+
+; 11433c
+
+Function11433c: ; 11433c
+ push de
+ ld h, d
+ ld l, e
+ ld c, [hl]
+ inc hl
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld b, $b
+ call Function1143f3
+ cp $2
+ jr z, .asm_114358
+ and a
+ jr z, .asm_114360
+ pop hl
+.asm_114351
+ xor a
+ ld b, $3
+ jp Function11425c
+
+.asm_114357
+ pop hl
+
+.asm_114358
+ pop hl
+ ld a, $1
+ ld b, $82
+ jp Function11425c
+
+.asm_114360
+ ld a, h
+ ld [$dc03], a
+ pop hl
+ push bc
+ push de
+ ld c, [hl]
+ inc hl
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld b, $c
+ call Function1143f3
+ cp $2
+ jr z, .asm_114357
+ and a
+ jr z, .asm_114381
+ xor a
+ ld b, $2
+ pop hl
+ pop hl
+ jp Function11425c
+
+.asm_114381
+ pop de
+ pop bc
+ ld a, [$dc03]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ call Function114c0b
+ ld hl, String_114004
+.asm_114394
+ ld de, $dc24
+.asm_114397
+ ld a, [hli]
+ and a
+ jr z, .asm_1143ad
+ ld b, a
+ ld a, [de]
+ inc de
+ cp b
+ jr z, .asm_114397
+.asm_1143a1
+ ld a, [hli]
+ and a
+ jr nz, .asm_1143a1
+ ld a, [hl]
+ and a
+ jr nz, .asm_114394
+ ld b, a
+ jp Function11425c
+
+.asm_1143ad
+ ld a, [de]
+ and a
+ jr nz, .asm_114351
+ xor a
+ ld b, $1
+ jp Function11425c
+
+; 1143b7
+
+Function1143b7: ; 1143b7
+ ld a, [de]
+ ld b, a
+ inc de
+ ld a, [de]
+ ld c, a
+ inc de
+ ld a, [de]
+ ld h, a
+ inc de
+ ld a, [de]
+ inc de
+ push de
+ ld d, a
+ ld e, h
+ call Function1143f3
+ cp $2
+ jr z, .asm_1143eb
+ and a
+ jr nz, .asm_1143ed
+ ld a, h
+ pop hl
+ push af
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld [hl], b
+ xor a
+ jp Function11425c
+
+.asm_1143eb
+ ld b, $82
+
+.asm_1143ed
+ ld a, $1
+ pop hl
+ jp Function11425c
+
+; 1143f3
+
+Function1143f3: ; 1143f3
+ call Function114412
+ and a
+ jr nz, .asm_11440d
+ ld a, $4
+ cp b
+ jr c, .asm_114407
+ jr z, .asm_114402
+.asm_114400
+ xor a
+ ret
+
+.asm_114402
+ ld a, $0
+ cp c
+ jr nc, .asm_114400
+
+.asm_114407
+ lb bc, $4, $0
+ ld a, $2
+ ret
+
+.asm_11440d
+ ld a, $1
+ ld b, $84
+ ret
+
+; 114412
+
+Function114412: ; 114412
+ ld a, c
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld hl, Unknown_11417f
+ ld a, b
+ add a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld c, $0
+ jr .asm_11444a
+
+.asm_11442b
+ ld a, [de]
+ and a
+ jp z, .asm_1144c2
+ inc e
+ call z, Function1144c8
+ cp $d ; CR
+ jr nz, .asm_11442b
+ ld a, [de]
+ inc e
+ call z, Function1144c8
+ cp $a ; NL
+ jr nz, .asm_11442b
+ ld a, [de]
+ cp $2e ; .
+ jr z, .asm_1144ae
+ cp $d ; CR
+ jr z, .asm_1144b8
+
+.asm_11444a
+ ld a, [$dc00]
+ ld [$dc02], a
+ ld a, [de]
+ and a
+ jr z, .asm_1144c2
+ inc e
+ call z, Function1144c8
+ cp $61 ; "a"
+ jr c, .asm_114462
+ cp $7b ; "z" + 1
+ jr nc, .asm_114462
+ sub $20
+
+.asm_114462
+ ld b, a
+ ld a, [hl]
+ and a
+ jr z, .asm_114476
+ cp b
+ jr nz, .asm_11446e
+ inc c
+ inc hl
+ jr .asm_11444a
+
+.asm_11446e
+ ld a, c
+ and a
+ jr z, .asm_11442b
+ dec c
+ dec hl
+ jr .asm_11446e
+
+.asm_114476
+ ld a, $20 ; " "
+ cp b
+ jr z, .asm_114481
+ ld a, $a ; NL
+ cp b
+ jr z, .asm_114481
+ dec de
+
+.asm_114481
+ ld h, d
+ ld l, e
+ ld bc, NULL
+.asm_114486
+ ld a, [de]
+ and a
+ jr z, .asm_1144c2
+ inc bc
+ inc e
+ call z, Function1144c8
+ cp $d ; CR
+ jr nz, .asm_114486
+ ld a, [de]
+ inc bc
+ inc e
+ call z, Function1144c8
+ cp $a ; NL
+ jr nz, .asm_114486
+ ld a, [de]
+ cp $20 ; " "
+ jr z, .asm_114486
+ cp $9 ; TAB
+ jr z, .asm_114486
+ ld d, h
+ ld e, l
+ ld a, [$dc02]
+ ld h, a
+ xor a
+ ret
+
+.asm_1144ae
+ inc e
+ call z, Function1144c8
+ ld a, [de]
+ cp $d ; CR
+ jp nz, .asm_11442b
+
+.asm_1144b8
+ inc e
+ call z, Function1144c8
+ ld a, [de]
+ cp $a ; NL
+ jp nz, .asm_11442b
+
+.asm_1144c2
+ ld a, $0
+ ld [hl], a
+ ld a, $1
+ ret
+
+; 1144c8
+
+Function1144c8: ; 1144c8
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ ret
+
+; 1144d1
+
+Function1144d1: ; 1144d1
+ call Function114561
+ dec de
+ dec de
+ push de
+ inc de
+ inc de
+ inc de
+ inc hl
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc hl
+ ld a, [de]
+ ld [hld], a
+ dec de
+ ld a, [de]
+ ld [hl], a
+ xor a
+ ld [BigDoll], a
+ ld [$dc17], a
+ ld a, $2
+ ld [$dc0e], a
+ ld hl, $dc03
+ ld c, [hl]
+ inc hl
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ call Function114576
+ cp $2
+ jr z, .asm_11455b
+ and a
+ jr z, .asm_114511
+ ld a, $1
+ ld [$dc0d], a
+ call Function1146fa
+ and a
+ jr nz, .asm_11455b
+ jr .asm_11451c
+
+.asm_114511
+ call Function1146a4
+ and a
+ jr nz, .asm_11455b
+ ld a, $2
+ ld [$dc0d], a
+
+.asm_11451c
+ pop hl
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [$dc0d]
+ ld [de], a
+ ld b, $0
+ ld a, [BigDoll]
+ and a
+ jr z, .asm_114537
+ ld b, $1
+
+.asm_114537
+ ld hl, $dc06
+ ld a, [hl]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld hl, $dc09
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ dec de
+ ld a, d
+ or e
+ jr z, .asm_114559
+ ld hl, wCurrMapSceneScriptCount
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ xor a
+ ld [de], a
+ jp Function11425c
+
+.asm_114559
+ ld b, $83
+
+.asm_11455b
+ pop hl
+ ld a, $1
+ jp Function11425c
+
+; 114561
+
+Function114561: ; 114561
+ ld hl, $dc03
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hl], a
+ ret
+
+; 114576
+
+Function114576: ; 114576
+ xor a
+ ld [Bed], a
+ ld b, $7
+ call Function1143f3
+ cp $2
+ jr z, .asm_1145b6
+ and a
+ jr nz, .asm_1145b4
+ ld a, h
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ push hl
+ push de
+ push bc
+ ld hl, $dc24
+ call Function115d53
+ call Function1145c5
+ pop bc
+ pop de
+ pop hl
+ and a
+ jr z, .asm_1145bf
+ ld a, b
+ and a
+ jr nz, .asm_1145ba
+ ld a, h
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld hl, String_114218
+ call Function114acf
+
+.asm_1145b4
+ xor a
+ ret
+
+.asm_1145b6
+ ld b, $82
+ jr .asm_1145bc
+
+.asm_1145ba
+ ld b, $81
+
+.asm_1145bc
+ ld a, $2
+ ret
+
+.asm_1145bf
+ ld a, $1
+ ld [Bed], a
+ ret
+
+; 1145c5
+
+Function1145c5: ; 1145c5
+ ld hl, $dc24
+ ld de, String_11421e
+ ld c, $0
+.asm_1145cd
+ ld a, [hli]
+ and a
+ jr z, .asm_1145ef
+ cp $20
+ jr z, .asm_1145cd
+ cp $d
+ jr z, .asm_1145f8
+ cp $61
+ jr c, .asm_1145e3
+ cp $7b
+ jr nc, .asm_1145e3
+ sub $20
+
+.asm_1145e3
+ ld b, a
+ ld a, [de]
+ and a
+ jr z, .asm_11460e
+ inc de
+ cp b
+ jr z, .asm_1145cd
+ dec de
+ jr .asm_1145cd
+
+.asm_1145ef
+ ld b, $0
+ jr .asm_1145f5
+
+.asm_1145f3
+ ld b, $81
+
+.asm_1145f5
+ ld a, $1
+ ret
+
+.asm_1145f8
+ ld a, [hli]
+ and a
+ jr z, .asm_1145f3
+ cp $a
+ jr nz, .asm_1145f3
+ ld a, [hli]
+ and a
+ jr z, .asm_1145f3
+ cp $20
+ jr z, .asm_1145cd
+ cp $9
+ jr z, .asm_1145cd
+ jr .asm_1145f3
+
+.asm_11460e
+ ld a, c
+ and a
+ jr nz, .asm_114619
+ ld c, $1
+ ld de, String_114228
+ jr .asm_1145cd
+
+.asm_114619
+ dec hl
+ ld a, [hl]
+ cp $22
+ jr nz, .asm_114620
+ inc hl
+
+.asm_114620
+ ld de, $ddc8
+ ld b, $0
+ ld c, $40
+.asm_114627
+ ld a, [hli]
+ cp $22
+ jr z, .asm_114636
+ cp $d
+ jr z, .asm_114636
+ ld [de], a
+ inc de
+ inc b
+ dec c
+ jr nz, .asm_114627
+
+.asm_114636
+ ld a, b
+ ld [PartyMon5Defense], a
+ xor a
+ ret
+
+; 11463c
+
+Function11463c: ; 11463c
+ ld a, [$dc00]
+ push af
+ push de
+ ld hl, $ddc8
+ ld a, [PartyMon5Defense]
+ ld b, a
+.asm_114648
+ ld a, [de]
+ ld c, a
+ ld a, [hli]
+ cp c
+ jr nz, .asm_11468a
+ inc e
+ call z, Function11469b
+ dec b
+ jr nz, .asm_114648
+ ld a, [de]
+ cp $2d
+ jr z, .asm_114673
+ cp $d
+ jr nz, .asm_11468a
+ xor a
+ ld [Carpet], a
+.asm_114662
+ inc e
+ call z, Function11469b
+ ld a, [de]
+ cp $a
+ jr nz, .asm_11468a
+ inc e
+ call z, Function11469b
+ xor a
+ pop hl
+ pop hl
+ ret
+
+.asm_114673
+ inc e
+ call z, Function11469b
+ ld a, [de]
+ cp $2d
+ jr nz, .asm_11468a
+ inc e
+ call z, Function11469b
+ ld a, $1
+ ld [Carpet], a
+ ld a, [de]
+ cp $d
+ jr z, .asm_114662
+
+.asm_11468a
+ pop de
+ pop af
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ xor a
+ ld [Carpet], a
+ ld a, $1
+ ret
+
+; 11469b
+
+Function11469b: ; 11469b
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ ret
+
+; 1146a4
+
+Function1146a4: ; 1146a4
+ call Function114867
+ and a
+ jr nz, .asm_1146e4
+ ld hl, $dc03
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ call Function114a18
+ and a
+ jr nz, .asm_1146e8
+ call Function1148c2
+ and a
+ jr nz, .asm_1146e4
+ ld hl, $dc03
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ call Function114a7a
+ and a
+ jr nz, .asm_1146e8
+.asm_1146da
+ dec bc
+ dec bc
+ call Function1149cc
+ and a
+ jr nz, .asm_1146e4
+ xor a
+ ret
+
+.asm_1146e4
+ ld b, $83
+ jr .asm_1146f7
+
+.asm_1146e8
+ ld a, [$dc17]
+ and a
+ jr z, .asm_1146f5
+ ld a, $1
+ ld [BigDoll], a
+ jr .asm_1146da
+
+.asm_1146f5
+ ld b, $81
+
+.asm_1146f7
+ ld a, $1
+ ret
+
+; 1146fa
+
+Function1146fa: ; 1146fa
+ call Function114867
+ and a
+ jp nz, .asm_11478a
+ ld hl, $dc03
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ call Function114a18
+ and a
+ jp nz, .asm_11478e
+ call Function1149cc
+ and a
+ jp nz, .asm_11478a
+ ld a, $1
+ ld [$dc0e], a
+ ld a, [$dc00]
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld a, $1
+ ld [RightOrnament], a
+ call Function1147cd
+ and a
+ jp nz, .asm_1147b7
+.asm_114737
+ call Function114843
+ cp $1
+ jr nz, .asm_114749
+ ld a, [$dc17]
+ and a
+ jr z, .asm_114794
+ ld a, $1
+ ld [BigDoll], a
+
+.asm_114749
+ call Function11494d
+ and a
+ jr nz, .asm_11478a
+ ld a, [BigDoll]
+ and a
+ jr nz, .asm_114786
+ ld hl, $dc03
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ call Function1147cd
+ and a
+ jr nz, .asm_1147b7
+ ld a, [$dc0e]
+ cp $3
+ jr nz, .asm_114773
+ dec bc
+ dec bc
+
+.asm_114773
+ call Function1149cc
+ and a
+ jr nz, .asm_11478a
+ ld a, [$dc0d]
+ inc a
+ ld [$dc0d], a
+ ld a, [BigDoll]
+ and a
+ jr z, .asm_114799
+
+.asm_114786
+ ld b, $1
+ jr .asm_1147cb
+
+.asm_11478a
+ ld b, $83
+ jr .asm_114796
+
+.asm_11478e
+ ld a, [$dc17]
+ and a
+ jr nz, .asm_114796
+
+.asm_114794
+ ld b, $81
+
+.asm_114796
+ ld a, $1
+ ret
+
+.asm_114799
+ ld a, [Carpet]
+ and a
+ jr z, .asm_114737
+ jr .asm_1147cb
+
+ ld hl, $dc03
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ call Function114a7a
+ and a
+ jr z, .asm_1147cb
+ xor a
+ ld [BigDoll], a
+
+.asm_1147b7
+ ld a, [$dc17]
+ and a
+ jr z, .asm_114794
+ ld a, $1
+ ld [BigDoll], a
+ ld a, [$dc0d]
+ cp $1
+ jr nz, .asm_114773
+ ld b, $1
+
+.asm_1147cb
+ xor a
+ ret
+
+; 1147cd
+
+Function1147cd: ; 1147cd
+ ld bc, NULL
+ ld a, [RightOrnament]
+ and a
+ jr nz, .asm_11480c
+.asm_1147d6
+ ld a, [de]
+ and a
+ jr z, .asm_11482f
+ inc e
+ call z, Function11483a
+ inc bc
+ cp $d
+ jr nz, .asm_1147d6
+ ld a, [de]
+ cp $a
+ jr nz, .asm_11482f
+.asm_1147e8
+ inc bc
+ inc e
+ call z, Function11483a
+ ld a, [de]
+ cp $20
+ jr z, .asm_114827
+ cp $9
+ jr z, .asm_114827
+ cp $d
+ jr nz, .asm_11482b
+ inc e
+ call z, Function11483a
+ ld a, [de]
+ cp $a
+ jr nz, .asm_11482f
+ inc e
+ call z, Function11483a
+ ld a, h
+ and a
+ jr z, .asm_11480c
+ dec bc
+
+.asm_11480c
+ ld a, [de]
+ cp $2d
+ jr nz, .asm_1147d6
+ inc e
+ call z, Function11483a
+ ld a, [de]
+ cp $2d
+ jr nz, .asm_1147d6
+ inc e
+ call z, Function11483a
+ push bc
+ call Function11463c
+ pop bc
+ and a
+ jr nz, .asm_1147d6
+ ret
+
+.asm_114827
+ ld h, $1
+ jr .asm_1147e8
+
+.asm_11482b
+ ld h, $0
+ jr .asm_11480c
+
+.asm_11482f
+ and a
+ jr nz, .asm_114837
+ ld a, $1
+ ld [$dc17], a
+
+.asm_114837
+ ld a, $1
+ ret
+
+; 11483a
+
+Function11483a: ; 11483a
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ ret
+
+; 114843
+
+Function114843: ; 114843
+ ld a, [$dc00]
+ push af
+ push de
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ call Function114a18
+ and a
+ jr nz, .asm_11485f
+ pop de
+ pop af
+ ld [$dc00], a
+ ld hl, String_114218
+ call Function114acf
+ ret
+
+.asm_11485f
+ pop de
+ pop af
+ ld [$dc00], a
+ ld a, $1
+ ret
+
+; 114867
+
+Function114867: ; 114867
+ ld hl, $dc06
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, $2
+ ld [de], a
+ inc e
+ call z, Function1148b9
+ ld a, $1
+ ld [de], a
+ inc e
+ call z, Function1148b9
+ ld hl, $dc03
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function1148b9
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function1148b9
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function1148b9
+ ld hl, $dc06
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ inc hl
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld d, $5
+.asm_1148a9
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1148b6
+ dec d
+ jr nz, .asm_1148a9
+ ld [hl], b
+ dec hl
+ ld [hl], c
+ xor a
+ ret
+
+.asm_1148b6
+ ld a, $1
+ ret
+
+; 1148b9
+
+Function1148b9: ; 1148b9
+ push bc
+ ld bc, wCurrMapBGEventCount
+ call Function115d80
+ pop bc
+ ret
+
+; 1148c2
+
+Function1148c2: ; 1148c2
+ ld hl, $dc06
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, c
+ ld [de], a
+ inc e
+ call z, Function114944
+ ld a, b
+ ld [de], a
+ inc e
+ call z, Function114944
+ ld a, [$dc0e]
+ ld [de], a
+ inc e
+ call z, Function114944
+ cp $3
+ jr nz, .asm_114904
+ ld hl, Plant
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function114944
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function114944
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function114944
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function114944
+
+.asm_114904
+ ld hl, $dc03
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function114944
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function114944
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function114944
+ ld hl, $dc06
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ inc hl
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, [$dc0e]
+ cp $3
+ jr z, .asm_114932
+ ld d, $6
+ jr .asm_114934
+
+.asm_114932
+ ld d, $a
+
+.asm_114934
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_114941
+ dec d
+ jr nz, .asm_114934
+ ld [hl], b
+ dec hl
+ ld [hl], c
+ xor a
+ ret
+
+.asm_114941
+ ld a, $1
+ ret
+
+; 114944
+
+Function114944: ; 114944
+ push bc
+ ld bc, wCurrMapBGEventCount
+ call Function115d80
+ pop bc
+ ret
+
+; 11494d
+
+Function11494d: ; 11494d
+ ld hl, $dc06
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [$dc0e]
+ ld [de], a
+ inc e
+ call z, Function1149c3
+ cp $3
+ jr nz, .asm_114983
+ ld hl, Plant
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function1149c3
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function1149c3
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function1149c3
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function1149c3
+
+.asm_114983
+ ld hl, $dc03
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function1149c3
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function1149c3
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function1149c3
+ ld hl, $dc06
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ inc hl
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, [$dc0e]
+ cp $3
+ jr z, .asm_1149b1
+ ld d, $4
+ jr .asm_1149b3
+
+.asm_1149b1
+ ld d, $8
+
+.asm_1149b3
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1149c0
+ dec d
+ jr nz, .asm_1149b3
+ ld [hl], b
+ dec hl
+ ld [hl], c
+ xor a
+ ret
+
+.asm_1149c0
+ ld a, $1
+ ret
+
+; 1149c3
+
+Function1149c3: ; 1149c3
+ push bc
+ ld bc, wCurrMapBGEventCount
+ call Function115d80
+ pop bc
+ ret
+
+; 1149cc
+
+Function1149cc: ; 1149cc
+ ld hl, $dc06
+ ld a, [hl]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ push de
+ ld hl, $dc09
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ dec de
+ ld a, d
+ or e
+ jr z, .asm_114a0b
+ dec de
+ ld a, d
+ or e
+ jr z, .asm_114a0b
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ ld hl, wCurrMapSceneScriptCount
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, c
+ ld [de], a
+ inc e
+ call z, Function114a0f
+ ld a, b
+ ld [de], a
+ inc e
+ call z, Function114a0f
+ ld hl, $dc06
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop de
+ xor a
+ ret
+
+.asm_114a0b
+ pop de
+ ld a, $1
+ ret
+
+; 114a0f
+
+Function114a0f: ; 114a0f
+ push bc
+ ld bc, wCurrMapBGEventCount
+ call Function115d80
+ pop bc
+ ret
+
+; 114a18
+
+Function114a18: ; 114a18
+ ld bc, NULL
+ ld h, b
+.asm_114a1c
+ inc bc
+ ld a, [de]
+ and a
+ jr z, .asm_114a66
+ inc e
+ call z, Function114a71
+ cp $d
+ jr nz, .asm_114a1c
+ ld a, [de]
+ cp $a
+ jr nz, .asm_114a66
+.asm_114a2e
+ inc bc
+ inc e
+ call z, Function114a71
+ ld a, [de]
+ cp $20
+ jr z, .asm_114a5e
+ cp $9
+ jr z, .asm_114a5e
+ cp $d
+ jr nz, .asm_114a62
+ inc e
+ call z, Function114a71
+ ld a, [de]
+ cp $a
+ jr nz, .asm_114a66
+ inc e
+ call z, Function114a71
+ ld a, h
+ and a
+ jr z, .asm_114a52
+ dec bc
+
+.asm_114a52
+ ld hl, $dc03
+ ld a, [$dc00]
+ ld [hli], a
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ xor a
+ ret
+
+.asm_114a5e
+ ld h, $1
+ jr .asm_114a2e
+
+.asm_114a62
+ ld h, $0
+ jr .asm_114a1c
+
+.asm_114a66
+ and a
+ jr nz, .asm_114a6e
+ ld a, $1
+ ld [$dc17], a
+
+.asm_114a6e
+ ld a, $1
+ ret
+
+; 114a71
+
+Function114a71: ; 114a71
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ ret
+
+; 114a7a
+
+Function114a7a: ; 114a7a
+ ld bc, NULL
+.asm_114a7d
+ inc bc
+ ld a, [de]
+ and a
+ jr z, .asm_114abb
+ inc e
+ call z, Function114ac6
+ cp $d
+ jr nz, .asm_114a7d
+ ld a, [de]
+ cp $a
+ jr nz, .asm_114abb
+ inc e
+ call z, Function114ac6
+ inc bc
+ ld a, [de]
+ cp $2e
+ jr nz, .asm_114a7d
+ inc e
+ call z, Function114ac6
+ ld a, [de]
+ cp $d
+ jr nz, .asm_114a7d
+ inc e
+ call z, Function114ac6
+ ld a, [de]
+ cp $a
+ jr nz, .asm_114abb
+ inc e
+ call z, Function114ac6
+ ld hl, $dc03
+ ld a, [$dc00]
+ ld [hli], a
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ xor a
+ ret
+
+.asm_114abb
+ and a
+ jr nz, .asm_114ac3
+ ld a, $1
+ ld [$dc17], a
+
+.asm_114ac3
+ ld a, $1
+ ret
+
+; 114ac6
+
+Function114ac6: ; 114ac6
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ ret
+
+; 114acf
+
+Function114acf: ; 114acf
+.asm_114acf
+ push hl
+ push bc
+.asm_114ad1
+ ld a, [hl]
+ ld b, a
+ ld a, [de]
+ inc e
+ call z, Function114b4c
+ cp $61
+ jr c, .asm_114ae2
+ cp $7b
+ jr nc, .asm_114ae2
+ sub $20
+
+.asm_114ae2
+ cp b
+ jr z, .asm_114af4
+ pop bc
+ dec bc
+ push bc
+ ld a, b
+ or c
+ jr nz, .asm_114ad1
+.asm_114aec
+ ld a, $2
+ ld [$dc0e], a
+ pop bc
+ pop hl
+ ret
+
+.asm_114af4
+ inc hl
+.asm_114af5
+ ld a, [hli]
+ and a
+ jr z, .asm_114b19
+ ld b, a
+ ld a, [de]
+ inc e
+ call z, Function114b4c
+ cp $61
+ jr c, .asm_114b09
+ cp $7b
+ jr nc, .asm_114b09
+ sub $20
+
+.asm_114b09
+ cp b
+ jr nz, .asm_114b15
+ pop bc
+ dec bc
+ push bc
+ ld a, b
+ or c
+ jr nz, .asm_114af5
+ jr .asm_114aec
+
+.asm_114b15
+ pop bc
+ pop hl
+ jr .asm_114acf
+
+.asm_114b19
+ ld b, $0
+ ld c, $40
+ ld a, [de]
+ cp $22
+ jr nz, .asm_114b26
+ inc e
+ call z, Function114b4c
+
+.asm_114b26
+ ld hl, Plant
+ ld a, [$dc00]
+ ld [hli], a
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ inc hl
+.asm_114b31
+ ld a, [de]
+ cp $22
+ jr z, .asm_114b42
+ cp $d
+ jr z, .asm_114b42
+ inc e
+ call z, Function114b4c
+ inc b
+ dec c
+ jr nz, .asm_114b31
+
+.asm_114b42
+ ld [hl], b
+ pop bc
+ pop hl
+ ld a, $3
+ ld [$dc0e], a
+ xor a
+ ret
+
+; 114b4c
+
+Function114b4c: ; 114b4c
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ ret
+
+; 114b55
+
+Function114b55: ; 114b55
+ call Function114561
+ ld b, $0
+ ld hl, $dc03
+ ld c, [hl]
+ inc hl
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $dc24
+.asm_114b65
+ push de
+ push bc
+ push hl
+ call Function1143f3
+ cp $2
+ jr z, .asm_114bb2
+ and a
+ jr nz, .asm_114b8c
+ ld a, h
+ pop hl
+ inc hl
+ ld [hld], a
+ ld a, $1
+ ld [hli], a
+ inc hl
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ inc hl
+ ld [hl], c
+ inc hl
+ ld [hl], b
+ inc hl
+.asm_114b82
+ pop bc
+ pop de
+ inc b
+ ld a, b
+ cp $d
+ jr z, .asm_114b96
+ jr .asm_114b65
+
+.asm_114b8c
+ pop hl
+ xor a
+rept NAME_LENGTH_JAPANESE
+ ld [hli], a
+endr
+ jr .asm_114b82
+
+.asm_114b96
+ ld hl, $dc06
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld bc, $004e
+ ld hl, $dc24
+ call Function115d6a
+ jp Function11425c
+
+.asm_114bb2
+ ld a, $1
+ pop bc
+ pop bc
+ pop bc
+ ld b, $82
+ jp Function11425c
+
+; 114bbc
+
+Function114bbc: ; 114bbc
+ ld h, d
+ ld l, e
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ inc hl
+ push hl
+ call Function1143f3
+ cp $2
+ jr z, .asm_114c03
+ and a
+ jr nz, .asm_114bff
+ ld a, h
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ call Function114c0b
+ ld hl, $dc24
+ call Function114c5e
+ ld a, b
+ or c
+ jr z, .asm_114bff
+ pop hl
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld a, [hli]
+ ld e, a
+ ld d, [hl]
+ ld hl, $dc24
+ push bc
+ call Function115d6a
+ pop hl
+ jp Function11425c
+
+.asm_114bff
+ ld b, $84
+ jr .asm_114c05
+
+.asm_114c03
+ ld b, $82
+
+.asm_114c05
+ ld a, $1
+ pop hl
+ jp Function11425c
+
+; 114c0b
+
+Function114c0b: ; 114c0b
+ ld hl, $dc24
+ push bc
+ call Function115d53
+ pop bc
+ ld hl, $dc24
+ ld d, h
+ ld e, l
+.asm_114c18
+ ld a, [hli]
+ cp $d
+ jr z, .asm_114c34
+ ld [de], a
+ inc de
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_114c18
+.asm_114c24
+ xor a
+ ld [de], a
+ ld hl, $dc24
+ ld bc, NULL
+.asm_114c2c
+ ld a, [hli]
+ inc bc
+ and a
+ jr nz, .asm_114c2c
+ dec bc
+ xor a
+ ret
+
+.asm_114c34
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_114c24
+ ld a, [hli]
+ cp $a
+ jr nz, .asm_114c18
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_114c24
+ ld a, [hli]
+ cp $20
+ jr z, .asm_114c4e
+ cp $9
+ jr z, .asm_114c4e
+ jr .asm_114c24
+
+.asm_114c4e
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_114c24
+ jr .asm_114c18
+
+; 114c55
+
+Function114c55: ; 114c55
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ ret
+
+; 114c5e
+
+Function114c5e: ; 114c5e
+ ld de, PartyMon5Defense
+ push hl
+.asm_114c62
+ ld a, [hli]
+ ld [de], a
+ inc de
+ and a
+ jr z, .asm_114cc6
+ cp $3d
+ jr nz, .asm_114c62
+ ld a, [hli]
+ ld [de], a
+ inc de
+ cp $3f
+ jr nz, .asm_114c62
+ dec de
+ dec de
+.asm_114c75
+ ld a, [hli]
+ cp $3f
+ jr nz, .asm_114c75
+ ld a, [hli]
+ cp $42
+ jr nz, .asm_114cb8
+ inc hl
+ ld bc, NULL
+ push hl
+.asm_114c84
+ inc bc
+ ld a, [hli]
+ cp $3f
+ jr nz, .asm_114c84
+ inc bc
+ ld a, [hli]
+ cp $3d
+ jr nz, .asm_114c84
+ dec bc
+ dec bc
+ ld a, l
+ ld [$dc03], a
+ ld a, h
+ ld [$dc04], a
+ pop hl
+ push de
+ call Function115c49
+ pop de
+ ld h, d
+ ld l, e
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+.asm_114ca6
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_114ca6
+ ld a, [$dc03]
+ ld l, a
+ ld a, [$dc04]
+ ld h, a
+ jr .asm_114c62
+
+.asm_114cb8
+ ld a, $3d
+ ld [de], a
+ inc de
+ ld a, $3f
+ ld [de], a
+ inc de
+.asm_114cc0
+ ld a, [hli]
+ ld [de], a
+ inc de
+ and a
+ jr nz, .asm_114cc0
+
+.asm_114cc6
+ ld [de], a
+ pop hl
+ ld de, PartyMon5Defense
+ ld bc, NULL
+.asm_114cce
+ inc bc
+ ld a, [de]
+ ld [hli], a
+ inc de
+ and a
+ jr z, .asm_114cd7
+ jr .asm_114cce
+
+.asm_114cd7
+ dec bc
+ ret
+
+; 114cd9
+
+Function114cd9: ; 114cd9
+ ld h, d
+ ld l, e
+ ld b, [hl]
+ inc hl
+ ld c, [hl]
+ inc hl
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ push hl
+ call Function1143f3
+ and a
+ jr nz, .asm_114d33
+ ld [$dc03], a
+ ld [$dc04], a
+ ld a, h
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld hl, $dc24
+ call Function114d39
+ ld hl, $dc24
+ call Function114d99
+ pop hl
+ push hl
+rept 4
+ inc hl
+endr
+ ld a, [hld]
+ cp b
+ jr c, .asm_114d2d
+ jr z, .asm_114d29
+.asm_114d11
+ pop hl
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld hl, PartyMon5Defense
+ call Function115d6a
+ xor a
+ jp Function11425c
+
+.asm_114d29
+ ld a, [hli]
+ cp c
+ jr nc, .asm_114d11
+
+.asm_114d2d
+ ld b, $83
+ jr .asm_114d33
+
+ ld b, $82
+
+.asm_114d33
+ pop hl
+ ld a, $1
+ jp Function11425c
+
+; 114d39
+
+Function114d39: ; 114d39
+.asm_114d39
+ ld a, [$dc04]
+ and a
+ jr nz, .asm_114d4a
+ ld a, [de]
+ cp $28
+ jr z, .asm_114d55
+ cp $22
+ jr z, .asm_114d55
+ jr .asm_114d7f
+
+.asm_114d4a
+ ld a, [de]
+ cp $29
+ jr z, .asm_114d5f
+ cp $22
+ jr z, .asm_114d6f
+ jr .asm_114d84
+
+.asm_114d55
+ ld [$dc03], a
+ ld a, $1
+ ld [$dc04], a
+ jr .asm_114d84
+
+.asm_114d5f
+ ld a, [$dc03]
+ cp $28
+ jr nz, .asm_114d84
+ xor a
+ ld [$dc03], a
+ ld [$dc04], a
+ jr .asm_114d84
+
+.asm_114d6f
+ ld a, [$dc03]
+ cp $22
+ jr nz, .asm_114d84
+ xor a
+ ld [$dc03], a
+ ld [$dc04], a
+ jr .asm_114d84
+
+.asm_114d7f
+ cp $20
+ jr z, .asm_114d84
+ ld [hli], a
+
+.asm_114d84
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_114d96
+ inc e
+ jr nz, .asm_114d39
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ jr .asm_114d39
+
+.asm_114d96
+ xor a
+ ld [hli], a
+ ret
+
+; 114d99
+
+Function114d99: ; 114d99
+ ld de, PartyMon5Defense
+ xor a
+ ld [de], a
+.asm_114d9e
+ ld a, [hli]
+ call Function114df1
+ and a
+ jr z, .asm_114dde
+ cp $40
+ jr nz, .asm_114d9e
+ dec hl
+.asm_114daa
+ dec hl
+ ld a, [hl]
+ call Function114e2d
+ and a
+ jr z, .asm_114daa
+ inc hl
+ push hl
+ ld b, $0
+.asm_114db6
+ ld a, [hli]
+ cp $40
+ jr z, .asm_114dc1
+ call Function114e2d
+ and a
+ jr nz, .asm_114dc4
+
+.asm_114dc1
+ inc b
+ jr .asm_114db6
+
+.asm_114dc4
+ pop hl
+ ld a, [PartyMon5Defense]
+ and a
+ jr z, .asm_114dd2
+ ld a, $2c
+ inc de
+ ld [de], a
+ ld a, [PartyMon5Defense]
+
+.asm_114dd2
+ inc a
+ ld [PartyMon5Defense], a
+.asm_114dd6
+ inc de
+ ld a, [hli]
+ ld [de], a
+ dec b
+ jr nz, .asm_114dd6
+ jr .asm_114d9e
+
+.asm_114dde
+ inc de
+ xor a
+ ld [de], a
+ ld a, $dd
+ cpl
+ ld h, a
+ ld a, $c8
+ cpl
+ ld l, a
+ inc hl
+ add hl, de
+ ld b, h
+ ld c, l
+ inc bc
+ inc bc
+ xor a
+ ret
+
+; 114df1
+
+Function114df1: ; 114df1
+ cp $1b
+ ret nz
+ ld a, [hli]
+ and a
+ jr z, .asm_114e2b
+ cp $24
+ jr nz, .asm_114e09
+ ld a, [hli]
+ and a
+ jr z, .asm_114e2b
+ cp $42
+ jr z, .asm_114e0b
+ cp $40
+ jr z, .asm_114e0b
+ dec hl
+
+.asm_114e09
+ dec hl
+ ret
+
+.asm_114e0b
+ ld a, [hli]
+ and a
+ jr z, .asm_114e2b
+ cp $1b
+ jr nz, .asm_114e0b
+ ld a, [hli]
+ and a
+ jr z, .asm_114e2b
+ cp $28
+ jr nz, .asm_114e0b
+ ld a, [hli]
+ and a
+ jr z, .asm_114e2b
+ cp $42
+ jr z, .asm_114e29
+ cp $4a
+ jr z, .asm_114e29
+ jr .asm_114e0b
+
+.asm_114e29
+ ld a, [hli]
+ ret
+
+.asm_114e2b
+ xor a
+ ret
+
+; 114e2d
+
+Function114e2d: ; 114e2d
+ cp $30
+ jr c, .asm_114e45
+ cp $40
+ jr c, .asm_114e58
+ cp $41
+ jr c, .asm_114e45
+ cp $5b
+ jr c, .asm_114e58
+ cp $61
+ jr c, .asm_114e45
+ cp $7b
+ jr c, .asm_114e58
+
+.asm_114e45
+ cp $20
+ jr z, .asm_114e58
+ cp $2d
+ jr z, .asm_114e58
+ cp $2e
+ jr z, .asm_114e58
+ cp $5f
+ jr z, .asm_114e58
+.asm_114e55
+ ld a, $1
+ ret
+
+.asm_114e58
+ cp $3c
+ jr z, .asm_114e55
+ cp $3e
+ jr z, .asm_114e55
+ xor a
+ ret
+
+; 114e62
+
+Function114e62: ; 114e62
+ ld a, c
+ and a
+ jr nz, .asm_114e6f
+ ld a, [wStartDay]
+ and a
+ jp z, Function11425c
+ jr .asm_114e76
+
+.asm_114e6f
+ xor a
+ ld [wStartDay], a
+ call Function114ee9
+
+.asm_114e76
+ call Function114f0a
+ cp $ff
+ jp z, Function11425c
+ and a
+ jr nz, .asm_114e99
+ call Function114ea0
+ and a
+ jr nz, .asm_114e99
+ ld hl, $dc09
+ ld a, [hli]
+ cpl
+ ld e, a
+ ld a, [hli]
+ cpl
+ ld d, a
+ inc de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ xor a
+ jp Function11425c
+
+.asm_114e99
+ ld a, $1
+ ld b, $83
+ jp Function11425c
+
+; 114ea0
+
+Function114ea0: ; 114ea0
+ ld hl, $dc06
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, $d
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_114edb
+ inc e
+ call z, Function114ee0
+ ld a, $a
+ ld [de], a
+ dec bc
+ inc e
+ call z, Function114ee0
+ ld hl, $dc06
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld [hl], b
+ xor a
+ ld [wStartDay], a
+ ret
+
+.asm_114edb
+ ld a, $1
+ ld b, $83
+ ret
+
+; 114ee0
+
+Function114ee0: ; 114ee0
+ push bc
+ ld bc, wCurrMapBGEventCount
+ call Function115d80
+ pop bc
+ ret
+
+; 114ee9
+
+Function114ee9: ; 114ee9
+ ld hl, $dc03
+ ld a, b
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld [hli], a
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld c, a
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld b, a
+ ld [hli], a
+ inc de
+ ld a, c
+ ld [hli], a
+ ld a, b
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld [hl], d
+ ret
+
+; 114f0a
+
+Function114f0a: ; 114f0a
+ call Function114f39
+ and a
+ jr nz, .asm_114f26
+ ld a, [$dc03]
+ cp $6
+ jr c, .asm_114f21
+ cp $c
+ jr z, .asm_114f23
+ call Function114f59
+ and a
+ jr nz, .asm_114f23
+
+.asm_114f21
+ xor a
+ ret
+
+.asm_114f23
+ ld a, $1
+ ret
+
+.asm_114f26
+ call Function114f59
+ and a
+ jr nz, .asm_114f23
+ ld hl, $dc0d
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld a, [de]
+ and a
+ jr z, .asm_114f21
+ ld a, $ff
+ ret
+
+; 114f39
+
+Function114f39: ; 114f39
+ ld hl, $dc0d
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld a, [de]
+ and a
+ jr z, .asm_114f58
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld hl, $dc0d
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld a, $1
+ ret
+
+.asm_114f58
+ ret
+
+; 114f59
+
+Function114f59: ; 114f59
+ ld a, [wStartDay]
+ and a
+ jr nz, .asm_114f7c
+ ld a, [$dc03]
+ cp $11
+ jr z, .asm_114fa7
+ add a
+ ld e, a
+ ld d, 0
+ ld hl, Unknown_114011
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ call Function115020
+ and a
+ jr nz, .asm_114fe7
+ ld a, $1
+ ld [wStartDay], a
+
+.asm_114f7c
+ ld a, [$dc03]
+ cp $5
+ jr c, .asm_114fc9
+ jr z, .asm_114fec
+ cp $8
+ jr c, .asm_114fa5
+ jr z, .asm_114ff4
+ cp $b
+ jr c, .asm_114fa5
+ jr z, .asm_114ffc
+ cp $c
+ jr z, .asm_115007
+ cp $d
+ jr z, .asm_114fa5
+ cp $10
+ jr c, .asm_115015
+ jr z, .asm_114fa5
+ cp $12
+ jr c, .asm_114fa5
+ jr .asm_114fe7
+
+.asm_114fa5
+ xor a
+ ret
+
+.asm_114fa7
+ ld hl, Bed
+ ld c, [hl]
+ inc hl
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $dc24
+ call Function115d53
+ ld hl, $dc24
+ call Function115020
+ and a
+ jr nz, .asm_114fe7
+ jr .asm_11501e
+
+.asm_114fc9
+ call Function115062
+ and a
+ jr nz, .asm_114fe7
+ ld a, [$dc04]
+ dec a
+ ld [$dc04], a
+ and a
+ jr z, .asm_114fdf
+ call Function114f39
+ and a
+ jr nz, .asm_114fc9
+
+.asm_114fdf
+ ld a, [$dc05]
+ ld [$dc04], a
+ jr .asm_11501e
+
+.asm_114fe7
+ ld a, $1
+ ld b, $83
+ ret
+
+.asm_114fec
+ call Function115062
+ and a
+ jr nz, .asm_114fe7
+ jr .asm_11501e
+
+.asm_114ff4
+ call Function115179
+ and a
+ jr nz, .asm_114fe7
+ jr .asm_11501e
+
+.asm_114ffc
+ ld hl, String_114000
+ call Function115217
+ and a
+ jr nz, .asm_114fe7
+ jr .asm_11501e
+
+.asm_115007
+ call Function11528f
+ ld hl, $dc24
+ call Function115217
+ and a
+ jr nz, .asm_114fe7
+ jr .asm_11501e
+
+.asm_115015
+ ld hl, String_114000
+ call Function115217
+ and a
+ jr nz, .asm_114fe7
+
+.asm_11501e
+ xor a
+ ret
+
+; 115020
+
+Function115020: ; 115020
+ push hl
+ ld hl, $dc06
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ 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
+.asm_115036
+ ld a, [hli]
+ and a
+ jr z, .asm_115046
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_115056
+ inc e
+ call z, Function115059
+ jr .asm_115036
+
+.asm_115046
+ ld hl, $dc06
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld [hl], b
+ xor a
+ ret
+
+.asm_115056
+ ld a, $1
+ ret
+
+; 115059
+
+Function115059: ; 115059
+ push bc
+ ld bc, wCurrMapBGEventCount
+ call Function115d80
+ pop bc
+ ret
+
+; 115062
+
+Function115062: ; 115062
+ ld hl, Bed
+ ld a, [hli]
+ and a
+ jr z, .asm_1150ae
+ ld c, a
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld b, $0
+ ld hl, $dc24
+ ld a, [wStartDay]
+ cp $1
+ jr z, .asm_11509b
+ cp $2
+ jr z, .asm_115098
+ cp $3
+ jr nz, .asm_1150b2
+ ld a, $2c
+ ld [hli], a
+ ld a, $d
+ ld [hli], a
+ ld a, $a
+ ld [hli], a
+ ld a, $9
+ ld [hli], a
+ jr .asm_11509b
+
+.asm_115098
+ ld a, $2c
+ ld [hli], a
+
+.asm_11509b
+ call Function115d53
+ call Function1150b3
+ call Function115136
+ ld a, [wStartDay]
+ inc a
+ cp $4
+ jr nz, .asm_1150ae
+ ld a, $2
+
+.asm_1150ae
+ ld [wStartDay], a
+ xor a
+
+.asm_1150b2
+ ret
+
+; 1150b3
+
+Function1150b3: ; 1150b3
+ ld hl, $dc24
+ ld de, PartyMon5Defense
+ ld b, $0
+.asm_1150bb
+ ld c, $0
+ ld a, [hli]
+ cp $1b
+ jr z, .asm_1150c9
+ ld [de], a
+ inc de
+ and a
+ jr z, .asm_115133
+ jr .asm_1150bb
+
+.asm_1150c9
+ inc c
+ ld a, [hl]
+ cp $24
+ jr nz, .asm_1150bb
+ inc hl
+ inc c
+ ld a, [hl]
+ cp $42
+ jr z, .asm_1150dc
+ cp $40
+ jr z, .asm_1150dc
+ jr .asm_1150bb
+
+.asm_1150dc
+ push hl
+.asm_1150dd
+ inc c
+ ld a, [hli]
+ and a
+ jr z, .asm_115133
+ cp $1b
+ jr nz, .asm_1150dd
+ inc c
+ ld a, [hli]
+ cp $28
+ jr nz, .asm_1150dd
+ inc c
+ ld a, [hli]
+ cp $42
+ jr z, .asm_1150f8
+ cp $4a
+ jr z, .asm_1150f8
+ jr .asm_1150dd
+
+.asm_1150f8
+ ld a, l
+ ld [Console], a
+ ld a, h
+ ld [LeftOrnament], a
+ ld hl, String_114232
+.asm_115103
+ ld a, [hli]
+ and a
+ jr z, .asm_11510b
+ ld [de], a
+ inc de
+ jr .asm_115103
+
+.asm_11510b
+ pop hl
+ dec hl
+ dec hl
+ push de
+ call Function1158c2
+ pop de
+ ld h, d
+ ld l, e
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ inc hl
+.asm_115119
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_115119
+ ld a, $3f
+ ld [de], a
+ inc de
+ ld a, $3d
+ ld [de], a
+ inc de
+ ld a, [Console]
+ ld l, a
+ ld a, [LeftOrnament]
+ ld h, a
+ jr .asm_1150bb
+
+.asm_115133
+ xor a
+ ld [de], a
+ ret
+
+; 115136
+
+Function115136: ; 115136
+ ld hl, $dc06
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld hl, PartyMon5Defense
+.asm_11514d
+ ld a, [hli]
+ and a
+ jr z, .asm_11515d
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_11516d
+ inc e
+ call z, Function115170
+ jr .asm_11514d
+
+.asm_11515d
+ ld hl, $dc06
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld [hl], b
+ xor a
+ ret
+
+.asm_11516d
+ ld a, $1
+ ret
+
+; 115170
+
+Function115170: ; 115170
+ push bc
+ ld bc, wCurrMapBGEventCount
+ call Function115d80
+ pop bc
+ ret
+
+; 115179
+
+Function115179: ; 115179
+ ld hl, $dc06
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld hl, $013f
+ ld a, [hli]
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1151ef
+ inc e
+ call z, Function11520e
+ ld a, [hli]
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1151ef
+ inc e
+ call z, Function11520e
+ ld a, [hli]
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1151ef
+ inc e
+ call z, Function11520e
+ ld a, [hli]
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1151ef
+ inc e
+ call z, Function11520e
+ ld a, $2d
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1151ef
+ inc e
+ call z, Function11520e
+ ld a, [$014c]
+ ld h, a
+ and $f0
+ swap a
+ cp $a
+ jr nc, .asm_1151d8
+ add $30
+ jr .asm_1151da
+
+.asm_1151d8
+ add $37
+
+.asm_1151da
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1151ef
+ inc e
+ call z, Function11520e
+ ld a, h
+ and $f
+ cp $a
+ jr nc, .asm_1151f2
+ add $30
+ jr .asm_1151f4
+
+.asm_1151ef
+ ld a, $1
+ ret
+
+.asm_1151f2
+ add $37
+
+.asm_1151f4
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_1151ef
+ inc e
+ call z, Function11520e
+ ld hl, $dc06
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld [hl], b
+ xor a
+ ret
+
+; 11520e
+
+Function11520e: ; 11520e
+ push bc
+ ld bc, wCurrMapBGEventCount
+ call Function115d80
+ pop bc
+ ret
+
+; 115217
+
+Function115217: ; 115217
+ push hl
+ ld hl, $dc06
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ 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
+.asm_11522d
+ ld a, [hli]
+ and a
+ jr z, .asm_11523d
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_115262
+ inc e
+ call z, Function115286
+ jr .asm_11522d
+
+.asm_11523d
+ ld a, [$dc03]
+ cp $b
+ jr z, .asm_115278
+ cp $c
+ jr z, .asm_115278
+ cp $e
+ jr z, .asm_115252
+ cp $f
+ jr z, .asm_115265
+ jr .asm_115262
+
+.asm_115252
+ ld hl, $dc06
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld a, d
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld [hl], b
+ xor a
+ ret
+
+.asm_115262
+ ld a, $1
+ ret
+
+.asm_115265
+ ld h, $2
+.asm_115267
+ ld a, $2d
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_115262
+ inc e
+ call z, Function115286
+ dec h
+ jr nz, .asm_115267
+ jr .asm_115252
+
+.asm_115278
+ ld a, $22
+ ld [de], a
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_115262
+ inc e
+ call z, Function115286
+ jr .asm_115252
+
+; 115286
+
+Function115286: ; 115286
+ push bc
+ ld bc, wCurrMapBGEventCount
+ call Function115d80
+ pop bc
+ ret
+
+; 11528f
+
+Function11528f: ; 11528f
+ ld hl, Bed
+ ld c, [hl]
+ inc hl
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld hl, $dc24
+.asm_1152a4
+ ld a, [de]
+ ld [hli], a
+ inc e
+ call z, Function1152af
+ dec c
+ jr nz, .asm_1152a4
+ ld [hl], c
+ ret
+
+; 1152af
+
+Function1152af: ; 1152af
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ ret
+
+; 1152b8
+
+Function1152b8: ; 1152b8
+ push bc
+ call Function11537d
+ push de
+ ld h, d
+ ld l, e
+ ld a, [hli]
+ ld b, a
+ ld c, $1
+ call Function1153d2
+ pop de
+ and a
+ jr nz, .asm_1152f9
+.asm_1152ca
+ ld hl, $dc0d
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+.asm_1152d0
+ ld a, [$dc03]
+ cp $3
+ jr nz, .asm_1152d8
+ push de
+
+.asm_1152d8
+ cp $5
+ jr nz, .asm_1152e7
+ pop hl
+ ld a, [hli]
+ ld b, a
+ ld c, $3
+ call Function1153d2
+ and a
+ jr nz, .asm_1152f9
+
+.asm_1152e7
+ ld a, [de]
+ inc de
+ and a
+ jr nz, .asm_115301
+ ld a, [$dc03]
+ cp $6
+ jr z, .asm_115335
+ inc a
+ ld [$dc03], a
+ jr .asm_1152d0
+
+.asm_1152f9
+ pop hl
+ ld a, $1
+ ld b, $83
+ jp Function11425c
+
+.asm_115301
+ ld hl, $dc0d
+ ld [hl], e
+ inc hl
+ ld [hl], d
+.asm_115307
+ ld [$dc05], a
+ ld a, $1
+ ld [$dc04], a
+ call Function1153b5
+ call Function114f59
+ and a
+ jr nz, .asm_1152f9
+ ld a, [$dc05]
+ dec a
+ jr nz, .asm_115307
+ ld a, [$dc03]
+ inc a
+ ld [$dc03], a
+ call Function114ea0
+ and a
+ jr nz, .asm_1152f9
+ ld [wStartDay], a
+ ld a, [$dc03]
+ cp $6
+ jr nz, .asm_1152ca
+
+.asm_115335
+ call Function1153b5
+ xor a
+ ld [wStartDay], a
+ call Function114f59
+ and a
+ jr nz, .asm_1152f9
+ call Function114ea0
+ and a
+ jr nz, .asm_1152f9
+ ld a, [$dc03]
+ inc a
+ ld [$dc03], a
+ cp $9
+ jr nz, .asm_115335
+ pop bc
+ ld a, b
+ and a
+ jr z, .asm_11536b
+ call Function1153b5
+ xor a
+ ld [wStartDay], a
+ call Function114f59
+ and a
+ jr nz, .asm_1152f9
+ call Function114ea0
+ and a
+ jr nz, .asm_1152f9
+
+.asm_11536b
+ ld hl, $dc09
+ ld a, [hli]
+ cpl
+ ld e, a
+ ld a, [hli]
+ cpl
+ ld d, a
+ inc de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ xor a
+ jp Function11425c
+
+; 11537d
+
+Function11537d: ; 11537d
+ ld hl, $dc06
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ ld b, a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc hl
+ ld a, [de]
+ ld [hld], a
+ ld a, b
+ ld [hli], a
+ inc de
+ ld hl, RightOrnament
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld hl, $dc0d
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ xor a
+ ld [$dc03], a
+ ld [wStartDay], a
+ ret
+
+; 1153b5
+
+Function1153b5: ; 1153b5
+ ld hl, $dc0d
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ inc hl
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hl], a
+ inc de
+ ld a, [de]
+ ld [Bed], a
+ inc de
+ ld hl, $dc0d
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ret
+
+; 1153d2
+
+Function1153d2: ; 1153d2
+ ld a, [$dc03]
+ ld d, a
+ ld a, [$dc04]
+ ld e, a
+ push de
+ xor a
+ ld [$dc03], a
+ ld [$dc04], a
+ ld a, $24
+ ld [Console], a
+ ld a, $dc
+ ld [LeftOrnament], a
+ push bc
+ jr .asm_1153f4
+
+.asm_1153ef
+ ld a, [hli]
+ and a
+ jr z, .asm_115426
+ ld b, a
+
+.asm_1153f4
+ push bc
+.asm_1153f5
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc hl
+ ld c, [hl]
+ inc hl
+ push hl
+ ld a, [Console]
+ ld l, a
+ ld a, [LeftOrnament]
+ ld h, a
+ push bc
+ ld b, $0
+ call Function115d53
+ inc hl
+ ld [hl], a
+ pop bc
+ ld a, l
+ ld e, a
+ ld [Console], a
+ ld a, h
+ ld d, a
+ ld [LeftOrnament], a
+ dec b
+ jr z, .asm_11542b
+ pop hl
+ jr .asm_1153f5
+
+.asm_115426
+ dec c
+ jr nz, .asm_1153ef
+ jr .asm_115430
+
+.asm_11542b
+ pop hl
+ pop bc
+ dec c
+ jr nz, .asm_1153ef
+
+.asm_115430
+ ld a, l
+ ld [Console], a
+ ld a, h
+ ld [LeftOrnament], a
+ xor a
+ ld [de], a
+ ld hl, $dc24
+.asm_11543d
+ ld a, [hli]
+ and a
+ jr nz, .asm_11543d
+ ld a, [hl]
+ and a
+ jr z, .asm_115457
+ dec hl
+ ld a, $2c
+ ld [hli], a
+ jr .asm_11543d
+
+.asm_11544b
+ pop hl
+ ld a, h
+ ld [$dc03], a
+ ld a, l
+ ld [$dc04], a
+ ld a, $1
+ ret
+
+.asm_115457
+ ld hl, $dc24
+ call Function114d99
+ ld hl, $ddc8
+.asm_115460
+ ld a, [hli]
+ and a
+ jr z, .asm_11546d
+ cp $2c
+ jr nz, .asm_115460
+ dec hl
+ xor a
+ ld [hli], a
+ jr .asm_115460
+
+.asm_11546d
+ pop de
+ ld a, e
+ cp $1
+ jr z, .asm_115477
+ xor a
+ ld [hli], a
+ jr .asm_115478
+
+.asm_115477
+ dec bc
+
+.asm_115478
+ ld hl, $dc18
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, b
+ cp h
+ jr c, .asm_11548c
+ jr nz, .asm_11544b
+ ld a, c
+ cp l
+ jr c, .asm_11548c
+ jr z, .asm_11548c
+ jr .asm_11544b
+
+.asm_11548c
+ ld hl, $dc18
+ ld a, c
+ cpl
+ ld e, a
+ ld a, b
+ cpl
+ ld d, a
+ inc de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ ld de, $dc18
+ ld a, l
+ ld [de], a
+ inc de
+ ld a, h
+ ld [de], a
+ ld hl, RightOrnament
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $ddc8
+ call Function115d6a
+ ld hl, RightOrnament
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld a, [Console]
+ ld e, a
+ ld a, [LeftOrnament]
+ ld d, a
+ pop hl
+ ld a, h
+ ld [$dc03], a
+ ld a, l
+ ld [$dc04], a
+ xor a
+ ret
+
+; 1154d4
+
+Function1154d4: ; 1154d4
+ xor a
+ ld [wStartDay], a
+ call Function1155af
+ call Function11560a
+ and a
+ jr nz, .asm_11552c
+ call Function1155d1
+ ld a, [RightOrnament]
+ dec a
+ ld [RightOrnament], a
+ and a
+ jp z, .asm_115577
+ cp $1
+ jr nz, .asm_115531
+ xor a
+ ld [wDailyResetTimer], a
+.asm_1154f7
+ ld a, [BigDoll]
+ cp $2
+ jr z, .asm_115502
+ cp $3
+ jr z, .asm_11550f
+
+.asm_115502
+ ld a, $a
+ ld [$dc03], a
+ call Function114f59
+ and a
+ jr z, .asm_11551a
+ jr .asm_11552c
+
+.asm_11550f
+ ld a, $c
+ ld [$dc03], a
+ call Function114f59
+ and a
+ jr nz, .asm_11552c
+
+.asm_11551a
+ call Function114ea0
+ and a
+ jr nz, .asm_11552c
+ call Function114ea0
+ and a
+ jr nz, .asm_11552c
+ call Function11560a
+ and a
+ jr z, .asm_1155a0
+
+.asm_11552c
+ ld a, $1
+ jp Function11425c
+
+.asm_115531
+ ld a, $1
+ ld [wDailyResetTimer], a
+ ld a, $b
+ ld [$dc03], a
+ call Function114f59
+ and a
+ jr nz, .asm_11552c
+ call Function114ea0
+ and a
+ jr nz, .asm_11552c
+.asm_115547
+ call Function114ea0
+ and a
+ jr nz, .asm_11552c
+ ld a, $e
+ ld [$dc03], a
+ call Function114f59
+ and a
+ jr nz, .asm_11552c
+ call Function114ea0
+ and a
+ jr nz, .asm_11552c
+ jr .asm_1154f7
+
+.asm_115560
+ call Function114ea0
+ and a
+ jr nz, .asm_11552c
+ ld a, [wDailyResetTimer]
+ and a
+ jr z, .asm_11557d
+ ld a, $f
+ ld [$dc03], a
+ call Function114f59
+ and a
+ jr nz, .asm_11552c
+
+.asm_115577
+ call Function114ea0
+ and a
+ jr nz, .asm_11552c
+
+.asm_11557d
+ ld a, $10
+ ld [$dc03], a
+ call Function114f59
+ and a
+ jr nz, .asm_11552c
+ call Function114ea0
+ and a
+ jr nz, .asm_11552c
+ ld hl, $dc09
+ ld a, [hli]
+ cpl
+ ld e, a
+ ld a, [hli]
+ cpl
+ ld d, a
+ inc de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ xor a
+ jp Function11425c
+
+.asm_1155a0
+ ld a, [RightOrnament]
+ dec a
+ ld [RightOrnament], a
+ and a
+ jr z, .asm_115560
+ call Function1155d1
+ jr .asm_115547
+
+; 1155af
+
+Function1155af: ; 1155af
+ ld hl, $dc06
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ ld b, a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ ld [hl], b
+ inc hl
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [RightOrnament], a
+ inc de
+ ld a, e
+ ld [hli], a
+ ld [hl], d
+ call Function1155d1
+ ret
+
+; 1155d1
+
+Function1155d1: ; 1155d1
+ ld a, [$dc0d]
+ ld l, a
+ ld a, [$dc0e]
+ ld h, a
+ ld a, [hli]
+ ld [BigDoll], a
+ cp $3
+ jr nz, .asm_1155f0
+ ld de, Carpet
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ ld a, [hli]
+ ld [Bed], a
+
+.asm_1155f0
+ ld de, $dc17
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ ld a, l
+ ld [$dc0d], a
+ ld a, h
+ ld [$dc0e], a
+ ret
+
+; 11560a
+
+Function11560a: ; 11560a
+ ld a, [$dc06]
+ ld [wCurrMapBGEventCount], a
+ ld a, [$dc17]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld hl, $dc1a
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, [wCurrMapCallbackCount]
+ cp b
+ jp c, .asm_1156b1
+ jr nz, .asm_115631
+ ld a, [$dc09]
+ cp c
+ jp c, .asm_1156b1
+
+.asm_115631
+ ld a, b
+ or c
+ jr z, .asm_1156a9
+ ld a, [$dc09]
+ ld l, a
+ ld a, [wCurrMapCallbackCount]
+ ld h, a
+ ld a, c
+ cpl
+ ld e, a
+ ld a, b
+ cpl
+ ld d, a
+ inc de
+ add hl, de
+ ld a, l
+ ld [$dc09], a
+ ld a, h
+ ld [wCurrMapCallbackCount], a
+.asm_11564d
+ ld a, $3
+ cp b
+ jr c, .asm_1156b6
+ jr nz, .asm_115659
+ ld a, $db
+ cp c
+ jr c, .asm_1156b6
+
+.asm_115659
+ ld a, [$dc1a]
+ ld e, a
+ ld a, [$dc1b]
+ ld d, a
+ ld a, c
+ cpl
+ ld l, a
+ ld a, b
+ cpl
+ ld h, a
+ inc hl
+ add hl, de
+ ld a, l
+ ld [$dc1a], a
+ ld a, h
+ ld [$dc1b], a
+ push bc
+ ld hl, $dc18
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $dc24
+ call Function115d53
+ ld hl, $dc18
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ pop bc
+ ld a, [wCurrMapBGEventCount]
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld hl, wCurrMapSceneScriptCount
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $dc24
+ call Function115d6a
+ ld hl, wCurrMapSceneScriptCount
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $dc1a
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ ld a, b
+ or c
+ jr nz, .asm_11564d
+
+.asm_1156a9
+ ld a, [wCurrMapBGEventCount]
+ ld [$dc06], a
+ xor a
+ ret
+
+.asm_1156b1
+ ld a, $1
+ ld b, $83
+ ret
+
+.asm_1156b6
+ ld a, $3
+ cpl
+ ld h, a
+ ld a, $db
+ cpl
+ ld l, a
+ add hl, bc
+ ld de, $dc1a
+ ld a, l
+ ld [de], a
+ inc de
+ ld a, h
+ ld [de], a
+ ld bc, $03db
+ jr .asm_115659
+
+; 1156cc
+
+Function1156cc: ; 1156cc
+ ld a, [wStartDay]
+ and a
+ jp z, Function11425c
+ cp $2
+ jr z, .asm_1156fa
+ cp $3
+ jr z, .asm_1156fd
+ cp $4
+ jr z, .asm_1156fd
+ cp $5
+ jr z, .asm_115716
+ cp $ff
+ jr z, .asm_11572b
+ cp $1
+ jp nz, Function11425c
+ call Function115732
+ call Function11575c
+ ld a, h
+ ld [Poster], a
+ ld a, l
+ ld [Plant], a
+
+.asm_1156fa
+ call Function1157d0
+
+.asm_1156fd
+ call Function11581e
+ and a
+ jr nz, .asm_11572b
+ ld a, [wStartDay]
+ cp $5
+ jr z, .asm_115716
+ ld a, [Poster]
+ ld h, a
+ ld a, [Plant]
+ ld l, a
+ xor a
+ jp Function11425c
+
+.asm_115716
+ ld hl, wCurrMapCallbackCount
+ ld a, [hli]
+ cpl
+ ld e, a
+ ld a, [hli]
+ cpl
+ ld d, a
+ inc de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ xor a
+ ld [wStartDay], a
+ jp Function11425c
+
+.asm_11572b
+ ld a, $1
+ ld b, $83
+ jp Function11425c
+
+; 115732
+
+Function115732: ; 115732
+ ld hl, $dc02
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ dec de
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hli], a
+ ld a, c
+ ld [hli], a
+ ld [hl], b
+ ret
+
+; 11575c
+
+Function11575c: ; 11575c
+ ld hl, $dc05
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld e, $10
+ ld b, $0
+ ld c, b
+ ld d, b
+ ld a, $3
+.asm_11576a
+ rl l
+ rl h
+ rl d
+ cp d
+ jr c, .asm_11577c
+ rl c
+ rl b
+ dec e
+ jr nz, .asm_11576a
+ jr .asm_11578a
+
+.asm_11577c
+ ld a, d
+ sub $3
+ ld d, a
+ ld a, $3
+ scf
+ rl c
+ rl b
+ dec e
+ jr nz, .asm_11576a
+
+.asm_11578a
+ ld a, d
+ and a
+ jr z, .asm_11578f
+ inc bc
+
+.asm_11578f
+ sla c
+ rl b
+ sla c
+ rl b
+ ld h, b
+ ld l, c
+ push hl
+ ld e, $10
+ ld b, $0
+ ld c, b
+ ld d, b
+ ld a, $40
+.asm_1157a2
+ rl l
+ rl h
+ rl d
+ cp d
+ jr c, .asm_1157b4
+ rl c
+ rl b
+ dec e
+ jr nz, .asm_1157a2
+ jr .asm_1157c3
+
+.asm_1157b4
+ ld a, d
+ sub $40
+ ld d, a
+ ld a, $40
+ scf
+ rl c
+ rl b
+ dec e
+ jr nz, .asm_1157a2
+ inc bc
+
+.asm_1157c3
+ and a
+ sla c
+ rl b
+ pop hl
+ add hl, bc
+ ld a, $2
+ ld [wStartDay], a
+ ret
+
+; 1157d0
+
+Function1157d0: ; 1157d0
+ ld hl, $dc05
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$dc0e]
+ ld c, a
+ ld a, [Bed]
+ ld b, a
+ cp h
+ jr c, .asm_1157eb
+ jr nz, .asm_1157e9
+ ld a, c
+ cp l
+ jr c, .asm_1157eb
+ jr z, .asm_1157eb
+
+.asm_1157e9
+ ld b, h
+ ld c, l
+
+.asm_1157eb
+ push bc
+ ld a, b
+ cpl
+ ld b, a
+ ld a, c
+ cpl
+ ld c, a
+ inc bc
+ add hl, bc
+ ld a, l
+ ld [$dc05], a
+ ld a, h
+ ld [$dc06], a
+ ld a, h
+ or l
+ jr nz, .asm_11580f
+ pop bc
+ ld a, c
+ ld [$dc0e], a
+ ld a, b
+ ld [Bed], a
+ ld a, $4
+ ld [wStartDay], a
+ ret
+
+.asm_11580f
+ pop bc
+ ld a, c
+ ld [$dc0e], a
+ ld a, b
+ ld [Bed], a
+ ld a, $3
+ ld [wStartDay], a
+ ret
+
+; 11581e
+
+Function11581e: ; 11581e
+ ld a, [wStartDay]
+ and a
+ ret z
+ ld a, [$dc0e]
+ ld c, a
+ ld a, [Bed]
+ ld b, a
+ ld hl, $dc02
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $dc24
+ push bc
+ call Function115d53
+ pop bc
+ ld hl, $dc02
+ ld a, [$dc00]
+ ld [hli], a
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, $dc24
+ ld de, PartyMon5Defense
+ call Function1158c2
+ ld hl, PartyMon5Defense
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ inc hl
+ push hl
+ ld a, [wCurrMapCallbackCount]
+ ld l, a
+ ld a, [wCurrMapCallbackHeaderPointer]
+ ld h, a
+ cp b
+ jr c, .asm_1158bb
+ jr nz, .asm_11586e
+ ld a, l
+ cp c
+ jr c, .asm_1158bb
+
+.asm_11586e
+ push bc
+ ld a, b
+ cpl
+ ld b, a
+ ld a, c
+ cpl
+ ld c, a
+ inc bc
+ add hl, bc
+ ld a, l
+ ld [wCurrMapCallbackCount], a
+ ld a, h
+ ld [wCurrMapCallbackHeaderPointer], a
+ pop bc
+ pop hl
+ ld hl, wCurrMapSceneScriptCount
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, PartyMon5Speed
+ call Function115d6a
+ ld hl, wCurrMapSceneScriptCount
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld [hl], d
+ ld a, [wStartDay]
+ cp $3
+ jr z, .asm_1158b4
+ cp $4
+ jr z, .asm_1158ad
+ jr .asm_1158bc
+
+.asm_1158ad
+ ld a, $5
+ ld [wStartDay], a
+ jr .asm_1158b9
+
+.asm_1158b4
+ ld a, $2
+ ld [wStartDay], a
+
+.asm_1158b9
+ xor a
+ ret
+
+.asm_1158bb
+ pop hl
+
+.asm_1158bc
+ ld a, $ff
+ ld [wStartDay], a
+ ret
+
+; 1158c2
+
+Function1158c2: ; 1158c2
+ ld a, e
+ ld [SwarmFlags], a
+ ld a, d
+ ld [$dc21], a
+ xor a
+ ld [$dc22], a
+ xor a
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+ ld a, c
+ ld [$dc19], a
+ ld a, b
+ ld [$dc1a], a
+ ld c, e
+ ld b, d
+ ld e, l
+ ld d, h
+ ld l, c
+ ld h, b
+ xor a
+ ld [WeeklyFlags], a
+
+.asm_1158e5
+ ld b, $3
+ push hl
+ ld hl, $dc1b
+.asm_1158eb
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec b
+ jr nz, .asm_1158eb
+ ld a, [$dc19]
+ ld c, a
+ ld a, [$dc1a]
+ ld b, a
+ xor a
+ or b
+ jr nz, .asm_115914
+ ld a, $2
+ cp c
+ jr c, .asm_115914
+ push hl
+ dec hl
+ ld a, c
+ ld [WeeklyFlags], a
+.asm_115908
+ xor a
+ ld [hld], a
+ inc c
+ ld a, $3
+ cp c
+ jr nz, .asm_115908
+ pop hl
+ ld bc, $0003
+
+.asm_115914
+ dec bc
+ dec bc
+ dec bc
+ ld a, c
+ ld [$dc19], a
+ ld a, b
+ ld [$dc1a], a
+ push de
+ push hl
+ ld hl, SwarmFlags
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+rept 4
+ inc de
+endr
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ pop hl
+ dec hl
+ ld c, [hl]
+ dec hl
+ ld b, [hl]
+ dec hl
+ ld a, [hl]
+ ld d, a
+ srl a
+ srl a
+ ld [hli], a
+ ld a, $3
+ and d
+ ld d, a
+ ld a, $f0
+ and b
+ or d
+ swap a
+ ld [hli], a
+ ld a, $f
+ and b
+ ld d, a
+ ld a, c
+ and $c0
+ or d
+ rlca
+ rlca
+ ld [hli], a
+ ld a, $3f
+ and c
+ ld [hld], a
+ dec hl
+ dec hl
+ pop de
+ ld b, h
+ ld c, l
+ pop hl
+ ld a, [bc]
+ inc bc
+ call Function1159dc
+ ld [hli], a
+ ld a, [bc]
+ inc bc
+ call Function1159dc
+ ld [hli], a
+ ld a, [bc]
+ inc bc
+ call Function1159dc
+ ld [hli], a
+ ld a, [bc]
+ inc bc
+ call Function1159dc
+ ld [hli], a
+ ld a, [$dc22]
+ inc a
+ cp $10
+ jr nz, .asm_1159b1
+ push af
+ push bc
+ ld a, [$dc19]
+ ld b, a
+ ld a, [$dc1a]
+ or b
+ jr nz, .asm_115998
+ ld a, [$dc05]
+ ld b, a
+ ld a, [$dc06]
+ or b
+ jr nz, .asm_115998
+ pop bc
+ pop af
+ jr .asm_1159c4
+
+.asm_115998
+ pop bc
+ pop af
+ ld a, $d
+ ld [hli], a
+ ld a, $a
+ ld [hli], a
+ push hl
+ ld hl, SwarmFlags
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [hli]
+ ld c, a
+ ld b, [hl]
+ inc bc
+ inc bc
+ ld a, b
+ ld [hld], a
+ ld [hl], c
+ pop hl
+ xor a
+
+.asm_1159b1
+ ld [$dc22], a
+ ld a, [$dc19]
+ cp $0
+ jp nz, .asm_1158e5
+ ld a, [$dc1a]
+ cp $0
+ jp nz, .asm_1158e5
+
+.asm_1159c4
+ ld a, [WeeklyFlags]
+ cp $0
+ jr z, .asm_1159d8
+ push hl
+ dec hl
+ ld b, a
+.asm_1159ce
+ ld a, $3d
+ ld [hld], a
+ inc b
+ ld a, $3
+ cp b
+ jr nz, .asm_1159ce
+ pop hl
+
+.asm_1159d8
+ ld a, $0
+ ld [hl], a
+ ret
+
+; 1159dc
+
+Function1159dc: ; 1159dc
+ cp $1a
+ jr c, .asm_1159ef
+ cp $34
+ jr c, .asm_1159f2
+ cp $3e
+ jr c, .asm_1159f5
+ cp $3e
+ jr z, .asm_1159f8
+ ld a, $2f
+ ret
+
+.asm_1159ef
+ add $41
+ ret
+
+.asm_1159f2
+ add $47
+ ret
+
+.asm_1159f5
+ sub $4
+ ret
+
+.asm_1159f8
+ ld a, $2b
+ ret
+
+; 1159fb
+
+Function1159fb: ; 1159fb
+ ld a, [wStartDay]
+ and a
+ jp z, Function11425c
+ cp $2
+ jr z, .asm_115a29
+ cp $3
+ jr z, .asm_115a2c
+ cp $4
+ jr z, .asm_115a2c
+ cp $5
+ jr z, .asm_115a45
+ cp $ff
+ jr z, .asm_115a5a
+ cp $1
+ jp nz, Function11425c
+ call Function115732
+ call Function115a5f
+ ld a, h
+ ld [Plant], a
+ ld a, l
+ ld [Poster], a
+
+.asm_115a29
+ call Function115ab0
+
+.asm_115a2c
+ call Function115b00
+ and a
+ jr nz, .asm_115a5a
+ ld a, [wStartDay]
+ cp $5
+ jr z, .asm_115a45
+ ld a, [Poster]
+ ld h, a
+ ld a, [Plant]
+ ld l, a
+ xor a
+ jp Function11425c
+
+.asm_115a45
+ ld hl, wCurrMapCallbackCount
+ ld a, [hli]
+ cpl
+ ld e, a
+ ld a, [hli]
+ cpl
+ ld d, a
+ inc de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ add hl, de
+ xor a
+ ld [wStartDay], a
+ jp Function11425c
+
+.asm_115a5a
+ ld a, $1
+ jp Function11425c
+
+; 115a5f
+
+Function115a5f: ; 115a5f
+ ld hl, $dc05
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ push hl
+ ld e, $10
+ ld b, $0
+ ld c, b
+ ld d, b
+ ld a, $42
+.asm_115a6e
+ rl l
+ rl h
+ rl d
+ cp d
+ jr c, .asm_115a80
+ rl c
+ rl b
+ dec e
+ jr nz, .asm_115a6e
+ jr .asm_115a8e
+
+.asm_115a80
+ ld a, d
+ sub $42
+ ld d, a
+ ld a, $42
+ scf
+ rl c
+ rl b
+ dec e
+ jr nz, .asm_115a6e
+
+.asm_115a8e
+ sla c
+ rl b
+ pop hl
+ ld a, b
+ cpl
+ ld b, a
+ ld a, c
+ cpl
+ ld c, a
+ inc bc
+ add hl, bc
+ srl h
+ rr l
+ srl h
+ rr l
+ ld b, h
+ ld c, l
+ sla c
+ rl b
+ add hl, bc
+ ld a, $2
+ ld [wStartDay], a
+ ret
+
+; 115ab0
+
+Function115ab0: ; 115ab0
+ ld hl, $dc05
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld a, [$dc0e]
+ ld c, a
+ ld a, [Bed]
+ ld b, a
+ cp h
+ jr c, .asm_115acb
+ jr nz, .asm_115ac9
+ ld a, c
+ cp l
+ jr c, .asm_115acb
+ jr z, .asm_115acb
+
+.asm_115ac9
+ ld b, h
+ ld c, l
+
+.asm_115acb
+ push bc
+ ld a, b
+ cpl
+ ld b, a
+ ld a, c
+ cpl
+ ld c, a
+ inc bc
+ add hl, bc
+ ld a, l
+ ld [$dc05], a
+ ld a, h
+ ld [$dc06], a
+ ld a, h
+ or l
+ jr nz, .asm_115af0
+ pop bc
+ ld a, c
+ ld [$dc0e], a
+ ld a, b
+ ld [Bed], a
+ ld a, $4
+ ld [wStartDay], a
+ xor a
+ ret
+
+.asm_115af0
+ pop bc
+ ld a, c
+ ld [$dc0e], a
+ ld a, b
+ ld [Bed], a
+ ld a, $3
+ ld [wStartDay], a
+ xor a
+ ret
+
+; 115b00
+
+Function115b00: ; 115b00
+ ld a, [wStartDay]
+ and a
+ ret z
+ ld a, [$dc0e]
+ ld c, a
+ ld a, [Bed]
+ ld b, a
+ ld hl, $dc02
+ ld a, [hli]
+ ld [$dc00], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, PartyMon5Defense
+ push bc
+ call Function115bc8
+ pop hl
+ and a
+ jr z, .asm_115b43
+ cp $2
+ jr z, .asm_115b3b
+ ld a, [wStartDay]
+ cp $4
+ jr z, .asm_115b43
+ inc hl
+ inc hl
+ jr .asm_115b43
+
+.asm_115b36
+ pop hl
+ ld b, $83
+ jr .asm_115b3d
+
+.asm_115b3b
+ ld b, $81
+
+.asm_115b3d
+ ld a, $ff
+ ld [wStartDay], a
+ ret
+
+.asm_115b43
+ ld a, [Carpet]
+ add a
+ cpl
+ ld c, a
+ ld b, $ff
+ inc bc
+ add hl, bc
+ ld b, h
+ ld c, l
+ ld hl, $dc02
+ ld a, [$dc00]
+ ld [hli], a
+ ld [hl], e
+ inc hl
+ ld [hl], d
+ ld hl, PartyMon5Defense
+ ld de, $dc24
+ call Function115c49
+ ld hl, $dc24
+ ld c, [hl]
+ inc hl
+ ld b, [hl]
+ inc hl
+ push hl
+ ld a, [wCurrMapCallbackCount]
+ ld l, a
+ ld a, [wCurrMapCallbackHeaderPointer]
+ ld h, a
+ cp b
+ jr c, .asm_115b36
+ jr nz, .asm_115b7b
+ ld a, l
+ cp c
+ jr c, .asm_115b36
+
+.asm_115b7b
+ push bc
+ ld a, b
+ cpl
+ ld b, a
+ ld a, c
+ cpl
+ ld c, a
+ inc bc
+ add hl, bc
+ ld a, l
+ ld [wCurrMapCallbackCount], a
+ ld a, h
+ ld [wCurrMapCallbackHeaderPointer], a
+ pop bc
+ pop hl
+ ld hl, wCurrMapSceneScriptCount
+ ld a, [hli]
+ ld [wCurrMapBGEventCount], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld hl, $dc26
+ call Function115d6a
+ ld hl, wCurrMapSceneScriptCount
+ ld a, [wCurrMapBGEventCount]
+ ld [hli], a
+ ld a, e
+ ld [hli], a
+ ld [hl], d
+ ld a, [wStartDay]
+ cp $3
+ jr z, .asm_115bc1
+ cp $4
+ jr z, .asm_115bba
+ jr .asm_115b3b
+
+.asm_115bba
+ ld a, $5
+ ld [wStartDay], a
+ jr .asm_115bc6
+
+.asm_115bc1
+ ld a, $2
+ ld [wStartDay], a
+
+.asm_115bc6
+ xor a
+ ret
+
+; 115bc8
+
+Function115bc8: ; 115bc8
+ xor a
+ ld [Carpet], a
+.asm_115bcc
+ ld a, [de]
+ ld [hli], a
+ inc e
+ call z, .Function115c3d
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_115c46
+ ld a, [de]
+ ld [hli], a
+ inc e
+ call z, .Function115c3d
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_115c1b
+ ld a, [de]
+ ld [hli], a
+ inc e
+ call z, .Function115c3d
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_115c46
+ ld a, [de]
+ ld [hli], a
+ inc e
+ call z, .Function115c3d
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_115c3a
+ ld a, [de]
+ cp $d
+ jr nz, .asm_115bcc
+ inc e
+ call z, .Function115c3d
+ ld a, [de]
+ cp $a
+ jr nz, .asm_115c46
+ inc e
+ call z, .Function115c3d
+ dec bc
+ ld a, b
+ or c
+ jr z, .asm_115c46
+ ld a, [Carpet]
+ inc a
+ ld [Carpet], a
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_115bcc
+
+.asm_115c1b
+ ld a, [wStartDay]
+ cp $4
+ jr z, .asm_115c33
+ ld a, [de]
+ ld [hli], a
+ inc e
+ call z, .Function115c3d
+ ld a, [de]
+ ld [hli], a
+ inc e
+ call z, .Function115c3d
+ xor a
+ ld [hl], a
+ ld a, $1
+ ret
+
+.asm_115c33
+ dec hl
+ dec hl
+ xor a
+ ld [hl], a
+ ld a, $1
+ ret
+
+.asm_115c3a
+ xor a
+ ld [hl], a
+ ret
+
+.Function115c3d:
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ ret
+
+.asm_115c46
+ ld a, $2
+ ret
+
+; 115c49
+
+Function115c49: ; 115c49
+ ld a, e
+ ld [WeeklyFlags], a
+ ld a, d
+ ld [SwarmFlags], a
+ xor a
+ ld [de], a
+ inc de
+ ld [de], a
+ inc de
+
+ ld a, c
+ ld [$dc19], a
+ ld a, b
+ ld [$dc1a], a
+ ld c, e
+ ld b, d
+ ld e, l
+ ld d, h
+ ld l, c
+ ld h, b
+
+.asm_115c64
+ ld a, [$dc1a]
+ or a
+ jr nz, .asm_115c71
+ ld a, [$dc19]
+ cp $4
+ jr c, .asm_115c99
+
+.asm_115c71
+ ld b, $4
+ push hl
+ ld hl, $dc1b
+.asm_115c77
+ ld a, [de]
+ inc de
+ call Function115cfd
+ ld [hli], a
+ dec b
+ jr nz, .asm_115c77
+ ld a, [$dc19]
+ ld c, a
+ ld a, [$dc1a]
+ ld b, a
+rept 4
+ dec bc
+endr
+.asm_115c8c
+ ld a, [de]
+ cp $d
+ jr z, .asm_115c95
+ cp $a
+ jr nz, .asm_115c9f
+
+.asm_115c95
+ inc de
+ dec bc
+ jr .asm_115c8c
+
+.asm_115c99
+ ld a, $ff
+ ld [wStartDay], a
+ ret
+
+.asm_115c9f
+ ld a, c
+ ld [$dc19], a
+ ld a, b
+ ld [$dc1a], a
+ push de
+ push hl
+ ld hl, WeeklyFlags
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ inc de
+ inc de
+ inc de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ pop hl
+ dec hl
+ ld d, [hl]
+ dec hl
+ ld c, [hl]
+ dec hl
+ ld b, [hl]
+ dec hl
+ ld a, [hl]
+ sla b
+ sla b
+ sla b
+ rla
+ sla b
+ rla
+ ld [hli], a
+ ld [hl], b
+ inc hl
+ rrc c
+ rrc c
+ ld [hl], c
+ dec hl
+ ld a, $f
+ and c
+ or [hl]
+ ld [hli], a
+ ld a, [hli]
+ and $c0
+ or [hl]
+ dec hl
+ ld [hld], a
+ dec hl
+ pop de
+ ld b, h
+ ld c, l
+ pop hl
+ ld a, [bc]
+ ld [hli], a
+ inc bc
+ ld a, [bc]
+ ld [hli], a
+ inc bc
+ ld a, [bc]
+ ld [hli], a
+ ld a, [$dc19]
+ cp $0
+ jp nz, .asm_115c64
+ ld a, [$dc1a]
+ cp $0
+ jp nz, .asm_115c64
+ ret
+
+; 115cfd
+
+Function115cfd: ; 115cfd
+ cp $2b
+ jr c, .asm_115d27
+ jr z, .asm_115d2f
+ cp $2f
+ jr c, .asm_115d27
+ jr z, .asm_115d32
+ cp $30
+ jr c, .asm_115d27
+ cp $3a
+ jr c, .asm_115d35
+ cp $3d
+ jr c, .asm_115d27
+ jr z, .asm_115d38
+ cp $41
+ jr c, .asm_115d27
+ cp $5b
+ jr c, .asm_115d4d
+ cp $61
+ jr c, .asm_115d27
+ cp $7b
+ jr c, .asm_115d50
+
+.asm_115d27
+ pop hl
+ pop hl
+ ld a, $ff
+ ld [wStartDay], a
+ ret
+
+.asm_115d2f
+ ld a, $3e
+ ret
+
+.asm_115d32
+ ld a, $3f
+ ret
+
+.asm_115d35
+ add $4
+ ret
+
+.asm_115d38
+ push de
+ push hl
+ ld a, [WeeklyFlags]
+ ld l, a
+ ld a, [SwarmFlags]
+ ld h, a
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ dec de
+ ld [hl], d
+ dec hl
+ ld [hl], e
+ pop hl
+ pop de
+ xor a
+ ret
+
+.asm_115d4d
+ sub $41
+ ret
+
+.asm_115d50
+ sub $47
+ ret
+
+; 115d53
+
+Function115d53: ; 115d53
+.asm_115d53
+ ld a, [de]
+ ld [hli], a
+ inc e
+ call z, Function115d61
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_115d53
+ xor a
+ ld [hl], a
+ ret
+
+; 115d61
+
+Function115d61: ; 115d61
+ push bc
+ ld bc, $dc00
+ call Function115d80
+ pop bc
+ ret
+
+; 115d6a
+
+Function115d6a: ; 115d6a
+.asm_115d6a
+ ld a, [hli]
+ ld [de], a
+ inc e
+ call z, Function115d77
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_115d6a
+ xor a
+ ret
+
+; 115d77
+
+Function115d77: ; 115d77
+ push bc
+ ld bc, wCurrMapBGEventCount
+ call Function115d80
+ pop bc
+ ret
+
+; 115d80
+
+Function115d80: ; 115d80
+ ld e, a
+ ld a, d
+ cp $bf
+ jr z, .asm_115d8b
+ inc d
+ ld a, e
+ ld e, $0
+ ret
+
+.asm_115d8b
+ ld a, [bc]
+ inc a
+ ld [bc], a
+ ld [hFF8C], a
+ ld [MBC3SRamBank], a
+ ld a, e
+ ld d, $a0
+ ld e, $0
+ ret
+
+; 115d99
+
+INCLUDE "mobile/mobile_45_sprite_engine.asm"
+
+; 116567
+
+Function116567: ; 116567
+ ld hl, wc3f7
+ dec [hl]
+ ret nz
+ ld hl, wc3f6
+ inc [hl]
+.asm_116570
+ ld a, $7
+ sla a
+ ld c, a
+ ld b, 0
+ ld hl, Unknown_1167eb
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ push de
+ pop hl
+ ld a, [wc3f6]
+ sla a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hli]
+ cp $fe
+ jr nz, .asm_116595
+ xor a
+ ld [wc3f6], a
+ jr .asm_116570
+
+.asm_116595
+ ld [wc3f5], a
+ ld a, [hl]
+ ld [wc3f7], a
+ ret
+
+; 11659d
+
+Function11659d: ; 11659d
+ ld a, [wc314]
+ cp $12
+ ret nc
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_1165af
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+; 1165af
+
+Jumptable_1165af: ; 1165af
+ dw Function11677e
+ dw Function1165d5
+ dw Function1165d8
+ dw Function1165e3
+ dw Function1165f5
+ dw Function116600
+ dw Function116615
+ dw Function116618
+ dw Function116623
+ dw Function116635
+ dw Function116640
+ dw Function116655
+ dw Function11665c
+ dw Function11668d
+ dw Function11669f
+ dw Function1166a2
+ dw Function1166c4
+ dw Function1166d6
+ dw Function1166d6
+; 1165d5
+
+Function1165d5: ; 1165d5
+ call Function11678e
+
+Function1165d8:
+ ld a, $0
+ ld c, a
+ ld a, $ff
+ ld b, a
+ ld a, $a8
+ call Function1166f4
+
+Function1165e3:
+ call Function116747
+ ld a, [wc30e]
+ cp $e8
+ ret nz
+ ld a, $1
+ call Function116780
+ ret c
+ jp Function116797
+
+; 1165f5
+
+Function1165f5: ; 1165f5
+ ld a, $1
+ ld c, a
+ ld a, $1
+ ld b, a
+ ld a, $e8
+ call Function1166f4
+
+Function116600:
+ call Function116747
+ ld a, [wc30e]
+ cp $a8
+ ret nz
+ ld a, $1
+ call Function116780
+ ret c
+ ld a, $2
+ ld [wc314], a
+ ret
+
+; 116615
+
+Function116615: ; 116615
+ call Function11678e
+
+Function116618:
+ ld a, $3
+ ld c, a
+ ld a, $1
+ ld b, a
+ ld a, $28
+ call Function11671f
+
+Function116623:
+ call Function116747
+ ld a, [wc30f]
+ cp $a0
+ ret nz
+ ld a, $6
+ call Function116780
+ ret c
+ jp Function116797
+
+; 116635
+
+Function116635: ; 116635
+ ld a, $2
+ ld c, a
+ ld a, $ff
+ ld b, a
+ ld a, $a0
+ call Function11671f
+
+Function116640:
+ call Function116747
+ ld a, [wc30f]
+ cp $28
+ ret nz
+ ld a, $6
+ call Function116780
+ ret c
+ ld a, $7
+ ld [wc314], a
+ ret
+
+; 116655
+
+Function116655: ; 116655
+ xor a
+ ld [wc314 + 3], a
+ call Function11678e
+
+Function11665c:
+ ld hl, wc314 + 3
+ ld a, $1
+ xor [hl]
+ ld [hl], a
+ add $4
+ ld c, a
+ call Function11679c
+ ld a, [wc314 + 3]
+ and a
+ jr nz, .asm_116673
+ ld a, $48
+ jr .asm_116675
+
+.asm_116673
+ ld a, $78
+
+.asm_116675
+ ld [wc30f], a
+ call Random
+ ld a, [hRandomAdd]
+ and $7
+ sla a
+ sla a
+ sla a
+ add $30
+ ld [wc30e], a
+ call Function116797
+
+Function11668d:
+ ld a, [wc311]
+ cp $ff
+ ret nz
+ ld a, $b
+ call Function116780
+ ret c
+ ld a, $c
+ ld [wc314], a
+ ret
+
+; 11669f
+
+Function11669f: ; 11669f
+ call Function11678e
+
+Function1166a2:
+ ld a, $a8
+ ld [wc30e], a
+ ld [wc3f1], a
+ ld a, $60
+ ld [wc30f], a
+ ld [wc3f3], a
+ ld a, $ff
+ ld [wc314 + 2], a
+ xor a
+ ld [wc314 + 3], a
+ ld a, $0
+ ld c, a
+ call Function11679c
+ call Function116797
+
+Function1166c4:
+ call Function116747
+ ld a, [wc30e]
+ cp $58
+ ret nz
+ ld a, $6
+ ld c, a
+ call Function11679c
+ call Function116797
+
+Function1166d6:
+ call Function116747
+ ld a, [wc30e]
+ cp $48
+ jr nz, .asm_1166e4
+ xor a
+ ld [wc314 + 2], a
+
+.asm_1166e4
+ ld a, [wc311]
+ cp $ff
+ ret nz
+ ld a, $4
+ ld [$c319], a
+ xor a
+ ld [wc314], a
+ ret
+
+; 1166f4
+
+Function1166f4: ; 1166f4
+ ld [wc30e], a
+ ld a, b
+ ld [wc314 + 2], a
+ xor a
+ ld [wc314 + 3], a
+ ld hl, wc30f
+.asm_116702
+ call Random
+ ld a, [hRandomAdd]
+ and $7
+ jr z, .asm_11670c
+ dec a
+
+.asm_11670c
+ sla a
+ sla a
+ sla a
+ add $48
+ cp [hl]
+ jr z, .asm_116702
+ ld [hl], a
+ call Function11679c
+ call Function116797
+ ret
+
+; 11671f
+
+Function11671f: ; 11671f
+ ld [wc30f], a
+ ld a, b
+ ld [wc314 + 3], a
+ xor a
+ ld [wc314 + 2], a
+ ld hl, wc30e
+.asm_11672d
+ call Random
+ ld a, [hRandomAdd]
+ and $7
+ sla a
+ sla a
+ sla a
+ add $30
+ cp [hl]
+ jr z, .asm_11672d
+ ld [hl], a
+ call Function11679c
+ call Function116797
+ ret
+
+; 116747
+
+Function116747: ; 116747
+ ld hl, wc30e
+ ld a, [wc314 + 2]
+ add [hl]
+ ld [hl], a
+ ld hl, wc30f
+ ld a, [wc314 + 3]
+ add [hl]
+ ld [hl], a
+ ret
+
+; 116758
+
+Function116758: ; 116758
+ ld a, [wc30f]
+ cp $30
+ jr c, .asm_116770
+ jr z, .asm_116770
+ cp $38
+ jr c, .asm_116774
+ jr z, .asm_116774
+ cp $40
+ jr c, .asm_116778
+ jr z, .asm_116778
+ xor a
+ jr .asm_11677a
+
+.asm_116770
+ ld a, $c
+ jr .asm_11677a
+
+.asm_116774
+ ld a, $8
+ jr .asm_11677a
+
+.asm_116778
+ ld a, $4
+
+.asm_11677a
+ ld [wc314 + 4], a
+ ret
+
+; 11677e
+
+Function11677e: ; 11677e
+ ld a, $0
+
+Function116780:
+ ld hl, wc314 + 1
+ cp [hl]
+ jr z, .asm_11678c
+ ld a, [hl]
+ ld [wc314], a
+ scf
+ ret
+
+.asm_11678c
+ and a
+ ret
+
+; 11678e
+
+Function11678e: ; 11678e
+ ld hl, wc314
+ ld a, [hl]
+ ld [wc314 + 1], a
+ inc [hl]
+ ret
+
+; 116797
+
+Function116797: ; 116797
+ ld hl, wc314
+ inc [hl]
+ ret
+
+; 11679c
+
+Function11679c:
+ ld a, c
+ ld [wc311], a
+ xor a
+ ld [wc312], a
+ jr asm_1167af
+
+Function1167a6: ; 1167a6
+ ld hl, wc313
+ dec [hl]
+ ret nz
+ ld hl, wc312
+ inc [hl]
+
+asm_1167af
+.asm_1167af
+ ld a, [wc311]
+ cp $ff
+ ret z
+ sla a
+ ld c, a
+ ld b, 0
+ ld hl, Unknown_1167eb
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ push de
+ pop hl
+ ld a, [wc312]
+ sla a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_1167dc
+ cp $fe
+ jr nz, .asm_1167e3
+ xor a
+ ld [wc312], a
+ jr .asm_1167af
+
+.asm_1167dc
+ ld a, $ff
+ ld [wc311], a
+ ld a, $fd
+
+.asm_1167e3
+ ld [wc310], a
+ ld a, [hl]
+ ld [wc313], a
+ ret
+
+; 1167eb
+
+Unknown_1167eb:
+ dw Unknown_1167fb
+ dw Unknown_116808
+ dw Unknown_116867
+ dw Unknown_116870
+ dw Unknown_116815
+ dw Unknown_11683e
+ dw Unknown_116881
+ dw Unknown_1168ae
+
+Unknown_1167fb: ; 1167fb
+ db $0, $6
+ db $1, $4
+ db $2, $4
+ db $3, $6
+ db $2, $4
+ db $1, $4
+ db $fe
+
+Unknown_116808: ; 116808
+ db $4, $6
+ db $5, $4
+ db $6, $4
+ db $7, $6
+ db $6, $4
+ db $5, $4
+ db $fe
+
+Unknown_116815: ; 116815
+ db $fd, $20
+ db $8, $c
+ db $9, $24
+ db $a, $4
+ db $b, $8
+ db $a, $4
+ db $9, $6
+ db $c, $4
+ db $d, $8
+ db $c, $5
+ db $9, $24
+ db $a, $4
+ db $b, $8
+ db $a, $4
+ db $9, $6
+ db $c, $4
+ db $d, $8
+ db $c, $5
+ db $9, $8
+ db $8, $4
+ db $ff
+
+Unknown_11683e: ; 11683e
+ db $fd, $20
+ db $e, $c
+ db $f, $24
+ db $10, $4
+ db $11, $8
+ db $10, $4
+ db $f, $6
+ db $12, $4
+ db $13, $8
+ db $12, $5
+ db $f, $24
+ db $10, $4
+ db $11, $8
+ db $10, $4
+ db $f, $6
+ db $12, $4
+ db $13, $8
+ db $12, $5
+ db $f, $8
+ db $e, $4
+ db $ff
+
+Unknown_116867: ; 116867
+ db $14, $8
+ db $15, $8
+ db $16, $8
+ db $15, $8
+ db $fe
+
+Unknown_116870: ; 116870
+ db $17, $5
+ db $18, $5
+ db $19, $5
+ db $1a, $5
+ db $1b, $5
+ db $1a, $5
+ db $19, $5
+ db $18, $5
+ db $fe
+
+Unknown_116881: ; 116881
+ db $1c, $7
+ db $1d, $7
+ db $1e, $a
+ db $1f, $a
+ db $20, $5
+ db $21, $5
+ db $20, $5
+ db $21, $5
+ db $20, $18
+ db $22, $4
+ db $23, $2
+ db $22, $2
+ db $23, $2
+ db $22, $1
+ db $23, $1
+ db $22, $1
+ db $23, $4
+ db $fd, $1
+ db $23, $1
+ db $fd, $2
+ db $23, $2
+ db $fd, $40
+ db $ff
+
+Unknown_1168ae: ; 1168ae
+ db $24, $4
+ db $25, $4
+ db $26, $4
+ db $27, $4
+ db $28, $4
+ db $29, $4
+ db $2a, $4
+ db $2b, $4
+ db $2c, $4
+ db $2d, $4
+ db $2e, $4
+ db $fe
+; 1168c5
+
+Unknown_1168c5:
+ dw Unknown_116923
+ dw Unknown_116960
+ dw Unknown_1169a1
+ dw Unknown_1169de
+ dw Unknown_116a1b
+ dw Unknown_116a58
+ dw Unknown_116a99
+ dw Unknown_116ad6
+ dw Unknown_116d1b
+ dw Unknown_116d4c
+ dw Unknown_116d85
+ dw Unknown_116dbe
+ dw Unknown_116df7
+ dw Unknown_116e30
+ dw Unknown_116e69
+ dw Unknown_116e9a
+ dw Unknown_116ed3
+ dw Unknown_116f0c
+ dw Unknown_116f45
+ dw Unknown_116f7e
+ dw Unknown_116b13
+ dw Unknown_116b54
+ dw Unknown_116b95
+ dw Unknown_116bd6
+ dw Unknown_116c17
+ dw Unknown_116c58
+ dw Unknown_116c99
+ dw Unknown_116cda
+ dw Unknown_116fb7
+ dw Unknown_116fec
+ dw Unknown_117025
+ dw Unknown_117056
+ dw Unknown_117083
+ dw Unknown_1170c0
+ dw Unknown_1170fd
+ dw Unknown_11713a
+ dw Unknown_117177
+ dw Unknown_11719c
+ dw Unknown_1171c1
+ dw Unknown_1171e6
+ dw Unknown_11720b
+ dw Unknown_117230
+ dw Unknown_117255
+ dw Unknown_11727a
+ dw Unknown_11729f
+ dw Unknown_1172c4
+ dw Unknown_1172e9
+
+Unknown_116923: ; 116923
+ db $f
+ db $0, $0, $1, $a
+ db $0, $8, $2, $d
+ db $0, $10, $3, $d
+ db $0, $18, $4, $d
+ db $8, $0, $11, $a
+ db $8, $8, $12, $a
+ db $8, $10, $13, $a
+ db $8, $18, $14, $d
+ db $10, $0, $21, $a
+ db $10, $8, $22, $a
+ db $10, $10, $23, $a
+ db $10, $18, $24, $a
+ db $18, $0, $31, $a
+ db $18, $8, $32, $a
+ db $18, $10, $33, $a
+
+Unknown_116960: ; 116960
+ db $10
+ db $1, $0, $1, $a
+ db $1, $8, $2, $d
+ db $1, $10, $3, $d
+ db $1, $18, $4, $d
+ db $9, $0, $11, $a
+ db $9, $8, $12, $a
+ db $9, $10, $13, $a
+ db $9, $18, $14, $d
+ db $11, $0, $5, $a
+ db $11, $8, $6, $a
+ db $11, $10, $7, $a
+ db $11, $18, $34, $a
+ db $19, $0, $15, $a
+ db $19, $8, $16, $a
+ db $19, $10, $17, $a
+ db $19, $18, $35, $a
+
+Unknown_1169a1: ; 1169a1
+ db $f
+ db $1, $0, $1, $a
+ db $1, $8, $2, $d
+ db $1, $10, $3, $d
+ db $1, $18, $4, $d
+ db $9, $0, $11, $a
+ db $9, $8, $12, $a
+ db $9, $10, $13, $a
+ db $9, $18, $14, $d
+ db $11, $0, $25, $a
+ db $11, $8, $26, $a
+ db $11, $10, $27, $a
+ db $11, $18, $34, $a
+ db $19, $8, $36, $a
+ db $19, $10, $37, $a
+ db $19, $18, $35, $a
+
+Unknown_1169de: ; 1169de
+ db $f
+ db $0, $0, $1, $a
+ db $0, $8, $2, $d
+ db $0, $10, $3, $d
+ db $0, $18, $4, $d
+ db $8, $0, $11, $a
+ db $8, $8, $12, $a
+ db $8, $10, $13, $a
+ db $8, $18, $14, $d
+ db $10, $0, $10, $a
+ db $10, $8, $20, $a
+ db $10, $10, $30, $a
+ db $10, $18, $24, $a
+ db $18, $0, $31, $a
+ db $18, $8, $32, $a
+ db $18, $10, $33, $a
+
+Unknown_116a1b: ; 116a1b
+ db $f
+ db $0, $0, $4, $2d
+ db $0, $8, $3, $2d
+ db $0, $10, $2, $2d
+ db $0, $18, $1, $2a
+ db $8, $0, $14, $2d
+ db $8, $8, $13, $2a
+ db $8, $10, $12, $2a
+ db $8, $18, $11, $2a
+ db $10, $0, $24, $2a
+ db $10, $8, $23, $2a
+ db $10, $10, $22, $2a
+ db $10, $18, $21, $2a
+ db $18, $8, $33, $2a
+ db $18, $10, $32, $2a
+ db $18, $18, $31, $2a
+
+Unknown_116a58: ; 116a58
+ db $10
+ db $1, $0, $4, $2d
+ db $1, $8, $3, $2d
+ db $1, $10, $2, $2d
+ db $1, $18, $1, $2a
+ db $9, $0, $14, $2d
+ db $9, $8, $13, $2a
+ db $9, $10, $12, $2a
+ db $9, $18, $11, $2a
+ db $11, $0, $34, $2a
+ db $11, $8, $7, $2a
+ db $11, $10, $6, $2a
+ db $11, $18, $5, $2a
+ db $19, $0, $35, $2a
+ db $19, $8, $17, $2a
+ db $19, $10, $16, $2a
+ db $19, $18, $15, $2a
+
+Unknown_116a99: ; 116a99
+ db $f
+ db $1, $0, $4, $2d
+ db $1, $8, $3, $2d
+ db $1, $10, $2, $2d
+ db $1, $18, $1, $2a
+ db $9, $0, $14, $2d
+ db $9, $8, $13, $2a
+ db $9, $10, $12, $2a
+ db $9, $18, $11, $2a
+ db $11, $0, $34, $2a
+ db $11, $8, $27, $2a
+ db $11, $10, $26, $2a
+ db $11, $18, $25, $2a
+ db $19, $0, $35, $2a
+ db $19, $8, $37, $2a
+ db $19, $10, $36, $2a
+
+Unknown_116ad6: ; 116ad6
+ db $f
+ db $0, $0, $4, $2d
+ db $0, $8, $3, $2d
+ db $0, $10, $2, $2d
+ db $0, $18, $1, $2a
+ db $8, $0, $14, $2d
+ db $8, $8, $13, $2a
+ db $8, $10, $12, $2a
+ db $8, $18, $11, $2a
+ db $10, $0, $24, $2a
+ db $10, $8, $30, $2a
+ db $10, $10, $20, $2a
+ db $10, $18, $10, $2a
+ db $18, $8, $33, $2a
+ db $18, $10, $32, $2a
+ db $18, $18, $31, $2a
+
+Unknown_116b13: ; 116b13
+ db $10
+ db $18, $0, $0, $b
+ db $18, $8, $8, $b
+ db $18, $10, $5c, $b
+ db $18, $18, $0, $b
+ db $10, $0, $0, $b
+ db $10, $8, $5d, $b
+ db $10, $10, $5e, $b
+ db $10, $18, $0, $b
+ db $8, $0, $50, $b
+ db $8, $8, $51, $b
+ db $8, $10, $52, $b
+ db $8, $18, $50, $2b
+ db $0, $0, $43, $b
+ db $0, $8, $44, $b
+ db $0, $10, $44, $2b
+ db $0, $18, $43, $2b
+
+Unknown_116b54: ; 116b54
+ db $10
+ db $19, $0, $0, $b
+ db $19, $8, $18, $b
+ db $19, $10, $c, $b
+ db $19, $18, $0, $b
+ db $11, $0, $42, $b
+ db $11, $8, $3a, $b
+ db $11, $10, $3a, $2b
+ db $11, $18, $42, $2b
+ db $9, $0, $58, $b
+ db $9, $8, $45, $b
+ db $9, $10, $45, $2b
+ db $9, $18, $58, $2b
+ db $1, $0, $d, $b
+ db $1, $8, $44, $b
+ db $1, $10, $44, $2b
+ db $1, $18, $d, $2b
+
+Unknown_116b95: ; 116b95
+ db $10
+ db $18, $0, $0, $b
+ db $18, $8, $5c, $2b
+ db $18, $10, $8, $2b
+ db $18, $18, $0, $b
+ db $10, $0, $0, $b
+ db $10, $8, $5e, $2b
+ db $10, $10, $5d, $2b
+ db $10, $18, $0, $b
+ db $8, $0, $50, $b
+ db $8, $8, $52, $2b
+ db $8, $10, $51, $2b
+ db $8, $18, $50, $2b
+ db $0, $0, $43, $b
+ db $0, $8, $44, $b
+ db $0, $10, $44, $2b
+ db $0, $18, $43, $2b
+
+Unknown_116bd6: ; 116bd6
+ db $10
+ db $18, $0, $0, $a
+ db $18, $8, $56, $a
+ db $18, $10, $57, $a
+ db $18, $18, $0, $a
+ db $10, $0, $64, $a
+ db $10, $8, $4a, $a
+ db $10, $10, $4b, $a
+ db $10, $18, $71, $a
+ db $8, $0, $54, $a
+ db $8, $8, $55, $a
+ db $8, $10, $55, $2a
+ db $8, $18, $54, $2a
+ db $0, $0, $48, $a
+ db $0, $8, $49, $a
+ db $0, $10, $49, $2a
+ db $0, $18, $48, $2a
+
+Unknown_116c17: ; 116c17
+ db $10
+ db $19, $0, $0, $a
+ db $19, $8, $76, $a
+ db $19, $10, $77, $a
+ db $19, $18, $0, $a
+ db $11, $0, $64, $a
+ db $11, $8, $69, $a
+ db $11, $10, $6a, $a
+ db $11, $18, $6b, $a
+ db $9, $0, $6f, $a
+ db $9, $8, $70, $a
+ db $9, $10, $70, $2a
+ db $9, $18, $6f, $2a
+ db $1, $0, $63, $a
+ db $1, $8, $19, $a
+ db $1, $10, $19, $2a
+ db $1, $18, $63, $2a
+
+Unknown_116c58: ; 116c58
+ db $10
+ db $1a, $0, $6c, $a
+ db $1a, $8, $6d, $a
+ db $1a, $10, $6e, $a
+ db $1a, $18, $0, $a
+ db $12, $0, $5f, $a
+ db $12, $8, $60, $a
+ db $12, $10, $61, $a
+ db $12, $18, $62, $a
+ db $a, $0, $53, $a
+ db $a, $8, $55, $a
+ db $a, $10, $55, $2a
+ db $a, $18, $53, $2a
+ db $2, $0, $46, $a
+ db $2, $8, $47, $a
+ db $2, $10, $47, $2a
+ db $2, $18, $46, $2a
+
+Unknown_116c99: ; 116c99
+ db $10
+ db $19, $0, $0, $2a
+ db $19, $8, $77, $2a
+ db $19, $10, $76, $2a
+ db $19, $18, $0, $2a
+ db $11, $0, $6b, $2a
+ db $11, $8, $6a, $2a
+ db $11, $10, $69, $2a
+ db $11, $18, $64, $2a
+ db $9, $0, $6f, $a
+ db $9, $8, $70, $a
+ db $9, $10, $70, $2a
+ db $9, $18, $6f, $2a
+ db $1, $0, $63, $a
+ db $1, $8, $19, $a
+ db $1, $10, $19, $2a
+ db $1, $18, $63, $2a
+
+Unknown_116cda: ; 116cda
+ db $10
+ db $18, $0, $0, $a
+ db $18, $8, $57, $2a
+ db $18, $10, $56, $2a
+ db $18, $18, $0, $a
+ db $10, $0, $71, $2a
+ db $10, $8, $4b, $2a
+ db $10, $10, $4a, $2a
+ db $10, $18, $64, $2a
+ db $8, $0, $54, $a
+ db $8, $8, $55, $a
+ db $8, $10, $55, $2a
+ db $8, $18, $54, $2a
+ db $0, $0, $48, $a
+ db $0, $8, $49, $a
+ db $0, $10, $49, $2a
+ db $0, $18, $48, $2a
+
+Unknown_116d1b: ; 116d1b
+ db $c
+ db $0, $0, $38, $4a
+ db $0, $8, $39, $4a
+ db $0, $10, $39, $6a
+ db $0, $18, $38, $6a
+ db $8, $0, $28, $4a
+ db $8, $8, $29, $4a
+ db $8, $10, $29, $6a
+ db $8, $18, $28, $6a
+ db $10, $0, $9, $4d
+ db $10, $8, $19, $4a
+ db $10, $10, $19, $6a
+ db $10, $18, $9, $6d
+
+Unknown_116d4c: ; 116d4c
+ db $e
+ db $0, $8, $3b, $4a
+ db $0, $10, $3b, $6a
+ db $8, $0, $2a, $4a
+ db $8, $8, $2b, $4a
+ db $8, $10, $2b, $6a
+ db $8, $18, $2a, $6a
+ db $10, $0, $1a, $4a
+ db $10, $8, $1b, $4a
+ db $10, $10, $1b, $6a
+ db $10, $18, $1a, $6a
+ db $18, $0, $a, $4a
+ db $18, $8, $b, $4a
+ db $18, $10, $b, $6a
+ db $18, $18, $a, $6a
+
+Unknown_116d85: ; 116d85
+ db $e
+ db $0, $0, $35, $2a
+ db $0, $8, $3c, $4a
+ db $0, $10, $3d, $4a
+ db $0, $18, $3e, $4a
+ db $8, $0, $2c, $4a
+ db $8, $8, $2d, $4a
+ db $8, $10, $2e, $4a
+ db $8, $18, $2f, $4a
+ db $10, $0, $1c, $4a
+ db $10, $8, $1d, $4a
+ db $10, $10, $1e, $4d
+ db $10, $18, $1f, $4d
+ db $18, $10, $e, $4d
+ db $18, $18, $f, $4a
+
+Unknown_116dbe: ; 116dbe
+ db $e
+ db $0, $0, $65, $4a
+ db $0, $8, $66, $4a
+ db $0, $10, $67, $4a
+ db $0, $18, $68, $4a
+ db $8, $8, $59, $4a
+ db $8, $10, $5a, $4a
+ db $8, $18, $5b, $4a
+ db $10, $0, $4c, $4a
+ db $10, $8, $4d, $4d
+ db $10, $10, $4e, $4d
+ db $10, $18, $4f, $4a
+ db $18, $0, $3f, $4d
+ db $18, $8, $40, $4d
+ db $18, $10, $41, $4d
+
+Unknown_116df7: ; 116df7
+ db $e
+ db $0, $0, $3e, $6a
+ db $0, $8, $3d, $6a
+ db $0, $10, $3c, $6a
+ db $0, $18, $35, $a
+ db $8, $0, $2f, $6a
+ db $8, $8, $2e, $6a
+ db $8, $10, $2d, $6a
+ db $8, $18, $2c, $6a
+ db $10, $0, $1f, $6d
+ db $10, $8, $1e, $6d
+ db $10, $10, $1d, $6a
+ db $10, $18, $1c, $6a
+ db $18, $0, $f, $6a
+ db $18, $8, $e, $6d
+
+Unknown_116e30: ; 116e30
+ db $e
+ db $0, $0, $68, $6a
+ db $0, $8, $67, $6a
+ db $0, $10, $66, $6a
+ db $0, $18, $65, $6a
+ db $8, $0, $5b, $6a
+ db $8, $8, $5a, $6a
+ db $8, $10, $59, $6a
+ db $10, $0, $4f, $6a
+ db $10, $8, $4e, $6d
+ db $10, $10, $4d, $6d
+ db $10, $18, $4c, $6a
+ db $18, $8, $41, $6d
+ db $18, $10, $40, $6d
+ db $18, $18, $3f, $6d
+
+Unknown_116e69: ; 116e69
+ db $c
+ db $8, $0, $9, $d
+ db $8, $8, $19, $a
+ db $8, $10, $19, $2a
+ db $8, $18, $9, $2d
+ db $10, $0, $28, $a
+ db $10, $8, $29, $a
+ db $10, $10, $29, $2a
+ db $10, $18, $28, $2a
+ db $18, $0, $38, $a
+ db $18, $8, $39, $a
+ db $18, $10, $39, $2a
+ db $18, $18, $38, $2a
+
+Unknown_116e9a: ; 116e9a
+ db $e
+ db $0, $0, $a, $a
+ db $0, $8, $b, $a
+ db $0, $10, $b, $2a
+ db $0, $18, $a, $2a
+ db $8, $0, $1a, $a
+ db $8, $8, $1b, $a
+ db $8, $10, $1b, $2a
+ db $8, $18, $1a, $2a
+ db $10, $0, $2a, $a
+ db $10, $8, $2b, $a
+ db $10, $10, $2b, $2a
+ db $10, $18, $2a, $2a
+ db $18, $8, $3b, $a
+ db $18, $10, $3b, $2a
+
+Unknown_116ed3: ; 116ed3
+ db $e
+ db $0, $10, $e, $d
+ db $0, $18, $f, $a
+ db $8, $0, $1c, $a
+ db $8, $8, $1d, $a
+ db $8, $10, $1e, $d
+ db $8, $18, $1f, $d
+ db $10, $0, $2c, $a
+ db $10, $8, $2d, $a
+ db $10, $10, $2e, $a
+ db $10, $18, $2f, $a
+ db $18, $0, $35, $6a
+ db $18, $8, $3c, $a
+ db $18, $10, $3d, $a
+ db $18, $18, $3e, $a
+
+Unknown_116f0c: ; 116f0c
+ db $e
+ db $0, $0, $3f, $d
+ db $0, $8, $40, $d
+ db $0, $10, $41, $d
+ db $8, $0, $4c, $a
+ db $8, $8, $4d, $d
+ db $8, $10, $4e, $d
+ db $8, $18, $4f, $a
+ db $10, $8, $59, $a
+ db $10, $10, $5a, $a
+ db $10, $18, $5b, $a
+ db $18, $0, $65, $a
+ db $18, $8, $66, $a
+ db $18, $10, $67, $a
+ db $18, $18, $68, $a
+
+Unknown_116f45: ; 116f45
+ db $e
+ db $0, $0, $f, $2a
+ db $0, $8, $e, $2d
+ db $8, $0, $1f, $2d
+ db $8, $8, $1e, $2d
+ db $8, $10, $1d, $2a
+ db $8, $18, $1c, $2a
+ db $10, $0, $2f, $2a
+ db $10, $8, $2e, $2a
+ db $10, $10, $2d, $2a
+ db $10, $18, $2c, $2a
+ db $18, $0, $3e, $2a
+ db $18, $8, $3d, $2a
+ db $18, $10, $3c, $2a
+ db $18, $18, $35, $4a
+
+Unknown_116f7e: ; 116f7e
+ db $e
+ db $0, $8, $41, $2d
+ db $0, $10, $40, $2d
+ db $0, $18, $3f, $2d
+ db $8, $0, $4f, $2a
+ db $8, $8, $4e, $2d
+ db $8, $10, $4d, $2d
+ db $8, $18, $4c, $2a
+ db $10, $0, $5b, $2a
+ db $10, $8, $5a, $2a
+ db $10, $10, $59, $2a
+ db $18, $0, $68, $2a
+ db $18, $8, $67, $2a
+ db $18, $10, $66, $2a
+ db $18, $18, $65, $2a
+
+Unknown_116fb7: ; 116fb7
+ db $d
+ db $fa, $0, $72, $a
+ db $fa, $8, $73, $d
+ db $fa, $10, $74, $d
+ db $fa, $18, $75, $d
+ db $2, $0, $81, $a
+ db $2, $8, $82, $a
+ db $2, $10, $83, $a
+ db $2, $18, $84, $a
+ db $a, $0, $91, $a
+ db $a, $8, $92, $a
+ db $a, $10, $93, $a
+ db $a, $18, $94, $a
+ db $12, $10, $a3, $a
+
+Unknown_116fec: ; 116fec
+ db $e
+ db $fd, $0, $85, $d
+ db $fd, $8, $86, $d
+ db $5, $0, $95, $d
+ db $5, $8, $96, $a
+ db $5, $10, $97, $a
+ db $5, $18, $98, $a
+ db $d, $0, $a5, $a
+ db $d, $8, $a6, $a
+ db $d, $10, $a7, $a
+ db $d, $18, $a8, $a
+ db $15, $0, $b3, $a
+ db $15, $8, $b4, $a
+ db $15, $10, $b5, $a
+ db $15, $18, $b6, $a
+
+Unknown_117025: ; 117025
+ db $c
+ db $8, $0, $79, $d
+ db $8, $8, $7a, $d
+ db $8, $10, $7b, $a
+ db $8, $18, $7c, $a
+ db $10, $0, $89, $d
+ db $10, $8, $8a, $a
+ db $10, $10, $8b, $a
+ db $10, $18, $8c, $a
+ db $18, $0, $99, $a
+ db $18, $8, $9a, $a
+ db $18, $10, $9b, $a
+ db $18, $18, $9c, $a
+
+Unknown_117056: ; 117056
+ db $b
+ db $8, $0, $7d, $a
+ db $8, $8, $7e, $d
+ db $8, $10, $7f, $d
+ db $8, $18, $80, $a
+ db $10, $0, $8d, $a
+ db $10, $8, $8e, $a
+ db $10, $10, $8f, $a
+ db $10, $18, $90, $a
+ db $18, $8, $9e, $a
+ db $18, $10, $9f, $a
+ db $18, $18, $a0, $a
+
+Unknown_117083: ; 117083
+ db $f
+ db $0, $0, $a1, $a
+ db $0, $8, $a2, $a
+ db $0, $10, $a2, $2a
+ db $0, $18, $a1, $2a
+ db $8, $0, $b1, $a
+ db $8, $8, $b2, $d
+ db $8, $10, $b2, $2d
+ db $8, $18, $b1, $2a
+ db $10, $0, $ab, $a
+ db $10, $8, $ac, $a
+ db $10, $10, $ac, $2a
+ db $10, $18, $ab, $2a
+ db $18, $8, $a4, $a
+ db $18, $10, $87, $a
+ db $18, $18, $88, $a
+
+Unknown_1170c0: ; 1170c0
+ db $f
+ db $0, $0, $a1, $a
+ db $0, $8, $a2, $d
+ db $0, $10, $a2, $2a
+ db $0, $18, $a1, $2a
+ db $8, $0, $b1, $a
+ db $8, $8, $78, $d
+ db $8, $10, $78, $2d
+ db $8, $18, $b1, $2a
+ db $10, $0, $ab, $a
+ db $10, $8, $ac, $a
+ db $10, $10, $ac, $2a
+ db $10, $18, $ab, $2a
+ db $18, $8, $a4, $a
+ db $18, $10, $87, $a
+ db $18, $18, $88, $a
+
+Unknown_1170fd: ; 1170fd
+ db $f
+ db $0, $0, $a9, $a
+ db $0, $8, $aa, $a
+ db $0, $10, $aa, $2a
+ db $0, $18, $a9, $2a
+ db $8, $0, $b7, $a
+ db $8, $8, $b8, $a
+ db $8, $10, $b8, $2a
+ db $8, $18, $b7, $2a
+ db $10, $0, $ab, $a
+ db $10, $8, $ac, $a
+ db $10, $10, $ac, $2a
+ db $10, $18, $ad, $a
+ db $18, $8, $a4, $a
+ db $18, $10, $ba, $a
+ db $18, $18, $bb, $a
+
+Unknown_11713a: ; 11713a
+ db $f
+ db $0, $0, $ae, $c
+ db $0, $8, $af, $c
+ db $0, $10, $af, $2c
+ db $0, $18, $ae, $2c
+ db $8, $0, $bc, $c
+ db $8, $8, $bd, $c
+ db $8, $10, $bd, $2c
+ db $8, $18, $bc, $2c
+ db $10, $0, $bf, $c
+ db $10, $8, $9d, $c
+ db $10, $10, $9d, $2c
+ db $10, $18, $b0, $c
+ db $18, $8, $b9, $c
+ db $18, $10, $c0, $c
+ db $18, $18, $be, $c
+
+Unknown_117177: ; 117177
+ db $9
+ db $14, $0, $1f, $6
+ db $14, $8, $20, $6
+ db $14, $10, $21, $6
+ db $c, $0, $10, $6
+ db $c, $8, $11, $6
+ db $c, $10, $12, $6
+ db $4, $0, $1, $6
+ db $4, $8, $2, $6
+ db $4, $10, $3, $6
+
+Unknown_11719c: ; 11719c
+ db $9
+ db $14, $0, $22, $6
+ db $14, $8, $23, $6
+ db $14, $10, $24, $6
+ db $c, $0, $13, $6
+ db $c, $8, $14, $6
+ db $c, $10, $15, $6
+ db $4, $0, $4, $6
+ db $4, $8, $5, $6
+ db $4, $10, $6, $6
+
+Unknown_1171c1: ; 1171c1
+ db $9
+ db $14, $0, $25, $6
+ db $14, $8, $26, $6
+ db $14, $10, $27, $6
+ db $c, $0, $16, $6
+ db $c, $8, $17, $6
+ db $c, $10, $18, $6
+ db $4, $0, $7, $6
+ db $4, $8, $8, $6
+ db $4, $10, $9, $6
+
+Unknown_1171e6: ; 1171e6
+ db $9
+ db $14, $0, $28, $6
+ db $14, $8, $29, $6
+ db $14, $10, $2a, $6
+ db $c, $0, $19, $6
+ db $c, $8, $1a, $6
+ db $c, $10, $1b, $6
+ db $4, $0, $a, $6
+ db $4, $8, $b, $6
+ db $4, $10, $c, $6
+
+Unknown_11720b: ; 11720b
+ db $9
+ db $14, $0, $2b, $6
+ db $14, $8, $2c, $6
+ db $14, $10, $2d, $6
+ db $c, $0, $1c, $6
+ db $c, $8, $1d, $6
+ db $c, $10, $1e, $6
+ db $4, $0, $d, $6
+ db $4, $8, $e, $6
+ db $4, $10, $f, $6
+
+Unknown_117230: ; 117230
+ db $9
+ db $14, $0, $47, $6
+ db $14, $8, $48, $6
+ db $14, $10, $49, $6
+ db $c, $0, $3b, $6
+ db $c, $8, $3c, $6
+ db $c, $10, $3b, $26
+ db $4, $0, $2e, $6
+ db $4, $8, $2f, $6
+ db $4, $10, $30, $6
+
+Unknown_117255: ; 117255
+ db $9
+ db $14, $0, $35, $6
+ db $14, $8, $4a, $6
+ db $14, $10, $35, $6
+ db $c, $0, $3d, $6
+ db $c, $8, $35, $6
+ db $c, $10, $3d, $26
+ db $4, $0, $31, $6
+ db $4, $8, $32, $6
+ db $4, $10, $31, $26
+
+Unknown_11727a: ; 11727a
+ db $9
+ db $14, $0, $4b, $6
+ db $14, $8, $4c, $6
+ db $14, $10, $4d, $6
+ db $c, $0, $3e, $6
+ db $c, $8, $3f, $6
+ db $c, $10, $40, $6
+ db $4, $0, $33, $6
+ db $4, $8, $34, $6
+ db $4, $10, $35, $6
+
+Unknown_11729f: ; 11729f
+ db $9
+ db $14, $0, $4e, $6
+ db $14, $8, $4f, $6
+ db $14, $10, $50, $6
+ db $c, $0, $41, $6
+ db $c, $8, $42, $6
+ db $c, $10, $43, $6
+ db $4, $0, $35, $6
+ db $4, $8, $36, $6
+ db $4, $10, $37, $6
+
+Unknown_1172c4: ; 1172c4
+ db $9
+ db $14, $0, $51, $6
+ db $14, $8, $52, $6
+ db $14, $10, $35, $6
+ db $c, $0, $44, $6
+ db $c, $8, $45, $6
+ db $c, $10, $46, $6
+ db $4, $0, $38, $6
+ db $4, $8, $39, $6
+ db $4, $10, $3a, $6
+
+Unknown_1172e9: ; 1172e9
+ db $9
+ db $10, $0, $0, $2
+ db $10, $8, $0, $2
+ db $10, $10, $0, $2
+ db $8, $0, $0, $2
+ db $8, $8, $0, $2
+ db $c, $10, $1f, $6
+ db $0, $0, $0, $2
+ db $0, $8, $0, $2
+ db $4, $10, $10, $6
+; 11730e
+
+Palette_11730e:
+ RGB 31, 31, 31
+ RGB 7, 5, 4
+ RGB 31, 28, 4
+ RGB 31, 5, 5
+ RGB 31, 31, 31
+ RGB 7, 5, 4
+ RGB 31, 23, 0
+ RGB 31, 28, 4
+ RGB 31, 31, 31
+ RGB 16, 19, 31
+ RGB 17, 31, 31
+ RGB 31, 31, 31
+ RGB 5, 5, 5
+ RGB 7, 5, 4
+ RGB 31, 28, 4
+ RGB 19, 11, 6
+ RGB 31, 31, 31
+ RGB 3, 15, 31
+ RGB 4, 25, 25
+ RGB 0, 7, 12
+ RGB 31, 31, 31
+ RGB 0, 16, 0
+ RGB 0, 16, 0
+ RGB 0, 16, 0
+ RGB 4, 11, 22
+ RGB 0, 16, 0
+ RGB 0, 16, 0
+ RGB 0, 16, 0
+ RGB 22, 11, 8
+ RGB 0, 16, 0
+ RGB 0, 16, 0
+ RGB 0, 16, 0
+
+Palette_11734e:
+ RGB 31, 30, 30
+ RGB 2, 0, 0
+ RGB 10, 9, 9
+ RGB 15, 14, 14
+
+Unknown_117356: ; 117356
+ db $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9
+ db $c9, $c9, $c9, $c9, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+ db $c5, $c6, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2
+ db $c2, $c2, $c6, $c5, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+ db $c3, $c4, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2
+ db $c2, $c2, $c4, $c3, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+ db $c3, $c4, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2
+ db $c2, $c2, $c4, $c3, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+ db $c3, $c4, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2
+ db $c2, $c2, $c4, $c3, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+ db $c3, $c4, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2
+ db $c2, $c2, $c4, $c3, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+ db $c3, $c4, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2
+ db $c2, $c2, $c4, $c3, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+ db $c3, $c4, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2
+ db $c2, $c2, $c4, $c3, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+ db $c3, $c4, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $c2
+ db $c2, $c2, $c4, $c3, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+ db $c3, $c4, $c2, $c2, $c2, $c2, $c2, $c2, $c2, $d8, $c2, $c2, $d8, $c2, $c2, $c2
+ db $c2, $c2, $c4, $c3, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+ db $c7, $c8, $ca, $cb, $cc, $cd, $ce, $c2, $cf, $d0, $d1, $d2, $d3, $c2, $d4, $d5
+ db $d6, $d7, $c8, $c7, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+ db $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9, $c9
+ db $c9, $c9, $c9, $c9, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1, $c1
+
+ db $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f
+ db $8f, $8f, $8f, $8f, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+ db $8f, $8f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
+ db $0f, $0f, $af, $af, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+ db $8f, $8f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
+ db $0f, $0f, $af, $af, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+ db $8f, $8f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
+ db $0f, $0f, $af, $af, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+ db $8f, $8f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
+ db $0f, $0f, $af, $af, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+ db $8f, $8f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
+ db $0f, $0f, $af, $af, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+ db $8f, $8f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
+ db $0f, $0f, $af, $af, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+ db $8f, $8f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
+ db $0f, $0f, $af, $af, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+ db $8f, $8f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $0f
+ db $0f, $0f, $af, $af, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+ db $8f, $8f, $0f, $0f, $0f, $0f, $0f, $0f, $0f, $8f, $0f, $0f, $8f, $0f, $0f, $0f
+ db $0f, $0f, $af, $af, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+ db $8f, $8f, $8f, $8f, $8f, $8f, $8f, $0f, $8f, $8f, $8f, $8f, $8f, $0f, $8f, $8f
+ db $8f, $8f, $af, $af, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+ db $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f, $8f
+ db $8f, $8f, $8f, $8f, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08, $08
+; 117656
+
+
+SECTION "Mobile Stadium", ROMX
+
+Special_GiveOddEgg: ; 117656
+ farcall GiveOddEgg
+ ret
+
+; 11765d
+
+Function11765d: ; 11765d (45:765d)
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ call Function11766b
+ pop af
+ ld [hInMenu], a
+ ret
+
+Function11766b: ; 11766b (45:766b)
+ call Function117699
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ call Function1176ee
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $b1f3
+ ld de, wcd49
+ ld bc, $8
+ call CopyBytes
+ ld de, $c708
+ ld bc, $11
+ call CopyBytes
+ call CloseSRAM
+ pop af
+ ld [rSVBK], a
+ ret
+
+Function117699: ; 117699 (45:7699)
+ ld a, $5
+ call GetSRAMBank
+ ld hl, wcd49
+ ld de, $b1f3
+ ld bc, $8
+ call CopyBytes
+ ld hl, $c708
+ ld bc, $11
+ call CopyBytes
+ call CloseSRAM
+ xor a
+ ld [wcd49], a
+ ld [wcd4a], a
+ ld [wcd4b], a
+ ld [wcd4c], a
+ ld [wcd4d], a
+ ld [wcd4e], a
+ ld [wcd4f], a
+ ld hl, $c708
+ ld bc, $11
+ call ByteFill
+ call ClearBGPalettes
+ call ClearSprites
+ farcall Function171c87
+ farcall ReloadMapPart
+ farcall ClearSpriteAnims
+ ret
+
+Function1176ee: ; 1176ee (45:76ee)
+.loop
+ call JoyTextDelay
+ ld a, [wcd49]
+ bit 7, a
+ jr nz, .quit
+ call Function117719
+ farcall PlaySpriteAnimations
+ farcall ReloadMapPart
+ jr .loop
+
+.quit
+ farcall ClearSpriteAnims
+ call ClearBGPalettes
+ call ClearScreen
+ call ClearSprites
+ ret
+
+Function117719: ; 117719 (45:7719)
+ ld a, [wcd49]
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_117728
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+Jumptable_117728: ; 117728 (45:7728)
+ dw Function117738
+ dw Function117764
+ dw Function1178aa
+ dw Function1178e8
+ dw Function117942
+ dw Function117976
+ dw Function117984
+ dw Function1179a7
+
+
+Function117738: ; 117738 (45:7738)
+ farcall Function171ccd
+ depixel 6, 3
+ ld a, $1d
+ call _InitSpriteAnimStruct
+ ld hl, $c
+ add hl, bc
+ ld a, $6
+ ld [hl], a
+ depixel 9, 4
+ ld a, $1d
+ call _InitSpriteAnimStruct
+ ld hl, $c
+ add hl, bc
+ ld a, $7
+ ld [hl], a
+ ld a, $3
+ ld [wcd23], a
+ jp MobilePassword_IncrementJumptable
+
+Function117764: ; 117764 (45:7764)
+ ld a, [wcd4a]
+ cp $10
+ jr nz, .asm_11776f
+ ld a, $1
+ jr .asm_117770
+
+.asm_11776f
+ xor a
+.asm_117770
+ ld [wcd24], a
+ ld hl, hJoyPressed ; $ffa7
+ ld a, [hl]
+ and SELECT
+ jr nz, Function117764_select
+ ld a, [hl]
+ and START
+ jr nz, Function117764_start
+ ld a, [hl]
+ and A_BUTTON
+ jp nz, Function117764_a_button
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, Function117764_b_button
+ ld hl, hJoyLast
+ ld a, [hl]
+ and D_UP
+ jr nz, Function117764_d_up
+ ld a, [hl]
+ and D_DOWN
+ jr nz, Function117764_d_down
+ ld a, [hl]
+ and D_LEFT
+ jp nz, Function117764_d_left
+ ld a, [hl]
+ and D_RIGHT
+ jp nz, Function117764_d_right
+ ret
+
+Function117764_select: ; 1177a5 (45:77a5)
+ farcall Function171cf0
+ ret
+
+Function117764_start: ; 1177ac (45:77ac)
+ ld a, $2
+ ld [wcd4c], a
+ ld a, $4
+ ld [wcd4d], a
+ ret
+
+Function1177b7: ; 1177b7 (45:77b7)
+ ld a, $3
+ ld [wcd24], a
+ ld a, [wcd4a]
+ and a
+ jr z, .asm_1177c5
+ jp MobilePassword_IncrementJumptable
+
+.asm_1177c5
+ ld a, $6
+ ld [wcd49], a
+ ret
+
+Function1177cb: ; 1177cb (45:77cb)
+ ld a, $80
+ ld [wcd49], a
+ ld [ScriptVar], a
+ jp MobilePassword_IncrementJumptable
+
+Function117764_b_button: ; 1177d6 (45:77d6)
+ call PlayClickSFX
+ ld a, [wcd4a]
+ and a
+ ret z
+ dec a
+ ld [wcd4a], a
+ ld e, a
+ ld d, $0
+ ld hl, $c708
+ add hl, de
+ xor a
+ ld [hl], a
+ hlcoord 2, 4
+ add hl, de
+ ld [hl], a
+ ret
+
+Function117764_d_up: ; 1177f1 (45:77f1)
+ ld a, [wcd4d]
+ and a
+ ret z
+ dec a
+ ld [wcd4d], a
+ cp $3
+ ret nz
+ ld a, [wcd4c]
+ ld e, a
+ sla a
+ sla a
+ add e
+Function117764_d_vertical_load: ; 117806 (45:7806)
+ ld [wcd4c], a
+ ret
+
+Function117764_d_down: ; 11780a (45:780a)
+ ld a, [wcd4d]
+ cp $4
+ ret z
+ inc a
+ ld [wcd4d], a
+ cp $4
+ ret nz
+ ld a, [wcd4c]
+ cp $a
+ jr nc, .asm_117825
+ cp $5
+ jr nc, .asm_117829
+ xor a
+ jr Function117764_d_vertical_load
+
+.asm_117825
+ ld a, $2
+ jr Function117764_d_vertical_load
+
+.asm_117829
+ ld a, $1
+ jr Function117764_d_vertical_load
+
+Function117764_d_left: ; 11782d (45:782d)
+ ld a, [wcd4c]
+ and a
+ ret z
+ dec a
+ ld [wcd4c], a
+ ret
+
+Function117764_d_right: ; 117837 (45:7837)
+ ld e, $d
+ ld a, [wcd4d]
+ cp $4
+ jr nz, .wrap
+ ld e, $2
+.wrap
+ ld a, [wcd4c]
+ cp e
+ ret z
+ inc a
+ ld [wcd4c], a
+ ret
+
+Function117764_a_button: ; 11784c (45:784c)
+ call PlayClickSFX
+ ld a, [wcd4d]
+ cp $4
+ jr nz, .not_4
+ ld a, [wcd4c]
+ cp $2
+ jp z, Function1177b7
+ cp $1
+ jp z, Function1177cb
+ jp Function117764_select
+
+.not_4
+ ld a, [wcd4a]
+ ld e, a
+ cp $10
+ jp z, Function117764_start
+ inc a
+ ld [wcd4a], a
+ ld d, $0
+ ld a, [wcd4b]
+ and a
+ jr nz, .ascii_symbols
+ ld hl, Unknown_117a0f
+ jr .got_ascii
+
+.ascii_symbols
+ ld hl, Unknown_117a47
+.got_ascii
+ push de
+ ld a, [wcd4c]
+ ld b, a
+ ld a, [wcd4d]
+ ld c, $e
+ call SimpleMultiply
+ add b
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ ld hl, $c708
+ add hl, de
+ ld [hl], a
+ pop de
+ hlcoord 2, 4
+ add hl, de
+ sub $20
+ ld [hl], a
+ ld a, e
+ cp $f
+ ret nz
+ jp Function117764_start
+
+Function1178aa: ; 1178aa (45:78aa)
+ ld hl, MenuDataHeader_1179b5
+ call LoadMenuDataHeader
+ call MenuBox
+ call MenuBoxCoord2Tile
+ ld hl, MenuDataHeader_1179bd
+ call LoadMenuDataHeader
+ call MenuBox
+ call MenuBoxCoord2Tile
+ farcall ReloadMapPart
+ hlcoord 16, 8
+ ld de, YessNoString_1179c5
+ call PlaceString
+ hlcoord 15, 10
+ ld a, "▶"
+ ld [hl], a
+ hlcoord 1, 14
+ ld de, AskSavePasswordString
+ call PlaceString
+ ld a, $1
+ ld [wcd4e], a
+ jp MobilePassword_IncrementJumptable
+
+Function1178e8: ; 1178e8 (45:78e8)
+ ld a, [hJoyPressed]
+ cp B_BUTTON
+ jr z, .b_button
+ cp A_BUTTON
+ jr z, .a_button
+ cp D_DOWN
+ jr z, .d_down
+ cp D_UP
+ ret nz
+ ld a, [wcd4e]
+ and a
+ ret z
+ dec a
+ ld [wcd4e], a
+ hlcoord 15, 8
+ ld a, "▶"
+ ld [hl], a
+ hlcoord 15, 10
+ ld a, " "
+ ld [hl], a
+ ret
+
+.d_down
+ ld a, [wcd4e]
+ and a
+ ret nz
+ inc a
+ ld [wcd4e], a
+ hlcoord 15, 8
+ ld a, " "
+ ld [hl], a
+ hlcoord 15, 10
+ ld a, "▶"
+ ld [hl], a
+ ret
+
+.a_button
+ call PlayClickSFX
+ ld a, [wcd4e]
+ and a
+ jr nz, .b_button
+ call ExitMenu
+ ld a, $1
+ ld [wcd4f], a
+ jp MobilePassword_IncrementJumptable
+
+.b_button
+ call ExitMenu
+ call ExitMenu
+ jp MobilePassword_IncrementJumptable
+
+Function117942: ; 117942 (45:7942)
+ call SpeechTextBox
+ hlcoord 1, 14
+ ld de, SavedPasswordString
+ call PlaceString
+ ld a, $1e
+ ld [wcd4e], a
+ ld a, BANK(sMobileLoginPassword)
+ call GetSRAMBank
+ ld a, [wcd4f]
+ ld [sMobileLoginPassword], a
+ ld hl, $c708
+ ld de, sMobileLoginPassword + 1
+ ld bc, MOBILE_LOGIN_PASSWORD_LENGTH
+ call CopyBytes
+ call CloseSRAM
+ ld a, [wcd4f]
+ and a
+ jr z, asm_11797e
+ call MobilePassword_IncrementJumptable
+
+Function117976: ; 117976 (45:7976)
+ ld hl, wcd4e
+ dec [hl]
+ ret nz
+ call ExitMenu
+asm_11797e: ; 11797e (45:797e)
+ ld a, $80
+ ld [wcd49], a
+ ret
+
+Function117984: ; 117984 (45:7984)
+ ld hl, MenuDataHeader_1179b5
+ call LoadMenuDataHeader
+ call MenuBox
+ call MenuBoxCoord2Tile
+ farcall ReloadMapPart
+ hlcoord 1, 14
+ ld de, NotAPokemonPasswordString
+ call PlaceString
+ ld a, $1e
+ ld [wcd4e], a
+ call MobilePassword_IncrementJumptable
+
+Function1179a7: ; 1179a7 (45:79a7)
+ ld hl, wcd4e
+ dec [hl]
+ ret nz
+ call ExitMenu
+ ld a, $1
+ ld [wcd49], a
+ ret
+
+; 1179b5 (45:79b5)
+
+MenuDataHeader_1179b5: ; 1179b5
+ db $40 ; flags
+ db 12, 0 ; start coords
+ db 17, 19 ; end coords
+ dw NULL
+ db 0 ; default option
+; 1179bd
+
+MenuDataHeader_1179bd: ; 1179bd
+ db $40 ; flags
+ db 7, 14 ; start coords
+ db 11, 19 ; end coords
+ dw NULL
+ db 0 ; default option
+; 1179c5
+
+
+YessNoString_1179c5: ; 1179c5
+ db "はい"
+ next "いいえ@"
+; 1179cc
+
+AskSavePasswordString: ; 1179cc
+ db "こ%パスワード¯ほぞんして"
+ line "おきますか?@"
+; 1179e1
+
+NotAPokemonPasswordString: ; 1179e1
+ db "パスワード<PKMN>にゅうりょく"
+ line "されていません!@"
+; 1179f7
+
+SavedPasswordString: ; 1179f7
+ db "ログインパスワード¯ほぞん"
+ line "しました@"
+; 117a0a
+
+MobilePassword_IncrementJumptable: ; 117a0a (45:7a0a)
+ ld hl, wcd49
+ inc [hl]
+ ret
+
+; 117a0f (45:7a0f)
+
+Unknown_117a0f:
+INCBIN "data/mobile/ascii-alpha.txt"
+
+Unknown_117a47:
+INCBIN "data/mobile/ascii-sym.txt"
+; 117a7f
+
+
+; everything from here to the end of the bank is related to the
+; Mobile Stadium option from the continue/newgame menu.
+; XXX better function names
+MobileStudium: ; 0x117a7f
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ call Function117a8d
+ pop af
+ ld [hInMenu], a
+ ret
+
+; 0x117a8d
+
+Function117a8d: ; 0x117a8d
+ call Function117a94
+ call Function117acd
+ ret
+
+; 0x117a94
+
+Function117a94: ; 0x117a94
+ xor a
+ ld [wJumptableIndex], a
+ ld [wcf64], a
+ ld [wcf65], a
+ ld [wcf66], a
+ call ClearBGPalettes
+ call ClearSprites
+ farcall Function172e78
+ farcall HDMATransferAttrMapAndTileMapToWRAMBank3
+ ret
+
+; 0x117ab4
+
+Function117ab4: ; 0x117ab4
+ call ClearBGPalettes
+ call ClearSprites
+ farcall Function172e78
+ farcall Function172eb9
+ farcall ReloadMapPart
+ ret
+
+; 0x117acd
+
+Function117acd: ; 0x117acd
+ call JoyTextDelay
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .asm_117ae2
+ call Function117ae9
+ farcall HDMATransferAttrMapAndTileMapToWRAMBank3
+ jr Function117acd
+
+.asm_117ae2
+ call ClearBGPalettes
+ call ClearSprites
+ ret
+
+Function117ae9: ; 0x117ae9
+ ld a, [wJumptableIndex]
+ ld e, a
+ ld d, $0
+ ld hl, .Jumptable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+.Jumptable: ; 0x117af8
+ dw Function117b06
+ dw Function117b14
+ dw Function117b28
+ dw Function117b31
+ dw Function117b4f
+ dw Function117bb6
+ dw Function117c4a
+
+Function117b06:
+ farcall Function172eb9
+ ld a, $10
+ ld [wcf64], a
+ jp MobileStudium_JumptableIncrement
+
+Function117b14:
+ ld hl, wcf64
+ dec [hl]
+ ret nz
+ ld hl, MenuDataHeader_117cbc
+ call LoadMenuDataHeader
+ call MenuBox
+ call MenuBoxCoord2Tile
+ jp MobileStudium_JumptableIncrement
+
+Function117b28:
+ ld hl, MobileStadiumEntryText
+ call PrintText
+ jp MobileStudium_JumptableIncrement
+
+Function117b31:
+ ld hl, MenuDataHeader_117cc4
+ call LoadMenuDataHeader
+ call MenuBox
+ call MenuBoxCoord2Tile
+ hlcoord 16, 8
+ ld de, YesNo117ccc
+ call PlaceString
+ hlcoord 15, 8
+ ld a, "▶"
+ ld [hl], a
+ jp MobileStudium_JumptableIncrement
+
+Function117b4f:
+ ld a, [hJoyPressed]
+ cp B_BUTTON
+ jr z, .b_button
+ cp A_BUTTON
+ jr z, .a_button
+ cp D_DOWN
+ jr z, .d_down
+ cp D_UP
+ ret nz
+ ld a, [wcf64]
+ and a
+ ret z
+ dec a
+ ld [wcf64], a
+ hlcoord 15, 8
+ ld a, "▶"
+ ld [hl], a
+ hlcoord 15, 10
+ ld a, " "
+ ld [hl], a
+ ret
+
+.d_down
+ ld a, [wcf64]
+ and a
+ ret nz
+ inc a
+ ld [wcf64], a
+ hlcoord 15, 8
+ ld a, " "
+ ld [hl], a
+ hlcoord 15, 10
+ ld a, "▶"
+ ld [hl], a
+ ret
+
+.a_button
+ call PlayClickSFX
+ ld a, [wcf64]
+ and a
+ jr nz, .b_button
+ call ExitMenu
+ call ExitMenu
+ farcall ReloadMapPart
+ jp MobileStudium_JumptableIncrement
+
+.b_button
+ call ExitMenu
+ call ExitMenu
+ farcall ReloadMapPart
+ ld a, $80
+ ld [wJumptableIndex], a
+ ret
+
+Function117bb6:
+ call Function117c89
+ ld a, $1
+ ld [hBGMapMode], a
+ farcall Function118284
+ call ClearSprites
+ ld a, [wc300]
+ and a
+ jr z, .asm_117be7
+ cp $a
+ jr z, .asm_117be1
+.asm_117bd0
+ ld a, $2
+ ld [wc303], a
+ farcall DisplayMobileError
+ ld a, $80
+ ld [wJumptableIndex], a
+ ret
+
+.asm_117be1
+ ld a, $80
+ ld [wJumptableIndex], a
+ ret
+
+.asm_117be7
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+ ld a, [wcd89]
+ and $1
+ jr nz, .asm_117c16
+ ld a, [w3_d000]
+ cp $fe
+ jr nz, .asm_117c16
+ ld a, [w3_d001]
+ cp $f
+ jr nz, .asm_117c16
+ ld hl, w3_dfec
+ ld de, wcd69
+ ld c, $10
+.asm_117c0b
+ ld a, [de]
+ inc de
+ cp [hl]
+ jr nz, .asm_117c16
+ inc hl
+ dec c
+ jr nz, .asm_117c0b
+ jr .asm_117c20
+
+.asm_117c16
+ pop af
+ ld [rSVBK], a
+ ld a, $d3
+ ld [wc300], a
+ jr .asm_117bd0
+
+.asm_117c20
+ pop af
+ ld [rSVBK], a
+ farcall Function172eb9
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+ ld a, $7
+ call GetSRAMBank
+ ld hl, w3_d002
+ ld de, $b000
+ ld bc, $1000
+ call CopyBytes
+ call CloseSRAM
+ pop af
+ ld [rSVBK], a
+ jp MobileStudium_JumptableIncrement
+
+Function117c4a:
+ ld hl, MenuDataHeader_117cbc
+ call LoadMenuDataHeader
+ call MenuBox
+ call MenuBoxCoord2Tile
+ farcall ReloadMapPart
+ ld hl, MobileStadiumSuccessText
+ call PrintText
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, UnknBGPals
+ ld de, 1 palettes
+ ld c, 8
+.loop
+ push hl
+ ld a, $7fff % $100
+ ld [hli], a
+ ld a, $7fff / $100
+ ld [hl], a
+ pop hl
+ add hl, de
+ dec c
+ jr nz, .loop
+ call RotateThreePalettesRight
+ pop af
+ ld [rSVBK], a
+ ld a, $80
+ ld [wJumptableIndex], a
+ ret
+
+Function117c89:
+ ld a, $7
+ call GetSRAMBank
+ ld l, $0
+ ld h, l
+ ld de, $b000
+ ld bc, $0ffc
+.asm_117c97
+ push bc
+ ld a, [de]
+ inc de
+ ld c, a
+ ld b, $0
+ add hl, bc
+ pop bc
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_117c97
+ ld a, l
+ ld [wcd83], a
+ ld a, h
+ ld [wcd84], a
+ ld hl, $bfea
+ ld de, wcd69
+ ld bc, $10
+ call CopyBytes
+ call CloseSRAM
+ ret
+
+MenuDataHeader_117cbc: ; 0x117cbc
+ db $40 ; flags
+ db 12, 0 ; start coords
+ db 17, 19 ; end coords
+ dw NULL ; menu data 2
+ db 0 ; default option
+
+MenuDataHeader_117cc4: ; 0x117cc4
+ db $40 ; flags
+ db 7, 14 ; start coords
+ db 11, 19 ; end coords
+ dw NULL ; menu data 2
+ db 0 ; default item
+
+YesNo117ccc: ; 0x117ccc
+ db "はい"
+ next "いいえ@"
+
+MobileStadiumEntryText: ; 0x117cd3
+ text_jump _MobileStadiumEntryText
+ db "@"
+
+MobileStadiumSuccessText: ; 0x117cd8
+ text_jump _MobileStadiumSuccessText
+ db "@"
+
+MobileStudium_JumptableIncrement: ; 0x117cdd
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
diff --git a/mobile/mobile_45_sprite_engine.asm b/mobile/mobile_45_sprite_engine.asm
new file mode 100755
index 000000000..e2382fc38
--- /dev/null
+++ b/mobile/mobile_45_sprite_engine.asm
@@ -0,0 +1,922 @@
+Function115d99: ; 115d99
+ ld de, GFX_11601a
+ ld hl, VTiles0 tile $60
+ lb bc, BANK(GFX_11601a), $14
+ call Get2bpp
+ xor a
+ ld [wc305], a
+ ld [wc306], a
+ ld [wc309], a
+ ld [wc30a], a
+ ld [wc30b], a
+ ld [wc30c], a
+ ld a, $10
+ ld [wc307], a
+ ld a, $18
+ ld [wc308], a
+ ret
+
+; 115dc3
+
+Function115dc3: ; 115dc3
+ xor a
+ ld [wc305], a
+ ld a, $a0
+ ld hl, Sprites + 31 * 4
+ ld bc, 8 * 4
+ call ByteFill
+ ret
+
+; 115dd3
+
+Function115dd3: ; 115dd3
+ ld a, [wc305]
+ and a
+ ret z
+ ld a, $a0
+ ld hl, Sprites + 31 * 4
+ ld bc, 8 * 4
+ call ByteFill
+ call Function115e22
+ ld a, [wc309]
+ sla a
+ ld c, a
+ ld b, 0
+ ld hl, Unknown_115e86
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ push de
+ pop hl
+ ld de, Sprites + 31 * 4
+ ld a, [wc307]
+ ld c, a
+ ld a, [wc308]
+ ld b, a
+ ld a, [hli]
+.asm_115e04
+ push af
+ ld a, [hli]
+ add b
+ ld [de], a
+ inc de
+ ld a, [hli]
+ add c
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_115e04
+ ret
+
+; 115e18
+
+Function115e18: ; 115e18
+ ld a, c
+ ld [wc30a], a
+ xor a
+ ld [wc30b], a
+ jr Function115e2b
+
+; 115e22
+
+Function115e22: ; 115e22
+ ld hl, wc30c
+ dec [hl]
+ ret nz
+ ld hl, wc30b
+ inc [hl]
+
+Function115e2b: ; 115e2b
+ ld a, [wc30a]
+ sla a
+ ld c, a
+ ld b, 0
+ ld hl, Unknown_115e59
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ push de
+ pop hl
+ ld a, [wc30b]
+ sla a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hli]
+ cp $ff
+ jr nz, .not_end
+ xor a
+ ld [wc30b], a
+ jr Function115e2b
+
+.not_end
+ ld [wc309], a
+ ld a, [hl]
+ ld [wc30c], a
+ ret
+
+; 115e59
+
+Unknown_115e59:
+ dw Unknown_115e61
+ dw Unknown_115e6c
+ dw Unknown_115e76
+ dw Unknown_115e79
+
+; OAM idx (see Unknown_115e86), flip flags/duration
+Unknown_115e61: ; 115e61
+ db $04, $08
+ db $05, $08
+ db $06, $08
+ db $07, $08
+ db $08, $08
+ db -1
+
+Unknown_115e6c: ; 115e6c
+ db $01, $08
+ db $02, $08
+ db $03, $08
+ db $09, $08
+ db $0a, $08
+Unknown_115e76: ; 115e76
+ db $00, $08
+ db -1
+
+Unknown_115e79: ; 115e79
+ db $0b, $08
+ db $0c, $08
+ db $0d, $08
+ db $0e, $08
+ db $0f, $08
+ db $00, $08
+ db -1
+; 115e86
+
+Unknown_115e86:
+ dw Unknown_115ea6
+ dw Unknown_115eb7
+ dw Unknown_115ecc
+ dw Unknown_115ee1
+ dw Unknown_115ef6
+ dw Unknown_115f13
+ dw Unknown_115f30
+ dw Unknown_115f4d
+ dw Unknown_115f6a
+ dw Unknown_115f87
+ dw Unknown_115f9c
+ dw Unknown_115fb1
+ dw Unknown_115fc6
+ dw Unknown_115fdb
+ dw Unknown_115ff0
+ dw Unknown_116005
+
+Unknown_115ea6: ; 115ea6
+ db 4
+ dsprite 1, 0, 0, 0, $60, $01
+ dsprite 1, 0, 1, 0, $61, $01
+ dsprite 2, 0, 0, 0, $62, $01
+ dsprite 2, 0, 1, 0, $63, $01
+
+Unknown_115eb7: ; 115eb7
+ db 5
+ dsprite 0, 0, 1, 0, $64, $00
+ dsprite 1, 0, 0, 0, $60, $01
+ dsprite 1, 0, 1, 0, $61, $01
+ dsprite 2, 0, 0, 0, $62, $01
+ dsprite 2, 0, 1, 0, $63, $01
+
+Unknown_115ecc: ; 115ecc
+ db 5
+ dsprite 0, 0, 1, 0, $65, $00
+ dsprite 1, 0, 0, 0, $60, $01
+ dsprite 1, 0, 1, 0, $61, $01
+ dsprite 2, 0, 0, 0, $62, $01
+ dsprite 2, 0, 1, 0, $63, $01
+
+Unknown_115ee1: ; 115ee1
+ db 5
+ dsprite 0, 0, 1, 0, $66, $00
+ dsprite 1, 0, 0, 0, $60, $01
+ dsprite 1, 0, 1, 0, $61, $01
+ dsprite 2, 0, 0, 0, $62, $01
+ dsprite 2, 0, 1, 0, $63, $01
+
+Unknown_115ef6: ; 115ef6
+ db 7
+ dsprite 0, 0, 0, 0, $67, $01
+ dsprite 1, 0, 0, 0, $68, $01
+ dsprite 2, 0, 0, 0, $6d, $00
+ dsprite 2, 0, 1, 0, $69, $00
+ dsprite 2, 0, 2, 0, $6a, $00
+ dsprite 3, 0, 1, 0, $6b, $00
+ dsprite 3, 0, 2, 0, $6c, $00
+
+Unknown_115f13: ; 115f13
+ db 7
+ dsprite 0, 0, 0, 0, $67, $01
+ dsprite 1, 0, 0, 0, $68, $01
+ dsprite 2, 0, 0, 0, $6e, $00
+ dsprite 2, 0, 1, 0, $69, $00
+ dsprite 2, 0, 2, 0, $6a, $00
+ dsprite 3, 0, 1, 0, $6b, $00
+ dsprite 3, 0, 2, 0, $6c, $00
+
+Unknown_115f30: ; 115f30
+ db 7
+ dsprite 0, 0, 0, 0, $67, $01
+ dsprite 1, 0, 0, 0, $68, $01
+ dsprite 2, 0, 0, 0, $6f, $00
+ dsprite 2, 0, 1, 0, $69, $00
+ dsprite 2, 0, 2, 0, $6a, $00
+ dsprite 3, 0, 1, 0, $6b, $00
+ dsprite 3, 0, 2, 0, $6c, $00
+
+Unknown_115f4d: ; 115f4d
+ db 7
+ dsprite 0, 0, 0, 0, $67, $01
+ dsprite 1, 0, 0, 0, $68, $01
+ dsprite 2, 0, 0, 0, $70, $00
+ dsprite 2, 0, 1, 0, $69, $00
+ dsprite 2, 0, 2, 0, $6a, $00
+ dsprite 3, 0, 1, 0, $6b, $00
+ dsprite 3, 0, 2, 0, $6c, $00
+
+Unknown_115f6a: ; 115f6a
+ db 7
+ dsprite 0, 0, 0, 0, $67, $01
+ dsprite 1, 0, 0, 0, $68, $01
+ dsprite 2, 0, 0, 0, $71, $00
+ dsprite 2, 0, 1, 0, $69, $00
+ dsprite 2, 0, 2, 0, $6a, $00
+ dsprite 3, 0, 1, 0, $6b, $00
+ dsprite 3, 0, 2, 0, $6c, $00
+
+Unknown_115f87: ; 115f87
+ db 5
+ dsprite 0, 0, 1, 0, $72, $00
+ dsprite 1, 0, 0, 0, $60, $01
+ dsprite 1, 0, 1, 0, $61, $01
+ dsprite 2, 0, 0, 0, $62, $01
+ dsprite 2, 0, 1, 0, $63, $01
+
+Unknown_115f9c: ; 115f9c
+ db 5
+ dsprite 0, 0, 1, 0, $73, $00
+ dsprite 1, 0, 0, 0, $60, $01
+ dsprite 1, 0, 1, 0, $61, $01
+ dsprite 2, 0, 0, 0, $62, $01
+ dsprite 2, 0, 1, 0, $63, $01
+
+Unknown_115fb1: ; 115fb1
+ db 5
+ dsprite 0, 1, 1, 0, $64, $60
+ dsprite 1, 0, 0, 0, $60, $01
+ dsprite 1, 0, 1, 0, $61, $01
+ dsprite 2, 0, 0, 0, $62, $01
+ dsprite 2, 0, 1, 0, $63, $01
+
+Unknown_115fc6: ; 115fc6
+ db 5
+ dsprite 0, 1, 1, 0, $65, $60
+ dsprite 1, 0, 0, 0, $60, $01
+ dsprite 1, 0, 1, 0, $61, $01
+ dsprite 2, 0, 0, 0, $62, $01
+ dsprite 2, 0, 1, 0, $63, $01
+
+Unknown_115fdb: ; 115fdb
+ db 5
+ dsprite 0, 1, 1, 0, $66, $60
+ dsprite 1, 0, 0, 0, $60, $01
+ dsprite 1, 0, 1, 0, $61, $01
+ dsprite 2, 0, 0, 0, $62, $01
+ dsprite 2, 0, 1, 0, $63, $01
+
+Unknown_115ff0: ; 115ff0
+ db 5
+ dsprite 0, 1, 1, 0, $72, $60
+ dsprite 1, 0, 0, 0, $60, $01
+ dsprite 1, 0, 1, 0, $61, $01
+ dsprite 2, 0, 0, 0, $62, $01
+ dsprite 2, 0, 1, 0, $63, $01
+
+Unknown_116005: ; 116005
+ db 5
+ dsprite 0, 1, 1, 0, $73, $60
+ dsprite 1, 0, 0, 0, $60, $01
+ dsprite 1, 0, 1, 0, $61, $01
+ dsprite 2, 0, 0, 0, $62, $01
+ dsprite 2, 0, 1, 0, $63, $01
+; 11601a
+
+GFX_11601a:: ; 11601a
+INCBIN "gfx/unknown/11601a.2bpp"
+
+
+Function11615a: ; 11615a
+ xor a
+ ld [wc30d], a
+ ld [$c319], a
+ ld [wc310], a
+ ld [wc311], a
+ ld [wc312], a
+ ld [wc313], a
+ ld [wc314], a
+ ld [wc314 + 1], a
+ ld [wc314 + 4], a
+ ld [wc3f6], a
+ ld [wc3f8], a
+ ld [wc3f2], a
+ ld [wc3f4], a
+ ld a, $24
+ ld [wc3f5], a
+ ld a, $7
+ ld [wc3f7], a
+ ld a, $b0
+ ld [wc30e], a
+ ld [wc3f1], a
+ ld a, $48
+ ld [wc30f], a
+ ld [wc3f3], a
+ ret
+
+; 11619d
+
+Function11619d: ; 11619d
+ ld a, [wc30d]
+ and a
+ ret z
+ ld a, [$c319]
+ cp $2
+ jr c, .asm_1161b4
+ ld a, $a0
+ ld hl, Sprites
+ ld bc, $0064
+ call ByteFill
+
+.asm_1161b4
+ call Function1161b8
+ ret
+
+; 1161b8
+
+Function1161b8: ; 1161b8
+ ld a, [$c319]
+ ld e, a
+ ld d, 0
+ ld hl, .Jumptable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+; 1161c7
+
+.Jumptable: ; 1161c7
+ dw Function1161d5
+ dw Function116294
+ dw Function1162cb
+ dw Function1162f2
+ dw Function1163c0
+ dw Function11636e
+ dw Function116441
+; 1161d5
+
+Function1161d5: ; 1161d5
+ ld a, [rSVBK]
+ push af
+
+ ld a, $6
+ ld [rSVBK], a
+
+ ld hl, Unknown_117356
+ ld de, wDecompressScratch
+ ld bc, $0300
+ call CopyBytes
+
+ di
+
+.wait_for_vblank
+; Wait until a vblank would occur had interrupts not just been disabled.
+ ld a, [rLY]
+ cp $91
+ jr nz, .wait_for_vblank
+
+ ld a, $d0
+ ld [rHDMA1], a
+ ld a, $0
+ ld [rHDMA2], a
+ ld a, $1c
+ ld [rHDMA3], a
+ xor a
+ ld [rHDMA4], a
+ ld a, $8
+ ld [rHDMA5], a
+
+ ld a, $d0
+ ld [rHDMA1], a
+ ld a, $80
+ ld [rHDMA2], a
+ ld a, $1c
+ ld [rHDMA3], a
+ ld a, $80
+ ld [rHDMA4], a
+ ld a, $8
+ ld [rHDMA5], a
+
+ ld a, $d1
+ ld [rHDMA1], a
+ ld a, $0
+ ld [rHDMA2], a
+ ld a, $1d
+ ld [rHDMA3], a
+ xor a
+ ld [rHDMA4], a
+ ld a, $8
+ ld [rHDMA5], a
+
+ ld a, $1
+ ld [rVBK], a
+
+ ld a, $d1
+ ld [rHDMA1], a
+ ld a, $80
+ ld [rHDMA2], a
+ ld a, $1c
+ ld [rHDMA3], a
+ xor a
+ ld [rHDMA4], a
+ ld a, $8
+ ld [rHDMA5], a
+
+ ld a, $d2
+ ld [rHDMA1], a
+ ld a, $0
+ ld [rHDMA2], a
+ ld a, $1c
+ ld [rHDMA3], a
+ ld a, $80
+ ld [rHDMA4], a
+ ld a, $8
+ ld [rHDMA5], a
+
+ ld a, $d2
+ ld [rHDMA1], a
+ ld a, $80
+ ld [rHDMA2], a
+ ld a, $1d
+ ld [rHDMA3], a
+ xor a
+ ld [rHDMA4], a
+ ld a, $8
+ ld [rHDMA5], a
+
+ xor a
+ ld [rVBK], a
+
+ ei
+
+ pop af
+ ld [rSVBK], a
+
+ farcall ReloadMapPart
+ ld a, $8
+ ld [MusicFade], a
+ ld de, MUSIC_MOBILE_ADAPTER
+ ld a, e
+ ld [MusicFadeID], a
+ ld a, d
+ ld [MusicFadeID + 1], a
+ ld a, [$c319]
+ inc a
+ ld [$c319], a
+ ret
+
+; 11628c
+
+MenuDataHeader_11628c: ; 11628c
+ db $40 ; flags
+ db 6, 0 ; start coords
+ db 17, 19 ; end coords
+ dw NULL
+ db 0 ; default option
+; 116294
+
+Function116294: ; 116294
+ farcall Function170d02
+ ld a, [$c319]
+ inc a
+ ld [$c319], a
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, UnknBGPals palette 6
+ ld de, $c320
+ ld bc, 2 palettes
+ call CopyBytes
+ ld hl, Palette_11734e
+ ld de, UnknBGPals palette 7
+ ld bc, 1 palettes
+ call CopyBytes
+ call SetPalettes
+ pop af
+ ld [rSVBK], a
+ ld a, $30
+ ld [hWY], a
+ ret
+
+; 1162cb
+
+Function1162cb: ; 1162cb
+ farcall Function170cc6
+ ld a, [$c319]
+ inc a
+ ld [$c319], a
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_11730e
+ ld de, UnknOBPals + 2 palettes
+ ld bc, 6 palettes
+ call CopyBytes
+ call SetPalettes
+ pop af
+ ld [rSVBK], a
+ ret
+
+; 1162f2
+
+Function1162f2: ; 1162f2
+ call Function11659d
+ call Function116758
+ call Function1167a6
+ ld a, [wc310]
+ cp EGG
+ ret z
+ sla a
+ ld c, a
+ ld b, 0
+ ld hl, Unknown_1168c5
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ push de
+ pop hl
+ ld a, [wc30e]
+ ld c, a
+ ld a, [wc30f]
+ ld b, a
+ ld a, [wc314 + 4]
+ ld e, a
+ ld a, [hli]
+ sub e
+ ld de, Sprites + $24
+.asm_116321
+ push af
+ ld a, [hli]
+ add b
+ ld [de], a
+ inc de
+ ld a, [hli]
+ add c
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_116321
+ call Function116468
+ ld a, [wc3f5]
+ sla a
+ ld c, a
+ ld b, 0
+ ld hl, Unknown_1168c5
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ push de
+ pop hl
+ ld a, [wc3f1]
+ ld c, a
+ ld a, [wc3f3]
+ ld b, a
+ ld a, [wc3f8]
+ ld e, a
+ ld a, [hli]
+ sub e
+ ld de, Sprites
+.asm_11635a
+ push af
+ ld a, [hli]
+ add b
+ ld [de], a
+ inc de
+ ld a, [hli]
+ add c
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_11635a
+ ret
+
+; 11636e
+
+Function11636e: ; 11636e
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, BGPals
+ ld de, UnknBGPals
+ ld bc, $0040
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ call SetPalettes
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, $a0
+ ld hl, Sprites
+ ld bc, 16 * 4
+ call ByteFill
+ ld a, $90
+ ld [hWY], a
+ call UpdateSprites
+ pop af
+ ld [rSVBK], a
+ farcall ReloadMapPart
+ ld a, $8
+ ld [MusicFade], a
+ ld a, [wMapMusic]
+ ld [MusicFadeID], a
+ xor a
+ ld [MusicFadeID + 1], a
+ xor a
+ ld [$c319], a
+ ld [wc30d], a
+ ret
+
+; 1163c0
+
+Function1163c0: ; 1163c0
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, $a0
+ ld hl, Sprites
+ ld bc, 16 * 4
+ call ByteFill
+ call DelayFrame
+ farcall Function14146
+ ld b, SCGB_MAPPALS
+ call GetSGBLayout
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $c320
+ ld de, wd030
+ ld bc, $0010
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ call SetPalettes
+ call DelayFrame
+ ld a, $90
+ ld [hWY], a
+ call UpdateSprites
+ farcall Function14157
+ pop af
+ ld [rSVBK], a
+ farcall ReloadMapPart
+ ld a, [wLinkMode]
+ cp $4
+ jr z, .asm_11642a
+ ld a, $8
+ ld [MusicFade], a
+ ld a, [wMapMusic]
+ ld [MusicFadeID], a
+ xor a
+ ld [MusicFadeID + 1], a
+ jr .asm_116439
+
+.asm_11642a
+ ld a, $8
+ ld [MusicFade], a
+ ld a, $0
+ ld [MusicFadeID], a
+ ld a, $0
+ ld [MusicFadeID + 1], a
+
+.asm_116439
+ xor a
+ ld [$c319], a
+ ld [wc30d], a
+ ret
+
+; 116441
+
+Function116441: ; 116441
+ farcall Function17d405
+ ld a, $90
+ ld [hWY], a
+ farcall ReloadMapPart
+ ld a, $8
+ ld [MusicFade], a
+ ld a, [wMapMusic]
+ ld [MusicFadeID], a
+ xor a
+ ld [MusicFadeID + 1], a
+ xor a
+ ld [$c319], a
+ ld [wc30d], a
+ ret
+
+; 116468
+
+Function116468: ; 116468
+ call Function116567
+ ld a, [wc314]
+ cp $d
+ jr nz, .asm_1164a8
+ ld hl, wc30e
+ ld a, [hl]
+ cp $50
+ jr nc, .asm_116484
+ ld a, $50
+ sub [hl]
+ add $50
+ ld [wc3f1], a
+ jr .asm_11648d
+
+.asm_116484
+ sub $50
+ ld c, a
+ ld a, $50
+ sub c
+ ld [wc3f1], a
+
+.asm_11648d
+ ld hl, wc30f
+ ld a, [hl]
+ cp $60
+ jr nc, .asm_11649e
+ ld a, $60
+ sub [hl]
+ add $60
+ ld [wc3f3], a
+ ret
+
+.asm_11649e
+ sub $60
+ ld c, a
+ ld a, $60
+ sub c
+ ld [wc3f3], a
+ ret
+
+.asm_1164a8
+ ld hl, wc30e
+ ld a, $b0
+ cp [hl]
+ jr nc, .asm_1164b8
+ ld a, [wc3f1]
+ and a
+ jr z, .asm_11650b
+ jr .asm_1164f2
+
+.asm_1164b8
+ ld a, [wc3f1]
+ sub [hl]
+ jr nc, .asm_1164c1
+ xor $ff
+ inc a
+
+.asm_1164c1
+ ld b, a
+ ld c, $0
+ ld a, $5
+.asm_1164c6
+ srl b
+ rr c
+ dec a
+ jr nz, .asm_1164c6
+ ld a, c
+ ld [wc3fa], a
+ ld a, b
+ ld [wc3f9], a
+ ld a, [wc3f1]
+ sub [hl]
+ jr c, .asm_1164f2
+ ld c, $0
+ ld a, [wc3fa]
+ xor $ff
+ add $1
+ rl c
+ ld [wc3fa], a
+ ld a, [wc3f9]
+ xor $ff
+ add c
+ ld [wc3f9], a
+
+.asm_1164f2
+ ld a, [wc3f2]
+ ld l, a
+ ld a, [wc3f1]
+ ld h, a
+ ld a, [wc3fa]
+ ld e, a
+ ld a, [wc3f9]
+ ld d, a
+ add hl, de
+ ld a, l
+ ld [wc3f2], a
+ ld a, h
+ ld [wc3f1], a
+
+.asm_11650b
+ ld hl, wc30f
+ ld a, $b0
+ cp [hl]
+ jr c, .asm_11654d
+ ld a, [wc3f3]
+ sub [hl]
+ jr nc, .asm_11651c
+ xor $ff
+ inc a
+
+.asm_11651c
+ ld b, a
+ ld c, $0
+ ld a, $5
+.asm_116521
+ srl b
+ rr c
+ dec a
+ jr nz, .asm_116521
+ ld a, c
+ ld [wc3fc], a
+ ld a, b
+ ld [wc3fb], a
+ ld a, [wc3f3]
+ sub [hl]
+ jr c, .asm_11654d
+ ld c, $0
+ ld a, [wc3fc]
+ xor $ff
+ add $1
+ rl c
+ ld [wc3fc], a
+ ld a, [wc3fb]
+ xor $ff
+ add c
+ ld [wc3fb], a
+
+.asm_11654d
+ ld a, [wc3f4]
+ ld l, a
+ ld a, [wc3f3]
+ ld h, a
+ ld a, [wc3fc]
+ ld e, a
+ ld a, [wc3fb]
+ ld d, a
+ add hl, de
+ ld a, l
+ ld [wc3f4], a
+ ld a, h
+ ld [wc3f3], a
+ ret
diff --git a/mobile/mobile_46.asm b/mobile/mobile_46.asm
new file mode 100755
index 000000000..150f9baa7
--- /dev/null
+++ b/mobile/mobile_46.asm
@@ -0,0 +1,7987 @@
+SECTION "bank46", ROMX
+
+Function118000: ; 118000
+ ld a, $1
+ ld [wcd38], a
+ jr asm_11800b
+
+Function118007: ; 118007
+ xor a
+ ld [wcd38], a
+
+asm_11800b
+ call BattleTowerRoomMenu_InitRAM
+ ld a, $18
+ ld [wcd33], a
+ ld a, $19
+ ld [wcd34], a
+ ld a, $4
+ ld [wc3f0], a
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+.loop
+ call JoyTextDelay
+ call Function118473
+ ld a, [wcf66]
+ cp $1b
+ jr c, .skip
+ ld a, [wcd34]
+ ld [wcf66], a
+
+.skip
+ call Function1184a5
+ call BattleTowerRoomMenu_WriteMessage
+ farcall Function115dd3
+ farcall Function11619d
+ call DelayFrame
+ ld a, [wcf66]
+ ld hl, wcd33
+ cp [hl]
+ jr nz, .loop
+ pop af
+ ld [rSVBK], a
+ call BattleTowerRoomMenu_Cleanup
+ call ReturnToMapFromSubmenu
+BattleTowerRoomMenu_DoNothing: ; 11805e (46:405e)
+ ret
+; 11805f
+
+Function11805f: ; 11805f
+ ld a, $1
+ ld [wcd38], a
+ call BattleTowerRoomMenu_InitRAM
+ ld a, $18
+ ld [wcd33], a
+ ld a, $19
+ ld [wcd34], a
+ ld a, $4
+ ld [wc3f0], a
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+.asm_11807d
+ call JoyTextDelay
+ call Function118473
+ ld a, [wcf66]
+ cp $1b
+ jr c, .asm_118090
+ ld a, [wcd34]
+ ld [wcf66], a
+
+.asm_118090
+ call Function11857c
+ call BattleTowerRoomMenu_WriteMessage
+ farcall Function115dd3
+ farcall Function11619d
+ call DelayFrame
+ ld a, [wcf66]
+ ld hl, wcd33
+ cp [hl]
+ jr nz, .asm_11807d
+ pop af
+ ld [rSVBK], a
+ call BattleTowerRoomMenu_Cleanup
+ call ReturnToMapFromSubmenu
+ ret
+; 1180b8
+
+Function1180b8: ; 1180b8
+ call BattleTowerRoomMenu_InitRAM
+ ld a, $22
+ ld [wcd33], a
+ ld a, $23
+ ld [wcd34], a
+ ld a, $4
+ ld [wc3f0], a
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+.asm_1180d1
+ call JoyTextDelay
+ call Function118473
+ ld a, [wcf66]
+ cp $28
+ jr c, .asm_1180e4
+ ld a, [wcd34]
+ ld [wcf66], a
+
+.asm_1180e4
+ ld a, [wcf66]
+ cp $10
+ jr c, .asm_1180f2
+ cp $16
+ jr nc, .asm_1180f2
+ call Function11884c
+
+.asm_1180f2
+ call Function1184ec
+ call BattleTowerRoomMenu_WriteMessage
+ farcall Function115dd3
+ farcall Function11619d
+ call DelayFrame
+ ld a, [wcf66]
+ ld hl, wcd33
+ cp [hl]
+ jr nz, .asm_1180d1
+ pop af
+ ld [rSVBK], a
+ call BattleTowerRoomMenu_Cleanup
+ call ReturnToMapFromSubmenu
+ ret
+; 11811a
+
+Function11811a: ; 11811a
+ ld a, 1
+ ld [wcd38], a
+ jr Function118125
+
+_BattleTowerRoomMenu: ; 118121
+ xor a
+ ld [wcd38], a
+Function118125: ; 118125
+ call BattleTowerRoomMenu_InitRAM
+ ld a, $3
+ ld [wcd33], a
+ ld a, $d
+ ld [wcd34], a
+ ld a, $4
+ ld [wc3f0], a
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+.loop
+ call JoyTextDelay
+ call Function118473
+ ld a, [wcf66]
+ cp $f
+ jr c, .skip
+ ld a, [wcd34]
+ ld [wcf66], a
+.skip
+ call BattleTowerRoomMenu_Jumptable
+ call BattleTowerRoomMenu_WriteMessage
+ farcall Function115dd3
+ farcall Function11619d
+ call DelayFrame
+ ld a, [wcf66]
+ ld hl, wcd33
+ cp [hl]
+ jr nz, .loop
+ xor a
+ ld [w3_d000], a
+ pop af
+ ld [rSVBK], a
+ call BattleTowerRoomMenu_Cleanup
+ call Function118180
+ call ReturnToMapFromSubmenu
+ ret
+; 118180
+
+Function118180: ; 118180
+ ld a, [ScriptVar]
+ and a
+ ret nz
+ ld a, [wcd38]
+ and a
+ ret z
+ ld a, $5
+ call GetSRAMBank
+ ld hl, wcd69
+ ld de, $a89c
+ ld bc, $0016
+ call CopyBytes
+
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+
+ ld de, w3_d202
+ ld c, $96
+ farcall CheckStringForErrors_IgnoreTerminator
+ jr c, .return_d3
+
+ ld de, w3_d202
+ lb bc, 1, $96
+ farcall CheckStringContainsLessThanBNextCharacters
+ jr c, .return_d3
+
+ ld hl, w3_d202
+ ld de, $a8b2
+ ld bc, $0096
+ call CopyBytes
+.reset_banks
+ pop af
+ ld [rSVBK], a
+ call CloseSRAM
+ ret
+
+.return_d3
+ ld a, $d3
+ ld [wc300], a
+ ld [ScriptVar], a
+ jr .reset_banks
+; 1181da
+
+Function1181da: ; 1181da
+ call BattleTowerRoomMenu_InitRAM
+ ld a, $2
+ ld [wcd38], a
+ ld a, $21
+ ld [wcd33], a
+ ld a, $22
+ ld [wcd34], a
+ ld a, $4
+ ld [wc3f0], a
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+.asm_1181f8
+ call JoyTextDelay
+ call Function118473
+ ld a, [wcf66]
+ cp $28
+ jr c, .asm_11820b
+ ld a, [wcd34]
+ ld [wcf66], a
+
+.asm_11820b
+ call Function1185c3
+ call BattleTowerRoomMenu_WriteMessage
+ farcall Function115dd3
+ farcall Function11619d
+ call DelayFrame
+ ld a, [wcf66]
+ ld hl, wcd33
+ cp [hl]
+ jr nz, .asm_1181f8
+ pop af
+ ld [rSVBK], a
+ call BattleTowerRoomMenu_Cleanup
+ call ReturnToMapFromSubmenu
+ ret
+; 118233
+
+Function118233: ; 118233
+ call BattleTowerRoomMenu_InitRAM
+ ld a, $1b
+ ld [wcd33], a
+ ld a, $1c
+ ld [wcd34], a
+ ld a, $6
+ ld [wc3f0], a
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+.asm_11824c
+ call JoyTextDelay
+ call Function118473
+ ld a, [wcf66]
+ cp $1e
+ jr c, .asm_11825f
+ ld a, [wcd34]
+ ld [wcf66], a
+
+.asm_11825f
+ call Function118624
+ call BattleTowerRoomMenu_WriteMessage
+ farcall Function115dd3
+ farcall Function11619d
+ call DelayFrame
+ ld a, [wcf66]
+ ld hl, wcd33
+ cp [hl]
+ jr nz, .asm_11824c
+ pop af
+ ld [rSVBK], a
+ call BattleTowerRoomMenu_Cleanup
+ ret
+; 118284
+
+Function118284: ; 118284
+ call BattleTowerRoomMenu_InitRAM
+ ld a, $19
+ ld [wcd33], a
+ ld a, $1e
+ ld [wcd34], a
+ ld a, $5
+ ld [wc3f0], a
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+.asm_11829d
+ call JoyTextDelay
+ call Function118473
+ ld a, [wcf66]
+ cp $20
+ jr c, .asm_1182b0
+ ld a, [wcd34]
+ ld [wcf66], a
+.asm_1182b0
+ call Function1186f5
+ call BattleTowerRoomMenu_WriteMessage
+ farcall Function115dd3
+ farcall Function11619d
+ call DelayFrame
+ ld a, [wcf66]
+ ld hl, wcd33
+ cp [hl]
+ jr nz, .asm_11829d
+ pop af
+ ld [rSVBK], a
+ call BattleTowerRoomMenu_Cleanup
+ ret
+; 1182d5 (46:42d5)
+
+
+Function1182d5: ; 1182d5
+ call BattleTowerRoomMenu_InitRAM
+ ld a, $18
+ ld [wcd33], a
+ ld a, $19
+ ld [wcd34], a
+ ld a, $4
+ ld [wc3f0], a
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+.asm_1182ee
+ call JoyTextDelay
+ call Function118473
+ ld a, [wcf66]
+ cp $1b
+ jr c, .asm_118301
+ ld a, [wcd34]
+ ld [wcf66], a
+
+.asm_118301
+ call Function118746
+ call BattleTowerRoomMenu_WriteMessage
+ farcall Function115dd3
+ farcall Function11619d
+ call DelayFrame
+ ld a, [wcf66]
+ ld hl, wcd33
+ cp [hl]
+ jr nz, .asm_1182ee
+ pop af
+ ld [rSVBK], a
+ call BattleTowerRoomMenu_Cleanup
+ call ReturnToMapFromSubmenu
+ ret
+; 118329
+
+Function118329: ; 118329
+ call BattleTowerRoomMenu_InitRAM
+ ld a, $15
+ ld [wcd33], a
+ ld a, $16
+ ld [wcd34], a
+ ld a, $6
+ ld [wc3f0], a
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+.asm_118342
+ call JoyTextDelay
+ call Function118473
+ ld a, [wcf66]
+ cp $18
+ jr c, .asm_118355
+ ld a, [wcd34]
+ ld [wcf66], a
+
+.asm_118355
+ call Function118671
+ call BattleTowerRoomMenu_WriteMessage
+ farcall Function115dd3
+ farcall Function11619d
+ call DelayFrame
+ ld a, [wcf66]
+ ld hl, wcd33
+ cp [hl]
+ jr nz, .asm_118342
+ pop af
+ ld [rSVBK], a
+ call BattleTowerRoomMenu_Cleanup
+ ret
+; 11837a
+
+Function11837a: ; 11837a
+ call BattleTowerRoomMenu_InitRAM
+ ld a, $16
+ ld [wcd33], a
+ ld a, $17
+ ld [wcd34], a
+ ld a, $6
+ ld [wc3f0], a
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+.asm_118393
+ call JoyTextDelay
+ call Function118473
+ ld a, [wcf66]
+ cp $19
+ jr c, .asm_1183a6
+ ld a, [wcd34]
+ ld [wcf66], a
+
+.asm_1183a6
+ call Function1186b2
+ call BattleTowerRoomMenu_WriteMessage
+ farcall Function115dd3
+ farcall Function11619d
+ call DelayFrame
+ ld a, [wcf66]
+ ld hl, wcd33
+ cp [hl]
+ jr nz, .asm_118393
+ pop af
+ ld [rSVBK], a
+ call BattleTowerRoomMenu_Cleanup
+ ret
+; 1183cb
+
+BattleTowerRoomMenu_InitRAM: ; 1183cb
+ di
+ ld a, [rIE]
+ ld [wcd32], a
+ call DoubleSpeed
+ xor a
+ ld [rIF], a
+ ld [wc300], a
+ ld [wc301], a
+ ld [wc302], a
+ ld [wcd80], a
+ ld [wcd65], a
+ ld [wcd66], a
+ ld [wcd67], a
+ ld [wcd68], a
+ ld [$c31a], a
+ ld [wcd89], a
+ ld [wcd8a], a
+ ld [wcd8b], a
+ ld [wc3ec], a
+ ld [wc3ed], a
+ ld [wc3ee], a
+ ld [wc3ef], a
+ ld hl, VramState
+ ld a, [hl]
+ ld [wcd7f], a
+ set 1, [hl]
+ ld a, $f
+ ld [rIE], a
+ ld a, $1
+ ld [hMobileReceive], a
+ ld [hMobile], a
+ ei
+ farcall MobileFunc_106462
+ farcall Function106464
+ farcall Function115d99
+ farcall Function11615a
+ ld a, $5
+ call GetSRAMBank
+ xor a
+ ld [$bfff], a
+ call CloseSRAM
+ ret
+; 118440
+
+Function118440: ; 118440
+ push af
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$bfff]
+ inc a
+ ld [$bfff], a
+ call CloseSRAM
+ pop af
+ ret
+; 118452
+
+BattleTowerRoomMenu_Cleanup: ; 118452
+ di
+ xor a
+ ld [hMobileReceive], a
+ ld [hMobile], a
+ ld [hVBlank], a
+ call NormalSpeed
+ xor a
+ ld [rIF], a
+ ld a, [wcd32]
+ ld [rIE], a
+ ei
+ ld a, [wcd7f]
+ ld [VramState], a
+ ld a, [wc300]
+ ld [ScriptVar], a
+ ret
+; 118473
+
+Function118473: ; 118473
+ ld a, [wcd65]
+ and a
+ ret z
+ ld a, [wcd66]
+ inc a
+ ld [wcd66], a
+ cp 60
+ ret nz
+ xor a
+ ld [wcd66], a
+ ld a, [wcd67]
+ inc a
+ ld [wcd67], a
+ cp 60
+ ret nz
+ ld a, [wcd68]
+ inc a
+ ld [wcd68], a
+ cp 99
+ jr z, .ninety_nine
+ xor a
+ ld [wcd67], a
+ ret
+
+.ninety_nine
+ xor a
+ ld [wcd65], a
+ ret
+; 1184a5
+
+Function1184a5: ; 1184a5
+ jumptable .Jumptable, wcf66
+; 1184b4
+
+.Jumptable: ; 1184b4
+ dw Function11886e
+ dw Function118880
+ dw Function11878d
+ dw Function1188b0
+ dw Function11878d
+ dw Function1188b8
+ dw Function11878d
+ dw Function1188c0
+ dw Function11878d
+ dw Function1188c8
+ dw Function11878d
+ dw Function118903
+ dw Function118a8f
+ dw Function11878d
+ dw Function118d80
+ dw Function118d9b
+ dw Function11878d
+ dw Function118ded
+ dw Function118e6d
+ dw Function11878d
+ dw Function11984e
+ dw Function118e76
+ dw Function118e7e
+ dw Function11878d
+ dw BattleTowerRoomMenu_DoNothing
+ dw Function118e76
+ dw BattleTowerRoomMenu_CallRoomMenu2
+ dw Function118e76
+; 1184ec
+
+Function1184ec: ; 1184ec
+ jumptable .Jumptable, wcf66
+; 1184fb
+
+.Jumptable: ; 1184fb
+ dw Function11886e
+ dw Function118880
+ dw Function11878d
+ dw Function1188b0
+ dw Function11878d
+ dw Function1188b8
+ dw Function11878d
+ dw Function1188c0
+ dw Function11878d
+ dw Function1188c8
+ dw Function11878d
+ dw Function118903
+ dw Function119954
+ dw Function11878d
+ dw Function119973
+ dw Function11878d
+ dw Function119987
+ dw Function11878d
+ dw Function1199b4
+ dw Function1199ca
+ dw Function11878d
+ dw Function1199e2
+ dw Function119b0d
+ dw Function11878d
+ dw Function119b6b
+ dw Function119b3b
+ dw Function11878d
+ dw Function119b52
+ dw Function11878d
+ dw Function118e6d
+ dw Function11878d
+ dw Function118e76
+ dw Function118e7e
+ dw Function11878d
+ dw BattleTowerRoomMenu_DoNothing
+ dw Function118e76
+ dw BattleTowerRoomMenu_CallRoomMenu2
+ dw Function119b45
+ dw Function11878d
+ dw Function119ac9
+ dw Function118e76
+; 11854d
+
+BattleTowerRoomMenu_Jumptable: ; 11854d
+ jumptable .Jumptable, wcf66
+; 11855c
+
+.Jumptable: ; 11855c
+ dw BattleTowerRoomMenu_PickLevelMessage
+ dw BattleTowerRoomMenu_PlacePickLevelMenu
+ dw BattleTowerRoomMenu_UpdatePickLevelMenu
+ dw BattleTowerRoomMenu_DoNothing
+ dw BattleTowerRoomMenu_PartyMonTopsThisLevelMessage
+ dw BattleTowerRoomMenu_WaitForMessage
+ dw BattleTowerRoomMenu_DelayRestartMenu
+ dw BattleTowerRoomMenu_QuitMessage
+ dw BattleTowerRoomMenu_PlaceYesNoMenu
+ dw BattleTowerRoomMenu_UpdateYesNoMenu
+ dw BattleTowerRoomMenu_UberRestrictionMessage
+ dw BattleTowerRoomMenu_WaitForMessage
+ dw BattleTowerRoomMenu_DelayRestartMenu
+ dw Function118e76 ; mobile
+ dw BattleTowerRoomMenu_CallRoomMenu2 ; mobile
+ dw Function118e76 ; mobile
+; 11857c
+
+Function11857c: ; 11857c
+ jumptable .Jumptable, wcf66
+; 11858b
+
+.Jumptable: ; 11858b
+ dw Function11886e
+ dw Function118880
+ dw Function11878d
+ dw Function1188b0
+ dw Function11878d
+ dw Function1188b8
+ dw Function11878d
+ dw Function1188c0
+ dw Function11878d
+ dw Function1188c8
+ dw Function11878d
+ dw Function118903
+ dw Function118a7a
+ dw Function11878d
+ dw Function11891c
+ dw Function1198ee
+ dw Function1198f7
+ dw Function11878d
+ dw Function119937
+ dw Function118e6d
+ dw Function11878d
+ dw Function118e76
+ dw Function118e7e
+ dw Function11878d
+ dw BattleTowerRoomMenu_DoNothing
+ dw Function118e76
+ dw BattleTowerRoomMenu_CallRoomMenu2
+ dw Function118e76
+; 1185c3
+
+Function1185c3: ; 1185c3
+ jumptable .Jumptable, wcf66
+; 1185d2
+
+.Jumptable: ; 1185d2
+ dw Function11886e
+ dw Function118880
+ dw Function11878d
+ dw Function1188b0
+ dw Function11878d
+ dw Function1188b8
+ dw Function11878d
+ dw Function1188c0
+ dw Function11878d
+ dw Function1188c8
+ dw Function11878d
+ dw Function118903
+ dw Function118aa4
+ dw Function11878d
+ dw Function118e92
+ dw Function11878d
+ dw Function118eb0
+ dw Function118ec6
+ dw Function118f0d
+ dw Function118f14
+ dw Function118f5e
+ dw Function11878d
+ dw Function118fc0
+ dw Function11878d
+ dw Function119054
+ dw Function1190d0
+ dw Function11878d
+ dw Function1190ec
+ dw Function118e6d
+ dw Function11878d
+ dw Function118e76
+ dw Function118e7e
+ dw Function11878d
+ dw BattleTowerRoomMenu_DoNothing
+ dw Function118e76
+ dw BattleTowerRoomMenu_CallRoomMenu2
+ dw BattleTowerRoomMenu_QuitMessage
+ dw BattleTowerRoomMenu_PlaceYesNoMenu
+ dw BattleTowerRoomMenu_UpdateYesNoMenu
+ dw Function11914e
+ dw Function118e76
+; 118624
+
+Function118624: ; 118624
+ jumptable .Jumptable, wcf66
+; 118633
+
+.Jumptable: ; 118633
+ dw Function118866
+ dw Function118880
+ dw Function11878d
+ dw Function1188b0
+ dw Function11878d
+ dw Function1188b8
+ dw Function11878d
+ dw Function1188c0
+ dw Function11878d
+ dw Function1188c8
+ dw Function11878d
+ dw Function118903
+ dw Function118aa4
+ dw Function11878d
+ dw Function118e92
+ dw Function11878d
+ dw Function11915d
+ dw Function118f68
+ dw Function11878d
+ dw Function119009
+ dw Function11878d
+ dw Function119054
+ dw Function118e6d
+ dw Function11878d
+ dw Function118e76
+ dw Function118e7e
+ dw Function11878d
+ dw BattleTowerRoomMenu_DoNothing
+ dw Function118e76
+ dw BattleTowerRoomMenu_CallRoomMenu2
+ dw Function118e76
+; 118671
+
+Function118671: ; 118671
+ jumptable .Jumptable, wcf66
+; 118680
+
+.Jumptable: ; 118680
+ dw Function118866
+ dw Function118880
+ dw Function11878d
+ dw Function1188b0
+ dw Function11878d
+ dw Function1188b8
+ dw Function11878d
+ dw Function1188c0
+ dw Function11878d
+ dw Function1188c8
+ dw Function11878d
+ dw Function118903
+ dw Function119380
+ dw Function119388
+ dw Function1193a0
+ dw Function11878d
+ dw Function118e6d
+ dw Function11878d
+ dw Function118e76
+ dw Function118e7e
+ dw Function11878d
+ dw BattleTowerRoomMenu_DoNothing
+ dw Function118e76
+ dw BattleTowerRoomMenu_CallRoomMenu2
+ dw Function118e76
+; 1186b2
+
+Function1186b2: ; 1186b2
+ jumptable .Jumptable, wcf66
+; 1186c1
+
+.Jumptable: ; 1186c1
+ dw Function118866
+ dw Function118880
+ dw Function11878d
+ dw Function1188b0
+ dw Function11878d
+ dw Function1188b8
+ dw Function11878d
+ dw Function1188c0
+ dw Function11878d
+ dw Function1188c8
+ dw Function11878d
+ dw Function118903
+ dw Function119380
+ dw Function1193e3
+ dw Function1193fb
+ dw Function11878d
+ dw Function119413
+ dw Function118e6d
+ dw Function11878d
+ dw Function118e76
+ dw Function118e7e
+ dw Function11878d
+ dw BattleTowerRoomMenu_DoNothing
+ dw Function118e76
+ dw BattleTowerRoomMenu_CallRoomMenu2
+ dw Function118e76
+; 1186f5
+
+Function1186f5: ; 1186f5 (46:46f5)
+ jumptable .Jumptable, wcf66
+; 118704 (46:4704)
+
+.Jumptable: ; 118704 (46:4704)
+ dw Function11886a
+ dw Function118880
+ dw Function11878d
+ dw Function1188b0
+ dw Function11878d
+ dw Function1188b8
+ dw Function11878d
+ dw Function1188c0
+ dw Function11878d
+ dw Function1188c8
+ dw Function11878d
+ dw Function118903
+ dw Function118abc
+ dw Function11878d
+ dw Function119451
+ dw Function1195f8
+ dw Function119612
+ dw Function119629
+ dw Function119648
+ dw Function11878d
+ dw Function118e6d
+ dw Function11878d
+ dw Function118e76
+ dw Function118e7e
+ dw Function11878d
+ dw BattleTowerRoomMenu_DoNothing
+ dw Function11967d
+ dw Function119685
+ dw Function119665
+ dw Function11966d
+ dw Function118e76
+ dw BattleTowerRoomMenu_CallRoomMenu2
+ dw Function118e76
+; 118746 (46:4746)
+
+Function118746: ; 118746
+ jumptable .Jumptable, wcf66
+; 118755
+
+.Jumptable: ; 118755
+ dw Function11886e
+ dw Function118880
+ dw Function11878d
+ dw Function1188b0
+ dw Function11878d
+ dw Function1188b8
+ dw Function11878d
+ dw Function1188c0
+ dw Function11878d
+ dw Function1188c8
+ dw Function11878d
+ dw Function118903
+ dw Function118ad0
+ dw Function11878d
+ dw Function1196f2
+ dw Function1197c9
+ dw Function1197dc
+ dw Function11878d
+ dw Function118e6d
+ dw Function11878d
+ dw Function119800
+ dw Function118e76
+ dw Function118e7e
+ dw Function11878d
+ dw BattleTowerRoomMenu_DoNothing
+ dw Function118e76
+ dw BattleTowerRoomMenu_CallRoomMenu2
+ dw Function118e76
+; 11878d
+
+Function11878d: ; 11878d (46:478d)
+ ld a, [wc821]
+ bit 1, a
+ jr nz, .asm_1187af
+ bit 2, a
+ jr nz, .asm_1187d1
+ bit 0, a
+ jr nz, .asm_1187aa
+ ld a, [wcd89]
+ and $1
+ jr z, .asm_1187a7
+ ld a, $3
+ ld [rSVBK], a
+.asm_1187a7
+ jp BattleTowerRoomMenu_IncrementJumptable
+.asm_1187aa
+ call Function118821
+ ret c
+ ret
+.asm_1187af
+ ld a, $0
+ call Function3e32
+ ld [wc300], a
+ ld a, l
+ ld [wc301], a
+ ld a, h
+ ld [wc302], a
+ ld a, $a
+ call Function3e32
+ ld a, [wc3f0]
+ ld [$c319], a
+ ld a, [wcd34]
+ ld [wcf66], a
+ ret
+.asm_1187d1
+ ld hl, wcd89
+ bit 0, [hl]
+ jr nz, .asm_118803
+ set 0, [hl]
+ ld a, $6
+ ld [rSVBK], a
+ ld de, w3_d000
+ ld bc, $1000
+ ld a, [hl]
+ sla a
+ jr c, .asm_1187f9
+ sla a
+ jr c, .asm_1187fd
+ sla a
+ jr c, .asm_1187f5
+ ld a, $24
+ jr .asm_1187ff
+.asm_1187f5
+ ld a, $28
+ jr .asm_1187ff
+.asm_1187f9
+ ld a, $2a
+ jr .asm_1187ff
+.asm_1187fd
+ ld a, $2c
+.asm_1187ff
+ call Function3e32
+ ret
+.asm_118803
+ ld a, $d3
+
+Function118805: ; 118805 (46:4805)
+ ld [wc300], a
+ xor a
+ ld [wc301], a
+ ld [wc302], a
+ ld a, $a
+ call Function3e32
+ ld a, [wc3f0]
+ ld [$c319], a
+ ld a, [wcd34]
+ ld [wcf66], a
+ ret
+
+Function118821: ; 118821 (46:4821)
+ ld a, [$c319]
+ cp $3
+ jr c, .asm_11884a
+ cp $4
+ jr z, .asm_11884a
+ ld a, [hJoyDown]
+ cp $5
+ jr nz, .asm_11884a
+ ld a, $a
+ call Function3e32
+ ld a, $a
+ ld [wc300], a
+ ld a, [wc3f0]
+ ld [$c319], a
+ ld a, [wcd34]
+ ld [wcf66], a
+ scf
+ ret
+.asm_11884a
+ and a
+ ret
+; 11884c (46:484c)
+
+Function11884c: ; 11884c
+ ld a, [hJoyDown]
+ cp $5
+ jr nz, .asm_118864
+ ld a, $a
+ call Function3e32
+ ld a, $a
+ ld [wc300], a
+ ld a, [wcd34]
+ ld [wcf66], a
+ scf
+ ret
+
+.asm_118864
+ and a
+ ret
+; 118866
+
+Function118866:
+ ld a, 2
+ jr asm_11886f
+
+Function11886a: ; 11886a (46:486a)
+ ld a, 1
+ jr asm_11886f
+; 11886e (46:486e)
+
+Function11886e:
+ xor a
+
+asm_11886f
+ ld [BGMapPalBuffer], a
+ ld a, $0
+ ld [wcd3c], a
+ call BattleTowerRoomMenu_IncrementJumptable
+ ld a, [wcd33]
+ ld [wMobileInactivityTimerSeconds], a
+
+Function118880: ; 118880 (46:4880)
+ call BattleTowerRoomMenu2
+ ret c
+ xor a
+ ld [wcf64], a
+ ld [wc807], a
+ ld de, wcd81
+ ld hl, $46
+ ld a, $2
+ jp Function119e2b
+; 118896 (46:4896)
+
+Function118896: ; 118896
+ ld a, [wc821]
+ bit 1, a
+ jr nz, .asm_1188a5
+ bit 2, a
+ jr nz, .asm_1188a5
+ bit 0, a
+ jr z, .asm_1188aa
+
+.asm_1188a5
+ ld a, $34
+ jp Function119e2b
+
+.asm_1188aa
+ call BattleTowerRoomMenu_IncrementJumptable
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 1188b0
+
+Function1188b0: ; 1188b0 (46:48b0)
+ ld de, $c346
+ ld a, $c
+ jp Function119e2b
+
+Function1188b8: ; 1188b8 (46:48b8)
+ ld de, wc3ac
+ ld a, $e
+ jp Function119e2b
+
+Function1188c0: ; 1188c0 (46:48c0)
+ ld de, wc3cd
+ ld a, $10
+ jp Function119e2b
+
+Function1188c8: ; 1188c8 (46:48c8)
+ ld a, $1
+ ld [wcd65], a
+ call Function1188e7
+ ld hl, $c708
+.asm_1188d3
+ ld a, [de]
+ inc de
+ ld [hli], a
+ and a
+ jr nz, .asm_1188d3
+ call Function119eb4
+ call Function119ec2
+ ld hl, $c708
+ ld a, $6
+ jp Function119e2b
+
+Function1188e7: ; 1188e7 (46:48e7)
+ ld de, $c346
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$aa4a]
+ call CloseSRAM
+ and a
+ ret z
+ sla a
+ ld c, a
+.asm_1188fa
+ ld a, [de]
+ inc de
+ and a
+ jr nz, .asm_1188fa
+ dec c
+ jr nz, .asm_1188fa
+ ret
+
+Function118903: ; 118903 (46:4903)
+ ld a, [wc3f0]
+ ld [$c319], a
+ ld c, $1
+ farcall Function115e18
+ ld a, $8
+ ld [wcd3c], a
+ call BattleTowerRoomMenu2
+ jp BattleTowerRoomMenu_IncrementJumptable
+
+
+Function11891c: ; 11891c
+ call Function118b42
+ jp BattleTowerRoomMenu_IncrementJumptable
+
+
+BattleTowerRoomMenu_PickLevelMessage: ; 118922
+ ld a, [wcd38]
+ and a
+ jr nz, .asm_11892d
+ ld hl, Text_WhatLevelDoYouWantToChallenge
+ jr .asm_118930
+
+.asm_11892d
+ ld hl, Text_CheckBattleRoomListByMaxLevel
+
+.asm_118930
+ call BattleTowerRoomMenu_SetMessage
+ call BattleTowerRoomMenu_IncrementJumptable
+
+BattleTowerRoomMenu_PlacePickLevelMenu:
+ ld a, [$c31a]
+ and a
+ ret nz
+ ld hl, MenuDataHeader_119cf7
+ call LoadMenuDataHeader
+ call MenuBox
+ call MenuBoxCoord2Tile
+ call ApplyTilemap
+ hlcoord 16, 8, AttrMap
+ ld a, $40
+ or [hl]
+ ld [hl], a
+ call WaitBGMap2
+ ld a, $1
+ ld [wcd4f], a
+ ld a, $1
+ ld [rSVBK], a
+ ld a, [StatusFlags]
+ bit 6, a ; Hall Of Fame
+ jr nz, .asm_11896b
+ ld hl, Strings_Ll0ToL40 ; Address to list of strings with the choosable levels
+ ld a, 5 ; 4 levels to choose from, including 'Cancel'-option
+ jr .asm_118970
+
+.asm_11896b
+ ld hl, Strings_L10ToL100 ; Address to list of strings with the choosable levels
+ ld a, 11 ; 10 levels to choose from, including 'Cancel'-option
+
+.asm_118970
+ ld [wcd4a], a
+ ld a, l
+ ld [wcd4b], a
+ ld a, h
+ ld [wcd4c], a
+ ld a, $3
+ ld [rSVBK], a
+ call BattleTowerRoomMenu_IncrementJumptable
+
+BattleTowerRoomMenu_UpdatePickLevelMenu:
+ hlcoord 13, 8
+ ld de, String_119d07
+ call PlaceString
+ hlcoord 13, 10
+ ld de, String_119d07
+ call PlaceString
+ ld a, [wcd4b]
+ ld l, a
+ ld a, [wcd4c]
+ ld h, a
+ ld d, $0
+ ld a, [wcd4f]
+ dec a
+ rlca
+ rlca
+ rlca
+ ld e, a
+ add hl, de
+ ld a, l
+ ld e, a
+ ld a, h
+ ld d, a
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld bc, StringBuffer3
+.asm_1189b5
+ ld a, [hli]
+ cp $50
+ jr z, .asm_1189c4
+ cp $7f
+ jr z, .asm_1189c2
+ ld [bc], a
+ inc bc
+ jr .asm_1189b5
+
+.asm_1189c2
+ ld a, $50
+
+.asm_1189c4
+ ld [bc], a
+ pop af
+ ld [rSVBK], a
+ hlcoord 13, 9
+ call PlaceString
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, .b_button
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .a_button
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .d_down
+ ld a, [hl]
+ and D_UP
+ jr nz, .d_up
+.asm_1189e5
+ ret
+
+.d_down
+ ld hl, wcd4f
+ dec [hl]
+ jr nz, .asm_1189e5
+ ld a, [wcd4a]
+ ld [hl], a
+ jr .asm_1189e5
+
+.d_up
+ ld a, [wcd4a]
+ ld hl, wcd4f
+ inc [hl]
+ cp [hl]
+ jr nc, .asm_1189e5
+ ld a, $1
+ ld [hl], a
+ jr .asm_1189e5
+
+.a_button
+ call PlayClickSFX
+ ld a, [wcd4f]
+ ld hl, wcd4a
+ cp [hl]
+ jr z, .asm_118a3c
+ dec a
+ and $fe
+ srl a
+ ld [wcf65], a
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ call CloseWindow
+ pop af
+ ld [rSVBK], a
+ ld a, [wcd38]
+ and a
+ jr nz, .asm_118a30
+ call BattleTower_LevelCheck
+ ret c
+ call BattleTower_UbersCheck
+ ret c
+
+.asm_118a30
+ ld a, [wcd4f]
+ ld [w3_d800], a
+ jp BattleTowerRoomMenu_IncrementJumptable
+
+.b_button
+ call PlayClickSFX
+
+.asm_118a3c
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ call CloseWindow
+ pop af
+ ld [rSVBK], a
+ ld a, $7
+ ld [wcf66], a
+ ld a, $0
+ ld [wMobileInactivityTimerFrames], a
+ ret
+
+
+
+Function118a54: ; 118a54
+ ld a, [wcd55]
+ ld l, a
+ ld a, [wcd56]
+ ld h, a
+ ld de, wc3ec
+ ld bc, $0004
+ jp Function118ae4
+; 118a65
+
+Function118a65: ; 118a65
+ ld hl, BattleDownloadURL
+ ld de, wcc60
+ ld bc, $80
+ call CopyBytes
+ ld de, w3_d000
+ ld bc, $1000
+ jp Function118b10
+; 118a7a
+
+Function118a7a: ; 118a7a
+ ld hl, BattleDownloadURL
+ ld de, wcc60
+ ld bc, $80
+ call CopyBytes
+ ld de, w3_d000
+ ld bc, $1000
+ jp Function118b10
+; 118a8f
+
+Function118a8f: ; 118a8f
+ ld hl, ExchangeDownloadURL
+ ld de, wcc60
+ ld bc, $80
+ call CopyBytes
+ ld de, w3_d000
+ ld bc, $1000
+ jp Function118b10
+; 118aa4
+
+Function118aa4: ; 118aa4
+ ld hl, NewsDownloadURL
+ ld de, wcc60
+ ld bc, $80
+ call CopyBytes
+ ld a, $5
+ ld [rSVBK], a
+ ld de, w3_d100
+ ld bc, $e00
+ jr Function118b10
+; 118abc
+
+Function118abc: ; 118abc (46:4abc)
+ ld hl, MenuDownloadURL
+ ld de, wcc60
+ ld bc, $80
+ call CopyBytes
+ ld de, w3_d000
+ ld bc, $1000
+ jr Function118b10
+; 118ad0 (46:4ad0)
+
+Function118ad0:
+ ld hl, IndexDownloadURL
+ ld de, wcc60
+ ld bc, $80
+ call CopyBytes
+ ld de, w3_d000
+ ld bc, $1000
+ jr Function118b10
+
+Function118ae4:
+ push bc
+ push de
+ push hl
+ ld a, $8
+ ld [wcd3c], a
+ call BattleTowerRoomMenu2
+ pop hl
+ ld c, $0
+ ld de, wcc60
+.asm_118af5
+ ld a, [hli]
+ ld [de], a
+ inc de
+ and a
+ jr z, .asm_118b06
+ inc c
+ ld a, c
+ cp $a6
+ jr c, .asm_118af5
+ ld a, $da
+ jp Function118805
+
+.asm_118b06
+ call Function118b24
+ pop de
+ pop bc
+ ld a, $2a
+ jp Function119e2b
+; 118b10
+
+Function118b10:
+ push de
+ push bc
+ ld a, $8
+ ld [wcd3c], a
+ call BattleTowerRoomMenu2
+ call Function118b24
+ pop bc
+ pop de
+ ld a, $2a
+ jp Function119e2b
+
+Function118b24: ; 118b24 (46:4b24)
+ ld hl, $c346
+ ld a, $8
+ ld [hli], a
+ ld a, $c7
+ ld [hli], a
+ ld a, $60
+ ld [hli], a
+ ld a, $cc
+ ld [hli], a
+ call Function119eb4
+ call Function119ec2
+ ld a, $80
+ ld [wcd89], a
+ ld hl, $c346
+ ret
+; 118b42 (46:4b42)
+
+Function118b42: ; 118b42
+ ld hl, wd002
+ ld a, l
+ ld [wcd51], a
+ ld a, h
+ ld [wcd52], a
+ call Function118b8c
+ ld a, l
+ ld [wcd55], a
+ ld [wcd59], a
+ ld a, h
+ ld [wcd56], a
+ ld [wcd5a], a
+ call Function118b8c
+ ld a, l
+ ld [wcd53], a
+ ld [wcd5d], a
+ ld a, h
+ ld [wcd54], a
+ ld [wcd5e], a
+ call Function118b8c
+ ld a, l
+ ld [wcd57], a
+ ld [wcd5b], a
+ ld a, h
+ ld [wcd58], a
+ ld [wcd5c], a
+ call Function118b8c
+ ld a, l
+ ld [wcd5f], a
+ ld a, h
+ ld [wcd60], a
+ ret
+; 118b8c
+
+Function118b8c: ; 118b8c
+.asm_118b8c
+ call Function118b9a
+ ret nc
+ ld a, [hli]
+ cp $d
+ jr nz, .asm_118b8c
+ dec hl
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ret
+; 118b9a
+
+Function118b9a: ; 118b9a
+ ld a, h
+ cp $e0
+ ret c
+ ld a, $d3
+ call Function118805
+ and a
+ ret
+; 118ba5
+
+
+ charmap " ", $20 ; revert to ascii
+
+ExchangeDownloadURL: ; 0x118ba5
+ db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/exchange/index.txt", 0
+
+BattleDownloadURL: ; 0x118bf7
+ db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/battle/index.txt", 0
+
+NewsDownloadURL: ; 0x118c47
+ db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/news/index.txt", 0
+
+MenuDownloadURL: ; 0x118c95
+ db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/POKESTA/menu.cgb", 0
+
+IndexDownloadURL: ; 0x118ce5
+ db "http://gameboy.datacenter.ne.jp/cgb/download?name=/01/CGB-BXTJ/tamago/index.txt", 0
+
+
+Function118d35: ; 118d35
+; unreferenced
+ ld hl, $d200
+ ld a, [wcd38]
+ and a
+ jr nz, .asm_118d6e
+ ld a, [hli]
+ cp $94
+ jr nz, .asm_118d7b
+ ld a, [hl]
+ cp $5
+ jr nz, .asm_118d7b
+ ld a, [wcd4f]
+ sla a
+ ld b, a
+ sla a
+ sla a
+ add b
+ ld b, a
+ ld a, $5
+ call GetSRAMBank
+ ld a, b
+ ld [$b2fb], a
+ call CloseSRAM
+ farcall Function170be4
+ farcall Function1700c4
+ jr .asm_118d78
+
+.asm_118d6e
+ ld a, [hli]
+ cp $96
+ jr nz, .asm_118d7b
+ ld a, [hl]
+ cp $0
+ jr nz, .asm_118d7b
+
+.asm_118d78
+ jp BattleTowerRoomMenu_IncrementJumptable
+
+.asm_118d7b
+ ld a, $d3
+ jp Function118805
+; 118d80
+
+Function118d80: ; 118d80
+ call Function118e06
+ ld a, [wcd38]
+ and a
+ jr z, .asm_118d8e
+ call BattleTowerRoomMenu_IncrementJumptable
+ jr asm_118d9f
+
+.asm_118d8e
+ ld a, $9
+ ld [wcd3c], a
+ ld a, $12
+ ld [wMobileInactivityTimerSeconds], a
+ call BattleTowerRoomMenu_IncrementJumptable
+
+Function118d9b:
+ call BattleTowerRoomMenu2
+ ret c
+
+asm_118d9f
+ ld hl, $c608
+ call Function119940
+ ld a, [wcd38]
+ and a
+ jr nz, .asm_118db2
+ ld a, $8f
+ ld [wcd3b], a
+ jr .asm_118db7
+
+.asm_118db2
+ ld a, $26
+ ld [wcd3b], a
+
+.asm_118db7
+ ld hl, w3_d800
+ ld a, $8
+ ld [hli], a
+ ld a, $c6
+ ld [hli], a
+ ld a, [wcd3b]
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld a, $8
+ ld [hli], a
+ ld a, $c7
+ ld [hli], a
+ ld a, [wcd39]
+ ld [hli], a
+ ld a, [wcd3a]
+ ld [hli], a
+ call Function119eb4
+ call Function119ec2
+ ld a, $40
+ ld [wcd89], a
+ ld hl, w3_d800
+ ld de, $de00
+ ld bc, $0200
+ ld a, $2c
+ jp Function119e2b
+; 118ded
+
+Function118ded: ; 118ded
+ ld a, [wcd38]
+ and a
+ jr z, .asm_118e03
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ farcall Function11b93b
+ pop af
+ ld [rSVBK], a
+
+.asm_118e03
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 118e06
+
+Function118e06: ; 118e06
+ ld hl, wd002
+ ld a, [wcd38]
+ and a
+ jr z, .asm_118e1d
+.asm_118e0f
+ call Function118b9a
+ ret nc
+ ld a, [hli]
+ cp $d
+ jr nz, .asm_118e0f
+ ld a, [hli]
+ cp $a
+ jr nz, .asm_118e0f
+
+.asm_118e1d
+ ld a, l
+ ld [wcd39], a
+ ld a, h
+ ld [wcd3a], a
+.asm_118e25
+ call Function118b9a
+ ret nc
+ ld a, [hli]
+ cp $d
+ jr nz, .asm_118e25
+ ld a, [hli]
+ cp $a
+ jr nz, .asm_118e25
+ dec hl
+ xor a
+ ld [hld], a
+ ld [hl], a
+ jr asm_118e3e
+
+Function118e39: ; 118e39 (46:4e39)
+.asm_118e39
+ ld a, [hli]
+ and a
+ jr nz, .asm_118e39
+ dec hl
+asm_118e3e
+.asm_118e3e
+ ld a, [hld]
+ cp $2f
+ jr nz, .asm_118e3e
+ inc hl
+ inc hl
+ ld de, wcd85
+ ld c, $4
+.asm_118e4a
+ ld a, [hli]
+ cp $2e
+ jr z, .asm_118e63
+ cp $30
+ jr c, .asm_118e67
+ cp $3a
+ jr nc, .asm_118e67
+ sub $30
+ add $f6
+ ld [de], a
+ inc de
+ dec c
+ jr nz, .asm_118e4a
+ ld de, wcd85
+.asm_118e63
+ ld a, $50
+ ld [de], a
+ ret
+.asm_118e67
+ ld a, $f3
+ ld [de], a
+ inc de
+ jr .asm_118e63
+
+Function118e6d: ; 118e6d (46:4e6d)
+ xor a
+ ld [wcd65], a
+ ld a, $a
+ jp Function119e2b
+
+Function118e76: ; 118e76 (46:4e76)
+ ; Call $c in BattleTowerRoomMenu2
+ ld a, $c
+ ld [wcd3c], a
+ jp BattleTowerRoomMenu_IncrementJumptable
+
+Function118e7e: ; 118e7e (46:4e7e)
+ call BattleTowerRoomMenu2
+ ret c
+ ld a, $36
+ jp Function119e2b
+
+BattleTowerRoomMenu_CallRoomMenu2: ; 118e87 (46:4e87)
+ call BattleTowerRoomMenu2
+ ret c
+ ld a, [wcd33]
+ ld [wcf66], a
+ ret
+; 118e92 (46:4e92)
+
+Function118e92: ; 118e92
+ call Function118440
+ call Function1191d3
+ ld a, [wcd53]
+ ld l, a
+ ld a, [wcd54]
+ ld h, a
+ ld de, wcc60
+ call Function1191ad
+ ret c
+ ld de, w3_d800
+ ld bc, $0800
+ jp Function118b10
+; 118eb0
+
+Function118eb0: ; 118eb0
+ call Function118440
+ ld hl, $d802
+ ld de, BGMapBuffer
+ ld bc, $000c
+ call CopyBytes
+ call Function1192cc
+ ret c
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 118ec6
+
+Function118ec6: ; 118ec6
+ call Function118440
+ call SpeechTextBox
+ ld hl, $d80e
+ ld de, $c320
+ ld bc, $0026
+ call CopyBytes
+ xor a
+ ld [$c31f], a
+ ld a, $20
+ ld [$c31b], a
+ ld a, $c3
+ ld [$c31c], a
+ hlcoord 1, 14
+ ld a, l
+ ld [$c31d], a
+ ld a, h
+ ld [$c31e], a
+ ld a, $2
+ ld [$c31a], a
+ ld a, $1d
+ ld [wcd3c], a
+ ld a, $24
+ ld [wMobileInactivityTimerSeconds], a
+ ld a, $11
+ ld [wMobileInactivityTimerFrames], a
+ ld a, $1c
+ ld [wcd47], a
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 118f0d
+
+Function118f0d: ; 118f0d
+ call BattleTowerRoomMenu2
+ ret c
+ call Function118440
+
+Function118f14:
+ call Function118440
+ ld a, [wcd51]
+ ld l, a
+ ld a, [wcd52]
+ ld h, a
+ ld de, wcc60
+ call Function1191ad
+ ret c
+ ld a, [wcc60]
+ and a
+ jr z, .DontSendSaveFile
+ ld hl, Text_SaveFileWillBeSent
+ call BattleTowerRoomMenu_SetMessage
+
+.DontSendSaveFile:
+ ld a, [wcd57]
+ ld l, a
+ ld a, [wcd58]
+ ld h, a
+ ld de, wcc60
+ call Function1191ad
+ ret c
+ ld hl, wcc60
+ call Function118e39
+ ld a, $9
+ ld [wcd3c], a
+ ld a, $24
+ ld [wMobileInactivityTimerSeconds], a
+ ld a, $13
+ ld [wMobileInactivityTimerFrames], a
+ ld a, $1c
+ ld [wcd47], a
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 118f5e
+
+Function118f5e: ; 118f5e
+ call BattleTowerRoomMenu2
+ ret c
+ call Function118440
+ call DelayFrame
+
+Function118f68:
+ call Function119223
+ ret c
+ call Function118440
+ ld a, [wcd51]
+ ld l, a
+ ld a, [wcd52]
+ ld h, a
+ ld de, wcc60
+ call Function1191ad
+ ret c
+ ld a, [wcc60]
+ and a
+ jr z, .asm_118fba
+ ld hl, $c346
+ ld a, $c608 % $100
+ ld [hli], a
+ ld a, $c608 / $100
+ ld [hli], a
+ ld a, [wcd4b]
+ ld [hli], a
+ ld a, [wcd4c]
+ ld [hli], a
+ ld a, $c708 % $100
+ ld [hli], a
+ ld a, $c708 / $100
+ ld [hli], a
+ ld a, $60
+ ld [hli], a
+ ld a, $cc
+ ld [hli], a
+ call Function119eb4
+ call Function119ec2
+ ld a, $40
+ ld [wcd89], a
+ ld hl, $c346
+ ld de, $de00
+ ld bc, $0200
+ ld a, $2c
+ jp Function119e2b
+
+.asm_118fba
+ call BattleTowerRoomMenu_IncrementJumptable
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 118fc0
+
+Function118fc0: ; 118fc0
+ call Function118440
+ ld a, [wcd55]
+ ld l, a
+ ld a, [wcd56]
+ ld h, a
+ ld de, wcc60
+ call Function1191ad
+ ret c
+ ld a, [wcc60]
+ and a
+ jr z, .asm_118ffa
+ ld a, [wcd51]
+ ld l, a
+ ld a, [wcd52]
+ ld h, a
+ ld de, wcc60
+ call Function1191ad
+ ret c
+ ld a, [wcc60]
+ and a
+ jr z, .asm_118ff2
+ ld hl, Text_SentSaveFileReadingNews
+ jr .asm_118ff5
+
+.asm_118ff2
+ ld hl, Text_ReadingNews
+
+.asm_118ff5
+ call BattleTowerRoomMenu_SetMessage
+ jr Function119009
+
+.asm_118ffa
+ ld hl, Text_ReadingNews
+ call BattleTowerRoomMenu_SetMessage
+ call BattleTowerRoomMenu_IncrementJumptable
+ call BattleTowerRoomMenu_IncrementJumptable
+ jp BattleTowerRoomMenu_IncrementJumptable
+
+Function119009:
+ call Function118440
+ call Function119300
+ ld a, [wcd55]
+ ld l, a
+ ld a, [wcd56]
+ ld h, a
+ ld de, wcc60
+ call Function1191ad
+ ret c
+ ld hl, $c346
+ ld a, $8
+ ld [hli], a
+ ld a, $c6
+ ld [hli], a
+ ld a, [wcd4b]
+ ld [hli], a
+ ld a, [wcd4c]
+ ld [hli], a
+ ld a, $8
+ ld [hli], a
+ ld a, $c7
+ ld [hli], a
+ ld a, $60
+ ld [hli], a
+ ld a, $cc
+ ld [hli], a
+ call Function119eb4
+ call Function119ec2
+ ld a, $40
+ ld [wcd89], a
+ ld hl, $c346
+ ld de, w3_d000
+ ld bc, $1000
+ ld a, $2c
+ jp Function119e2b
+; 119054
+
+Function119054: ; 119054
+ ld a, $6
+ call GetSRAMBank
+ ld hl, wd002
+ ld a, [wcd4f]
+ ld e, a
+ ld a, [wcd50]
+ ld d, a
+ ld a, [w3_d000]
+ ld c, a
+ ld a, [w3_d000 + 1]
+ ld b, a
+ call Function119192
+ ret c
+ ld a, [wcd89]
+ and $1
+ jr z, .asm_11908a
+ ld a, $6
+ ld [rSVBK], a
+ ld hl, wd002
+ ld a, [w3_d000]
+ ld c, a
+ ld a, [w3_d000 + 1]
+ ld b, a
+ call Function119192
+ ret c
+
+.asm_11908a
+ call CloseSRAM
+ ld a, $3
+ ld [rSVBK], a
+ ld a, $5
+ call GetSRAMBank
+ ld a, [wcd4f]
+ ld [$b1b3], a
+ ld a, [wcd50]
+ ld [$b1b4], a
+ ld hl, BGMapBuffer
+ ld de, $aa7f
+ ld bc, $000c
+ call CopyBytes
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, [wd474]
+ ld [$b2f3], a
+ ld hl, wd475
+ ld de, $b2f4
+ ld bc, $0004
+ call CopyBytes
+ pop af
+ ld [rSVBK], a
+ call CloseSRAM
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 1190d0
+
+Function1190d0: ; 1190d0
+ ld a, $3
+ ld [rSVBK], a
+ ld a, [wcd57]
+ ld l, a
+ ld a, [wcd58]
+ ld h, a
+ ld de, wcc60
+ call Function1191ad
+ ret c
+ ld de, w3_d000
+ ld bc, $1000
+ jp Function118b10
+; 1190ec
+
+Function1190ec: ; 1190ec
+ ld a, $5
+ call GetSRAMBank
+ ld hl, BGMapBuffer
+ ld de, $aa73
+ ld bc, $000c
+ call CopyBytes
+ call CloseSRAM
+ ld a, $5
+ call GetSRAMBank
+ ld a, $1
+ ld [$aa72], a
+ call CloseSRAM
+ ld a, $6
+ call GetSRAMBank
+ ld a, [w3_d000]
+ ld c, a
+ ld a, [w3_d000 + 1]
+ ld b, a
+ ld hl, wd002
+ ld de, $a000
+ call Function119192
+ ret c
+ ld a, [wcd89]
+ and $1
+ jr z, .asm_11913e
+ ld a, $6
+ ld [rSVBK], a
+ ld a, [w3_d000]
+ ld c, a
+ ld a, [w3_d000 + 1]
+ ld b, a
+ ld hl, wd002
+ call Function119192
+ ret c
+
+.asm_11913e
+ ld a, $3
+ ld [rSVBK], a
+ call CloseSRAM
+ ld hl, Text_ReceivedNews
+ call BattleTowerRoomMenu_SetMessage
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 11914e
+
+Function11914e: ; 11914e
+ call BattleTowerRoomMenu2
+ ret c
+ ld a, $1c
+ ld [wcf66], a
+ ld a, $a
+ ld [wc300], a
+ ret
+; 11915d
+
+Function11915d: ; 11915d
+ ld hl, $d802
+ ld de, BGMapBuffer
+ ld bc, $000c
+ call CopyBytes
+ ld a, $5
+ call GetSRAMBank
+ ld hl, BGMapBuffer
+ ld de, $aa7f
+ ld c, $c
+.asm_119176
+ ld a, [de]
+ inc de
+ cp [hl]
+ jr nz, .asm_119184
+ inc hl
+ dec c
+ jr nz, .asm_119176
+ call BattleTowerRoomMenu_IncrementJumptable
+ jr .asm_11918e
+
+.asm_119184
+ ld a, $16
+ ld [wcf66], a
+ ld a, $b
+ ld [wc300], a
+
+.asm_11918e
+ call CloseSRAM
+ ret
+; 119192
+
+Function119192: ; 119192
+ inc b
+ inc c
+ jr .asm_11919e
+
+.asm_119196
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, $bf
+ cp d
+ jr c, .asm_1191a6
+
+.asm_11919e
+ dec c
+ jr nz, .asm_119196
+ dec b
+ jr nz, .asm_119196
+ and a
+ ret
+
+.asm_1191a6
+ ld a, $d3
+ call Function118805
+ scf
+ ret
+; 1191ad
+
+Function1191ad: ; 1191ad
+ push bc
+ ld c, $0
+ ld a, $5
+ ld [rSVBK], a
+.asm_1191b4
+ ld a, [hli]
+ ld [de], a
+ inc de
+ and a
+ jr z, .asm_1191cc
+ inc c
+ ld a, c
+ cp $a6
+ jr c, .asm_1191b4
+ ld a, $da
+ call Function118805
+ ld a, $3
+ ld [rSVBK], a
+ pop bc
+ scf
+ ret
+
+.asm_1191cc
+ ld a, $3
+ ld [rSVBK], a
+ pop bc
+ and a
+ ret
+; 1191d3
+
+Function1191d3: ; 1191d3
+ ld hl, w3_d100 + 2
+ ld a, l
+ ld [wcd53], a
+ ld a, h
+ ld [wcd54], a
+ call Function11920f
+ ld a, l
+ ld [wcd51], a
+ ld a, [wcd4a]
+ ld a, h
+ ld [wcd52], a
+ call Function11920f
+ ld a, l
+ ld [wcd55], a
+ ld a, [wcd4a]
+ ld a, h
+ ld [wcd56], a
+ call Function11920f
+ ld a, [wcd49]
+ ld a, l
+ ld [wcd57], a
+ ld a, [wcd4a]
+ ld a, h
+ ld [wcd58], a
+ call Function11920f
+ ret
+; 11920f
+
+Function11920f: ; 11920f
+.asm_11920f
+ call Function118b9a
+ ret nc
+ ld a, [hli]
+ cp $d
+ jr nz, .asm_11920f
+ ld a, [hli]
+ cp $a
+ jr nz, .asm_11920f
+ dec hl
+ xor a
+ ld [hld], a
+ ld [hli], a
+ inc hl
+ ret
+; 119223
+
+Function119223: ; 119223
+ xor a
+ ld [wcd4b], a
+ ld [wcd4c], a
+ ld a, $5
+ call GetSRAMBank
+ ld hl, wc3cd
+ ld de, $b092
+ ld bc, $001f
+ call CopyBytes
+ dec de
+ xor a
+ ld [de], a
+ ld hl, $d810
+.asm_119241
+ ld a, [hli]
+ cp $50
+ jr nz, .asm_119241
+ ld a, [hli]
+ ld [wcd4f], a
+ ld a, [hli]
+ ld [wcd50], a
+ ld a, [hli]
+ ld [$b1b1], a
+ ld c, a
+ ld a, [hli]
+ ld [$b1b2], a
+ ld b, a
+ ld de, $b1d3
+ call CopyBytes
+ call CloseSRAM
+ ld e, l
+ ld d, h
+ ld hl, $c608
+.asm_119266
+ ld a, [de]
+ inc de
+ cp $ff
+ jr z, .asm_1192c2
+ cp $fe
+ jr z, .asm_1192a5
+ call GetSRAMBank
+ ld a, [de]
+ inc de
+ ld c, a
+ ld a, [de]
+ inc de
+ ld b, a
+ ld a, [de]
+ inc de
+ push de
+ push af
+ ld a, [wcd4b]
+ ld e, a
+ ld a, [wcd4c]
+ ld d, a
+ pop af
+.asm_119286
+ push af
+ ld a, [bc]
+ inc bc
+ ld [hli], a
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_119286
+ call CloseSRAM
+ ld a, e
+ ld [wcd4b], a
+ ld a, d
+ ld [wcd4c], a
+ pop de
+.asm_11929b
+ and a
+ jr z, .asm_119266
+ ld a, $d3
+ call Function118805
+ scf
+ ret
+
+.asm_1192a5
+ ld a, [wcd4b]
+ ld c, a
+ ld a, [wcd4c]
+ ld b, a
+ ld a, [de]
+ inc de
+.asm_1192af
+ push af
+ ld a, [de]
+ inc de
+ ld [hli], a
+ inc bc
+ pop af
+ dec a
+ jr nz, .asm_1192af
+ ld a, c
+ ld [wcd4b], a
+ ld a, b
+ ld [wcd4c], a
+ jr .asm_11929b
+
+.asm_1192c2
+ ld a, e
+ ld [wcd4d], a
+ ld a, d
+ ld [wcd4e], a
+ and a
+ ret
+; 1192cc
+
+Function1192cc: ; 1192cc
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $aa73
+ ld de, $c608
+ ld bc, $000c
+ call CopyBytes
+ call CloseSRAM
+ ld hl, $c608
+ ld de, BGMapBuffer
+ ld c, $c
+.asm_1192e8
+ ld a, [de]
+ inc de
+ ld b, a
+ ld a, [hli]
+ cp b
+ jr nz, .asm_1192fe
+ dec c
+ jr nz, .asm_1192e8
+ ld a, $1f
+ ld [wcd3c], a
+ ld a, $27
+ ld [wcf66], a
+ scf
+ ret
+
+.asm_1192fe
+ and a
+ ret
+; 119300
+
+Function119300: ; 119300
+ xor a
+ ld [wcd4b], a
+ ld [wcd4c], a
+ ld a, [wcd4d]
+ ld e, a
+ ld a, [wcd4e]
+ ld d, a
+ ld hl, $c608
+ ld a, [wcd4b]
+ ld c, a
+ ld a, [wcd4c]
+ ld b, a
+.asm_11931a
+ ld a, [de]
+ inc de
+ cp $50
+ jr z, .asm_119324
+ ld [hli], a
+ inc bc
+ jr .asm_11931a
+
+.asm_119324
+ ld a, $3d
+ ld [hli], a
+ inc bc
+ ld a, c
+ ld [wcd4b], a
+ ld a, b
+ ld [wcd4c], a
+ ld a, [de]
+ inc de
+ call GetSRAMBank
+ ld a, [de]
+ inc de
+ ld c, a
+ ld a, [de]
+ inc de
+ ld b, a
+ ld a, [de]
+ inc de
+ push de
+ push af
+ ld a, [wcd4b]
+ ld e, a
+ ld a, [wcd4c]
+ ld d, a
+ pop af
+.asm_119348
+ push af
+ ld a, [bc]
+ and $f0
+ swap a
+ call Function1197bf
+ ld [hli], a
+ inc de
+ ld a, [bc]
+ inc bc
+ and $f
+ call Function1197bf
+ ld [hli], a
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_119348
+ call CloseSRAM
+ ld a, e
+ ld [wcd4b], a
+ ld a, d
+ ld [wcd4c], a
+ pop de
+ ld a, [de]
+ cp $50
+ jr z, .asm_11937f
+ ld a, [wcd4b]
+ ld c, a
+ ld a, [wcd4c]
+ ld b, a
+ ld a, $26
+ ld [hli], a
+ inc bc
+ jr .asm_11931a
+
+.asm_11937f
+ ret
+; 119380
+
+Function119380: ; 119380
+ ld a, $80
+ ld [wcd49], a
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 119388
+
+Function119388: ; 119388
+ ld hl, wcd49
+ dec [hl]
+ ret nz
+ ld hl, wcc60
+ call Function118e39
+ ld a, $9
+ ld [wcd3c], a
+ ld a, $10
+ ld [wMobileInactivityTimerSeconds], a
+ call BattleTowerRoomMenu_IncrementJumptable
+
+Function1193a0:
+ call BattleTowerRoomMenu2
+ ret c
+ call DelayFrame
+ ld a, $8
+ ld [wcd3c], a
+ call BattleTowerRoomMenu2
+ ld hl, $c346
+ ld a, wd000 % $100
+ ld [hli], a
+ ld a, wd000 / $100
+ ld [hli], a
+ ld a, [wcd3b]
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld a, $c708 % $100
+ ld [hli], a
+ ld a, $c708 / $100
+ ld [hli], a
+ ld a, $60
+ ld [hli], a
+ ld a, $cc
+ ld [hli], a
+ call Function119eb4
+ call Function119ec2
+ ld a, $40
+ ld [wcd89], a
+ ld hl, $c346
+ ld de, $de00
+ ld bc, $0200
+ ld a, $2c
+ jp Function119e2b
+; 1193e3
+
+Function1193e3: ; 1193e3
+ ld hl, wcd49
+ dec [hl]
+ ret nz
+ ld hl, wcc60
+ call Function118e39
+ ld a, $9
+ ld [wcd3c], a
+ ld a, $11
+ ld [wMobileInactivityTimerSeconds], a
+ call BattleTowerRoomMenu_IncrementJumptable
+
+Function1193fb:
+ call BattleTowerRoomMenu2
+ ret c
+ call DelayFrame
+ ld a, $8
+ ld [wcd3c], a
+ call BattleTowerRoomMenu2
+ ld de, w3_d000
+ ld bc, $1000
+ jp Function118b10
+; 119413
+
+Function119413: ; 119413
+ ld a, $6
+ call GetSRAMBank
+ ld a, [w3_d000]
+ ld c, a
+ ld a, [w3_d000 + 1]
+ ld b, a
+ dec bc
+ dec bc
+ ld hl, wd002
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ call Function119192
+ ret c
+ ld a, [wcd89]
+ and $1
+ jr z, .asm_119447
+ ld a, $6
+ ld [rSVBK], a
+ ld a, [wd000]
+ ld c, a
+ ld a, [w3_d000 + 1]
+ ld b, a
+ ld hl, wd002
+ call Function119192
+ ret c
+
+.asm_119447
+ ld a, $3
+ ld [rSVBK], a
+ call CloseSRAM
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 119451
+
+Function119451: ; 119451 (46:5451)
+ ld a, [wcd89]
+ and $1
+ jr z, .asm_11945d
+ ld a, $d3
+ jp Function118805
+.asm_11945d
+ xor a
+ ld [wcd50], a
+ call Function119694
+ ld a, b
+ ld [wcd49], a
+ call Function1196cd
+ ld a, [wd002]
+ ld hl, wd003
+
+Function119471: ; 119471 (46:5471)
+ push af
+ ld a, [hli]
+ ld [$c608], a
+ ld a, [hli]
+ ld [$c608 + 3], a
+ ld a, [hli]
+ ld [$c608 + 1], a
+ ld a, [hli]
+ ld [$c608 + 2], a
+ ld a, [hli]
+ ld [$c608 + 4], a
+ ld a, [hli]
+ ld [$c608 + 5], a ; $c608 + 5
+ push hl
+ ld a, [$c608]
+ cp $ff
+ jr z, .asm_1194a7
+ ld a, [$c608 + 2]
+ cp $ff
+ jr z, .asm_1194a7
+ ld a, [$c608 + 1]
+ cp $ff
+ jr nz, .asm_1194a7
+ call Function119584
+ jr c, .asm_11950c
+ jr .asm_1194f0
+.asm_1194a7
+ ld hl, $c608
+ ld de, $c608 + 3
+ ld c, $3
+.asm_1194af
+ ld a, [de]
+ inc de
+ cp [hl]
+ inc hl
+ jr c, .asm_1194f3
+ jr z, .asm_1194b9
+ jr nc, .asm_1194bc
+.asm_1194b9
+ dec c
+ jr nz, .asm_1194af
+.asm_1194bc
+ ld c, $3
+ ld hl, wcd49
+ ld de, $c608
+.asm_1194c4
+ ld a, [de]
+ inc de
+ cp $ff
+ jr z, .asm_1194d1
+ cp [hl]
+ jr z, .asm_1194d1
+ jr c, .asm_1194d5
+ jr nc, .asm_1194f0
+.asm_1194d1
+ inc hl
+ dec c
+ jr nz, .asm_1194c4
+.asm_1194d5
+ ld c, $3
+ ld hl, wcd49
+ ld de, $c608 + 3
+.asm_1194dd
+ ld a, [de]
+ inc de
+ cp $ff
+ jr z, .asm_1194ea
+ cp [hl]
+ jr c, .asm_1194f0
+ jr z, .asm_1194ea
+ jr nc, .asm_11950c
+.asm_1194ea
+ inc hl
+ dec c
+ jr nz, .asm_1194dd
+ jr .asm_11950c
+.asm_1194f0
+ pop hl
+ jr .asm_119557
+.asm_1194f3
+ ld c, $3
+ ld hl, wcd49
+ ld de, $c608
+.asm_1194fb
+ ld a, [de]
+ inc de
+ cp $ff
+ jr z, .asm_119508
+ cp [hl]
+ jr c, .asm_11950c
+ jr z, .asm_119508
+ jr nc, .asm_1194d5
+.asm_119508
+ inc hl
+ dec c
+ jr nz, .asm_1194fb
+.asm_11950c
+ pop hl
+ ld a, $1
+ ld [wcd50], a
+ ld a, l
+ ld [$c608], a
+ ld a, h
+ ld [$c608 + 1], a
+ ld de, wcd69
+ ld c, $10
+ ld b, $0
+.asm_119521
+ ld a, [de]
+ inc de
+ cp [hl]
+ inc hl
+ jr nz, .asm_119528
+ inc b
+.asm_119528
+ dec c
+ jr nz, .asm_119521
+ ld a, $10
+ cp b
+ jr z, .asm_119536
+rept 4
+ inc hl
+endr
+ jr .asm_11957a
+.asm_119536
+ ld a, [hli]
+ cp $50
+ jr nz, .asm_119552
+ ld a, [hli]
+ cp $33
+ jr nz, .asm_119553
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [wcd83]
+ cp c
+ jr nz, .asm_119576
+ ld a, [wcd84]
+ cp b
+ jr nz, .asm_119576
+ jr .asm_11955b
+.asm_119552
+ inc hl
+.asm_119553
+ inc hl
+ inc hl
+ jr .asm_11955b
+.asm_119557
+ ld de, $14
+ add hl, de
+.asm_11955b
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ add hl, de
+ pop af
+ dec a
+ jp nz, Function119471
+ ld a, [wcd50]
+ and a
+ jr z, .asm_119571
+ ld a, $1a
+ ld [wcf66], a
+ ret
+.asm_119571
+ ld a, $d8
+ jp Function118805
+.asm_119576
+ ld a, $10
+ jr .asm_11957c
+.asm_11957a
+ ld a, $f
+.asm_11957c
+ ld [wcf66], a
+ pop af
+ call Function1195c4
+ ret
+
+Function119584: ; 119584 (46:5584)
+ ld a, [$c608]
+ ld b, a
+ ld a, [$c608 + 3]
+ ld c, a
+ cp b
+ jr c, .asm_11959c
+ ld a, [wcd49]
+ cp b
+ jr c, .asm_1195c2
+.asm_119595
+ cp c
+ jr c, .asm_1195a2
+ jr z, .asm_1195a2
+ jr .asm_1195c2
+.asm_11959c
+ ld a, [wcd49]
+ cp b
+ jr c, .asm_119595
+.asm_1195a2
+ ld a, [$c608 + 2]
+ ld b, a
+ ld a, [$c608 + 5] ; $c608 + 5
+ ld c, a
+ cp b
+ jr c, .asm_1195ba
+ ld a, [wcd4b]
+ cp b
+ jr c, .asm_1195c2
+.asm_1195b3
+ cp c
+ jr c, .asm_1195c0
+ jr z, .asm_1195c0
+ jr .asm_1195c2
+.asm_1195ba
+ ld a, [wcd4b]
+ cp b
+ jr c, .asm_1195b3
+.asm_1195c0
+ scf
+ ret
+.asm_1195c2
+ and a
+ ret
+
+Function1195c4: ; 1195c4 (46:55c4)
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld de, $a5
+ ld a, b
+ cp d
+ jr c, .asm_1195d9
+ jr z, .asm_1195d3
+ jr nc, .asm_1195f3
+.asm_1195d3
+ ld a, c
+ cp e
+ jr z, .asm_1195d9
+ jr nc, .asm_1195f3
+.asm_1195d9
+ ld de, wcc60
+ call CopyBytes
+ xor a
+ ld [de], a
+ ld a, [$c608]
+ ld l, a
+ ld a, [$c608 + 1]
+ ld h, a
+ ld de, wcd69
+ ld bc, $10
+ call CopyBytes
+ ret
+.asm_1195f3
+ ld a, $d8
+ jp Function118805
+
+Function1195f8: ; 1195f8 (46:55f8)
+ ld a, $11
+ ld [wcd3c], a
+ ld a, $1c
+ ld [wMobileInactivityTimerSeconds], a
+ ld a, $f
+ ld [wMobileInactivityTimerFrames], a
+ ld a, $14
+ ld [wcd47], a
+ call BattleTowerRoomMenu_IncrementJumptable
+ jp BattleTowerRoomMenu_IncrementJumptable
+
+Function119612: ; 119612 (46:5612)
+ ld a, $14
+ ld [wcd3c], a
+ ld a, $1c
+ ld [wMobileInactivityTimerSeconds], a
+ ld a, $10
+ ld [wMobileInactivityTimerFrames], a
+ ld a, $14
+ ld [wcd47], a
+ jp BattleTowerRoomMenu_IncrementJumptable
+
+Function119629: ; 119629 (46:5629)
+ call BattleTowerRoomMenu2
+ ret c
+ ld a, $60
+ ld l, a
+ ld a, $cc
+ ld h, a
+ call Function118e39
+ ld a, $9
+ ld [wcd3c], a
+ ld a, $1c
+ ld [wMobileInactivityTimerSeconds], a
+ ld a, $14
+ ld [wcd47], a
+ call BattleTowerRoomMenu_IncrementJumptable
+
+Function119648: ; 119648 (46:5648)
+ call BattleTowerRoomMenu2
+ ret c
+ call DelayFrame
+ ld a, $8
+ ld [wcd3c], a
+ call BattleTowerRoomMenu2
+ call Function118b24
+ ld de, w3_d000
+ ld bc, $1000
+ ld a, $2a
+ jp Function119e2b
+
+Function119665: ; 119665 (46:5665)
+ ld a, $1a
+ ld [wcd3c], a
+ call BattleTowerRoomMenu_IncrementJumptable
+
+Function11966d: ; 11966d (46:566d)
+ call BattleTowerRoomMenu2
+ ret c
+ ld a, [wcd47]
+ ld [wcf66], a
+ ld a, $a
+ ld [wc300], a
+ ret
+
+Function11967d: ; 11967d (46:567d)
+ ld a, $18
+ ld [wcd3c], a
+ call BattleTowerRoomMenu_IncrementJumptable
+
+Function119685: ; 119685 (46:5685)
+ call BattleTowerRoomMenu2
+ ret c
+ ld a, $14
+ ld [wcf66], a
+ ld a, $a
+ ld [wc300], a
+ ret
+
+Function119694: ; 119694 (46:5694)
+ ld b, 0
+ ld hl, Unknown_1196b8
+.asm_119699
+ ld de, $c708
+ ld a, [de]
+ inc de
+ cp [hl]
+ inc hl
+ jr nz, .asm_1196af
+ ld a, [de]
+ inc de
+ cp [hl]
+ inc hl
+ jr nz, .asm_1196b0
+ ld a, [de]
+ inc de
+ cp [hl]
+ inc hl
+ jr nz, .asm_1196b1
+ ret
+.asm_1196af
+ inc hl
+.asm_1196b0
+ inc hl
+.asm_1196b1
+ inc b
+ ld a, b
+ cp $7
+ jr nz, .asm_119699
+ ret
+; 1196b8 (46:56b8)
+
+Unknown_1196b8: ; 1196b8
+ db "Mon"
+ db "Tue"
+ db "Wed"
+ db "Thu"
+ db "Fri"
+ db "Sat"
+ db "Sun"
+; 1196cd
+
+
+SECTION "bank46_2", ROMX
+; A hack to use ascii above.
+
+Function1196cd: ; 1196cd (46:56cd)
+ ld de, $c719
+ call Function1196de
+ ld [wcd4a], a
+ inc de
+ call Function1196de
+ ld [wcd4b], a
+ ret
+
+Function1196de: ; 1196de (46:56de)
+ ld a, [de]
+ inc de
+ ; b = ([de] - 48) * 2
+ ; c = ([de] - 48) * 10
+ sub $30
+ sla a
+ ld b, a
+ sla a
+ sla a
+ add b
+ ld c, a
+ add hl, bc
+ ld a, [de]
+ inc de
+ sub $30
+ add c
+ ret
+; 1196f2 (46:56f2)
+
+Function1196f2: ; 1196f2
+ ld hl, wd002
+.asm_1196f5
+ call Function118b9a
+ ret nc
+ ld a, [hli]
+ cp $d
+ jr nz, .asm_1196f5
+ ld a, [hl]
+ cp $a
+ jr nz, .asm_1196f5
+ xor a
+ ld [hld], a
+ ld [hli], a
+ ld a, l
+ ld [wcd5b], a
+ ld a, h
+ ld [wcd5c], a
+ inc hl
+ ld e, l
+ ld d, h
+ ld a, [de]
+ inc de
+ cp $d
+ jr nz, .asm_119722
+ ld a, [de]
+ inc de
+ cp $a
+ jr nz, .asm_119722
+ ld a, $b
+ jp Function118805
+
+.asm_119722
+ call Random
+ ld c, $0
+ ld b, c
+.asm_119728
+ call Function119798
+ ld a, d
+ cp $ff
+ jr nz, .asm_119735
+ ld a, e
+ cp $ff
+ jr z, .asm_11974c
+
+.asm_119735
+ ld a, [hRandomSub]
+ cp d
+ jr c, .asm_11974c
+ jr z, .asm_11973e
+ jr .asm_119745
+
+.asm_11973e
+ ld a, [hRandomAdd]
+ cp e
+ jr c, .asm_11974c
+ jr z, .asm_11974c
+
+.asm_119745
+ inc bc
+ ld a, c
+ or b
+ jr z, .asm_119770
+ jr .asm_119728
+
+.asm_11974c
+ ld a, [wcd5b]
+ ld l, a
+ ld a, [wcd5c]
+ ld h, a
+.asm_119754
+ ld a, [hld]
+ cp $58
+ jr nz, .asm_119754
+ ld d, $0
+.asm_11975b
+ inc d
+ ld a, [hld]
+ cp $58
+ jr z, .asm_11975b
+ inc hl
+ inc hl
+ ld a, d
+ dec a
+ jr z, .asm_11978e
+ dec a
+ jr z, .asm_119785
+ dec a
+ jr z, .asm_11977e
+ dec a
+ jr z, .asm_119775
+
+.asm_119770
+ ld a, $d3
+ jp Function118805
+
+.asm_119775
+ ld a, b
+ and $f0
+ swap a
+ call Function1197bf
+ ld [hli], a
+
+.asm_11977e
+ ld a, b
+ and $f
+ call Function1197bf
+ ld [hli], a
+
+.asm_119785
+ ld a, c
+ and $f0
+ swap a
+ call Function1197bf
+ ld [hli], a
+
+.asm_11978e
+ ld a, c
+ and $f
+ call Function1197bf
+ ld [hli], a
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 119798
+
+Function119798: ; 119798
+ ld d, $0
+ ld e, d
+ call Function1197b4
+ swap a
+ or d
+ ld d, a
+ call Function1197b4
+ or d
+ ld d, a
+ call Function1197b4
+ swap a
+ or e
+ ld e, a
+ call Function1197b4
+ or e
+ ld e, a
+ ret
+; 1197b4
+
+Function1197b4: ; 1197b4
+ ld a, [hli]
+ cp $61
+ jr nc, .asm_1197bc
+ sub $30
+ ret
+
+.asm_1197bc
+ sub $57
+ ret
+; 1197bf
+
+Function1197bf: ; 1197bf
+ cp $a
+ jr nc, .asm_1197c6
+ add $30
+ ret
+
+.asm_1197c6
+ add $57
+ ret
+; 1197c9
+
+Function1197c9: ; 1197c9
+ ld hl, wd002
+ call Function118e39
+ ld a, $9
+ ld [wcd3c], a
+ ld a, $12
+ ld [wMobileInactivityTimerSeconds], a
+ call BattleTowerRoomMenu_IncrementJumptable
+
+Function1197dc:
+ call BattleTowerRoomMenu2
+ ret c
+ call DelayFrame
+ ld hl, wd002
+ ld de, wcc60
+ ld bc, $0080
+ call CopyBytes
+ dec de
+ xor a
+ ld [de], a
+ call Function118b24
+ ld de, w3_d000
+ ld bc, $1000
+ ld a, $2a
+ jp Function119e2b
+; 119800
+
+Function119800: ; 119800
+ ld a, $fd
+ ld [$c6d0], a
+ ld [wOTTrademonSpecies], a
+ ld a, [wcd81]
+ ld [wc74e], a
+ ld a, [wJumptableIndex]
+ push af
+ ld a, [wcf64]
+ push af
+ ld a, [wcf65]
+ push af
+ ld a, [wcf66]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ call FadeToMenu
+ farcall Function10803d
+ call Function11a9ce
+ call RestartMapMusic
+ ld a, $3
+ ld [rSVBK], a
+ pop af
+ ld [wcf66], a
+ pop af
+ ld [wcf65], a
+ pop af
+ ld [wcf64], a
+ pop af
+ ld [wJumptableIndex], a
+ farcall Function115dc3
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 11984e
+
+Function11984e: ; 11984e
+ ld a, [wcd80]
+ and a
+ jr nz, .asm_1198a0
+ ld a, [wcd38]
+ and a
+ jr nz, .asm_1198a8
+ farcall Function170000
+ ld a, [wJumptableIndex]
+ push af
+ ld a, [wcf64]
+ push af
+ ld a, [wcf65]
+ push af
+ ld a, [wcf66]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ call FadeToMenu
+ farcall MobileTradeAnimation_SendGivemonToGTS
+ call Function11a9ce
+ call RestartMapMusic
+ ld a, $3
+ ld [rSVBK], a
+ pop af
+ ld [wcf66], a
+ pop af
+ ld [wcf65], a
+ pop af
+ ld [wcf64], a
+ pop af
+ ld [wJumptableIndex], a
+ farcall Function115dc3
+ jp BattleTowerRoomMenu_IncrementJumptable
+
+.asm_1198a0
+ ld a, $a
+ ld [wc300], a
+ jp BattleTowerRoomMenu_IncrementJumptable
+
+.asm_1198a8
+ farcall Function17005a
+ ld a, [wJumptableIndex]
+ push af
+ ld a, [wcf64]
+ push af
+ ld a, [wcf65]
+ push af
+ ld a, [wcf66]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ call FadeToMenu
+ farcall MobileTradeAnimation_RetrieveGivemonFromGTS
+ call Function11a9ce
+ call RestartMapMusic
+ ld a, $3
+ ld [rSVBK], a
+ pop af
+ ld [wcf66], a
+ pop af
+ ld [wcf65], a
+ pop af
+ ld [wcf64], a
+ pop af
+ ld [wJumptableIndex], a
+ farcall Function115dc3
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 1198ee
+
+Function1198ee: ; 1198ee
+ ld hl, Text_RegisteringRecord
+ call BattleTowerRoomMenu_SetMessage
+ call BattleTowerRoomMenu_IncrementJumptable
+
+Function1198f7:
+ ld a, [$c31a]
+ and a
+ ret nz
+ ld hl, $c608 + 2
+ call Function119940
+ ld hl, w3_d800
+ ld a, $c608 % $100
+ ld [hli], a
+ ld a, $c608 / $100
+ ld [hli], a
+ ld a, $f6
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld a, $c708 % $100
+ ld [hli], a
+ ld a, $c708 / $100
+ ld [hli], a
+ ld a, [wcd51]
+ ld [hli], a
+ ld a, [wcd52]
+ ld [hli], a
+ call Function119eb4
+ call Function119ec2
+ ld a, $40
+ ld [wcd89], a
+ ld hl, w3_d800
+ ld de, $de00
+ ld bc, $0200
+ ld a, $2c
+ jp Function119e2b
+; 119937
+
+Function119937: ; 119937
+ farcall Function1707f4
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 119940
+
+Function119940: ; 119940
+ ld de, wc3cd
+ ld c, $1e
+.asm_119945
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr z, .asm_119953
+ and a
+ jr nz, .asm_119945
+ xor a
+.asm_11994f
+ ld [hli], a
+ dec c
+ jr nz, .asm_11994f
+
+.asm_119953
+ ret
+; 119954
+
+Function119954: ; 119954
+ ld a, $1c
+ ld [wcd3c], a
+ call BattleTowerRoomMenu2
+ ld hl, $c608
+ ld de, wc3cd
+.asm_119962
+ ld a, [de]
+ inc de
+ ld [hli], a
+ and a
+ jr nz, .asm_119962
+ call Function119ec2
+ ld hl, $c608
+ ld a, $1e
+ jp Function119e2b
+; 119973
+
+Function119973: ; 119973
+ ld a, $1
+ ld [wcf64], a
+ xor a
+ ld [wcf65], a
+ ld [w3_d090], a
+ ld de, w3_d000
+ ld a, $20
+ jp Function119e2b
+; 119987
+
+Function119987: ; 119987
+ ld hl, w3_d000 + 1
+ ld a, [w3_d000]
+ or [hl]
+ jr z, .asm_1199a0
+ ld a, [wcf64]
+ ld l, a
+ ld a, [wcf65]
+ ld h, a
+ ld de, BGPals
+ ld a, $22
+ jp Function119e2b
+
+.asm_1199a0
+ ld a, [w3_d090]
+ and a
+ jr z, .asm_1199ae
+ ld a, $16
+ ld [wcf66], a
+ jp Function119b0d
+
+.asm_1199ae
+ ld a, $1b
+ ld [wcf66], a
+ ret
+; 1199b4
+
+Function1199b4: ; 1199b4
+ ld a, [wd000 + 130]
+ and a
+ jr nz, .asm_1199c7
+ ld a, [wd000 + 129]
+ cp $7
+ jr nc, .asm_1199c7
+ call BattleTowerRoomMenu_IncrementJumptable
+ jp Function1199ca
+
+.asm_1199c7
+ jp Function119ac9
+; 1199ca
+
+Function1199ca: ; 1199ca
+ ld a, $20
+ ld [wcd89], a
+ ld a, [wcf64]
+ ld l, a
+ ld a, [wcf65]
+ ld h, a
+ ld de, w3_d100
+ ld bc, $0700
+ ld a, $28
+ jp Function119e2b
+; 1199e2
+
+Function1199e2: ; 1199e2
+ ld c, $c
+ ld de, XGameCodePrefix
+ call Function119e4f
+ jp c, Function119ac9
+ ld a, c
+ cp $1
+ jp nz, Function119ac9
+ ld hl, w3_d880
+ ld bc, XGameCode
+.loop
+ ld a, [bc]
+ and a
+ jr z, .game_result_prefix
+ cp [hl]
+ jp nz, Function119ac9
+ inc bc
+ inc hl
+ jr .loop
+
+.game_result_prefix
+ ld c, $17
+ ld de, XGameResultPrefix
+ call Function119e4f
+ jp c, .asm_119aa7
+ ld a, c
+ cp $1
+ jp nz, .asm_119aa7
+ ld a, [w3_d880]
+ cp $31
+ jp nz, .asm_119aa7
+ ld a, [w3_d881]
+ cp $20
+ jp nz, .asm_119aa7
+ ld a, [w3_d88a]
+ cp $20
+ jp nz, .asm_119aa7
+ ld a, [w3_d894]
+ cp $20
+ jp nz, .asm_119aa7
+ xor a
+ ld [w3_d8a0], a
+ ld [w3_d8a1], a
+ ld [w3_d8a2], a
+ ld [w3_d8a3], a
+ ld hl, $d8a0
+ ld bc, $d889
+ call Function119e98
+ call Function119e98
+ ld hl, $d8a0
+ ld a, [wcd2d]
+ cp [hl]
+ jr nz, Function119ac9
+ inc hl
+ ld a, [wcd2c]
+ cp [hl]
+ jr nz, Function119ac9
+ inc hl
+ ld a, [wcd2b]
+ cp [hl]
+ jr nz, Function119ac9
+ inc hl
+ ld a, [wcd2a]
+ cp [hl]
+ jr nz, Function119ac9
+ xor a
+ ld [w3_d8a0], a
+ ld [w3_d8a1], a
+ ld [w3_d8a2], a
+ ld [w3_d8a3], a
+ ld hl, $d8a0
+ ld bc, $d88e
+ call Function119e98
+ ld bc, $d893
+ call Function119e98
+ ld hl, $d8a0
+ ld a, [wcd2f]
+ cp [hl]
+ jr nz, .asm_119aa7
+ inc hl
+ ld a, [wcd2e]
+ cp [hl]
+ jr nz, .asm_119aa7
+ inc hl
+ ld a, [wcd31]
+ cp [hl]
+ jr nz, .asm_119aa7
+ inc hl
+ ld a, [wcd30]
+ cp [hl]
+ jr z, .asm_119aaf
+
+.asm_119aa7
+ ld a, $25
+ ld [wcf66], a
+ jp Function119b45
+
+.asm_119aaf
+ ld a, [w3_d090]
+ and a
+ jr nz, .asm_119aa7
+ ld a, [w3_d895]
+ sub $30
+ ld [w3_d090], a
+ ld a, [wcf64]
+ ld [w3_d090 + 1], a
+ ld a, [wcf65]
+ ld [w3_d090 + 2], a
+
+Function119ac9:
+ ld a, [w3_d000]
+ ld l, a
+ ld a, [w3_d000 + 1]
+ ld h, a
+ dec hl
+ ld a, l
+ ld [w3_d000], a
+ ld a, h
+ ld [w3_d000 + 1], a
+ ld a, [wcf64]
+ ld l, a
+ ld a, [wcf65]
+ ld h, a
+ inc hl
+ ld a, l
+ ld [wcf64], a
+ ld a, h
+ ld [wcf65], a
+ ld a, $10
+ ld [wcf66], a
+ ret
+; 119af1
+
+XGameCode:
+INCBIN "data/mobile/x-game-code.txt"
+XGameResult:
+INCBIN "data/mobile/x-game-result.txt"
+; 119b0d
+
+Function119b0d: ; 119b0d
+ ld a, $8
+ ld [wcd3c], a
+ call BattleTowerRoomMenu2
+ ld a, [w3_d090]
+ cp $1
+ jr z, .asm_119b23
+ ld a, $19
+ ld [wcf66], a
+ jr Function119b3b
+
+.asm_119b23
+ ld a, $10
+ ld [wcd89], a
+ ld a, [w3_d090 + 1]
+ ld l, a
+ ld a, [w3_d090 + 2]
+ ld h, a
+ ld de, w3_d100
+ ld bc, $0700
+ ld a, $24
+ jp Function119e2b
+
+Function119b3b:
+ ld a, [w3_d090 + 1]
+ ld l, a
+ ld a, [w3_d090 + 2]
+ ld h, a
+ jr asm_119b4d
+
+Function119b45:
+ ld a, [wcf64]
+ ld l, a
+ ld a, [wcf65]
+ ld h, a
+
+asm_119b4d
+ ld a, $26
+ jp Function119e2b
+; 119b52
+
+Function119b52: ; 119b52
+ ld a, [w3_d090]
+ cp $1
+ jr nz, .asm_119b66
+ ld a, $5
+ call GetSRAMBank
+ ld a, $4
+ ld [$a800], a
+ call CloseSRAM
+
+.asm_119b66
+ ld a, $1c
+ jp Function119e2b
+; 119b6b
+
+Function119b6b: ; 119b6b
+ ld a, [w3_d090]
+ cp $1
+ jr z, .asm_119b75
+ jp BattleTowerRoomMenu_IncrementJumptable
+
+.asm_119b75
+ ld a, [w3_d100]
+ ld b, a
+ ld a, [w3_d100 + 1]
+ or b
+ jr z, .asm_119be3
+ ld hl, w3_d800
+ ld de, w3_d100 + 2
+.asm_119b85
+ ld a, [de]
+ inc de
+ cp $d
+ jr nz, .asm_119b85
+ inc de
+ ld a, [de]
+ cp $d
+ jr nz, .asm_119b85
+ inc de
+ inc de
+.asm_119b93
+ ld a, [de]
+ inc de
+ cp $d
+ jr z, .asm_119bfa
+ call Function119c3e
+ ret c
+ ld [hli], a
+ ld a, [de]
+ inc de
+ call Function119c3e
+ ret c
+ ld [hli], a
+ ld a, [de]
+ inc de
+ call Function119c3e
+ ret c
+ ld [hli], a
+ ld a, [de]
+ inc de
+ call Function119c3e
+ ret c
+ ld [hl], a
+ push de
+ ld d, [hl]
+ dec hl
+ ld c, [hl]
+ dec hl
+ ld b, [hl]
+ dec hl
+ ld a, [hl]
+ sla b
+ sla b
+ sla b
+ rla
+ sla b
+ rla
+ ld [hli], a
+ ld [hl], b
+ inc hl
+ rrc c
+ rrc c
+ ld [hl], c
+ dec hl
+ ld a, $f
+ and c
+ or [hl]
+ ld [hli], a
+ ld a, [hli]
+ and $c0
+ or [hl]
+ dec hl
+ ld [hld], a
+ dec hl
+ pop de
+ inc hl
+ inc hl
+ inc hl
+ ld a, h
+ cp $e0
+ jr c, .asm_119b93
+
+.asm_119be3
+ ld a, $19
+ ld [wcf66], a
+ ld a, $5
+ call GetSRAMBank
+ ld a, $1
+ ld [$a800], a
+ call CloseSRAM
+ xor a
+ ld [w3_d090], a
+ ret
+
+.asm_119bfa
+ inc de
+ ld a, [de]
+ cp $d
+ jr nz, .asm_119b93
+ ld a, l
+ cp (w3_d869) % $100
+ jr nz, .asm_119be3
+ ld a, h
+ cp (w3_d869) / $100
+ jr nz, .asm_119be3
+ ld a, $5
+ call GetSRAMBank
+ ld a, [wcf64]
+ ld [$b090], a
+ ld a, [wcf65]
+ ld [$b091], a
+ ld hl, w3_d800
+ ld de, $b023
+ ld bc, $0069
+ call CopyBytes
+ ld a, $3
+ ld [$a800], a
+ call CloseSRAM
+ ld hl, w3_d800
+ ld de, $c608
+ ld bc, $0069
+ call CopyBytes
+ jp BattleTowerRoomMenu_IncrementJumptable
+; 119c3e
+
+Function119c3e: ; 119c3e
+ cp $2b
+ jr c, .asm_119c68
+ jr z, .asm_119c80
+ cp $2f
+ jr c, .asm_119c68
+ jr z, .asm_119c84
+ cp $30
+ jr c, .asm_119c68
+ cp $3a
+ jr c, .asm_119c88
+ cp $3d
+ jr c, .asm_119c68
+ jr z, .asm_119c8c
+ cp $41
+ jr c, .asm_119c68
+ cp $5b
+ jr c, .asm_119c8f
+ cp $61
+ jr c, .asm_119c68
+ cp $7b
+ jr c, .asm_119c93
+
+.asm_119c68
+ ld a, $19
+ ld [wcf66], a
+ ld a, $5
+ call GetSRAMBank
+ ld a, $1
+ ld [$a800], a
+ call CloseSRAM
+ xor a
+ ld [w3_d090], a
+ scf
+ ret
+
+.asm_119c80
+ ld a, $3e
+ and a
+ ret
+
+.asm_119c84
+ ld a, $3f
+ and a
+ ret
+
+.asm_119c88
+ add $4
+ and a
+ ret
+
+.asm_119c8c
+ xor a
+ and a
+ ret
+
+.asm_119c8f
+ sub $41
+ and a
+ ret
+
+.asm_119c93
+ sub $47
+ and a
+ ret
+; 119c97
+
+BattleTowerRoomMenu_UberRestrictionMessage: ; 119c97
+ ld hl, Text_UberRestriction
+ call BattleTowerRoomMenu_SetMessage
+ call BattleTowerRoomMenu_IncrementJumptable
+ jr BattleTowerRoomMenu_WaitForMessage
+
+BattleTowerRoomMenu_PartyMonTopsThisLevelMessage:
+ ld hl, Text_PartyMonTopsThisLevel
+ call BattleTowerRoomMenu_SetMessage
+ call BattleTowerRoomMenu_IncrementJumptable
+
+BattleTowerRoomMenu_WaitForMessage:
+ ld a, [$c31a]
+ and a
+ ret nz
+ ld a, $80
+ ld [wcd50], a
+ call BattleTowerRoomMenu_IncrementJumptable
+
+BattleTowerRoomMenu_DelayRestartMenu:
+ ; Loops while (--[wcd50] != 0),
+ ; to create some sort of "delay" after the message is written on the screen,
+ ; before starting the menu again.
+ ld hl, wcd50
+ dec [hl]
+ ret nz
+ ld a, $0
+ ld [wcf66], a
+ ret
+; 119cc3
+
+BattleTowerRoomMenu_QuitMessage: ; 119cc3
+ ld a, [wcd38]
+ and a
+ jr z, .asm_119cd1
+ dec a
+ jr z, .asm_119cd6
+ ld hl, Text_QuitReadingNews
+ jr .asm_119cd9
+
+.asm_119cd1
+ ld hl, Text_CancelBattleRoomChallenge
+ jr .asm_119cd9
+
+.asm_119cd6
+ ld hl, Text_ExitGymLeaderHonorRoll
+
+.asm_119cd9
+ call BattleTowerRoomMenu_SetMessage
+ call BattleTowerRoomMenu_IncrementJumptable
+
+BattleTowerRoomMenu_PlaceYesNoMenu:
+ ld a, [$c31a]
+ and a
+ ret nz
+ ld a, $f
+ ld [wcd3c], a
+ call BattleTowerRoomMenu_IncrementJumptable
+
+BattleTowerRoomMenu_UpdateYesNoMenu:
+ ; Only ever called when [wcd3c] is $10
+ call BattleTowerRoomMenu2
+ ret c
+ ld a, [wMobileInactivityTimerFrames]
+ ld [wcf66], a
+ ret
+; 119cf7
+
+MenuDataHeader_119cf7: ; 119cf7
+ db $40 ; flags
+ db 7, 12 ; start coords
+ db 11, 19 ; end coords
+ dw NULL
+ db 0 ; default option
+; 119cff
+
+MenuData_119cff: ; 119cff
+ db $40 ; flags
+ db 7, 15 ; start coords
+ db 11, 19 ; end coords
+ dw NULL
+ db 0 ; default option
+; 119d07
+
+String_119d07:
+ db " ▼@"
+
+Strings_L10ToL100: ; 119d0c
+ db " L:10 @@"
+ db " L:20 @@"
+ db " L:30 @@"
+ db " L:40 @@"
+ db " L:50 @@"
+ db " L:60 @@"
+ db " L:70 @@"
+ db " L:80 @@"
+ db " L:90 @@"
+ db " L:100@@"
+ db "CANCEL@@"
+
+Strings_Ll0ToL40: ; 119d64
+ db " L:10 @@"
+ db " L:20 @@"
+ db " L:30 @@"
+ db " L:40 @@"
+ db "CANCEL@@"
+
+String_119d8c:
+ db "CANCEL@"
+; 119d93
+
+BattleTower_LevelCheck: ; 119d93 (46:5d93)
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, [wcd4f]
+ ld c, 10
+ call SimpleMultiply
+ ld hl, wcd50
+ ld [hl], a
+ ld bc, PARTYMON_STRUCT_LENGTH
+ ld de, PartyMon1Level
+ ld a, [PartyCount]
+.party_loop
+ push af
+ ld a, [de]
+ push hl
+ push de
+ pop hl
+ add hl, bc
+ push hl
+ pop de
+ pop hl
+ cp [hl]
+ jr z, .equal
+ jr nc, .exceeds
+.equal
+ pop af
+ dec a
+ jr nz, .party_loop
+ pop af
+ ld [rSVBK], a
+ and a
+ ret
+
+.exceeds
+ pop af
+ ld a, $4
+ ld [wcf66], a
+ pop af
+ ld [rSVBK], a
+ scf
+ ret
+
+BattleTower_UbersCheck: ; 119dd1 (46:5dd1)
+ ld a, [rSVBK]
+ push af
+ ld a, [wcd4f]
+ cp 70 / 10
+ jr nc, .level_70_or_more
+ ld a, $1
+ ld [rSVBK], a
+ ld hl, PartyMon1Level
+ ld bc, PARTYMON_STRUCT_LENGTH
+ ld de, PartySpecies
+ ld a, [PartyCount]
+.loop
+ push af
+ ld a, [de]
+ cp MEWTWO
+ jr z, .uber
+ cp MEW
+ jr z, .uber
+ cp LUGIA
+ jr c, .next
+ cp NUM_POKEMON + 1
+ jr nc, .next
+.uber
+ ld a, [hl]
+ cp 70
+ jr c, .uber_under_70
+.next
+ add hl, bc
+ inc de
+ pop af
+ dec a
+ jr nz, .loop
+.level_70_or_more
+ pop af
+ ld [rSVBK], a
+ and a
+ ret
+
+.uber_under_70
+ pop af
+ ld a, [de]
+ ld [wd265], a
+ call GetPokemonName
+ ld hl, StringBuffer1
+ ld de, wcd49
+ ld bc, PKMN_NAME_LENGTH
+ call CopyBytes
+ ld a, $a
+ ld [wcf66], a
+ pop af
+ ld [rSVBK], a
+ scf
+ ret
+; 119e2b (46:5e2b)
+
+Function119e2b: ; 119e2b (46:5e2b)
+ call Function3e32
+
+BattleTowerRoomMenu_IncrementJumptable: ; 119e2e (46:5e2e)
+ ld hl, wcf66
+ inc [hl]
+ ret
+; 119e33 (46:5e33)
+
+XGameCodePrefix: ; 119e33
+INCBIN "data/mobile/x-game-code-prefix.txt"
+XGameCodePrefixEnd:
+;119e40
+
+XGameResultPrefix: ; 119e40
+INCBIN "data/mobile/x-game-result-prefix.txt"
+XGameResultPrefixEnd:
+; 119e4f
+
+Function119e4f: ; 119e4f
+ push bc
+ ld hl, w3_d100
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+.loop
+ ld a, [de]
+ cp [hl]
+ jr z, .found_equality
+.next
+ inc hl
+ dec bc
+ ld a, b
+ or c
+ jr nz, .loop
+.return_carry
+ pop bc
+ scf
+ ret
+
+.found_equality
+ push de
+.loop2
+ ld a, [de]
+ inc de
+ cp "\n"
+ jr z, .newline
+ cp [hl]
+ jr nz, .unequal
+ inc hl
+ dec bc
+ ld a, b
+ or c
+ jr nz, .loop2
+ pop de
+ jr .return_carry
+
+.unequal
+ pop de
+ jr .next
+
+.newline
+ pop de
+ pop bc
+ inc hl
+ ld de, w3_d880
+.loop3
+ ld a, [hli]
+ ld [de], a
+ inc de
+ cp $d
+ jr z, .finish
+ dec c
+ jr nz, .loop3
+ scf
+ ret
+
+.finish
+ and a
+ ret
+; 119e8e
+
+Function119e8e: ; 119e8e
+ cp $60
+ jr c, .less_than_0x60
+ sub $57
+ ret
+
+.less_than_0x60
+ sub $30
+ ret
+; 119e98
+
+Function119e98: ; 119e98
+ ld a, $2
+.loop
+ push af
+ ld a, [bc]
+ dec bc
+ call Function119e8e
+ or [hl]
+ ld [hl], a
+ ld a, [bc]
+ dec bc
+ call Function119e8e
+ rlca
+ rlca
+ rlca
+ rlca
+ or [hl]
+ ld [hl], a
+ inc hl
+ pop af
+ dec a
+ and a
+ jr nz, .loop
+ ret
+; 119eb4
+
+Function119eb4: ; 119eb4 (46:5eb4)
+ xor a
+ ld [wc3cc], a
+ ld de, wc3ac
+.loop
+ ld a, [de]
+ inc de
+ ld [hli], a
+ and a
+ jr nz, .loop
+ ret
+
+Function119ec2: ; 119ec2 (46:5ec2)
+ ld a, BANK(sMobileLoginPassword)
+ call GetSRAMBank
+ xor a
+ ld [sMobileLoginPassword + MOBILE_LOGIN_PASSWORD_LENGTH], a
+ ld de, sMobileLoginPassword + 1
+.loop
+ ld a, [de]
+ inc de
+ ld [hli], a
+ and a
+ jr nz, .loop
+ call CloseSRAM
+ ret
+
+BattleTowerRoomMenu2: ; 119ed8 (46:5ed8)
+ ld a, [rSVBK]
+ ld [wcd8c], a
+ ld a, $1
+ ld [rSVBK], a
+
+ call .RunJumptable
+
+ ld a, [wcd8c]
+ ld [rSVBK], a
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+
+.RunJumptable:
+ jumptable .Jumptable, wcd3c
+
+.Jumptable:
+ dw Function119f3f
+ dw Function119f45
+ dw Function119f56
+ dw Function119f76
+ dw Function119f98
+ dw Function11a113
+ dw Function11a129
+ dw Function11a131
+ dw Function11a13d
+ dw Function11a14b
+ dw Function11a16d
+ dw Function11a192
+ dw Function11a2e6
+ dw Function11a302
+ dw Function11a33a
+ dw BattleTowerRoomMenu2_PlaceYesNoMenu
+ dw BattleTowerRoomMenu2_UpdateYesNoMenu
+ dw Function11a357
+ dw Function11a36b
+ dw Function11a38d
+ dw Function11a3c5
+ dw Function11a3d9
+ dw Function11a3f9
+ dw Function11a41b
+ dw Function11a452
+ dw Function11a47a
+ dw Function11a488
+ dw Function11a49e
+ dw Function11a4db
+ dw Function11a4e8
+ dw Function11a4fe
+ dw Function11a466
+ dw Function11a47a
+; 119f3f
+
+Function119f3f: ; 119f3f
+ call Function11a5b9
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 119f45
+
+Function119f45: ; 119f45
+ hlcoord 4, 2
+ ld de, String_11a661
+ call PlaceString
+ ld a, $80
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 119f56
+
+Function119f56: ; 119f56
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr z, .asm_119f62
+ dec a
+ ld [wMobileInactivityTimerMinutes], a
+ scf
+ ret
+
+.asm_119f62
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a6aa
+ call PlaceString
+ ld a, $80
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 119f76
+
+Function119f76: ; 119f76
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr z, .asm_119f82
+ dec a
+ ld [wMobileInactivityTimerMinutes], a
+ scf
+ ret
+
+.asm_119f82
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a679
+ call PlaceString
+ call Function11a5f5
+ xor a
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 119f98
+
+Function119f98: ; 119f98
+ call Function11a536
+ ret c
+ call PlayClickSFX
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr nz, .asm_119fef
+ call ExitMenu
+ call Function11a63c
+ xor a
+ ld [ScriptVar], a
+ call Function11a00e
+ ld a, [ScriptVar]
+ and a
+ jr z, .asm_119fd4
+ call ExitMenu
+ farcall ReloadMapPart
+ farcall Function115dc3
+ ld a, [wcd33]
+ ld [wcf66], a
+ ld a, $a
+ ld [wc300], a
+ scf
+ ret
+
+.asm_119fd4
+ hlcoord 4, 2
+ ld de, String_11a692
+ call PlaceString
+ ld a, $1
+ ld [wc30d], a
+ ld a, $1
+ ld [wc314], a
+ farcall ReloadMapPart
+ and a
+ ret
+
+.asm_119fef
+ call ExitMenu
+ call ExitMenu
+ farcall ReloadMapPart
+ ld a, [wMobileInactivityTimerSeconds]
+ ld [wcf66], a
+ farcall Function115dc3
+ ld a, $a
+ ld [wc300], a
+ scf
+ ret
+; 11a00e
+
+Function11a00e: ; 11a00e
+ ld a, BANK(sMobileLoginPassword)
+ call GetSRAMBank
+ ld a, [sMobileLoginPassword]
+ and a
+ jr z, .asm_11a02a
+ ld a, [sMobileLoginPassword + 1]
+ call CloseSRAM
+ and a
+ ret nz
+ ld a, BANK(sMobileLoginPassword)
+ call GetSRAMBank
+ xor a
+ ld [sMobileLoginPassword], a
+
+.asm_11a02a
+ call CloseSRAM
+ ld a, [BGMapPalBuffer]
+ and a
+ jr z, .asm_11a039
+ dec a
+ jr z, .asm_11a081
+ jp Function11a0ca
+
+.asm_11a039
+ ld a, $3
+ ld [rSVBK], a
+ ld hl, $c608
+ ld de, w3_d800
+ ld bc, $00f6
+ call CopyBytes
+ ld a, $1
+ ld [rSVBK], a
+ call FadeToMenu
+ farcall Function11765d
+ call Function11a9ce
+ ld a, $3
+ ld [rSVBK], a
+ ld hl, w3_d800
+ ld de, $c608
+ ld bc, $00f6
+ call CopyBytes
+ ld a, $1
+ ld [rSVBK], a
+ farcall Function115d99
+ ld c, $0
+ farcall Function115e18
+ ld a, $1
+ ld [wc305], a
+ ret
+
+.asm_11a081
+ xor a
+ ld [wMenuBorderLeftCoord], a
+ ld [wMenuBorderTopCoord], a
+ ld a, $13
+ ld [wMenuBorderRightCoord], a
+ ld a, $5
+ ld [wMenuBorderBottomCoord], a
+ call PushWindow
+ farcall Function11765d
+ farcall Function117ab4
+ farcall MobileFunc_106462
+ farcall Function106464
+ call ExitMenu
+ farcall ReloadMapPart
+ farcall Function115d99
+ ld c, $0
+ farcall Function115e18
+ ld a, $1
+ ld [wc305], a
+ ret
+; 11a0ca
+
+Function11a0ca: ; 11a0ca
+ xor a
+ ld [wMenuBorderLeftCoord], a
+ ld [wMenuBorderTopCoord], a
+ ld a, $13
+ ld [wMenuBorderRightCoord], a
+ ld a, $11
+ ld [wMenuBorderBottomCoord], a
+ call PushWindow
+ farcall Function11765d
+ farcall Function17d3f6
+ farcall MobileFunc_106462
+ farcall Function106464
+ call ExitMenu
+ farcall ReloadMapPart
+ farcall Function115d99
+ ld c, $0
+ farcall Function115e18
+ ld a, $1
+ ld [wc305], a
+ ret
+; 11a113
+
+Function11a113: ; 11a113
+ call Function11a63c
+ ld c, $1
+ farcall Function115e18
+ hlcoord 4, 2
+ ld de, String_11a6c8
+ call PlaceString
+ and a
+ ret
+; 11a129
+
+Function11a129: ; 11a129
+ ld a, $80
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a131
+
+Function11a131: ; 11a131
+ ld hl, wMobileInactivityTimerMinutes
+ dec [hl]
+ ret nz
+ ld a, [wcd3c]
+ inc a
+ ld [wcd3c], a
+
+Function11a13d:
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a6d2
+ call PlaceString
+ and a
+ ret
+; 11a14b
+
+Function11a14b: ; 11a14b
+ ld hl, wcd85
+ ld a, [hl]
+ cp $f3
+ jr nz, .asm_11a155
+ and a
+ ret
+
+.asm_11a155
+ call Function11a1d6
+ ret c
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a6f1
+ call PlaceString
+ ld a, $80
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a16d
+
+Function11a16d: ; 11a16d
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr z, .asm_11a179
+ dec a
+ ld [wMobileInactivityTimerMinutes], a
+ scf
+ ret
+
+.asm_11a179
+ call Function11a63c
+ call Function11a1e6
+ hlcoord 4, 2
+ ld de, $c346
+ call PlaceString
+ call Function11a5f5
+ xor a
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a192
+
+Function11a192: ; 11a192
+ call Function11a536
+ ret c
+ call PlayClickSFX
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr nz, .asm_11a1b6
+ call ExitMenu
+ farcall ReloadMapPart
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a6d2
+ call PlaceString
+ and a
+ ret
+
+.asm_11a1b6
+ call ExitMenu
+ farcall ReloadMapPart
+ ld a, [wMobileInactivityTimerSeconds]
+ ld [wcf66], a
+ ld [wcd80], a
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a6d2
+ call PlaceString
+ scf
+ ret
+; 11a1d6
+
+Function11a1d6: ; 11a1d6
+ ld a, [wcd85]
+ cp $50
+ jr nz, .asm_11a1e4
+ ld a, $d3
+ call Function118805
+ scf
+ ret
+
+.asm_11a1e4
+ and a
+ ret
+; 11a1e6
+
+Function11a1e6: ; 11a1e6
+ ld hl, String_11a706
+ ld de, $c346
+ call Function11a1ff
+ ld hl, wcd85
+ call Function11a1ff
+ ld hl, String_11a70b
+ call Function11a1ff
+ ld a, $50
+ ld [de], a
+ ret
+; 11a1ff
+
+Function11a1ff: ; 11a1ff
+.asm_11a1ff
+ ld a, [hli]
+ cp $50
+ ret z
+ ld [de], a
+ inc de
+ jr .asm_11a1ff
+; 11a207
+
+BattleTowerRoomMenu2_PlaceYesNoMenu: ; 11a207
+ ld hl, MenuDataHeader_11a2de
+ call LoadMenuDataHeader
+ call MenuBox
+ call MenuBoxCoord2Tile
+ call ApplyTilemap
+ hlcoord 16, 8
+ ld de, String_11a2cf
+ call PlaceString
+ hlcoord 16, 10
+ ld de, String_11a2d3
+ call PlaceString
+ hlcoord 15, 8
+ ld a, $ed
+ ld [hl], a
+ xor a
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a235
+
+BattleTowerRoomMenu2_UpdateYesNoMenu: ; 11a235
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .a_button
+ ld a, [hl]
+ and B_BUTTON
+ jr nz, .b_button
+ ld a, [hl]
+ and D_UP
+ jr nz, .d_up
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .d_down
+.asm_11a24c
+ call Function11a9f0
+ scf
+ ret
+
+.d_up
+ xor a
+ ld [wcd8a], a
+ ld [wcd8b], a
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr z, .asm_11a24c
+ xor a
+ ld [wMobileInactivityTimerMinutes], a
+ hlcoord 15, 8
+ ld a, $ed
+ ld [hl], a
+ hlcoord 15, 10
+ ld a, $7f
+ ld [hl], a
+ jr .asm_11a24c
+
+.d_down
+ xor a
+ ld [wcd8a], a
+ ld [wcd8b], a
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr nz, .asm_11a24c
+ inc a
+ ld [wMobileInactivityTimerMinutes], a
+ hlcoord 15, 8
+ ld a, $7f
+ ld [hl], a
+ hlcoord 15, 10
+ ld a, $ed
+ ld [hl], a
+ jr .asm_11a24c
+
+.a_button
+ xor a
+ ld [wcd8a], a
+ ld [wcd8b], a
+ call PlayClickSFX
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr nz, .exit_no_carry
+ call ExitMenu
+ farcall ReloadMapPart
+ ld a, [wMobileInactivityTimerFrames]
+ cp $0
+ jr z, .asm_11a2b4
+ ld a, [wcd47]
+ jr .exit_carry
+
+.asm_11a2b4
+ ld a, [wcd33]
+
+.exit_carry
+ ld [wcf66], a
+ ld a, $a
+ ld [wc300], a
+ scf
+ ret
+
+.b_button
+ call PlayClickSFX
+
+.exit_no_carry
+ call ExitMenu
+ farcall ReloadMapPart
+ and a
+ ret
+; 11a2cf
+
+String_11a2cf: ; 11a2cf
+ db "YES@"
+; 11a2d3
+
+String_11a2d3: ; 11a2d3
+ db "NO@"
+; 11a2d6
+
+MenuDataHeader_11a2d6: ; 11a2d6
+ db $40 ; flags
+ db 6, 14 ; start coords
+ db 10, 19 ; end coords
+ dw NULL
+ db 0 ; default option
+; 11a2de
+
+MenuDataHeader_11a2de: ; 11a2de
+ db $40 ; flags
+ db 7, 14 ; start coords
+ db 11, 19 ; end coords
+ dw NULL
+ db 0 ; default option
+; 11a2e6
+
+Function11a2e6: ; 11a2e6
+ call Function11a63c
+ ld c, $2
+ farcall Function115e18
+ hlcoord 4, 2
+ ld de, String_11a71e
+ call PlaceString
+ ld a, $80
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a302
+
+Function11a302: ; 11a302
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr z, .asm_11a30e
+ dec a
+ ld [wMobileInactivityTimerMinutes], a
+ scf
+ ret
+
+.asm_11a30e
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a72a
+ call PlaceString
+ hlcoord 9, 4
+ ld de, wcd68
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+ call PrintNum
+ hlcoord 14, 4
+ ld de, wcd67
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 2
+ call PrintNum
+ ld a, $80
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a33a
+
+Function11a33a: ; 11a33a
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr z, .asm_11a346
+ dec a
+ ld [wMobileInactivityTimerMinutes], a
+ scf
+ ret
+
+.asm_11a346
+ call ExitMenu
+ farcall ReloadMapPart
+ farcall Function115dc3
+ and a
+ ret
+; 11a357
+
+Function11a357: ; 11a357
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a743
+ call PlaceString
+ ld a, $80
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a36b
+
+Function11a36b: ; 11a36b
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr z, .asm_11a377
+ dec a
+ ld [wMobileInactivityTimerMinutes], a
+ scf
+ ret
+
+.asm_11a377
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a755
+ call PlaceString
+ call Function11a5f5
+ xor a
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a38d
+
+Function11a38d: ; 11a38d
+ call Function11a536
+ ret c
+ call PlayClickSFX
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr nz, .asm_11a3b1
+ call ExitMenu
+ farcall ReloadMapPart
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a6d2
+ call PlaceString
+ and a
+ ret
+
+.asm_11a3b1
+ call ExitMenu
+ farcall ReloadMapPart
+ ld a, [wMobileInactivityTimerSeconds]
+ ld [wcf66], a
+ ld [wcd80], a
+ scf
+ ret
+; 11a3c5
+
+Function11a3c5: ; 11a3c5
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a762
+ call PlaceString
+ ld a, $80
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a3d9
+
+Function11a3d9: ; 11a3d9
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr z, .asm_11a3e5
+ dec a
+ ld [wMobileInactivityTimerMinutes], a
+ scf
+ ret
+
+.asm_11a3e5
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a779
+ call PlaceString
+ ld a, $80
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a3f9
+
+Function11a3f9: ; 11a3f9
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr z, .asm_11a405
+ dec a
+ ld [wMobileInactivityTimerMinutes], a
+ scf
+ ret
+
+.asm_11a405
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a755
+ call PlaceString
+ call Function11a5f5
+ xor a
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a41b
+
+Function11a41b: ; 11a41b
+ call Function11a536
+ ret c
+ call PlayClickSFX
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr nz, .asm_11a43f
+ call ExitMenu
+ farcall ReloadMapPart
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a6d2
+ call PlaceString
+ and a
+ ret
+
+.asm_11a43f
+ call ExitMenu
+ farcall ReloadMapPart
+ ld a, $1c
+ ld [wcf66], a
+ ld [wcd80], a
+ scf
+ ret
+; 11a452
+
+Function11a452: ; 11a452
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a791
+ call PlaceString
+ ld a, $80
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a466
+
+Function11a466: ; 11a466
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a7c1
+ call PlaceString
+ ld a, $80
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a47a
+
+Function11a47a: ; 11a47a
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr z, .asm_11a486
+ dec a
+ ld [wMobileInactivityTimerMinutes], a
+ scf
+ ret
+
+.asm_11a486
+ and a
+ ret
+; 11a488
+
+Function11a488: ; 11a488
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a7ac
+ call PlaceString
+ call Function11a5f5
+ xor a
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a49e
+
+Function11a49e: ; 11a49e
+ call Function11a536
+ ret c
+ call PlayClickSFX
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr nz, .asm_11a4c7
+ call ExitMenu
+ farcall ReloadMapPart
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a6d2
+ call PlaceString
+ ld a, $14
+ ld [wcf66], a
+ and a
+ ret
+
+.asm_11a4c7
+ call ExitMenu
+ farcall ReloadMapPart
+ ld a, [wMobileInactivityTimerFrames]
+ ld [wcf66], a
+ ld [wcd80], a
+ scf
+ ret
+; 11a4db
+
+Function11a4db: ; 11a4db
+ call Function11a63c
+ ld de, String_11a6db
+ hlcoord 4, 2
+ call PlaceString
+ ret
+; 11a4e8
+
+Function11a4e8: ; 11a4e8
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a7d7
+ call PlaceString
+ call Function11a5f5
+ xor a
+ ld [wMobileInactivityTimerMinutes], a
+ jp BattleTowerRoomMenu2_IncrementJumptable
+; 11a4fe
+
+Function11a4fe: ; 11a4fe
+ call Function11a536
+ ret c
+ call PlayClickSFX
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr nz, .asm_11a522
+ call ExitMenu
+ farcall ReloadMapPart
+ call Function11a63c
+ hlcoord 4, 2
+ ld de, String_11a6d2
+ call PlaceString
+ and a
+ ret
+
+.asm_11a522
+ call ExitMenu
+ farcall ReloadMapPart
+ ld a, [wMobileInactivityTimerSeconds]
+ ld [wcf66], a
+ ld [wcd80], a
+ scf
+ ret
+; 11a536
+
+Function11a536: ; 11a536
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and $1
+ jr nz, .asm_11a5a7
+ ld a, [hl]
+ and $2
+ jr nz, .asm_11a5a2
+ ld a, [hl]
+ and $40
+ jr nz, .asm_11a564
+ ld a, [hl]
+ and $80
+ jr nz, .asm_11a583
+.asm_11a54d
+ ld a, [wcd3c]
+ cp $4
+ jr z, .asm_11a562
+ call Function11a9f0
+ jr nz, .asm_11a562
+ call ExitMenu
+ farcall ReloadMapPart
+
+.asm_11a562
+ scf
+ ret
+
+.asm_11a564
+ xor a
+ ld [wcd8a], a
+ ld [wcd8b], a
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr z, .asm_11a54d
+ xor a
+ ld [wMobileInactivityTimerMinutes], a
+ hlcoord 15, 7
+ ld a, $ed
+ ld [hl], a
+ hlcoord 15, 9
+ ld a, $7f
+ ld [hl], a
+ jr .asm_11a54d
+
+.asm_11a583
+ xor a
+ ld [wcd8a], a
+ ld [wcd8b], a
+ ld a, [wMobileInactivityTimerMinutes]
+ and a
+ jr nz, .asm_11a54d
+ inc a
+ ld [wMobileInactivityTimerMinutes], a
+ hlcoord 15, 7
+ ld a, $7f
+ ld [hl], a
+ hlcoord 15, 9
+ ld a, $ed
+ ld [hl], a
+ jr .asm_11a54d
+
+.asm_11a5a2
+ ld a, $1
+ ld [wMobileInactivityTimerMinutes], a
+
+.asm_11a5a7
+ xor a
+ ld [wcd8a], a
+ ld [wcd8b], a
+ and a
+ ret
+; 11a5b0
+
+BattleTowerRoomMenu2_IncrementJumptable: ; 11a5b0
+ ld a, [wcd3c]
+ inc a
+ ld [wcd3c], a
+ scf
+ ret
+; 11a5b9
+
+Function11a5b9: ; 11a5b9
+ xor a
+ ld [wMenuBorderLeftCoord], a
+ ld [wMenuBorderTopCoord], a
+ ld a, $13
+ ld [wMenuBorderRightCoord], a
+ ld a, $5
+ ld [wMenuBorderBottomCoord], a
+ call PushWindow
+ hlcoord 0, 0, AttrMap
+ ld b, $6
+ ld c, $14
+ hlcoord 0, 0
+ ld b, $4
+ ld c, $12
+ call Function3eea
+ farcall ReloadMapPart
+ call UpdateSprites
+ ld c, $0
+ farcall Function115e18
+ ld a, $1
+ ld [wc305], a
+ ret
+; 11a5f5
+
+Function11a5f5: ; 11a5f5
+ ld a, $e
+ ld [wMenuBorderLeftCoord], a
+ ld a, $13
+ ld [wMenuBorderRightCoord], a
+ ld a, $6
+ ld [wMenuBorderTopCoord], a
+ ld a, $a
+ ld [wMenuBorderBottomCoord], a
+ call PushWindow
+ hlcoord 14, 6, AttrMap
+ ld b, $5
+ ld c, $6
+ hlcoord 14, 6
+ ld b, $3
+ ld c, $4
+ call Function3eea
+ hlcoord 16, 7
+ ld de, String_11a2cf
+ call PlaceString
+ hlcoord 16, 9
+ ld de, String_11a2d3
+ call PlaceString
+ hlcoord 15, 7
+ ld a, $ed
+ ld [hl], a
+ farcall ReloadMapPart
+ ret
+; 11a63c
+
+Function11a63c: ; 11a63c
+ hlcoord 4, 1
+ ld de, String_11a7f4
+ call PlaceString
+ hlcoord 4, 2
+ ld de, String_11a7f4
+ call PlaceString
+ hlcoord 4, 3
+ ld de, String_11a7f4
+ call PlaceString
+ hlcoord 4, 4
+ ld de, String_11a7f4
+ call PlaceString
+ ret
+; 11a661
+
+String_11a661: ; 11a661
+ db "これから モバイルセンターに"
+ next "でんわ", $1f, "かけます@"
+; 11a679
+
+String_11a679: ; 11a679
+ db "モバイルアダプタ", $25, "じゅんびは"
+ next "できて いますか?@"
+; 11a692
+
+String_11a692: ; 11a692
+ db "でんわ", $1f, "かけています"
+ next "しばらく おまちください@"
+; 11a6aa
+
+String_11a6aa: ; 11a6aa
+ db "でんわをかけると つうわりょう"
+ next "せつぞくりょう", $4a, "かかります@"
+; 11a6c8
+
+String_11a6c8: ; 11a6c8
+ db "せつぞく しました@"
+; 11a6d2
+
+String_11a6d2: ; 11a6d2
+ db "つうしん ちゅう@"
+; 11a6db
+
+String_11a6db: ; 11a6db
+ db "つうしん ちゅう"
+ next "セレクト エーでちゅうし@"
+; 11a6f1
+
+String_11a6f1: ; 11a6f1
+ db "この サービスには"
+ next "つうわりょう", $25, "ほかに@"
+; 11a706
+
+String_11a706: ; 11a706
+ db "おかね", $4a, "@"
+; 11a70b
+
+String_11a70b: ; 11a70b
+ db "えん"
+ next "かかります よろしい ですか?@"
+; 11a71e
+
+String_11a71e: ; 11a71e
+ db "つうしん しゅうりょう@"
+; 11a72a
+
+String_11a72a: ; 11a72a
+ db "つないだ じかん"
+ next " やく ふん びょう@"
+; 11a743
+
+String_11a743: ; 11a743
+ db "もっていない データが"
+ next "あります!@"
+; 11a755
+
+String_11a755: ; 11a755
+ db "データ", $1f, "よみこみますか?@"
+; 11a762
+
+String_11a762: ; 11a762
+ db "おなじ データ", $1f, "よみこんだ"
+ next "こと", $4a, "ありますが@"
+; 11a779
+
+String_11a779: ; 11a779
+ db "そのデータ", $24, "なくなっているか"
+ next "こわれて います@"
+; 11a791
+
+String_11a791: ; 11a791
+ db "もっている データと"
+ next "おなじデータしか ありません!@"
+; 11a7ac
+
+String_11a7ac: ; 11a7ac
+ db "データ", $25, "よみこみを"
+ next "ちゅうし しますか?@"
+; 11a7c1
+
+String_11a7c1: ; 11a7c1 ; new news?
+ db "あたらしい ニュースは"
+ next "ありません でした@"
+; 11a7d7
+
+String_11a7d7: ; 11a7d7
+ db "あたらしいニュース", $4a, "あります"
+ next "ニュース", $1f, "よみこみますか?@"
+; 11a7f4
+
+String_11a7f4: ; 11a7f4
+ db " @"
+; 11a804
+
+MenuDataHeader_11a804: ; 11a804
+ db $40 ; flags
+ db 0, 0 ; start coords
+ db 5, 19 ; end coords
+ dw NULL
+ db 0 ; default option
+; 11a80c
+
+Function11a80c: ; 11a80c
+ ld de, hDivisor
+ ld bc, hDividend
+ ld hl, Unknown_11a89a
+ call Function11a88c
+ ld bc, hQuotient
+ ld hl, Unknown_11a8ba
+ call Function11a88c
+ ld bc, hPrintNum3
+ ld hl, Unknown_11a8da
+ call Function11a88c
+ xor a
+ ld b, a
+ ld a, [hDivisor]
+ and $f
+ ld e, a
+ ld a, [hPrintNum7]
+ and $f
+ call Function11a884
+ ld e, a
+ ld a, [hPrintNum9]
+ and $f
+ call Function11a884
+ ld [wcd62], a
+ ld e, b
+ xor a
+ ld b, a
+ ld a, [hDivisor]
+ and $f0
+ swap a
+ call Function11a884
+ ld e, a
+ ld a, [hPrintNum7]
+ and $f0
+ swap a
+ call Function11a884
+ ld e, a
+ ld a, [hPrintNum9]
+ and $f0
+ swap a
+ call Function11a884
+ ld [wcd63], a
+ ld e, b
+ xor a
+ ld b, a
+ ld a, [hMathBuffer]
+ and $f
+ call Function11a884
+ ld e, a
+ ld a, [hPrintNum8]
+ and $f
+ call Function11a884
+ ld e, a
+ ld a, [hPrintNum10]
+ and $f
+ call Function11a884
+ ld [wcd64], a
+ ret
+; 11a884
+
+Function11a884: ; 11a884
+ add e
+ cp $a
+ ret c
+ sub $a
+ inc b
+ ret
+; 11a88c
+
+Function11a88c: ; 11a88c
+ ld a, [bc]
+ sla a
+ ld c, a
+ xor a
+ ld b, a
+ add hl, bc
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ inc de
+ ret
+; 11a89a
+
+Unknown_11a89a: ; 11a89a
+x = 0
+rept 16
+ bcd x % 100, x / 100
+x = x + 1
+endr
+
+Unknown_11a8ba: ; 11a8ba
+x = 0
+rept 16
+ bcd x % 100, x / 100
+x = x + 16
+endr
+
+Unknown_11a8da: ; 11a8da
+x = 0
+rept 16
+ bcd x % 100, x / 100
+x = x + 256
+endr
+; 11a8fa
+
+BattleTowerRoomMenu_WriteMessage: ; 11a8fa
+ jumptable .Jumptable, $c31a
+; 11a909
+
+.Jumptable: ; 11a909
+ dw BattleTowerRoomMenu_WriteMessage_DoNothing
+ dw Function11a90f
+ dw Function11a971
+; 11a90f
+
+Function11a90f: ; 11a90f
+ ld a, $1
+ ld [rSVBK], a
+ call SpeechTextBox
+ ld a, $50
+ ld hl, $c320
+ ld bc, $008c
+ call ByteFill
+ ld a, [$c31b]
+ ld l, a
+ ld a, [$c31c]
+ ld h, a
+ ld de, $c320
+.asm_11a92c
+ ld a, [hli]
+ cp $57
+ jr z, .asm_11a94f
+ cp $0
+ jr z, .asm_11a92c
+ cp $50
+ jr z, .asm_11a92c
+ cp $1
+ jr z, .asm_11a941
+ ld [de], a
+ inc de
+ jr .asm_11a92c
+
+.asm_11a941
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+.asm_11a945
+ ld a, [bc]
+ inc bc
+ cp $50
+ jr z, .asm_11a92c
+ ld [de], a
+ inc de
+ jr .asm_11a945
+
+.asm_11a94f
+ xor a
+ ld [$c31f], a
+ ld a, $c320 % $100
+ ld [$c31b], a
+ ld a, $c320 / $100
+ ld [$c31c], a
+ hlcoord 1, 14
+ ld a, l
+ ld [$c31d], a
+ ld a, h
+ ld [$c31e], a
+ ld hl, $c31a
+ inc [hl]
+ ld a, $3
+ ld [rSVBK], a
+
+BattleTowerRoomMenu_WriteMessage_DoNothing:
+ ret
+; 11a971
+
+Function11a971: ; 11a971
+ ld hl, $c31f
+ ld a, [hJoyDown]
+ and a
+ jr nz, .asm_11a97f
+ ld a, [hl]
+ and a
+ jr z, .asm_11a97f
+ dec [hl]
+ ret
+
+.asm_11a97f
+ ld a, [Options]
+ and $7
+ ld [hl], a
+ ld hl, wcd8d
+ ld a, [$c31b]
+ ld e, a
+ ld a, [$c31c]
+ ld d, a
+ ld a, [de]
+ inc de
+ ld [hli], a
+ ld a, e
+ ld [$c31b], a
+ ld a, d
+ ld [$c31c], a
+ ld a, $50
+ ld [hl], a
+ ld a, [$c31d]
+ ld l, a
+ ld a, [$c31e]
+ ld h, a
+ ld de, wcd8d
+ call PlaceString
+ ld a, c
+ ld [$c31d], a
+ ld a, b
+ ld [$c31e], a
+ ld a, [wcd8d]
+ cp $50
+ jr nz, .asm_11a9bf
+ xor a
+ ld [$c31a], a
+
+.asm_11a9bf
+ ret
+; 11a9c0
+
+BattleTowerRoomMenu_SetMessage: ; 11a9c0
+ ld a, l
+ ld [$c31b], a
+ ld a, h
+ ld [$c31c], a
+ ld a, $1
+ ld [$c31a], a
+ ret
+; 11a9ce
+
+Function11a9ce: ; 11a9ce
+ call ClearBGPalettes
+ call ReloadTilesetAndPalettes
+ call Call_ExitMenu
+ farcall MobileFunc_106462
+ farcall Function106464
+ call ret_d90
+ farcall FinishExitMenu
+ call UpdateSprites
+ ret
+; 11a9f0
+
+Function11a9f0: ; 11a9f0
+ ld a, $1
+ and a
+ ret
+; 11a9f4
+
+Function11a9f4: ; 11a9f4
+ ld a, [wcd8a]
+ ld l, a
+ ld a, [wcd8b]
+ ld h, a
+ inc hl
+ ld a, l
+ ld [wcd8a], a
+ ld a, h
+ ld [wcd8b], a
+ ld de, $d5d0
+ add hl, de
+ bit 7, h
+ ret nz
+ ld a, $d6
+ call Function118805
+ and a
+ ret
+; 11aa13
+
+Text_SaveFileWillBeSent: ; 0x11aa13
+ text "SAVE FILE will be"
+ line "sent."
+ done
+; 0x11aa2c
+
+Text_SentSaveFileReadingNews: ; 0x11aa2c
+ text "Sent SAVE FILE."
+ line "Reading NEWS…"
+ done
+; 0x11aa4b
+
+Text_ReadingNews: ; 0x11aa4b
+ text "Reading NEWS…"
+ done
+; 0x11aa5a
+
+Text_ReceivedNews: ; 0x11aa5a
+ text "Received NEWS!"
+ done
+; 0x11aa6a
+
+Text_QuitReadingNews: ; 0x11aa6a
+ text "Quit reading NEWS?"
+ done
+; 0x11aa7e
+
+Text_CanceledSendingSaveFile: ; 0x11aa7e
+ text "Canceled sending"
+ line "SAVE FILE."
+ done
+; 0x11aa9b
+
+Text_ReceivedOddEgg: ; 0x11aa9b
+ text "ODD EGG"
+ line "was received!"
+ done
+; 0x11aab2
+
+Text_RegisteringRecord: ; 0x11aab2
+ text "Registering your"
+ line "record…"
+ done
+; 0x11aacc
+
+Text_BattleRoomVisitLimit: ; 0x11aacc
+ text "One visit per day"
+ line "per BATTLE ROOM!"
+ done
+; 0x11aaf0
+
+Text_PartyMonTopsThisLevel: ; 0x11aaf0
+ text "A party #MON"
+ line "tops this level."
+ done
+; 0x11ab0f
+
+Text_UberRestriction: ; 0x11ab0f
+ text_from_ram wcd49
+ text " may go"
+ line "only to BATTLE"
+
+ para "ROOMS that are"
+ line "Lv.70 or higher."
+ done
+; 0x11ab4a
+
+Text_CancelBattleRoomChallenge: ; 0x11ab4a
+ text "Cancel your BATTLE"
+ line "ROOM challenge?"
+ done
+; 0x11ab6e
+
+Text_ExitGymLeaderHonorRoll: ; 0x11ab6e
+ text "Exit GYM LEADER"
+ line "HONOR ROLL?"
+ done
+; 0x11ab8b
+
+Text_LinkingWithCenter: ; 0x11ab8b
+ text "Linking with the"
+ line "CENTER…"
+ done
+; 0x11aba5
+
+Text_WhatLevelDoYouWantToChallenge: ; 0x11aba5
+ text "What level do you"
+ line "want to challenge?"
+ done
+; 0x11abcb
+
+Text_CheckBattleRoomListByMaxLevel: ; 0x11abcb
+ text "Check BATTLE ROOM"
+ line "list by max level?"
+ done
+; 0x11abf1
+
+Text_EnterWhichBattleRoom: ; 0x11abf1
+ text "Enter which"
+ line "BATTLE ROOM?"
+ done
+; 0x11ac0b
+
+Text_WhichBattleRoom: ; 0x11ac0b
+ text "Which BATTLE ROOM?"
+ done
+; 0x11ac1f
+
+Text_ThisBattleRoomPleaseWait: ; 0x11ac1f
+ text_from_ram StringBuffer3
+ text "'s ROOM"
+ line "@"
+ text_from_ram StringBuffer4
+ text "?"
+ cont "Please wait…"
+ done
+; 0x11ac3e
+
+Function11ac3e: ; 11ac3e
+ call SpeechTextBox
+ call FadeToMenu
+ callfar ClearSpriteAnims2
+ call Function11ac51
+ call CloseSubmenu
+ ret
+; 11ac51
+
+Function11ac51: ; 11ac51
+ xor a
+ ld [hBGMapMode], a
+ ld hl, Options
+ ld a, [hl]
+ push af
+ set 4, [hl]
+ ld a, [VramState]
+ push af
+ xor a
+ ld [VramState], a
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ xor a
+ ld [hMapAnims], a
+ ld [wcd49], a
+ ld [wcd4a], a
+ ld [wcd4c], a
+ ld [wcd4d], a
+ ld [wcd4e], a
+ call Function11ad1b
+ call DelayFrame
+.loop
+ call JoyTextDelay
+ ld a, [wJumptableIndex]
+ bit 7, a
+ jr nz, .asm_11aca8
+ call Function11b314
+ call Function11acb7
+ call Function11ad6e
+ ld a, 30 * 4
+ ld [wCurrSpriteOAMAddr], a
+ farcall DoNextFrameForAllSprites
+ farcall ReloadMapPart
+ jr .loop
+
+.asm_11aca8
+ call ClearSprites
+ pop af
+ ld [hInMenu], a
+ pop af
+ ld [VramState], a
+ pop af
+ ld [Options], a
+ ret
+; 11acb7
+
+Function11acb7: ; 11acb7
+ ld hl, TilemapPack_11ba44
+ ld a, [wcd49]
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ add hl, bc
+ decoord 6, 6
+ ld a, [hli]
+ ld [de], a
+ decoord 0, 7
+ ld bc, 7
+ call CopyBytes
+ ld a, [wcd49]
+ inc a
+ ld [wcd49], a
+ ld a, [hl]
+ cp $ff
+ jr nz, .get_the_other
+ xor a
+ ld [wcd49], a
+.get_the_other
+ ld hl, TilemapPack_11bb7d
+ ld a, [wcd4a]
+ ld c, a
+ ld b, $0
+ sla c
+ rl b
+ sla c
+ rl b
+ sla c
+ rl b
+ add hl, bc
+ decoord 3, 9
+ ld bc, 7
+ call CopyBytes
+ ld a, [wcd4a]
+ inc a
+ ld [wcd4a], a
+ inc hl
+ ld a, [hl]
+ cp $ff
+ ret nz
+ xor a
+ ld [wcd4a], a
+ ret
+; 11ad1b
+
+Function11ad1b: ; 11ad1b
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearTileMap
+ farcall Function17c000
+ ld a, [wMenuCursorY]
+ ld [wcd82], a
+ dec a
+ ld [hObjectStructIndexBuffer], a
+ ld a, $10
+ ld [wCurIconTile], a
+ ld hl, LoadMenuMonIcon
+ ld a, BANK(LoadMenuMonIcon)
+ ld e, $4
+ rst FarCall
+ ld hl, LoadMenuMonIcon
+ ld a, BANK(LoadMenuMonIcon)
+ ld e, $5
+ rst FarCall
+ ld hl, $c6d0
+ ld bc, $0115
+ xor a
+ call ByteFill
+ xor a
+ ld [wJumptableIndex], a
+ ld [wcf64], a
+ ld [wcf65], a
+ ld [wcf66], a
+ ld [wcd30], a
+ ld a, $2
+ ld [wc7d4], a
+ farcall Pokedex_OrderMonsByMode
+ ret
+; 11ad6e
+
+Function11ad6e: ; 11ad6e
+ ld a, [wJumptableIndex]
+ ld hl, Jumptable_11ad78
+ call Function11b239
+ jp hl
+; 11ad78
+
+Jumptable_11ad78: ; 11ad78
+ dw Function11b082
+ dw Function11b0ff
+ dw Function11ad95
+ dw Function11adc4
+ dw Function11ae4e
+ dw Function11ae98
+ dw Function11ad8f
+ dw Function11af04
+ dw Function11af4e
+; 11ad8a
+
+Function11ad8a: ; 11ad8a
+ ld hl, wJumptableIndex
+ inc [hl]
+ ret
+; 11ad8f
+
+Function11ad8f: ; 11ad8f
+ ld hl, wJumptableIndex
+ set 7, [hl]
+ ret
+; 11ad95
+
+Function11ad95: ; 11ad95
+ ld hl, MenuDataHeader_11ae38
+ call LoadMenuDataHeader
+ call MenuBox
+ hlcoord 12, 12
+ ld de, String_11ae40
+ call PlaceString
+ hlcoord 10, 10, AttrMap
+ lb bc, 8, 8
+ call Function11afd6
+ farcall ReloadMapPart
+ call Function11ad8a
+ ld a, $1
+ ld [wMenuCursorY], a
+ ld hl, Unknown_11afcc
+ call Function11afb7
+
+Function11adc4:
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and a
+ ret z
+ ld a, [hl]
+ and $40
+ jr nz, .asm_11ade6
+ ld a, [hl]
+ and $80
+ jr nz, .asm_11aded
+ ld a, [hl]
+ and $1
+ jr nz, .asm_11ae06
+ ld a, [hl]
+ and $2
+ ret z
+ call PlayClickSFX
+ xor a
+ ld [wJumptableIndex], a
+ jr .asm_11ae2e
+
+.asm_11ade6
+ ld a, [wMenuCursorY]
+ dec a
+ ret z
+ jr .asm_11adf4
+
+.asm_11aded
+ ld a, [wMenuCursorY]
+ inc a
+ cp $4
+ ret z
+
+.asm_11adf4
+ push af
+ ld hl, Unknown_11afcc
+ call Function11afbb
+ pop af
+ ld [wMenuCursorY], a
+ ld hl, Unknown_11afcc
+ call Function11afb7
+ ret
+
+.asm_11ae06
+ call PlayClickSFX
+ ld a, [wMenuCursorY]
+ dec a
+ ld hl, wcd30
+ ld [hl], a
+ and a
+ jr z, .asm_11ae28
+ hlcoord 2, 14
+ ld a, [wMenuCursorY]
+ cp $2
+ jr z, .asm_11ae23
+ call Function11b272
+ jr .asm_11ae2b
+
+.asm_11ae23
+ call Function11b267
+ jr .asm_11ae2b
+
+.asm_11ae28
+ ld a, $3
+ ld [hl], a
+
+.asm_11ae2b
+ call Function11ad8a
+
+.asm_11ae2e
+ call ExitMenu
+ farcall ReloadMapPart
+ ret
+; 11ae38
+
+MenuDataHeader_11ae38: ; 11ae38
+ db $40 ; flags
+ db 10, 10 ; start coords
+ db 17, 17 ; end coords
+ dw NULL
+ db 0 ; default option
+; 11ae40
+
+String_11ae40: ; 11ae40
+ db "どちらでも"
+ next "♂ォス"
+ next "♀メス"
+ db "@"
+; 11ae4e
+
+Function11ae4e: ; 11ae4e
+ ld hl, MenuDataHeader_11afe8
+ call LoadMenuDataHeader
+ call MenuBox
+ hlcoord 10, 14
+ ld de, String_11aff0
+ call PlaceString
+ ld hl, MenuDataHeader_11b013
+ call LoadMenuDataHeader
+ call MenuBox
+ hlcoord 16, 8
+ ld de, String_11b01b
+ call PlaceString
+ hlcoord 14, 7, AttrMap
+ lb bc, 5, 6
+ call Function11afd6
+ hlcoord 9, 12, AttrMap
+ lb bc, 6, 11
+ call Function11afd6
+ farcall ReloadMapPart
+ call Function11ad8a
+ ld a, $1
+ ld [wMenuCursorY], a
+ ld hl, Unknown_11afd2
+ call Function11afb7
+
+Function11ae98:
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and a
+ ret z
+ ld a, [hl]
+ and D_UP
+ jr nz, .asm_11aec1
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .asm_11aec8
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .asm_11aee1
+ ld a, [hl]
+ and B_BUTTON
+ ret z
+ call PlayClickSFX
+.asm_11aeb4
+ hlcoord 2, 14
+ ld a, $7f
+ ld [hl], a
+ ld a, $1
+ ld [wJumptableIndex], a
+ jr .asm_11aef7
+
+.asm_11aec1
+ ld a, [wMenuCursorY]
+ dec a
+ ret z
+ jr .asm_11aecf
+
+.asm_11aec8
+ ld a, [wMenuCursorY]
+ inc a
+ cp $3
+ ret z
+
+.asm_11aecf
+ push af
+ ld hl, Unknown_11afd2
+ call Function11afbb
+ pop af
+ ld [wMenuCursorY], a
+ ld hl, Unknown_11afd2
+ call Function11afb7
+ ret
+
+.asm_11aee1
+ call PlayClickSFX
+ ld a, [wMenuCursorY]
+ cp $2
+ jr z, .asm_11aeb4
+ ld a, [wcd4b]
+ ld [ScriptVar], a
+ call Function11b022
+ call Function11ad8a
+
+.asm_11aef7
+ call ExitMenu
+ call ExitMenu
+ farcall ReloadMapPart
+ ret
+; 11af04
+
+Function11af04: ; 11af04
+ ld hl, MenuDataHeader_11afe8
+ call LoadMenuDataHeader
+ call MenuBox
+ hlcoord 10, 14
+ ld de, String_11b003
+ call PlaceString
+ ld hl, MenuDataHeader_11b013
+ call LoadMenuDataHeader
+ call MenuBox
+ hlcoord 16, 8
+ ld de, String_11b01b
+ call PlaceString
+ hlcoord 14, 7, AttrMap
+ lb bc, 5, 6
+ call Function11afd6
+ hlcoord 9, 12, AttrMap
+ lb bc, 6, 11
+ call Function11afd6
+ farcall ReloadMapPart
+ call Function11ad8a
+ ld a, $2
+ ld [wMenuCursorY], a
+ ld hl, Unknown_11afd2
+ call Function11afb7
+
+Function11af4e:
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and a
+ ret z
+ ld a, [hl]
+ and D_UP
+ jr nz, .asm_11af77
+ ld a, [hl]
+ and D_DOWN
+ jr nz, .asm_11af7e
+ ld a, [hl]
+ and A_BUTTON
+ jr nz, .asm_11af97
+ ld a, [hl]
+ and B_BUTTON
+ ret z
+ call PlayClickSFX
+.asm_11af6a
+ hlcoord 2, 14
+ ld a, $7f
+ ld [hl], a
+ ld a, $1
+ ld [wJumptableIndex], a
+ jr .asm_11afaa
+
+.asm_11af77
+ ld a, [wMenuCursorY]
+ dec a
+ ret z
+ jr .asm_11af85
+
+.asm_11af7e
+ ld a, [wMenuCursorY]
+ inc a
+ cp $3
+ ret z
+
+.asm_11af85
+ push af
+ ld hl, Unknown_11afd2
+ call Function11afbb
+ pop af
+ ld [wMenuCursorY], a
+ ld hl, Unknown_11afd2
+ call Function11afb7
+ ret
+
+.asm_11af97
+ call PlayClickSFX
+ ld a, [wMenuCursorY]
+ cp $2
+ jr z, .asm_11af6a
+ ld a, $6
+ ld [wJumptableIndex], a
+ xor a
+ ld [ScriptVar], a
+
+.asm_11afaa
+ call ExitMenu
+ call ExitMenu
+ farcall ReloadMapPart
+ ret
+; 11afb7
+
+Function11afb7: ; 11afb7
+ ld e, $ed
+ jr asm_11afbd
+
+Function11afbb:
+ ld e, $7f
+
+asm_11afbd:
+ ld a, [wMenuCursorY]
+ dec a
+ ld c, a
+ ld b, 0
+ add hl, bc
+ add hl, bc
+ ld a, e
+ ld e, [hl]
+ inc hl
+ ld d, [hl]
+ ld [de], a
+ ret
+; 11afcc
+
+Unknown_11afcc:
+ dwcoord 11, 12
+ dwcoord 11, 14
+ dwcoord 11, 16
+
+Unknown_11afd2:
+ dwcoord 15, 8
+ dwcoord 15, 10
+; 11afd6
+
+Function11afd6: ; 11afd6
+ ld de, SCREEN_WIDTH
+ ld a, $3
+.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
+; 11afe8
+
+MenuDataHeader_11afe8: ; 11afe8
+ db $40 ; flags
+ db 12, 9 ; start coords
+ db 17, 19 ; end coords
+ dw NULL
+ db 0 ; default option
+; 11aff0
+
+String_11aff0: ; 11aff0
+ db "この じょうけんで"
+ next "よろしいですか?@"
+; 11b003
+
+String_11b003: ; 11b003
+ db "こうかんを"
+ next "ちゅうししますか?@"
+; 11b013
+
+MenuDataHeader_11b013: ; 11b013
+ db $40 ; flags
+ db 7, 14 ; start coords
+ db 11, 19 ; end coords
+ dw NULL
+ db 1 ; default option
+; 11b01b
+
+String_11b01b:
+ db "はい"
+ next "いいえ@"
+; 11b022
+
+Function11b022: ; 11b022
+ ld a, [wcd2e]
+ and a
+ jr z, .asm_11b02e
+ ld hl, StringBuffer3
+ call Function11b03d
+
+.asm_11b02e
+ ld a, [wcd30]
+ and a
+ ret z
+ cp $3
+ ret z
+ ld hl, StringBuffer4
+ call Function11b03d
+ ret
+; 11b03d
+
+Function11b03d: ; 11b03d
+ push hl
+ push af
+ ld c, $1
+.loop
+ ld a, [hli]
+ cp "♂"
+ jr z, .gender
+ cp "♀"
+ jr z, .gender
+ cp "@"
+ jr z, .done
+ inc c
+ jr .loop
+
+.gender
+ dec hl
+ ld a, "@"
+ ld [hli], a
+
+.done
+ dec hl
+ push hl
+ ld e, 4
+ ld d, 0
+ add hl, de
+ ld e, l
+ ld d, h
+ pop hl
+.loop2
+ ld a, [hld]
+ ld [de], a
+ dec de
+ dec c
+ jr nz, .loop2
+ pop af
+ pop de
+ cp $1
+ jr nz, .female
+ ld hl, .MaleString
+ jr .got_string
+
+.female
+ ld hl, .FemaleString
+
+.got_string
+ ld bc, 4 ; string length
+ call CopyBytes
+ ret
+; 11b07a
+
+.MaleString: db "ォスの "
+.FemaleString: db "メスの "
+
+Function11b082: ; 11b082
+ call Function11b242
+ ld a, $7
+ ld [wc7d3], a
+ call Function11b099
+ call Function11b295
+ call Function11b275
+ call SetPalettes
+ jp Function11ad8a
+; 11b099
+
+Function11b099: ; 11b099
+ ld c, $6
+ hlcoord 11, 1
+ ld a, [wc7d3]
+ add a
+ ld b, a
+ xor a
+ call Function11b236
+ ld a, [wc7d0]
+ ld e, a
+ ld d, $0
+ ld hl, wc6d0
+ add hl, de
+ ld e, l
+ ld d, h
+ hlcoord 11, 2
+ ld a, [wc7d3]
+.loop
+ push af
+ ld a, [de]
+ ld [wd265], a
+ push de
+ push hl
+ call .PlaceMonNameOrPlaceholderString
+ pop hl
+ ld de, 2 * SCREEN_WIDTH
+ add hl, de
+ pop de
+ inc de
+ pop af
+ dec a
+ jr nz, .loop
+ ret
+; 11b0cf
+
+.PlaceMonNameOrPlaceholderString: ; 11b0cf
+ and a
+ ret z
+
+ call .CheckSeenFlag
+ ret c
+
+ call .SetCaughtFlag
+ push hl
+ call GetPokemonName
+ pop hl
+ call PlaceString
+ ret
+; 11b0e1
+
+.SetCaughtFlag: ; 11b0e1
+ call CheckCaughtMemMon
+ jr nz, .okay
+ inc hl
+ ret
+
+.okay
+ ld a, $1
+ ld [hli], a
+ ret
+; 11b0ec
+
+.CheckSeenFlag: ; 11b0ec
+ call CheckSeenMemMon
+ ret nz
+
+ inc hl
+ ld de, .EmptySlot
+ call PlaceString
+ scf
+ ret
+; 11b0f9
+
+.EmptySlot: ; 11b0f9
+ db "ーーーーー@"
+; 11b0ff
+
+Function11b0ff: ; 11b0ff
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and $2
+ jr nz, .asm_11b141
+ ld a, [hl]
+ and $1
+ jr nz, .asm_11b131
+ call Function11b175
+ jr nc, .asm_11b125
+ ld a, [wcd4c]
+ inc a
+ and $3
+ ld [wcd4c], a
+ xor a
+ ld [hBGMapMode], a
+ call Function11b099
+ ld a, $1
+ ld [hBGMapMode], a
+ ret
+
+.asm_11b125
+ ld a, [wcd4c]
+ and a
+ ret z
+ inc a
+ and $3
+ ld [wcd4c], a
+ ret
+
+.asm_11b131
+ call Function11b20b
+ call CheckSeenMemMon
+ jr z, .asm_11b13d
+ ld a, $1
+ jr .asm_11b148
+
+.asm_11b13d
+ ld a, $2
+ jr .asm_11b148
+
+.asm_11b141
+ ld hl, wJumptableIndex
+ ld a, $7
+ ld [hl], a
+ ret
+
+.asm_11b148
+ call PlayClickSFX
+ ld [wcd4b], a
+ and a
+ jr z, .asm_11b16c
+ ld a, [wcf65]
+ cp $0
+ jr z, .asm_11b163
+ cp $fe
+ jr z, .asm_11b167
+ cp $ff
+ jr z, .asm_11b16b
+ jp Function11ad8a
+
+.asm_11b163
+ ld a, $1
+ jr .asm_11b16c
+
+.asm_11b167
+ ld a, $2
+ jr .asm_11b16c
+
+.asm_11b16b
+ xor a
+
+.asm_11b16c
+ ld [wcd30], a
+ ld a, $4
+ ld [wJumptableIndex], a
+ ret
+; 11b175
+
+Function11b175: ; 11b175
+ ld a, [wc7d3]
+ ld d, a
+ ld a, [wc7d2]
+ ld e, a
+ ld hl, hJoyLast
+ ld a, [hl]
+ and $40
+ jr nz, .asm_11b19a
+ ld a, [hl]
+ and $80
+ jr nz, .asm_11b1ae
+ ld a, d
+ cp e
+ jr nc, .asm_11b1ed
+ ld a, [hl]
+ and $20
+ jr nz, .asm_11b1c6
+ ld a, [hl]
+ and $10
+ jr nz, .asm_11b1d8
+ jr .asm_11b1ed
+
+.asm_11b19a
+ ld hl, wc7d1
+ ld a, [hl]
+ and a
+ jr z, .asm_11b1a4
+ dec [hl]
+ jr .asm_11b1ef
+
+.asm_11b1a4
+ ld hl, wc7d0
+ ld a, [hl]
+ and a
+ jr z, .asm_11b1ed
+ dec [hl]
+ jr .asm_11b1ef
+
+.asm_11b1ae
+ ld hl, wc7d1
+ ld a, [hl]
+ inc a
+ cp e
+ jr nc, .asm_11b1ed
+ cp d
+ jr nc, .asm_11b1bc
+ inc [hl]
+ jr .asm_11b1ef
+
+.asm_11b1bc
+ ld hl, wc7d0
+ add [hl]
+ cp e
+ jr nc, .asm_11b1ed
+ inc [hl]
+ jr .asm_11b1ef
+
+.asm_11b1c6
+ ld hl, wc7d0
+ ld a, [hl]
+ and a
+ jr z, .asm_11b1ed
+ cp d
+ jr nc, .asm_11b1d4
+ xor a
+ ld [hl], a
+ jr .asm_11b1ef
+
+.asm_11b1d4
+ sub d
+ ld [hl], a
+ jr .asm_11b1ef
+
+.asm_11b1d8
+ ld hl, wc7d0
+ ld a, d
+ add a
+ add [hl]
+ jr c, .asm_11b1e3
+ cp e
+ jr c, .asm_11b1e8
+
+.asm_11b1e3
+ ld a, e
+ sub d
+ ld [hl], a
+ jr .asm_11b1ef
+
+.asm_11b1e8
+ ld a, [hl]
+ add d
+ ld [hl], a
+ jr .asm_11b1ef
+
+.asm_11b1ed
+ and a
+ ret
+
+.asm_11b1ef
+ call Function11b295
+ call Function11b275
+ scf
+ ret
+; 11b1f7
+
+Function11b1f7: ; 11b1f7
+ hlcoord 0, 0
+ ld a, $32
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call ByteFill
+ ret
+; 11b203
+
+Function11b203: ; 11b203
+.asm_11b203
+ ld a, [de]
+ cp $ff
+ ret z
+ inc de
+ ld [hli], a
+ jr .asm_11b203
+; 11b20b
+
+Function11b20b: ; 11b20b
+ ld a, [wc7d1]
+ ld hl, wc7d0
+ add [hl]
+ ld e, a
+ ld d, $0
+ ld hl, $c6d0
+ add hl, de
+ ld a, [hl]
+ ld [wd265], a
+ ret
+; 11b21e
+
+CheckCaughtMemMon: ; 11b21e
+ push de
+ push hl
+ ld a, [wd265]
+ dec a
+ call CheckCaughtMon
+ pop hl
+ pop de
+ ret
+; 11b22a
+
+CheckSeenMemMon: ; 11b22a
+ push de
+ push hl
+ ld a, [wd265]
+ dec a
+ call CheckSeenMon
+ pop hl
+ pop de
+ ret
+; 11b236
+
+Function11b236: ; 11b236
+ jp FillBoxWithByte
+; 11b239
+
+Function11b239: ; 11b239
+ ld e, a
+ ld d, 0
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ ret
+; 11b242
+
+Function11b242: ; 11b242
+ hlcoord 3, 4
+ ld de, StringBuffer3
+ call PlaceString
+ xor a
+ ld [MonType], a
+ farcall GetGender
+ hlcoord 1, 4
+ ld a, [CurPartySpecies]
+ ld bc, wcd2f
+ ld [bc], a
+ dec bc
+ jr c, asm_11b26a
+ jr z, asm_11b26f
+ ld a, $1
+ ld [bc], a
+
+Function11b267:
+ ld [hl], $ef
+ ret
+
+asm_11b26a
+ xor a
+ ld [bc], a
+ ld [hl], $7f
+ ret
+
+asm_11b26f
+ ld a, $2
+ ld [bc], a
+
+Function11b272:
+ ld [hl], $f5
+ ret
+; 11b275
+
+Function11b275: ; 11b275
+ call Function11b279
+ ret
+; 11b279
+
+Function11b279: ; 11b279
+ ld a, [wd265]
+ ld [CurSpecies], a
+ call CheckSeenMemMon
+ jr z, .asm_11b28f
+ call GetBaseData
+ ld a, [BaseGender]
+ ld [wcf65], a
+ jr .asm_11b294
+
+.asm_11b28f
+ ld a, $ff
+ ld [wcf65], a
+
+.asm_11b294
+ ret
+; 11b295
+
+Function11b295: ; 11b295
+ hlcoord 4, 13
+ ld de, String_11b308
+ call PlaceString
+ hlcoord 4, 14
+ ld de, String_11b308
+ call PlaceString
+ call Function11b20b
+ call CheckSeenMemMon
+ jr z, .asm_11b2d1
+ ld a, [$c608]
+ ld c, a
+ ld a, [$c608 + 1]
+ ld b, a
+ ld hl, $0007
+ add hl, bc
+ xor a
+ ld [hl], a
+ ld hl, $0003
+ add hl, bc
+ ld e, [hl]
+ farcall FlyFunction_GetMonIcon
+ hlcoord 4, 14
+ push hl
+ call GetPokemonName
+ jr .asm_11b2e7
+
+.asm_11b2d1
+ ld a, [$c608]
+ ld c, a
+ ld a, [$c608 + 1]
+ ld b, a
+ ld hl, $0007
+ add hl, bc
+ ld a, $50
+ ld [hl], a
+ hlcoord 4, 13
+ push hl
+ ld de, String_11b30e
+
+.asm_11b2e7
+ ld a, $6
+ ld bc, StringBuffer4
+.asm_11b2ec
+ push af
+ ld a, [de]
+ ld [bc], a
+ inc de
+ inc bc
+ pop af
+ dec a
+ and a
+ jr nz, .asm_11b2ec
+ pop hl
+ ld de, StringBuffer4
+ call PlaceString
+ ret
+; 11b2fe
+
+String_11b2fe: ; 11b2fe
+ db "あげる#@"
+; 11b303
+
+String_11b303: ; 11b303
+ db "ほしい#@"
+; 11b308
+
+String_11b308: ; 11b308
+ db " @"
+; 11b30e
+
+String_11b30e: ; 11b30e
+ db "みはっけん@"
+; 11b314
+
+Function11b314: ; 11b314
+ call Function11b31b
+ call Function11b3d9
+ ret
+; 11b31b
+
+Function11b31b: ; 11b31b
+ ld hl, .Coords
+ ld a, [wJumptableIndex]
+ cp 2
+ jr c, .tilemap_1
+ ld a, [wc7d1]
+ cp 4
+ jr nc, .tilemap_3
+ cp 3
+ jr c, .tilemap_1
+ ld a, [wJumptableIndex]
+ cp 2
+ jr z, .tilemap_1
+ cp 3
+ jr z, .tilemap_1
+ cp 6
+ jr z, .tilemap_1
+
+ ld bc, .Tilemap2
+ jr .load_sprites
+
+.tilemap_3
+ ld bc, .Tilemap3
+ jr .load_sprites
+
+.tilemap_1
+ ld bc, .Tilemap1
+
+.load_sprites
+ call Function11b397
+ ret
+; 11b350
+
+.Coords:
+ dbpixel 3, 11, 2, 6 ; 0
+ dbpixel 3, 12, 2, 6 ; 1
+ dbpixel 3, 13, 2, 6 ; 2
+ dbpixel 3, 14, 2, 6 ; 3
+ dbpixel 3, 15, 2, 6 ; 4
+ dbpixel 3, 16, 2, 6 ; 5
+ dbpixel 3, 17, 2, 6 ; 6
+ dbpixel 4, 11, 2, 6 ; 7
+ dbpixel 4, 12, 2, 6 ; 8
+ dbpixel 4, 13, 2, 6 ; 9
+ dbpixel 4, 14, 2, 6 ; 10
+ dbpixel 4, 15, 2, 6 ; 11
+ dbpixel 4, 16, 2, 6 ; 12
+ dbpixel 4, 17, 2, 6 ; 13
+ db -1
+
+.Tilemap1: ; vtiles
+ db $30 ; 0
+ db $31 ; 1
+ db $31 ; 2
+ db $31 ; 3
+ db $31 ; 4
+ db $31 ; 5
+ db $32 ; 6
+ db $40 ; 7
+ db $41 ; 8
+ db $41 ; 9
+ db $41 ; 10
+ db $41 ; 11
+ db $41 ; 12
+ db $42 ; 13
+
+.Tilemap2: ; vtiles
+ db $30 ; 0
+ db $31 ; 1
+ db $31 ; 2
+ db $39 ; 3
+ db $39 ; 4
+ db $39 ; 5
+ db $39 ; 6
+ db $40 ; 7
+ db $41 ; 8
+ db $41 ; 9
+ db $39 ; 10
+ db $39 ; 11
+ db $39 ; 12
+ db $39 ; 13
+
+.Tilemap3: ; vtiles
+ db $39 ; 0
+ db $39 ; 1
+ db $39 ; 2
+ db $39 ; 3
+ db $39 ; 4
+ db $39 ; 5
+ db $39 ; 6
+ db $39 ; 7
+ db $39 ; 8
+ db $39 ; 9
+ db $39 ; 10
+ db $39 ; 11
+ db $39 ; 12
+ db $39 ; 13
+
+Function11b397: ; 11b397
+ ld de, Sprites
+.loop
+ ld a, [hl]
+ cp $ff
+ ret z
+ ld a, [wc7d1]
+ and $7
+ swap a
+ add [hl]
+ inc hl ; 1
+ ld [de], a
+ inc de
+
+ ld a, [hli] ; 2
+ ld [de], a
+ inc de
+
+ ld a, [bc]
+ inc bc
+ ld [de], a
+ inc de
+ ld a, $5 ; OBPal 5
+ ld [de], a
+ inc de
+ jr .loop
+; 11b3b6
+
+Function11b3b6: ; 11b3b6
+; unreferenced
+.loop
+ ld a, [hl]
+ cp -1
+ ret z
+ ld a, [wcd4d]
+ and $7
+ swap a
+ add [hl]
+ inc hl
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ inc de
+ push hl
+ ld l, c
+ ld h, b
+ ld a, [wcd4e]
+ add [hl]
+ inc bc
+ ld [de], a
+ inc de
+ pop hl
+ ld a, $5
+ ld [de], a
+ inc de
+ jr .loop
+; 11b3d9
+
+Function11b3d9: ; 11b3d9
+ ld de, Sprites + 28 * 4
+ push de
+ ld a, [wc7d2]
+ dec a
+ ld e, a
+ ld a, [wc7d1]
+ ld hl, wc7d0
+ add [hl]
+ cp e
+ jr z, .skip
+ ld hl, 0
+ ld bc, $70
+ call AddNTimes
+ ld e, l
+ ld d, h
+ ld b, 0
+ ld a, d
+ or e
+ jr z, .load_sprites
+ ld a, [wc7d2]
+ ld c, a
+.loop1
+ ld a, e
+ sub c
+ ld e, a
+ ld a, d
+ sbc $0
+ ld d, a
+ jr c, .load_sprites
+ inc b
+ jr .loop1
+
+.skip
+ ld b, 14 * 8
+
+.load_sprites
+ ld a, 2 * 8 + 5
+ add b
+ pop hl
+ ld [hli], a
+ cp $41
+ jr c, .version1
+ ld a, [wJumptableIndex]
+ cp 4
+ jr z, .version2
+ cp 5
+ jr z, .version2
+ cp 7
+ jr z, .version2
+ cp 8
+ jr z, .version2
+
+.version1
+ ld a, 19 * 8 + 3
+ ld [hli], a
+ ld a, [wcd4c]
+ add $3c
+ ld [hli], a
+ ld a, [wcd4c]
+ add $1
+ ld [hl], a
+ ret
+
+.version2
+ ld a, 19 * 8 + 3
+ ld [hli], a
+ ld a, $39
+ ld [hli], a
+ xor a
+ ld [hl], a
+ ret
+; 11b444
+
+Function11b444: ; 11b444
+; special
+ call Mobile46_InitJumptable
+ call Mobile46_RunJumptable
+ ret
+; 11b44b
+
+Mobile46_InitJumptable: ; 11b44b
+ xor a
+ ld [wJumptableIndex], a
+ ld [wcf64], a
+ ld [wcf65], a
+ ld [wcf66], a
+ call UpdateTime
+ ret
+; 11b45c
+
+Mobile46_RunJumptable: ; 11b45c
+.loop
+ call .IterateJumptable
+ call DelayFrame
+ ld a, [wJumptableIndex]
+ cp 4
+ jr nz, .loop
+ ret
+; 11b46a
+
+.IterateJumptable: ; 11b46a
+ jumptable .Jumptable, wJumptableIndex
+
+.Jumptable:
+ dw Function11b483
+ dw Function11b570
+ dw Function11b5c0
+ dw Function11b5e0
+ dw Function11b5e7 ; unused
+; 11b483
+
+Function11b483: ; 11b483
+ call .InitRAM
+ ld hl, PlayerName
+ ld a, NAME_LENGTH_JAPANESE - 1
+.loop1
+ push af
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ pop af
+ dec a
+ and a
+ jr nz, .loop1
+
+ ld de, PARTYMON_STRUCT_LENGTH
+ ld hl, PartyMon1Species
+ ld a, [wcd82]
+ dec a
+ push af
+.loop2
+ and a
+ jr z, .okay
+ add hl, de
+ dec a
+ jr .loop2
+
+.okay
+ push bc
+ ld a, PARTYMON_STRUCT_LENGTH
+.loop3
+ push af
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ pop af
+ dec a
+ and a
+ jr nz, .loop3
+
+ pop de
+ push bc
+ ld a, [de]
+ ld [CurSpecies], a
+ call GetBaseData
+ ld hl, MON_LEVEL
+ add hl, de
+ ld a, [hl]
+ ld [CurPartyLevel], a
+ ld hl, MON_MAXHP
+ add hl, de
+ push hl
+ ld hl, MON_STAT_EXP - 1
+ add hl, de
+ pop de
+ push de
+ ld b, OTPARTYMON
+ predef CalcPkmnStats
+ pop de
+ ld h, d
+ ld l, e
+ dec hl
+ dec hl
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hl], a
+ pop bc
+ ld de, NAME_LENGTH
+ ld hl, PartyMonOT
+ pop af
+ push af
+.loop4
+ and a
+ jr z, .okay2
+ add hl, de
+ dec a
+ jr .loop4
+
+.okay2
+ ld a, NAME_LENGTH - 1
+.loop5
+ push af
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ pop af
+ dec a
+ and a
+ jr nz, .loop5
+ ld de, NAME_LENGTH
+ ld hl, PartyMonNicknames
+ pop af
+ push af
+.loop6
+ and a
+ jr z, .okay3
+ add hl, de
+ dec a
+ jr .loop6
+
+.okay3
+ ld a, NAME_LENGTH - 1
+.loop7
+ push af
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ pop af
+ dec a
+ and a
+ jr nz, .loop7
+ ld de, MAIL_STRUCT_LENGTH
+ ld hl, sPartyMail
+ pop af
+.loop8
+ and a
+ jr z, .okay4
+ add hl, de
+ dec a
+ jr .loop8
+
+.okay4
+ ld a, $0 ; BANK(sPartyMail)
+ call GetSRAMBank
+ ld a, MAIL_STRUCT_LENGTH
+.loop9
+ push af
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ pop af
+ dec a
+ and a
+ jr nz, .loop9
+ call CloseSRAM
+ jp Function11ad8a
+
+.InitRAM:
+ ld bc, $c626
+ ld a, [PlayerID]
+ ld [wcd2a], a
+ ld [bc], a
+ inc bc
+
+ ld a, [PlayerID + 1]
+ ld [wcd2b], a
+ ld [bc], a
+ inc bc
+
+ ld a, [wSecretID]
+ ld [wcd2c], a
+ ld [bc], a
+ inc bc
+
+ ld a, [wSecretID + 1]
+ ld [wcd2d], a
+ ld [bc], a
+ inc bc
+
+ ld a, [wcd2e]
+ ld [bc], a
+ inc bc
+
+ ld a, [wcd2f]
+ ld [bc], a
+ inc bc
+
+ ld a, [wcd30]
+ ld [bc], a
+ inc bc
+
+ ld a, [wd265]
+ ld [bc], a
+ inc bc
+ ret
+; 11b570
+
+Function11b570: ; 11b570
+ call Function118007
+ ld a, [ScriptVar]
+ and a
+ jr nz, .exit
+ call .SaveData
+ jp Function11ad8a
+
+.exit
+ ld a, $4
+ ld [wJumptableIndex], a
+ ret
+
+.SaveData:
+ ld a, $3
+ ld [rSVBK], a
+
+ ld hl, w3_d800
+ ld de, $c608
+ ld bc, w3_d88f - w3_d800
+ call CopyBytes
+
+ ld a, $1
+ ld [rSVBK], a
+ ld a, $5
+ call GetSRAMBank
+
+ ld de, $a800
+ ld a, $1
+ ld [de], a
+ inc de
+ ld hl, $c608
+ ld bc, w3_d88f - w3_d800
+ call CopyBytes
+
+ push de
+ pop hl
+
+ ld a, [hRTCMinutes]
+ ld [hli], a
+ ld a, [hRTCHours]
+ ld [hli], a
+ ld a, [hRTCDayLo]
+ ld [hli], a
+ ld a, [hRTCDayHi]
+ ld [hl], a
+
+ call CloseSRAM
+ ret
+; 11b5c0
+
+Function11b5c0: ; 11b5c0
+ ld a, [wcd82]
+ dec a
+ ld [CurPartyMon], a
+ xor a
+ ld [wPokemonWithdrawDepositParameter], a
+ farcall RemoveMonFromPartyOrBox
+ farcall Function170807
+ farcall SaveAfterLinkTrade
+ jp Function11ad8a
+; 11b5e0
+
+Function11b5e0: ; 11b5e0
+ xor a
+ ld [ScriptVar], a
+ jp Function11ad8a
+; 11b5e7
+
+Function11b5e7: ; 11b5e7
+ ret
+; 11b5e8
+
+Function11b5e8: ; 11b5e8
+ ld a, $0
+ call GetSRAMBank
+ ld hl, wRTC
+ ld de, $c608
+ ld bc, 4
+ call CopyBytes
+ call CloseSRAM
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $c608
+ ld de, $b08c
+ ld bc, 4
+ call CopyBytes
+ ld a, $2
+ ld [$a800], a
+ ld a, [$a81f]
+ ld [wcd2a], a
+ ld a, [$a820]
+ ld [wcd2b], a
+ ld a, [$a821]
+ ld [wcd2c], a
+ ld a, [$a822]
+ ld [wcd2d], a
+ ld a, [$a823]
+ ld [wcd2e], a
+ ld a, [$a824]
+ ld [wcd2f], a
+ ld a, [$a825]
+ ld [wcd30], a
+ ld a, [$a826]
+ ld [wcd31], a
+ call CloseSRAM
+ call Mobile46_InitJumptable
+ call .loop
+ ret
+
+.loop
+ call .RunJumptable
+ call DelayFrame
+ ld a, [wJumptableIndex]
+ cp $1
+ jr nz, .loop
+ ret
+
+.RunJumptable:
+ jumptable .Jumptable, wJumptableIndex
+.Jumptable:
+ dw Function11b66d
+ dw Function11b6b3
+; 11b66d
+
+Function11b66d: ; 11b66d
+ call Function1180b8
+ ld a, [ScriptVar]
+ and a
+ jr nz, .asm_11b6b0
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+ ld a, [w3_d090]
+ ld b, a
+ pop af
+ ld [rSVBK], a
+ ld a, b
+ and a
+ jr z, .asm_11b691
+ cp $1
+ jr nz, .asm_11b6b0
+ call Function11b6b4
+ jr .asm_11b6b0
+
+.asm_11b691
+ farcall Function17081d
+ ld a, [ScriptVar]
+ and a
+ jr z, .asm_11b6b0
+ xor a
+ ld [ScriptVar], a
+ ld a, [rSVBK]
+ push af
+ ld a, $3
+ ld [rSVBK], a
+ ld a, $2
+ ld [w3_d090], a
+ pop af
+ ld [rSVBK], a
+
+.asm_11b6b0
+ jp Function11ad8a
+; 11b6b3
+
+Function11b6b3: ; 11b6b3
+ ret
+; 11b6b4
+
+Function11b6b4: ; 11b6b4
+ ld a, $5
+ call GetSRAMBank
+ ld a, [wcd30]
+ ld [$c708], a
+ ld a, [wcd31]
+ ld [$c709], a
+
+ ld a, $c708 % $100
+ ld [wMobileMonSpeciesPointerBuffer], a
+ ld a, $c708 / $100
+ ld [wMobileMonSpeciesPointerBuffer + 1], a
+
+ ld a, $c60d % $100 ; Partymon Struct
+ ld [wMobileMonStructurePointerBuffer], a
+ ld a, $c60d / $100
+ ld [wMobileMonStructurePointerBuffer + 1], a
+
+ ld a, $c63d % $100 ; OT
+ ld [wMobileMonOTNamePointerBuffer], a
+ ld a, $c63d / $100
+ ld [wMobileMonOTNamePointerBuffer + 1], a
+
+ ld a, $c642 % $100 ; Nickname
+ ld [wMobileMonNicknamePointerBuffer], a
+ ld a, $c642 / $100
+ ld [wMobileMonNicknamePointerBuffer + 1], a
+
+ ld a, $c647 % $100 ; ???
+ ld [wMobileMonMailPointerBuffer], a
+ ld a, $c647 / $100
+ ld [wMobileMonMailPointerBuffer + 1], a
+
+ ld a, $46
+ ld [$c628], a
+
+ ld de, $c63d
+ ld c, 5
+ farcall CheckStringForErrors
+ jr nc, .length_check_OT
+ farcall Mobile_CopyDefaultOTName
+
+.length_check_OT
+ ld de, $c63d
+ lb bc, 1, 5
+ farcall CheckStringContainsLessThanBNextCharacters
+ jr nc, .error_check_nick
+ farcall Mobile_CopyDefaultOTName
+
+.error_check_nick
+ ld de, $c642
+ ld c, 5
+ farcall CheckStringForErrors
+ jr nc, .length_check_nick
+ farcall Mobile_CopyDefaultNickname
+
+.length_check_nick
+ ld de, $c642
+ lb bc, 1, 5
+ farcall CheckStringContainsLessThanBNextCharacters
+ jr nc, .error_check_mail
+ farcall Mobile_CopyDefaultNickname
+
+.error_check_mail
+ ld de, $c647
+ ld c, MAIL_MSG_LENGTH + 1
+ farcall CheckStringForErrors
+ jr nc, .length_check_mail
+ farcall Mobile_CopyDefaultMail
+
+.length_check_mail
+ ld de, $c647
+ lb bc, 2, MAIL_MSG_LENGTH + 1
+ farcall CheckStringContainsLessThanBNextCharacters
+ jr c, .fix_mail
+ ld a, b
+ cp $2
+ jr nz, .mail_ok
+
+.fix_mail
+ farcall Mobile_CopyDefaultMail
+
+.mail_ok
+ ld de, $c668
+ ld c, $5
+ farcall CheckStringForErrors
+ jr nc, .length_check_author
+ farcall Mobile_CopyDefaultMailAuthor
+
+.length_check_author
+ ld de, $c668
+ lb bc, 1, 5
+ farcall CheckStringContainsLessThanBNextCharacters
+ jr nc, .author_okay
+ farcall Mobile_CopyDefaultMailAuthor
+
+.author_okay
+ ld a, [$c60e]
+ cp -1
+ jr nz, .item_okay
+ xor a
+ ld [$c60e], a
+
+.item_okay
+ ld a, [wcd31]
+ ld [$c60d], a
+ ld [CurSpecies], a
+ call GetBaseData
+
+ ld hl, $c60d + MON_LEVEL
+ ld a, [hl]
+ cp MIN_LEVEL
+ ld a, MIN_LEVEL
+ jr c, .replace_level
+ ld a, [hl]
+ cp MAX_LEVEL
+ jr c, .done_level
+ ld a, MAX_LEVEL
+.replace_level
+ ld [hl], a
+.done_level
+ ld [CurPartyLevel], a
+
+ ld hl, $c60d + MON_STAT_EXP - 1
+ ld de, $c60d + MON_MAXHP
+ ld b, $1
+ predef CalcPkmnStats
+ ld de, $c60d + MON_MAXHP
+ ld hl, $c60d + MON_HP
+ ld a, [de]
+ ld [hli], a
+ inc de
+ ld a, [de]
+ ld [hl], a
+ call AddMobileMonToParty
+ ret
+; 11b7e5
+
+Function11b7e5: ; 11b7e5
+ ld a, [$c60d] ; species
+ ld [wOTTrademonSpecies], a
+ ld [CurPartySpecies], a
+ ld a, [wcd81]
+ ld [wc74e], a
+ ld hl, $c63d ; OT
+ ld de, wOTTrademonOTName
+ ld bc, 5
+ call CopyBytes
+ ld a, "@"
+ ld [de], a
+ ld a, [$c60d + MON_ID] ; id
+ ld [wOTTrademonID], a
+ ld a, [$c60d + MON_ID + 1]
+ ld [wOTTrademonID + 1], a
+ ld hl, $c60d + MON_DVS ; dvs
+ ld a, [hli]
+ ld [wOTTrademonDVs], a
+ ld a, [hl]
+ ld [wOTTrademonDVs + 1], a
+ ld bc, $c60d ; pokemon_data_start
+ farcall GetCaughtGender
+ ld a, c
+ ld [wOTTrademonCaughtData], a
+ call SpeechTextBox
+ call FadeToMenu
+ farcall MobileTradeAnimation_ReceiveGetmonFromGTS
+ farcall Function17d1f1
+ ld a, $1
+ ld [wForceEvolution], a
+ ld a, $2
+ ld [wLinkMode], a
+ farcall EvolvePokemon
+ xor a
+ ld [wLinkMode], a
+ farcall SaveAfterLinkTrade
+ ld a, $5
+ call GetSRAMBank
+ ld a, $5
+ ld [$a800], a
+ call CloseSRAM
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ call GetMapSceneID
+ ld a, d
+ or e
+ jr z, .asm_11b872
+ ld a, $1
+ ld [de], a
+
+.asm_11b872
+ call CloseSubmenu
+ call RestartMapMusic
+ ret
+; 11b879
+
+Function11b879: ; 11b879
+ farcall BattleTower_CheckSaveFileExistsAndIsYours
+ ld a, [ScriptVar]
+ and a
+ ret z
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$a800]
+ ld [ScriptVar], a
+ ld a, [$a890]
+ ld [wcd49], a
+ ld a, [$a891]
+ ld [wcd4a], a
+ ld a, [$a892]
+ ld [wcd4b], a
+ ld a, [$a893]
+ ld [wcd4c], a
+ call CloseSRAM
+ ld a, [ScriptVar]
+ and a
+ ret z
+ ld hl, wcd4c
+ ld a, [hRTCDayHi]
+ cp [hl]
+ ret nz
+ dec hl
+ ld a, [hRTCDayLo]
+ cp [hl]
+ ret nz
+ ld hl, wcd4a
+ ld a, [hRTCHours]
+ cp [hl]
+ jr nc, .asm_11b8d8
+ ld a, $18
+ sub [hl]
+ ld hl, hRTCHours
+ add [hl]
+ ld [wcd4c], a
+ ld a, [hRTCMinutes]
+ ld [wcd4b], a
+ xor a
+ ld [wcd4a], a
+ jr .asm_11b8e2
+
+.asm_11b8d8
+ ld a, [hRTCMinutes]
+ ld [wcd4b], a
+ ld a, [hRTCHours]
+ ld [wcd4c], a
+
+.asm_11b8e2
+ xor a
+ ld l, a
+ ld h, a
+ ld b, a
+ ld d, a
+ ld a, [wcd4b]
+ ld e, a
+ ld a, [wcd4c]
+ ld c, $3c
+ call AddNTimes
+ add hl, de
+ push hl
+ xor a
+ ld l, a
+ ld h, a
+ ld b, a
+ ld d, a
+ ld a, [wcd49]
+ ld e, a
+ ld a, [wcd4a]
+ ld c, $3c
+ call AddNTimes
+ add hl, de
+ ld a, l
+ cpl
+ add $1
+ ld e, a
+ ld a, h
+ cpl
+ adc $0
+ ld d, a
+ pop hl
+ add hl, de
+ ld de, $ff88
+ add hl, de
+ bit 7, h
+ ret z
+ ld a, $2
+ ld [ScriptVar], a
+ ret
+; 11b920
+
+Function11b920: ; 11b920
+ call Mobile46_InitJumptable
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $a81f
+ ld de, $c626
+ ld bc, 8
+ call CopyBytes
+ call CloseSRAM
+ call Function118000
+ ret
+; 11b93b
+
+Function11b93b: ; 11b93b
+ ld a, $5
+ call GetSRAMBank
+ xor a
+ ld [$a800], a
+ ld hl, $a823
+ ld de, $c608
+ ld bc, $008f
+ call CopyBytes
+ call CloseSRAM
+
+ ld a, $c608 % $100
+ ld [wMobileMonSpeciesPointerBuffer], a
+ ld a, $c608 / $100
+ ld [wMobileMonSpeciesPointerBuffer + 1], a
+
+ ld a, $c611 % $100
+ ld [wMobileMonStructurePointerBuffer], a
+ ld a, $c611 / $100
+ ld [wMobileMonStructurePointerBuffer + 1], a
+
+ ld a, $c641 % $100
+ ld [wMobileMonOTNamePointerBuffer], a
+ ld a, $c641 / $100
+ ld [wMobileMonOTNamePointerBuffer + 1], a
+
+ ld a, $c646 % $100
+ ld [wMobileMonNicknamePointerBuffer], a
+ ld a, $c646 / $100
+ ld [wMobileMonNicknamePointerBuffer + 1], a
+
+ ld a, $c64b % $100
+ ld [wMobileMonMailPointerBuffer], a
+ ld a, $c64b / $100
+ ld [wMobileMonMailPointerBuffer + 1], a
+ call AddMobileMonToParty
+ farcall SaveAfterLinkTrade
+ ret
+; 11b98f
+
+AddMobileMonToParty: ; 11b98f
+ ld hl, PartyCount
+ ld a, [hl]
+ ld e, a
+ inc [hl]
+
+ ld a, [wMobileMonSpeciesPointerBuffer]
+ ld l, a
+ ld a, [wMobileMonSpeciesPointerBuffer + 1]
+ ld h, a
+ inc hl
+ ld bc, PartySpecies
+ ld d, e
+.loop1
+ inc bc
+ dec d
+ jr nz, .loop1
+ ld a, e
+ ld [CurPartyMon], a
+ ld a, [hl]
+ ld [bc], a
+ inc bc
+ ld a, -1
+ ld [bc], a
+
+ ld hl, PartyMon1Species
+ ld bc, PARTYMON_STRUCT_LENGTH
+ ld a, e
+ ld [wMobileMonSpeciesBuffer], a
+.loop2
+ add hl, bc
+ dec a
+ and a
+ jr nz, .loop2
+ ld e, l
+ ld d, h
+ ld a, [wMobileMonStructurePointerBuffer]
+ ld l, a
+ ld a, [wMobileMonStructurePointerBuffer + 1]
+ ld h, a
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call CopyBytes
+
+ ld hl, PartyMonOT
+ ld bc, NAME_LENGTH
+ ld a, [wMobileMonSpeciesBuffer]
+.loop3
+ add hl, bc
+ dec a
+ and a
+ jr nz, .loop3
+ ld e, l
+ ld d, h
+ ld a, [wMobileMonOTNamePointerBuffer]
+ ld l, a
+ ld a, [wMobileMonOTNamePointerBuffer + 1]
+ ld h, a
+ ld bc, PKMN_NAME_LENGTH - 1
+ call CopyBytes
+ ld a, "@"
+ ld [de], a
+
+ ld hl, PartyMonNicknames
+ ld bc, PKMN_NAME_LENGTH
+ ld a, [wMobileMonSpeciesBuffer]
+.loop4
+ add hl, bc
+ dec a
+ and a
+ jr nz, .loop4
+ ld e, l
+ ld d, h
+ ld a, [wMobileMonNicknamePointerBuffer]
+ ld l, a
+ ld a, [wMobileMonNicknamePointerBuffer + 1]
+ ld h, a
+ ld bc, PKMN_NAME_LENGTH - 1
+ call CopyBytes
+ ld a, "@"
+ ld [de], a
+
+ ld hl, sPartyMail
+ ld bc, MAIL_STRUCT_LENGTH
+ ld a, [wMobileMonSpeciesBuffer]
+.loop5
+ add hl, bc
+ dec a
+ and a
+ jr nz, .loop5
+ ld a, BANK(sPartyMail)
+ call GetSRAMBank
+ ld e, l
+ ld d, h
+ ld a, [wMobileMonMailPointerBuffer]
+ ld l, a
+ ld a, [wMobileMonMailPointerBuffer + 1]
+ ld h, a
+ ld bc, MAIL_STRUCT_LENGTH
+ call CopyBytes
+
+ call CloseSRAM
+ ret
+; 11ba38
+
+Function11ba38: ; 11ba38
+ farcall CheckCurPartyMonFainted
+ ret c
+ xor a
+ ld [ScriptVar], a
+ ret
+; 11ba44
+
+TilemapPack_11ba44:
+ db $47, $30, $0a, $0a, $0a, $0a, $0a, $56 ; 00
+ db $46, $2f, $0a, $0a, $0a, $0a, $0a, $55 ; 01
+ db $45, $3d, $0a, $0a, $0a, $0a, $0a, $54 ; 02
+ db $44, $30, $0a, $0a, $0a, $0a, $0a, $53 ; 03
+ db $43, $2f, $0a, $0a, $0a, $0a, $0a, $52 ; 04
+ db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $51 ; 05
+ db $4a, $30, $0a, $0a, $0a, $0a, $0a, $50 ; 06
+ db $4a, $2f, $0a, $0a, $0a, $0a, $0a, $4f ; 07
+ db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $4e ; 08
+ db $4a, $30, $0a, $0a, $0a, $0a, $4d, $42 ; 09
+ db $4a, $2f, $0a, $0a, $0a, $0a, $6b, $58 ; 0a
+ db $4a, $3d, $0a, $0a, $0a, $0a, $6a, $58 ; 0b
+ db $4a, $30, $0a, $0a, $0a, $0a, $69, $58 ; 0c
+ db $4a, $2f, $0a, $0a, $0a, $0a, $68, $58 ; 0d
+ db $4a, $3d, $0a, $0a, $0a, $66, $67, $58 ; 0e
+ db $4a, $30, $0a, $0a, $0a, $65, $0a, $58 ; 0f
+ db $4a, $2f, $0a, $0a, $0a, $64, $0a, $58 ; 10
+ db $4a, $3d, $0a, $0a, $0a, $63, $0a, $58 ; 11
+ db $4a, $30, $0a, $0a, $61, $62, $0a, $58 ; 12
+ db $4a, $2f, $0a, $0a, $5f, $60, $0a, $58 ; 13
+ db $4a, $3d, $0a, $61, $62, $0a, $0a, $58 ; 14
+ db $4a, $30, $0a, $63, $0a, $0a, $0a, $58 ; 15
+ db $4a, $2f, $69, $0a, $0a, $0a, $0a, $58 ; 16
+ db $4a, $3d, $81, $0a, $0a, $0a, $0a, $58 ; 17
+ db $4a, $30, $80, $0a, $0a, $0a, $0a, $58 ; 18
+ db $4a, $2f, $7f, $0a, $0a, $0a, $0a, $58 ; 19
+ db $4a, $3d, $0a, $0a, $0a, $0a, $0a, $58 ; 1a
+ db $4a, $30, $0a, $0a, $0a, $0a, $0a, $58 ; 1b
+ db $4a, $2f, $68, $87, $88, $89, $0a, $58 ; 1c
+ db $4a, $3d, $6e, $6f, $70, $75, $76, $58 ; 1d
+ db $4a, $30, $75, $76, $5c, $5d, $5e, $58 ; 1e
+ db $4a, $2f, $71, $72, $73, $74, $6d, $58 ; 1f
+ db $4a, $3d, $75, $76, $77, $8a, $8b, $58 ; 20
+ db $4a, $30, $66, $67, $65, $0a, $6a, $58 ; 21
+ db $4a, $2f, $83, $84, $0a, $83, $84, $58 ; 22
+ db $4a, $3d, $0a, $85, $82, $84, $0a, $58 ; 23
+ db $4a, $30, $41, $80, $40, $0a, $0a, $58 ; 24
+ db $4a, $2f, $83, $0a, $0a, $0a, $0a, $58 ; 25
+ db $4a, $3d, $40, $0a, $0a, $0a, $0a, $58 ; 26
+ db -1
+
+TilemapPack_11bb7d:
+ db $0a, $0a, $0a, $0a, $0a, $0a, $16, $00 ; 00
+ db $78, $0a, $0a, $0a, $0a, $0a, $8c, $00 ; 01
+ db $79, $0a, $0a, $0a, $0a, $0a, $8d, $00 ; 02
+ db $7a, $0a, $0a, $0a, $0a, $0a, $8e, $00 ; 03
+ db $7b, $0a, $0a, $0a, $0a, $0a, $8c, $00 ; 04
+ db $7c, $0a, $0a, $0a, $0a, $0a, $8d, $00 ; 05
+ db $7d, $0a, $0a, $0a, $0a, $0a, $8e, $00 ; 06
+ db $2e, $7e, $0a, $0a, $0a, $0a, $8c, $00 ; 07
+ db $2e, $80, $0a, $0a, $0a, $0a, $8d, $00 ; 08
+ db $2e, $81, $0a, $0a, $0a, $0a, $8e, $00 ; 09
+ db $2e, $82, $0a, $0a, $0a, $0a, $8c, $00 ; 0a
+ db $2e, $69, $0a, $0a, $0a, $0a, $8d, $00 ; 0b
+ db $2e, $6a, $0a, $0a, $0a, $0a, $8e, $00 ; 0c
+ db $2e, $6b, $0a, $0a, $0a, $0a, $8c, $00 ; 0d
+ db $2e, $0a, $68, $0a, $0a, $0a, $8d, $00 ; 0e
+ db $2e, $0a, $69, $0a, $0a, $0a, $8e, $00 ; 0f
+ db $2e, $0a, $0a, $6a, $0a, $0a, $8c, $00 ; 10
+ db $2e, $0a, $0a, $6b, $0a, $0a, $8d, $00 ; 11
+ db $2e, $0a, $0a, $0a, $80, $0a, $8e, $00 ; 12
+ db $2e, $0a, $0a, $0a, $82, $0a, $8c, $00 ; 13
+ db $2e, $0a, $0a, $0a, $6c, $0a, $8d, $00 ; 14
+ db $2e, $0a, $0a, $0a, $0a, $83, $8e, $00 ; 15
+ db $2e, $0a, $6b, $0a, $0a, $0a, $8c, $00 ; 16
+ db $2e, $0a, $0a, $69, $0a, $0a, $8d, $00 ; 17
+ db $2e, $0a, $0a, $6a, $0a, $0a, $8e, $00 ; 18
+ db $2e, $0a, $0a, $0a, $68, $0a, $8c, $00 ; 19
+ db $2e, $0a, $0a, $0a, $63, $0a, $8d, $00 ; 1a
+ db $2e, $0a, $0a, $61, $62, $0a, $8e, $00 ; 1b
+ db $2e, $0a, $0a, $0a, $5f, $60, $8c, $00 ; 1c
+ db $2e, $0a, $0a, $0a, $63, $0a, $8d, $00 ; 1d
+ db $2e, $0a, $0a, $0a, $0a, $69, $8c, $00 ; 1e
+ db $2e, $0a, $0a, $0a, $0a, $6b, $8d, $00 ; 1f
+ db $2e, $0a, $0a, $0a, $0a, $83, $8e, $00 ; 20
+ db $2e, $0a, $0a, $0a, $0a, $86, $8c, $00 ; 21
+ db $2e, $0a, $85, $0a, $0a, $0a, $8d, $00 ; 22
+ db $2e, $0a, $0a, $84, $0a, $0a, $8e, $00 ; 23
+ db -1
+
+
diff --git a/mobile/mobile_5b.asm b/mobile/mobile_5b.asm
new file mode 100755
index 000000000..08cb86426
--- /dev/null
+++ b/mobile/mobile_5b.asm
@@ -0,0 +1,833 @@
+Function16c000: ; 16c000
+; unreferenced
+ ; Only for CGB
+ ld a, [hCGB]
+ and a
+ ret z
+ ; Only do this once per boot cycle
+ ld a, [hFFEA]
+ and a
+ ret z
+ ; Set some flag, preserving the old state
+ ld a, [wcfbe]
+ push af
+ set 7, a
+ ld [wcfbe], a
+ ; Do stuff
+ call MobileSystemSplashScreen_InitGFX ; Load GFX
+ farcall SetRAMStateForMobile
+ farcall EnableMobile
+ call .RunJumptable
+ farcall DisableMobile
+ ; Prevent this routine from running again
+ ; until the next time the syatem is turned on
+ xor a
+ ld [hFFEA], a
+ ; Restore the flag state
+ pop af
+ ld [wcfbe], a
+ ret
+; 16c031
+
+.RunJumptable: ; 16c031
+ xor a
+ ld [wJumptableIndex], a
+ ld [wcf64], a
+ ld [wd002], a
+ ld [wd003], a
+.loop
+ call DelayFrame
+ farcall Function10635c
+ ld a, [wd002]
+ ld hl, .Jumptable
+ rst JumpTable
+ call Function16cb2e
+ call Function16cbae
+ ld a, [wd002]
+ cp $ff
+ jr nz, .loop
+ ret
+; 16c05c
+
+.Jumptable: ; 16c05c
+ dw .init
+ dw Function16c0ba
+ dw Function16c089
+ dw Function16c09e
+ dw Function16c0a8
+ dw Function16c0dc
+ dw Function16c0ec
+ dw Function16c0ba
+ dw Function16c0ca
+ dw Function16c0dc
+ dw Function16c0ec
+ dw .quit
+; 16c074
+
+.init ; 16c074
+ ld a, [wcf64]
+ and a
+ ret z
+ ld [wd002], a
+ xor a
+ ld [wd003], a
+ ret
+; 16c081
+
+.quit ; 16c081
+ push af
+ ld a, $ff
+ ld [wd002], a
+ pop af
+ ret
+; 16c089
+
+Function16c089: ; 16c089
+ ld a, $1
+ ld [Buffer2], a
+ ld [wd1f1], a
+ xor a
+ ld [hWY], a
+ call Function16c0fa
+ ld a, [wd002]
+ ld [wcf64], a
+ ret
+; 16c09e
+
+Function16c09e: ; 16c09e
+ ld a, [wcf64]
+ cp $4
+ ret nz
+ call Function16c0fa
+ ret
+; 16c0a8
+
+Function16c0a8: ; 16c0a8
+ xor a
+ ld [Buffer2], a
+ ld [wd1f1], a
+ call ClearSprites
+ ld a, $90
+ ld [hWY], a
+ call Function16c0fa
+ ret
+; 16c0ba
+
+Function16c0ba: ; 16c0ba
+ call Function16c943
+ push af
+ ld a, [wd003]
+ inc a
+ ld [wd003], a
+ pop af
+ call c, Function16c0fa
+ ret
+; 16c0ca
+
+Function16c0ca: ; 16c0ca
+ ld a, [wd003]
+ cp $28
+ push af
+ ld a, [wd003]
+ inc a
+ ld [wd003], a
+ pop af
+ call z, Function16c0fa
+ ret
+; 16c0dc
+
+Function16c0dc: ; 16c0dc
+ call Function16ca11
+ push af
+ ld a, [wd003]
+ inc a
+ ld [wd003], a
+ pop af
+ call c, Function16c0fa
+ ret
+; 16c0ec
+
+Function16c0ec: ; 16c0ec
+ call ClearBGPalettes
+ call ClearScreen
+ push af
+ ld a, $ff
+ ld [wd002], a
+ pop af
+ ret
+; 16c0fa
+
+Function16c0fa: ; 16c0fa
+ push af
+ ld a, [wd002]
+ inc a
+ ld [wd002], a
+ xor a
+ ld [wd003], a
+ pop af
+ ret
+; 16c108
+
+MobileSystemSplashScreen_InitGFX: ; 16c108
+ call DisableLCD
+ ld hl, VTiles2
+ ld de, .Tiles
+ lb bc, BANK(.Tiles), $68
+ call Get2bpp
+ call .LoadPals
+ call .LoadTileMap
+ call .LoadAttrMap
+ hlbgcoord 0, 0
+ call Function16cc73
+ call Function16cc02
+ xor a
+ ld [hBGMapMode], a
+ call EnableLCD
+ ret
+; 16c130
+
+.LoadPals: ; 16c130
+ ld de, UnknBGPals
+ ld hl, UnknownMobilePalettes_16c903
+ ld bc, 8
+ ld a, $5
+ call FarCopyWRAM
+ farcall ApplyPals
+ ret
+; 16c145
+
+.LoadTileMap: ; 16c145
+ hlcoord 0, 0
+ ld bc, 20
+ xor a
+ call ByteFill
+ ld hl, .TileMap
+ decoord 0, 1
+ ld bc, $0154
+ call CopyBytes
+ ret
+; 16c15c
+
+.LoadAttrMap: ; 16c15c
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_WIDTH
+ xor a
+ call ByteFill
+ ld hl, .AttrMap
+ decoord 0, 1, AttrMap
+ ld bc, 17 * SCREEN_WIDTH
+ call CopyBytes
+ ret
+; 16c173
+
+.Tiles:
+INCBIN "gfx/mobile/mobile_splash.2bpp"
+
+.TileMap:
+INCBIN "gfx/mobile/mobile_splash.tilemap"
+
+.AttrMap:
+INCBIN "gfx/mobile/mobile_splash.attrmap"
+
+UnknownMobilePalettes_16c903: ; 16c903
+INCLUDE "gfx/unknown/16c903.pal"
+
+; 16c943
+
+Function16c943: ; 16c943
+ ld a, [wd003]
+ and a
+ jr nz, .asm_16c95e
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld a, $ff
+ ld bc, $0008
+ ld hl, UnknBGPals
+ call ByteFill
+ pop af
+ ld [rSVBK], a
+
+.asm_16c95e
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld e, $0
+ ld a, $0
+.asm_16c969
+ ld hl, UnknownMobilePalettes_16c903
+ call Function16cab6
+ call Function16cabb
+ ld d, a
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cabb
+ cp d
+ jr z, .asm_16c991
+ ld b, $1
+.asm_16c981
+ dec a
+ cp d
+ jr z, .asm_16c988
+ dec b
+ jr nz, .asm_16c981
+
+.asm_16c988
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cadc
+
+.asm_16c991
+ ld hl, UnknownMobilePalettes_16c903
+ call Function16cab6
+ call Function16cad8
+ ld d, a
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cad8
+ cp d
+ jr z, .asm_16c9b9
+ ld b, $1
+.asm_16c9a9
+ dec a
+ cp d
+ jr z, .asm_16c9b0
+ dec b
+ jr nz, .asm_16c9a9
+
+.asm_16c9b0
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cb08
+
+.asm_16c9b9
+ ld hl, UnknownMobilePalettes_16c903
+ call Function16cab6
+ call Function16cac4
+ ld d, a
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cac4
+ cp d
+ jr z, .asm_16c9e1
+ ld b, $1
+.asm_16c9d1
+ dec a
+ cp d
+ jr z, .asm_16c9d8
+ dec b
+ jr nz, .asm_16c9d1
+
+.asm_16c9d8
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cae8
+
+.asm_16c9e1
+ inc e
+ inc e
+ ld a, e
+ cp $8
+ jr nz, .asm_16c969
+ farcall ApplyPals
+ call SetPalettes
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, [wd003]
+ cp $1f
+ jr z, .asm_16ca09
+ pop af
+ ld [rSVBK], a
+ ld e, $0
+ pop af
+ ld [rSVBK], a
+ and a
+ ret
+
+.asm_16ca09
+ pop af
+ ld [rSVBK], a
+ pop af
+ ld [rSVBK], a
+ scf
+ ret
+; 16ca11
+
+Function16ca11: ; 16ca11
+ ld a, [wd003]
+ and a
+ jr nz, .asm_16ca1d
+ farcall ApplyPals
+
+.asm_16ca1d
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld e, $0
+ ld a, $0
+.asm_16ca28
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cabb
+ cp $1f
+ jr z, .asm_16ca48
+ ld b, $1
+.asm_16ca37
+ inc a
+ cp $1f
+ jr z, .asm_16ca3f
+ dec b
+ jr nz, .asm_16ca37
+
+.asm_16ca3f
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cadc
+
+.asm_16ca48
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cad8
+ cp $1f
+ jr z, .asm_16ca68
+ ld b, $1
+.asm_16ca57
+ inc a
+ cp $1f
+ jr z, .asm_16ca5f
+ dec b
+ jr nz, .asm_16ca57
+
+.asm_16ca5f
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cb08
+
+.asm_16ca68
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cac4
+ cp $1f
+ jr z, .asm_16ca88
+ ld b, $1
+.asm_16ca77
+ inc a
+ cp $1f
+ jr z, .asm_16ca7f
+ dec b
+ jr nz, .asm_16ca77
+
+.asm_16ca7f
+ ld hl, UnknBGPals
+ call Function16cab6
+ call Function16cae8
+
+.asm_16ca88
+ inc e
+ inc e
+ ld a, e
+ cp $8
+ jr nz, .asm_16ca28
+ farcall ApplyPals
+ call SetPalettes
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, [wd003]
+ cp $1f
+ jr z, .asm_16caae
+ pop af
+ ld [rSVBK], a
+ pop af
+ ld [rSVBK], a
+ and a
+ ret
+
+.asm_16caae
+ pop af
+ ld [rSVBK], a
+ pop af
+ ld [rSVBK], a
+ scf
+ ret
+; 16cab6
+
+Function16cab6: ; 16cab6
+ ld b, $0
+ ld c, e
+ add hl, bc
+ ret
+; 16cabb
+
+Function16cabb: ; 16cabb
+ inc hl
+ ld a, [hl]
+ srl a
+ srl a
+ and $1f
+ ret
+; 16cac4
+
+Function16cac4: ; 16cac4
+ inc hl
+ ld a, [hld]
+ and $3
+ ld b, a
+ ld a, [hl]
+ sla a
+ rl b
+ sla a
+ rl b
+ sla a
+ rl b
+ ld a, b
+ ret
+; 16cad8
+
+Function16cad8: ; 16cad8
+ ld a, [hl]
+ and $1f
+ ret
+; 16cadc
+
+Function16cadc: ; 16cadc
+ sla a
+ sla a
+ ld b, a
+ inc hl
+ ld a, [hl]
+ and $83
+ or b
+ ld [hl], a
+ ret
+; 16cae8
+
+Function16cae8: ; 16cae8
+ ld c, a
+ srl a
+ srl a
+ srl a
+ ld b, a
+ inc hl
+ ld a, [hl]
+ and $fc
+ or b
+ ld [hld], a
+ ld a, c
+ sla a
+ sla a
+ sla a
+ sla a
+ sla a
+ ld b, a
+ ld a, [hl]
+ and $1f
+ or b
+ ld [hl], a
+ ret
+; 16cb08
+
+Function16cb08: ; 16cb08
+ ld b, a
+ ld a, [hl]
+ and $e0
+ or b
+ ld [hl], a
+ ret
+; 16cb0f
+
+Function16cb0f: ; 16cb0f
+ xor a
+ ld [Buffer1], a
+ ld [Buffer2], a
+ xor a
+ ld [wd1ec], a
+ ld a, $70
+ ld [wd1ee], a
+ ld a, $4
+ ld [wd1ed], a
+ ld a, $a0
+ ld [wd1ef], a
+ xor a
+ ld [wd1f0], a
+ ret
+; 16cb2e
+
+Function16cb2e: ; 16cb2e
+ ld a, [Buffer2]
+ and a
+ ret z
+ call Function16cb40
+ ld hl, Unknown_16cb86
+ ld de, Sprites
+ call Function16cb5d
+ ret
+; 16cb40
+
+Function16cb40: ; 16cb40
+ ld hl, wd1ec
+ inc [hl]
+ ld a, [hl]
+ cp $18
+ ret c
+ xor a
+ ld [hl], a
+ ld a, [wd1ef]
+ cp $a0
+ jr nz, .asm_16cb57
+ ld a, $a7
+ ld [wd1ef], a
+ ret
+
+.asm_16cb57
+ ld a, $a0
+ ld [wd1ef], a
+ ret
+; 16cb5d
+
+Function16cb5d: ; 16cb5d
+ ld a, [hli]
+ and a
+ ret z
+.asm_16cb60
+ push af
+ ld a, [wd1ee]
+ add [hl]
+ add $10
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [wd1ed]
+ add [hl]
+ add $8
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [wd1ef]
+ add [hl]
+ ld [de], a
+ inc hl
+ inc de
+ ld a, [wd1f0]
+ or [hl]
+ ld [de], a
+ inc hl
+ inc de
+ pop af
+ dec a
+ jr nz, .asm_16cb60
+ ret
+; 16cb86
+
+Unknown_16cb86:
+ db 7
+ db 0, 0, 0, 1
+ db 8, 0, 1, 1
+ db 8, 8, 2, 0
+ db 8, 16, 3, 0
+ db 16, 0, 4, 1
+ db 16, 8, 5, 0
+ db 16, 16, 6, 0
+; 16cba3
+
+Function16cba3: ; 16cba3
+ xor a
+ ld [wd1f1], a
+ ld [wd1f2], a
+ ld [wd1f3], a
+ ret
+; 16cbae
+
+Function16cbae: ; 16cbae
+ ld a, [wd1f1]
+ and a
+ ret z
+ call Function16cbba
+ call Function16cbd1
+ ret
+; 16cbba
+
+Function16cbba: ; 16cbba
+ ld hl, wd1f2
+ inc [hl]
+ ld a, [hl]
+ cp $c
+ ret c
+ xor a
+ ld [hl], a
+ ld a, [wd1f3]
+ inc a
+ cp $4
+ jr c, .asm_16cbcd
+ xor a
+
+.asm_16cbcd
+ ld [wd1f3], a
+ ret
+; 16cbd1
+
+Function16cbd1: ; 16cbd1
+ ld a, [wd1f3]
+ ld c, a
+ ld b, 0
+ ld hl, Unknown_16cbfb
+ add hl, bc
+ ld a, [hl]
+ ld bc, 2
+ ld hl, Unknown_16cfa3
+ call AddNTimes
+ ld de, UnknBGPals + 1 palettes + 4
+ ld bc, 2
+ ld a, $5
+ call FarCopyWRAM
+ farcall ApplyPals
+ ld a, $1
+ ld [hCGBPalUpdate], a
+ ret
+; 16cbfb
+
+Unknown_16cbfb:
+ db 0, 1, 2, 1, 0, 1, 2
+; 16cc02
+
+Function16cc02: ; 16cc02
+ call Function16cc18
+ call Function16cc49
+ call Function16cc62
+ call Function16cc25
+ call Function16cc6e
+ call Function16cb0f
+ call Function16cba3
+ ret
+; 16cc18
+
+Function16cc18: ; 16cc18
+ ld hl, VTiles1
+ ld de, GFX_16cca3
+ lb bc, BANK(GFX_16cca3), $2e
+ call Get2bpp
+ ret
+; 16cc25
+
+Function16cc25: ; 16cc25
+ ld hl, Unknown_16cfa9
+ ld de, UnknBGPals + 1 palettes
+ call .CopyPal
+ ld hl, Unknown_16cfb1
+ ld de, UnknOBPals
+ call .CopyPal
+ ld hl, Unknown_16cfb9
+ ld de, UnknOBPals + 1 palettes
+ call .CopyPal
+ ret
+; 16cc41
+
+.CopyPal: ; 16cc41
+ ld bc, 1 palettes
+ ld a, $5
+ jp FarCopyWRAM
+; 16cc49
+
+Function16cc49: ; 16cc49
+ hlcoord 4, 15
+ ld a, $80
+ call Function16cc5a
+ hlcoord 4, 16
+ ld a, $90
+ call Function16cc5a
+ ret
+; 16cc5a
+
+Function16cc5a: ; 16cc5a
+ ld c, $10
+.asm_16cc5c
+ ld [hli], a
+ inc a
+ dec c
+ jr nz, .asm_16cc5c
+ ret
+; 16cc62
+
+Function16cc62: ; 16cc62
+ hlcoord 0, 15, AttrMap
+ ld bc, $0028
+ ld a, $1
+ call ByteFill
+ ret
+; 16cc6e
+
+Function16cc6e: ; 16cc6e
+ hlbgcoord 0, 0, VBGMap1
+ jr Function16cc73
+
+Function16cc73:
+ ld a, [rVBK]
+ push af
+ ld a, $0
+ ld [rVBK], a
+ push hl
+ decoord 0, 0
+ call Function16cc90
+ pop hl
+ ld a, $1
+ ld [rVBK], a
+ decoord 0, 0, AttrMap
+ call Function16cc90
+ pop af
+ ld [rVBK], a
+ ret
+; 16cc90
+
+Function16cc90: ; 16cc90
+ ld bc, $1214
+.asm_16cc93
+ push bc
+.asm_16cc94
+ ld a, [de]
+ inc de
+ ld [hli], a
+ dec c
+ jr nz, .asm_16cc94
+ ld bc, $000c
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_16cc93
+ ret
+; 16cca3
+
+GFX_16cca3:
+INCBIN "gfx/unknown/16cca3.2bpp"
+
+Unknown_16cfa3:
+ RGB 31, 31, 31
+ RGB 25, 27, 29
+ RGB 16, 19, 25
+
+Unknown_16cfa9:
+ RGB 31, 31, 31
+ RGB 25, 27, 29
+ RGB 31, 31, 31
+ RGB 07, 07, 07
+
+
+Unknown_16cfb1:
+ RGB 31, 31, 31
+ RGB 13, 09, 18
+ RGB 26, 21, 16
+ RGB 07, 07, 07
+
+
+Unknown_16cfb9:
+ RGB 31, 31, 31
+ RGB 18, 05, 02
+ RGB 27, 11, 12
+ RGB 07, 07, 07
+
+; 16cfc1
diff --git a/mobile/mobile_5c.asm b/mobile/mobile_5c.asm
new file mode 100755
index 000000000..005bb1a1b
--- /dev/null
+++ b/mobile/mobile_5c.asm
@@ -0,0 +1,946 @@
+Function170000: ; 170000
+ ld a, [$c62b]
+ ld [wPlayerTrademonSpecies], a
+ ld hl, $c62e
+ ld de, wPlayerTrademonSenderName
+ ld bc, $0005
+ call CopyBytes
+ ld a, $50
+ ld [de], a
+ ld hl, $c663
+ ld de, wPlayerTrademonOTName
+ ld bc, $0005
+ call CopyBytes
+ ld a, $50
+ ld [de], a
+ ld hl, $c648
+ ld a, [hli]
+ ld [wPlayerTrademonDVs], a
+ ld a, [hl]
+ ld [wPlayerTrademonDVs + 1], a
+ ld hl, $c639
+ ld a, [hli]
+ ld [wPlayerTrademonID], a
+ ld a, [hl]
+ ld [wPlayerTrademonID + 1], a
+ ld bc, $c633
+ farcall GetCaughtGender
+ ld a, c
+ ld [wPlayerTrademonCaughtData], a
+ ld a, [wcd81]
+ ld [wc74e], a
+ ld hl, $c608
+ ld de, $d800
+ ld bc, $008f
+ call CopyBytes
+ ret
+
+; 17005a
+
+Function17005a: ; 17005a
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$a824]
+ ld [wOTTrademonSpecies], a
+ ld hl, $a827
+ ld de, wOTTrademonSenderName
+ ld bc, NAME_LENGTH_JAPANESE - 1
+ call CopyBytes
+ ld a, "@"
+ ld [de], a
+ ld hl, $a85c
+ ld de, wOTTrademonOTName
+ ld bc, NAME_LENGTH_JAPANESE - 1
+ call CopyBytes
+ ld a, "@"
+ ld [de], a
+ ld hl, $a841
+ ld a, [hli]
+ ld [wOTTrademonDVs], a
+ ld a, [hl]
+ ld [wOTTrademonDVs + 1], a
+ ld hl, $a832
+ ld a, [hli]
+ ld [wOTTrademonID], a
+ ld a, [hl]
+ ld [wOTTrademonID + 1], a
+ ld bc, $a82c
+ farcall GetCaughtGender
+ ld a, c
+ ld [wOTTrademonCaughtData], a
+ ld a, [wcd81]
+ ld [wc74e], a
+ call CloseSRAM
+ ret
+
+; 1700b0
+
+INCLUDE "mobile/battle_tower_5c.asm"
+
+Function170be4: ; 170be4
+ ld a, $5
+ call GetSRAMBank
+ xor a
+ ld hl, $a894
+ ld bc, $0008
+ call ByteFill
+ call CloseSRAM
+ ret
+
+; 170bf7
+
+Clears5_a89a: ; 170bf7
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $a89a
+ xor a
+ ld [hli], a
+ ld [hl], a
+ call CloseSRAM
+ ret
+
+; 170c06
+
+Function170c06: ; 170c06
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $a894
+ ld a, [wBattleResult]
+ and a
+ jr nz, .asm_170c15
+ inc [hl]
+
+.asm_170c15
+ inc hl
+ inc hl
+ ld a, [$a89b]
+ add [hl]
+ ld [hld], a
+ ld a, [$a89a]
+ adc [hl]
+ ld [hli], a
+ jr nc, .asm_170c27
+ ld a, $ff
+ ld [hld], a
+ ld [hli], a
+
+.asm_170c27
+ inc hl
+ push hl
+ ld de, 0
+ xor a
+ ld [wd265], a
+.asm_170c30
+ ld hl, PartyMon1HP
+ ld a, [wd265]
+ call GetPartyLocation
+ ld a, [hli]
+ ld b, a
+ ld c, [hl]
+ inc hl
+ inc hl
+ ld a, [hld]
+ sub c
+ ld c, a
+ ld a, [hl]
+ sbc b
+ ld b, a
+ push de
+ pop hl
+ add hl, bc
+ push hl
+ pop de
+ jr c, .asm_170c58
+ ld a, [wd265]
+ inc a
+ ld [wd265], a
+ cp $3
+ jr c, .asm_170c30
+ jr .asm_170c5b
+
+.asm_170c58
+ ld de, -1
+
+.asm_170c5b
+ pop hl
+ inc hl
+ ld a, e
+ add [hl]
+ ld [hld], a
+ ld a, d
+ adc [hl]
+ ld [hli], a
+ jr nc, .asm_170c69
+ ld a, $ff
+ ld [hld], a
+ ld [hli], a
+
+.asm_170c69
+ inc hl
+ push hl
+ ld b, $0
+ ld c, $0
+.asm_170c6f
+ ld hl, PartyMon1HP
+ ld a, b
+ push bc
+ call GetPartyLocation
+ pop bc
+ ld a, [hli]
+ or [hl]
+ jr nz, .asm_170c7d
+ inc c
+
+.asm_170c7d
+ inc b
+ ld a, b
+ cp $3
+ jr c, .asm_170c6f
+ pop hl
+ ld a, [hl]
+ add c
+ ld [hl], a
+ call CloseSRAM
+ ret
+
+; 170c8b
+
+Function170c8b: ; 170c8b
+ ld hl, LastEnemyCounterMove
+ ld b, $5
+.asm_170c90
+ ld a, [hl]
+ xor $ff
+ ld [hli], a
+ dec b
+ jr nz, .asm_170c90
+ ret
+
+; 170c98
+
+CheckBTMonMovesForErrors: ; 170c98
+ ld c, BATTLETOWER_NROFPKMNS
+ ld hl, wBT_OTTempPkmn1Moves
+.loop
+ push hl
+ ld a, [hl]
+ cp NUM_ATTACKS + 1
+ jr c, .okay
+ ld a, POUND
+ ld [hl], a
+
+.okay
+ inc hl
+ ld b, NUM_MOVES - 1
+.loop2
+ ld a, [hl]
+ and a
+ jr z, .loop3
+ cp NUM_ATTACKS + 1
+ jr c, .next
+
+.loop3
+ xor a
+ ld [hl], a
+ inc hl
+ dec b
+ jr nz, .loop3
+ jr .done
+
+.next
+ inc hl
+ dec b
+ jr nz, .loop2
+
+.done
+ pop hl
+ ld de, PARTYMON_STRUCT_LENGTH + PKMN_NAME_LENGTH
+ add hl, de
+ dec c
+ jr nz, .loop
+ ret
+
+; 170cc6
+
+Function170cc6: ; 170cc6
+ ld a, [rSVBK]
+ push af
+ ld a, $6
+ ld [rSVBK], a
+ ld hl, LZ_170d16
+ ld de, wDecompressScratch
+ call Decompress
+ ld a, $1
+ ld [rVBK], a
+ ld de, wd000
+ ld hl, VTiles0
+ lb bc, $6, $c1
+ call Get2bpp
+ xor a
+ ld [rVBK], a
+ ld hl, LZ_1715a4
+ ld de, wd000
+ call Decompress
+ ld de, UnknBGPals
+ ld hl, VTiles0
+ lb bc, $6, $53
+ call Get2bpp
+ pop af
+ ld [rSVBK], a
+ ret
+
+; 170d02
+
+Function170d02: ; 170d02
+ ld a, $1
+ ld [rVBK], a
+ ld de, GFX_171848
+ ld hl, VTiles1 tile $41
+ lb bc, BANK(GFX_171848), $18
+ call Get2bpp
+ xor a
+ ld [rVBK], a
+ ret
+
+; 170d16
+
+LZ_170d16:
+INCBIN "gfx/mobile/pichu_animated.2bpp.lz"
+
+LZ_1715a4:
+INCBIN "gfx/mobile/electro_ball.2bpp.lz"
+
+GFX_171848:
+INCBIN "gfx/unknown/171848.2bpp"
+
+Function1719c8: ; 1719c8 (5c:59c8)
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ call Function1719d6
+ pop af
+ ld [hInMenu], a
+ ret
+
+Function1719d6: ; 1719d6 (5c:59d6)
+ farcall BattleTowerRoomMenu_InitRAM
+ call Function1719ed
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ call Function171a11
+ pop af
+ ld [rSVBK], a
+ ret
+
+Function1719ed: ; 1719ed (5c:59ed)
+ xor a
+ ld [wcd49], a
+ ld [wcd4a], a
+ dec a
+ ld [wcd4b], a
+ call ClearBGPalettes
+ call ClearSprites
+ farcall Function171d2b
+ farcall ReloadMapPart
+ farcall ClearSpriteAnims
+ ret
+
+Function171a11: ; 171a11 (5c:5a11)
+.loop
+ call JoyTextDelay
+ ld a, [wcd49]
+ bit 7, a
+ jr nz, .done
+ call Function171a36
+ farcall PlaySpriteAnimations
+ farcall ReloadMapPart
+ jr .loop
+.done
+ farcall ClearSpriteAnims
+ call ClearSprites
+ ret
+
+Function171a36: ; 171a36 (5c:5a36)
+ ld a, [wcd49]
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable_171a45
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+Jumptable_171a45: ; 171a45 (5c:5a45)
+ dw Function171a95
+ dw Function171ac9
+ dw Function171a5d
+ dw Function171ad7
+ dw Function171a5d
+ dw Function171aec
+ dw Function171b4b
+ dw Function171b85
+ dw Function171bcc
+ dw Function171c2c
+ dw Function171c39
+ dw Function171c41
+
+
+Function171a5d: ; 171a5d (5c:5a5d)
+ ld a, [wc821]
+ bit 1, a
+ jr nz, .asm_171a6a
+ bit 0, a
+ ret nz
+ jp Function171c66
+
+.asm_171a6a
+ ld a, $0
+ call Function3e32
+ ld [wc300], a
+ ld a, l
+ ld [wc301], a
+ ld a, h
+ ld [wc302], a
+ ld a, $a
+ call Function3e32
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ farcall BattleTowerRoomMenu_Cleanup
+ pop af
+ ld [rSVBK], a
+ ld a, $a
+ ld [wcd49], a
+ ret
+
+Function171a95: ; 171a95 (5c:5a95)
+ farcall Function171ccd
+ hlcoord 2, 8
+ ld de, String_171aa7
+ call PlaceString
+ jp Function171c66
+
+; 171aa7 (5c:5aa7)
+
+String_171aa7: ; 171aa7
+ db "モバイルアダプタに"
+ next "せつぞく しています"
+ next "しばらく おまちください"
+ db "@"
+; 171ac9
+
+Function171ac9: ; 171ac9 (5c:5ac9)
+ ld de, wcd81
+ ld hl, $5c
+ ld a, $2
+ call Function3e32
+ jp Function171c66
+
+Function171ad7: ; 171ad7 (5c:5ad7)
+ xor a
+ ld hl, $c608
+ ld bc, $66
+ call ByteFill
+ ld de, $c608
+ ld a, $c
+ call Function3e32
+ jp Function171c66
+
+Function171aec: ; 171aec (5c:5aec)
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ farcall BattleTowerRoomMenu_Cleanup
+ pop af
+ ld [rSVBK], a
+ hlcoord 2, 6
+ ld a, $8
+.asm_171b01
+ push af
+ push hl
+ xor a
+ ld bc, $10
+ call ByteFill
+ pop hl
+ ld de, $14
+ add hl, de
+ pop af
+ dec a
+ jr nz, .asm_171b01
+ hlcoord 2, 7
+ ld a, $3
+ ld de, $c608
+.asm_171b1b
+ push af
+ push hl
+ ld a, [de]
+ and a
+ jr z, .asm_171b34
+ ld a, [wcd4b]
+ inc a
+ ld [wcd4b], a
+ push hl
+ call Function171b42
+ pop hl
+ ld bc, $ffec
+ add hl, bc
+ call Function171b42
+.asm_171b34
+ pop hl
+ ld bc, $14
+ add hl, bc
+ add hl, bc
+ add hl, bc
+ pop af
+ dec a
+ jr nz, .asm_171b1b
+ jp Function171c66
+
+Function171b42: ; 171b42 (5c:5b42)
+ ld a, [de]
+ inc de
+ and a
+ ret z
+ sub $20
+ ld [hli], a
+ jr Function171b42
+
+Function171b4b: ; 171b4b (5c:5b4b)
+ depixel 8, 2
+ ld a, SPRITE_ANIM_INDEX_1D
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, $8
+ ld [hl], a
+
+ depixel 8, 19
+ ld a, SPRITE_ANIM_INDEX_1D
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, $9
+ ld [hl], a
+
+ depixel 17, 14, 2, 0
+ ld a, SPRITE_ANIM_INDEX_1D
+ call _InitSpriteAnimStruct
+ ld hl, SPRITEANIMSTRUCT_0C
+ add hl, bc
+ ld a, $a
+ ld [hl], a
+
+ ld a, $4
+ ld [wcd23], a
+ ld a, $8
+ ld [wcd24], a
+ jp Function171c66
+
+Function171b85: ; 171b85 (5c:5b85)
+ ld hl, hJoyPressed ; $ffa7
+ ld a, [hl]
+ and $2
+ jp nz, Function171b9f
+ ld a, [hl]
+ and $1
+ jp nz, Function171bbd
+ ld a, [hl]
+ and $40
+ jr nz, asm_171ba5
+ ld a, [hl]
+ and $80
+ jr nz, asm_171baf
+ ret
+
+Function171b9f: ; 171b9f (5c:5b9f)
+ ld a, $80
+ ld [wcd49], a
+ ret
+
+asm_171ba5: ; 171ba5 (5c:5ba5)
+ ld a, [wcd4a]
+ and a
+ ret z
+ dec a
+ ld [wcd4a], a
+ ret
+
+asm_171baf: ; 171baf (5c:5baf)
+ ld a, [wcd4b]
+ ld c, a
+ ld a, [wcd4a]
+ cp c
+ ret z
+ inc a
+ ld [wcd4a], a
+ ret
+
+Function171bbd: ; 171bbd (5c:5bbd)
+ call PlayClickSFX
+ ld a, $8
+ ld [wcd23], a
+ xor a
+ ld [wcd24], a
+ jp Function171c66
+
+Function171bcc: ; 171bcc (5c:5bcc)
+ ld hl, hJoyPressed ; $ffa7
+ ld a, [hl]
+ and $2
+ jp nz, Function171bdc
+ ld a, [hl]
+ and $1
+ jp nz, Function171beb
+ ret
+
+Function171bdc: ; 171bdc (5c:5bdc)
+ ld a, $4
+ ld [wcd23], a
+ ld a, $8
+ ld [wcd24], a
+ ld hl, wcd49
+ dec [hl]
+ ret
+
+Function171beb: ; 171beb (5c:5beb)
+ ld a, $5
+ call GetSRAMBank
+ ld a, [wcd4a]
+ ld [$aa4a], a
+ call CloseSRAM
+ ld hl, MenuDataHeader_171c6b
+ call LoadMenuDataHeader
+ call MenuBox
+ call MenuBoxCoord2Tile
+ farcall ReloadMapPart
+ hlcoord 1, 14
+ ld de, String_171c73
+ call PlaceString
+ ld a, [wcd4a]
+ cp $2
+ jr z, .asm_171c1f
+ ld a, $8
+ jr .asm_171c21
+.asm_171c1f
+ ld a, $c
+.asm_171c21
+ ld [wcd24], a
+ ld a, $1e
+ ld [wcd4c], a
+ call Function171c66
+
+Function171c2c: ; 171c2c (5c:5c2c)
+ ld hl, wcd4c
+ dec [hl]
+ ret nz
+ call ExitMenu
+ call ClearBGPalettes
+ jr asm_171c60
+
+Function171c39: ; 171c39 (5c:5c39)
+ ld a, $28
+ ld [wcd4c], a
+ call Function171c66
+
+Function171c41: ; 171c41 (5c:5c41)
+ ld hl, wcd4c
+ dec [hl]
+ ret nz
+ call ClearBGPalettes
+ farcall MobileFunc_106462
+ farcall Function106464
+ ld a, $2
+ ld [wc303], a
+ farcall DisplayMobileError
+asm_171c60: ; 171c60 (5c:5c60)
+ ld a, $80
+ ld [wcd49], a
+ ret
+
+Function171c66: ; 171c66 (5c:5c66)
+ ld hl, wcd49
+ inc [hl]
+ ret
+
+; 171c6b (5c:5c6b)
+
+MenuDataHeader_171c6b: ; 171c6b
+ db $40 ; flags
+ db 12, 0 ; start coords
+ db 17, 19 ; end coords
+ dw NULL
+ db 0 ; default option
+; 171c73
+
+String_171c73: ; 171c73
+ db "モバイルセンターを けってい"
+ next "しました@"
+; 171c87
+
+Function171c87: ; 171c87 (5c:5c87)
+ call DisableLCD
+ ld hl, GFX_171db1
+ ld de, VTiles2 tile $00
+ ld bc, $6e0
+ call CopyBytes
+ ld hl, LZ_172abd
+ ld de, VTiles0 tile $00
+ call Decompress
+ call EnableLCD
+ ld hl, Tilemap_172491
+ decoord 0, 0
+ ld bc, $168
+ call CopyBytes
+ ld hl, Attrmap_1727ed
+ decoord 0, 0, AttrMap
+ ld bc, $168
+ call CopyBytes
+ hlcoord 3, 2
+ ld de, String_172e31
+ call PlaceString
+ hlcoord 3, 16
+ ld de, String_172e3f
+ call PlaceString
+ ret
+
+Function171ccd: ; 171ccd (5c:5ccd)
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_171d71
+ ld de, UnknBGPals
+ ld bc, $40
+ call CopyBytes
+ ld hl, EngineBuffer5
+ ld a, $ff
+ ld [hli], a
+ ld a, $7f
+ ld [hl], a
+ call SetPalettes
+ pop af
+ ld [rSVBK], a
+ ret
+
+Function171cf0: ; 171cf0 (5c:5cf0)
+ xor a
+ hlcoord 4, 15
+ ld [hli], a
+ ld [hli], a
+ ld a, [wcd4b]
+ xor $1
+ ld [wcd4b], a
+ and a
+ jr nz, .asm_171d16
+ ld hl, Tilemap_17251d
+ decoord 0, 7
+ ld bc, $8c
+ call CopyBytes
+ hlcoord 3, 16
+ ld de, String_172e3f
+ jp PlaceString
+
+.asm_171d16
+ ld hl, Tilemap_1725f9
+ decoord 0, 7
+ ld bc, $8c
+ call CopyBytes
+ hlcoord 3, 16
+ ld de, String_172e4e
+ jp PlaceString
+
+Function171d2b: ; 171d2b (5c:5d2b)
+ call DisableLCD
+ ld hl, GFX_171db1
+ ld de, VTiles2 tile $00
+ ld bc, $6e0
+ call CopyBytes
+ ld hl, LZ_172abd
+ ld de, VTiles0 tile $00
+ call Decompress
+ call EnableLCD
+ ld hl, Tilemap_172685
+ decoord 0, 0
+ ld bc, $168
+ call CopyBytes
+ ld hl, Attrmap_172955
+ decoord 0, 0, AttrMap
+ ld bc, $168
+ call CopyBytes
+ hlcoord 2, 2
+ ld de, String_172e5d
+ call PlaceString
+ hlcoord 14, 16
+ ld de, String_172e58
+ call PlaceString
+ ret
+
+; 171d71 (5c:5d71)
+
+Palette_171d71:
+ RGB 0, 0, 0
+ RGB 3, 0, 0
+ RGB 5, 0, 0
+ RGB 31, 31, 29
+ RGB 0, 2, 10
+ RGB 2, 10, 21
+ RGB 0, 0, 0
+ RGB 10, 26, 31
+ RGB 0, 0, 0
+ RGB 0, 7, 8
+ RGB 31, 8, 0
+ RGB 1, 17, 15
+ RGB 31, 16, 0
+ RGB 31, 22, 0
+ RGB 31, 27, 0
+ RGB 31, 31, 0
+ RGB 31, 18, 6
+ RGB 0, 3, 0
+ RGB 0, 9, 0
+ RGB 0, 12, 0
+ RGB 0, 16, 0
+ RGB 0, 22, 0
+ RGB 0, 25, 0
+ RGB 0, 27, 0
+ RGB 5, 5, 16
+ RGB 8, 19, 28
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 31, 31, 29
+ RGB 21, 21, 20
+ RGB 11, 11, 10
+ RGB 0, 0, 0
+
+GFX_171db1:
+INCBIN "gfx/mobile/ascii_font.2bpp"
+
+Tilemap_172491:
+INCBIN "gfx/unknown/172491.tilemap"
+Tilemap_17251d:
+INCBIN "gfx/unknown/17251d.tilemap"
+Tilemap_1725f9:
+INCBIN "gfx/unknown/1725f9.tilemap"
+Tilemap_172685:
+INCBIN "gfx/unknown/172685.tilemap"
+Attrmap_1727ed:
+INCBIN "gfx/unknown/1727ed.attrmap"
+Attrmap_172955:
+INCBIN "gfx/unknown/172955.attrmap"
+
+LZ_172abd:
+INCBIN "gfx/pokedex/slowpoke.2bpp.lz"
+
+String_172e31: ; 172e31
+ db "パスワード", $1f, "いれてください@"
+String_172e3f: ; 172e3f
+ db "きりかえ やめる けってい@"
+String_172e4e: ; 172e4e
+ db "きりかえ やめる "
+String_172e58:
+ db "けってい@"
+String_172e5d: ; 172e5d
+ db "せつぞくする モバイルセンターを"
+ next "えらんで ください@"
+; 172e78
+
+
+Function172e78: ; 172e78 (5c:6e78)
+ ld a, $7f
+ hlcoord 0, 0
+ ld bc, $168
+ call ByteFill
+ ld a, $7
+ hlcoord 0, 0, AttrMap
+ ld bc, $168
+ call ByteFill
+ call DisableLCD
+ ld hl, GameBoyN64GFX
+ ld de, VTiles2 tile $00
+ ld bc, $610
+ call CopyBytes
+ call EnableLCD
+ ld hl, Tilemap_1733af
+ decoord 0, 0
+ ld bc, $168
+ call CopyBytes
+ ld hl, Attrmap_173517
+ decoord 0, 0, AttrMap
+ ld bc, $168
+ call CopyBytes
+ ret
+
+; 172eb9 (5c:6eb9)
+
+Function172eb9:
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_172edf
+ ld de, UnknBGPals
+ ld bc, $40
+ call CopyBytes
+ ld hl, Palette_172edf
+ ld de, BGPals
+ ld bc, $40
+ call CopyBytes
+ call SetPalettes
+ pop af
+ ld [rSVBK], a
+ ret
+
+; 172edf (5c:6edf)
+
+Palette_172edf:
+ RGB 5, 12, 17
+ RGB 31, 31, 31
+ RGB 18, 25, 28
+ RGB 10, 17, 21
+ RGB 6, 13, 18
+ RGB 31, 31, 31
+ RGB 20, 26, 28
+ RGB 12, 19, 23
+ RGB 3, 10, 16
+ RGB 31, 31, 31
+ RGB 6, 13, 18
+ RGB 20, 26, 28
+ 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 5, 5, 16
+ RGB 8, 19, 28
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 31, 31, 31
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+GameBoyN64GFX:
+INCBIN "gfx/trade/game_boy_n64.2bpp"
+
+Tilemap_1733af:
+IF DEF(CRYSTAL11)
+INCBIN "gfx/unknown/1733af_corrupt.tilemap"
+ELSE
+INCBIN "gfx/unknown/1733af.tilemap"
+ENDC
+
+Attrmap_173517:
+INCBIN "gfx/unknown/173517.attrmap"
diff --git a/mobile/mobile_5e.asm b/mobile/mobile_5e.asm
new file mode 100644
index 000000000..c8cae6654
--- /dev/null
+++ b/mobile/mobile_5e.asm
@@ -0,0 +1,925 @@
+MobileAdapterGFX::
+INCBIN "gfx/mobile/mobile_adapter.2bpp"
+
+Function17a68f:: ; 17a68f (5e:668f)
+ call Function17a6a8
+ call Function17a751
+ ld hl, $d088
+ bit 5, [hl]
+ jr z, .asm_17a6a6
+ ld de, StringBuffer1 ; $d073
+ push de
+ call Function17a721
+ pop de
+ xor a
+ ret
+
+.asm_17a6a6
+ scf
+ ret
+
+Function17a6a8: ; 17a6a8 (5e:66a8)
+ push de
+ push bc
+ ld hl, StringBuffer2 ; $d086
+ ld bc, $a
+ xor a
+ call ByteFill
+ ld hl, Buffer1
+ ld bc, $10
+ ld a, $ff
+ call ByteFill
+ pop bc
+ ld a, c
+ and a
+ jr z, .asm_17a6c9
+ ld hl, $d088
+ set 4, [hl]
+.asm_17a6c9
+ pop de
+ call Function17a6f5
+ call Function17aba0
+ farcall Function106464
+ call Function17ac0c
+ farcall HDMATransferAttrMapAndTileMapToWRAMBank3
+ call Function17abcf
+ farcall LoadOW_BGPal7
+ farcall Function49420
+ call SetPalettes
+ call DelayFrame
+ ret
+
+Function17a6f5: ; 17a6f5 (5e:66f5)
+ ld hl, Buffer1
+ ld c, $0
+ ld b, $8
+.asm_17a6fc
+ ld a, [de]
+ call Function17a713
+ jr c, .asm_17a70e
+ ld a, [de]
+ swap a
+ call Function17a713
+ jr c, .asm_17a70e
+ inc de
+ dec b
+ jr nz, .asm_17a6fc
+.asm_17a70e
+ ld a, c
+ ld [$d08c], a
+ ret
+
+Function17a713: ; 17a713 (5e:6713)
+ and $f
+ cp $a
+ jr nc, .asm_17a71d
+ ld [hli], a
+ inc c
+ and a
+ ret
+
+.asm_17a71d
+ ld [hl], $ff
+ scf
+ ret
+
+Function17a721: ; 17a721 (5e:6721)
+ push de
+ ld h, d
+ ld l, e
+ ld bc, $8
+ ld a, $ff
+ call ByteFill
+ pop de
+ ld hl, Buffer1
+ ld b, $8
+.asm_17a732
+ ld c, $0
+ ld a, [hli]
+ cp $a
+ jr nc, .asm_17a748
+ ld c, a
+ ld a, [hli]
+ cp $a
+ jr nc, .asm_17a74c
+ swap a
+ or c
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_17a732
+ ret
+
+.asm_17a748
+ ld a, $ff
+ ld [de], a
+ ret
+
+.asm_17a74c
+ ld a, $f0
+ or c
+ ld [de], a
+ ret
+
+Function17a751: ; 17a751 (5e:6751)
+ xor a
+ ld [$d087], a
+.asm_17a755
+ call Function17a781
+ call Function17a7ae
+ call Function17a97b
+ call Function17a770
+ call Function17a78f
+ ld hl, $d08f
+ inc [hl]
+ ld a, [$d087]
+ bit 7, a
+ jr z, .asm_17a755
+ ret
+
+Function17a770: ; 17a770 (5e:6770)
+ ld a, [hOAMUpdate]
+ push af
+ ld a, $1
+ ld [hOAMUpdate], a
+ call HideSprites
+ call Function17a9cb
+ pop af
+ ld [hOAMUpdate], a
+ ret
+
+Function17a781: ; 17a781 (5e:6781)
+ ld a, [hInMenu]
+ push af
+ ld a, $1
+ ld [hInMenu], a
+ call JoyTextDelay
+ pop af
+ ld [hInMenu], a
+ ret
+
+Function17a78f: ; 17a78f (5e:678f)
+ ld hl, $d088
+ bit 7, [hl]
+ res 7, [hl]
+ jr nz, .asm_17a79f
+ farcall HDMATransferTileMapToWRAMBank3
+ ret
+
+.asm_17a79f
+ farcall ReloadMapPart
+ ret
+; 17a7a6 (5e:67a6)
+
+Function17a7a6: ; 17a7a6
+ ld a, [$d087]
+ inc a
+ ld [$d087], a
+ ret
+
+Function17a7ae: ; 17a7ae (5e:67ae)
+ ld a, [$d087]
+ ld hl, Jumptable_17a7b6
+ rst JumpTable
+ ret
+
+Jumptable_17a7b6: ; 17a7b6 (5e:67b6)
+ dw Function17a7c2
+ dw Function17a7cd
+ dw Function17a7d8
+ dw Function17a7ff
+ dw Function17a81a
+ dw Function17a7f4
+
+
+Function17a7c2: ; 17a7c2 (5e:67c2)
+ ld a, $4
+ call Function17aad3
+ ld a, $1
+ ld [$d087], a
+ ret
+
+Function17a7cd: ; 17a7cd (5e:67cd)
+ call Function17a83c
+ call Function17a8ae
+ ret c
+ call Function17a848
+ ret
+
+Function17a7d8: ; 17a7d8 (5e:67d8)
+ call Function17a83c
+ call Function17a848
+ ld hl, $d08b
+ dec [hl]
+ ret nz
+ call Function17ac1d
+ call Function17ac2a
+ ld hl, $d088
+ set 7, [hl]
+ ld a, $1
+ ld [$d087], a
+ ret
+
+Function17a7f4: ; 17a7f4 (5e:67f4)
+ ld hl, $d08b
+ dec [hl]
+ ret nz
+ ld hl, $d087
+ set 7, [hl]
+ ret
+
+Function17a7ff: ; 17a7ff (5e:67ff)
+ ld hl, $d08b
+ dec [hl]
+ ret nz
+ call Function17ac1d
+ call Function17ac2a
+ ld hl, $d088
+ set 7, [hl]
+ ld hl, $d088
+ set 5, [hl]
+ ld hl, $d087
+ set 7, [hl]
+ ret
+
+Function17a81a: ; 17a81a (5e:681a)
+ call IsSFXPlaying
+ ret nc
+ ld a, [hJoyPressed]
+ and $3
+ ret z
+ call ExitMenu
+ call Function17ac1d
+ call Function17ac2a
+ ld hl, $d088
+ set 7, [hl]
+ ld hl, $d088
+ res 6, [hl]
+ ld a, $1
+ ld [$d087], a
+ ret
+
+Function17a83c: ; 17a83c (5e:683c)
+ ld a, [hJoyLast]
+ and $f0
+ ld c, a
+ ld a, [hJoyPressed]
+ and $b
+ or c
+ ld c, a
+ ret
+
+Function17a848: ; 17a848 (5e:6848)
+ ld a, c
+ and $60
+ cp $60
+ jr z, .asm_17a876
+ ld a, c
+ and $50
+ cp $50
+ jr z, .asm_17a87d
+ ld a, c
+ and $a0
+ cp $a0
+ jr z, .asm_17a884
+ ld a, c
+ and $90
+ cp $90
+ jr z, .asm_17a88b
+ bit 6, c
+ jr nz, .asm_17a892
+ bit 7, c
+ jr nz, .asm_17a899
+ bit 5, c
+ jr nz, .asm_17a8a0
+ bit 4, c
+ jr nz, .asm_17a8a7
+ xor a
+ ret
+
+.asm_17a876
+ ld a, $9
+ call Function17aad0
+ scf
+ ret
+
+.asm_17a87d
+ ld a, $a
+ call Function17aad0
+ scf
+ ret
+
+.asm_17a884
+ ld a, $b
+ call Function17aad0
+ scf
+ ret
+
+.asm_17a88b
+ ld a, $c
+ call Function17aad0
+ scf
+ ret
+
+.asm_17a892
+ ld a, $5
+ call Function17aad0
+ scf
+ ret
+
+.asm_17a899
+ ld a, $6
+ call Function17aad0
+ scf
+ ret
+
+.asm_17a8a0
+ ld a, $7
+ call Function17aad0
+ scf
+ ret
+
+.asm_17a8a7
+ ld a, $8
+ call Function17aad0
+ scf
+ ret
+
+Function17a8ae: ; 17a8ae (5e:68ae)
+ bit 1, c
+ jr nz, .asm_17a8bc
+ bit 0, c
+ jr nz, .asm_17a8cc
+ bit 3, c
+ jr nz, .asm_17a8d7
+ xor a
+ ret
+
+.asm_17a8bc
+ ld a, $b
+ ld [$d08a], a
+ call Function17aa98
+ call Function17a943
+ call Function17aa88
+ scf
+ ret
+
+.asm_17a8cc
+ call Function17aad7
+ call Function17aa98
+ call Function17a8de
+ scf
+ ret
+
+.asm_17a8d7
+ ld a, $c
+ call Function17aad3
+ scf
+ ret
+
+Function17a8de: ; 17a8de (5e:68de)
+ ld a, $2
+ call Function17aae0
+ ld a, [hl]
+ cp $f1
+ jr z, .asm_17a8fd
+ cp $f0
+ jr z, .asm_17a904
+ cp $f2
+ jr z, .asm_17a911
+ ld e, a
+ call Function17a964
+ ld a, $2
+ ld [$d087], a
+ call Function17aa88
+ ret
+
+.asm_17a8fd
+ call Function17a943
+ call Function17aa88
+ ret
+
+.asm_17a904
+ call Function17aad7
+ call Function17aa98
+ call Function17a91e
+ call Function17aa88
+ ret
+
+.asm_17a911
+ call Function17aa98
+ ld a, $5
+ ld [$d087], a
+ xor a
+ call Function17aa88
+ ret
+
+Function17a91e: ; 17a91e (5e:691e)
+ ld a, [$d08c]
+ cp $7
+ jr c, .asm_17a92c
+ ld a, $3
+ ld [$d087], a
+ xor a
+ ret
+
+.asm_17a92c
+ call LoadStandardMenuDataHeader
+ call Function17a99e
+ ld hl, $d088
+ set 7, [hl]
+ ld hl, $d088
+ set 6, [hl]
+ ld a, $4
+ ld [$d087], a
+ scf
+ ret
+
+Function17a943: ; 17a943 (5e:6943)
+ ld a, [$d08c]
+ and a
+ jr z, .asm_17a95d
+ dec a
+ ld [$d08c], a
+ ld c, a
+ ld b, $0
+ ld hl, Buffer1
+ add hl, bc
+ ld [hl], $ff
+ ld a, $2
+ ld [$d087], a
+ and a
+ ret
+
+.asm_17a95d
+ ld a, $5
+ ld [$d087], a
+ xor a
+ ret
+
+Function17a964: ; 17a964 (5e:6964)
+ ld a, [$d08c]
+ cp $10
+ jr nc, .asm_17a979
+ ld c, a
+ ld b, $0
+ inc a
+ ld [$d08c], a
+ ld hl, Buffer1
+ add hl, bc
+ ld [hl], e
+ and a
+ ret
+
+.asm_17a979
+ scf
+ ret
+
+Function17a97b: ; 17a97b (5e:697b)
+ hlcoord 1, 1
+ lb bc, 2, 18
+ call ClearBox
+ hlcoord 3, 2
+ ld de, Buffer1
+ ld a, [$d08c]
+ and a
+ ret z
+ ld c, a
+.asm_17a990
+ ld a, [de]
+ inc de
+ cp $a
+ jr nc, .asm_17a99d
+ add $f6
+ ld [hli], a
+ dec c
+ jr nz, .asm_17a990
+ ret
+
+.asm_17a99d
+ ret
+
+Function17a99e: ; 17a99e (5e:699e)
+ hlcoord 0, 12
+ ld b, $4
+ ld c, $12
+ call Function17ac46
+ hlcoord 2, 14
+ ld de, String_17a9b2
+ call PlaceString
+ ret
+; 17a9b2 (5e:69b2)
+
+String_17a9b2: ; 17a9b2
+ db "でんわばんごうが ただしく"
+ next "はいって いません!"
+ db "@"
+; 17a9cb
+
+Function17a9cb: ; 17a9cb (5e:69cb)
+ ld de, Sprites ; $c400
+ ld hl, $d088
+ bit 6, [hl]
+ jr nz, .bit_6_set
+ call Function17a9e3
+ call Function17aa22
+ call Function17a9f5
+ ret
+
+.bit_6_set
+ call Function17a9e3
+ ret
+
+Function17a9e3: ; 17a9e3 (5e:69e3)
+ ld a, $3
+ ld [$d08e], a
+ ld hl, Unknown_17aa77
+ ld b, $8
+ ld c, $8
+ ld a, $5
+ call Function17aa4a
+ ret
+
+Function17a9f5: ; 17a9f5 (5e:69f5)
+ ld a, [$d08c]
+ cp $10
+ ret nc
+ ld a, [$d08f]
+ swap a
+ and $1
+ add $1
+ ld [$d08e], a
+ ld a, [$d08c]
+ cp $10
+ jr c, .okay
+ dec a
+.okay
+ ld c, $8
+ call SimpleMultiply
+ add $18
+ ld b, a
+ ld c, $11
+ ld hl, Unknown_17aa72
+ ld a, $4
+ call Function17aa4a
+ ret
+
+Function17aa22: ; 17aa22 (5e:6a22)
+ ld a, $0
+ ld [$d08e], a
+ push de
+ ld a, $3
+ call Function17aae0
+ add a
+ add a
+ add a
+ add $0
+ push af
+ ld a, $4
+ call Function17aae0
+ add a
+ add a
+ add a
+ add $8
+ ld c, a
+ pop af
+ ld b, a
+ pop de
+ ld a, $0
+ ld hl, Unknown_17aa77
+ call Function17aa4a
+ ret
+
+Function17aa4a: ; 17aa4a (5e:6a4a)
+ ld [$d08d], a
+ ld a, b
+ add $8
+ ld b, a
+ ld a, c
+ add $10
+ ld c, a
+ ld a, [hli]
+.loop
+ push af
+ ld a, [hli]
+ add c
+ ld [de], a
+ inc de
+ ld a, [hli]
+ add b
+ ld [de], a
+ inc de
+ ld a, [$d08d]
+ add [hl]
+ inc hl
+ ld [de], a
+ inc de
+ ld a, [$d08e]
+ or [hl]
+ inc hl
+ ld [de], a
+ inc de
+ pop af
+ dec a
+ jr nz, .loop
+ ret
+; 17aa72 (5e:6a72)
+
+Unknown_17aa72: ; 17aa72
+ db 1
+ db 0, 0, 0, 0
+; 17aa77
+
+Unknown_17aa77: ; 17aa77
+ db 4
+ db 0, 0, 0, 0
+ db 0, 8, 1, 0
+ db 8, 0, 2, 0
+ db 8, 8, 3, 0
+; 17aa88
+
+Function17aa88: ; 17aa88 (5e:6a88)
+ jr c, asm_17aa91
+ ld de, SFX_SWITCH_POKEMON
+ call PlaySFX
+ ret
+
+asm_17aa91: ; 17aa91 (5e:6a91)
+ ld de, SFX_WRONG
+ call PlaySFX
+ ret
+
+Function17aa98: ; 17aa98 (5e:6a98)
+ ld a, $5
+ ld [$d08b], a
+ call Function17aaa9
+ call Function17aac3
+ ld hl, $d088
+ set 7, [hl]
+ ret
+
+Function17aaa9: ; 17aaa9 (5e:6aa9)
+ ld a, $3
+ call Function17aae3
+ ld c, a
+ ld b, $0
+ hlcoord 0, 0, AttrMap
+ add hl, bc
+ push hl
+ ld a, $4
+ call Function17aae3
+ ld bc, $14
+ pop hl
+ call AddNTimes
+ ret
+
+Function17aac3: ; 17aac3 (5e:6ac3)
+ ld a, $b
+ push hl
+ ld [hli], a
+ ld [hli], a
+ pop hl
+ ld de, SCREEN_WIDTH
+ add hl, de
+ ld [hli], a
+ ld [hli], a
+ ret
+
+Function17aad0: ; 17aad0 (5e:6ad0)
+ call Function17aae0
+
+Function17aad3: ; 17aad3 (5e:6ad3)
+ ld [$d089], a
+ ret
+
+Function17aad7: ; 17aad7 (5e:6ad7)
+ push af
+ ld a, [$d089]
+ ld [$d08a], a
+ pop af
+ ret
+
+Function17aae0: ; 17aae0 (5e:6ae0)
+ call Function17aad7
+
+Function17aae3: ; 17aae3 (5e:6ae3)
+ push af
+ ld a, [$d08a]
+ ld bc, $d
+ ld hl, Unknown_17aaf7
+ call AddNTimes
+ pop af
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [hl]
+ ret
+; 17aaf7 (5e:6af7)
+
+Unknown_17aaf7: ; 17aaf7
+ db $0, $0, $1, $6, $5, $9, $3, $2, $1, $2, $1, $2, $4
+ db $0, $0, $2, $9, $5, $a, $4, $0, $2, $a, $a, $3, $5
+ db $0, $0, $3, $c, $5, $b, $5, $1, $0, $1, $0, $4, $0
+ db $0, $0, $4, $6, $8, $0, $6, $5, $4, $5, $1, $5, $7
+ db $0, $0, $5, $9, $8, $1, $7, $3, $5, $0, $2, $6, $8
+ db $0, $0, $6, $c, $8, $2, $8, $4, $3, $1, $3, $7, $3
+ db $0, $0, $7, $6, $b, $3, $9, $8, $7, $8, $4, $8, $a
+ db $0, $0, $8, $9, $b, $4, $a, $6, $8, $3, $5, $9, $b
+ db $0, $0, $9, $c, $b, $5, $b, $7, $6, $4, $6, $a, $6
+ db $0, $0,$f2, $6, $e, $6, $0, $c, $a, $c, $7, $c, $0
+ db $0, $0, $0, $9, $e, $7, $1, $9, $b, $6, $8, $1, $1
+ db $0, $0,$f1, $c, $e, $8, $2, $a, $c, $7, $c, $2, $c
+ db $0, $0,$f0,$10, $e, $c, $c, $b, $9, $b, $9, $b, $9
+; 17aba0
+
+Function17aba0: ; 17aba0 (5e:6ba0)
+ ld a, [rVBK]
+ push af
+ ld a, $1
+ ld [rVBK], a
+
+ ld hl, VTiles5 tile $00
+ ld de, GFX_17afa5
+ lb bc, BANK(GFX_17afa5), $80
+ call Get2bpp
+
+ pop af
+ ld [rVBK], a
+
+ ld hl, VTiles0 tile $00
+ ld de, GFX_17afa5 + $4c0
+ lb bc, BANK(GFX_17afa5), 5
+ call Get2bpp
+
+ ld hl, VTiles0 tile $05
+ ld de, GFX_11601a
+ lb bc, BANK(GFX_11601a), 4
+ call Get2bpp
+ ret
+
+Function17abcf: ; 17abcf (5e:6bcf)
+ ld a, [rSVBK]
+ push af
+ ld a, BANK(UnknBGPals)
+ ld [rSVBK], a
+
+ ld hl, Palette_17ac55
+ ld de, UnknBGPals ; $d000
+ ld bc, $30
+ call CopyBytes
+
+ ld hl, Palette_17ac95
+ ld de, UnknOBPals
+ ld bc, $40
+ call CopyBytes
+
+ ld hl, GFX_17afa5 + $510
+ ld de, UnknOBPals + 2 * 4
+ ld bc, $10
+ call CopyBytes
+
+ ld hl, MapObjectPals + 8
+ ld de, UnknOBPals + 6 * 4
+ ld bc, $8
+ ld a, BANK(MapObjectPals)
+ call FarCopyBytes
+
+ pop af
+ ld [rSVBK], a
+ ret
+
+Function17ac0c: ; 17ac0c (5e:6c0c)
+ call Function17ac1d
+ call Function17ac2a
+ hlcoord 0, 0
+ ld b, 2
+ ld c, SCREEN_WIDTH - 2
+ call Function17ac46
+ ret
+
+Function17ac1d: ; 17ac1d (5e:6c1d)
+ ld hl, Tilemap_17acd5
+ decoord 0, 4
+ ld bc, (SCREEN_HEIGHT - 4) * SCREEN_WIDTH
+ call CopyBytes
+ ret
+
+Function17ac2a: ; 17ac2a (5e:6c2a)
+ ld hl, Tilemap_17ae3d
+ decoord 0, 4, AttrMap
+ ld bc, (SCREEN_HEIGHT - 4) * SCREEN_WIDTH
+ call CopyBytes
+ hlcoord 0, 4, AttrMap
+ ld bc, (SCREEN_HEIGHT - 4) * SCREEN_WIDTH
+.loop
+ ld a, [hl]
+ or $8
+ ld [hli], a
+ dec bc
+ ld a, b
+ or c
+ jr nz, .loop
+ ret
+
+Function17ac46: ; 17ac46 (5e:6c46)
+ ld a, [$d088]
+ bit 4, a
+ jr nz, .bit_4_set
+ call TextBox
+ ret
+
+.bit_4_set
+ call Function3eea
+ ret
+; 17ac55 (5e:6c55)
+
+Palette_17ac55: ; 17ac55
+ RGB 0, 0, 0
+ RGB 9, 10, 25
+ RGB 16, 19, 31
+ RGB 31, 31, 31
+
+ RGB 5, 11, 9
+ RGB 7, 14, 12
+ RGB 17, 24, 22
+ RGB 28, 31, 31
+
+ RGB 0, 0, 0
+ RGB 3, 0, 10
+ RGB 3, 3, 16
+ RGB 6, 8, 25
+
+ RGB 5, 11, 9
+ RGB 28, 31, 31
+ RGB 7, 14, 12
+ RGB 17, 24, 22
+
+ RGB 0, 0, 0
+ RGB 5, 2, 16
+ RGB 8, 8, 26
+ RGB 13, 9, 17
+
+ 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
+
+Palette_17ac95: ; 17ac95
+ RGB 31, 31, 31
+ RGB 4, 3, 3
+ RGB 31, 13, 0
+ RGB 31, 31, 31
+
+ RGB 31, 31, 31
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 31, 31, 31
+
+ RGB 31, 0, 0
+ RGB 16, 3, 0
+ RGB 28, 19, 11
+ RGB 31, 31, 31
+
+ RGB 31, 16, 0
+ RGB 9, 6, 4
+ RGB 31, 16, 0
+ RGB 31, 24, 0
+
+ RGB 31, 18, 6
+ RGB 0, 3, 0
+ RGB 0, 9, 0
+ RGB 0, 12, 0
+
+ RGB 0, 16, 0
+ RGB 0, 22, 0
+ RGB 0, 25, 0
+ RGB 0, 27, 0
+
+ RGB 0, 31, 0
+ RGB 3, 31, 0
+ RGB 8, 31, 0
+ RGB 14, 31, 0
+
+ RGB 16, 31, 0
+ RGB 22, 31, 0
+ RGB 27, 31, 0
+ RGB 31, 31, 0
+
+Tilemap_17acd5: ; 17acd5
+INCBIN "gfx/unknown/17acd5.tilemap"
+
+Tilemap_17ae3d: ; 17ae3d
+INCBIN "gfx/unknown/17ae3d.tilemap"
+
+GFX_17afa5:: ; 17afa5
+INCBIN "gfx/unknown/17afa5.2bpp"
diff --git a/mobile/mobile_5f.asm b/mobile/mobile_5f.asm
new file mode 100644
index 000000000..ea485089c
--- /dev/null
+++ b/mobile/mobile_5f.asm
@@ -0,0 +1,5306 @@
+Function17c000: ; 17c000
+ call DisableLCD
+
+ ld hl, VTiles2
+ ld bc, $31 tiles
+ xor a
+ call ByteFill
+
+ call LoadStandardFont
+ call LoadFontsExtra
+
+ ld hl, HaveWantMap
+ decoord 0, 0
+ bccoord 0, 0, AttrMap
+
+ ld a, SCREEN_HEIGHT
+.y
+ push af
+ ld a, SCREEN_WIDTH
+
+ push hl
+.x
+ push af
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ pop af
+ dec a
+ jr nz, .x
+ pop hl
+
+ push bc
+ ld bc, BG_MAP_WIDTH * 2
+ add hl, bc
+ pop bc
+
+ pop af
+ dec a
+ jr nz, .y
+
+ ld a, [rSVBK]
+ push af
+
+ ld a, 5 ; BANK(UnknBGPals)
+ ld [rSVBK], a
+
+ ld hl, HaveWantPals
+ ld de, UnknBGPals
+ ld bc, $80
+ call CopyBytes
+
+ pop af
+ ld [rSVBK], a
+
+ ld hl, MobileSelectGFX
+ ld de, VTiles0 tile $30
+ ld bc, $20 tiles
+ call CopyBytes
+
+ ld a, 1
+ ld [rVBK], a
+
+ ld hl, HaveWantGFX
+ ld de, VTiles2
+ ld bc, $80 tiles
+ call CopyBytes
+
+ ld hl, HaveWantGFX + $800
+ ld de, VTiles1
+ ld bc, $10 tiles
+ call CopyBytes
+
+ xor a
+ ld [rVBK], a
+
+ call EnableLCD
+ farcall ReloadMapPart
+ ret
+; 17c083
+
+HaveWantGFX: ; 17c083
+INCBIN "gfx/mobile/havewant.2bpp"
+
+MobileSelectGFX: ; 17c983
+INCBIN "gfx/mobile/select.2bpp"
+
+HaveWantMap: ; 17cb83
+; Interleaved tile/palette map.
+INCBIN "gfx/mobile/havewant_map.bin"
+
+HaveWantPals: ; 17cff3
+; BG and OBJ palettes.
+ RGB 0, 0, 0
+ RGB 21, 21, 21
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+ RGB 0, 0, 0
+ RGB 4, 17, 29
+ RGB 6, 19, 31
+ RGB 31, 31, 31
+
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+ RGB 0, 0, 0
+ RGB 2, 13, 18
+ RGB 6, 19, 31
+ RGB 31, 31, 31
+
+ RGB 0, 0, 0
+ RGB 31, 5, 5
+ RGB 29, 21, 21
+ RGB 31, 31, 31
+
+ 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 4, 17, 29
+ RGB 6, 19, 31
+ RGB 2, 15, 27
+
+ RGB 0, 0, 0
+ RGB 28, 19, 18
+ RGB 25, 9, 0
+ RGB 0, 0, 0
+
+ RGB 0, 0, 0
+ RGB 31, 27, 27
+ RGB 31, 10, 4
+ RGB 29, 0, 0
+
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 26, 8, 23
+ RGB 22, 0, 16
+
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 20, 8, 31
+ RGB 15, 1, 26
+
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 17, 12, 31
+ RGB 12, 6, 31
+
+ RGB 0, 16, 0
+ RGB 11, 11, 14
+ RGB 5, 5, 7
+ RGB 31, 31, 31
+
+ RGB 0, 31, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+ RGB 16, 31, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+ RGB 0, 0, 0
+
+
+CheckStringForErrors: ; 17d073
+; Valid character ranges:
+; $0, $5 - $13, $19 - $1c, $26 - $34, $3a - $3e, $40 - $48, $60 - $ff
+.loop
+ ld a, [de]
+ inc de
+ and a
+ jr z, .NextChar
+ cp $60
+ jr nc, .NextChar
+ cp $4e
+ jr z, .NextChar
+ cp "@"
+ jr z, .Done
+ cp $5
+ jr c, .Fail
+ cp "<PLAY_G>"
+ jr c, .NextChar
+ cp $19
+ jr c, .Fail
+ cp $1d
+ jr c, .NextChar
+ cp $26
+ jr c, .Fail
+ cp $35
+ jr c, .NextChar
+ cp $3a
+ jr c, .Fail
+ cp $3f
+ jr c, .NextChar
+ cp $40
+ jr c, .Fail
+ cp $49
+ jr c, .NextChar
+
+.Fail:
+ scf
+ ret
+
+.NextChar:
+ dec c
+ jr nz, .loop
+
+.Done:
+ and a
+ ret
+; 17d0b3
+
+CheckStringForErrors_IgnoreTerminator: ; 17d0b3
+; Find control chars
+.loop
+ ld a, [de]
+ inc de
+ and a
+ jr z, .next
+ cp "<DEXEND>" + 1
+ jr nc, .next
+ cp "<NEXT>"
+ jr z, .next
+ cp "@"
+ jr z, .next
+
+ cp $5
+ jr c, .end
+ cp "<PLAY_G>"
+ jr c, .next
+ cp $19
+ jr c, .end
+ cp $1d
+ jr c, .next
+ cp "%" + 1
+ jr c, .end
+ cp $35
+ jr c, .next
+ cp "<GREEN>" + 1
+ jr c, .end
+ cp "<ENEMY>"
+ jr c, .next
+ cp "<ENEMY>" + 1
+ jr c, .end
+ cp "<MOM>"
+ jr c, .next
+
+.end
+ scf
+ ret
+
+.next
+ dec c
+ jr nz, .loop
+ and a
+ ret
+; 17d0f3
+
+Function17d0f3: ; 17d0f3
+ ld a, [$c608 + 5]
+ ld [wOTTrademonSpecies], a
+ ld [CurPartySpecies], a
+ ld a, [wcd81]
+ ld [$c74e], a
+ ld hl, $c63d
+ ld de, wOTTrademonOTName
+ ld bc, 5
+ call CopyBytes
+ ld a, "@"
+ ld [de], a
+ ld a, [$c608 + 11]
+ ld [wOTTrademonID], a
+ ld a, [$c608 + 12]
+ ld [wOTTrademonID + 1], a
+ ld hl, $c608 + 26
+ ld a, [hli]
+ ld [wOTTrademonDVs], a
+ ld a, [hl]
+ ld [wOTTrademonDVs + 1], a
+ ld bc, $c608 + 5
+ farcall GetCaughtGender
+ ld a, c
+ ld [wOTTrademonCaughtData], a
+ call SpeechTextBox
+ call FadeToMenu
+ farcall Function10804d
+ farcall Function17d1f1
+ ld a, $1
+ ld [wForceEvolution], a
+ ld a, $2
+ ld [wLinkMode], a
+ farcall EvolvePokemon
+ xor a
+ ld [wLinkMode], a
+ farcall SaveAfterLinkTrade
+ ld a, $5
+ call GetSRAMBank
+ ld a, $5
+ ld [$a800], a
+ call CloseSRAM
+ ld a, [MapGroup]
+ ld b, a
+ ld a, [MapNumber]
+ ld c, a
+ call GetMapSceneID
+ ld a, d
+ or e
+ jr z, .asm_17d180
+ ld a, $1
+ ld [de], a
+
+.asm_17d180
+ call CloseSubmenu
+ call RestartMapMusic
+ ret
+; 17d187
+
+Mobile_CopyDefaultOTName: ; 17d187
+ ld hl, Mobile5F_KrissName
+ ld de, $c63d
+ ld bc, 5
+ call CopyBytes
+ ret
+; 17d194
+
+Mobile5F_KrissName:
+ db "クりス@@"
+; 17d198
+
+Mobile_CopyDefaultNickname: ; 17d199
+ ld hl, .DefaultNickname
+ ld de, $c642
+ ld bc, 5
+ call CopyBytes
+ ret
+; 17d1a6
+
+.DefaultNickname:
+ db "?????"
+
+Mobile_CopyDefaultMail: ; 17d1ab
+ ld a, "@"
+ ld hl, $c647
+ ld bc, MAIL_MSG_LENGTH + 1
+ call ByteFill
+ ld hl, .DefaultMessage
+ ld de, $c647
+ ld bc, 6
+ call CopyBytes
+ ret
+; 17d1c3
+
+.DefaultMessage:
+ db "こんにちは@"
+; 17d1c9
+
+Mobile_CopyDefaultMailAuthor: ; 17d1c9
+ ld a, "@"
+ ld de, $c668
+ ld bc, 5
+ call ByteFill
+ ld hl, Mobile5F_KrissName
+ ld de, $c668
+ ld bc, 5
+ call CopyBytes
+ ret
+; 17d1e1
+
+CheckStringContainsLessThanBNextCharacters: ; 17d1e1
+.loop
+ ld a, [de]
+ inc de
+ cp "<NEXT>"
+ jr nz, .next_char
+ dec b
+ jr z, .done
+
+.next_char
+ dec c
+ jr nz, .loop
+ and a
+ ret
+
+.done
+ scf
+ ret
+; 17d1f1
+
+Function17d1f1: ; 17d1f1
+ ld a, [CurPartySpecies]
+ dec a
+ call SetSeenAndCaughtMon
+
+ ld a, [CurPartySpecies]
+ cp UNOWN
+ jr nz, .asm_17d223
+
+ ld hl, PartyMon1DVs
+ ld a, [PartyCount]
+ dec a
+ ld bc, PARTYMON_STRUCT_LENGTH
+ call AddNTimes
+ predef GetUnownLetter
+ callfar UpdateUnownDex
+ ld a, [wFirstUnownSeen]
+ and a
+ jr nz, .asm_17d223
+
+ ld a, [UnownLetter]
+ ld [wFirstUnownSeen], a
+
+.asm_17d223
+ ret
+; 17d224
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+; Parameter: [ScriptVar] = 0..1
+;
+; if [ScriptVar] == 0
+; Show japanese menu options
+; - News - News - ??? - Cancel
+; if [ScriptVar] == 1
+; Show BattleTower-Menu with 3 options in english language
+; - Challenge - Explanation - Cancel
+Special_Menu_ChallengeExplanationCancel: ; 17d224
+ ld a, [ScriptVar]
+ and a
+ jr nz, .English
+ ld a, $4
+ ld [ScriptVar], a
+ ld hl, MenuDataHeader_17d26a ; Japanese Menu, where you can choose 'News' as an option
+ jr .Load_Interpret
+
+.English:
+ ld a, $4
+ ld [ScriptVar], a
+ ld hl, MenuDataHeader_ChallengeExplanationCancel ; English Menu
+
+.Load_Interpret:
+ call LoadMenuDataHeader
+ call Function17d246
+ call CloseWindow
+ ret
+; 17d246
+
+Function17d246: ; 17d246
+ call VerticalMenu
+ jr c, .Exit
+ ld a, [ScriptVar]
+ cp $5
+ jr nz, .UsewMenuCursorY
+ ld a, [wMenuCursorY]
+ cp $3
+ ret z
+ jr c, .UsewMenuCursorY
+ dec a
+ jr .LoadToScriptVar
+
+.UsewMenuCursorY:
+ ld a, [wMenuCursorY]
+
+.LoadToScriptVar:
+ ld [ScriptVar], a
+ ret
+
+.Exit:
+ ld a, $4
+ ld [ScriptVar], a
+ ret
+; 17d26a
+
+MenuDataHeader_17d26a: ; 17d26a
+ db $40 ; flags
+ db 0, 0 ; start coords
+ db 9, 14 ; end coords
+ dw MenuData2_17d272
+ db 1 ; default option
+
+MenuData2_17d272: ; 17d272
+ db $a0 ; flags
+ db 4
+ db "ニュース¯よみこむ@"
+ db "ニュース¯みる@"
+ db "せつめい@"
+ db "やめる@"
+; 17d28f
+
+MenuDataHeader_ChallengeExplanationCancel: ; 17d28f
+ db $40 ; flags
+ db 0, 0 ; start coords
+ db 7, 14 ; end coords
+ dw MenuData2_ChallengeExplanationCancel
+ db 1 ; default option
+
+MenuData2_ChallengeExplanationCancel: ; 17d297
+ db $a0 ; flags
+ db 3
+ db "Challenge@"
+ db "Explanation@"
+ db "Cancel@"
+; 17d2b6
+
+Function17d2b6: ; 17d2b6
+ call Function17d2c0
+ farcall Function1181da
+ ret
+; 17d2c0
+
+Function17d2c0: ; 17d2c0
+ xor a
+ ld [wJumptableIndex], a
+ ld [wcf64], a
+ ld [wcf65], a
+ ld [wcf66], a
+ ret
+; 17d2ce
+
+Function17d2ce: ; 17d2ce
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$aa72]
+ call CloseSRAM
+ and a
+ jr nz, .asm_17d2e2
+ ld a, $1
+ ld [ScriptVar], a
+ ret
+
+.asm_17d2e2
+ call Function17d314
+ ret c
+ call SpeechTextBox
+ call FadeToMenu
+ ld a, [rSVBK]
+ push af
+ ld a, $4
+ ld [rSVBK], a
+ call Function17d370
+ call Function17d45a
+ pop af
+ ld [rSVBK], a
+ ld de, MUSIC_MOBILE_CENTER
+ ld a, e
+ ld [wMapMusic], a
+ ld [MusicFadeID], a
+ ld a, d
+ ld [MusicFadeID + 1], a
+ call PlayMusic
+ call ReturnToMapFromSubmenu
+ call CloseSubmenu
+ ret
+; 17d314
+
+Function17d314: ; 17d314
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$b1b1]
+ call CloseSRAM
+ cp $21
+ jr nc, .asm_17d354
+ ld a, $6
+ call GetSRAMBank
+ ld l, $0
+ ld h, l
+ ld de, $a006
+ ld a, [$a004]
+ ld c, a
+ ld a, [$a005]
+ ld b, a
+.asm_17d336
+ push bc
+ ld a, [de]
+ inc de
+ ld c, a
+ ld b, $0
+ add hl, bc
+ pop bc
+ dec bc
+ ld a, b
+ or c
+ jr nz, .asm_17d336
+ ld a, [$a002]
+ cp l
+ jr nz, .asm_17d354
+ ld a, [$a003]
+ cp h
+ jr nz, .asm_17d354
+ call CloseSRAM
+ and a
+ ret
+
+.asm_17d354
+ call CloseSRAM
+ ld a, $5
+ call GetSRAMBank
+ xor a
+ ld hl, $aa73
+ ld bc, $c
+ call ByteFill
+ call CloseSRAM
+ ld a, $2
+ ld [ScriptVar], a
+ scf
+ ret
+; 17d370
+
+Function17d370: ; 17d370
+ xor a
+ ld [wcd77], a
+ ld [wcd78], a
+ ld [wcd79], a
+ dec a
+ ld [wcd6c], a
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearScreen
+ farcall ReloadMapPart
+ call DisableLCD
+ ld hl, VTiles1 tile $6e
+ ld de, $c608
+ ld bc, 1 tiles
+ call CopyBytes
+ ld a, $1
+ ld [rVBK], a
+ ld hl, PokemonNewsGFX
+ ld de, VTiles1
+ ld bc, $48 tiles
+ call CopyBytes
+ xor a
+ ld hl, VTiles2 tile $7f
+ ld bc, 1 tiles
+ call ByteFill
+ ld hl, $c608
+ ld de, VTiles1 tile $6e
+ ld bc, 1 tiles
+ call CopyBytes
+ xor a
+ ld [rVBK], a
+ ld hl, GFX_17eb7e
+ ld de, VTiles2 tile $60
+ ld bc, 1 tiles
+ call CopyBytes
+ call EnableLCD
+ call Function17d60b
+ ld a, $0
+ ld [BGMapBuffer], a
+ ld a, $d0
+ ld [wcd21], a
+ ld a, $6
+ call GetSRAMBank
+ ld hl, $a006
+ ld de, UnknBGPals
+ ld bc, $1000
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 17d3f6
+
+Function17d3f6: ; 17d3f6
+ call ClearBGPalettes
+ call ClearSprites
+ call ClearScreen
+ farcall ReloadMapPart
+
+Function17d405:
+ call DisableLCD
+ ld hl, VTiles1 tile $6e
+ ld de, $c608
+ ld bc, 1 tiles
+ call CopyBytes
+ ld a, $1
+ ld [rVBK], a
+ ld hl, PokemonNewsGFX
+ ld de, VTiles1
+ ld bc, $48 tiles
+ call CopyBytes
+ xor a
+ ld hl, VTiles2 tile $7f
+ ld bc, 1 tiles
+ call ByteFill
+ ld hl, $c608
+ ld de, VTiles1 tile $6e
+ ld bc, 1 tiles
+ call CopyBytes
+ xor a
+ ld [rVBK], a
+ call EnableLCD
+ ld a, [rSVBK]
+ push af
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, Palette_17eff6
+ ld de, UnknBGPals
+ ld bc, 8 palettes
+ call CopyBytes
+ call SetPalettes
+ pop af
+ ld [rSVBK], a
+ ret
+; 17d45a
+
+Function17d45a: ; 17d45a
+.asm_17d45a
+ call JoyTextDelay
+ ld a, [wcd77]
+ bit 7, a
+ jr nz, .asm_17d46f
+ call Function17d474
+ farcall ReloadMapPart
+ jr .asm_17d45a
+
+.asm_17d46f
+ xor a
+ ld [ScriptVar], a
+ ret
+; 17d474
+
+Function17d474: ; 17d474
+ jumptable Jumptable_17d483, wcd77
+; 17d483
+
+Jumptable_17d483: ; 17d483
+ dw Function17d48d
+ dw Function17d5be
+ dw Function17d5c4
+ dw Function17d6fd
+ dw Function17e427
+; 17d48d
+
+Function17d48d: ; 17d48d
+ ld hl, Palette_17eff6
+ ld de, $c608
+ ld bc, $40
+ call CopyBytes
+ ld hl, TileAttrmap_17eb8e
+ decoord 0, 0
+ bccoord 0, 0, AttrMap
+ ld a, $12
+.asm_17d4a4
+ push af
+ ld a, $14
+ push hl
+.asm_17d4a8
+ push af
+ ld a, [hli]
+ cp $7f
+ jr z, .asm_17d4b0
+ add $80
+
+.asm_17d4b0
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [bc], a
+ inc bc
+ pop af
+ dec a
+ jr nz, .asm_17d4a8
+ pop hl
+ push bc
+ ld bc, $40
+ add hl, bc
+ pop bc
+ pop af
+ dec a
+ jr nz, .asm_17d4a4
+ ld a, [BGMapBuffer]
+ ld l, a
+ ld a, [wcd21]
+ ld h, a
+ ld a, [hli]
+ ld e, a
+ ld a, [wcd6c]
+ cp e
+ jr z, .asm_17d4e0
+ ld a, e
+ ld [wcd6c], a
+ ld [wMapMusic], a
+ ld d, $0
+ call PlayMusic2
+
+.asm_17d4e0
+ ld a, [hli]
+ ld de, $c608
+ ld c, $8
+.asm_17d4e6
+ srl a
+ jr nc, .asm_17d4f6
+ ld b, $8
+ push af
+.asm_17d4ed
+ ld a, [hli]
+ ld [de], a
+ inc de
+ dec b
+ jr nz, .asm_17d4ed
+ pop af
+ jr .asm_17d4fc
+
+.asm_17d4f6
+ push af
+ ld a, e
+ add $8
+ ld e, a
+ pop af
+
+.asm_17d4fc
+ dec c
+ jr nz, .asm_17d4e6
+ push hl
+ call Function17d5f6
+ pop hl
+ ld a, [hli]
+ and a
+ jr z, .asm_17d539
+.asm_17d508
+ push af
+ ld a, [hli]
+ ld [wcd4f], a
+ ld a, [hli]
+ ld [wcd50], a
+ ld a, [hli]
+ ld [wcd51], a
+ ld a, [hli]
+ ld [wcd52], a
+ ld a, [hli]
+ sla a
+ sla a
+ sla a
+ add $98
+ ld [wcd53], a
+ ld de, wcd4f
+ call Function17e613
+ ld a, [hli]
+ ld [wcd53], a
+ ld de, wcd4f
+ call Function17e691
+ pop af
+ dec a
+ jr nz, .asm_17d508
+
+.asm_17d539
+ ld a, [hli]
+.asm_17d53a
+ push af
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ push hl
+ pop de
+ hlcoord 0, 0
+ add hl, bc
+ call PlaceString
+ push de
+ pop hl
+ inc hl
+ pop af
+ dec a
+ jr nz, .asm_17d53a
+ ld de, CreditsTimer
+ ld bc, $c
+ call CopyBytes
+ xor a
+ ld [wcd2e], a
+ ld [wcd2f], a
+ inc a
+ ld [wcd30], a
+ ld [wcd31], a
+ ld de, wcd32
+ ld bc, $10
+ call CopyBytes
+ ld a, [hli]
+ ld [wcd42], a
+ ld a, [hli]
+ ld [wcd43], a
+ ld a, [hli]
+ ld [wMobileInactivityTimerMinutes], a
+ ld a, [hli]
+ ld [wMobileInactivityTimerSeconds], a
+ ld a, [hli]
+ ld [wMobileInactivityTimerFrames], a
+ ld a, [hli]
+ and a
+ jr z, .asm_17d58a
+ call Function17d6a1
+
+.asm_17d58a
+ ld a, l
+ ld [wcd49], a
+ ld a, h
+ ld [wcd4a], a
+ ld a, [wcd42]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ add hl, bc
+ ld a, l
+ ld [wcd4b], a
+ ld a, h
+ ld [wcd4c], a
+ add hl, bc
+ add hl, bc
+ ld a, l
+ ld [wcd4d], a
+ ld a, h
+ ld [wcd4e], a
+ call Function17e451
+ call Function17e55b
+ call Function17e5af
+ farcall ReloadMapPart
+ jp Function17e438
+; 17d5be
+
+Function17d5be: ; 17d5be
+ call SetPalettes
+ call Function17e438
+
+Function17d5c4:
+ ld a, [hJoyPressed]
+ and a
+ ret z
+ ld c, 0
+ ld b, c
+ ld hl, wcd32
+.loop
+ srl a
+ jr c, .got_button
+ inc c
+ inc c
+ jr .loop
+
+.got_button
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ and c
+ cp $ff
+ ret z
+ ld a, [wcd20]
+ ld l, a
+ ld a, [wcd21]
+ ld h, a
+ add hl, bc
+ ld a, l
+ ld [wcd78], a
+ ld a, h
+ ld [wcd79], a
+ ld a, $3
+ ld [wcd77], a
+ ret
+; 17d5f6
+
+Function17d5f6: ; 17d5f6
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, $c608
+ ld de, UnknBGPals
+ ld bc, 8 palettes
+ call CopyBytes
+ ld a, $4
+ ld [rSVBK], a
+ ret
+; 17d60b
+
+Function17d60b: ; 17d60b
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $b1d3
+ ld de, $c608
+ ld bc, $20
+ call CopyBytes
+ ld a, [$b1b1]
+ ld c, a
+ ld a, [$b1b2]
+ ld b, a
+ ld a, [$b1b3]
+ ld l, a
+ ld a, [$b1b4]
+ ld h, a
+ call CloseSRAM
+ ld a, $6
+ call GetSRAMBank
+ ld de, $c708
+ ld a, c
+ and a
+ jr z, .asm_17d684
+.asm_17d63b
+ push bc
+ ld a, l
+ ld [de], a
+ inc de
+ ld a, h
+ ld [de], a
+ inc de
+ ld bc, $a
+ add hl, bc
+ pop bc
+ ld a, [hli]
+ ld [wcd4a], a
+ ld a, [hli]
+ ld [wcd49], a
+ push hl
+ push de
+ ld hl, $c608
+ ld e, b
+ ld d, $0
+ add hl, de
+ ld a, [hli]
+ ld [wcd4b], a
+ ld a, [hl]
+ ld [wcd4c], a
+ pop de
+ pop hl
+ inc b
+ inc b
+ dec c
+ dec c
+ jr z, .asm_17d684
+ push bc
+ push de
+ ld a, [wcd49]
+ ld c, a
+ ld a, [wcd4a]
+ ld b, a
+ ld a, [wcd4b]
+ ld e, a
+ ld a, [wcd4c]
+ ld d, a
+.asm_17d67a
+ add hl, de
+ dec bc
+ ld a, c
+ or b
+ jr nz, .asm_17d67a
+ pop de
+ pop bc
+ jr .asm_17d63b
+
+.asm_17d684
+ call CloseSRAM
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $c708
+ ld de, $b1b3
+ ld a, [$b1b1]
+ ld c, a
+ ld a, [$b1b2]
+ ld b, a
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 17d6a1
+
+
+Function17d6a1: ; 17d6a1
+ push hl
+ ld a, [wcd6e]
+ ld c, a
+ ld b, $0
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $b1d3
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld [wcd47], a
+ ld a, [hl]
+ ld [BGMapPalBuffer], a
+ ld hl, $b1b3
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ ld h, a
+ ld l, c
+ call CloseSRAM
+ ld a, $6
+ call GetSRAMBank
+ ld a, l
+ ld [wcd5e], a
+ ld a, h
+ ld [wcd5f], a
+ ld de, wcd60
+ ld bc, $4
+ call CopyBytes
+ inc hl
+ inc hl
+ ld de, wcd64
+ ld bc, $4
+ call CopyBytes
+ ld a, [hli]
+ ld [wcd69], a
+ ld a, [hli]
+ ld [wcd68], a
+ ld a, l
+ ld [wcd6a], a
+ ld a, h
+ ld [wcd6b], a
+ call CloseSRAM
+ pop hl
+ ret
+; 17d6fd
+
+Function17d6fd: ; 17d6fd
+ ld a, [wcd77]
+ bit 7, a
+ jr nz, asm_17d721
+ ld a, [wcd78]
+ ld l, a
+ ld a, [wcd79]
+ ld h, a
+ ld a, [hl]
+ cp $ff
+ jr z, asm_17d721
+
+Function17d711:
+.crash_loop
+ cp $31
+ jr nc, .crash_loop
+ ld e, a
+ ld d, 0
+ ld hl, Jumptable17d72a
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+asm_17d721
+ call Function17e5af
+ ld a, $2
+ ld [wcd77], a
+ ret
+; 17d72a
+
+Jumptable17d72a: ; 17d72a
+ dw Function17d78c
+ dw Function17d78d
+ dw Function17d7b4
+ dw Function17d7c2
+ dw Function17d7d3
+ dw Function17d7e5
+ dw Function17d818
+ dw Function17d833
+ dw Function17d85d
+ dw Function17d902
+ dw Function17d93a
+ dw Function17d98b
+ dw Function17d9e3
+ dw Function17da31
+ dw Function17da9c
+ dw Function17dadc
+ dw Function17db2d
+ dw Function17db56
+ dw Function17db77
+ dw Function17dbe9
+ dw Function17dc1f
+ dw Function17dc9f
+ dw Function17dca9
+ dw Function17dccf
+ dw Function17dd13
+ dw Function17dd30
+ dw Function17dd49
+ dw Function17ddcd
+ dw Function17de32
+ dw Function17de91
+ dw Function17ded9
+ dw Function17e0fd
+ dw Function17e133
+ dw Function17e165
+ dw Function17e1a1
+ dw Function17e254
+ dw Function17e261
+ dw Function17e270
+ dw Function17e27f
+ dw Function17e293
+ dw Function17e2a7
+ dw Function17e367
+ dw Function17e37e
+ dw Function17e395
+ dw Function17e3ac
+ dw Function17e3c3
+ dw Function17e3e0
+ dw Function17e3f0
+ dw Function17e409
+; 17d78c
+
+Function17d78c: ; 17d78c
+ ret
+; 17d78d
+
+Function17d78d: ; 17d78d
+ call Function17e415
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ call Function17e41e
+ ld a, $6
+ call GetSRAMBank
+ ld hl, $a006
+ add hl, bc
+ ld de, UnknBGPals
+ ld bc, $1000
+ call CopyBytes
+ call CloseSRAM
+ xor a
+ ld [wcd77], a
+ call ClearBGPalettes
+ ret
+; 17d7b4
+
+Function17d7b4: ; 17d7b4
+ call Function17e415
+ ld a, [hli]
+ ld e, a
+ ld d, $0
+ call PlayMusic2
+ call Function17e41e
+ ret
+; 17d7c2
+
+Function17d7c2: ; 17d7c2
+ call Function17e415
+ ld a, [hli]
+ ld e, a
+ ld d, $0
+ call PlaySFX
+ call WaitSFX
+ call Function17e41e
+ ret
+; 17d7d3
+
+Function17d7d3: ; 17d7d3
+ call Function17e415
+ ld a, [hli]
+ dec a
+ ld e, a
+ ld d, $0
+ call PlayCryHeader
+ call WaitSFX
+ call Function17e41e
+ ret
+; 17d7e5
+
+Function17d7e5: ; 17d7e5
+ call Function17e415
+ ld a, [hli]
+ ld [wcd4f], a
+ ld a, [hli]
+ ld [wcd50], a
+ ld a, [hli]
+ ld [wcd51], a
+ ld a, [hli]
+ ld [wcd52], a
+ ld a, [hli]
+ sla a
+ sla a
+ sla a
+ add $98
+ ld [wcd53], a
+ ld de, wcd4f
+ call Function17e613
+ ld a, [hli]
+ ld [wcd53], a
+ ld de, wcd4f
+ call Function17e691
+ call Function17e41e
+ ret
+; 17d818
+
+Function17d818: ; 17d818
+ call Function17e415
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ call Function17e41e
+ call Function17e447
+ ld e, l
+ ld d, h
+ hlcoord 0, 0
+ add hl, bc
+ call PlaceString
+ ret
+; 17d833
+
+Function17d833: ; 17d833
+ call Function17e415
+ 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 Function17e41e
+ push de
+ push bc
+ call Function17e32b
+ pop bc
+ pop de
+ call Function17e43d
+ ld c, l
+ ld b, h
+ hlcoord 0, 0
+ add hl, de
+ ld e, l
+ ld d, h
+ farcall Function11c08f
+ call Function17e349
+ ret
+; 17d85d
+
+Function17d85d: ; 17d85d
+ call Function17e415
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ push hl
+ ld hl, UnknBGPals
+ add hl, de
+ ld de, wcc60
+.asm_17d86c
+ ld a, [hli]
+ ld [de], a
+ inc de
+ and a
+ jr nz, .asm_17d86c
+ pop hl
+ ld de, $c608
+ ld c, $0
+.asm_17d878
+ ld a, [hli]
+ cp $ff
+ jr z, .asm_17d8c7
+ ld [wcd4f], a
+ ld a, [hli]
+ ld [wcd50], a
+ ld a, [hli]
+ ld [wcd51], a
+ ld a, [hli]
+ ld [wcd52], a
+ ld a, [wcd51]
+ push af
+ cp $c0
+ jr c, .asm_17d89b
+ ld a, [wcd4f]
+ ld [rSVBK], a
+ jr .asm_17d8a1
+
+.asm_17d89b
+ ld a, [wcd4f]
+ call GetSRAMBank
+
+.asm_17d8a1
+ push hl
+ ld a, [wcd50]
+ ld l, a
+ ld a, [wcd51]
+ ld h, a
+ ld a, [wcd52]
+.asm_17d8ad
+ push af
+ ld a, [hli]
+ ld [de], a
+ inc de
+ inc c
+ pop af
+ dec a
+ jr nz, .asm_17d8ad
+ pop hl
+ pop af
+ cp $c0
+ jr c, .asm_17d8c2
+ ld a, $4
+ ld [rSVBK], a
+ jr .asm_17d878
+
+.asm_17d8c2
+ call CloseSRAM
+ jr .asm_17d878
+
+.asm_17d8c7
+ call Function17e41e
+ push bc
+ ld a, $3
+ ld [rSVBK], a
+ ld hl, $c608
+ ld de, UnknBGPals
+ ld b, $0
+ call CopyBytes
+ ld a, $4
+ ld [rSVBK], a
+ call Function17e32b
+ pop bc
+ ld a, c
+ ld [wcd3b], a
+ xor a
+ ld [wcf66], a
+ farcall Function118329
+ ld a, [wc300]
+ and a
+ jr z, .asm_17d8fe
+ cp $a
+ jr z, .asm_17d8fe
+ call Function17e309
+ ret
+
+.asm_17d8fe
+ call Function17e349
+ ret
+; 17d902
+
+Function17d902: ; 17d902
+ call Function17e415
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ push de
+ call Function17e41e
+ call Function17e32b
+ pop de
+ ld hl, UnknBGPals
+ add hl, de
+ ld de, wcc60
+.asm_17d918
+ ld a, [hli]
+ ld [de], a
+ inc de
+ and a
+ jr nz, .asm_17d918
+ xor a
+ ld [wcf66], a
+ farcall Function11837a
+ ld a, [wc300]
+ and a
+ jr z, .asm_17d936
+ cp $a
+ jr z, .asm_17d936
+ call Function17e309
+ ret
+
+.asm_17d936
+ call Function17e349
+ ret
+; 17d93a
+
+Function17d93a: ; 17d93a
+ call Function17e415
+ ld de, $c708
+ ld bc, $5
+ call CopyBytes
+ call Function17e41e
+ call Function17e32b
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, [$c70c]
+ call Function17e6de
+ ld a, [$c70a]
+ ld [CurPartySpecies], a
+ ld a, [$c70c]
+ ld e, a
+ farcall LoadMonPaletteAsNthBGPal
+ call SetPalettes
+ ld a, [$c708]
+ ld l, a
+ ld a, [$c709]
+ ld h, a
+ ld a, [$c70b]
+ ld c, a
+ decoord 0, 0
+ add hl, de
+ ld e, l
+ ld d, h
+ farcall HOF_AnimateFrontpic
+ pop af
+ ld [rSVBK], a
+ call Function17e349
+ ret
+; 17d98b
+
+Function17d98b: ; 17d98b
+ call Function17e415
+ ld de, $c708
+ ld bc, $4
+ call CopyBytes
+ call Function17e41e
+ call Function17e32b
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld a, [$c70b]
+ call Function17e6de
+ ld a, [$c70a]
+ ld [TrainerClass], a
+ ld a, [$c70b]
+ ld e, a
+ farcall LoadTrainerClassPaletteAsNthBGPal
+ call SetPalettes
+ ld a, [$c708]
+ ld e, a
+ ld a, [$c709]
+ ld d, a
+ push de
+ ld de, VTiles2
+ farcall GetTrainerPic
+ pop hl
+ decoord 0, 0
+ add hl, de
+ ld bc, $707
+ predef PlaceGraphic
+ pop af
+ ld [rSVBK], a
+ call Function17e349
+ ret
+; 17d9e3
+
+Function17d9e3: ; 17d9e3
+ call Function17e415
+ ld de, $c708
+ ld bc, $7
+ call CopyBytes
+ call Function17e41e
+ ld a, [$c70b]
+ push af
+ cp $c0
+ jr c, .asm_17da01
+ ld a, [$c70c]
+ ld [rSVBK], a
+ jr .asm_17da07
+
+.asm_17da01
+ ld a, [$c70c]
+ call GetSRAMBank
+
+.asm_17da07
+ ld a, [$c708]
+ ld l, a
+ ld a, [$c709]
+ ld h, a
+ ld a, [$c70a]
+ ld e, a
+ ld a, [$c70b]
+ ld d, a
+ ld a, [$c70d]
+ ld c, a
+ ld a, [$c70e]
+ ld b, a
+ call CopyBytes
+ pop af
+ cp $c0
+ jr c, .asm_17da2d
+ ld a, $4
+ ld [rSVBK], a
+ jr .asm_17da30
+
+.asm_17da2d
+ call CloseSRAM
+
+.asm_17da30
+ ret
+; 17da31
+
+Function17da31: ; 17da31
+ call Function17e415
+ ld de, $c708
+ ld bc, $4
+ call CopyBytes
+ call Function17e41e
+ ld a, [$c709]
+ push af
+ cp $c0
+ jr c, .asm_17da4f
+ ld a, [$c70a]
+ ld [rSVBK], a
+ jr .asm_17da55
+
+.asm_17da4f
+ ld a, [$c70a]
+ call GetSRAMBank
+
+.asm_17da55
+ ld a, [$c708]
+ ld e, a
+ ld a, [$c709]
+ ld d, a
+ ld a, [$c70b]
+ ld c, a
+ bit 7, c
+ jr nz, .asm_17da70
+ ld hl, Unknown_17da8c
+ ld b, $0
+ add hl, bc
+ ld a, [de]
+ or [hl]
+ ld [de], a
+ jr .asm_17da7d
+
+.asm_17da70
+ ld hl, Unknown_17da94
+ ld a, c
+ and $7f
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [de]
+ and [hl]
+ ld [de], a
+
+.asm_17da7d
+ pop af
+ cp $c0
+ jr c, .asm_17da88
+ ld a, $4
+ ld [rSVBK], a
+ jr .asm_17da8b
+
+.asm_17da88
+ call CloseSRAM
+
+.asm_17da8b
+ ret
+; 17da8c
+
+Unknown_17da8c:
+x = 0
+ rept 8
+ db 1 << x
+x = x + 1
+ endr
+
+Unknown_17da94:
+x = 0
+ rept 8
+ db (1 << x) ^ $ff
+x = x + 1
+ endr
+; 17da9c
+
+Function17da9c: ; 17da9c
+ ld a, [wcd31]
+ dec a
+ jr z, .asm_17dabd
+ push af
+ call Function17e566
+ pop af
+ ld [wcd31], a
+ ld hl, wcd24
+ ld a, [wcd2e]
+ sub [hl]
+ ld [wcd2e], a
+ call Function17e55b
+ call Function17e5af
+.asm_17daba
+ jp Function17e415
+
+.asm_17dabd
+ ld a, [wcd2f]
+ and a
+ jr z, .asm_17daba
+ ld hl, wcd24
+ sub [hl]
+ ld [wcd2f], a
+ ld a, [wcd2e]
+ sub [hl]
+ ld [wcd2e], a
+ call Function17e451
+ call Function17e55b
+ call Function17e5af
+ jr .asm_17daba
+; 17dadc
+
+Function17dadc: ; 17dadc
+ ld a, [wcd2e]
+ ld hl, wcd24
+ add [hl]
+ ld hl, wcd42
+ cp [hl]
+ jr z, .asm_17db0e
+ jr nc, .asm_17db0e
+ ld hl, wcd31
+ ld a, [wcd2b]
+ cp [hl]
+ jr z, .asm_17db11
+ call Function17e566
+ ld a, [wcd31]
+ inc a
+ ld [wcd31], a
+ ld hl, wcd24
+ ld a, [wcd2e]
+ add [hl]
+ ld [wcd2e], a
+ call Function17e55b
+ call Function17e5af
+
+.asm_17db0e
+ jp Function17e415
+
+.asm_17db11
+ ld hl, wcd24
+ ld a, [wcd2f]
+ add [hl]
+ ld [wcd2f], a
+ ld a, [wcd2e]
+ add [hl]
+ ld [wcd2e], a
+ call Function17e451
+ call Function17e55b
+ call Function17e5af
+ jr .asm_17db0e
+; 17db2d
+
+Function17db2d: ; 17db2d
+ ld a, [wcd30]
+ ld hl, wcd24
+ cp [hl]
+ jr z, .asm_17db53
+ ld hl, wcd42
+ ld a, [wcd2e]
+ inc a
+ cp [hl]
+ jr z, .asm_17db53
+ ld [wcd2e], a
+ call Function17e566
+ ld a, [wcd30]
+ inc a
+ ld [wcd30], a
+ call Function17e55b
+ call Function17e5af
+
+.asm_17db53
+ jp Function17e415
+; 17db56
+
+Function17db56: ; 17db56
+ ld a, [wcd30]
+ cp $1
+ jr z, .asm_17db74
+ call Function17e566
+ ld a, [wcd30]
+ dec a
+ ld [wcd30], a
+ ld a, [wcd2e]
+ dec a
+ ld [wcd2e], a
+ call Function17e55b
+ call Function17e5af
+
+.asm_17db74
+ jp Function17e415
+; 17db77
+
+Function17db77: ; 17db77
+ ld hl, wcd2d
+ ld a, [wcd2f]
+ add [hl]
+ ld hl, wcd42
+ cp [hl]
+ jr z, .asm_17dbae
+ jr nc, .asm_17dbae
+ call Function17e566
+ ld hl, wcd2d
+ ld a, [wcd2f]
+ add [hl]
+ ld [wcd2f], a
+ ld a, [wcd2e]
+ add [hl]
+ ld hl, wcd42
+ cp [hl]
+ jr c, .asm_17db9f
+ ld a, [hl]
+ dec a
+
+.asm_17db9f
+ ld [wcd2e], a
+ call Function17dbb1
+ call Function17e451
+ call Function17e55b
+ call Function17e5af
+
+.asm_17dbae
+ jp Function17e415
+; 17dbb1
+
+Function17dbb1: ; 17dbb1
+ ld hl, wcd2f
+ ld a, [wcd42]
+ sub [hl]
+ ld hl, wcd2d
+ cp [hl]
+ ret nc
+ ld a, $1
+ ld [wcd30], a
+ ld [wcd31], a
+ ld a, [wcd24]
+ ld c, a
+ ld a, [wcd24]
+ ld b, a
+ ld a, [wcd2e]
+ ld hl, wcd2f
+ sub [hl]
+.asm_17dbd4
+ and a
+ ret z
+ push af
+ ld hl, wcd30
+ ld a, b
+ cp [hl]
+ jr nz, .asm_17dbe4
+ ld a, $1
+ ld [hl], a
+ ld hl, wcd31
+
+.asm_17dbe4
+ inc [hl]
+ pop af
+ dec a
+ jr .asm_17dbd4
+; 17dbe9
+
+Function17dbe9: ; 17dbe9
+ ld hl, wcd2d
+ ld a, [wcd2f]
+ sub [hl]
+ bit 7, a
+ jr z, .asm_17dbf5
+ xor a
+
+.asm_17dbf5
+ ld [wcd2f], a
+ ld a, [wcd30]
+ dec a
+ ld c, a
+ ld a, [wcd31]
+ ld b, a
+ xor a
+ ld hl, wcd24
+.asm_17dc05
+ dec b
+ jr z, .asm_17dc0b
+ add [hl]
+ jr .asm_17dc05
+
+.asm_17dc0b
+ add c
+ ld hl, wcd2f
+ add [hl]
+ ld [wcd2e], a
+ call Function17e451
+ call Function17e55b
+ call Function17e5af
+ jp Function17e415
+; 17dc1f
+
+Function17dc1f: ; 17dc1f
+ call Function17e415
+ ld de, $c688
+ ld bc, $6
+ call CopyBytes
+ call Function17e32b
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld hl, $c688
+ ld a, $40
+ ld [$c708], a
+ ld a, [hli]
+ ld [$c70a], a
+ add $5
+ ld [$c70c], a
+ ld a, [hli]
+ ld [$c709], a
+ add $4
+ ld [$c70b], a
+ ld a, $96
+ ld [$c70d], a
+ ld a, $5c
+ ld [$c70e], a
+ ld a, $1
+ ld [$c70f], a
+ ld hl, $c708
+ call LoadMenuDataHeader
+ call VerticalMenu
+ jr nc, .asm_17dc6e
+ ld a, $2
+ ld [wMenuCursorY], a
+
+.asm_17dc6e
+ call CloseWindow
+ pop af
+ ld [rSVBK], a
+ ld a, [wMenuCursorY]
+ cp $1
+ jr nz, .asm_17dc85
+ ld a, [$c68a]
+ ld l, a
+ ld a, [$c68a + 1]
+ ld h, a
+ jr .asm_17dc8d
+
+.asm_17dc85
+ ld a, [$c68a + 2]
+ ld l, a
+ ld a, [$c68a + 3]
+ ld h, a
+
+.asm_17dc8d
+ push hl
+ call Function17e349
+ pop hl
+ call Function17e40f
+ ret
+; 17dc96
+
+MenuData2_17dc96:
+ db $e0 ; flags
+ db 2
+ db "はい@"
+ db "いいえ@"
+; 17dc9f
+
+Function17dc9f: ; 17dc9f
+ call Function17e415
+ call Function17e41e
+ call RotateFourPalettesLeft
+ ret
+; 17dca9
+
+Function17dca9: ; 17dca9
+ call Function17e415
+ call Function17e41e
+
+Function17dcaf:
+ ld a, $5
+ ld [rSVBK], a
+ ld hl, UnknBGPals
+ ld de, $8
+ ld c, $8
+.asm_17dcbb
+ push hl
+ ld a, $ff
+ ld [hli], a
+ ld a, $7f
+ ld [hl], a
+ pop hl
+ add hl, de
+ dec c
+ jr nz, .asm_17dcbb
+ call RotateThreePalettesRight
+ ld a, $4
+ ld [rSVBK], a
+ ret
+; 17dccf
+
+Function17dccf: ; 17dccf
+ call Function17e415
+ push hl
+ ld a, [wcd4b]
+ ld l, a
+ ld a, [wcd4c]
+ ld h, a
+ ld a, [wcd2e]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ ld b, a
+ call Function17e43d
+ call Function17e41e
+.asm_17dced
+ ld a, [wcd78]
+ ld l, a
+ ld a, [wcd79]
+ ld h, a
+ ld a, [hl]
+ cp $ff
+ jr z, .asm_17dd0d
+.crash_loop
+ cp $31
+ jr nc, .crash_loop
+ call Function17d711
+ ld a, [wcd77]
+ bit 7, a
+ jr nz, .asm_17dd0d
+ and a
+ jr z, .asm_17dd11
+ jr .asm_17dced
+
+.asm_17dd0d
+ pop hl
+ jp Function17e41e
+
+.asm_17dd11
+ pop hl
+ ret
+; 17dd13
+
+Function17dd13: ; 17dd13
+ call Function17e415
+ ld a, [hli]
+ ld c, a
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ call Function17e41e
+ call Function17e447
+ push hl
+ hlcoord 0, 0
+ add hl, bc
+ push hl
+ pop bc
+ pop hl
+ call PlaceHLTextAtBC
+ ret
+; 17dd30
+
+Function17dd30: ; 17dd30
+ call Function17e415
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld c, a
+ ld b, $0
+ ld a, [hli]
+ push af
+ call Function17e41e
+ pop af
+ hlcoord 0, 0
+ add hl, de
+ call Function17e600
+ ret
+; 17dd49
+
+Function17dd49: ; 17dd49
+ call Function17e415
+ ld de, $c708
+ ld bc, $a
+ call CopyBytes
+ ld a, [$c711]
+ ld c, a
+ ld b, $0
+ call CopyBytes
+ ld a, [$c70a]
+ cp $c0
+ jr c, .sram
+ ld a, [$c708]
+ ld [rSVBK], a
+ jr .got_bank
+
+.sram
+ ld a, [$c708]
+ call GetSRAMBank
+
+.got_bank
+ ld a, [$c709]
+ ld l, a
+ ld a, [$c70a]
+ ld h, a
+ ld de, $c688
+ ld a, [$c711]
+ ld c, a
+ ld b, $0
+ call CopyBytes
+ ld a, [$c70a]
+ cp $c0
+ jr c, .close_sram
+ ld a, $4
+ ld [rSVBK], a
+ jr .exited_bank
+
+.close_sram
+ call CloseSRAM
+
+.exited_bank
+ ld a, [$c711]
+ ld c, a
+ ld hl, $c712
+ ld de, $c688
+.loop
+ ld a, [de]
+ inc de
+ cp [hl]
+ inc hl
+ jr z, .next
+ jr c, .load
+ jr .load2
+
+.next
+ dec c
+ jr nz, .loop
+ ld a, [$c70d]
+ ld l, a
+ ld a, [$c70e]
+ ld h, a
+ jr .done
+
+.load2
+ ld a, [$c70f]
+ ld l, a
+ ld a, [$c710]
+ ld h, a
+ jr .done
+
+.load
+ ld a, [$c70b]
+ ld l, a
+ ld a, [$c70c]
+ ld h, a
+
+.done
+ call Function17e40f
+ ret
+; 17ddcd
+
+Function17ddcd: ; 17ddcd
+ call Function17e415
+ ld de, $c708
+ ld bc, $8
+ call CopyBytes
+ ld a, [$c70a]
+ cp $c0
+ jr c, .asm_17dde7
+ ld a, [$c708]
+ ld [rSVBK], a
+ jr .asm_17dded
+
+.asm_17dde7
+ ld a, [$c708]
+ call GetSRAMBank
+
+.asm_17dded
+ ld a, [$c709]
+ ld e, a
+ ld a, [$c70a]
+ ld d, a
+ ld a, [de]
+ ld [$c710], a
+ ld a, [$c70b]
+ ld c, a
+ ld b, $0
+ ld a, [$c70a]
+ cp $c0
+ jr c, .asm_17de0c
+ ld a, $4
+ ld [rSVBK], a
+ jr .asm_17de0f
+
+.asm_17de0c
+ call CloseSRAM
+
+.asm_17de0f
+ push hl
+ ld hl, Unknown_17da8c
+ add hl, bc
+ ld a, [hl]
+ ld hl, $c710
+ and [hl]
+ pop hl
+ jr nz, .asm_17de26
+ ld a, [$c70e]
+ ld l, a
+ ld a, [$c70f]
+ ld h, a
+ jr .asm_17de2e
+
+.asm_17de26
+ ld a, [$c70c]
+ ld l, a
+ ld a, [$c70d]
+ ld h, a
+
+.asm_17de2e
+ call Function17e40f
+ ret
+; 17de32
+
+Function17de32: ; 17de32
+ call Function17e415
+ ld de, $c708
+ ld bc, $9
+ call CopyBytes
+ ld a, [$c710]
+ ld c, a
+ ld b, $0
+ call CopyBytes
+ ld a, $6
+ call GetSRAMBank
+ call Function17f4f6
+ ld a, [$c708]
+ ld e, a
+ ld a, [$c709]
+ ld d, a
+ add hl, de
+ ld e, l
+ ld d, h
+ ld a, [$c710]
+ ld c, a
+ ld hl, $c711
+.asm_17de61
+ ld a, [de]
+ inc de
+ cp [hl]
+ inc hl
+ jr z, .asm_17de6b
+ jr c, .asm_17de82
+ jr .asm_17de78
+
+.asm_17de6b
+ dec c
+ jr nz, .asm_17de61
+ ld a, [$c70c]
+ ld l, a
+ ld a, [$c70d]
+ ld h, a
+ jr .asm_17de8a
+
+.asm_17de78
+ ld a, [$c70e]
+ ld l, a
+ ld a, [$c70f]
+ ld h, a
+ jr .asm_17de8a
+
+.asm_17de82
+ ld a, [$c70a]
+ ld l, a
+ ld a, [$c70b]
+ ld h, a
+
+.asm_17de8a
+ call CloseSRAM
+ call Function17e40f
+ ret
+; 17de91
+
+Function17de91: ; 17de91
+ call Function17e415
+ ld de, $c708
+ ld bc, $7
+ call CopyBytes
+ ld a, $6
+ call GetSRAMBank
+ call Function17f4f6
+ ld a, [$c708]
+ ld e, a
+ ld a, [$c709]
+ ld d, a
+ add hl, de
+ ld e, l
+ ld d, h
+ ld a, [$c70a]
+ ld c, a
+ ld b, $0
+ ld hl, Unknown_17da8c
+ add hl, bc
+ ld a, [hl]
+ ld l, e
+ ld h, d
+ and [hl]
+ jr nz, .asm_17deca
+ ld a, [$c70d]
+ ld l, a
+ ld a, [$c70e]
+ ld h, a
+ jr .asm_17ded2
+
+.asm_17deca
+ ld a, [$c70b]
+ ld l, a
+ ld a, [$c70c]
+ ld h, a
+
+.asm_17ded2
+ call CloseSRAM
+ call Function17e40f
+ ret
+; 17ded9
+
+Function17ded9: ; 17ded9
+ call Function17e415
+ ld de, $c708
+ ld bc, $1f
+ call CopyBytes
+ call Function17e32b
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld hl, $c708
+ ld a, [hli]
+ ld [CurPartySpecies], a
+ ld [TempEnemyMonSpecies], a
+ ld a, [hli]
+ ld [CurPartyLevel], a
+ ld a, [hli]
+ ld b, a
+ ld a, [PartyCount]
+ cp $6
+ jp nc, Function17e026
+ xor a
+ ld [MonType], a
+ push hl
+ push bc
+ predef TryAddMonToParty
+ farcall SetCaughtData
+ pop bc
+ pop hl
+ bit 1, b
+ jr z, .asm_17df33
+ push bc
+ push hl
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMonNicknames
+ call SkipNames
+ ld d, h
+ ld e, l
+ pop hl
+ call CopyBytes
+ pop bc
+ jr .asm_17df37
+
+.asm_17df33
+ ld de, $6
+ add hl, de
+
+.asm_17df37
+ bit 2, b
+ jr z, .asm_17df5a
+ push bc
+ push hl
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMonOT
+ call SkipNames
+ ld d, h
+ ld e, l
+ pop hl
+ call CopyBytes
+ ld a, [hli]
+ ld b, a
+ push hl
+ farcall SetGiftPartyMonCaughtData
+ pop hl
+ pop bc
+ jr .asm_17df5e
+
+.asm_17df5a
+ ld de, $7
+ add hl, de
+
+.asm_17df5e
+ bit 3, b
+ jr z, .asm_17df79
+ push bc
+ push hl
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1ID
+ call GetPartyLocation
+ ld d, h
+ ld e, l
+ pop hl
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ pop bc
+ jr .asm_17df7b
+
+.asm_17df79
+ inc hl
+ inc hl
+
+.asm_17df7b
+ bit 4, b
+ jr z, .asm_17dfd0
+ push bc
+ push hl
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1DVs
+ call GetPartyLocation
+ ld d, h
+ ld e, l
+ pop hl
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ push hl
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1Species
+ call GetPartyLocation
+ ld a, [hl]
+ ld [CurSpecies], a
+ call GetBaseData
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1MaxHP
+ call GetPartyLocation
+ ld d, h
+ ld e, l
+ push hl
+ ld b, $0
+ farcall CalcPkmnStats
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1HP
+ call GetPartyLocation
+ ld d, h
+ ld e, l
+ pop hl
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hl]
+ ld [de], a
+ pop hl
+ pop bc
+ jr .asm_17dfd2
+
+.asm_17dfd0
+ inc hl
+ inc hl
+
+.asm_17dfd2
+ bit 5, b
+ jr z, .asm_17dfea
+ push bc
+ push hl
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1Item
+ call GetPartyLocation
+ ld d, h
+ ld e, l
+ pop hl
+ ld a, [hli]
+ ld [de], a
+ pop bc
+ jr .asm_17dfeb
+
+.asm_17dfea
+ inc hl
+
+.asm_17dfeb
+ bit 6, b
+ jr z, .asm_17e01f
+ push bc
+ push hl
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1Moves
+ call GetPartyLocation
+ ld d, h
+ ld e, l
+ pop hl
+ push de
+ ld bc, $4
+ call CopyBytes
+ pop de
+ push hl
+ push de
+ ld a, [PartyCount]
+ dec a
+ ld hl, PartyMon1PP
+ call GetPartyLocation
+ ld d, h
+ ld e, l
+ pop hl
+ predef FillPP
+ pop hl
+ pop bc
+ jp asm_17e0ee
+
+.asm_17e01f
+ ld de, $4
+ add hl, de
+ jp asm_17e0ee
+; 17e026
+
+Function17e026: ; 17e026
+ ld a, BANK(sBoxCount)
+ call GetSRAMBank
+ ld a, [sBoxCount]
+ call CloseSRAM
+ cp $14
+ jp nc, .asm_17e0ea
+ bit 0, b
+ jp z, .asm_17e0ea
+ push bc
+ push hl
+ farcall LoadEnemyMon
+ farcall SentPkmnIntoBox
+ farcall SetBoxMonCaughtData
+ pop hl
+ pop bc
+ ld a, BANK(sBoxMonNicknames)
+ call GetSRAMBank
+ bit 1, b
+ jr z, .asm_17e067
+ push bc
+ ld bc, $b
+ ld de, sBoxMonNicknames
+ call CopyBytes
+ pop bc
+ jr .asm_17e06b
+
+.asm_17e067
+ ld de, $6
+ add hl, de
+
+.asm_17e06b
+ bit 2, b
+ jr z, .asm_17e08e
+ push bc
+ ld bc, $6
+ ld de, sBoxMonOT
+ call CopyBytes
+ ld a, [hli]
+ ld b, a
+ push hl
+ call CloseSRAM
+ farcall SetGiftBoxMonCaughtData
+ ld a, $1
+ call GetSRAMBank
+ pop hl
+ pop bc
+ jr .asm_17e092
+
+.asm_17e08e
+ ld de, $7
+ add hl, de
+
+.asm_17e092
+ bit 3, b
+ jr z, .asm_17e0a2
+ push bc
+ ld de, sBoxMon1ID
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ pop bc
+ jr .asm_17e0a4
+
+.asm_17e0a2
+ inc hl
+ inc hl
+
+.asm_17e0a4
+ bit 4, b
+ jr z, .asm_17e0b4
+ push bc
+ ld de, sBoxMon1DVs
+ ld a, [hli]
+ ld [de], a
+ inc de
+ ld a, [hli]
+ ld [de], a
+ pop bc
+ jr .asm_17e0b6
+
+.asm_17e0b4
+ inc hl
+ inc hl
+
+.asm_17e0b6
+ bit 5, b
+ ld a, [hli]
+ jr z, .asm_17e0be
+ ld [sBoxMon1Item], a
+
+.asm_17e0be
+ bit 6, b
+ jr z, .asm_17e0e1
+ push bc
+ ld de, sBoxMon1Moves
+ ld bc, $4
+ call CopyBytes
+ push hl
+ ld hl, sBoxMon1Moves
+ ld de, sBoxMon1PP
+ predef FillPP
+ call CloseSRAM
+ pop hl
+ pop bc
+ inc hl
+ inc hl
+ jr asm_17e0ee
+
+.asm_17e0e1
+ call CloseSRAM
+ ld de, $6
+ add hl, de
+ jr asm_17e0ee
+
+.asm_17e0ea
+ ld bc, $1a
+ add hl, bc
+
+asm_17e0ee
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ pop af
+ ld [rSVBK], a
+ push hl
+ call Function17e349
+ pop hl
+ call Function17e40f
+ ret
+; 17e0fd
+
+Function17e0fd: ; 17e0fd
+ call Function17e415
+ ld de, $c708
+ ld bc, $6
+ call CopyBytes
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld hl, $c708
+ ld a, [hli]
+ ld [CurItem], a
+ ld a, [hli]
+ ld [wItemQuantityChangeBuffer], a
+ push hl
+ ld hl, NumItems
+ call ReceiveItem
+ pop hl
+ jr c, .asm_17e127
+ inc hl
+ inc hl
+
+.asm_17e127
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld h, a
+ ld l, b
+ pop af
+ ld [rSVBK], a
+ call Function17e40f
+ ret
+; 17e133
+
+Function17e133: ; 17e133
+ call Function17e415
+ ld de, $c708
+ ld bc, $5
+ call CopyBytes
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld hl, $c708
+ ld a, [hli]
+ ld [ScriptVar], a
+ push hl
+ farcall MobileCheckOwnMonAnywhere
+ pop hl
+ jr c, .asm_17e159
+ inc hl
+ inc hl
+
+.asm_17e159
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld h, a
+ ld l, b
+ pop af
+ ld [rSVBK], a
+ call Function17e40f
+ ret
+; 17e165
+
+Function17e165: ; 17e165
+ call Function17e415
+ ld de, $c708
+ ld bc, $5
+ call CopyBytes
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ ld hl, $c708
+ ld a, [hli]
+ ld [CurItem], a
+ push hl
+ ld hl, NumItems
+ call CheckItem
+ pop hl
+ jr c, .asm_17e195
+ push hl
+ ld hl, PCItems
+ call CheckItem
+ pop hl
+ jr c, .asm_17e195
+ inc hl
+ inc hl
+
+.asm_17e195
+ ld a, [hli]
+ ld b, a
+ ld a, [hl]
+ ld h, a
+ ld l, b
+ pop af
+ ld [rSVBK], a
+ call Function17e40f
+ ret
+; 17e1a1
+
+Function17e1a1: ; 17e1a1
+ call Function17e415
+ ld de, $c708
+ ld bc, $d
+ call CopyBytes
+ ld a, [$c70a]
+ cp $c0
+ jr c, .asm_17e1bb
+ ld a, [$c708]
+ ld [rSVBK], a
+ jr .asm_17e1c1
+
+.asm_17e1bb
+ ld a, [$c708]
+ call GetSRAMBank
+
+.asm_17e1c1
+ ld a, [$c709]
+ ld l, a
+ ld a, [$c70a]
+ ld h, a
+ ld de, $c608
+ ld a, [$c70b]
+ ld c, a
+ ld b, $0
+ call CopyBytes
+ ld a, [$c70a]
+ cp $c0
+ jr c, .asm_17e1e2
+ ld a, $4
+ ld [rSVBK], a
+ jr .asm_17e1e5
+
+.asm_17e1e2
+ call CloseSRAM
+
+.asm_17e1e5
+ ld a, [$c70e]
+ cp $c0
+ jr c, .asm_17e1f3
+ ld a, [$c70c]
+ ld [rSVBK], a
+ jr .asm_17e1f9
+
+.asm_17e1f3
+ ld a, [$c70c]
+ call GetSRAMBank
+
+.asm_17e1f9
+ ld a, [$c70d]
+ ld l, a
+ ld a, [$c70e]
+ ld h, a
+ ld de, $c688
+ ld a, [$c70b]
+ ld c, a
+ ld b, $0
+ call CopyBytes
+ ld a, [$c70e]
+ cp $c0
+ jr c, .asm_17e21a
+ ld a, $4
+ ld [rSVBK], a
+ jr .asm_17e21d
+
+.asm_17e21a
+ call CloseSRAM
+
+.asm_17e21d
+ ld a, [$c70b]
+ ld c, a
+ ld hl, $c688
+ ld de, $c608
+.asm_17e227
+ ld a, [de]
+ inc de
+ cp [hl]
+ inc hl
+ jr z, .asm_17e231
+ jr c, .asm_17e23e
+ jr .asm_17e248
+
+.asm_17e231
+ dec c
+ jr nz, .asm_17e227
+ ld a, [$c711]
+ ld l, a
+ ld a, [$c712]
+ ld h, a
+ jr .asm_17e250
+
+.asm_17e23e
+ ld a, [$c70f]
+ ld l, a
+ ld a, [$c710]
+ ld h, a
+ jr .asm_17e250
+
+.asm_17e248
+ ld a, [$c712 + 1]
+ ld l, a
+ ld a, [$c712 + 2]
+ ld h, a
+
+.asm_17e250
+ call Function17e40f
+ ret
+; 17e254
+
+Function17e254: ; 17e254
+ call Function17e415
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld [de], a
+ call Function17e41e
+ ret
+; 17e261
+
+Function17e261: ; 17e261
+ call Function17e415
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [de]
+ add [hl]
+ ld [de], a
+ inc hl
+ call Function17e41e
+ ret
+; 17e270
+
+Function17e270: ; 17e270
+ call Function17e415
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [de]
+ sub [hl]
+ ld [de], a
+ inc hl
+ call Function17e41e
+ ret
+; 17e27f
+
+Function17e27f: ; 17e27f
+ call Function17e415
+ 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 Function17e41e
+ ld l, c
+ ld h, b
+ ld a, [de]
+ add [hl]
+ ld [de], a
+ ret
+; 17e293
+
+Function17e293: ; 17e293
+ call Function17e415
+ 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 Function17e41e
+ ld l, c
+ ld h, b
+ ld a, [de]
+ sub [hl]
+ ld [de], a
+ ret
+; 17e2a7
+
+Function17e2a7: ; 17e2a7
+ call Function17e415
+ call Function17e41e
+ call Function17e32b
+ xor a
+ ld [wcf66], a
+ farcall Function118233
+ ld de, GFX_17eb7e
+ ld hl, VTiles2 tile $60
+ lb bc, BANK(GFX_17eb7e), 1
+ call Get2bpp
+ ld a, [wc300]
+ and a
+ jr z, .asm_17e2d8
+ cp $a
+ jr z, .asm_17e2f7
+ cp $b
+ jr z, .asm_17e300
+ call Function17e309
+ ret
+
+.asm_17e2d8
+ call Function17d60b
+ call Function17e349
+ xor a
+ ld [wcd7a], a
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $aa73
+ ld de, $aa7f
+ ld bc, $c
+ call CopyBytes
+ call CloseSRAM
+ ret
+
+.asm_17e2f7
+ call Function17e349
+ ld a, $1
+ ld [wcd7a], a
+ ret
+
+.asm_17e300
+ call Function17e349
+ ld a, $2
+ ld [wcd7a], a
+ ret
+; 17e309
+
+Function17e309: ; 17e309
+ ld a, $2
+ ld [wc303], a
+ call Function17dcaf
+ call ClearScreen
+ call Function17e349
+ call Function17d5f6
+ farcall DisplayMobileError
+ call Function17e349
+ call Function17dcaf
+ xor a
+ ld [wcd77], a
+ ret
+; 17e32b
+
+Function17e32b: ; 17e32b
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $c608
+ ld de, $b0b1
+ ld bc, $40
+ call CopyBytes
+ ld hl, BGMapBuffer
+ ld bc, $5b
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 17e349
+
+Function17e349: ; 17e349
+ ld a, $5
+ call GetSRAMBank
+ ld hl, $b0b1
+ ld de, $c608
+ ld bc, $40
+ call CopyBytes
+ ld de, BGMapBuffer
+ ld bc, $5b
+ call CopyBytes
+ call CloseSRAM
+ ret
+; 17e367
+
+Function17e367: ; 17e367
+ call Function17e415
+ call Function17e41e
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ farcall SaveGameData_
+ pop af
+ ld [rSVBK], a
+ ret
+; 17e37e
+
+Function17e37e: ; 17e37e
+ call Function17e415
+ call Function17e41e
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ farcall SaveAfterLinkTrade
+ pop af
+ ld [rSVBK], a
+ ret
+; 17e395
+
+Function17e395: ; 17e395
+ call Function17e415
+ call Function17e41e
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ farcall SaveBox
+ pop af
+ ld [rSVBK], a
+ ret
+; 17e3ac
+
+Function17e3ac: ; 17e3ac
+ call Function17e415
+ call Function17e41e
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ farcall SaveChecksum
+ pop af
+ ld [rSVBK], a
+ ret
+; 17e3c3
+
+Function17e3c3: ; 17e3c3
+ call Function17e415
+ call Function17e41e
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+ farcall UpdateTrainerRankingsChecksum2
+ farcall BackupMobileEventIndex
+ pop af
+ ld [rSVBK], a
+ ret
+; 17e3e0
+
+Function17e3e0: ; 17e3e0
+ call Function17e415
+ ld a, [hli]
+ ld c, a
+ call Function17e41e
+ ld a, $1
+ ld [hBGMapMode], a
+ call DelayFrames
+ ret
+; 17e3f0
+
+Function17e3f0: ; 17e3f0
+ call Function17e415
+ call Function17e41e
+.asm_17e3f6
+ call JoyTextDelay
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and $1
+ ret nz
+ ld a, [hl]
+ and $2
+ ret nz
+ call WaitBGMap
+ jr .asm_17e3f6
+; 17e409
+
+Function17e409: ; 17e409
+ ld hl, wcd77
+ set 7, [hl]
+ ret
+; 17e40f
+
+Function17e40f: ; 17e40f
+ ld de, UnknBGPals
+ add hl, de
+ jr Function17e41e
+
+Function17e415:
+ ld a, [wcd78]
+ ld l, a
+ ld a, [wcd79]
+ ld h, a
+ inc hl
+
+Function17e41e:
+ ld a, l
+ ld [wcd78], a
+ ld a, h
+ ld [wcd79], a
+ ret
+; 17e427
+
+Function17e427: ; 17e427
+ ld hl, hJoyPressed
+ ld a, [hl]
+ and $1
+ jr nz, .asm_17e432
+ and $2
+ ret z
+
+.asm_17e432
+ ld a, $3
+ ld [wcd77], a
+ ret
+; 17e438
+
+Function17e438: ; 17e438
+ ld hl, wcd77
+ inc [hl]
+ ret
+; 17e43d
+
+Function17e43d: ; 17e43d
+ ld a, [BGMapBuffer]
+ ld l, a
+ ld a, [wcd21]
+ ld h, a
+ add hl, bc
+ ret
+; 17e447
+
+Function17e447: ; 17e447
+ ld a, [BGMapBuffer]
+ ld l, a
+ ld a, [wcd21]
+ ld h, a
+ add hl, de
+ ret
+; 17e451
+
+Function17e451: ; 17e451
+ ld a, [wcd42]
+ and a
+ ret z
+ call Function17e51b
+ call Function17e4dd
+ ld a, [wcd2e]
+ push af
+ ld a, [wcd49]
+ ld l, a
+ ld a, [wcd4a]
+ ld h, a
+ ld a, [wcd2f]
+ ld [wcd2e], a
+ ld c, a
+ ld b, $0
+ add hl, bc
+ add hl, bc
+ push hl
+ hlcoord 0, 0
+ ld bc, $14
+ ld a, [wcd23]
+ call AddNTimes
+ ld a, [CreditsTimer]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ pop bc
+ ld a, [wMobileCommsJumptableIndex]
+.asm_17e48b
+ push af
+ push hl
+ ld a, [wcd24]
+.asm_17e490
+ push af
+ push hl
+ ld a, [bc]
+ inc bc
+ ld e, a
+ ld a, [bc]
+ inc bc
+ ld d, a
+ push bc
+ push hl
+ ld a, [BGMapBuffer]
+ ld l, a
+ ld a, [wcd21]
+ ld h, a
+ add hl, de
+ push hl
+ pop de
+ pop hl
+ call PlaceString
+ pop bc
+ pop hl
+ ld a, [wcd26]
+ ld e, a
+ ld d, $0
+ add hl, de
+ ld a, [wcd2e]
+ inc a
+ ld [wcd2e], a
+ ld e, a
+ ld a, [wcd42]
+ cp e
+ jr z, .asm_17e4d5
+ pop af
+ dec a
+ jr nz, .asm_17e490
+ pop hl
+ ld a, [wcd27]
+ ld de, $14
+.asm_17e4cb
+ add hl, de
+ dec a
+ jr nz, .asm_17e4cb
+ pop af
+ dec a
+ jr nz, .asm_17e48b
+ jr .asm_17e4d8
+
+.asm_17e4d5
+ pop af
+ pop hl
+ pop af
+
+.asm_17e4d8
+ pop af
+ ld [wcd2e], a
+ ret
+; 17e4dd
+
+Function17e4dd: ; 17e4dd
+ ld a, [wcd2c]
+ and $1
+ ret z
+ ld a, [wcd29]
+ hlcoord 0, 0
+ ld bc, $14
+ call AddNTimes
+ ld a, [wcd28]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [wcd2f]
+ and a
+ jr z, .asm_17e4ff
+ ld a, $61
+ ld [hl], a
+
+.asm_17e4ff
+ ld a, [wcd2a]
+ ld bc, $14
+ call AddNTimes
+ ld a, [wcd42]
+ ld c, a
+ ld a, [wcd2e]
+ ld b, a
+ ld a, [wcd24]
+ add b
+ cp c
+ ret z
+ ret nc
+ ld a, $ee
+ ld [hl], a
+ ret
+; 17e51b
+
+Function17e51b: ; 17e51b
+ ld a, [wcd28]
+ ld hl, CreditsTimer
+ sub [hl]
+ inc a
+ ld [wcd4f], a
+ hlcoord 0, 0
+ ld bc, $14
+ ld a, [wcd23]
+ dec a
+ call AddNTimes
+ ld a, [CreditsTimer]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [wMobileCommsJumptableIndex]
+ ld c, a
+ ld a, [wcd27]
+ call SimpleMultiply
+.asm_17e544
+ push af
+ push hl
+ ld a, [wcd4f]
+ ld c, a
+ ld b, $0
+ ld a, $7f
+ call ByteFill
+ pop hl
+ ld bc, $14
+ add hl, bc
+ pop af
+ dec a
+ jr nz, .asm_17e544
+ ret
+; 17e55b
+
+Function17e55b: ; 17e55b
+ ld a, [wcd42]
+ and a
+ ret z
+ ld a, $ed
+ call Function17e571
+ ret
+; 17e566
+
+Function17e566: ; 17e566
+ ld a, [wcd42]
+ and a
+ ret z
+ ld a, $7f
+ call Function17e571
+ ret
+; 17e571
+
+Function17e571: ; 17e571
+ push af
+ hlcoord 0, 0
+ ld bc, $14
+ ld a, [wcd23]
+ call AddNTimes
+ ld a, [CreditsTimer]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ dec hl
+ push hl
+ ld a, [wcd31]
+ dec a
+ ld c, a
+ ld a, [wcd27]
+ call SimpleMultiply
+ ld l, $0
+ ld h, l
+ ld bc, $14
+ call AddNTimes
+ ld a, [wcd30]
+ dec a
+ ld c, a
+ ld a, [wcd26]
+ call SimpleMultiply
+ ld c, a
+ ld b, $0
+ add hl, bc
+ pop bc
+ add hl, bc
+ pop af
+ ld [hl], a
+ ret
+; 17e5af
+
+Function17e5af: ; 17e5af
+ ld a, [wcd2c]
+ and $2
+ ret z
+ ld a, [wcd43]
+ ld l, a
+ ld a, [wMobileInactivityTimerMinutes]
+ ld h, a
+ bccoord 0, 0
+ add hl, bc
+ ld bc, $ffec
+ add hl, bc
+ ld a, [wMobileInactivityTimerSeconds]
+ ld c, a
+ ld b, $0
+ ld a, [wMobileInactivityTimerFrames]
+ call Function17e600
+ ld a, [wcd2e]
+ ld c, a
+ ld b, $0
+ ld a, [wcd4d]
+ ld l, a
+ ld a, [wcd4e]
+ ld h, a
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [BGMapBuffer]
+ ld l, a
+ ld a, [wcd21]
+ ld h, a
+ add hl, de
+ push hl
+ pop de
+ ld a, [wcd43]
+ ld l, a
+ ld a, [wMobileInactivityTimerMinutes]
+ ld h, a
+ bccoord 0, 0
+ add hl, bc
+ call PlaceString
+ ret
+; 17e600
+
+Function17e600: ; 17e600
+.asm_17e600
+ push af
+ push hl
+ push bc
+ ld a, $7f
+ call ByteFill
+ pop bc
+ pop hl
+ ld de, $14
+ add hl, de
+ pop af
+ dec a
+ jr nz, .asm_17e600
+ ret
+; 17e613
+
+Function17e613: ; 17e613
+ push hl
+ hlcoord 0, 0
+ ld bc, $14
+ ld a, [de]
+ inc de
+ push af
+ ld a, [de]
+ inc de
+ and a
+.asm_17e620
+ jr z, .asm_17e626
+ add hl, bc
+ dec a
+ jr .asm_17e620
+
+.asm_17e626
+ pop af
+ ld c, a
+ ld b, $0
+ add hl, bc
+ push hl
+ ld a, [wcd53]
+ ld [hli], a
+ ld a, [de]
+ inc de
+ dec a
+ dec a
+ jr z, .asm_17e63f
+ ld c, a
+ ld a, [wcd53]
+ inc a
+.asm_17e63b
+ ld [hli], a
+ dec c
+ jr nz, .asm_17e63b
+
+.asm_17e63f
+ ld a, [wcd53]
+ add $2
+ ld [hl], a
+ pop hl
+ ld bc, $14
+ add hl, bc
+ ld a, [de]
+ dec de
+ dec a
+ dec a
+ jr z, .asm_17e674
+ ld b, a
+.asm_17e651
+ push hl
+ ld a, [wcd53]
+ add $3
+ ld [hli], a
+ ld a, [de]
+ dec a
+ dec a
+ jr z, .asm_17e664
+ ld c, a
+ ld a, $7f
+.asm_17e660
+ ld [hli], a
+ dec c
+ jr nz, .asm_17e660
+
+.asm_17e664
+ ld a, [wcd53]
+ add $4
+ ld [hl], a
+ pop hl
+ push bc
+ ld bc, $14
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, .asm_17e651
+
+.asm_17e674
+ ld a, [wcd53]
+ add $5
+ ld [hli], a
+ ld a, [de]
+ dec a
+ dec a
+ jr z, .asm_17e689
+ ld c, a
+ ld a, [wcd53]
+ add $6
+.asm_17e685
+ ld [hli], a
+ dec c
+ jr nz, .asm_17e685
+
+.asm_17e689
+ ld a, [wcd53]
+ add $7
+ ld [hl], a
+ pop hl
+ ret
+; 17e691
+
+Function17e691: ; 17e691
+ push hl
+ ld hl, NULL
+ ld bc, $14
+ ld a, [de]
+ inc de
+ push af
+ ld a, [de]
+ inc de
+ inc de
+ and a
+.asm_17e69f
+ jr z, .asm_17e6a5
+ add hl, bc
+ dec a
+ jr .asm_17e69f
+
+.asm_17e6a5
+ pop af
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [de]
+ dec de
+.asm_17e6ac
+ push af
+ push hl
+ ld a, [de]
+.asm_17e6af
+ push af
+ push hl
+ push hl
+ bccoord 0, 0
+ add hl, bc
+ ld a, [hl]
+ cp $7f
+ jr z, .asm_17e6c2
+ ld a, [wcd53]
+ add $8
+ jr .asm_17e6c7
+
+.asm_17e6c2
+ ld a, [wcd53]
+ jr .asm_17e6c7
+
+.asm_17e6c7
+ pop hl
+ bccoord 0, 0, AttrMap
+ add hl, bc
+ ld [hl], a
+ pop hl
+ inc hl
+ pop af
+ dec a
+ jr nz, .asm_17e6af
+ pop hl
+ ld bc, $14
+ add hl, bc
+ pop af
+ dec a
+ jr nz, .asm_17e6ac
+ pop hl
+ ret
+; 17e6de
+
+Function17e6de: ; 17e6de
+ push af
+ ld a, [$c708]
+ ld l, a
+ ld a, [$c709]
+ ld h, a
+ decoord 0, 0, AttrMap
+ add hl, de
+ pop af
+ ld b, $7
+.asm_17e6ee
+ push hl
+ ld c, $7
+.asm_17e6f1
+ ld [hli], a
+ dec c
+ jr nz, .asm_17e6f1
+ pop hl
+ ld de, $14
+ add hl, de
+ dec b
+ jr nz, .asm_17e6ee
+ ret
+; 17e6fe
+
+
+PokemonNewsGFX: ; 17e6fe
+INCBIN "gfx/mobile/pokemon_news.2bpp"
+
+GFX_17eb7e:
+INCBIN "gfx/unknown/17eb7e.2bpp"
+
+TileAttrmap_17eb8e:
+INCBIN "gfx/unknown/17eb8e.attrmap"
+
+Palette_17eff6:
+ RGB 24, 9, 8
+ RGB 4, 9, 18
+ RGB 18, 18, 12
+ RGB 0, 0, 0
+ RGB 24, 24, 18
+ RGB 18, 18, 12
+ RGB 4, 9, 18
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 23, 11, 10
+ RGB 13, 6, 5
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 15, 25, 5
+ RGB 10, 20, 0
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 20, 28, 20
+ RGB 10, 18, 15
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 22, 22, 12
+ RGB 17, 12, 5
+ RGB 0, 0, 0
+ RGB 5, 5, 16
+ RGB 8, 19, 28
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+ RGB 31, 31, 31
+ RGB 27, 24, 0
+ RGB 24, 16, 3
+ RGB 0, 0, 0
+
+
+Function17f036:: ; 17f036
+ ld a, $6
+ call GetSRAMBank
+ inc de
+.asm_17f03c
+ call Function17f047
+ jr c, .asm_17f043
+ jr .asm_17f03c
+
+.asm_17f043
+ call CloseSRAM
+ ret
+; 17f047
+
+Function17f047: ; 17f047
+ ld a, [de]
+ inc de
+ cp $50
+ jr z, .finished
+ cp $10
+ jr nc, .finished
+ dec a
+ push de
+ ld e, a
+ ld d, 0
+ ld hl, .Jumptable
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld h, [hl]
+ ld l, a
+ jp hl
+
+.finished
+ scf
+ ret
+; 17f061
+
+.Jumptable: ; 17f061
+ dw Function17f081 ; 0
+ dw Function17f0f8 ; 1
+ dw Function17f154 ; 2
+ dw Function17f181 ; 3
+ dw Function17f1d0 ; 4
+ dw Function17f220 ; 5
+ dw Function17f27b ; 6
+ dw Function17f2cb ; 7
+ dw Function17f2ff ; 8
+ dw Function17f334 ; 9
+ dw Function17f382 ; a
+ dw Function17f3c9 ; b
+ dw Function17f3f0 ; c
+ dw Function17f41d ; d
+ dw Function17f44f ; e
+ dw Function17f44f ; f
+; 17f081
+
+Function17f081: ; 17f081
+ pop hl
+ call Function17f524
+ jr c, .asm_17f09f
+ ld de, 4
+ add hl, de
+ ld a, [hli]
+ inc hl
+ inc hl
+ ld e, l
+ ld d, h
+ ld l, c
+ ld h, b
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [de]
+ cp $50
+ jr z, .asm_17f09d
+ and a
+ ret
+
+.asm_17f09d
+ scf
+ ret
+
+.asm_17f09f
+ push bc
+ ld de, wcd54
+ ld bc, 7
+ call CopyBytes
+ pop bc
+ push hl
+ push bc
+ call Function17f4f6
+ pop bc
+ ld a, [wcd54]
+ ld e, a
+ ld a, [wcd55]
+ ld d, a
+ add hl, de
+ ld e, l
+ ld d, h
+ ld l, c
+ ld h, b
+ push hl
+ ld a, [wcd56]
+ ld b, a
+ ld a, [wcd57]
+ ld c, a
+ call MobilePrintNum
+ ld a, l
+ ld [wcd52], a
+ ld a, h
+ ld [wcd53], a
+ ld a, [wcd59]
+ and a
+ jr z, .asm_17f0ee
+ ld c, a
+ ld a, [wcd57]
+ inc a
+ ld b, a
+ ld e, l
+ ld d, h
+ dec de
+.asm_17f0e0
+ ld a, c
+ cp b
+ jr z, .asm_17f0ea
+ ld a, [de]
+ dec de
+ ld [hld], a
+ dec b
+ jr .asm_17f0e0
+
+.asm_17f0ea
+ ld a, [wcd5a]
+ ld [hl], a
+
+.asm_17f0ee
+ pop hl
+ ld a, [wcd58]
+ call Function17f50f
+ pop de
+ and a
+ ret
+; 17f0f8
+
+Function17f0f8: ; 17f0f8
+ pop hl
+ call Function17f524
+ jr c, .asm_17f114
+ ld de, $3
+ add hl, de
+ ld a, [hli]
+ ld e, l
+ ld d, h
+ ld l, c
+ ld h, b
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [de]
+ cp $50
+ jr z, .asm_17f112
+ and a
+ ret
+
+.asm_17f112
+ scf
+ ret
+
+.asm_17f114
+ push bc
+ ld de, wcd54
+ ld bc, $4
+ call CopyBytes
+ pop bc
+ push hl
+ push bc
+ call Function17f4f6
+ ld a, [wcd54]
+ ld e, a
+ ld a, [wcd55]
+ ld d, a
+ add hl, de
+ ld de, $c608
+ ld a, [wcd56]
+ ld c, a
+ ld b, $0
+ call CopyBytes
+ ld a, $50
+ ld [de], a
+ pop hl
+ ld de, $c608
+ call PlaceString
+ ld a, c
+ ld [wcd52], a
+ ld a, b
+ ld [wcd53], a
+ ld a, [wcd57]
+ call Function17f50f
+ pop de
+ and a
+ ret
+; 17f154
+
+Function17f154: ; 17f154
+ pop hl
+ call Function17f524
+ jr c, .asm_17f167
+ inc hl
+ inc hl
+ ld e, l
+ ld d, h
+ ld a, [de]
+ cp $50
+ jr z, .asm_17f165
+ and a
+ ret
+
+.asm_17f165
+ scf
+ ret
+
+.asm_17f167
+ push bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ pop bc
+ push hl
+ push bc
+ call Function17f4f6
+ add hl, de
+ ld c, l
+ ld b, h
+ pop de
+ farcall Function11c08f
+ ld c, l
+ ld b, h
+ pop de
+ and a
+ ret
+; 17f181
+
+Function17f181: ; 17f181
+ pop hl
+ call Function17f524
+ jr c, .asm_17f19d
+ ld de, $2
+ add hl, de
+ ld a, [hli]
+ ld e, l
+ ld d, h
+ ld l, c
+ ld h, b
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [de]
+ cp $50
+ jr z, .asm_17f19b
+ and a
+ ret
+
+.asm_17f19b
+ scf
+ ret
+
+.asm_17f19d
+ push bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld [wcd54], a
+ pop bc
+ push hl
+ push bc
+ call Function17f4f6
+ add hl, de
+ ld a, [hl]
+ ld c, a
+ ld de, $c608
+ farcall Function48c63
+ pop hl
+ ld de, $c608
+ call PlaceString
+ ld a, c
+ ld [wcd52], a
+ ld a, b
+ ld [wcd53], a
+ ld a, [wcd54]
+ call Function17f50f
+ pop de
+ and a
+ ret
+; 17f1d0
+
+Function17f1d0: ; 17f1d0
+ pop hl
+ call Function17f524
+ jr c, .asm_17f1ec
+ ld de, $2
+ add hl, de
+ ld a, [hli]
+ ld e, l
+ ld d, h
+ ld l, c
+ ld h, b
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [de]
+ cp $50
+ jr z, .asm_17f1ea
+ and a
+ ret
+
+.asm_17f1ea
+ scf
+ ret
+
+.asm_17f1ec
+ push bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld [wcd54], a
+ pop bc
+ push hl
+ push bc
+ call Function17f4f6
+ add hl, de
+ ld a, [hl]
+ ld a, $1
+ ld [rSVBK], a
+ ld [wd265], a
+ call GetPokemonName
+ pop hl
+ call PlaceString
+ ld a, c
+ ld [wcd52], a
+ ld a, b
+ ld [wcd53], a
+ ld a, $4
+ ld [rSVBK], a
+ ld a, [wcd54]
+ call Function17f50f
+ pop de
+ and a
+ ret
+; 17f220
+
+Function17f220: ; 17f220
+ pop hl
+ call Function17f524
+ jr c, .asm_17f23c
+ ld de, $2
+ add hl, de
+ ld a, [hli]
+ ld e, l
+ ld d, h
+ ld l, c
+ ld h, b
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [de]
+ cp $50
+ jr z, .asm_17f23a
+ and a
+ ret
+
+.asm_17f23a
+ scf
+ ret
+
+.asm_17f23c
+ push bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld [wcd54], a
+ pop bc
+ push hl
+ push bc
+ call Function17f4f6
+ add hl, de
+ ld a, [hl]
+ ld e, a
+ ld d, 0
+ ld hl, .Genders
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ pop hl
+ call PlaceString
+ ld a, c
+ ld [wcd52], a
+ ld a, b
+ ld [wcd53], a
+ ld a, [wcd54]
+ call Function17f50f
+ pop de
+ and a
+ ret
+; 17f26e
+
+.Genders: dw .Boy, .Girl
+.Boy: db "Boy@"
+.Girl: db "Girl@"
+
+Function17f27b: ; 17f27b
+ pop hl
+ call Function17f524
+ jr c, .asm_17f297
+ ld de, $2
+ add hl, de
+ ld a, [hli]
+ ld e, l
+ ld d, h
+ ld l, c
+ ld h, b
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld a, [de]
+ cp $50
+ jr z, .asm_17f295
+ and a
+ ret
+
+.asm_17f295
+ scf
+ ret
+
+.asm_17f297
+ push bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [hli]
+ ld [wcd54], a
+ pop bc
+ push hl
+ push bc
+ call Function17f4f6
+ add hl, de
+ ld a, [hl]
+ ld a, $1
+ ld [rSVBK], a
+ ld [wd265], a
+ call GetItemName
+ pop hl
+ call PlaceString
+ ld a, c
+ ld [wcd52], a
+ ld a, b
+ ld [wcd53], a
+ ld a, $4
+ ld [rSVBK], a
+ ld a, [wcd54]
+ call Function17f50f
+ pop de
+ and a
+ ret
+; 17f2cb
+
+Function17f2cb: ; 17f2cb
+ pop hl
+ push bc
+ ld a, [hli]
+ ld [wcd54], a
+ ld a, [hli]
+ ld [wcd55], a
+ ld a, [wcd2e]
+ inc a
+ ld [wcd56], a
+ pop bc
+ push hl
+ ld l, c
+ ld h, b
+ push hl
+ ld de, wcd56
+ ld b, $1
+ ld a, [wcd54]
+ ld c, a
+ call MobilePrintNum
+ ld a, l
+ ld [wcd52], a
+ ld a, h
+ ld [wcd53], a
+ pop hl
+ ld a, [wcd55]
+ call Function17f50f
+ pop de
+ and a
+ ret
+; 17f2ff
+
+Function17f2ff: ; 17f2ff
+ pop hl
+ push bc
+ ld a, [hli]
+ ld [wcd54], a
+ pop bc
+ push hl
+ push bc
+ ld a, $1
+ ld [rSVBK], a
+ ld hl, PlayerName
+ ld de, $c608
+ ld bc, $6
+ call CopyBytes
+ ld a, $4
+ ld [rSVBK], a
+ pop hl
+ ld de, $c608
+ call PlaceString
+ ld a, c
+ ld [wcd52], a
+ ld a, b
+ ld [wcd53], a
+ ld a, [wcd54]
+ call Function17f50f
+ pop de
+ and a
+ ret
+; 17f334
+
+Function17f334: ; 17f334
+ pop hl
+ push bc
+ ld a, [hli]
+ ld [wcd55], a
+ and $f
+ ld [wcd54], a
+ pop bc
+ push hl
+ ld l, c
+ ld h, b
+ push hl
+ ld a, [wcd55]
+ bit 7, a
+ jr nz, .asm_17f355
+ ld a, BANK(sCrystalData)
+ call GetSRAMBank
+ ld a, [sCrystalData + 2]
+ jr .asm_17f35d
+
+.asm_17f355
+ ld a, $5
+ call GetSRAMBank
+ ld a, [$b2f3]
+
+.asm_17f35d
+ ld c, a
+ call CloseSRAM
+ ld de, $c608
+ farcall Function48c63
+ pop hl
+ ld de, $c608
+ call PlaceString
+ ld a, c
+ ld [wcd52], a
+ ld a, b
+ ld [wcd53], a
+ ld a, [wcd54]
+ call Function17f50f
+ pop de
+ and a
+ ret
+; 17f382
+
+Function17f382: ; 17f382
+ pop hl
+ push bc
+ ld a, [hli]
+ ld [wcd55], a
+ and $f
+ ld [wcd54], a
+ pop bc
+ push hl
+ push bc
+ ld l, c
+ ld h, b
+ ld a, [wcd55]
+ bit 7, a
+ jr nz, .asm_17f3a3
+ ld a, BANK(sCrystalData)
+ call GetSRAMBank
+ ld de, sCrystalData + 3
+ jr .asm_17f3ab
+
+.asm_17f3a3
+ ld a, $5
+ call GetSRAMBank
+ ld de, $b2f4
+
+.asm_17f3ab
+ ld a, PRINTNUM_LEADINGZEROS | 2
+ ld b, a
+ ld a, 3
+ ld c, a
+ call PrintNum
+ call CloseSRAM
+ ld a, l
+ ld [wcd52], a
+ ld a, h
+ ld [wcd53], a
+ pop hl
+ ld a, [wcd54]
+ call Function17f50f
+ pop de
+ and a
+ ret
+; 17f3c9
+
+Function17f3c9: ; 17f3c9
+ push bc
+ ld hl, wcd36
+ ld de, $c708
+ ld bc, 12
+ call CopyBytes
+ pop de
+ ld c, $0
+ farcall Function11c075
+ push hl
+ ld hl, $c708
+ ld de, wcd36
+ ld bc, $c
+ call CopyBytes
+ pop bc
+ pop de
+ and a
+ ret
+; 17f3f0
+
+Function17f3f0: ; 17f3f0
+ pop hl
+ push hl
+ ld a, [hli]
+ push af
+ push bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld a, [de]
+ ld c, a
+ ld b, $0
+ add hl, bc
+ add hl, bc
+ ld a, [hli]
+ ld e, a
+ ld a, [hli]
+ ld d, a
+ ld hl, UnknBGPals
+ add hl, de
+ ld e, l
+ ld d, h
+ pop hl
+ call PlaceString
+ pop af
+ ld e, a
+ ld d, $0
+ pop hl
+ add hl, de
+ add hl, de
+ inc hl
+ inc hl
+ inc hl
+ ld e, l
+ ld d, h
+ ld l, c
+ ld h, b
+ scf
+ ret
+; 17f41d
+
+Function17f41d: ; 17f41d
+ pop hl
+ ld a, [hli]
+ push hl
+ push af
+ ld l, c
+ ld h, b
+ ld bc, -TileMap + $10000
+ add hl, bc
+ ld de, -SCREEN_WIDTH
+ ld c, $1
+.asm_17f42c
+ ld a, h
+ and a
+ jr nz, .asm_17f435
+ ld a, l
+ cp SCREEN_WIDTH
+ jr c, .asm_17f439
+
+.asm_17f435
+ add hl, de
+ inc c
+ jr .asm_17f42c
+
+.asm_17f439
+ hlcoord 0, 0
+ ld de, SCREEN_WIDTH
+ ld a, c
+.asm_17f440
+ and a
+ jr z, .asm_17f447
+ add hl, de
+ dec a
+ jr .asm_17f440
+
+.asm_17f447
+ pop af
+ ld e, a
+ ld d, 0
+ add hl, de
+ pop de
+ and a
+ ret
+; 17f44f
+
+Function17f44f: ; 17f44f
+ pop hl
+ call Function17f524
+ jr c, .asm_17f46d
+ ld de, $5
+ add hl, de
+ ld a, [hli]
+ inc hl
+ inc hl
+ ld e, l
+ ld d, h
+ ld l, c
+ ld h, b
+ ld c, a
+ ld b, 0
+ add hl, bc
+ ld a, [de]
+ cp $50
+ jr z, .asm_17f46b
+ and a
+ ret
+
+.asm_17f46b
+ scf
+ ret
+
+.asm_17f46d
+ push bc
+ ld de, wcd54
+ ld bc, $8
+ call CopyBytes
+ pop bc
+ push hl
+ push bc
+ ld a, [wcd56]
+ cp $c0
+ jr c, .asm_17f488
+ ld a, [wcd54]
+ ld [rSVBK], a
+ jr .asm_17f48e
+
+.asm_17f488
+ ld a, [wcd54]
+ call GetSRAMBank
+
+.asm_17f48e
+ ld a, [wcd55]
+ ld l, a
+ ld a, [wcd56]
+ ld h, a
+ ld de, $c608
+ ld a, [wcd57]
+ ld c, a
+ ld b, $0
+ call CopyBytes
+ ld a, [wcd56]
+ cp $c0
+ jr c, .asm_17f4af
+ ld a, $4
+ ld [rSVBK], a
+ jr .asm_17f4b7
+
+.asm_17f4af
+ call CloseSRAM
+ ld a, $6
+ call GetSRAMBank
+
+.asm_17f4b7
+ ld de, $c608
+ pop hl
+ push hl
+ ld a, [wcd57]
+ ld b, a
+ ld a, [wcd58]
+ ld c, a
+ call MobilePrintNum
+ ld a, l
+ ld [wcd52], a
+ ld a, h
+ ld [wcd53], a
+ ld a, [wcd5a]
+ and a
+ jr z, .asm_17f4ec
+ ld c, a
+ ld a, [wcd58]
+ inc a
+ ld b, a
+ ld e, l
+ ld d, h
+ dec de
+.asm_17f4de
+ ld a, c
+ cp b
+ jr z, .asm_17f4e8
+ ld a, [de]
+ dec de
+ ld [hld], a
+ dec b
+ jr .asm_17f4de
+
+.asm_17f4e8
+ ld a, [wcd5b]
+ ld [hl], a
+
+.asm_17f4ec
+ pop hl
+ ld a, [wcd59]
+ call Function17f50f
+ pop de
+ and a
+ ret
+; 17f4f6
+
+Function17f4f6: ; 17f4f6
+ ld a, [wcd6a]
+ ld l, a
+ ld a, [wcd6b]
+ ld h, a
+ ld a, [wcd47]
+ ld c, a
+ ld a, [BGMapPalBuffer]
+ ld b, a
+ ld a, [wcd2e]
+.asm_17f509
+ and a
+ ret z
+ dec a
+ add hl, bc
+ jr .asm_17f509
+; 17f50f
+
+Function17f50f: ; 17f50f
+ and a
+ jr z, .asm_17f519
+ ld c, a
+ ld b, $0
+ add hl, bc
+ ld c, l
+ ld b, h
+ ret
+
+.asm_17f519
+ ld a, [wcd52]
+ ld c, a
+ ld l, a
+ ld a, [wcd53]
+ ld b, a
+ ld h, a
+ ret
+; 17f524
+
+Function17f524: ; 17f524
+ push hl
+ push bc
+ push de
+ ld a, [wcd42]
+ dec a
+ ld b, a
+ ld a, [wcd2e]
+ cp b
+ jr z, .asm_17f53a
+ ld hl, wcd68
+ cp [hl]
+.asm_17f536
+ pop de
+ pop bc
+ pop hl
+ ret
+
+.asm_17f53a
+ scf
+ jr .asm_17f536
+; 17f53d
+
+BattleTowerMobileError: ; 17f53d
+ call FadeToMenu
+ xor a
+ ld [wc303], a
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+
+ call DisplayMobileError
+
+ pop af
+ ld [rSVBK], a
+ call ExitAllMenus
+ ret
+; 17f555
+
+DisplayMobileError: ; 17f555
+.loop
+ call JoyTextDelay
+ call .RunJumptable
+ ld a, [wc303]
+ bit 7, a
+ jr nz, .quit
+ farcall HDMATransferAttrMapAndTileMapToWRAMBank3
+ jr .loop
+
+.quit
+ call .deinit
+ ret
+
+.deinit
+ ld a, [wc300]
+ cp $22
+ jr z, .asm_17f597
+ cp $31
+ jr z, .asm_17f58a
+ cp $33
+ ret nz
+ ld a, [wc301]
+ cp $1
+ ret nz
+ ld a, [wc302]
+ cp $2
+ ret nz
+ jr .asm_17f5a1
+
+.asm_17f58a
+ ld a, [wc301]
+ cp $3
+ ret nz
+ ld a, [wc302]
+ and a
+ ret nz
+ jr .asm_17f5a1
+
+.asm_17f597
+ ld a, [wc301]
+ and a
+ ret nz
+ ld a, [wc302]
+ and a
+ ret nz
+
+.asm_17f5a1
+ ld a, BANK(sMobileLoginPassword)
+ call GetSRAMBank
+ xor a
+ ld [sMobileLoginPassword], a
+ call CloseSRAM
+ ret
+; 17f5ae
+
+.RunJumptable: ; 17f5ae
+ jumptable .Jumptable, wc303
+; 17f5bd
+
+.Jumptable: ; 17f5bd
+ dw Function17f5c3
+ dw Function17ff23
+ dw Function17f5d2
+; 17f5c3
+
+Function17f5c3: ; 17f5c3
+ call Function17f5e4
+ farcall FinishExitMenu
+ ld a, $1
+ ld [wc303], a
+ ret
+; 17f5d2
+
+Function17f5d2: ; 17f5d2
+ call Function17f5e4
+ farcall HDMATransferAttrMapAndTileMapToWRAMBank3
+ call SetPalettes
+ ld a, $1
+ ld [wc303], a
+ ret
+; 17f5e4
+
+Function17f5e4: ; 17f5e4
+ ld a, $8
+ ld [MusicFade], a
+ ld de, MUSIC_NONE
+ ld a, e
+ ld [MusicFadeID], a
+ ld a, d
+ ld [MusicFadeID + 1], a
+ ld a, " "
+ hlcoord 0, 0
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call ByteFill
+ ld a, $6
+ hlcoord 0, 0, AttrMap
+ ld bc, SCREEN_WIDTH * SCREEN_HEIGHT
+ call ByteFill
+ hlcoord 2, 1
+ ld b, $1
+ ld c, $e
+ call Function3eea
+ hlcoord 1, 4
+ ld b, $c
+ ld c, $10
+ call Function3eea
+ hlcoord 3, 2
+ ld de, String_17f6dc
+ call PlaceString
+ call Function17ff3c
+ jr nc, .asm_17f632
+ hlcoord 11, 2
+ call Function17f6b7
+
+.asm_17f632
+ ld a, [wc300]
+ cp $d0
+ jr nc, .asm_17f684
+ cp $10
+ jr c, .asm_17f679
+ sub $10
+ cp $24
+ jr nc, .asm_17f679
+ ld e, a
+ ld d, $0
+ ld hl, Table_17f706
+ add hl, de
+ add hl, de
+ ld a, [wc301]
+ ld e, a
+ ld a, [wc302]
+ ld d, a
+ ld a, [hli]
+ ld c, a
+ ld a, [hl]
+ ld h, a
+ ld l, c
+ ld a, [hli]
+ and a
+ jr z, .asm_17f679
+ ld c, a
+.asm_17f65d
+ ld a, [hli]
+ ld b, a
+ ld a, [hli]
+ cp $ff
+ jr nz, .asm_17f667
+ cp b
+ jr z, .asm_17f66e
+
+.asm_17f667
+ xor d
+ jr nz, .asm_17f674
+ ld a, b
+ xor e
+ jr nz, .asm_17f674
+
+.asm_17f66e
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ jr .asm_17f67d
+
+.asm_17f674
+ inc hl
+ inc hl
+ dec c
+ jr nz, .asm_17f65d
+
+.asm_17f679
+ ld a, $d9
+ jr .asm_17f684
+
+.asm_17f67d
+ hlcoord 2, 6
+ call PlaceString
+ ret
+
+.asm_17f684
+ sub $d0
+ ld e, a
+ ld d, 0
+ ld hl, Table_17f699
+ add hl, de
+ add hl, de
+ ld a, [hli]
+ ld e, a
+ ld a, [hl]
+ ld d, a
+ hlcoord 2, 6
+ call PlaceString
+ ret
+; 17f699
+
+Table_17f699: ; 17f699
+ dw String_17fedf
+ dw String_17fdd9
+ dw String_17fdd9
+ dw String_17fe03
+ dw String_17fd84
+ dw String_17fe63
+ dw String_17fdb2
+ dw String_17fe4b
+ dw String_17fe03
+ dw String_17fe03
+ dw String_17fe03
+; 17f6af
+
+Palette_17f6af: ; 17f6af
+ RGB 5, 5, 16
+ RGB 8, 19, 28
+ RGB 0, 0, 0
+ RGB 31, 31, 31
+; 17f6b7
+
+Function17f6b7: ; 17f6b7
+ ld a, [wc300]
+ call .bcd_two_digits
+ inc hl
+ ld a, [wc302]
+ and $f
+ call .bcd_digit
+ ld a, [wc301]
+ call .bcd_two_digits
+ ret
+; 17f6cd
+
+.bcd_two_digits ; 17f6cd
+ ld c, a
+ and $f0
+ swap a
+ call .bcd_digit
+ ld a, c
+ and $f
+
+.bcd_digit ; 17f6d8
+ add "0"
+ ld [hli], a
+ ret
+; 17f6dc
+
+String_17f6dc: ; 17f6dc
+ db "つうしんエラー ー@"
+; 17f6e8
+
+String_17f6e8: ; 17f6e8
+ db "みていぎ", $25, "エラーです"
+ next "プログラム", $1f
+ next "かくにん してください"
+ db "@"
+; 17f706
+
+Table_17f706:
+ dw Unknown_17f74e
+ dw Unknown_17f753
+ dw Unknown_17f758
+ dw Unknown_17f75d
+ dw Unknown_17f762
+ dw Unknown_17f767
+ dw Unknown_17f778
+ dw Unknown_17f77d
+ dw Unknown_17f782
+ dw Unknown_17f782
+ dw Unknown_17f782
+ dw Unknown_17f782
+ dw Unknown_17f782
+ dw Unknown_17f782
+ dw Unknown_17f782
+ dw Unknown_17f782
+ dw Unknown_17f782
+ dw Unknown_17f787
+ dw Unknown_17f78c
+ dw Unknown_17f791
+ dw Unknown_17f796
+ dw Unknown_17f79b
+ dw Unknown_17f7a0
+ dw Unknown_17f7a5
+ dw Unknown_17f7a5
+ dw Unknown_17f7a5
+ dw Unknown_17f7a5
+ dw Unknown_17f7a5
+ dw Unknown_17f7a5
+ dw Unknown_17f7a5
+ dw Unknown_17f7a5
+ dw Unknown_17f7a5
+ dw Unknown_17f7a5
+ dw Unknown_17f7ea
+ dw Unknown_17f7ff
+ dw Unknown_17f844
+
+Unknown_17f74e: db 1
+ dbbw $0, $0, String_17f891
+
+Unknown_17f753: db 1
+ dbbw $0, $0, String_17f8d1
+
+Unknown_17f758: db 1
+ dbbw $0, $0, String_17f913
+
+Unknown_17f75d: db 1
+ dbbw $0, $0, String_17f8d1
+
+Unknown_17f762: db 1
+ dbbw $0, $0, String_17fa71
+
+Unknown_17f767: db 4
+ dbbw $0, $0, String_17f946
+ dbbw $1, $0, String_17f946
+ dbbw $2, $0, String_17f946
+ dbbw $3, $0, String_17f946
+
+Unknown_17f778: db 1
+ dbbw $0, $0, String_17f98e
+
+Unknown_17f77d: db 1
+ dbbw $0, $0, String_17f98e
+
+Unknown_17f782: db 1
+ dbbw $0, $0, String_17f98e
+
+Unknown_17f787: db 1
+ dbbw $0, $0, String_17f98e
+
+Unknown_17f78c: db 1
+ dbbw $0, $0, String_17f9d0
+
+Unknown_17f791: db 1
+ dbbw $0, $0, String_17fa14
+
+Unknown_17f796: db 1
+ dbbw $0, $0, String_17fcbf
+
+Unknown_17f79b: db 1
+ dbbw $0, $0, String_17fa71
+
+Unknown_17f7a0: db 1
+ dbbw $0, $0, String_17fbfe
+
+Unknown_17f7a5: db 17
+ dbbw $0, $0, String_17f98e
+ dbbw $21, $2, String_17fcbf
+ dbbw $21, $4, String_17fcbf
+ dbbw $50, $4, String_17faf9
+ dbbw $51, $4, String_17fcbf
+ dbbw $52, $4, String_17fcbf
+ dbbw $0, $5, String_17f98e
+ dbbw $1, $5, String_17f98e
+ dbbw $2, $5, String_17f98e
+ dbbw $3, $5, String_17f98e
+ dbbw $4, $5, String_17f98e
+ dbbw $50, $5, String_17faf9
+ dbbw $51, $5, String_17faf9
+ dbbw $52, $5, String_17fcbf
+ dbbw $53, $5, String_17faf9
+ dbbw $54, $5, String_17fcbf
+ dbbw $ff, $ff, String_17fcbf
+
+Unknown_17f7ea: db 5
+ dbbw $0, $0, String_17f98e
+ dbbw $2, $0, String_17fb2a
+ dbbw $3, $0, String_17fb6e
+ dbbw $4, $0, String_17f98e
+ dbbw $ff, $ff, String_17fcbf
+
+Unknown_17f7ff: db 17
+ dbbw $0, $0, String_17f98e
+ dbbw $1, $3, String_17f98e
+ dbbw $2, $3, String_17f98e
+ dbbw $0, $4, String_17f98e
+ dbbw $1, $4, String_17f98e
+ dbbw $3, $4, String_17fbb6
+ dbbw $4, $4, String_17fbb6
+ dbbw $5, $4, String_17f98e
+ dbbw $6, $4, String_17f98e
+ dbbw $7, $4, String_17f98e
+ dbbw $8, $4, String_17fbfe
+ dbbw $0, $5, String_17fa49
+ dbbw $1, $5, String_17f98e
+ dbbw $2, $5, String_17fa49
+ dbbw $3, $5, String_17fab0
+ dbbw $4, $5, String_17fa49
+ dbbw $ff, $ff, String_17fa49
+
+Unknown_17f844: db 19
+ dbbw $1, $1, String_17fc3e
+ dbbw $2, $1, String_17fc88
+ dbbw $3, $1, String_17fcff
+ dbbw $4, $1, String_17fd84
+ dbbw $5, $1, String_17fd84
+ dbbw $6, $1, String_17fd47
+ dbbw $1, $2, String_17fb6e
+ dbbw $2, $2, String_17f98e
+ dbbw $3, $2, String_17fd84
+ dbbw $4, $2, String_17f98e
+ dbbw $5, $2, String_17fa49
+ dbbw $6, $2, String_17fd84
+ dbbw $99, $2, String_17fc88
+ dbbw $1, $3, String_17fa49
+ dbbw $1, $4, String_17fa49
+ dbbw $2, $4, String_17fa49
+ dbbw $3, $4, String_17fa49
+ dbbw $4, $4, String_17fa49
+ dbbw $ff, $ff, String_17fa49
+
+String_17f891: ; 17f891
+ db "モバイルアダプタが ただしく"
+ next "さしこまれていません"
+ next "とりあつかいせつめいしょを"
+ next "ごらんのうえ しっかりと"
+ next "さしこんで ください"
+ db "@"
+
+String_17f8d1: ; 17f8d1
+ db "でんわが うまく かけられないか"
+ next "でんわかいせんが こんでいるので"
+ next "つうしん できません"
+ next "しばらく まって"
+ next "かけなおして ください"
+ db "@"
+
+String_17f913: ; 17f913
+ db "でんわかいせんが こんでいるため"
+ next "でんわが かけられません"
+ next "しばらく まって"
+ next "かけなおして ください"
+ db "@"
+
+String_17f946: ; 17f946
+ db "モバイルアダプタの エラーです"
+ next "しばらく まって"
+ next "かけなおして ください"
+ next "なおらない ときは"
+ next "モバイルサポートセンターへ"
+ next "おといあわせください"
+ db "@"
+
+String_17f98e: ; 17f98e
+ db "つうしんエラーです"
+ next "しばらく まって"
+ next "かけなおして ください"
+ next "なおらない ときは"
+ next "モバイルサポートセンターへ"
+ next "おといあわせください"
+ db "@"
+
+String_17f9d0: ; 17f9d0
+ db "ログインパスワードか"
+ next "ログイン アイディーに"
+ next "まちがいがあります"
+ next "パスワードを かくにんして"
+ next "しばらく まって"
+ next "かけなおして ください"
+ db "@"
+
+String_17fa14: ; 17fa14
+ db "でんわが きれました"
+ next "とりあつかいせつめいしょを"
+ next "ごらんのうえ"
+ next "しばらく まって"
+ next "かけなおして ください"
+ db "@"
+
+String_17fa49: ; 17fa49
+ db "モバイルセンターの"
+ next "つうしんエラーです"
+ next "しばらくまって"
+ next "かけなおして ください"
+ db "@"
+
+String_17fa71: ; 17fa71
+ db "モバイルアダプタに"
+ next "とうろくされた じょうほうが"
+ next "ただしく ありません"
+ next "モバイルトレーナーで"
+ next "しょきとうろくを してください"
+ db "@"
+
+String_17fab0: ; 17fab0
+ db "モバイルセンターが"
+ next "こんでいて つながりません"
+ next "しばらくまって"
+ next "かけなおして ください"
+ next "くわしくは とりあつかい"
+ next "せつめいしょを ごらんください"
+ db "@"
+
+String_17faf9: ; 17faf9
+ db "あてさき メールアドレスに"
+ next "まちがいがあります"
+ next "ただしい メールアドレスを"
+ next "いれなおしてください"
+ db "@"
+
+String_17fb2a: ; 17fb2a
+ db "メールアドレスに"
+ next "まちがいが あります"
+ next "とりあつかいせつめいしょを"
+ next "ごらんのうえ"
+ next "モバイルトレーナーで"
+ next "しょきとうろくを してください"
+ db "@"
+
+String_17fb6e: ; 17fb6e
+ db "ログインパスワードに"
+ next "まちがいが あるか"
+ next "モバイルセンターの エラーです"
+ next "パスワードを かくにんして"
+ next "しばらく まって"
+ next "かけなおして ください"
+ db "@"
+
+String_17fbb6: ; 17fbb6
+ db "データの よみこみが できません"
+ next "しばらくまって"
+ next "かけなおして ください"
+ next "なおらない ときは"
+ next "モバイルサポートセンターへ"
+ next "おといあわせください"
+ db "@"
+
+String_17fbfe: ; 17fbfe
+ db "じかんぎれです"
+ next "でんわが きれました"
+ next "でんわを かけなおしてください"
+ next "くわしくは とりあつかい"
+ next "せつめいしょを ごらんください"
+ db "@"
+
+String_17fc3e: ; 17fc3e
+ db "ごりよう りょうきんの "
+ next "おしはらいが おくれたばあいには"
+ next "ごりようが できなくなります"
+ next "くわしくは とりあつかい"
+ next "せつめいしょを ごらんください"
+ db "@"
+
+String_17fc88: ; 17fc88
+ db "おきゃくさまの ごつごうにより"
+ next "ごりようできません"
+ next "くわしくは とりあつかい"
+ next "せつめいしょを ごらんください"
+ db "@"
+
+String_17fcbf: ; 17fcbf
+ db "でんわかいせんが こんでいるか"
+ next "モバイルセンターの エラーで"
+ next "つうしんが できません"
+ next "しばらく まって"
+ next "かけなおして ください"
+ db "@"
+
+String_17fcff: ; 17fcff
+ db "ごりよう りょうきんが"
+ next "じょうげんを こえているため"
+ next "こんげつは ごりようできません"
+ next "くわしくは とりあつかい"
+ next "せつめいしょを ごらんください"
+ db "@"
+
+String_17fd47: ; 17fd47
+ db "げんざい モバイルセンターの"
+ next "てんけんを しているので"
+ next "つうしんが できません"
+ next "しばらく まって"
+ next "かけなおして ください"
+ db "@"
+
+String_17fd84: ; 17fd84
+ db "データの よみこみが できません"
+ next "くわしくは とりあつかい"
+ next "せつめいしょを ごらんください"
+ db "@"
+
+
+String_17fdb2: ; 17fdb2
+ db "3ぷん いじょう なにも"
+ next "にゅうりょく しなかったので"
+ next "でんわが きれました"
+ db "@"
+
+String_17fdd9: ; 17fdd9
+ db "つうしんが うまく"
+ next "できませんでした"
+ next "もういちど はじめから"
+ next "やりなおしてください"
+ db "@"
+
+String_17fe03: ; 17fe03
+ db "データの よみこみが できません"
+ next "しばらくまって"
+ next "かけなおして ください"
+ next "なおらない ときは"
+ next "モバイルサポートセンターへ"
+ next "おといあわせください"
+ db "@"
+
+String_17fe4b: ; 17fe4b
+ db "まちじかんが ながいので"
+ next "でんわが きれました"
+ db "@"
+
+String_17fe63: ; 17fe63
+ db "あいての モバイルアダプタと"
+ next "タイプが ちがいます"
+ next "くわしくは とりあつかい"
+ next "せつめいしょを ごらんください"
+ db "@"
+
+String_17fe9a: ; 17fe9a ; unreferenced
+ db "ポケモンニュースが"
+ next "あたらしくなっているので"
+ next "レポートを おくれません"
+ next "あたらしい ポケモンニュースの"
+ next "よみこみを さきに してください"
+ db "@"
+
+String_17fedf: ; 17fedf
+ db "つうしんの じょうきょうが"
+ next "よくないか かけるあいてが"
+ next "まちがっています"
+ next "もういちど かくにんをして"
+ next "でんわを かけなおして ください"
+ db "@"
+; 17ff23
+
+Function17ff23: ; 17ff23
+ ld a, [hJoyPressed]
+ and a
+ ret z
+ ld a, $8
+ ld [MusicFade], a
+ ld a, [wMapMusic]
+ ld [MusicFadeID], a
+ xor a
+ ld [MusicFadeID + 1], a
+ ld hl, wc303
+ set 7, [hl]
+ ret
+; 17ff3c
+
+Function17ff3c: ; 17ff3c
+ nop
+ ld a, [wc300]
+ cp $d0
+ ret c
+ hlcoord 10, 2
+ ld de, String_17ff68
+ call PlaceString
+ ld a, [wc300]
+ push af
+ sub $d0
+ inc a
+ ld [wc300], a
+ hlcoord 14, 2
+ ld de, wc300
+ lb bc, PRINTNUM_LEADINGZEROS | 1, 3
+ call PrintNum
+ pop af
+ ld [wc300], a
+ and a
+ ret
+; 17ff68
+
+String_17ff68: ; 17ff68
+ db "101@"
+; 17ff6c
diff --git a/mobile/mobile_menu.asm b/mobile/mobile_menu.asm
new file mode 100755
index 000000000..468d77fff
--- /dev/null
+++ b/mobile/mobile_menu.asm
@@ -0,0 +1,879 @@
+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 MobileMenu_InitMenuBuffers
+ ld c, 12
+ call DelayFrames
+ hlcoord 4, 0
+ ld b, 10
+ ld c, 10
+ call Function48cdc
+ hlcoord 6, 2
+ ld de, MobileString1
+ call PlaceString
+ hlcoord 0, 12
+ ld b, 4
+ ld c, SCREEN_HEIGHT
+ call TextBox
+ xor a
+ ld de, String_0x49fe9
+ hlcoord 1, 14
+ call PlaceString
+ call WaitBGMap2
+ call SetPalettes
+ call StaticMenuJoypad
+ ld hl, wMenuCursorY
+ ld b, [hl]
+ push bc
+ jr .check_buttons
+
+.joy_loop
+ call ScrollingMenuJoypad
+ ld hl, wMenuCursorY
+ ld b, [hl]
+ push bc
+
+.check_buttons
+ bit A_BUTTON_F, a
+ jr nz, .a_button
+ bit B_BUTTON_F, a
+ jr nz, .b_button
+ jr .next
+
+.a_button
+ ld hl, wMenuCursorY
+ 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 MenuClickSound
+.b_button
+ pop bc
+ call ClearBGPalettes
+ call ClearTileMap
+ ld a, MUSIC_MAIN_MENU
+ ld [wMapMusic], a
+ ld de, MUSIC_MAIN_MENU
+ call Function4a6c5
+ ret
+
+.next
+ ld hl, wMenuCursorY
+ ld a, [hl]
+ dec a
+ ld hl, MobileStrings2
+ call GetNthString
+ ld d, h
+ ld e, l
+ hlcoord 1, 13
+ ld b, 4
+ ld c, SCREEN_HEIGHT
+ call ClearBox
+ hlcoord 1, 14
+ call PlaceString
+ jp .useless_jump
+
+.useless_jump
+ call MobileMenu_InitMenuBuffers
+ pop bc
+ ld hl, wMenuCursorY
+ ld [hl], b
+ ld b, $a
+ ld c, $1
+ hlcoord 5, 1
+ call ClearBox
+ jp .joy_loop
+; 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
+
+MobileMenu_InitMenuBuffers: ; 4a071 (12:6071)
+ ld hl, w2DMenuCursorInitY
+ ld a, 2
+ ld [hli], a
+ ld a, 5 ; w2DMenuCursorInitX
+ ld [hli], a
+ ld a, 5 ; w2DMenuNumRows
+ ld [hli], a
+ ld a, 1 ; w2DMenuNumCols
+ ld [hli], a
+ ld [hl], $0 ; w2DMenuFlags1
+ set 5, [hl]
+ inc hl
+ xor a ; w2DMenuFlags2
+ ld [hli], a
+ ld a, $20 ; w2DMenuCursorOffsets
+ ld [hli], a
+ ; this is a stupid way to load $c3
+ ld a, A_BUTTON
+ add D_UP
+ add D_DOWN
+ add B_BUTTON
+ ld [hli], a ; wMenuJoypadFilter
+ ld a, 1
+ ld [hli], a ; wMenuCursorY, wMenuCursorX
+ ld [hli], a ; wMenuCursorY, wMenuCursorX
+ ret
+
+Function4a098: ; 4a098 (12:6098)
+ ld a, 2
+ call MenuClickSound
+ call PlaceHollowCursor
+ call WaitBGMap
+ call LoadStandardMenuDataHeader
+ farcall Function89de0
+ call Call_ExitMenu
+ call MG_Mobile_Layout_LoadPals
+ call Function4a485
+ pop bc
+ jp Function49f16
+
+Function4a0b9: ; 4a0b9 (12:60b9)
+ ld a, 2
+ call MenuClickSound
+ pop bc
+ jp Function4a4c4
+
+Function4a0c2: ; 4a0c2 (12:60c2)
+ ld a, 2
+ call MenuClickSound
+ ld a, BANK(sPlayerData)
+ call GetSRAMBank
+ ld hl, sPlayerData + PlayerName - wPlayerData
+ ld de, PlayerName
+ ld bc, NAME_LENGTH_JAPANESE
+ call CopyBytes
+ call CloseSRAM
+ farcall _LoadData
+ ld c, 2
+ call DelayFrames
+ ld c, $1
+ call InitMobileProfile
+ push af
+ call ClearBGPalettes
+ pop af
+ and a
+ jr nz, .skip_save
+ farcall _SaveData
+.skip_save
+ ld c, 5
+ call DelayFrames
+ jr asm_4a111
+
+Function4a100: ; 4a100 (12:6100)
+ ld a, 2
+ call MenuClickSound
+ 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, w2DMenuCursorInitY
+ 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
+ ld [hli], a
+ ld [hli], a
+ 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, [wMenuCursorY]
+ 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
+ farcall Mobile_OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
+ call SetPalettes
+ call StaticMenuJoypad
+ ld hl, wMenuCursorY
+ ld b, [hl]
+ push bc
+ jr asm_4a19d
+
+Function4a195: ; 4a195 (12:6195)
+ call ScrollingMenuJoypad
+ ld hl, wMenuCursorY
+ 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, wMenuCursorY
+ ld a, [hl]
+ cp $1
+ jp z, Function4a20e
+ cp $2
+ jp z, Function4a221
+ ld a, $1
+ call MenuClickSound
+.asm_4a1ba
+ pop bc
+ ret
+.asm_4a1bc
+ ld hl, wMenuCursorY
+ 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, wMenuCursorY
+ 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 MenuClickSound
+ farcall Function1719c8
+ call ClearBGPalettes
+ call DelayFrame
+ jr Function4a239
+
+Function4a221: ; 4a221 (12:6221)
+ ld a, $1
+ call MenuClickSound
+ call Function4a28a
+ jr c, Function4a239
+ call Function4a373
+ ld a, $2
+ ld [wMenuCursorY], 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 PlaceHollowCursor
+ 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
+ farcall Mobile_OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
+ call Function4a118
+ call ScrollingMenuJoypad
+ push af
+ call PlayClickSFX
+ pop af
+ bit B_BUTTON_F, a
+ jr nz, .quit
+ ld a, [wMenuCursorY]
+ cp $2
+ jr z, .DeleteLoginPassword
+ cp $3
+ jr z, .quit
+.asm_4a2df
+ farcall Function11765d
+ call ClearBGPalettes
+ call Call_ExitMenu
+ call LoadFontsExtra
+ scf
+ ret
+
+.DeleteLoginPassword:
+ call PlaceHollowCursor
+ ld hl, UnknownText_0x4a358
+ call PrintText
+ hlcoord 14, 7
+ ld b, 3
+ ld c, 4
+ call TextBox
+ farcall Mobile_OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
+ ld hl, DeletePassword_YesNo_MenuDataHeader
+ call LoadMenuDataHeader
+ call VerticalMenu
+ bit B_BUTTON_F, a
+ jr nz, .dont_delete_password
+ ld a, [wMenuCursorY]
+ cp $2
+ jr z, .dont_delete_password
+ ld a, BANK(sMobileLoginPassword)
+ call GetSRAMBank
+ ld hl, sMobileLoginPassword
+ xor a
+ ld bc, MOBILE_LOGIN_PASSWORD_LENGTH
+ call ByteFill
+ call CloseSRAM
+ ld hl, UnknownText_0x4a35d
+ call PrintText
+ call JoyWaitAorB
+.dont_delete_password
+ call ExitMenu
+.quit
+ call Call_ExitMenu
+ farcall Mobile_OpenAndCloseMenu_HDMATransferTileMapAndAttrMap
+ 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
+
+DeletePassword_YesNo_MenuDataHeader: ; 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, w2DMenuCursorInitY
+ 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
+ ld [hli], a
+ ld [hli], a
+ 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), 13
+ call Get2bpp
+ ret
+
+Function4a492: ; 4a492 (12:6492)
+ call MG_Mobile_Layout00
+ 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
+ farcall 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 WaitBGMap2
+ call SetPalettes
+ call StaticMenuJoypad
+ ld hl, wMenuCursorY
+ ld b, [hl]
+ push bc
+ jr asm_4a54d
+
+Function4a545: ; 4a545 (12:6545)
+ call ScrollingMenuJoypad
+ ld hl, wMenuCursorY
+ 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, wMenuCursorY
+ 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 MenuClickSound
+.asm_4a574
+ pop bc
+ call ClearBGPalettes
+ call ClearTileMap
+ jp Function49f0a
+.asm_4a57e
+ ld hl, wMenuCursorY
+ 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, wMenuCursorY
+ 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, w2DMenuCursorInitY
+ 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
+ ld [hli], a
+ ld [hli], a
+ xor a
+ ld [hli], a
+ ld [hli], a
+ ld [hli], a
+ ret
+
+Function4a6ab: ; 4a6ab (12:66ab)
+ ld a, $2
+ call MenuClickSound
+ call ClearBGPalettes
+ ld b, SCGB_DIPLOMA
+ call GetSGBLayout
+ farcall Function11c1ab
+ pop bc
+ call LoadFontsExtra
+ jp Function4a4c4
+
+Function4a6c5: ; 4a6c5 (12:66c5)
+ ld a, $5
+ ld [MusicFade], a
+ ld a, e
+ ld [MusicFadeID], a
+ ld a, d
+ ld [MusicFadeID + 1], 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, SCREEN_WIDTH
+ add hl, bc
+ pop bc
+ dec b
+ jr nz, Function4a6d8
+ ret
diff --git a/mobile/news/news.asm b/mobile/news/news.asm
new file mode 100644
index 000000000..b95df06aa
--- /dev/null
+++ b/mobile/news/news.asm
@@ -0,0 +1,44 @@
+; http://forums.glitchcity.info/index.php?topic=7509.msg206449#msg206449
+
+ db $cc, $6b, $1e ; XXX
+
+Function1f4003: ; 1f4003
+; XXX
+ ld a, $6
+ call GetSRAMBank
+ ld hl, .news_data
+ ld de, $a000
+ ld bc, $1000
+ call CopyBytes
+ call CloseSRAM
+ ret
+
+.news_data
+INCBIN "mobile/news/news_1.bin"
+
+Function1f4dbe: ; 1f4dbe
+; XXX
+ ld a, $6
+ call GetSRAMBank
+ ld hl, .news_data
+ ld de, $a000
+ ld bc, $1000
+ call CopyBytes
+ call CloseSRAM
+ ret
+
+.news_data
+INCBIN "mobile/news/news_2.bin"
+
+Function1f5d9f: ; 1f5d9f
+ ld a, $6
+ call GetSRAMBank
+ ld hl, .news_data
+ ld de, $a000
+ ld bc, $1000
+ call CopyBytes
+ call CloseSRAM
+ ret
+
+.news_data
+INCBIN "mobile/news/news_3.bin"
diff --git a/mobile/news/news_1.bin b/mobile/news/news_1.bin
new file mode 100644
index 000000000..aa8c73e78
--- /dev/null
+++ b/mobile/news/news_1.bin
Binary files differ
diff --git a/mobile/news/news_2.bin b/mobile/news/news_2.bin
new file mode 100644
index 000000000..511d62cb7
--- /dev/null
+++ b/mobile/news/news_2.bin
Binary files differ
diff --git a/mobile/news/news_3.bin b/mobile/news/news_3.bin
new file mode 100644
index 000000000..f4adbc0db
--- /dev/null
+++ b/mobile/news/news_3.bin
Binary files differ
diff --git a/mobile/print_opp_message.asm b/mobile/print_opp_message.asm
new file mode 100644
index 000000000..612a1b78d
--- /dev/null
+++ b/mobile/print_opp_message.asm
@@ -0,0 +1,30 @@
+Mobile_PrintOpponentBattleMessage: ; 4ea0a
+ ld a, c
+ push af
+ call SpeechTextBox
+ call MobileTextBorder
+ pop af
+ dec a
+ ld bc, $c
+ ld hl, w5_MobileOpponentBattleMessages
+ call AddNTimes
+ ld de, wMobileOpponentBattleMessage
+ ld bc, $c
+ ld a, $5 ; BANK(w5_MobileOpponentBattleMessages)
+ call FarCopyWRAM
+
+ ld a, [rSVBK]
+ push af
+ ld a, $1
+ ld [rSVBK], a
+
+ ld bc, wMobileOpponentBattleMessage
+ decoord 1, 14
+ farcall PrintEZChatBattleMessage
+
+ pop af
+ ld [rSVBK], a
+
+ ld c, 180
+ call DelayFrames
+ ret
diff --git a/mobile/stadium/stadium2_1.bin b/mobile/stadium/stadium2_1.bin
new file mode 100644
index 000000000..155e8bab8
--- /dev/null
+++ b/mobile/stadium/stadium2_1.bin
Binary files differ
diff --git a/mobile/stadium/stadium2_2.bin b/mobile/stadium/stadium2_2.bin
new file mode 100644
index 000000000..2273d94f3
--- /dev/null
+++ b/mobile/stadium/stadium2_2.bin
Binary files differ