summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaul Sander <nintendo6496@googlemail.com>2018-11-30 22:16:04 +0100
committerPaul Sander <nintendo6496@googlemail.com>2018-11-30 22:16:04 +0100
commitfc1fd9c983b0ea35414f699ab6c4b4fdd617e8d0 (patch)
treed1972ab6d6b1ad9ab93bf5bde673a722a3a9f2c7
parent308e60da31388973ac8885127b12db300e21100a (diff)
parent63c205e7d0094756ea851e0aed0852671329905c (diff)
merge upstream
-rw-r--r--asm/berry_pouch.s4
-rw-r--r--asm/crt0.s22
-rw-r--r--asm/fame_checker.s4171
-rw-r--r--asm/help_system.s4
-rw-r--r--asm/item_menu.s14
-rw-r--r--asm/item_pc.s8
-rw-r--r--asm/item_use.s28
-rw-r--r--asm/learn_move.s6
-rw-r--r--asm/list_menu.s4
-rw-r--r--asm/mailbox_pc.s4
-rw-r--r--asm/menu.s8
-rw-r--r--asm/new_game.s2
-rw-r--r--asm/party_menu.s4
-rw-r--r--asm/pokemon_summary_screen.s4
-rw-r--r--asm/shop.s8
-rw-r--r--asm/start_menu.s4
-rw-r--r--asm/teachy_tv.s4
-rw-r--r--asm/tm_case.s4
-rw-r--r--asm/unk_81507FC.s8
-rw-r--r--charmap.txt14
-rw-r--r--common_syms/fame_checker.txt2
-rw-r--r--data/data_83FECCC.s828
-rw-r--r--data/data_845FD54.s686
-rw-r--r--data/event_scripts.s4
-rw-r--r--data/fame_checker/img_845ce00.pngbin0 -> 129 bytes
-rw-r--r--data/fame_checker/img_845cf00.pngbin0 -> 297 bytes
-rw-r--r--data/fame_checker/img_845d100.pngbin0 -> 177 bytes
-rw-r--r--data/fame_checker/img_845d520.pngbin0 -> 726 bytes
-rw-r--r--data/fame_checker/img_845dd40.pngbin0 -> 629 bytes
-rw-r--r--data/fame_checker/img_845e560.pngbin0 -> 517 bytes
-rw-r--r--data/fame_checker/img_845ed80.pngbin0 -> 761 bytes
-rw-r--r--data/fame_checker/pal_845d0e0.pal19
-rw-r--r--data/fame_checker/pal_845d500.pal19
-rw-r--r--data/fame_checker/pal_845dd20.pal19
-rw-r--r--data/fame_checker/pal_845e540.pal19
-rw-r--r--data/fame_checker/pal_845ed60.pal19
-rw-r--r--data/fame_checker/pal_845f580.pal19
-rw-r--r--data/fame_checker/pal_845f5a0.pal19
-rw-r--r--data/fame_checker/pal_845f5c0.pal19
-rw-r--r--data/fame_checker/tilemap_845c600.binbin0 -> 2048 bytes
-rw-r--r--data/graphics.s16
-rw-r--r--data/graphics/fame_checker_bg.pal35
-rw-r--r--data/graphics/fame_checker_bg.pngbin0 -> 906 bytes
-rw-r--r--data/graphics/fame_checker_tilemap2.binbin0 -> 2048 bytes
-rw-r--r--data/graphics/fame_checker_tilemap3.binbin0 -> 2048 bytes
-rw-r--r--data/text/fame_checker.inc1700
-rw-r--r--graphics_file_rules.mk10
-rw-r--r--include/battle_dome_cards.h2
-rw-r--r--include/bg.h6
-rw-r--r--include/event_scripts.h324
-rw-r--r--include/fame_checker.h48
-rw-r--r--include/field_map_obj.h2
-rw-r--r--include/gba/macro.h3
-rw-r--r--include/global.berry.h2
-rw-r--r--include/global.fieldmap.h2
-rw-r--r--include/global.h64
-rw-r--r--include/graphics.h7
-rw-r--r--include/item_menu.h1
-rw-r--r--include/list_menu.h31
-rw-r--r--include/menu_indicators.h17
-rw-r--r--include/new_menu_helpers.h3
-rw-r--r--include/scanline_effect.h6
-rw-r--r--include/text.h24
-rw-r--r--ld_script.txt4
-rw-r--r--src/bg.c18
-rw-r--r--src/fame_checker.c1553
-rw-r--r--src/text.c22
-rw-r--r--sym_common.txt6
-rw-r--r--sym_ewram.txt18
69 files changed, 4784 insertions, 5137 deletions
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index 323921f8b..304efdd74 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -948,7 +948,7 @@ sub_813D4D0: @ 813D4D0
bl CopyWindowToVram
b _0813D52A
_0813D514:
- ldr r2, _0813D534 @ =gUnknown_841623B
+ ldr r2, _0813D534 @ =gFameCheckerText_ListMenuCursor
str r5, [sp]
movs r0, 0
str r0, [sp, 0x4]
@@ -964,7 +964,7 @@ _0813D52A:
pop {r0}
bx r0
.align 2, 0
-_0813D534: .4byte gUnknown_841623B
+_0813D534: .4byte gFameCheckerText_ListMenuCursor
thumb_func_end sub_813D4D0
thumb_func_start sub_813D538
diff --git a/asm/crt0.s b/asm/crt0.s
index a2e9cd75f..f2e28c9e1 100644
--- a/asm/crt0.s
+++ b/asm/crt0.s
@@ -88,22 +88,22 @@ GPIOPortReadEnable: @ 80000C8
.4byte 0x30BB
.4byte 0x30A7
.4byte 0
- .4byte 0x8254784
- .4byte 0x824FC40
- .4byte 0x824FB08
- .4byte 0x83DB028
- .4byte 0x8250C04
- .4byte 0x826056C
- .4byte 0x82605CC
+ .4byte 0x8254784 @ gBaseStats
+ .4byte 0x824FC40 @ gAbilityNames
+ .4byte 0x824FB08 @ gAbilityDescriptionPointers
+ .4byte 0x83DB028 @ gItems
+ .4byte 0x8250C04 @ gBattleMoves
+ .4byte 0x826056C @ gBallSpriteSheets
+ .4byte 0x82605CC @ gBallSpritePalettes
.4byte 0xA8
.4byte 0x82C
.4byte 0x83B
.4byte 0x3A0D1E2A
.4byte 0x1E2B
- .4byte 0x298
- .4byte 0x309C
- .4byte 0x30EC
- .4byte 0x34
+ .4byte 0x298 @ offsetof(struct SaveBlock1, pcItems) // maybe all items were in a struct together?
+ .4byte 0x309C @ offsetof(struct SaveBlock1, giftRibbons)
+ .4byte 0x30EC @ offsetof(struct SaveBlock1, enigmaBerry)
+ .4byte 0x34 @ size of SaveBlock1 map header reconstruction data?
.4byte 0
.4byte 0xFFFFFFFF
diff --git a/asm/fame_checker.s b/asm/fame_checker.s
deleted file mode 100644
index 9e352e8ae..000000000
--- a/asm/fame_checker.s
+++ /dev/null
@@ -1,4171 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_812C380
-sub_812C380: @ 812C380
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_812C380
-
- thumb_func_start sub_812C394
-sub_812C394: @ 812C394
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_812C394
-
- thumb_func_start sub_812C3AC
-sub_812C3AC: @ 812C3AC
- push {r4,r5,lr}
- adds r5, r0, 0
- movs r0, 0
- bl SetVBlankCallback
- ldr r4, _0812C3F0 @ =gUnknown_203B0FC
- movs r0, 0x24
- bl AllocZeroed
- str r0, [r4]
- str r5, [r0]
- movs r1, 0
- strb r1, [r0, 0x9]
- ldr r0, [r4]
- strb r1, [r0, 0xA]
- ldr r0, [r4]
- strb r1, [r0, 0xB]
- ldr r1, [r4]
- adds r1, 0x23
- ldrb r2, [r1]
- movs r0, 0x2
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- movs r0, 0xC7
- bl PlaySE
- ldr r0, _0812C3F4 @ =sub_812C3F8
- bl SetMainCallback2
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812C3F0: .4byte gUnknown_203B0FC
-_0812C3F4: .4byte sub_812C3F8
- thumb_func_end sub_812C3AC
-
- thumb_func_start sub_812C3F8
-sub_812C3F8: @ 812C3F8
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0xC
- ldr r0, _0812C41C @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x7
- bls _0812C410
- b _0812C626
-_0812C410:
- lsls r0, 2
- ldr r1, _0812C420 @ =_0812C424
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_0812C41C: .4byte gMain
-_0812C420: .4byte _0812C424
- .align 2, 0
-_0812C424:
- .4byte _0812C444
- .4byte _0812C450
- .4byte _0812C456
- .4byte _0812C4C0
- .4byte _0812C540
- .4byte _0812C578
- .4byte _0812C5A0
- .4byte _0812C5D4
-_0812C444:
- movs r0, 0
- bl SetVBlankCallback
- bl sub_812D420
- b _0812C5BE
-_0812C450:
- bl sub_812D558
- b _0812C5BE
-_0812C456:
- ldr r6, _0812C4B0 @ =gUnknown_203B0F0
- movs r4, 0x80
- lsls r4, 4
- adds r0, r4, 0
- bl AllocZeroed
- str r0, [r6]
- ldr r1, _0812C4B4 @ =gUnknown_203B0F4
- mov r8, r1
- movs r0, 0x80
- lsls r0, 5
- bl AllocZeroed
- mov r1, r8
- str r0, [r1]
- ldr r5, _0812C4B8 @ =gUnknown_203B0F8
- adds r0, r4, 0
- bl AllocZeroed
- str r0, [r5]
- movs r0, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _0812C4BC @ =gUnknown_845FBF4
- movs r0, 0
- movs r2, 0x4
- bl InitBgsFromTemplates
- ldr r1, [r6]
- movs r0, 0x3
- bl SetBgTilemapBuffer
- ldr r1, [r5]
- movs r0, 0x2
- bl SetBgTilemapBuffer
- mov r0, r8
- ldr r1, [r0]
- movs r0, 0x1
- bl SetBgTilemapBuffer
- bl sub_812D594
- b _0812C5BE
- .align 2, 0
-_0812C4B0: .4byte gUnknown_203B0F0
-_0812C4B4: .4byte gUnknown_203B0F4
-_0812C4B8: .4byte gUnknown_203B0F8
-_0812C4BC: .4byte gUnknown_845FBF4
-_0812C4C0:
- ldr r1, _0812C52C @ =gUnknown_8E9F260
- movs r2, 0xA5
- lsls r2, 5
- movs r0, 0x3
- movs r3, 0
- bl LoadBgTiles
- ldr r1, _0812C530 @ =gUnknown_8EA0700
- movs r5, 0x20
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x3
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect
- ldr r4, _0812C534 @ =gUnknown_8E9F220
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x40
- bl LoadPalette
- adds r4, 0x20
- adds r0, r4, 0
- movs r1, 0x10
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _0812C538 @ =gUnknown_8EA0F00
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x2
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBufferRect
- ldr r1, _0812C53C @ =gUnknown_845C600
- str r5, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x11
- str r0, [sp, 0x8]
- movs r0, 0x1
- movs r2, 0x1E
- movs r3, 0
- bl CopyToBgTilemapBufferRect_ChangePalette
- movs r0, 0x2
- bl stdpal_get
- movs r1, 0xF0
- movs r2, 0x20
- bl LoadPalette
- b _0812C5BE
- .align 2, 0
-_0812C52C: .4byte gUnknown_8E9F260
-_0812C530: .4byte gUnknown_8EA0700
-_0812C534: .4byte gUnknown_8E9F220
-_0812C538: .4byte gUnknown_8EA0F00
-_0812C53C: .4byte gUnknown_845C600
-_0812C540:
- bl IsDma3ManagerBusyWithBgCopy
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812C626
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r0, 0x2
- bl ShowBg
- movs r0, 0x3
- bl ShowBg
- movs r0, 0x3
- bl CopyBgTilemapBufferToVram
- movs r0, 0x2
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- b _0812C5BE
-_0812C578:
- ldr r0, _0812C598 @ =gUnknown_845FC04
- bl InitWindows
- bl DeactivateAllTextPrinters
- bl sub_812CEC0
- ldr r4, _0812C59C @ =gUnknown_203B100
- movs r0, 0x88
- bl AllocZeroed
- str r0, [r4]
- bl sub_812DB28
- b _0812C5BE
- .align 2, 0
-_0812C598: .4byte gUnknown_845FC04
-_0812C59C: .4byte gUnknown_203B100
-_0812C5A0:
- bl sub_812C648
- movs r0, 0
- bl sub_812D1A8
- bl sub_812CE9C
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
-_0812C5BE:
- ldr r1, _0812C5D0 @ =gMain
- movs r0, 0x87
- lsls r0, 3
- adds r1, r0
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _0812C626
- .align 2, 0
-_0812C5D0: .4byte gMain
-_0812C5D4:
- bl sub_812D584
- movs r1, 0xFD
- lsls r1, 6
- movs r0, 0x50
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0x7
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0x8
- bl SetGpuReg
- ldr r0, _0812C634 @ =sub_812C380
- bl SetVBlankCallback
- ldr r0, _0812C638 @ =gUnknown_203B0FC
- ldr r1, [r0]
- movs r4, 0
- movs r0, 0
- strh r0, [r1, 0x4]
- bl sub_812E000
- movs r0, 0x1
- movs r1, 0x4
- bl sub_812E178
- ldr r0, _0812C63C @ =sub_812C664
- movs r1, 0x8
- bl CreateTask
- ldr r0, _0812C640 @ =sub_812C394
- bl SetMainCallback2
- ldr r0, _0812C644 @ =gMain
- movs r1, 0x87
- lsls r1, 3
- adds r0, r1
- strb r4, [r0]
-_0812C626:
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812C634: .4byte sub_812C380
-_0812C638: .4byte gUnknown_203B0FC
-_0812C63C: .4byte sub_812C664
-_0812C640: .4byte sub_812C394
-_0812C644: .4byte gMain
- thumb_func_end sub_812C3F8
-
- thumb_func_start sub_812C648
-sub_812C648: @ 812C648
- push {lr}
- ldr r0, _0812C65C @ =gUnknown_845FB9C
- bl LoadSpriteSheets
- ldr r0, _0812C660 @ =gUnknown_845FBDC
- bl LoadSpritePalettes
- pop {r0}
- bx r0
- .align 2, 0
-_0812C65C: .4byte gUnknown_845FB9C
-_0812C660: .4byte gUnknown_845FBDC
- thumb_func_end sub_812C648
-
- thumb_func_start sub_812C664
-sub_812C664: @ 812C664
- push {lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _0812C688 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812C684
- ldr r0, _0812C68C @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldr r0, _0812C690 @ =sub_812C694
- str r0, [r1]
-_0812C684:
- pop {r0}
- bx r0
- .align 2, 0
-_0812C688: .4byte gPaletteFade
-_0812C68C: .4byte gTasks
-_0812C690: .4byte sub_812C694
- thumb_func_end sub_812C664
-
- thumb_func_start sub_812C694
-sub_812C694: @ 812C694
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r1, r5, 2
- adds r1, r5
- lsls r1, 3
- ldr r0, _0812C714 @ =gTasks
- adds r7, r1, r0
- adds r0, 0x8
- adds r1, r0
- mov r8, r1
- ldr r0, _0812C718 @ =sub_812E110
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0812C6C0
- b _0812C8EA
-_0812C6C0:
- bl RunTextPrinters
- ldr r0, _0812C71C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- beq _0812C6E8
- ldr r0, _0812C720 @ =gUnknown_203B0FC
- ldr r2, [r0]
- ldrb r1, [r2, 0x7]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- bne _0812C6E8
- ldr r1, [r2]
- ldr r0, _0812C724 @ =sub_8107EB8
- cmp r1, r0
- beq _0812C6E8
- b _0812C8DA
-_0812C6E8:
- ldr r0, _0812C71C @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x8
- ands r0, r1
- cmp r0, 0
- beq _0812C7DC
- bl sub_812E064
- lsls r0, 16
- lsrs r4, r0, 16
- adds r0, r5, 0
- bl sub_812C8F8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812C728
- movs r0, 0xCB
- bl PlaySE
- b _0812C8EA
- .align 2, 0
-_0812C714: .4byte gTasks
-_0812C718: .4byte sub_812E110
-_0812C71C: .4byte gMain
-_0812C720: .4byte gUnknown_203B0FC
-_0812C724: .4byte sub_8107EB8
-_0812C728:
- ldr r5, _0812C7D0 @ =gUnknown_203B0FC
- ldr r0, [r5]
- ldrb r0, [r0, 0x7]
- lsrs r0, 2
- subs r0, 0x1
- cmp r4, r0
- bne _0812C738
- b _0812C8EA
-_0812C738:
- movs r0, 0xCB
- bl PlaySE
- movs r0, 0x58
- str r0, [sp]
- movs r0, 0x20
- str r0, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
- movs r0, 0x3
- bl sub_812CEE0
- movs r0, 0x2
- movs r1, 0x4
- bl sub_812E178
- movs r0, 0x1
- movs r1, 0x5
- bl sub_812E178
- movs r0, 0x1
- bl sub_812D0F4
- ldr r0, [r5]
- adds r0, 0xC
- adds r0, r4
- ldrb r0, [r0]
- bl sub_812D888
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0xC]
- ldr r4, _0812C7D4 @ =gSprites
- movs r0, 0xC
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r6, 0xF0
- strh r6, [r0, 0x24]
- movs r3, 0xC
- ldrsh r1, [r7, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- movs r5, 0x1
- strh r5, [r0, 0x2E]
- bl sub_812D7E4
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0xE]
- movs r0, 0xE
- ldrsh r1, [r7, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r6, [r0, 0x24]
- movs r3, 0xE
- ldrsh r1, [r7, r3]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- strh r5, [r0, 0x2E]
- ldr r0, _0812C7D8 @ =sub_812C9BC
- str r0, [r7]
- b _0812C8EA
- .align 2, 0
-_0812C7D0: .4byte gUnknown_203B0FC
-_0812C7D4: .4byte gSprites
-_0812C7D8: .4byte sub_812C9BC
-_0812C7DC:
- movs r6, 0x1
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0812C8C4
- movs r0, 0
- bl ListMenuHandleInput
- lsls r0, 16
- lsrs r4, r0, 16
- ldr r0, _0812C824 @ =gUnknown_203B0FC
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- lsrs r0, r1, 2
- subs r0, 0x1
- cmp r4, r0
- beq _0812C8DA
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812C828
- movs r0, 0x2
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- bne _0812C8EA
- bl sub_812D6B4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812C8EA
- bl sub_812CD3C
- b _0812C8EA
- .align 2, 0
-_0812C824: .4byte gUnknown_203B0FC
-_0812C828:
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0
- beq _0812C8EA
- movs r0, 0x5
- bl PlaySE
- movs r1, 0xA
- ldrsh r0, [r7, r1]
- bl sub_812D724
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r7, 0x8]
- movs r4, 0
-_0812C846:
- movs r3, 0xA
- ldrsh r0, [r7, r3]
- cmp r4, r0
- beq _0812C85E
- ldr r0, _0812C8B4 @ =gUnknown_203B0FC
- ldr r0, [r0]
- adds r0, 0x1D
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_812CEFC
-_0812C85E:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _0812C846
- ldr r1, _0812C8B8 @ =gUnknown_3005EC8
- movs r0, 0xFF
- strb r0, [r1]
- movs r0, 0
- bl sub_812E4A4
- movs r0, 0x2
- bl sub_812D0F4
- ldr r2, _0812C8BC @ =gSprites
- ldr r0, _0812C8B4 @ =gUnknown_203B0FC
- ldr r0, [r0]
- movs r3, 0xA
- ldrsh r1, [r7, r3]
- adds r0, 0x1D
- adds r0, r1
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x30
- ldrsh r0, [r0, r1]
- cmp r0, 0xFF
- beq _0812C8A8
- adds r0, r5, 0
- bl sub_812CE04
- mov r3, r8
- ldrb r0, [r3, 0x2]
- bl sub_812DA14
-_0812C8A8:
- bl sub_812E048
- ldr r0, _0812C8C0 @ =sub_812CAD8
- str r0, [r7]
- b _0812C8EA
- .align 2, 0
-_0812C8B4: .4byte gUnknown_203B0FC
-_0812C8B8: .4byte gUnknown_3005EC8
-_0812C8BC: .4byte gSprites
-_0812C8C0: .4byte sub_812CAD8
-_0812C8C4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812C8E4
- adds r0, r5, 0
- bl sub_812C8F8
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0812C8EA
-_0812C8DA:
- ldr r0, _0812C8E0 @ =sub_812CF3C
- str r0, [r7]
- b _0812C8EA
- .align 2, 0
-_0812C8E0: .4byte sub_812CF3C
-_0812C8E4:
- movs r0, 0
- bl ListMenuHandleInput
-_0812C8EA:
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_812C694
-
- thumb_func_start sub_812C8F8
-sub_812C8F8: @ 812C8F8
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0812C91C @ =gTasks
- adds r4, r1, r0
- ldr r5, _0812C920 @ =gUnknown_203B0FC
- ldr r0, [r5]
- ldrb r1, [r0, 0x7]
- movs r3, 0x2
- adds r0, r3, 0
- ands r0, r1
- cmp r0, 0
- bne _0812C924
- movs r0, 0
- b _0812C982
- .align 2, 0
-_0812C91C: .4byte gTasks
-_0812C920: .4byte gUnknown_203B0FC
-_0812C924:
- ldr r2, _0812C988 @ =gSprites
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x2E]
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- adds r1, 0xA
- strh r1, [r0, 0x24]
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x2E]
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldrh r1, [r0, 0x24]
- adds r1, 0xA
- strh r1, [r0, 0x24]
- bl sub_812CE9C
- ldr r0, _0812C98C @ =sub_812CA1C
- str r0, [r4]
- bl sub_812C990
- ldr r1, [r5]
- adds r1, 0x23
- ldrb r2, [r1]
- movs r0, 0x5
- negs r0, r0
- ands r0, r2
- strb r0, [r1]
- movs r0, 0x1
-_0812C982:
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812C988: .4byte gSprites
-_0812C98C: .4byte sub_812CA1C
- thumb_func_end sub_812C8F8
-
- thumb_func_start sub_812C990
-sub_812C990: @ 812C990
- push {lr}
- sub sp, 0x10
- ldr r2, _0812C9B8 @ =gUnknown_84181E4
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParametrized
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0812C9B8: .4byte gUnknown_84181E4
- thumb_func_end sub_812C990
-
- thumb_func_start sub_812C9BC
-sub_812C9BC: @ 812C9BC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 2
- adds r1, r0
- lsls r1, 3
- ldr r0, _0812C9F8 @ =gTasks
- adds r4, r1, r0
- ldr r2, _0812C9FC @ =gSprites
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x2E
- ldrsh r0, [r0, r1]
- cmp r0, 0
- bne _0812CA08
- bl sub_812CD3C
- ldr r0, _0812CA00 @ =gUnknown_203B0FC
- ldr r2, [r0]
- ldrb r0, [r2, 0x7]
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2, 0x7]
- ldr r0, _0812CA04 @ =sub_812C694
- str r0, [r4]
- b _0812CA14
- .align 2, 0
-_0812C9F8: .4byte gTasks
-_0812C9FC: .4byte gSprites
-_0812CA00: .4byte gUnknown_203B0FC
-_0812CA04: .4byte sub_812C694
-_0812CA08:
- movs r1, 0xA0
- lsls r1, 4
- movs r0, 0x1
- movs r2, 0x1
- bl ChangeBgX
-_0812CA14:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812C9BC
-
- thumb_func_start sub_812CA1C
-sub_812CA1C: @ 812CA1C
- push {r4-r7,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0812CA44 @ =gTasks
- adds r5, r0, r1
- movs r0, 0x1
- bl GetBgX
- cmp r0, 0
- beq _0812CA48
- movs r1, 0xA0
- lsls r1, 4
- movs r0, 0x1
- movs r2, 0x2
- bl ChangeBgX
- b _0812CA52
- .align 2, 0
-_0812CA44: .4byte gTasks
-_0812CA48:
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
-_0812CA52:
- ldr r7, _0812CAC8 @ =gSprites
- movs r1, 0xC
- ldrsh r0, [r5, r1]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r7
- movs r2, 0x2E
- ldrsh r0, [r1, r2]
- cmp r0, 0
- bne _0812CAC0
- ldr r6, _0812CACC @ =gUnknown_203B0FC
- ldr r0, [r6]
- ldrb r1, [r0, 0x7]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812CA7C
- movs r0, 0
- bl sub_812D0F4
-_0812CA7C:
- movs r0, 0x1
- movs r1, 0x4
- bl sub_812E178
- movs r0, 0x2
- movs r1, 0x2
- bl sub_812E178
- ldr r2, [r6]
- ldrb r1, [r2, 0x7]
- movs r0, 0x3
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x7]
- bl sub_812E064
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r4, 0
- bl sub_812D9A8
- ldr r0, _0812CAD0 @ =sub_812C694
- str r0, [r5]
- movs r0, 0xE
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r1, r7, 0
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _0812CAD4 @ =sub_812D800
- str r1, [r0]
-_0812CAC0:
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812CAC8: .4byte gSprites
-_0812CACC: .4byte gUnknown_203B0FC
-_0812CAD0: .4byte sub_812C694
-_0812CAD4: .4byte sub_812D800
- thumb_func_end sub_812CA1C
-
- thumb_func_start sub_812CAD8
-sub_812CAD8: @ 812CAD8
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- ldr r0, _0812CB9C @ =gTasks
- adds r5, r1, r0
- adds r0, 0x8
- adds r6, r1, r0
- bl RunTextPrinters
- ldr r0, _0812CBA0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812CB2E
- movs r0, 0x2
- bl IsTextPrinterActive
- lsls r0, 16
- cmp r0, 0
- bne _0812CB2E
- ldr r0, _0812CBA4 @ =gUnknown_203B0FC
- ldr r0, [r0]
- movs r2, 0x2
- ldrsh r1, [r6, r2]
- adds r0, 0x1D
- adds r0, r1
- ldrb r1, [r0]
- ldr r2, _0812CBA8 @ =gSprites
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0x30
- ldrsh r0, [r0, r1]
- cmp r0, 0xFF
- beq _0812CB2E
- adds r0, r4, 0
- bl sub_812CE04
-_0812CB2E:
- ldr r0, _0812CBA0 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812CBB8
- movs r0, 0x5
- bl PlaySE
- movs r4, 0
- ldr r6, _0812CBA4 @ =gUnknown_203B0FC
-_0812CB44:
- ldr r0, [r6]
- adds r0, 0x1D
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0
- bl sub_812CEFC
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _0812CB44
- bl sub_812CE9C
- ldr r2, _0812CBA8 @ =gSprites
- movs r0, 0x8
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r2, 0x1C
- adds r0, r2
- ldr r1, _0812CBAC @ =sub_812D764
- str r1, [r0]
- ldr r0, _0812CBB0 @ =gUnknown_3005EC8
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _0812CB80
- bl sub_812DB10
-_0812CB80:
- movs r0, 0x1
- bl sub_812E4A4
- movs r0, 0
- bl sub_812D0F4
- bl sub_812E000
- bl sub_812C990
- ldr r0, _0812CBB4 @ =sub_812C694
- str r0, [r5]
- b _0812CC62
- .align 2, 0
-_0812CB9C: .4byte gTasks
-_0812CBA0: .4byte gMain
-_0812CBA4: .4byte gUnknown_203B0FC
-_0812CBA8: .4byte gSprites
-_0812CBAC: .4byte sub_812D764
-_0812CBB0: .4byte gUnknown_3005EC8
-_0812CBB4: .4byte sub_812C694
-_0812CBB8:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- bne _0812CBC8
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0812CBF4
-_0812CBC8:
- ldrh r1, [r5, 0xA]
- movs r2, 0xA
- ldrsh r0, [r5, r2]
- cmp r0, 0x2
- ble _0812CBE4
- subs r0, r1, 0x3
- strh r0, [r5, 0xA]
- movs r2, 0x1B
- negs r2, r2
- adds r0, r4, 0
- movs r1, 0
- bl sub_812CC68
- b _0812CC62
-_0812CBE4:
- adds r0, r1, 0x3
- strh r0, [r5, 0xA]
- adds r0, r4, 0
- movs r1, 0
- movs r2, 0x1B
- bl sub_812CC68
- b _0812CC62
-_0812CBF4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- beq _0812CC26
- ldrh r6, [r5, 0xA]
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- cmp r0, 0
- beq _0812CC12
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- cmp r0, 0
- bne _0812CC1C
-_0812CC12:
- adds r0, r6, 0x2
- strh r0, [r5, 0xA]
- adds r0, r4, 0
- movs r1, 0x5E
- b _0812CC4A
-_0812CC1C:
- subs r0, r6, 0x1
- strh r0, [r5, 0xA]
- movs r1, 0x2F
- negs r1, r1
- b _0812CC48
-_0812CC26:
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- beq _0812CC62
- movs r1, 0xA
- ldrsh r0, [r5, r1]
- adds r0, 0x1
- movs r1, 0x3
- bl __modsi3
- cmp r0, 0
- bne _0812CC52
- ldrh r0, [r5, 0xA]
- subs r0, 0x2
- strh r0, [r5, 0xA]
- movs r1, 0x5E
- negs r1, r1
-_0812CC48:
- adds r0, r4, 0
-_0812CC4A:
- movs r2, 0
- bl sub_812CC68
- b _0812CC62
-_0812CC52:
- ldrh r0, [r5, 0xA]
- adds r0, 0x1
- strh r0, [r5, 0xA]
- adds r0, r4, 0
- movs r1, 0x2F
- movs r2, 0
- bl sub_812CC68
-_0812CC62:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_812CAD8
-
- thumb_func_start sub_812CC68
-sub_812CC68: @ 812CC68
- push {r4-r7,lr}
- sub sp, 0x8
- adds r4, r1, 0
- adds r5, r2, 0
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r0, r7, 2
- adds r0, r7
- lsls r0, 3
- ldr r1, _0812CD18 @ =gTasks+0x8
- adds r6, r0, r1
- movs r0, 0xBB
- bl PlaySE
- ldr r2, _0812CD1C @ =gSprites
- movs r0, 0
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- lsls r4, 24
- asrs r4, 24
- ldrh r1, [r0, 0x20]
- adds r4, r1
- strh r4, [r0, 0x20]
- movs r0, 0
- ldrsh r1, [r6, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- lsls r5, 24
- asrs r5, 24
- ldrh r1, [r0, 0x22]
- adds r5, r1
- strh r5, [r0, 0x22]
- movs r4, 0
- ldr r5, _0812CD20 @ =gUnknown_203B0FC
-_0812CCBE:
- ldr r0, [r5]
- adds r0, 0x1D
- adds r0, r4
- ldrb r0, [r0]
- movs r1, 0x1
- bl sub_812CEFC
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _0812CCBE
- movs r0, 0xD0
- str r0, [sp]
- movs r0, 0x20
- str r0, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0x11
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
- bl sub_812C990
- ldr r0, _0812CD20 @ =gUnknown_203B0FC
- ldr r0, [r0]
- movs r2, 0x2
- ldrsh r1, [r6, r2]
- adds r0, 0x1D
- adds r0, r1
- ldrb r0, [r0]
- movs r1, 0
- bl sub_812CEFC
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812CD24
- adds r0, r7, 0
- bl sub_812CE04
- ldrb r0, [r6, 0x2]
- bl sub_812DA14
- b _0812CD30
- .align 2, 0
-_0812CD18: .4byte gTasks+0x8
-_0812CD1C: .4byte gSprites
-_0812CD20: .4byte gUnknown_203B0FC
-_0812CD24:
- ldr r0, _0812CD38 @ =gUnknown_3005EC8
- ldrb r0, [r0]
- cmp r0, 0xFF
- beq _0812CD30
- bl sub_812DB10
-_0812CD30:
- add sp, 0x8
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812CD38: .4byte gUnknown_3005EC8
- thumb_func_end sub_812CC68
-
- thumb_func_start sub_812CD3C
-sub_812CD3C: @ 812CD3C
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- movs r0, 0
- mov r8, r0
- bl sub_812E064
- lsls r0, 16
- lsrs r0, 16
- adds r6, r0, 0
- ldr r0, _0812CD7C @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r7, _0812CD80 @ =gUnknown_203B0FC
- ldr r0, [r7]
- adds r0, 0xC
- adds r0, r6
- ldrb r0, [r0]
- lsls r0, 2
- adds r1, r0
- ldr r0, _0812CD84 @ =0x00003a54
- adds r1, r0
- ldrb r0, [r1]
- lsls r0, 30
- lsrs r5, r0, 30
- cmp r5, 0x2
- beq _0812CD88
- bl sub_812CE9C
- bl sub_812C990
- b _0812CDEE
- .align 2, 0
-_0812CD7C: .4byte gSaveBlock1Ptr
-_0812CD80: .4byte gUnknown_203B0FC
-_0812CD84: .4byte 0x00003a54
-_0812CD88:
- movs r0, 0xD0
- str r0, [sp]
- movs r0, 0x20
- str r0, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0x11
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
- bl sub_812D6B4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812CDAC
- movs r0, 0x10
- mov r8, r0
-_0812CDAC:
- ldr r4, _0812CDFC @ =gStringVar4
- ldr r1, _0812CE00 @ =gUnknown_845F63C
- ldr r0, [r7]
- adds r0, 0xC
- adds r0, r6
- ldrb r0, [r0]
- add r0, r8
- lsls r0, 2
- adds r0, r1
- ldr r1, [r0]
- adds r0, r4, 0
- bl StringExpandPlaceholders
- bl sub_80F78A8
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0
- str r0, [sp]
- str r5, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0x2
- adds r2, r4, 0
- bl AddTextPrinterParametrized
- movs r0, 0x2
- bl sub_812CEE0
-_0812CDEE:
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812CDFC: .4byte gStringVar4
-_0812CE00: .4byte gUnknown_845F63C
- thumb_func_end sub_812CD3C
-
- thumb_func_start sub_812CE04
-sub_812CE04: @ 812CE04
- push {r4-r6,lr}
- sub sp, 0x10
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _0812CE8C @ =gTasks+0x8
- adds r4, r0
- bl sub_812E064
- adds r5, r0, 0
- lsls r5, 16
- lsrs r5, 16
- movs r0, 0xD0
- str r0, [sp]
- movs r0, 0x20
- str r0, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0x11
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
- ldr r6, _0812CE90 @ =gStringVar4
- ldr r2, _0812CE94 @ =gUnknown_845F6BC
- ldr r0, _0812CE98 @ =gUnknown_203B0FC
- ldr r0, [r0]
- adds r0, 0xC
- adds r0, r5
- ldrb r1, [r0]
- lsls r0, r1, 1
- adds r0, r1
- lsls r0, 1
- movs r3, 0x2
- ldrsh r1, [r4, r3]
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- ldr r1, [r0]
- adds r0, r6, 0
- bl StringExpandPlaceholders
- bl sub_80F78A8
- adds r3, r0, 0
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0x2
- adds r2, r6, 0
- bl AddTextPrinterParametrized
- movs r0, 0x2
- bl sub_812CEE0
- add sp, 0x10
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812CE8C: .4byte gTasks+0x8
-_0812CE90: .4byte gStringVar4
-_0812CE94: .4byte gUnknown_845F6BC
-_0812CE98: .4byte gUnknown_203B0FC
- thumb_func_end sub_812CE04
-
- thumb_func_start sub_812CE9C
-sub_812CE9C: @ 812CE9C
- push {lr}
- sub sp, 0x8
- movs r0, 0xD0
- str r0, [sp]
- movs r0, 0x20
- str r0, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0x11
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
- movs r0, 0x2
- bl sub_812CEE0
- add sp, 0x8
- pop {r0}
- bx r0
- thumb_func_end sub_812CE9C
-
- thumb_func_start sub_812CEC0
-sub_812CEC0: @ 812CEC0
- push {lr}
- bl sub_80F6E9C
- movs r0, 0x2
- movs r1, 0x1
- bl sub_80F6EE4
- movs r0, 0x2
- bl sub_812CEE0
- movs r0, 0
- bl sub_812CEE0
- pop {r0}
- bx r0
- thumb_func_end sub_812CEC0
-
- thumb_func_start sub_812CEE0
-sub_812CEE0: @ 812CEE0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812CEE0
-
- thumb_func_start sub_812CEFC
-sub_812CEFC: @ 812CEFC
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r4, r1, 24
- ldr r2, _0812CF1C @ =gSprites
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r3, r1, r2
- movs r1, 0x30
- ldrsh r0, [r3, r1]
- cmp r0, 0xFF
- bne _0812CF20
- movs r0, 0
- b _0812CF36
- .align 2, 0
-_0812CF1C: .4byte gSprites
-_0812CF20:
- movs r0, 0x3
- adds r1, r4, 0
- ands r1, r0
- lsls r1, 2
- ldrb r2, [r3, 0x1]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0x1]
- movs r0, 0x1
-_0812CF36:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812CEFC
-
- thumb_func_start sub_812CF3C
-sub_812CF3C: @ 812CF3C
- push {r4,lr}
- sub sp, 0x4
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- movs r0, 0xC7
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
- ldr r1, _0812CF74 @ =gTasks
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- adds r0, r1
- ldr r1, _0812CF78 @ =sub_812CF7C
- str r1, [r0]
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812CF74: .4byte gTasks
-_0812CF78: .4byte sub_812CF7C
- thumb_func_end sub_812CF3C
-
- thumb_func_start sub_812CF7C
-sub_812CF7C: @ 812CF7C
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r6, r0, 24
- ldr r0, _0812D074 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _0812D06C
- ldr r0, _0812D078 @ =gUnknown_203B0FC
- ldr r0, [r0]
- ldrb r1, [r0, 0x7]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812CFD8
- bl sub_812E064
- adds r1, r0, 0
- lsls r1, 16
- lsrs r1, 16
- adds r0, r6, 0
- bl sub_812D9A8
- ldr r0, _0812D07C @ =gTasks
- lsls r4, r6, 2
- adds r4, r6
- lsls r4, 3
- adds r4, r0
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r5, _0812D080 @ =gSprites
- adds r0, r5
- bl FreeSpriteOamMatrix
- movs r0, 0xE
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- bl DestroySprite
-_0812CFD8:
- movs r4, 0
-_0812CFDA:
- ldr r5, _0812D078 @ =gUnknown_203B0FC
- ldr r0, [r5]
- adds r0, 0x1D
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812D080 @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _0812CFDA
- bl sub_812D814
- bl sub_812D7C8
- bl sub_812D70C
- bl sub_812D770
- bl sub_812E048
- ldr r0, [r5]
- ldr r0, [r0]
- bl SetMainCallback2
- ldr r0, [r5]
- ldrb r0, [r0, 0x8]
- movs r1, 0
- movs r2, 0
- bl sub_810713C
- ldr r0, _0812D084 @ =gUnknown_203B0F0
- ldr r0, [r0]
- bl Free
- ldr r0, _0812D088 @ =gUnknown_203B0F4
- ldr r0, [r0]
- bl Free
- ldr r0, _0812D08C @ =gUnknown_203B0F8
- ldr r0, [r0]
- bl Free
- ldr r0, [r5]
- bl Free
- ldr r0, _0812D090 @ =gUnknown_203B100
- ldr r0, [r0]
- bl Free
- movs r0, 0
- bl sub_812D094
- movs r0, 0x1
- bl sub_812D094
- movs r0, 0x2
- bl sub_812D094
- movs r0, 0x3
- bl sub_812D094
- bl FreeAllWindowBuffers
- adds r0, r6, 0
- bl DestroyTask
-_0812D06C:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812D074: .4byte gPaletteFade
-_0812D078: .4byte gUnknown_203B0FC
-_0812D07C: .4byte gTasks
-_0812D080: .4byte gSprites
-_0812D084: .4byte gUnknown_203B0F0
-_0812D088: .4byte gUnknown_203B0F4
-_0812D08C: .4byte gUnknown_203B0F8
-_0812D090: .4byte gUnknown_203B100
- thumb_func_end sub_812CF7C
-
- thumb_func_start sub_812D094
-sub_812D094: @ 812D094
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r4, 0
- bl ClearWindowTilemap
- adds r0, r4, 0
- movs r1, 0x2
- bl CopyWindowToVram
- adds r0, r4, 0
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812D094
-
- thumb_func_start sub_812D0C0
-sub_812D0C0: @ 812D0C0
- push {r4,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- movs r0, 0xAF
- lsls r0, 1
- bl HasTrainerAlreadyBeenFought
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0812D0EA
- cmp r4, 0x9
- bne _0812D0DE
- movs r0, 0xF
- b _0812D0EC
-_0812D0DE:
- cmp r4, 0x9
- bls _0812D0EA
- subs r0, r4, 0x1
- lsls r0, 24
- lsrs r0, 24
- b _0812D0EC
-_0812D0EA:
- adds r0, r4, 0
-_0812D0EC:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812D0C0
-
- thumb_func_start sub_812D0F4
-sub_812D0F4: @ 812D0F4
- push {r4,r5,lr}
- sub sp, 0x14
- lsls r0, 24
- lsrs r0, 24
- ldr r5, _0812D164 @ =gUnknown_841E5A4
- cmp r0, 0
- beq _0812D10A
- ldr r5, _0812D168 @ =gUnknown_841E5D2
- cmp r0, 0x1
- bne _0812D10A
- ldr r5, _0812D16C @ =gUnknown_841E5B9
-_0812D10A:
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0
- bl GetStringWidth
- adds r4, r0, 0
- movs r0, 0xC0
- str r0, [sp]
- movs r0, 0x10
- str r0, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
- movs r0, 0x44
- negs r0, r0
- adds r2, r0, 0
- subs r2, r4
- lsls r2, 24
- lsrs r2, 24
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- ldr r0, _0812D170 @ =gUnknown_845F5E0
- str r0, [sp, 0x8]
- movs r0, 0x1
- negs r0, r0
- str r0, [sp, 0xC]
- str r5, [sp, 0x10]
- movs r0, 0x1
- movs r1, 0
- movs r3, 0
- bl AddTextPrinterParametrized2
- movs r0, 0x1
- bl sub_812CEE0
- add sp, 0x14
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0812D164: .4byte gUnknown_841E5A4
-_0812D168: .4byte gUnknown_841E5D2
-_0812D16C: .4byte gUnknown_841E5B9
-_0812D170: .4byte gUnknown_845F5E0
- thumb_func_end sub_812D0F4
-
- thumb_func_start sub_812D174
-sub_812D174: @ 812D174
- push {r4,lr}
- movs r4, 0
-_0812D178:
- ldr r0, _0812D1A0 @ =gUnknown_203B0FC
- ldr r0, [r0]
- adds r0, 0x1D
- adds r0, r4
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812D1A4 @ =gSprites
- adds r0, r1
- bl DestroySprite
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _0812D178
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812D1A0: .4byte gUnknown_203B0FC
-_0812D1A4: .4byte gSprites
- thumb_func_end sub_812D174
-
- thumb_func_start sub_812D1A8
-sub_812D1A8: @ 812D1A8
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r5, 0
- movs r6, 0
- ldr r7, _0812D238 @ =gUnknown_203B0FC
-_0812D1BA:
- ldr r0, _0812D23C @ =gSaveBlock1Ptr
- ldr r1, [r0]
- ldr r0, [r7]
- adds r0, 0xC
- add r0, r8
- ldrb r2, [r0]
- lsls r0, r2, 2
- adds r1, r0
- ldr r0, _0812D240 @ =0x00003a54
- adds r1, r0
- ldrh r0, [r1]
- lsls r0, 18
- lsrs r0, 20
- asrs r0, r6
- movs r1, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0812D248
- ldr r1, _0812D244 @ =gUnknown_845F83C
- lsls r0, r2, 1
- adds r0, r2
- lsls r0, 1
- adds r0, r6
- adds r0, r1
- ldrb r5, [r0]
- adds r0, r6, 0
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 1
- adds r4, r0
- lsls r4, 4
- subs r4, r0
- adds r4, 0x72
- lsls r4, 16
- asrs r4, 16
- adds r0, r6, 0
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r3, r0, 3
- subs r3, r0
- lsls r3, 2
- subs r3, r0
- adds r3, 0x2F
- lsls r3, 16
- asrs r3, 16
- adds r0, r5, 0
- adds r1, r6, 0
- adds r2, r4, 0
- bl sub_805EB44
- ldr r1, [r7]
- adds r1, 0x1D
- adds r1, r6
- strb r0, [r1]
- movs r5, 0x1
- b _0812D2A0
- .align 2, 0
-_0812D238: .4byte gUnknown_203B0FC
-_0812D23C: .4byte gSaveBlock1Ptr
-_0812D240: .4byte 0x00003a54
-_0812D244: .4byte gUnknown_845F83C
-_0812D248:
- adds r0, r6, 0
- movs r1, 0x3
- bl __umodsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 1
- adds r4, r0
- lsls r4, 4
- subs r4, r0
- adds r4, 0x72
- lsls r4, 24
- lsrs r4, 24
- adds r0, r6, 0
- movs r1, 0x3
- bl __udivsi3
- lsls r0, 24
- lsrs r0, 24
- lsls r1, r0, 3
- subs r1, r0
- lsls r1, 2
- subs r1, r0
- adds r1, 0x1F
- lsls r1, 24
- lsrs r1, 24
- adds r0, r4, 0
- bl sub_812D780
- ldr r1, [r7]
- adds r1, 0x1D
- adds r1, r6
- strb r0, [r1]
- ldr r2, _0812D2D0 @ =gSprites
- ldr r0, [r7]
- adds r0, 0x1D
- adds r0, r6
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- movs r1, 0xFF
- strh r1, [r0, 0x30]
-_0812D2A0:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0x5
- bls _0812D1BA
- cmp r5, 0x1
- bne _0812D2E0
- ldr r3, _0812D2D4 @ =gUnknown_203B0FC
- ldr r2, [r3]
- ldrb r0, [r2, 0x7]
- movs r1, 0x1
- orrs r0, r1
- strb r0, [r2, 0x7]
- ldr r0, [r3]
- ldrb r1, [r0, 0x7]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812D2D8
- movs r0, 0x1
- bl sub_812D0F4
- b _0812D2F4
- .align 2, 0
-_0812D2D0: .4byte gSprites
-_0812D2D4: .4byte gUnknown_203B0FC
-_0812D2D8:
- movs r0, 0
- bl sub_812D0F4
- b _0812D2F4
-_0812D2E0:
- ldr r0, _0812D300 @ =gUnknown_203B0FC
- ldr r2, [r0]
- ldrb r1, [r2, 0x7]
- movs r0, 0x2
- negs r0, r0
- ands r0, r1
- strb r0, [r2, 0x7]
- movs r0, 0x1
- bl sub_812D0F4
-_0812D2F4:
- adds r0, r5, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0812D300: .4byte gUnknown_203B0FC
- thumb_func_end sub_812D1A8
-
- thumb_func_start sub_812D304
-sub_812D304: @ 812D304
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- movs r4, 0
- ldr r0, _0812D378 @ =gSaveBlock1Ptr
- mov r9, r0
- mov r6, r9
- ldr r5, _0812D37C @ =0x00003a54
- movs r0, 0x4
- negs r0, r0
- mov r8, r0
- ldr r0, _0812D380 @ =0xffffc003
- mov r12, r0
- ldr r7, _0812D384 @ =0x00003a55
-_0812D322:
- ldr r1, [r6]
- lsls r3, r4, 2
- adds r1, r3
- adds r1, r5
- ldrb r2, [r1]
- mov r0, r8
- ands r0, r2
- strb r0, [r1]
- ldr r1, [r6]
- adds r1, r3
- adds r3, r1, r5
- ldrh r2, [r3]
- mov r0, r12
- ands r0, r2
- strh r0, [r3]
- adds r1, r7
- ldrb r2, [r1]
- movs r0, 0x3F
- ands r0, r2
- strb r0, [r1]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xF
- bls _0812D322
- mov r0, r9
- ldr r2, [r0]
- ldr r0, _0812D37C @ =0x00003a54
- adds r2, r0
- ldrb r1, [r2]
- movs r0, 0x4
- negs r0, r0
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812D378: .4byte gSaveBlock1Ptr
-_0812D37C: .4byte 0x00003a54
-_0812D380: .4byte 0xffffc003
-_0812D384: .4byte 0x00003a55
- thumb_func_end sub_812D304
-
- thumb_func_start sub_812D388
-sub_812D388: @ 812D388
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- movs r5, 0
- ldr r0, _0812D410 @ =gSaveBlock1Ptr
- mov r12, r0
- ldr r7, _0812D414 @ =0x00003a54
- movs r1, 0x4
- negs r1, r1
- mov r10, r1
- ldr r6, _0812D418 @ =0xffffc003
- mov r9, r6
- movs r0, 0x1
- mov r8, r0
-_0812D3AA:
- mov r1, r12
- ldr r2, [r1]
- lsls r3, r5, 2
- adds r2, r3
- adds r2, r7
- ldrb r1, [r2]
- mov r0, r10
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- strb r0, [r2]
- movs r4, 0
- adds r5, 0x1
- str r5, [sp]
- adds r5, r3, 0
-_0812D3C8:
- mov r6, r12
- ldr r2, [r6]
- adds r2, r5
- adds r2, r7
- ldrh r3, [r2]
- lsls r0, r3, 18
- lsrs r0, 20
- mov r1, r8
- lsls r1, r4
- orrs r1, r0
- ldr r6, _0812D41C @ =0x00000fff
- adds r0, r6, 0
- ands r1, r0
- lsls r1, 2
- mov r0, r9
- ands r0, r3
- orrs r0, r1
- strh r0, [r2]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x5
- bls _0812D3C8
- ldr r1, [sp]
- lsls r0, r1, 24
- lsrs r5, r0, 24
- cmp r5, 0xF
- bls _0812D3AA
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812D410: .4byte gSaveBlock1Ptr
-_0812D414: .4byte 0x00003a54
-_0812D418: .4byte 0xffffc003
-_0812D41C: .4byte 0x00000fff
- thumb_func_end sub_812D388
-
- thumb_func_start sub_812D420
-sub_812D420: @ 812D420
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0x4
- mov r8, r0
- mov r2, sp
- movs r6, 0
- ldr r1, _0812D550 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _0812D554 @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_0812D446:
- strh r6, [r2]
- mov r0, sp
- str r0, [r1]
- str r3, [r1, 0x4]
- str r7, [r1, 0x8]
- ldr r0, [r1, 0x8]
- adds r3, r5
- subs r4, r5
- cmp r4, r5
- bhi _0812D446
- strh r6, [r2]
- mov r2, sp
- str r2, [r1]
- str r3, [r1, 0x4]
- lsrs r0, r4, 1
- mov r2, r12
- orrs r0, r2
- str r0, [r1, 0x8]
- ldr r0, [r1, 0x8]
- movs r0, 0xE0
- lsls r0, 19
- movs r3, 0x80
- lsls r3, 3
- movs r4, 0
- str r4, [sp, 0x4]
- ldr r2, _0812D550 @ =0x040000d4
- mov r1, r8
- str r1, [r2]
- str r0, [r2, 0x4]
- lsrs r0, r3, 2
- movs r1, 0x85
- lsls r1, 24
- orrs r0, r1
- str r0, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r1, 0xA0
- lsls r1, 19
- mov r0, sp
- strh r4, [r0]
- str r0, [r2]
- str r1, [r2, 0x4]
- lsrs r3, 1
- movs r0, 0x81
- lsls r0, 24
- orrs r3, r0
- str r3, [r2, 0x8]
- ldr r0, [r2, 0x8]
- movs r0, 0
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x8
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x10
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x12
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xA
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x16
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xC
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x18
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0xE
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1C
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x1E
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x40
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x44
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x48
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x4A
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x50
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x52
- movs r1, 0
- bl SetGpuReg
- movs r0, 0x54
- movs r1, 0
- bl SetGpuReg
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812D550: .4byte 0x040000d4
-_0812D554: .4byte 0x81000800
- thumb_func_end sub_812D420
-
- thumb_func_start sub_812D558
-sub_812D558: @ 812D558
- push {lr}
- bl remove_some_task
- bl ResetTasks
- bl ResetSpriteData
- bl dp13_810BB8C
- bl ResetPaletteFade
- movs r0, 0
- bl npc_paltag_set_load
- ldr r1, _0812D580 @ =gReservedSpritePaletteCount
- movs r0, 0x7
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0812D580: .4byte gReservedSpritePaletteCount
- thumb_func_end sub_812D558
-
- thumb_func_start sub_812D584
-sub_812D584: @ 812D584
- push {lr}
- movs r1, 0xFA
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- pop {r0}
- bx r0
- thumb_func_end sub_812D584
-
- thumb_func_start sub_812D594
-sub_812D594: @ 812D594
- push {lr}
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x2
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgX
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- bl ChangeBgY
- pop {r0}
- bx r0
- thumb_func_end sub_812D594
-
- thumb_func_start sub_812D5EC
-sub_812D5EC: @ 812D5EC
- push {r4-r6,lr}
- ldr r1, _0812D638 @ =gUnknown_20370C0
- ldrh r0, [r1]
- cmp r0, 0xF
- bhi _0812D632
- ldr r5, _0812D63C @ =gSpecialVar_0x8005
- ldrh r0, [r5]
- cmp r0, 0x5
- bhi _0812D632
- ldr r0, _0812D640 @ =gSaveBlock1Ptr
- ldr r2, [r0]
- ldrh r0, [r1]
- lsls r0, 2
- adds r2, r0
- ldr r0, _0812D644 @ =0x00003a54
- adds r2, r0
- ldrh r3, [r2]
- lsls r0, r3, 18
- lsrs r0, 20
- movs r4, 0x1
- adds r1, r4, 0
- ldrh r6, [r5]
- lsls r1, r6
- orrs r1, r0
- ldr r6, _0812D648 @ =0x00000fff
- adds r0, r6, 0
- ands r1, r0
- lsls r1, 2
- ldr r0, _0812D64C @ =0xffffc003
- ands r0, r3
- orrs r0, r1
- strh r0, [r2]
- strh r4, [r5]
- bl sub_812D650
-_0812D632:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0812D638: .4byte gUnknown_20370C0
-_0812D63C: .4byte gSpecialVar_0x8005
-_0812D640: .4byte gSaveBlock1Ptr
-_0812D644: .4byte 0x00003a54
-_0812D648: .4byte 0x00000fff
-_0812D64C: .4byte 0xffffc003
- thumb_func_end sub_812D5EC
-
- thumb_func_start sub_812D650
-sub_812D650: @ 812D650
- push {r4,lr}
- ldr r1, _0812D6A4 @ =gUnknown_20370C0
- ldrh r0, [r1]
- cmp r0, 0xF
- bhi _0812D69E
- ldr r0, _0812D6A8 @ =gSpecialVar_0x8005
- ldrh r4, [r0]
- adds r0, r4, 0
- cmp r0, 0x2
- bhi _0812D69E
- cmp r0, 0
- beq _0812D69E
- ldr r2, _0812D6AC @ =gSaveBlock1Ptr
- ldrh r3, [r1]
- cmp r0, 0x1
- bne _0812D684
- ldr r0, [r2]
- lsls r1, r3, 2
- adds r0, r1
- ldr r1, _0812D6B0 @ =0x00003a54
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x2
- beq _0812D69E
-_0812D684:
- ldr r2, [r2]
- lsls r0, r3, 2
- adds r2, r0
- ldr r0, _0812D6B0 @ =0x00003a54
- adds r2, r0
- movs r1, 0x3
- ands r1, r4
- ldrb r3, [r2]
- movs r0, 0x4
- negs r0, r0
- ands r0, r3
- orrs r0, r1
- strb r0, [r2]
-_0812D69E:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812D6A4: .4byte gUnknown_20370C0
-_0812D6A8: .4byte gSpecialVar_0x8005
-_0812D6AC: .4byte gSaveBlock1Ptr
-_0812D6B0: .4byte 0x00003a54
- thumb_func_end sub_812D650
-
- thumb_func_start sub_812D6B4
-sub_812D6B4: @ 812D6B4
- push {r4,lr}
- ldr r0, _0812D6EC @ =gUnknown_203B0FC
- ldr r4, [r0]
- bl sub_812E064
- lsls r0, 16
- lsrs r0, 16
- adds r4, 0xC
- adds r4, r0
- ldrb r1, [r4]
- movs r2, 0
- ldr r0, _0812D6F0 @ =gSaveBlock1Ptr
- ldr r0, [r0]
- lsls r1, 2
- adds r0, r1
- ldr r1, _0812D6F4 @ =0x00003a54
- adds r0, r1
- ldrh r0, [r0]
- lsls r1, r0, 18
- movs r3, 0x1
-_0812D6DC:
- lsrs r0, r1, 20
- asrs r0, r2
- ands r0, r3
- cmp r0, 0
- bne _0812D6F8
- movs r0, 0
- b _0812D704
- .align 2, 0
-_0812D6EC: .4byte gUnknown_203B0FC
-_0812D6F0: .4byte gSaveBlock1Ptr
-_0812D6F4: .4byte 0x00003a54
-_0812D6F8:
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x5
- bls _0812D6DC
- movs r0, 0x1
-_0812D704:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_812D6B4
-
- thumb_func_start sub_812D70C
-sub_812D70C: @ 812D70C
- push {r4,lr}
- movs r4, 0xFA
- lsls r4, 2
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812D70C
-
- thumb_func_start sub_812D724
-sub_812D724: @ 812D724
- push {r4,lr}
- lsls r0, 16
- asrs r0, 16
- movs r4, 0x22
- cmp r0, 0x2
- ble _0812D732
- movs r4, 0x3D
-_0812D732:
- movs r1, 0x3
- bl __modsi3
- lsls r0, 16
- asrs r0, 16
- lsls r1, r0, 1
- adds r1, r0
- lsls r1, 4
- subs r1, r0
- adds r1, 0x72
- ldr r0, _0812D760 @ =gUnknown_845FC44
- lsls r1, 16
- asrs r1, 16
- adds r2, r4, 0
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812D760: .4byte gUnknown_845FC44
- thumb_func_end sub_812D724
-
- thumb_func_start sub_812D764
-sub_812D764: @ 812D764
- push {lr}
- bl DestroySprite
- pop {r0}
- bx r0
- thumb_func_end sub_812D764
-
- thumb_func_start sub_812D770
-sub_812D770: @ 812D770
- push {lr}
- ldr r0, _0812D77C @ =0x000003e9
- bl FreeSpriteTilesByTag
- pop {r0}
- bx r0
- .align 2, 0
-_0812D77C: .4byte 0x000003e9
- thumb_func_end sub_812D770
-
- thumb_func_start sub_812D780
-sub_812D780: @ 812D780
- push {lr}
- adds r3, r0, 0
- adds r2, r1, 0
- lsls r3, 24
- lsrs r3, 24
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0812D7C0 @ =gUnknown_845FC78
- adds r1, r3, 0
- movs r3, 0x8
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0812D7C4 @ =gSprites
- lsls r2, r0, 4
- adds r2, r0
- lsls r2, 2
- adds r2, r1
- ldrb r3, [r2, 0x5]
- movs r1, 0xD
- negs r1, r1
- ands r1, r3
- movs r3, 0x8
- orrs r1, r3
- movs r3, 0xF
- ands r1, r3
- movs r3, 0x20
- orrs r1, r3
- strb r1, [r2, 0x5]
- pop {r1}
- bx r1
- .align 2, 0
-_0812D7C0: .4byte gUnknown_845FC78
-_0812D7C4: .4byte gSprites
- thumb_func_end sub_812D780
-
- thumb_func_start sub_812D7C8
-sub_812D7C8: @ 812D7C8
- push {r4,lr}
- ldr r4, _0812D7E0 @ =0x000003ea
- adds r0, r4, 0
- bl FreeSpriteTilesByTag
- adds r0, r4, 0
- bl FreeSpritePaletteByTag
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812D7E0: .4byte 0x000003ea
- thumb_func_end sub_812D7C8
-
- thumb_func_start sub_812D7E4
-sub_812D7E4: @ 812D7E4
- push {lr}
- ldr r0, _0812D7FC @ =gUnknown_845FCB8
- movs r1, 0xE2
- movs r2, 0x42
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r0, 24
- pop {r1}
- bx r1
- .align 2, 0
-_0812D7FC: .4byte gUnknown_845FCB8
- thumb_func_end sub_812D7E4
-
- thumb_func_start sub_812D800
-sub_812D800: @ 812D800
- push {r4,lr}
- adds r4, r0, 0
- bl FreeSpriteOamMatrix
- adds r0, r4, 0
- bl DestroySprite
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812D800
-
- thumb_func_start sub_812D814
-sub_812D814: @ 812D814
- push {lr}
- ldr r0, _0812D834 @ =0x000003ee
- bl FreeSpriteTilesByTag
- ldr r0, _0812D838 @ =0x000003ef
- bl FreeSpriteTilesByTag
- movs r0, 0xFC
- lsls r0, 2
- bl FreeSpriteTilesByTag
- ldr r0, _0812D83C @ =0x000003f1
- bl FreeSpriteTilesByTag
- pop {r0}
- bx r0
- .align 2, 0
-_0812D834: .4byte 0x000003ee
-_0812D838: .4byte 0x000003ef
-_0812D83C: .4byte 0x000003f1
- thumb_func_end sub_812D814
-
- thumb_func_start sub_812D840
-sub_812D840: @ 812D840
- push {lr}
- adds r2, r0, 0
- movs r1, 0x2E
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bne _0812D864
- movs r3, 0x24
- ldrsh r0, [r2, r3]
- subs r0, 0xA
- cmp r0, 0
- bge _0812D85E
- movs r0, 0
- strh r0, [r2, 0x24]
- strh r0, [r2, 0x2E]
- b _0812D882
-_0812D85E:
- ldrh r0, [r2, 0x24]
- subs r0, 0xA
- b _0812D880
-_0812D864:
- cmp r0, 0x2
- bne _0812D882
- ldrh r1, [r2, 0x24]
- movs r3, 0x24
- ldrsh r0, [r2, r3]
- cmp r0, 0xF0
- ble _0812D87C
- movs r1, 0
- movs r0, 0xF0
- strh r0, [r2, 0x24]
- strh r1, [r2, 0x2E]
- b _0812D882
-_0812D87C:
- adds r0, r1, 0
- adds r0, 0xA
-_0812D880:
- strh r0, [r2, 0x24]
-_0812D882:
- pop {r0}
- bx r0
- thumb_func_end sub_812D840
-
- thumb_func_start sub_812D888
-sub_812D888: @ 812D888
- push {r4,r5,lr}
- sub sp, 0x8
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0x1
- bne _0812D8B0
- ldr r0, _0812D8A8 @ =gUnknown_845FCE4
- movs r1, 0x94
- movs r2, 0x42
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0812D8AC @ =gUnknown_845ED60
- b _0812D906
- .align 2, 0
-_0812D8A8: .4byte gUnknown_845FCE4
-_0812D8AC: .4byte gUnknown_845ED60
-_0812D8B0:
- cmp r5, 0xE
- bne _0812D8D0
- ldr r0, _0812D8C8 @ =gUnknown_845FCFC
- movs r1, 0x94
- movs r2, 0x42
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0812D8CC @ =gUnknown_845DD20
- b _0812D906
- .align 2, 0
-_0812D8C8: .4byte gUnknown_845FCFC
-_0812D8CC: .4byte gUnknown_845DD20
-_0812D8D0:
- cmp r5, 0
- bne _0812D8F0
- ldr r0, _0812D8E8 @ =gUnknown_845FD14
- movs r1, 0x94
- movs r2, 0x42
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0812D8EC @ =gUnknown_845F580
- b _0812D906
- .align 2, 0
-_0812D8E8: .4byte gUnknown_845FD14
-_0812D8EC: .4byte gUnknown_845F580
-_0812D8F0:
- cmp r5, 0xD
- bne _0812D934
- ldr r0, _0812D928 @ =gUnknown_845FD2C
- movs r1, 0x94
- movs r2, 0x42
- movs r3, 0
- bl CreateSprite
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _0812D92C @ =gUnknown_845E540
-_0812D906:
- movs r1, 0xB0
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- ldr r1, _0812D930 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0, 0x5]
- movs r1, 0xF
- ands r1, r2
- movs r2, 0x60
- orrs r1, r2
- strb r1, [r0, 0x5]
- b _0812D950
- .align 2, 0
-_0812D928: .4byte gUnknown_845FD2C
-_0812D92C: .4byte gUnknown_845E540
-_0812D930: .4byte gSprites
-_0812D934:
- ldr r0, _0812D98C @ =gUnknown_845F61C
- adds r0, r5, r0
- ldrb r0, [r0]
- movs r1, 0x6
- str r1, [sp]
- ldr r1, _0812D990 @ =0x0000ffff
- str r1, [sp, 0x4]
- movs r1, 0x1
- movs r2, 0x94
- movs r3, 0x42
- bl sub_810C2A4
- lsls r0, 24
- lsrs r4, r0, 24
-_0812D950:
- ldr r1, _0812D994 @ =gSprites
- lsls r0, r4, 4
- adds r0, r4
- lsls r0, 2
- adds r1, 0x1C
- adds r0, r1
- ldr r1, _0812D998 @ =sub_812D840
- str r1, [r0]
- ldr r0, _0812D99C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, r1
- ldr r1, _0812D9A0 @ =0x00003a54
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- lsrs r0, 30
- cmp r0, 0x1
- bne _0812D982
- ldr r0, _0812D9A4 @ =gUnknown_845F5C0
- movs r1, 0xB0
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
-_0812D982:
- adds r0, r4, 0
- add sp, 0x8
- pop {r4,r5}
- pop {r1}
- bx r1
- .align 2, 0
-_0812D98C: .4byte gUnknown_845F61C
-_0812D990: .4byte 0x0000ffff
-_0812D994: .4byte gSprites
-_0812D998: .4byte sub_812D840
-_0812D99C: .4byte gSaveBlock1Ptr
-_0812D9A0: .4byte 0x00003a54
-_0812D9A4: .4byte gUnknown_845F5C0
- thumb_func_end sub_812D888
-
- thumb_func_start sub_812D9A8
-sub_812D9A8: @ 812D9A8
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 16
- lsls r2, r0, 2
- adds r2, r0
- lsls r2, 3
- ldr r0, _0812D9FC @ =gTasks+0x8
- adds r4, r2, r0
- lsrs r1, 16
- ldr r0, _0812DA00 @ =gUnknown_203B0FC
- ldr r2, [r0]
- ldrb r0, [r2, 0x7]
- lsrs r3, r0, 2
- subs r0, r3, 0x1
- cmp r1, r0
- bne _0812D9D0
- subs r0, r3, 0x2
- lsls r0, 16
- lsrs r1, r0, 16
-_0812D9D0:
- adds r0, r2, 0
- adds r0, 0xC
- adds r0, r1
- ldrb r0, [r0]
- cmp r0, 0x1
- beq _0812D9E8
- cmp r0, 0xE
- beq _0812D9E8
- cmp r0, 0
- beq _0812D9E8
- cmp r0, 0xD
- bne _0812DA08
-_0812D9E8:
- movs r0, 0x4
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0812DA04 @ =gSprites
- adds r0, r1
- bl DestroySprite
- b _0812DA0E
- .align 2, 0
-_0812D9FC: .4byte gTasks+0x8
-_0812DA00: .4byte gUnknown_203B0FC
-_0812DA04: .4byte gSprites
-_0812DA08:
- ldrh r0, [r4, 0x4]
- bl sub_810C2E8
-_0812DA0E:
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812D9A8
-
- thumb_func_start sub_812DA14
-sub_812DA14: @ 812DA14
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x14
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- bl sub_812E064
- ldr r1, _0812DAF8 @ =gUnknown_203B0FC
- ldr r1, [r1]
- lsls r0, 16
- lsrs r0, 16
- adds r1, 0xC
- adds r1, r0
- ldrb r0, [r1]
- lsls r5, r0, 1
- adds r5, r0
- lsls r5, 1
- adds r5, r4
- movs r0, 0x1
- bl sub_812E094
- ldr r1, _0812DAFC @ =gUnknown_3005EC8
- movs r0, 0x1
- strb r0, [r1]
- movs r0, 0x58
- str r0, [sp]
- movs r0, 0x20
- str r0, [sp, 0x4]
- movs r0, 0x3
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
- ldr r0, _0812DB00 @ =gUnknown_845F89C
- lsls r5, 2
- adds r0, r5, r0
- ldr r6, [r0]
- movs r0, 0
- adds r1, r6, 0
- movs r2, 0
- bl GetStringWidth
- movs r4, 0x54
- subs r0, r4, r0
- lsrs r1, r0, 31
- adds r0, r1
- asrs r0, 1
- lsls r2, r0, 24
- lsrs r2, 24
- movs r7, 0
- str r7, [sp]
- movs r0, 0x2
- mov r10, r0
- str r0, [sp, 0x4]
- ldr r0, _0812DB04 @ =gUnknown_845F5E3
- mov r9, r0
- str r0, [sp, 0x8]
- movs r0, 0x1
- negs r0, r0
- mov r8, r0
- str r0, [sp, 0xC]
- str r6, [sp, 0x10]
- movs r0, 0x3
- movs r1, 0
- movs r3, 0
- bl AddTextPrinterParametrized2
- ldr r6, _0812DB08 @ =gStringVar1
- ldr r0, _0812DB0C @ =gUnknown_845FA1C
- adds r5, r0
- ldr r1, [r5]
- adds r0, r6, 0
- bl StringExpandPlaceholders
- movs r0, 0
- adds r1, r6, 0
- movs r2, 0
- bl GetStringWidth
- subs r4, r0
- lsrs r0, r4, 31
- adds r4, r0
- asrs r0, r4, 1
- lsls r2, r0, 24
- lsrs r2, 24
- str r7, [sp]
- mov r0, r10
- str r0, [sp, 0x4]
- mov r0, r9
- str r0, [sp, 0x8]
- mov r0, r8
- str r0, [sp, 0xC]
- str r6, [sp, 0x10]
- movs r0, 0x3
- movs r1, 0
- movs r3, 0xA
- bl AddTextPrinterParametrized2
- movs r0, 0x3
- bl sub_812CEE0
- add sp, 0x14
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812DAF8: .4byte gUnknown_203B0FC
-_0812DAFC: .4byte gUnknown_3005EC8
-_0812DB00: .4byte gUnknown_845F89C
-_0812DB04: .4byte gUnknown_845F5E3
-_0812DB08: .4byte gStringVar1
-_0812DB0C: .4byte gUnknown_845FA1C
- thumb_func_end sub_812DA14
-
- thumb_func_start sub_812DB10
-sub_812DB10: @ 812DB10
- push {lr}
- movs r0, 0
- bl sub_812E094
- ldr r1, _0812DB24 @ =gUnknown_3005EC8
- movs r0, 0xFF
- strb r0, [r1]
- pop {r0}
- bx r0
- .align 2, 0
-_0812DB24: .4byte gUnknown_3005EC8
- thumb_func_end sub_812DB10
-
- thumb_func_start sub_812DB28
-sub_812DB28: @ 812DB28
- push {r4,lr}
- bl sub_812DB64
- bl sub_812DEF0
- ldr r4, _0812DB5C @ =gUnknown_203B0FC
- ldr r3, [r4]
- lsls r0, 2
- ldrb r2, [r3, 0x7]
- movs r1, 0x3
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0x7]
- ldr r0, _0812DB60 @ =gUnknown_3005EB0
- movs r1, 0
- movs r2, 0
- bl ListMenuInit
- ldr r1, [r4]
- strb r0, [r1, 0x8]
- movs r0, 0
- bl sub_812DFE4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812DB5C: .4byte gUnknown_203B0FC
-_0812DB60: .4byte gUnknown_3005EB0
- thumb_func_end sub_812DB28
-
- thumb_func_start sub_812DB64
-sub_812DB64: @ 812DB64
- ldr r2, _0812DBB4 @ =gUnknown_3005EB0
- ldr r0, _0812DBB8 @ =gUnknown_203B100
- ldr r0, [r0]
- str r0, [r2]
- ldr r0, _0812DBBC @ =sub_812DBC0
- str r0, [r2, 0x4]
- movs r0, 0
- str r0, [r2, 0x8]
- movs r1, 0
- movs r0, 0x1
- strh r0, [r2, 0xC]
- strh r0, [r2, 0xE]
- strb r1, [r2, 0x10]
- strb r1, [r2, 0x11]
- movs r0, 0x8
- strb r0, [r2, 0x12]
- strb r1, [r2, 0x13]
- ldrb r1, [r2, 0x14]
- subs r0, 0x18
- ands r0, r1
- movs r1, 0x4
- orrs r0, r1
- movs r1, 0xF
- ands r0, r1
- movs r1, 0x20
- orrs r0, r1
- strb r0, [r2, 0x14]
- movs r0, 0x30
- strb r0, [r2, 0x15]
- movs r3, 0x3F
- movs r0, 0
- strb r0, [r2, 0x16]
- ldrb r1, [r2, 0x17]
- subs r0, 0x40
- ands r0, r1
- movs r1, 0x2
- orrs r0, r1
- ands r0, r3
- strb r0, [r2, 0x17]
- bx lr
- .align 2, 0
-_0812DBB4: .4byte gUnknown_3005EB0
-_0812DBB8: .4byte gUnknown_203B100
-_0812DBBC: .4byte sub_812DBC0
- thumb_func_end sub_812DB64
-
- thumb_func_start sub_812DBC0
-sub_812DBC0: @ 812DBC0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- adds r7, r0, 0
- lsls r1, 24
- lsrs r1, 24
- ldr r0, _0812DC68 @ =gUnknown_203B104
- mov r10, r0
- movs r2, 0
- mov r8, r2
- str r2, [r0]
- ldr r6, _0812DC6C @ =gUnknown_203B0FC
- ldr r0, [r6]
- ldrb r2, [r0, 0xA]
- ldrb r0, [r0, 0xB]
- adds r2, r0
- mov r9, r2
- adds r0, r7, 0
- bl sub_812DDF0
- ldr r0, _0812DC70 @ =sub_812C694
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0xFF
- bne _0812DBFE
- b _0812DD3A
-_0812DBFE:
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0812DC74 @ =gTasks
- adds r5, r0, r1
- movs r0, 0x5
- bl PlaySE
- mov r0, r8
- strh r0, [r5, 0xA]
- ldr r0, [r6]
- ldrb r0, [r0, 0x8]
- add r1, sp, 0x8
- movs r2, 0
- bl get_coro_args_x18_x1A
- ldr r1, [r6]
- add r0, sp, 0x8
- ldrh r0, [r0]
- strh r0, [r1, 0x4]
- ldrb r0, [r1, 0x7]
- lsrs r0, 2
- subs r0, 0x1
- cmp r7, r0
- beq _0812DCD8
- bl sub_812D174
- lsls r0, r7, 24
- lsrs r0, 24
- bl sub_812D1A8
- ldr r2, [r6]
- ldrb r1, [r2, 0x7]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812DCBC
- adds r0, r2, 0
- adds r0, 0x23
- ldrb r1, [r0]
- movs r0, 0x4
- ands r0, r1
- cmp r0, 0
- bne _0812DC7C
- adds r0, r4, 0
- mov r1, r9
- bl sub_812D9A8
- mov r1, r10
- str r7, [r1]
- ldr r0, _0812DC78 @ =sub_812DD50
- str r0, [r5]
- b _0812DD3A
- .align 2, 0
-_0812DC68: .4byte gUnknown_203B104
-_0812DC6C: .4byte gUnknown_203B0FC
-_0812DC70: .4byte sub_812C694
-_0812DC74: .4byte gTasks
-_0812DC78: .4byte sub_812DD50
-_0812DC7C:
- ldr r4, _0812DCB8 @ =gSprites
- movs r2, 0xC
- ldrsh r0, [r5, r2]
- lsls r1, r0, 4
- adds r1, r0
- lsls r1, 2
- adds r1, r4
- adds r1, 0x3E
- ldrb r3, [r1]
- movs r2, 0x5
- negs r2, r2
- adds r0, r2, 0
- ands r0, r3
- strb r0, [r1]
- ldr r0, [r6]
- adds r0, 0x23
- ldrb r1, [r0]
- ands r2, r1
- strb r2, [r0]
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r4
- mov r1, r8
- strh r1, [r0, 0x2E]
- bl sub_812CD3C
- b _0812DD3A
- .align 2, 0
-_0812DCB8: .4byte gSprites
-_0812DCBC:
- movs r0, 0xD0
- str r0, [sp]
- movs r0, 0x20
- str r0, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0x11
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
- movs r0, 0x2
- bl sub_812CEE0
- b _0812DD3A
-_0812DCD8:
- bl sub_812DDAC
- ldr r0, [r6]
- ldrb r1, [r0, 0x7]
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0812DD10
- ldr r2, _0812DD0C @ =gSprites
- movs r0, 0xC
- ldrsh r1, [r5, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- adds r0, 0x3E
- ldrb r1, [r0]
- movs r2, 0x4
- orrs r1, r2
- strb r1, [r0]
- ldr r1, [r6]
- adds r1, 0x23
- ldrb r0, [r1]
- orrs r0, r2
- strb r0, [r1]
- b _0812DD3A
- .align 2, 0
-_0812DD0C: .4byte gSprites
-_0812DD10:
- movs r2, 0
- ldr r5, _0812DD4C @ =gSprites
- adds r4, r6, 0
- movs r3, 0x4
-_0812DD18:
- ldr r0, [r4]
- adds r0, 0x1D
- adds r0, r2
- ldrb r1, [r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r5
- adds r0, 0x3E
- ldrb r1, [r0]
- orrs r1, r3
- strb r1, [r0]
- adds r0, r2, 0x1
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0x5
- bls _0812DD18
-_0812DD3A:
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812DD4C: .4byte gSprites
- thumb_func_end sub_812DBC0
-
- thumb_func_start sub_812DD50
-sub_812DD50: @ 812DD50
- push {r4,lr}
- lsls r0, 24
- lsrs r0, 24
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- ldr r0, _0812DD98 @ =gTasks
- adds r4, r0
- ldr r0, _0812DD9C @ =gUnknown_203B0FC
- ldr r0, [r0]
- ldr r1, _0812DDA0 @ =gUnknown_203B104
- adds r0, 0xC
- ldr r1, [r1]
- adds r0, r1
- ldrb r0, [r0]
- bl sub_812D888
- lsls r0, 24
- lsrs r0, 24
- movs r3, 0
- strh r0, [r4, 0xC]
- ldr r2, _0812DDA4 @ =gSprites
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- adds r0, r2
- strh r3, [r0, 0x2E]
- bl sub_812CD3C
- ldr r0, _0812DDA8 @ =sub_812C694
- str r0, [r4]
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812DD98: .4byte gTasks
-_0812DD9C: .4byte gUnknown_203B0FC
-_0812DDA0: .4byte gUnknown_203B104
-_0812DDA4: .4byte gSprites
-_0812DDA8: .4byte sub_812C694
- thumb_func_end sub_812DD50
-
- thumb_func_start sub_812DDAC
-sub_812DDAC: @ 812DDAC
- push {lr}
- sub sp, 0x10
- movs r0, 0xD0
- str r0, [sp]
- movs r0, 0x20
- str r0, [sp, 0x4]
- movs r0, 0x2
- movs r1, 0x11
- movs r2, 0
- movs r3, 0
- bl FillWindowPixelRect
- ldr r2, _0812DDEC @ =gUnknown_84181C3
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0x2
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParametrized
- movs r0, 0x2
- bl sub_812CEE0
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0812DDEC: .4byte gUnknown_84181C3
- thumb_func_end sub_812DDAC
-
- thumb_func_start sub_812DDF0
-sub_812DDF0: @ 812DDF0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x18
- mov r8, r0
- lsls r5, r1, 24
- lsrs r5, 24
- ldr r7, _0812DE68 @ =gUnknown_203B0FC
- ldr r0, [r7]
- ldrb r0, [r0, 0x8]
- mov r4, sp
- adds r4, 0x16
- add r1, sp, 0x14
- adds r2, r4, 0
- bl get_coro_args_x18_x1A
- add r1, sp, 0x14
- ldrh r0, [r4]
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r6, r0, 16
- ldrh r0, [r4]
- lsls r3, r0, 3
- subs r3, r0
- lsls r3, 25
- movs r0, 0x80
- lsls r0, 19
- adds r3, r0
- lsrs r3, 24
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- ldr r0, _0812DE6C @ =gUnknown_845F5E6
- str r0, [sp, 0x8]
- str r1, [sp, 0xC]
- ldr r0, _0812DE70 @ =gUnknown_203B100
- ldr r1, [r0]
- mov r2, r8
- lsls r0, r2, 3
- adds r0, r1
- ldr r0, [r0]
- str r0, [sp, 0x10]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x8
- bl AddTextPrinterParametrized2
- cmp r5, 0
- bne _0812DEC0
- add r0, sp, 0x14
- ldr r1, [r7]
- ldrh r2, [r0]
- ldrb r0, [r1, 0xA]
- cmp r2, r0
- bcs _0812DE74
- ldrb r0, [r1, 0xB]
- adds r0, 0x1
- b _0812DE86
- .align 2, 0
-_0812DE68: .4byte gUnknown_203B0FC
-_0812DE6C: .4byte gUnknown_845F5E6
-_0812DE70: .4byte gUnknown_203B100
-_0812DE74:
- cmp r2, r0
- bls _0812DE88
- ldrb r0, [r1, 0x7]
- lsrs r0, 2
- subs r0, 0x1
- cmp r6, r0
- beq _0812DE88
- ldrb r0, [r1, 0xB]
- subs r0, 0x1
-_0812DE86:
- strb r0, [r1, 0xB]
-_0812DE88:
- ldr r0, _0812DEE4 @ =gUnknown_203B0FC
- ldr r2, [r0]
- ldrb r0, [r2, 0xB]
- lsls r3, r0, 3
- subs r3, r0
- lsls r3, 25
- movs r0, 0x80
- lsls r0, 19
- adds r3, r0
- lsrs r3, 24
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- ldr r0, _0812DEE8 @ =gUnknown_845F5E3
- str r0, [sp, 0x8]
- str r1, [sp, 0xC]
- ldrb r0, [r2, 0x9]
- ldr r1, _0812DEEC @ =gUnknown_203B100
- ldr r1, [r1]
- lsls r0, 3
- adds r0, r1
- ldr r0, [r0]
- str r0, [sp, 0x10]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x8
- bl AddTextPrinterParametrized2
-_0812DEC0:
- ldr r1, _0812DEE4 @ =gUnknown_203B0FC
- ldr r0, [r1]
- mov r2, r8
- strb r2, [r0, 0x9]
- ldr r2, [r1]
- ldrh r0, [r4]
- strb r0, [r2, 0xB]
- ldr r1, [r1]
- add r0, sp, 0x14
- ldrh r0, [r0]
- strb r0, [r1, 0xA]
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0812DEE4: .4byte gUnknown_203B0FC
-_0812DEE8: .4byte gUnknown_845F5E3
-_0812DEEC: .4byte gUnknown_203B100
- thumb_func_end sub_812DDF0
-
- thumb_func_start sub_812DEF0
-sub_812DEF0: @ 812DEF0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- movs r4, 0
- movs r6, 0
- ldr r0, _0812DF44 @ =0x0000fdff
- mov r8, r0
- ldr r7, _0812DF48 @ =gUnknown_845F60C
-_0812DF00:
- adds r0, r6, 0
- bl sub_812D0C0
- lsls r0, 24
- lsrs r5, r0, 24
- ldr r0, _0812DF4C @ =gSaveBlock1Ptr
- ldr r0, [r0]
- lsls r1, r5, 2
- adds r0, r1
- ldr r1, _0812DF50 @ =0x00003a54
- adds r0, r1
- ldrb r0, [r0]
- lsls r0, 30
- cmp r0, 0
- beq _0812DF88
- ldr r0, _0812DF54 @ =gUnknown_845F5EA
- lsls r1, r5, 1
- adds r3, r1, r0
- ldrh r0, [r3]
- cmp r0, r8
- bhi _0812DF60
- ldr r0, _0812DF58 @ =gUnknown_203B100
- ldr r0, [r0]
- lsls r2, r4, 3
- adds r2, r0
- ldrh r1, [r3]
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _0812DF5C @ =gTrainers+0x4
- adds r0, r1
- str r0, [r2]
- str r4, [r2, 0x4]
- b _0812DF78
- .align 2, 0
-_0812DF44: .4byte 0x0000fdff
-_0812DF48: .4byte gUnknown_845F60C
-_0812DF4C: .4byte gSaveBlock1Ptr
-_0812DF50: .4byte 0x00003a54
-_0812DF54: .4byte gUnknown_845F5EA
-_0812DF58: .4byte gUnknown_203B100
-_0812DF5C: .4byte gTrainers+0x4
-_0812DF60:
- ldr r0, _0812DFC0 @ =gUnknown_203B100
- ldr r0, [r0]
- lsls r1, r4, 3
- adds r1, r0
- ldrh r0, [r3]
- ldr r2, _0812DFC4 @ =0xffff0200
- adds r0, r2
- lsls r0, 2
- adds r0, r7
- ldr r0, [r0]
- str r0, [r1]
- str r4, [r1, 0x4]
-_0812DF78:
- ldr r0, _0812DFC8 @ =gUnknown_203B0FC
- ldr r0, [r0]
- adds r0, 0xC
- adds r0, r4
- strb r5, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
-_0812DF88:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, 0xF
- bls _0812DF00
- ldr r0, _0812DFC0 @ =gUnknown_203B100
- ldr r1, [r0]
- lsls r0, r4, 3
- adds r0, r1
- ldr r1, _0812DFCC @ =gUnknown_84161C1
- str r1, [r0]
- str r4, [r0, 0x4]
- ldr r0, _0812DFC8 @ =gUnknown_203B0FC
- ldr r0, [r0]
- adds r0, 0xC
- adds r0, r4
- movs r1, 0xFF
- strb r1, [r0]
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r1, _0812DFD0 @ =gUnknown_3005EB0
- strh r4, [r1, 0xC]
- cmp r4, 0x4
- bhi _0812DFD4
- strh r4, [r1, 0xE]
- b _0812DFD8
- .align 2, 0
-_0812DFC0: .4byte gUnknown_203B100
-_0812DFC4: .4byte 0xffff0200
-_0812DFC8: .4byte gUnknown_203B0FC
-_0812DFCC: .4byte gUnknown_84161C1
-_0812DFD0: .4byte gUnknown_3005EB0
-_0812DFD4:
- movs r0, 0x5
- strh r0, [r1, 0xE]
-_0812DFD8:
- adds r0, r4, 0
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_812DEF0
-
- thumb_func_start sub_812DFE4
-sub_812DFE4: @ 812DFE4
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- movs r1, 0x3
- bl CopyWindowToVram
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_812DFE4
-
- thumb_func_start sub_812E000
-sub_812E000: @ 812E000
- push {r4,lr}
- sub sp, 0x10
- mov r1, sp
- ldr r0, _0812E040 @ =gUnknown_845FD44
- ldm r0!, {r2-r4}
- stm r1!, {r2-r4}
- ldr r0, [r0]
- str r0, [r1]
- ldr r4, _0812E044 @ =gUnknown_203B0FC
- ldr r2, [r4]
- ldrb r0, [r2, 0x7]
- lsrs r0, 2
- cmp r0, 0x5
- bls _0812E036
- mov r1, sp
- movs r0, 0
- strh r0, [r1, 0x6]
- ldrb r0, [r2, 0x7]
- lsrs r0, 2
- subs r0, 0x5
- strh r0, [r1, 0x8]
- adds r1, r2, 0x4
- mov r0, sp
- bl AddScrollIndicatorArrowPair
- ldr r1, [r4]
- strb r0, [r1, 0x6]
-_0812E036:
- add sp, 0x10
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812E040: .4byte gUnknown_845FD44
-_0812E044: .4byte gUnknown_203B0FC
- thumb_func_end sub_812E000
-
- thumb_func_start sub_812E048
-sub_812E048: @ 812E048
- push {lr}
- ldr r0, _0812E060 @ =gUnknown_203B0FC
- ldr r1, [r0]
- ldrb r0, [r1, 0x7]
- lsrs r0, 2
- cmp r0, 0x5
- bls _0812E05C
- ldrb r0, [r1, 0x6]
- bl RemoveScrollIndicatorArrowPair
-_0812E05C:
- pop {r0}
- bx r0
- .align 2, 0
-_0812E060: .4byte gUnknown_203B0FC
- thumb_func_end sub_812E048
-
- thumb_func_start sub_812E064
-sub_812E064: @ 812E064
- push {r4,lr}
- sub sp, 0x4
- ldr r0, _0812E090 @ =gUnknown_203B0FC
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- mov r4, sp
- adds r4, 0x2
- mov r1, sp
- adds r2, r4, 0
- bl get_coro_args_x18_x1A
- mov r1, sp
- ldrh r0, [r4]
- ldrh r1, [r1]
- adds r0, r1
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x4
- pop {r4}
- pop {r1}
- bx r1
- .align 2, 0
-_0812E090: .4byte gUnknown_203B0FC
- thumb_func_end sub_812E064
-
- thumb_func_start sub_812E094
-sub_812E094: @ 812E094
- push {r4-r6,lr}
- lsls r0, 24
- lsrs r0, 24
- adds r4, r0, 0
- ldr r6, _0812E0EC @ =gUnknown_203B0FC
- ldr r0, [r6]
- adds r0, 0x23
- ldrb r0, [r0]
- lsls r0, 31
- lsrs r0, 31
- cmp r0, r4
- beq _0812E108
- ldr r5, _0812E0F0 @ =sub_812E110
- adds r0, r5, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- bne _0812E0C8
- adds r0, r5, 0
- movs r1, 0x8
- bl CreateTask
- lsls r0, 24
- lsrs r2, r0, 24
-_0812E0C8:
- ldr r0, _0812E0F4 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- movs r0, 0
- strh r0, [r1, 0x8]
- movs r0, 0x4
- strh r0, [r1, 0xA]
- cmp r4, 0x1
- bne _0812E0F8
- strh r4, [r1, 0xC]
- ldr r0, [r6]
- adds r0, 0x23
- ldrb r1, [r0]
- movs r2, 0x1
- orrs r1, r2
- b _0812E106
- .align 2, 0
-_0812E0EC: .4byte gUnknown_203B0FC
-_0812E0F0: .4byte sub_812E110
-_0812E0F4: .4byte gTasks
-_0812E0F8:
- strh r0, [r1, 0xC]
- ldr r0, [r6]
- adds r0, 0x23
- ldrb r2, [r0]
- movs r1, 0x2
- negs r1, r1
- ands r1, r2
-_0812E106:
- strb r1, [r0]
-_0812E108:
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_812E094
-
- thumb_func_start sub_812E110
-sub_812E110: @ 812E110
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0812E130 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- beq _0812E134
- cmp r0, 0x1
- beq _0812E154
- b _0812E170
- .align 2, 0
-_0812E130: .4byte gTasks
-_0812E134:
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bne _0812E170
- movs r0, 0x1
- movs r1, 0
- bl sub_812E178
- movs r0, 0x4
- strh r0, [r4, 0xA]
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0812E170
-_0812E154:
- ldrh r0, [r4, 0xA]
- subs r0, 0x1
- strh r0, [r4, 0xA]
- lsls r0, 16
- cmp r0, 0
- bne _0812E170
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- movs r0, 0x1
- bl sub_812E178
- adds r0, r5, 0
- bl DestroyTask
-_0812E170:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_812E110
-
- thumb_func_start sub_812E178
-sub_812E178: @ 812E178
- push {r4-r6,lr}
- sub sp, 0xC
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 16
- asrs r5, r1, 16
- cmp r5, 0
- beq _0812E18C
- cmp r5, 0x3
- bne _0812E252
-_0812E18C:
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x8C
- movs r2, 0xE
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- movs r5, 0xA
- str r5, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0xA1
- movs r2, 0xF
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x8D
- movs r2, 0x19
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x8E
- movs r2, 0x1A
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x8F
- movs r2, 0xE
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- movs r0, 0xB
- str r0, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0xF
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x90
- movs r2, 0x1A
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x91
- movs r2, 0xE
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0xA3
- movs r2, 0xF
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x92
- movs r2, 0x19
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x93
- b _0812E470
-_0812E252:
- cmp r5, 0x1
- bne _0812E2F4
- str r5, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x9B
- movs r2, 0xE
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- movs r4, 0xB
- str r4, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x9C
- movs r2, 0xF
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x96
- movs r2, 0x1A
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x9D
- movs r2, 0xE
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0xF
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x90
- movs r2, 0x1A
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x9E
- movs r2, 0xE
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x9F
- movs r2, 0xF
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r5, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x99
- b _0812E470
-_0812E2F4:
- cmp r5, 0x2
- bne _0812E398
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x94
- movs r2, 0xE
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- movs r5, 0xB
- str r5, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x95
- movs r2, 0xF
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x96
- movs r2, 0x1A
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x8F
- movs r2, 0xE
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x9A
- movs r2, 0xF
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x90
- movs r2, 0x1A
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x97
- movs r2, 0xE
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x98
- movs r2, 0xF
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x99
- b _0812E470
-_0812E398:
- cmp r5, 0x4
- bne _0812E47A
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x83
- movs r2, 0xE
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- movs r5, 0xA
- str r5, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0xA0
- movs r2, 0xF
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x84
- movs r2, 0x19
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x85
- movs r2, 0x1A
- movs r3, 0xA
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x86
- movs r2, 0xE
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0xA2
- movs r2, 0xF
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x87
- movs r2, 0x19
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x88
- movs r2, 0x1A
- movs r3, 0xB
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x83
- movs r2, 0xE
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- str r5, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0xA0
- movs r2, 0xF
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x84
- movs r2, 0x19
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- str r4, [sp]
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x85
-_0812E470:
- movs r2, 0x1A
- movs r3, 0xC
- bl FillBgTilemapBufferRect
- b _0812E496
-_0812E47A:
- cmp r5, 0x5
- bne _0812E496
- movs r0, 0xD
- str r0, [sp]
- movs r0, 0x3
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0
- movs r2, 0xE
- movs r3, 0xA
- bl FillBgTilemapBufferRect
-_0812E496:
- adds r0, r6, 0
- bl CopyBgTilemapBufferToVram
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- thumb_func_end sub_812E178
-
- thumb_func_start sub_812E4A4
-sub_812E4A4: @ 812E4A4
- push {r4,lr}
- sub sp, 0x14
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0812E4E0 @ =gUnknown_203B0FC
- ldr r0, [r0]
- ldrb r0, [r0, 0x8]
- bl ListMenuGetYCoordForPrintingArrowCursor
- lsls r0, 16
- lsrs r0, 16
- cmp r4, 0x1
- bne _0812E4EC
- lsls r3, r0, 24
- lsrs r3, 24
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- ldr r0, _0812E4E4 @ =gUnknown_845F5E3
- str r0, [sp, 0x8]
- str r1, [sp, 0xC]
- ldr r0, _0812E4E8 @ =gUnknown_841623B
- str r0, [sp, 0x10]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl AddTextPrinterParametrized2
- b _0812E50A
- .align 2, 0
-_0812E4E0: .4byte gUnknown_203B0FC
-_0812E4E4: .4byte gUnknown_845F5E3
-_0812E4E8: .4byte gUnknown_841623B
-_0812E4EC:
- lsls r3, r0, 24
- lsrs r3, 24
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- ldr r0, _0812E514 @ =gUnknown_845F5E0
- str r0, [sp, 0x8]
- str r1, [sp, 0xC]
- ldr r0, _0812E518 @ =gUnknown_841623B
- str r0, [sp, 0x10]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0
- bl AddTextPrinterParametrized2
-_0812E50A:
- add sp, 0x14
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0812E514: .4byte gUnknown_845F5E0
-_0812E518: .4byte gUnknown_841623B
- thumb_func_end sub_812E4A4
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/help_system.s b/asm/help_system.s
index b0d5c5f34..7026c65d5 100644
--- a/asm/help_system.s
+++ b/asm/help_system.s
@@ -2040,14 +2040,14 @@ sub_813C828: @ 813C828
adds r2, r3
lsls r2, 24
lsrs r2, 24
- ldr r0, _0813C85C @ =gUnknown_841623B
+ ldr r0, _0813C85C @ =gFameCheckerText_ListMenuCursor
bl sub_813C4CC
pop {r4}
pop {r0}
bx r0
.align 2, 0
_0813C858: .4byte gUnknown_203F190
-_0813C85C: .4byte gUnknown_841623B
+_0813C85C: .4byte gFameCheckerText_ListMenuCursor
thumb_func_end sub_813C828
thumb_func_start sub_813C860
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 5ad6b8b5c..8650e912d 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -138,8 +138,8 @@ _08107EB0: .4byte gUnknown_203AD10
_08107EB4: .4byte gUnknown_203ACFC
thumb_func_end sub_8107DB4
- thumb_func_start sub_8107EB8
-sub_8107EB8: @ 8107EB8
+ thumb_func_start UseFameCheckerFromMenu
+UseFameCheckerFromMenu: @ 8107EB8
push {lr}
ldr r2, _08107EC8 @ =sub_80568A8
movs r0, 0
@@ -149,7 +149,7 @@ sub_8107EB8: @ 8107EB8
bx r0
.align 2, 0
_08107EC8: .4byte sub_80568A8
- thumb_func_end sub_8107EB8
+ thumb_func_end UseFameCheckerFromMenu
thumb_func_start sub_8107ECC
sub_8107ECC: @ 8107ECC
@@ -871,7 +871,7 @@ _0810848C:
bl StringCopy
ldr r0, [r5]
adds r0, r4
- ldr r1, _08108550 @ =gUnknown_84161C1
+ ldr r1, _08108550 @ =gFameCheckerText_Cancel
bl StringAppend
ldr r0, _08108548 @ =gUnknown_203AD18
ldr r2, [r0]
@@ -951,7 +951,7 @@ _08108540: .4byte gUnknown_203AD10
_08108544: .4byte gUnknown_203AD1C
_08108548: .4byte gUnknown_203AD18
_0810854C: .4byte gUnknown_8452F60
-_08108550: .4byte gUnknown_84161C1
+_08108550: .4byte gFameCheckerText_Cancel
_08108554: .4byte gUnknown_3005E70
_08108558: .4byte sub_81085A4
_0810855C: .4byte sub_8108654
@@ -1257,7 +1257,7 @@ bag_menu_print_cursor: @ 810878C
bl FillWindowPixelRect
b _081087DE
_081087C8:
- ldr r2, _081087E8 @ =gUnknown_841623B
+ ldr r2, _081087E8 @ =gFameCheckerText_ListMenuCursor
str r5, [sp]
movs r0, 0
str r0, [sp, 0x4]
@@ -1273,7 +1273,7 @@ _081087DE:
pop {r0}
bx r0
.align 2, 0
-_081087E8: .4byte gUnknown_841623B
+_081087E8: .4byte gFameCheckerText_ListMenuCursor
thumb_func_end bag_menu_print_cursor
thumb_func_start sub_81087EC
diff --git a/asm/item_pc.s b/asm/item_pc.s
index 8e71d9dc3..b222b9ca2 100644
--- a/asm/item_pc.s
+++ b/asm/item_pc.s
@@ -589,7 +589,7 @@ _0810D8A4:
ldr r3, [r0]
lsls r0, r4, 3
adds r0, r3
- ldr r1, _0810D944 @ =gUnknown_84161C1
+ ldr r1, _0810D944 @ =gFameCheckerText_Cancel
str r1, [r0]
movs r1, 0x2
negs r1, r1
@@ -657,7 +657,7 @@ _0810D8A4:
_0810D938: .4byte gSaveBlock1Ptr
_0810D93C: .4byte gUnknown_203ADC4
_0810D940: .4byte gUnknown_203ADBC
-_0810D944: .4byte gUnknown_84161C1
+_0810D944: .4byte gFameCheckerText_Cancel
_0810D948: .4byte gUnknown_3005E70
_0810D94C: .4byte sub_810D954
_0810D950: .4byte sub_810DA20
@@ -879,7 +879,7 @@ sub_810DAD4: @ 810DAD4
bl FillWindowPixelRect
b _0810DB26
_0810DB10:
- ldr r2, _0810DB30 @ =gUnknown_841623B
+ ldr r2, _0810DB30 @ =gFameCheckerText_ListMenuCursor
str r5, [sp]
movs r0, 0
str r0, [sp, 0x4]
@@ -895,7 +895,7 @@ _0810DB26:
pop {r0}
bx r0
.align 2, 0
-_0810DB30: .4byte gUnknown_841623B
+_0810DB30: .4byte gFameCheckerText_ListMenuCursor
thumb_func_end sub_810DAD4
thumb_func_start sub_810DB34
diff --git a/asm/item_use.s b/asm/item_use.s
index a7f7b1b7c..f653247d9 100644
--- a/asm/item_use.s
+++ b/asm/item_use.s
@@ -320,7 +320,7 @@ sub_80A1208: @ 80A1208
ldr r0, _080A1224 @ =gUnknown_203AD30
ldrh r0, [r0]
strh r0, [r1, 0x20]
- ldr r1, _080A1228 @ =sub_8107EB8
+ ldr r1, _080A1228 @ =UseFameCheckerFromMenu
mov r0, sp
movs r2, 0
bl sub_80BEBEC
@@ -329,7 +329,7 @@ sub_80A1208: @ 80A1208
bx r0
.align 2, 0
_080A1224: .4byte gUnknown_203AD30
-_080A1228: .4byte sub_8107EB8
+_080A1228: .4byte UseFameCheckerFromMenu
thumb_func_end sub_80A1208
thumb_func_start sub_80A122C
@@ -1045,14 +1045,14 @@ _080A17D0: .4byte sub_80A17E8
thumb_func_start sub_80A17D4
sub_80A17D4: @ 80A17D4
push {lr}
- ldr r1, _080A17E4 @ =sub_8107EB8
+ ldr r1, _080A17E4 @ =UseFameCheckerFromMenu
movs r0, 0
movs r2, 0
bl sub_81317F8
pop {r0}
bx r0
.align 2, 0
-_080A17E4: .4byte sub_8107EB8
+_080A17E4: .4byte UseFameCheckerFromMenu
thumb_func_end sub_80A17D4
thumb_func_start sub_80A17E8
@@ -1123,14 +1123,14 @@ _080A1868: .4byte sub_80A1880
thumb_func_start sub_80A186C
sub_80A186C: @ 80A186C
push {lr}
- ldr r1, _080A187C @ =sub_8107EB8
+ ldr r1, _080A187C @ =UseFameCheckerFromMenu
movs r0, 0
movs r2, 0
bl sub_813CD50
pop {r0}
bx r0
.align 2, 0
-_080A187C: .4byte sub_8107EB8
+_080A187C: .4byte UseFameCheckerFromMenu
thumb_func_end sub_80A186C
thumb_func_start sub_80A1880
@@ -1239,13 +1239,13 @@ _080A1948: .4byte sub_80A1960
thumb_func_start sub_80A194C
sub_80A194C: @ 80A194C
push {lr}
- ldr r1, _080A195C @ =sub_8107EB8
+ ldr r1, _080A195C @ =UseFameCheckerFromMenu
movs r0, 0
bl sub_815ABC4
pop {r0}
bx r0
.align 2, 0
-_080A195C: .4byte sub_8107EB8
+_080A195C: .4byte UseFameCheckerFromMenu
thumb_func_end sub_80A194C
thumb_func_start sub_80A1960
@@ -1646,13 +1646,13 @@ _080A1CA8: .4byte sub_80A1CC0
thumb_func_start sub_80A1CAC
sub_80A1CAC: @ 80A1CAC
push {lr}
- ldr r1, _080A1CBC @ =sub_8107EB8
+ ldr r1, _080A1CBC @ =UseFameCheckerFromMenu
movs r0, 0
bl sub_80BFF50
pop {r0}
bx r0
.align 2, 0
-_080A1CBC: .4byte sub_8107EB8
+_080A1CBC: .4byte UseFameCheckerFromMenu
thumb_func_end sub_80A1CAC
thumb_func_start sub_80A1CC0
@@ -1730,12 +1730,12 @@ _080A1D54: .4byte sub_80A1D68
thumb_func_start sub_80A1D58
sub_80A1D58: @ 80A1D58
push {lr}
- ldr r0, _080A1D64 @ =sub_8107EB8
- bl sub_812C3AC
+ ldr r0, _080A1D64 @ =UseFameCheckerFromMenu
+ bl UseFameChecker
pop {r0}
bx r0
.align 2, 0
-_080A1D64: .4byte sub_8107EB8
+_080A1D64: .4byte UseFameCheckerFromMenu
thumb_func_end sub_80A1D58
thumb_func_start sub_80A1D68
@@ -1752,7 +1752,7 @@ sub_80A1D68: @ 80A1D68
bl sub_80563F0
bl sub_80A1184
ldr r0, _080A1D98 @ =c2_exit_to_overworld_2_switch
- bl sub_812C3AC
+ bl UseFameChecker
adds r0, r4, 0
bl DestroyTask
_080A1D8E:
diff --git a/asm/learn_move.s b/asm/learn_move.s
index f3f472847..fec6928d3 100644
--- a/asm/learn_move.s
+++ b/asm/learn_move.s
@@ -1331,7 +1331,7 @@ _080E513C:
lsls r7, 1
adds r1, r7
adds r0, r1
- ldr r1, _080E51F8 @ =gUnknown_84161C1
+ ldr r1, _080E51F8 @ =gFameCheckerText_Cancel
bl StringCopy
ldr r1, [r4]
ldrb r0, [r1, 0x1A]
@@ -1367,7 +1367,7 @@ _080E51AA:
adds r0, r2, 0
adds r0, 0x20
adds r0, r3
- ldr r1, _080E51F8 @ =gUnknown_84161C1
+ ldr r1, _080E51F8 @ =gFameCheckerText_Cancel
str r1, [r0]
adds r2, 0x24
adds r2, r3
@@ -1396,7 +1396,7 @@ _080E51E8: .4byte gUnknown_203AAB4
_080E51EC: .4byte gPlayerParty
_080E51F0: .4byte gMoveNames
_080E51F4: .4byte gStringVar1
-_080E51F8: .4byte gUnknown_84161C1
+_080E51F8: .4byte gFameCheckerText_Cancel
_080E51FC: .4byte gUnknown_3005E70
_080E5200: .4byte gUnknown_83FFA94
thumb_func_end sub_80E50CC
diff --git a/asm/list_menu.s b/asm/list_menu.s
index 760c55311..3475b0914 100644
--- a/asm/list_menu.s
+++ b/asm/list_menu.s
@@ -969,14 +969,14 @@ _081075DA:
beq _08107640
b _08107680
_081075E4:
- ldr r1, _081075F4 @ =gUnknown_841623B
+ ldr r1, _081075F4 @ =gFameCheckerText_ListMenuCursor
adds r0, r6, 0
mov r2, r8
adds r3, r7, 0
bl ListMenuPrint
b _08107680
.align 2, 0
-_081075F4: .4byte gUnknown_841623B
+_081075F4: .4byte gFameCheckerText_ListMenuCursor
_081075F8:
ldrb r0, [r6, 0x1E]
cmp r0, 0xFF
diff --git a/asm/mailbox_pc.s b/asm/mailbox_pc.s
index d2933aa8b..d2cc06070 100644
--- a/asm/mailbox_pc.s
+++ b/asm/mailbox_pc.s
@@ -174,7 +174,7 @@ sub_810EC98: @ 810EC98
adds r6, r0, 0
movs r3, 0
ldr r7, _0810ED50 @ =gUnknown_203ADE0
- ldr r0, _0810ED54 @ =gUnknown_84161C1
+ ldr r0, _0810ED54 @ =gFameCheckerText_Cancel
mov r12, r0
ldr r5, _0810ED58 @ =gUnknown_3005E70
ldr r1, _0810ED5C @ =gUnknown_203ADDC
@@ -262,7 +262,7 @@ _0810ECCE:
bx r1
.align 2, 0
_0810ED50: .4byte gUnknown_203ADE0
-_0810ED54: .4byte gUnknown_84161C1
+_0810ED54: .4byte gFameCheckerText_Cancel
_0810ED58: .4byte gUnknown_3005E70
_0810ED5C: .4byte gUnknown_203ADDC
_0810ED60: .4byte gUnknown_8454003
diff --git a/asm/menu.s b/asm/menu.s
index 8bea8e86f..e593eef1c 100644
--- a/asm/menu.s
+++ b/asm/menu.s
@@ -1391,7 +1391,7 @@ RedrawMenuCursor: @ 810F874
bl FillWindowPixelRect
ldrb r0, [r5, 0x5]
ldrb r1, [r5, 0x6]
- ldr r2, _0810F900 @ =gUnknown_841623B
+ ldr r2, _0810F900 @ =gFameCheckerText_ListMenuCursor
ldrb r3, [r5]
ldrb r4, [r5, 0x8]
mov r6, r8
@@ -1415,7 +1415,7 @@ RedrawMenuCursor: @ 810F874
bx r0
.align 2, 0
_0810F8FC: .4byte gUnknown_203ADE4
-_0810F900: .4byte gUnknown_841623B
+_0810F900: .4byte gFameCheckerText_ListMenuCursor
thumb_func_end RedrawMenuCursor
thumb_func_start MoveMenuCursor
@@ -2893,7 +2893,7 @@ sub_811037C: @ 811037C
lsrs r3, 24
ldrb r0, [r5, 0x5]
ldrb r1, [r5, 0x6]
- ldr r2, _0811044C @ =gUnknown_841623B
+ ldr r2, _0811044C @ =gFameCheckerText_ListMenuCursor
str r3, [sp]
movs r3, 0
str r3, [sp, 0x4]
@@ -2910,7 +2910,7 @@ sub_811037C: @ 811037C
bx r0
.align 2, 0
_08110448: .4byte gUnknown_203ADE4
-_0811044C: .4byte gUnknown_841623B
+_0811044C: .4byte gFameCheckerText_ListMenuCursor
thumb_func_end sub_811037C
thumb_func_start sub_8110450
diff --git a/asm/new_game.s b/asm/new_game.s
index 80affe1cb..cec2b2c9a 100644
--- a/asm/new_game.s
+++ b/asm/new_game.s
@@ -241,7 +241,7 @@ sub_8054A60: @ 8054A60
bl PlayTimeCounter_Reset
bl sub_80549AC
bl sub_806E0D0
- bl sub_812D304
+ bl ResetFameChecker
ldr r0, [r6]
movs r1, 0xA4
lsls r1, 2
diff --git a/asm/party_menu.s b/asm/party_menu.s
index 82718c6e0..bdde69c24 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -5118,7 +5118,7 @@ _08121194:
ands r0, r1
cmp r0, 0xA
beq _081211F0
- ldr r4, _081211E8 @ =gUnknown_84161C1
+ ldr r4, _081211E8 @ =gFameCheckerText_Cancel
movs r0, 0
adds r1, r4, 0
movs r2, 0
@@ -5146,7 +5146,7 @@ _08121194:
.align 2, 0
_081211E0: .4byte gUnknown_845A108
_081211E4: .4byte gUnknown_203B0A0
-_081211E8: .4byte gUnknown_84161C1
+_081211E8: .4byte gFameCheckerText_Cancel
_081211EC: .4byte gUnknown_8459FFC
_081211F0:
ldr r4, _08121240 @ =gUnknown_84161C8
diff --git a/asm/pokemon_summary_screen.s b/asm/pokemon_summary_screen.s
index 073727d7f..05256c776 100644
--- a/asm/pokemon_summary_screen.s
+++ b/asm/pokemon_summary_screen.s
@@ -5401,7 +5401,7 @@ _081372B0:
movs r1, 0x1
negs r1, r1
str r1, [sp, 0x4]
- ldr r1, _081372E0 @ =gUnknown_84161C1
+ ldr r1, _081372E0 @ =gFameCheckerText_Cancel
str r1, [sp, 0x8]
movs r1, 0x2
movs r2, 0x3
@@ -5415,7 +5415,7 @@ _081372CE:
.align 2, 0
_081372D8: .4byte 0x00003003
_081372DC: .4byte gUnknown_8463EF0
-_081372E0: .4byte gUnknown_84161C1
+_081372E0: .4byte gFameCheckerText_Cancel
thumb_func_end sub_8137270
thumb_func_start sub_81372E4
diff --git a/asm/shop.s b/asm/shop.s
index a732c8656..263e5b3c5 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -892,7 +892,7 @@ _0809B1F2:
muls r4, r0
ldr r0, [r5]
adds r0, r4
- ldr r1, _0809B2CC @ =gUnknown_84161C1
+ ldr r1, _0809B2CC @ =gFameCheckerText_Cancel
bl StringCopy
ldr r0, _0809B2D0 @ =gUnknown_2039964
ldr r2, [r0]
@@ -990,7 +990,7 @@ _0809B2BC:
b _0809B2E6
.align 2, 0
_0809B2C8: .4byte gUnknown_2039968
-_0809B2CC: .4byte gUnknown_84161C1
+_0809B2CC: .4byte gFameCheckerText_Cancel
_0809B2D0: .4byte gUnknown_2039964
_0809B2D4: .4byte gUnknown_3005E70
_0809B2D8: .4byte gUnknown_2039934
@@ -1378,7 +1378,7 @@ sub_809B59C: @ 809B59C
bl CopyWindowToVram
b _0809B5F8
_0809B5E0:
- ldr r2, _0809B600 @ =gUnknown_841623B
+ ldr r2, _0809B600 @ =gFameCheckerText_ListMenuCursor
str r5, [sp]
movs r0, 0
str r0, [sp, 0x4]
@@ -1395,7 +1395,7 @@ _0809B5F8:
pop {r0}
bx r0
.align 2, 0
-_0809B600: .4byte gUnknown_841623B
+_0809B600: .4byte gFameCheckerText_ListMenuCursor
thumb_func_end sub_809B59C
thumb_func_start sub_809B604
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 55dbb7357..43155b5da 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -911,14 +911,14 @@ _0806F498:
bl play_some_sound
bl sub_806EF18
bl sub_80563F0
- ldr r0, _0806F4B0 @ =sub_8107EB8
+ ldr r0, _0806F4B0 @ =UseFameCheckerFromMenu
bl SetMainCallback2
movs r0, 0x1
_0806F4AC:
pop {r1}
bx r1
.align 2, 0
-_0806F4B0: .4byte sub_8107EB8
+_0806F4B0: .4byte UseFameCheckerFromMenu
thumb_func_end sub_806F480
thumb_func_start sub_806F4B4
diff --git a/asm/teachy_tv.s b/asm/teachy_tv.s
index 55f403f8a..48f98a2b4 100644
--- a/asm/teachy_tv.s
+++ b/asm/teachy_tv.s
@@ -915,7 +915,7 @@ sub_815B2C0: @ 815B2C0
beq _0815B30A
subs r0, r4, 0x6
ldr r1, [r0]
- ldr r0, _0815B32C @ =sub_8107EB8
+ ldr r0, _0815B32C @ =UseFameCheckerFromMenu
cmp r1, r0
bne _0815B330
_0815B30A:
@@ -932,7 +932,7 @@ _0815B31C: .4byte gTasks+0x8
_0815B320: .4byte gPaletteFade
_0815B324: .4byte gUnknown_203F44A
_0815B328: .4byte gMain
-_0815B32C: .4byte sub_8107EB8
+_0815B32C: .4byte UseFameCheckerFromMenu
_0815B330:
movs r0, 0x5
bl PlaySE
diff --git a/asm/tm_case.s b/asm/tm_case.s
index d3bf0cbf2..7ab09953f 100644
--- a/asm/tm_case.s
+++ b/asm/tm_case.s
@@ -963,7 +963,7 @@ sub_8131FB0: @ 8131FB0
bl CopyWindowToVram
b _0813200A
_08131FF4:
- ldr r2, _08132014 @ =gUnknown_841623B
+ ldr r2, _08132014 @ =gFameCheckerText_ListMenuCursor
str r5, [sp]
movs r0, 0
str r0, [sp, 0x4]
@@ -979,7 +979,7 @@ _0813200A:
pop {r0}
bx r0
.align 2, 0
-_08132014: .4byte gUnknown_841623B
+_08132014: .4byte gFameCheckerText_ListMenuCursor
thumb_func_end sub_8131FB0
thumb_func_start sub_8132018
diff --git a/asm/unk_81507FC.s b/asm/unk_81507FC.s
index 205bb7a85..40d5a13b0 100644
--- a/asm/unk_81507FC.s
+++ b/asm/unk_81507FC.s
@@ -10348,7 +10348,7 @@ _0815579C:
ldr r0, [r3]
adds r0, r7
ldrb r0, [r0]
- ldr r2, _08155860 @ =gUnknown_841623B
+ ldr r2, _08155860 @ =gFameCheckerText_ListMenuCursor
mov r1, r9
str r1, [sp]
str r5, [sp, 0x4]
@@ -10379,7 +10379,7 @@ _08155850: .4byte 0x00003009
_08155854: .4byte gUnknown_841CDD7
_08155858: .4byte gUnknown_8417938
_0815585C: .4byte gUnknown_841793C
-_08155860: .4byte gUnknown_841623B
+_08155860: .4byte gFameCheckerText_ListMenuCursor
_08155864: .4byte 0x00003014
_08155868:
bl IsDma3ManagerBusyWithBgCopy
@@ -10453,7 +10453,7 @@ _081558B0:
ldr r0, [r1]
adds r0, r4
ldrb r1, [r0]
- ldr r2, _0815591C @ =gUnknown_841623B
+ ldr r2, _0815591C @ =gFameCheckerText_ListMenuCursor
cmp r7, 0x1
bne _08155920
mov r3, r8
@@ -10464,7 +10464,7 @@ _0815590C: .4byte 0x00003020
_08155910: .4byte 0x00003009
_08155914: .4byte gUnknown_8417938
_08155918: .4byte gUnknown_841793C
-_0815591C: .4byte gUnknown_841623B
+_0815591C: .4byte gFameCheckerText_ListMenuCursor
_08155920:
str r6, [sp]
_08155922:
diff --git a/charmap.txt b/charmap.txt
index f89919509..ad4062731 100644
--- a/charmap.txt
+++ b/charmap.txt
@@ -323,8 +323,15 @@ TALL_PLUS = FC 0C FB
@ TODO: Identify and declare F7 control codes
UNKNOWN_F7 = F7
+UNKNOWN_F8 = F8
UNKNOWN_F9 = F9
+KEYGFX_A_BUTTON = F8 00
+KEYGFX_B_BUTTON = F8 01
+KEYGFX_START_BUTTON = F8 04
+KEYGFX_DPAD_UP_DOWN = F8 0A
+KEYGFX_DPAD_ANY = F8 0C
+
STRING = FD
@ string placeholders
@@ -383,6 +390,11 @@ ENG = FC 16
PAUSE_MUSIC = FC 17
RESUME_MUSIC = FC 18
+@ font sizes
+
+SMALL = FC 06 00
+BIG = FC 06 04
+
@ colors
TRANSPARENT = 00
@@ -393,7 +405,7 @@ BLUE = 04
YELLOW = 05
CYAN = 06
MAGENTA = 07
-LIGHT_GREY = 08
+LIGHT_GRAY = 08
BLACK = 09
BLACK2 = 0A @ duplicate of black?
SILVER = 0B
diff --git a/common_syms/fame_checker.txt b/common_syms/fame_checker.txt
new file mode 100644
index 000000000..c23bd9a2a
--- /dev/null
+++ b/common_syms/fame_checker.txt
@@ -0,0 +1,2 @@
+gFameChecker_ListMenuTemplate
+gIconDescriptionBoxIsOpen
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index dfa4bee5d..2e5c0e6c7 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -721,8 +721,8 @@ gUnknown_8416188:: @ 8416188
gUnknown_8416190:: @ 8416190
.incbin "baserom.gba", 0x416190, 0x31
-gUnknown_84161C1:: @ 84161C1
- .incbin "baserom.gba", 0x4161C1, 0x7
+gFameCheckerText_Cancel:: @ 84161C1
+ .string "CANCEL$"
gUnknown_84161C8:: @ 84161C8
.incbin "baserom.gba", 0x4161C8, 0x5
@@ -766,8 +766,8 @@ gUnknown_8416226:: @ 8416226
gUnknown_8416238:: @ 8416238
.incbin "baserom.gba", 0x416238, 0x3
-gUnknown_841623B:: @ 841623B
- .incbin "baserom.gba", 0x41623B, 0x2
+gFameCheckerText_ListMenuCursor:: @ 841623B
+ .string "▶$"
gUnknown_841623D:: @ 841623D
.incbin "baserom.gba", 0x41623D, 0x25
@@ -1237,11 +1237,14 @@ gUnknown_84181B6:: @ 84181B6
gUnknown_84181BE:: @ 84181BE
.incbin "baserom.gba", 0x4181BE, 0x5
-gUnknown_84181C3:: @ 84181C3
- .incbin "baserom.gba", 0x4181C3, 0x21
+gFameCheckerText_FameCheckerWillBeClosed:: @ 84181C3
+ .string "The FAME CHECKER will be closed.$"
-gUnknown_84181E4:: @ 84181E4
- .incbin "baserom.gba", 0x4181E4, 0x4AC
+gFameCheckerText_ClearTextbox:: @ 84181E4
+ .string "\n $"
+
+gUnknown_8418204:: @ 8418204
+ .incbin "baserom.gba", 0x00418204, 0x48c
gUnknown_8418690:: @ 8418690
.incbin "baserom.gba", 0x418690, 0x20
@@ -2090,14 +2093,38 @@ gUnknown_841E572:: @ 841E572
gUnknown_841E58D:: @ 841E58D
.incbin "baserom.gba", 0x41E58D, 0x17
-gUnknown_841E5A4:: @ 841E5A4
- .incbin "baserom.gba", 0x41E5A4, 0x15
+gFameCheckerText_MainScreenUI:: @ 841E5A4
+ .string "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$"
+
+gFameCheckerText_PickScreenUI:: @ 841E5B9
+ .string "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$"
+
+gFameCheckerText_FlavorTextUI:: @ 841E5D2
+ .string "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {UNKNOWN_F8 0x01}CANCEL$"
+
+gFameCheckerOakName:: @ 841E5E9
+ .string "OAK$"
+
+gFameCheckerDaisyName:: @ 841E5ED
+ .string "DAISY$"
+
+gFameCheckerBillName:: @ 841E5F3
+ .string "BILL$"
+
+gFameCheckerMrFujiName:: @ 841E5F8
+ .string "FUJI$"
+
+gUnknown_841E5FD:: @ 841E5FD
+ .string "A variety of events will be imported\nover Wireless Communication.$"
+
+gUnknown_841E63F:: @ 841E63F
+ .string "Read the WONDER CARDS in your\npossession.$"
-gUnknown_841E5B9:: @ 841E5B9
- .incbin "baserom.gba", 0x41E5B9, 0x19
+gUnknown_841E669:: @ 841E669
+ .string "Read the NEWS that arrived.$"
-gUnknown_841E5D2:: @ 841E5D2
- .incbin "baserom.gba", 0x41E5D2, 0xCF
+gUnknown_841E685:: @ 841E685
+ .string "Return to the title screen.$"
gUnknown_841E6A1:: @ 841E6A1
.incbin "baserom.gba", 0x41E6A1, 0x3B
@@ -3549,776 +3576,3 @@ gUnknown_845C5BC:: @ 845C5BC
gUnknown_845C5CE:: @ 845C5CE
.incbin "baserom.gba", 0x45C5CE, 0x32
-
-gUnknown_845C600:: @ 845C600
- .incbin "baserom.gba", 0x45C600, 0x1720
-
-gUnknown_845DD20:: @ 845DD20
- .incbin "baserom.gba", 0x45DD20, 0x820
-
-gUnknown_845E540:: @ 845E540
- .incbin "baserom.gba", 0x45E540, 0x820
-
-gUnknown_845ED60:: @ 845ED60
- .incbin "baserom.gba", 0x45ED60, 0x820
-
-gUnknown_845F580:: @ 845F580
- .incbin "baserom.gba", 0x45F580, 0x40
-
-gUnknown_845F5C0:: @ 845F5C0
- .incbin "baserom.gba", 0x45F5C0, 0x20
-
-gUnknown_845F5E0:: @ 845F5E0
- .incbin "baserom.gba", 0x45F5E0, 0x3
-
-gUnknown_845F5E3:: @ 845F5E3
- .incbin "baserom.gba", 0x45F5E3, 0x3
-
-gUnknown_845F5E6:: @ 845F5E6
- .incbin "baserom.gba", 0x45F5E6, 0x4
-
-gUnknown_845F5EA:: @ 845F5EA
- .incbin "baserom.gba", 0x45F5EA, 0x22
-
-gUnknown_845F60C:: @ 845F60C
- .incbin "baserom.gba", 0x45F60C, 0x10
-
-gUnknown_845F61C:: @ 845F61C
- .incbin "baserom.gba", 0x45F61C, 0x20
-
-gUnknown_845F63C:: @ 845F63C
- .incbin "baserom.gba", 0x45F63C, 0x80
-
-gUnknown_845F6BC:: @ 845F6BC
- .incbin "baserom.gba", 0x45F6BC, 0x180
-
-gUnknown_845F83C:: @ 845F83C
- .incbin "baserom.gba", 0x45F83C, 0x60
-
-gUnknown_845F89C:: @ 845F89C
- .incbin "baserom.gba", 0x45F89C, 0x180
-
-gUnknown_845FA1C:: @ 845FA1C
- .incbin "baserom.gba", 0x45FA1C, 0x180
-
-gUnknown_845FB9C:: @ 845FB9C
- .incbin "baserom.gba", 0x45FB9C, 0x40
-
-gUnknown_845FBDC:: @ 845FBDC
- .incbin "baserom.gba", 0x45FBDC, 0x18
-
-gUnknown_845FBF4:: @ 845FBF4
- .incbin "baserom.gba", 0x45FBF4, 0x10
-
-gUnknown_845FC04:: @ 845FC04
- .incbin "baserom.gba", 0x45FC04, 0x40
-
-gUnknown_845FC44:: @ 845FC44
- .incbin "baserom.gba", 0x45FC44, 0x34
-
-gUnknown_845FC78:: @ 845FC78
- .incbin "baserom.gba", 0x45FC78, 0x40
-
-gUnknown_845FCB8:: @ 845FCB8
- .incbin "baserom.gba", 0x45FCB8, 0x2C
-
-gUnknown_845FCE4:: @ 845FCE4
- .incbin "baserom.gba", 0x45FCE4, 0x18
-
-gUnknown_845FCFC:: @ 845FCFC
- .incbin "baserom.gba", 0x45FCFC, 0x18
-
-gUnknown_845FD14:: @ 845FD14
- .incbin "baserom.gba", 0x45FD14, 0x18
-
-gUnknown_845FD2C:: @ 845FD2C
- .incbin "baserom.gba", 0x45FD2C, 0x18
-
-gUnknown_845FD44:: @ 845FD44
- .incbin "baserom.gba", 0x45FD44, 0x10
-
-gUnknown_845FD54:: @ 845FD54
- .incbin "baserom.gba", 0x45FD54, 0x814
-
-gUnknown_8460568:: @ 8460568
- .incbin "baserom.gba", 0x460568, 0x80
-
-gUnknown_84605E8:: @ 84605E8
- .incbin "baserom.gba", 0x4605E8, 0x5C0
-
-gUnknown_8460BA8:: @ 8460BA8
- .incbin "baserom.gba", 0x460BA8, 0xFC
-
-gUnknown_8460CA4:: @ 8460CA4
- .incbin "baserom.gba", 0x460CA4, 0x44
-
-gUnknown_8460CE8:: @ 8460CE8
- .incbin "baserom.gba", 0x460CE8, 0xAC
-
-gUnknown_8460D94:: @ 8460D94
- .incbin "baserom.gba", 0x460D94, 0xA0
-
-gUnknown_8460E34:: @ 8460E34
- .incbin "baserom.gba", 0x460E34, 0xA0
-
-gUnknown_8460ED4:: @ 8460ED4
- .incbin "baserom.gba", 0x460ED4, 0x40
-
-gUnknown_8460F14:: @ 8460F14
- .incbin "baserom.gba", 0x460F14, 0x6E8
-
-gUnknown_84615FC:: @ 84615FC
- .incbin "baserom.gba", 0x4615FC, 0x40
-
-gUnknown_846163C:: @ 846163C
- .incbin "baserom.gba", 0x46163C, 0x698
-
-gUnknown_8461CD4:: @ 8461CD4
- .incbin "baserom.gba", 0x461CD4, 0x40
-
-gUnknown_8461D14:: @ 8461D14
- .incbin "baserom.gba", 0x461D14, 0x698
-
-gUnknown_84623AC:: @ 84623AC
- .incbin "baserom.gba", 0x4623AC, 0x40
-
-gUnknown_84623EC:: @ 84623EC
- .incbin "baserom.gba", 0x4623EC, 0xA6C
-
-gUnknown_8462E58:: @ 8462E58
- .incbin "baserom.gba", 0x462E58, 0x5C
-
-gUnknown_8462EB4:: @ 8462EB4
- .incbin "baserom.gba", 0x462EB4, 0xC
-
-gUnknown_8462EC0:: @ 8462EC0
- .incbin "baserom.gba", 0x462EC0, 0x8
-
-gUnknown_8462EC8:: @ 8462EC8
- .incbin "baserom.gba", 0x462EC8, 0x8
-
-gUnknown_8462ED0:: @ 8462ED0
- .incbin "baserom.gba", 0x462ED0, 0x8
-
-gUnknown_8462ED8:: @ 8462ED8
- .incbin "baserom.gba", 0x462ED8, 0x10
-
-gUnknown_8462EE8:: @ 8462EE8
- .incbin "baserom.gba", 0x462EE8, 0x4
-
-gUnknown_8462EEC:: @ 8462EEC
- .incbin "baserom.gba", 0x462EEC, 0x4
-
-gUnknown_8462EF0:: @ 8462EF0
- .incbin "baserom.gba", 0x462EF0, 0xC
-
-gUnknown_8462EFC:: @ 8462EFC
- .incbin "baserom.gba", 0x462EFC, 0x18
-
-gUnknown_8462F14:: @ 8462F14
- .incbin "baserom.gba", 0x462F14, 0x8
-
-gUnknown_8462F1C:: @ 8462F1C
- .incbin "baserom.gba", 0x462F1C, 0x8
-
-gUnknown_8462F24:: @ 8462F24
- .incbin "baserom.gba", 0x462F24, 0x2C
-
-gUnknown_8462F50:: @ 8462F50
- .incbin "baserom.gba", 0x462F50, 0xDC
-
-gUnknown_846302C:: @ 846302C
- .incbin "baserom.gba", 0x46302C, 0x48
-
-gUnknown_8463074:: @ 8463074
- .incbin "baserom.gba", 0x463074, 0x18
-
-gUnknown_846308C:: @ 846308C
- .incbin "baserom.gba", 0x46308C, 0x4C
-
-gUnknown_84630D8:: @ 84630D8
- .incbin "baserom.gba", 0x4630D8, 0x4C
-
-gUnknown_8463124:: @ 8463124
- .incbin "baserom.gba", 0x463124, 0x10
-
-gUnknown_8463134:: @ 8463134
- .incbin "baserom.gba", 0x463134, 0xC
-
-gUnknown_8463140:: @ 8463140
- .incbin "baserom.gba", 0x463140, 0x10
-
-gUnknown_8463150:: @ 8463150
- .incbin "baserom.gba", 0x463150, 0x18
-
-gUnknown_8463168:: @ 8463168
- .incbin "baserom.gba", 0x463168, 0x3
-
-gUnknown_846316B:: @ 846316B
- .incbin "baserom.gba", 0x46316B, 0x5
-
-gUnknown_8463170:: @ 8463170
- .incbin "baserom.gba", 0x463170, 0x8
-
-gUnknown_8463178:: @ 8463178
- .incbin "baserom.gba", 0x463178, 0x4
-
-gUnknown_846317C:: @ 846317C
- .incbin "baserom.gba", 0x46317C, 0x4
-
-gUnknown_8463180:: @ 8463180
- .incbin "baserom.gba", 0x463180, 0x4
-
-gUnknown_8463184:: @ 8463184
- .incbin "baserom.gba", 0x463184, 0xC
-
-gUnknown_8463190:: @ 8463190
- .incbin "baserom.gba", 0x463190, 0x50
-
-gUnknown_84631E0:: @ 84631E0
- .incbin "baserom.gba", 0x4631E0, 0x8
-
-gUnknown_84631E8:: @ 84631E8
- .incbin "baserom.gba", 0x4631E8, 0x30
-
-gUnknown_8463218:: @ 8463218
- .incbin "baserom.gba", 0x463218, 0x8
-
-gUnknown_8463220:: @ 8463220
- .incbin "baserom.gba", 0x463220, 0x18
-
-gUnknown_8463238:: @ 8463238
- .incbin "baserom.gba", 0x463238, 0x24
-
-gUnknown_846325C:: @ 846325C
- .incbin "baserom.gba", 0x46325C, 0x48
-
-gUnknown_84632A4:: @ 84632A4
- .incbin "baserom.gba", 0x4632A4, 0x18
-
-gUnknown_84632BC:: @ 84632BC
- .incbin "baserom.gba", 0x4632BC, 0x4
-
-gUnknown_84632C0:: @ 84632C0
- .incbin "baserom.gba", 0x4632C0, 0x4
-
-gUnknown_84632C4:: @ 84632C4
- .incbin "baserom.gba", 0x4632C4, 0x4
-
-gUnknown_84632C8:: @ 84632C8
- .incbin "baserom.gba", 0x4632C8, 0x4
-
-gUnknown_84632CC:: @ 84632CC
- .incbin "baserom.gba", 0x4632CC, 0x4
-
-gUnknown_84632D0:: @ 84632D0
- .incbin "baserom.gba", 0x4632D0, 0x4
-
-gUnknown_84632D4:: @ 84632D4
- .incbin "baserom.gba", 0x4632D4, 0x4
-
-gUnknown_84632D8:: @ 84632D8
- .incbin "baserom.gba", 0x4632D8, 0x18
-
-gUnknown_84632F0:: @ 84632F0
- .incbin "baserom.gba", 0x4632F0, 0x18
-
-gUnknown_8463308:: @ 8463308
- .incbin "baserom.gba", 0x463308, 0x20
-
-gUnknown_8463328:: @ 8463328
- .incbin "baserom.gba", 0x463328, 0x70
-
-gUnknown_8463398:: @ 8463398
- .incbin "baserom.gba", 0x463398, 0x40
-
-gUnknown_84633D8:: @ 84633D8
- .incbin "baserom.gba", 0x4633D8, 0x44
-
-gUnknown_846341C:: @ 846341C
- .incbin "baserom.gba", 0x46341C, 0x20
-
-gUnknown_846343C:: @ 846343C
- .incbin "baserom.gba", 0x46343C, 0x128
-
-gUnknown_8463564:: @ 8463564
- .incbin "baserom.gba", 0x463564, 0x1C
-
-gUnknown_8463580:: @ 8463580
- .incbin "baserom.gba", 0x463580, 0x140
-
-gUnknown_84636C0:: @ 84636C0
- .incbin "baserom.gba", 0x4636C0, 0x20
-
-gUnknown_84636E0:: @ 84636E0
- .incbin "baserom.gba", 0x4636E0, 0x20
-
-gUnknown_8463700:: @ 8463700
- .incbin "baserom.gba", 0x463700, 0x20
-
-gUnknown_8463720:: @ 8463720
- .incbin "baserom.gba", 0x463720, 0x20
-
-gUnknown_8463740:: @ 8463740
- .incbin "baserom.gba", 0x463740, 0x12C
-
-gUnknown_846386C:: @ 846386C
- .incbin "baserom.gba", 0x46386C, 0x120
-
-gUnknown_846398C:: @ 846398C
- .incbin "baserom.gba", 0x46398C, 0x18
-
-gUnknown_84639A4:: @ 84639A4
- .incbin "baserom.gba", 0x4639A4, 0x8
-
-gUnknown_84639AC:: @ 84639AC
- .incbin "baserom.gba", 0x4639AC, 0x48
-
-gUnknown_84639F4:: @ 84639F4
- .incbin "baserom.gba", 0x4639F4, 0x20
-
-gUnknown_8463A14:: @ 8463A14
- .incbin "baserom.gba", 0x463A14, 0x68
-
-gUnknown_8463A7C:: @ 8463A7C
- .incbin "baserom.gba", 0x463A7C, 0x70
-
-gUnknown_8463AEC:: @ 8463AEC
- .incbin "baserom.gba", 0x463AEC, 0x10
-
-gUnknown_8463AFC:: @ 8463AFC
- .incbin "baserom.gba", 0x463AFC, 0x4
-
-gUnknown_8463B00:: @ 8463B00
- .incbin "baserom.gba", 0x463B00, 0x20
-
-gUnknown_8463B20:: @ 8463B20
- .incbin "baserom.gba", 0x463B20, 0x10
-
-gUnknown_8463B30:: @ 8463B30
- .incbin "baserom.gba", 0x463B30, 0x10
-
-gUnknown_8463B40:: @ 8463B40
- .incbin "baserom.gba", 0x463B40, 0x4
-
-gUnknown_8463B44:: @ 8463B44
- .incbin "baserom.gba", 0x463B44, 0x20
-
-gUnknown_8463B64:: @ 8463B64
- .incbin "baserom.gba", 0x463B64, 0x24
-
-gUnknown_8463B88:: @ 8463B88
- .incbin "baserom.gba", 0x463B88, 0xF8
-
-gUnknown_8463C80:: @ 8463C80
- .incbin "baserom.gba", 0x463C80, 0x1E0
-
-gUnknown_8463E60:: @ 8463E60
- .incbin "baserom.gba", 0x463E60, 0x64
-
-gUnknown_8463EC4:: @ 8463EC4
- .incbin "baserom.gba", 0x463EC4, 0x10
-
-gUnknown_8463ED4:: @ 8463ED4
- .incbin "baserom.gba", 0x463ED4, 0x1C
-
-gUnknown_8463EF0:: @ 8463EF0
- .incbin "baserom.gba", 0x463EF0, 0xC
-
-gUnknown_8463EFC:: @ 8463EFC
- .incbin "baserom.gba", 0x463EFC, 0x10
-
-gUnknown_8463F0C:: @ 8463F0C
- .incbin "baserom.gba", 0x463F0C, 0x18
-
-gUnknown_8463F24:: @ 8463F24
- .incbin "baserom.gba", 0x463F24, 0x18
-
-gUnknown_8463F3C:: @ 8463F3C
- .incbin "baserom.gba", 0x463F3C, 0x20
-
-gUnknown_8463F5C:: @ 8463F5C
- .incbin "baserom.gba", 0x463F5C, 0x20
-
-gUnknown_8463F7C:: @ 8463F7C
- .incbin "baserom.gba", 0x463F7C, 0x20
-
-gUnknown_8463F9C:: @ 8463F9C
- .incbin "baserom.gba", 0x463F9C, 0x8
-
-gUnknown_8463FA4:: @ 8463FA4
- .incbin "baserom.gba", 0x463FA4, 0x3
-
-gUnknown_8463FA7:: @ 8463FA7
- .incbin "baserom.gba", 0x463FA7, 0x11
-
-gUnknown_8463FB8:: @ 8463FB8
- .incbin "baserom.gba", 0x463FB8, 0x6
-
-gUnknown_8463FBE:: @ 8463FBE
- .incbin "baserom.gba", 0x463FBE, 0x3
-
-gUnknown_8463FC1:: @ 8463FC1
- .incbin "baserom.gba", 0x463FC1, 0x5
-
-gUnknown_8463FC6:: @ 8463FC6
- .incbin "baserom.gba", 0x463FC6, 0x7
-
-gUnknown_8463FCD:: @ 8463FCD
- .incbin "baserom.gba", 0x463FCD, 0x7
-
-gUnknown_8463FD4:: @ 8463FD4
- .incbin "baserom.gba", 0x463FD4, 0xB
-
-gUnknown_8463FDF:: @ 8463FDF
- .incbin "baserom.gba", 0x463FDF, 0xB
-
-gUnknown_8463FEA:: @ 8463FEA
- .incbin "baserom.gba", 0x463FEA, 0x12
-
-gUnknown_8463FFC:: @ 8463FFC
- .incbin "baserom.gba", 0x463FFC, 0xC
-
-gUnknown_8464008:: @ 8464008
- .incbin "baserom.gba", 0x464008, 0x120
-
-gUnknown_8464128:: @ 8464128
- .incbin "baserom.gba", 0x464128, 0x20
-
-gUnknown_8464148:: @ 8464148
- .incbin "baserom.gba", 0x464148, 0x174
-
-gUnknown_84642BC:: @ 84642BC
- .incbin "baserom.gba", 0x4642BC, 0x4
-
-gUnknown_84642C0:: @ 84642C0
- .incbin "baserom.gba", 0x4642C0, 0x34
-
-gUnknown_84642F4:: @ 84642F4
- .incbin "baserom.gba", 0x4642F4, 0xC
-
-gUnknown_8464300:: @ 8464300
- .incbin "baserom.gba", 0x464300, 0x4C
-
-gUnknown_846434C:: @ 846434C
- .incbin "baserom.gba", 0x46434C, 0xC
-
-gUnknown_8464358:: @ 8464358
- .incbin "baserom.gba", 0x464358, 0x14
-
-gUnknown_846436C:: @ 846436C
- .incbin "baserom.gba", 0x46436C, 0x8
-
-gUnknown_8464374:: @ 8464374
- .incbin "baserom.gba", 0x464374, 0x8
-
-gUnknown_846437C:: @ 846437C
- .incbin "baserom.gba", 0x46437C, 0x28
-
-gUnknown_84643A4:: @ 84643A4
- .incbin "baserom.gba", 0x4643A4, 0x4
-
-gUnknown_84643A8:: @ 84643A8
- .incbin "baserom.gba", 0x4643A8, 0x4
-
-gUnknown_84643AC:: @ 84643AC
- .incbin "baserom.gba", 0x4643AC, 0x4
-
-gUnknown_84643B0:: @ 84643B0
- .incbin "baserom.gba", 0x4643B0, 0x4
-
-gUnknown_84643B4:: @ 84643B4
- .incbin "baserom.gba", 0x4643B4, 0x4
-
-gUnknown_84643B8:: @ 84643B8
- .incbin "baserom.gba", 0x4643B8, 0x20
-
-gUnknown_84643D8:: @ 84643D8
- .incbin "baserom.gba", 0x4643D8, 0x18
-
-gUnknown_84643F0:: @ 84643F0
- .incbin "baserom.gba", 0x4643F0, 0x8
-
-gUnknown_84643F8:: @ 84643F8
- .incbin "baserom.gba", 0x4643F8, 0x8
-
-gUnknown_8464400:: @ 8464400
- .incbin "baserom.gba", 0x464400, 0x48
-
-gUnknown_8464448:: @ 8464448
- .incbin "baserom.gba", 0x464448, 0x60
-
-gUnknown_84644A8:: @ 84644A8
- .incbin "baserom.gba", 0x4644A8, 0x8
-
-gUnknown_84644B0:: @ 84644B0
- .incbin "baserom.gba", 0x4644B0, 0x8
-
-gUnknown_84644B8:: @ 84644B8
- .incbin "baserom.gba", 0x4644B8, 0x32C
-
-gUnknown_84647E4:: @ 84647E4
- .incbin "baserom.gba", 0x4647E4, 0x18
-
-gUnknown_84647FC:: @ 84647FC
- .incbin "baserom.gba", 0x4647FC, 0x8
-
-gUnknown_8464804:: @ 8464804
- .incbin "baserom.gba", 0x464804, 0x38
-
-gUnknown_846483C:: @ 846483C
- .incbin "baserom.gba", 0x46483C, 0x40
-
-gUnknown_846487C:: @ 846487C
- .incbin "baserom.gba", 0x46487C, 0x8
-
-gUnknown_8464884:: @ 8464884
- .incbin "baserom.gba", 0x464884, 0xC
-
-gUnknown_8464890:: @ 8464890
- .incbin "baserom.gba", 0x464890, 0x1E
-
-gUnknown_84648AE:: @ 84648AE
- .incbin "baserom.gba", 0x4648AE, 0xF
-
-gUnknown_84648BD:: @ 84648BD
- .incbin "baserom.gba", 0x4648BD, 0x15
-
-gUnknown_84648D2:: @ 84648D2
- .incbin "baserom.gba", 0x4648D2, 0x54
-
-gUnknown_8464926:: @ 8464926
- .incbin "baserom.gba", 0x464926, 0x40
-
-gUnknown_8464966:: @ 8464966
- .incbin "baserom.gba", 0x464966, 0xC4A
-
-gUnknown_84655B0:: @ 84655B0
- .incbin "baserom.gba", 0x4655B0, 0x18
-
-gUnknown_84655C8:: @ 84655C8
- .incbin "baserom.gba", 0x4655C8, 0x40
-
-gUnknown_8465608:: @ 8465608
- .incbin "baserom.gba", 0x465608, 0xE
-
-gUnknown_8465616:: @ 8465616
- .incbin "baserom.gba", 0x465616, 0xC0
-
-gUnknown_84656D6:: @ 84656D6
- .incbin "baserom.gba", 0x4656D6, 0x10E
-
-gUnknown_84657E4:: @ 84657E4
- .incbin "baserom.gba", 0x4657E4, 0x98
-
-gUnknown_846587C:: @ 846587C
- .incbin "baserom.gba", 0x46587C, 0x5C
-
-gUnknown_84658D8:: @ 84658D8
- .incbin "baserom.gba", 0x4658D8, 0x18
-
-gUnknown_84658F0:: @ 84658F0
- .incbin "baserom.gba", 0x4658F0, 0x40
-
-gUnknown_8465930:: @ 8465930
- .incbin "baserom.gba", 0x465930, 0x20
-
-gUnknown_8465950:: @ 8465950
- .incbin "baserom.gba", 0x465950, 0x80
-
-gUnknown_84659D0:: @ 84659D0
- .incbin "baserom.gba", 0x4659D0, 0x804
-
-gUnknown_84661D4:: @ 84661D4
- .incbin "baserom.gba", 0x4661D4, 0x2E8
-
-gUnknown_84664BC:: @ 84664BC
- .incbin "baserom.gba", 0x4664BC, 0x20
-
-gUnknown_84664DC:: @ 84664DC
- .incbin "baserom.gba", 0x4664DC, 0x60
-
-gUnknown_846653C:: @ 846653C
- .incbin "baserom.gba", 0x46653C, 0x84
-
-gUnknown_84665C0:: @ 84665C0
- .incbin "baserom.gba", 0x4665C0, 0x60
-
-gUnknown_8466620:: @ 8466620
- .incbin "baserom.gba", 0x466620, 0x378
-
-gUnknown_8466998:: @ 8466998
- .incbin "baserom.gba", 0x466998, 0x178
-
-gUnknown_8466B10:: @ 8466B10
- .incbin "baserom.gba", 0x466B10, 0x10
-
-gUnknown_8466B20:: @ 8466B20
- .incbin "baserom.gba", 0x466B20, 0xEC
-
-gUnknown_8466C0C:: @ 8466C0C
- .incbin "baserom.gba", 0x466C0C, 0x28
-
-gUnknown_8466C34:: @ 8466C34
- .incbin "baserom.gba", 0x466C34, 0x4
-
-gUnknown_8466C38:: @ 8466C38
- .incbin "baserom.gba", 0x466C38, 0x8
-
-gUnknown_8466C40:: @ 8466C40
- .incbin "baserom.gba", 0x466C40, 0x18
-
-gUnknown_8466C58:: @ 8466C58
- .incbin "baserom.gba", 0x466C58, 0xB8
-
-gUnknown_8466D10:: @ 8466D10
- .incbin "baserom.gba", 0x466D10, 0x20
-
-gUnknown_8466D30:: @ 8466D30
- .incbin "baserom.gba", 0x466D30, 0x30
-
-gUnknown_8466D60:: @ 8466D60
- .incbin "baserom.gba", 0x466D60, 0x10
-
-gUnknown_8466D70:: @ 8466D70
- .incbin "baserom.gba", 0x466D70, 0x20
-
-gUnknown_8466D90:: @ 8466D90
- .incbin "baserom.gba", 0x466D90, 0x8
-
-gUnknown_8466D98:: @ 8466D98
- .incbin "baserom.gba", 0x466D98, 0x8
-
-gUnknown_8466DA0:: @ 8466DA0
- .incbin "baserom.gba", 0x466DA0, 0x8
-
-gUnknown_8466DA8:: @ 8466DA8
- .incbin "baserom.gba", 0x466DA8, 0x8
-
-gUnknown_8466DB0:: @ 8466DB0
- .incbin "baserom.gba", 0x466DB0, 0x8
-
-gUnknown_8466DB8:: @ 8466DB8
- .incbin "baserom.gba", 0x466DB8, 0x8
-
-gUnknown_8466DC0:: @ 8466DC0
- .incbin "baserom.gba", 0x466DC0, 0x8
-
-gUnknown_8466DC8:: @ 8466DC8
- .incbin "baserom.gba", 0x466DC8, 0x8
-
-gUnknown_8466DD0:: @ 8466DD0
- .incbin "baserom.gba", 0x466DD0, 0x18
-
-gUnknown_8466DE8:: @ 8466DE8
- .incbin "baserom.gba", 0x466DE8, 0x18
-
-gUnknown_8466E00:: @ 8466E00
- .incbin "baserom.gba", 0x466E00, 0x78
-
-gUnknown_8466E78:: @ 8466E78
- .incbin "baserom.gba", 0x466E78, 0x18
-
-gUnknown_8466E90:: @ 8466E90
- .incbin "baserom.gba", 0x466E90, 0x18
-
-gUnknown_8466EA8:: @ 8466EA8
- .incbin "baserom.gba", 0x466EA8, 0x18
-
-gUnknown_8466EC0:: @ 8466EC0
- .incbin "baserom.gba", 0x466EC0, 0x28
-
-gUnknown_8466EE8:: @ 8466EE8
- .incbin "baserom.gba", 0x466EE8, 0x8
-
-gUnknown_8466EF0:: @ 8466EF0
- .incbin "baserom.gba", 0x466EF0, 0x10
-
-gUnknown_8466F00:: @ 8466F00
- .incbin "baserom.gba", 0x466F00, 0x28
-
- .align 2
-gUnknown_8466F28:: @ 8466F28
- .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
-
- .align 2
-gUnknown_8466F5C:: @ 8466F5C
- .asciz "0"
-
- .align 2
-gUnknown_8466F60:: @ 8466F60
- .incbin "baserom.gba", 0x466F60, 0x20
-
- .align 2
-gUnknown_8466F80:: @ 8466F80
- .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
-
- .align 2
-gUnknown_8466FB8:: @ 8466FB8
- .asciz "size <= ME_SEND_BUF_SIZE"
-
- .align 2
-gUnknown_8466FD4:: @ 8466FD4
- .asciz "cmd->parameter == NULL"
-
- .align 2
-gUnknown_8466FEC:: @ 8466FEC
- .asciz "cmd->flag == FALSE"
-
- .align 2
-gUnknown_8467000:: @ 8467000
- .asciz "cmd->flag == FALSE && cmd->parameter == NULL"
-
- .align 2
-gUnknown_8467030:: @ 8467030
- .incbin "baserom.gba", 0x467030, 0x14
-
- .align 2
-gUnknown_8467044:: @ 8467044
- .asciz "svr->mainseqno < NELEMS(func_tbl)"
-
- .align 2
-gUnknown_8467068:: @ 8467068
- .incbin "baserom.gba", 0x467068, 0x8
-
-gUnknown_8467070:: @ 8467070
- .incbin "baserom.gba", 0x467070, 0x4
-
-gUnknown_8467074:: @ 8467074
- .incbin "baserom.gba", 0x467074, 0xEE4
-
-gUnknown_8467F58:: @ 8467F58
- .incbin "baserom.gba", 0x467F58, 0x8
-
-gUnknown_8467F60:: @ 8467F60
- .incbin "baserom.gba", 0x467F60, 0x40
-
-gUnknown_8467FA0:: @ 8467FA0
- .incbin "baserom.gba", 0x467FA0, 0x18
-
-gUnknown_8467FB8:: @ 8467FB8
- .incbin "baserom.gba", 0x467FB8, 0x80
-
-gUnknown_8468038:: @ 8468038
- .incbin "baserom.gba", 0x468038, 0x8
-
-gUnknown_8468040:: @ 8468040
- .incbin "baserom.gba", 0x468040, 0x10
-
-gUnknown_8468050:: @ 8468050
- .incbin "baserom.gba", 0x468050, 0x6D0
-
-gUnknown_8468720:: @ 8468720
- .incbin "baserom.gba", 0x468720, 0xC0
-
-gUnknown_84687E0:: @ 84687E0
- .incbin "baserom.gba", 0x4687E0, 0x38C
-
-gUnknown_8468B6C:: @ 8468B6C
- .incbin "baserom.gba", 0x468B6C, 0x60
-
-gUnknown_8468BCC:: @ 8468BCC
- .incbin "baserom.gba", 0x468BCC, 0x90
-
-
-
diff --git a/data/data_845FD54.s b/data/data_845FD54.s
new file mode 100644
index 000000000..d2b52192d
--- /dev/null
+++ b/data/data_845FD54.s
@@ -0,0 +1,686 @@
+ .section .rodata
+
+ .align 2
+ // oak_speech
+gUnknown_845FD54:: @ 845FD54
+ .incbin "baserom.gba", 0x45FD54, 0x814
+
+gUnknown_8460568:: @ 8460568
+ .incbin "baserom.gba", 0x460568, 0x80
+
+gUnknown_84605E8:: @ 84605E8
+ .incbin "baserom.gba", 0x4605E8, 0x5C0
+
+gUnknown_8460BA8:: @ 8460BA8
+ .incbin "baserom.gba", 0x460BA8, 0xFC
+
+gUnknown_8460CA4:: @ 8460CA4
+ .incbin "baserom.gba", 0x460CA4, 0x44
+
+gUnknown_8460CE8:: @ 8460CE8
+ .incbin "baserom.gba", 0x460CE8, 0xAC
+
+gUnknown_8460D94:: @ 8460D94
+ .incbin "baserom.gba", 0x460D94, 0xA0
+
+gUnknown_8460E34:: @ 8460E34
+ .incbin "baserom.gba", 0x460E34, 0xA0
+
+gUnknown_8460ED4:: @ 8460ED4
+ .incbin "baserom.gba", 0x460ED4, 0x40
+
+gUnknown_8460F14:: @ 8460F14
+ .incbin "baserom.gba", 0x460F14, 0x6E8
+
+gUnknown_84615FC:: @ 84615FC
+ .incbin "baserom.gba", 0x4615FC, 0x40
+
+gUnknown_846163C:: @ 846163C
+ .incbin "baserom.gba", 0x46163C, 0x698
+
+gUnknown_8461CD4:: @ 8461CD4
+ .incbin "baserom.gba", 0x461CD4, 0x40
+
+gUnknown_8461D14:: @ 8461D14
+ .incbin "baserom.gba", 0x461D14, 0x698
+
+gUnknown_84623AC:: @ 84623AC
+ .incbin "baserom.gba", 0x4623AC, 0x40
+
+gUnknown_84623EC:: @ 84623EC
+ .incbin "baserom.gba", 0x4623EC, 0xA6C
+
+gUnknown_8462E58:: @ 8462E58
+ .incbin "baserom.gba", 0x462E58, 0x5C
+
+gUnknown_8462EB4:: @ 8462EB4
+ .incbin "baserom.gba", 0x462EB4, 0xC
+
+gUnknown_8462EC0:: @ 8462EC0
+ .incbin "baserom.gba", 0x462EC0, 0x8
+
+gUnknown_8462EC8:: @ 8462EC8
+ .incbin "baserom.gba", 0x462EC8, 0x8
+
+gUnknown_8462ED0:: @ 8462ED0
+ .incbin "baserom.gba", 0x462ED0, 0x8
+
+gUnknown_8462ED8:: @ 8462ED8
+ .incbin "baserom.gba", 0x462ED8, 0x10
+
+gUnknown_8462EE8:: @ 8462EE8
+ .incbin "baserom.gba", 0x462EE8, 0x4
+
+gUnknown_8462EEC:: @ 8462EEC
+ .incbin "baserom.gba", 0x462EEC, 0x4
+
+gUnknown_8462EF0:: @ 8462EF0
+ .incbin "baserom.gba", 0x462EF0, 0xC
+
+gUnknown_8462EFC:: @ 8462EFC
+ .incbin "baserom.gba", 0x462EFC, 0x18
+
+gUnknown_8462F14:: @ 8462F14
+ .incbin "baserom.gba", 0x462F14, 0x8
+
+gUnknown_8462F1C:: @ 8462F1C
+ .incbin "baserom.gba", 0x462F1C, 0x8
+
+gUnknown_8462F24:: @ 8462F24
+ .incbin "baserom.gba", 0x462F24, 0x2C
+
+gUnknown_8462F50:: @ 8462F50
+ .incbin "baserom.gba", 0x462F50, 0xDC
+
+gUnknown_846302C:: @ 846302C
+ .incbin "baserom.gba", 0x46302C, 0x48
+
+gUnknown_8463074:: @ 8463074
+ .incbin "baserom.gba", 0x463074, 0x18
+
+gUnknown_846308C:: @ 846308C
+ .incbin "baserom.gba", 0x46308C, 0x4C
+
+gUnknown_84630D8:: @ 84630D8
+ .incbin "baserom.gba", 0x4630D8, 0x4C
+
+gUnknown_8463124:: @ 8463124
+ .incbin "baserom.gba", 0x463124, 0x10
+
+gUnknown_8463134:: @ 8463134
+ .incbin "baserom.gba", 0x463134, 0xC
+
+gUnknown_8463140:: @ 8463140
+ .incbin "baserom.gba", 0x463140, 0x10
+
+gUnknown_8463150:: @ 8463150
+ .incbin "baserom.gba", 0x463150, 0x18
+
+gUnknown_8463168:: @ 8463168
+ .incbin "baserom.gba", 0x463168, 0x3
+
+gUnknown_846316B:: @ 846316B
+ .incbin "baserom.gba", 0x46316B, 0x5
+
+gUnknown_8463170:: @ 8463170
+ .incbin "baserom.gba", 0x463170, 0x8
+
+gUnknown_8463178:: @ 8463178
+ .incbin "baserom.gba", 0x463178, 0x4
+
+gUnknown_846317C:: @ 846317C
+ .incbin "baserom.gba", 0x46317C, 0x4
+
+gUnknown_8463180:: @ 8463180
+ .incbin "baserom.gba", 0x463180, 0x4
+
+gUnknown_8463184:: @ 8463184
+ .incbin "baserom.gba", 0x463184, 0xC
+
+gUnknown_8463190:: @ 8463190
+ .incbin "baserom.gba", 0x463190, 0x50
+
+gUnknown_84631E0:: @ 84631E0
+ .incbin "baserom.gba", 0x4631E0, 0x8
+
+gUnknown_84631E8:: @ 84631E8
+ .incbin "baserom.gba", 0x4631E8, 0x30
+
+gUnknown_8463218:: @ 8463218
+ .incbin "baserom.gba", 0x463218, 0x8
+
+gUnknown_8463220:: @ 8463220
+ .incbin "baserom.gba", 0x463220, 0x18
+
+gUnknown_8463238:: @ 8463238
+ .incbin "baserom.gba", 0x463238, 0x24
+
+gUnknown_846325C:: @ 846325C
+ .incbin "baserom.gba", 0x46325C, 0x48
+
+gUnknown_84632A4:: @ 84632A4
+ .incbin "baserom.gba", 0x4632A4, 0x18
+
+gUnknown_84632BC:: @ 84632BC
+ .incbin "baserom.gba", 0x4632BC, 0x4
+
+gUnknown_84632C0:: @ 84632C0
+ .incbin "baserom.gba", 0x4632C0, 0x4
+
+gUnknown_84632C4:: @ 84632C4
+ .incbin "baserom.gba", 0x4632C4, 0x4
+
+gUnknown_84632C8:: @ 84632C8
+ .incbin "baserom.gba", 0x4632C8, 0x4
+
+gUnknown_84632CC:: @ 84632CC
+ .incbin "baserom.gba", 0x4632CC, 0x4
+
+gUnknown_84632D0:: @ 84632D0
+ .incbin "baserom.gba", 0x4632D0, 0x4
+
+gUnknown_84632D4:: @ 84632D4
+ .incbin "baserom.gba", 0x4632D4, 0x4
+
+gUnknown_84632D8:: @ 84632D8
+ .incbin "baserom.gba", 0x4632D8, 0x18
+
+gUnknown_84632F0:: @ 84632F0
+ .incbin "baserom.gba", 0x4632F0, 0x18
+
+gUnknown_8463308:: @ 8463308
+ .incbin "baserom.gba", 0x463308, 0x20
+
+gUnknown_8463328:: @ 8463328
+ .incbin "baserom.gba", 0x463328, 0x70
+
+gUnknown_8463398:: @ 8463398
+ .incbin "baserom.gba", 0x463398, 0x40
+
+gUnknown_84633D8:: @ 84633D8
+ .incbin "baserom.gba", 0x4633D8, 0x44
+
+gUnknown_846341C:: @ 846341C
+ .incbin "baserom.gba", 0x46341C, 0x20
+
+gUnknown_846343C:: @ 846343C
+ .incbin "baserom.gba", 0x46343C, 0x128
+
+gUnknown_8463564:: @ 8463564
+ .incbin "baserom.gba", 0x463564, 0x1C
+
+gUnknown_8463580:: @ 8463580
+ .incbin "baserom.gba", 0x463580, 0x140
+
+gUnknown_84636C0:: @ 84636C0
+ .incbin "baserom.gba", 0x4636C0, 0x20
+
+gUnknown_84636E0:: @ 84636E0
+ .incbin "baserom.gba", 0x4636E0, 0x20
+
+gUnknown_8463700:: @ 8463700
+ .incbin "baserom.gba", 0x463700, 0x20
+
+gUnknown_8463720:: @ 8463720
+ .incbin "baserom.gba", 0x463720, 0x20
+
+gUnknown_8463740:: @ 8463740
+ .incbin "baserom.gba", 0x463740, 0x12C
+
+gUnknown_846386C:: @ 846386C
+ .incbin "baserom.gba", 0x46386C, 0x120
+
+gUnknown_846398C:: @ 846398C
+ .incbin "baserom.gba", 0x46398C, 0x18
+
+gUnknown_84639A4:: @ 84639A4
+ .incbin "baserom.gba", 0x4639A4, 0x8
+
+gUnknown_84639AC:: @ 84639AC
+ .incbin "baserom.gba", 0x4639AC, 0x48
+
+gUnknown_84639F4:: @ 84639F4
+ .incbin "baserom.gba", 0x4639F4, 0x20
+
+gUnknown_8463A14:: @ 8463A14
+ .incbin "baserom.gba", 0x463A14, 0x68
+
+gUnknown_8463A7C:: @ 8463A7C
+ .incbin "baserom.gba", 0x463A7C, 0x70
+
+gUnknown_8463AEC:: @ 8463AEC
+ .incbin "baserom.gba", 0x463AEC, 0x10
+
+gUnknown_8463AFC:: @ 8463AFC
+ .incbin "baserom.gba", 0x463AFC, 0x4
+
+gUnknown_8463B00:: @ 8463B00
+ .incbin "baserom.gba", 0x463B00, 0x20
+
+gUnknown_8463B20:: @ 8463B20
+ .incbin "baserom.gba", 0x463B20, 0x10
+
+gUnknown_8463B30:: @ 8463B30
+ .incbin "baserom.gba", 0x463B30, 0x10
+
+gUnknown_8463B40:: @ 8463B40
+ .incbin "baserom.gba", 0x463B40, 0x4
+
+gUnknown_8463B44:: @ 8463B44
+ .incbin "baserom.gba", 0x463B44, 0x20
+
+gUnknown_8463B64:: @ 8463B64
+ .incbin "baserom.gba", 0x463B64, 0x24
+
+gUnknown_8463B88:: @ 8463B88
+ .incbin "baserom.gba", 0x463B88, 0xF8
+
+gUnknown_8463C80:: @ 8463C80
+ .incbin "baserom.gba", 0x463C80, 0x1E0
+
+gUnknown_8463E60:: @ 8463E60
+ .incbin "baserom.gba", 0x463E60, 0x64
+
+gUnknown_8463EC4:: @ 8463EC4
+ .incbin "baserom.gba", 0x463EC4, 0x10
+
+gUnknown_8463ED4:: @ 8463ED4
+ .incbin "baserom.gba", 0x463ED4, 0x1C
+
+gUnknown_8463EF0:: @ 8463EF0
+ .incbin "baserom.gba", 0x463EF0, 0xC
+
+gUnknown_8463EFC:: @ 8463EFC
+ .incbin "baserom.gba", 0x463EFC, 0x10
+
+gUnknown_8463F0C:: @ 8463F0C
+ .incbin "baserom.gba", 0x463F0C, 0x18
+
+gUnknown_8463F24:: @ 8463F24
+ .incbin "baserom.gba", 0x463F24, 0x18
+
+gUnknown_8463F3C:: @ 8463F3C
+ .incbin "baserom.gba", 0x463F3C, 0x20
+
+gUnknown_8463F5C:: @ 8463F5C
+ .incbin "baserom.gba", 0x463F5C, 0x20
+
+gUnknown_8463F7C:: @ 8463F7C
+ .incbin "baserom.gba", 0x463F7C, 0x20
+
+gUnknown_8463F9C:: @ 8463F9C
+ .incbin "baserom.gba", 0x463F9C, 0x8
+
+gUnknown_8463FA4:: @ 8463FA4
+ .incbin "baserom.gba", 0x463FA4, 0x3
+
+gUnknown_8463FA7:: @ 8463FA7
+ .incbin "baserom.gba", 0x463FA7, 0x11
+
+gUnknown_8463FB8:: @ 8463FB8
+ .incbin "baserom.gba", 0x463FB8, 0x6
+
+gUnknown_8463FBE:: @ 8463FBE
+ .incbin "baserom.gba", 0x463FBE, 0x3
+
+gUnknown_8463FC1:: @ 8463FC1
+ .incbin "baserom.gba", 0x463FC1, 0x5
+
+gUnknown_8463FC6:: @ 8463FC6
+ .incbin "baserom.gba", 0x463FC6, 0x7
+
+gUnknown_8463FCD:: @ 8463FCD
+ .incbin "baserom.gba", 0x463FCD, 0x7
+
+gUnknown_8463FD4:: @ 8463FD4
+ .incbin "baserom.gba", 0x463FD4, 0xB
+
+gUnknown_8463FDF:: @ 8463FDF
+ .incbin "baserom.gba", 0x463FDF, 0xB
+
+gUnknown_8463FEA:: @ 8463FEA
+ .incbin "baserom.gba", 0x463FEA, 0x12
+
+gUnknown_8463FFC:: @ 8463FFC
+ .incbin "baserom.gba", 0x463FFC, 0xC
+
+gUnknown_8464008:: @ 8464008
+ .incbin "baserom.gba", 0x464008, 0x120
+
+gUnknown_8464128:: @ 8464128
+ .incbin "baserom.gba", 0x464128, 0x20
+
+gUnknown_8464148:: @ 8464148
+ .incbin "baserom.gba", 0x464148, 0x174
+
+gUnknown_84642BC:: @ 84642BC
+ .incbin "baserom.gba", 0x4642BC, 0x4
+
+gUnknown_84642C0:: @ 84642C0
+ .incbin "baserom.gba", 0x4642C0, 0x34
+
+gUnknown_84642F4:: @ 84642F4
+ .incbin "baserom.gba", 0x4642F4, 0xC
+
+gUnknown_8464300:: @ 8464300
+ .incbin "baserom.gba", 0x464300, 0x4C
+
+gUnknown_846434C:: @ 846434C
+ .incbin "baserom.gba", 0x46434C, 0xC
+
+gUnknown_8464358:: @ 8464358
+ .incbin "baserom.gba", 0x464358, 0x14
+
+gUnknown_846436C:: @ 846436C
+ .incbin "baserom.gba", 0x46436C, 0x8
+
+gUnknown_8464374:: @ 8464374
+ .incbin "baserom.gba", 0x464374, 0x8
+
+gUnknown_846437C:: @ 846437C
+ .incbin "baserom.gba", 0x46437C, 0x28
+
+gUnknown_84643A4:: @ 84643A4
+ .incbin "baserom.gba", 0x4643A4, 0x4
+
+gUnknown_84643A8:: @ 84643A8
+ .incbin "baserom.gba", 0x4643A8, 0x4
+
+gUnknown_84643AC:: @ 84643AC
+ .incbin "baserom.gba", 0x4643AC, 0x4
+
+gUnknown_84643B0:: @ 84643B0
+ .incbin "baserom.gba", 0x4643B0, 0x4
+
+gUnknown_84643B4:: @ 84643B4
+ .incbin "baserom.gba", 0x4643B4, 0x4
+
+gUnknown_84643B8:: @ 84643B8
+ .incbin "baserom.gba", 0x4643B8, 0x20
+
+gUnknown_84643D8:: @ 84643D8
+ .incbin "baserom.gba", 0x4643D8, 0x18
+
+gUnknown_84643F0:: @ 84643F0
+ .incbin "baserom.gba", 0x4643F0, 0x8
+
+gUnknown_84643F8:: @ 84643F8
+ .incbin "baserom.gba", 0x4643F8, 0x8
+
+gUnknown_8464400:: @ 8464400
+ .incbin "baserom.gba", 0x464400, 0x48
+
+gUnknown_8464448:: @ 8464448
+ .incbin "baserom.gba", 0x464448, 0x60
+
+gUnknown_84644A8:: @ 84644A8
+ .incbin "baserom.gba", 0x4644A8, 0x8
+
+gUnknown_84644B0:: @ 84644B0
+ .incbin "baserom.gba", 0x4644B0, 0x8
+
+gUnknown_84644B8:: @ 84644B8
+ .incbin "baserom.gba", 0x4644B8, 0x32C
+
+gUnknown_84647E4:: @ 84647E4
+ .incbin "baserom.gba", 0x4647E4, 0x18
+
+gUnknown_84647FC:: @ 84647FC
+ .incbin "baserom.gba", 0x4647FC, 0x8
+
+gUnknown_8464804:: @ 8464804
+ .incbin "baserom.gba", 0x464804, 0x38
+
+gUnknown_846483C:: @ 846483C
+ .incbin "baserom.gba", 0x46483C, 0x40
+
+gUnknown_846487C:: @ 846487C
+ .incbin "baserom.gba", 0x46487C, 0x8
+
+gUnknown_8464884:: @ 8464884
+ .incbin "baserom.gba", 0x464884, 0xC
+
+gUnknown_8464890:: @ 8464890
+ .incbin "baserom.gba", 0x464890, 0x1E
+
+gUnknown_84648AE:: @ 84648AE
+ .incbin "baserom.gba", 0x4648AE, 0xF
+
+gUnknown_84648BD:: @ 84648BD
+ .incbin "baserom.gba", 0x4648BD, 0x15
+
+gUnknown_84648D2:: @ 84648D2
+ .incbin "baserom.gba", 0x4648D2, 0x54
+
+gUnknown_8464926:: @ 8464926
+ .incbin "baserom.gba", 0x464926, 0x40
+
+gUnknown_8464966:: @ 8464966
+ .incbin "baserom.gba", 0x464966, 0xC4A
+
+gUnknown_84655B0:: @ 84655B0
+ .incbin "baserom.gba", 0x4655B0, 0x18
+
+gUnknown_84655C8:: @ 84655C8
+ .incbin "baserom.gba", 0x4655C8, 0x40
+
+gUnknown_8465608:: @ 8465608
+ .incbin "baserom.gba", 0x465608, 0xE
+
+gUnknown_8465616:: @ 8465616
+ .incbin "baserom.gba", 0x465616, 0xC0
+
+gUnknown_84656D6:: @ 84656D6
+ .incbin "baserom.gba", 0x4656D6, 0x10E
+
+gUnknown_84657E4:: @ 84657E4
+ .incbin "baserom.gba", 0x4657E4, 0x98
+
+gUnknown_846587C:: @ 846587C
+ .incbin "baserom.gba", 0x46587C, 0x5C
+
+gUnknown_84658D8:: @ 84658D8
+ .incbin "baserom.gba", 0x4658D8, 0x18
+
+gUnknown_84658F0:: @ 84658F0
+ .incbin "baserom.gba", 0x4658F0, 0x40
+
+gUnknown_8465930:: @ 8465930
+ .incbin "baserom.gba", 0x465930, 0x20
+
+gUnknown_8465950:: @ 8465950
+ .incbin "baserom.gba", 0x465950, 0x80
+
+gUnknown_84659D0:: @ 84659D0
+ .incbin "baserom.gba", 0x4659D0, 0x804
+
+gUnknown_84661D4:: @ 84661D4
+ .incbin "baserom.gba", 0x4661D4, 0x2E8
+
+gUnknown_84664BC:: @ 84664BC
+ .incbin "baserom.gba", 0x4664BC, 0x20
+
+gUnknown_84664DC:: @ 84664DC
+ .incbin "baserom.gba", 0x4664DC, 0x60
+
+gUnknown_846653C:: @ 846653C
+ .incbin "baserom.gba", 0x46653C, 0x84
+
+gUnknown_84665C0:: @ 84665C0
+ .incbin "baserom.gba", 0x4665C0, 0x60
+
+gUnknown_8466620:: @ 8466620
+ .incbin "baserom.gba", 0x466620, 0x378
+
+gUnknown_8466998:: @ 8466998
+ .incbin "baserom.gba", 0x466998, 0x178
+
+gUnknown_8466B10:: @ 8466B10
+ .incbin "baserom.gba", 0x466B10, 0x10
+
+gUnknown_8466B20:: @ 8466B20
+ .incbin "baserom.gba", 0x466B20, 0xEC
+
+gUnknown_8466C0C:: @ 8466C0C
+ .incbin "baserom.gba", 0x466C0C, 0x28
+
+gUnknown_8466C34:: @ 8466C34
+ .incbin "baserom.gba", 0x466C34, 0x4
+
+gUnknown_8466C38:: @ 8466C38
+ .incbin "baserom.gba", 0x466C38, 0x8
+
+gUnknown_8466C40:: @ 8466C40
+ .incbin "baserom.gba", 0x466C40, 0x18
+
+gUnknown_8466C58:: @ 8466C58
+ .incbin "baserom.gba", 0x466C58, 0xB8
+
+gUnknown_8466D10:: @ 8466D10
+ .incbin "baserom.gba", 0x466D10, 0x20
+
+gUnknown_8466D30:: @ 8466D30
+ .incbin "baserom.gba", 0x466D30, 0x30
+
+gUnknown_8466D60:: @ 8466D60
+ .incbin "baserom.gba", 0x466D60, 0x10
+
+gUnknown_8466D70:: @ 8466D70
+ .incbin "baserom.gba", 0x466D70, 0x20
+
+gUnknown_8466D90:: @ 8466D90
+ .incbin "baserom.gba", 0x466D90, 0x8
+
+gUnknown_8466D98:: @ 8466D98
+ .incbin "baserom.gba", 0x466D98, 0x8
+
+gUnknown_8466DA0:: @ 8466DA0
+ .incbin "baserom.gba", 0x466DA0, 0x8
+
+gUnknown_8466DA8:: @ 8466DA8
+ .incbin "baserom.gba", 0x466DA8, 0x8
+
+gUnknown_8466DB0:: @ 8466DB0
+ .incbin "baserom.gba", 0x466DB0, 0x8
+
+gUnknown_8466DB8:: @ 8466DB8
+ .incbin "baserom.gba", 0x466DB8, 0x8
+
+gUnknown_8466DC0:: @ 8466DC0
+ .incbin "baserom.gba", 0x466DC0, 0x8
+
+gUnknown_8466DC8:: @ 8466DC8
+ .incbin "baserom.gba", 0x466DC8, 0x8
+
+gUnknown_8466DD0:: @ 8466DD0
+ .incbin "baserom.gba", 0x466DD0, 0x18
+
+gUnknown_8466DE8:: @ 8466DE8
+ .incbin "baserom.gba", 0x466DE8, 0x18
+
+gUnknown_8466E00:: @ 8466E00
+ .incbin "baserom.gba", 0x466E00, 0x78
+
+gUnknown_8466E78:: @ 8466E78
+ .incbin "baserom.gba", 0x466E78, 0x18
+
+gUnknown_8466E90:: @ 8466E90
+ .incbin "baserom.gba", 0x466E90, 0x18
+
+gUnknown_8466EA8:: @ 8466EA8
+ .incbin "baserom.gba", 0x466EA8, 0x18
+
+gUnknown_8466EC0:: @ 8466EC0
+ .incbin "baserom.gba", 0x466EC0, 0x28
+
+gUnknown_8466EE8:: @ 8466EE8
+ .incbin "baserom.gba", 0x466EE8, 0x8
+
+gUnknown_8466EF0:: @ 8466EF0
+ .incbin "baserom.gba", 0x466EF0, 0x10
+
+gUnknown_8466F00:: @ 8466F00
+ .incbin "baserom.gba", 0x466F00, 0x28
+
+ .align 2
+gUnknown_8466F28:: @ 8466F28
+ .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent.c"
+
+ .align 2
+gUnknown_8466F5C:: @ 8466F5C
+ .asciz "0"
+
+ .align 2
+gUnknown_8466F60:: @ 8466F60
+ .incbin "baserom.gba", 0x466F60, 0x20
+
+ .align 2
+gUnknown_8466F80:: @ 8466F80
+ .asciz "C:/WORK/POKeFRLG/src/pm_lgfr_ose/source/mevent_server.c"
+
+ .align 2
+gUnknown_8466FB8:: @ 8466FB8
+ .asciz "size <= ME_SEND_BUF_SIZE"
+
+ .align 2
+gUnknown_8466FD4:: @ 8466FD4
+ .asciz "cmd->parameter == NULL"
+
+ .align 2
+gUnknown_8466FEC:: @ 8466FEC
+ .asciz "cmd->flag == FALSE"
+
+ .align 2
+gUnknown_8467000:: @ 8467000
+ .asciz "cmd->flag == FALSE && cmd->parameter == NULL"
+
+ .align 2
+gUnknown_8467030:: @ 8467030
+ .incbin "baserom.gba", 0x467030, 0x14
+
+ .align 2
+gUnknown_8467044:: @ 8467044
+ .asciz "svr->mainseqno < NELEMS(func_tbl)"
+
+ .align 2
+gUnknown_8467068:: @ 8467068
+ .incbin "baserom.gba", 0x467068, 0x8
+
+gUnknown_8467070:: @ 8467070
+ .incbin "baserom.gba", 0x467070, 0x4
+
+gUnknown_8467074:: @ 8467074
+ .incbin "baserom.gba", 0x467074, 0xEE4
+
+gUnknown_8467F58:: @ 8467F58
+ .incbin "baserom.gba", 0x467F58, 0x8
+
+gUnknown_8467F60:: @ 8467F60
+ .incbin "baserom.gba", 0x467F60, 0x40
+
+gUnknown_8467FA0:: @ 8467FA0
+ .incbin "baserom.gba", 0x467FA0, 0x18
+
+gUnknown_8467FB8:: @ 8467FB8
+ .incbin "baserom.gba", 0x467FB8, 0x80
+
+gUnknown_8468038:: @ 8468038
+ .incbin "baserom.gba", 0x468038, 0x8
+
+gUnknown_8468040:: @ 8468040
+ .incbin "baserom.gba", 0x468040, 0x10
+
+gUnknown_8468050:: @ 8468050
+ .incbin "baserom.gba", 0x468050, 0x6D0
+
+gUnknown_8468720:: @ 8468720
+ .incbin "baserom.gba", 0x468720, 0xC0
+
+gUnknown_84687E0:: @ 84687E0
+ .incbin "baserom.gba", 0x4687E0, 0x38C
+
+gUnknown_8468B6C:: @ 8468B6C
+ .incbin "baserom.gba", 0x468B6C, 0x60
+
+gUnknown_8468BCC:: @ 8468BCC
+ .incbin "baserom.gba", 0x468BCC, 0x90
diff --git a/data/event_scripts.s b/data/event_scripts.s
index 6bfa500cc..c27df1946 100644
--- a/data/event_scripts.s
+++ b/data/event_scripts.s
@@ -226,7 +226,9 @@ gUnknown_81A8DD8:: @ 81A8DD8
.incbin "baserom.gba", 0x1A8DD8, 0x25
gUnknown_81A8DFD:: @ 81A8DFD
- .incbin "baserom.gba", 0x1A8DFD, 0xA072
+ .incbin "baserom.gba", 0x1A8DFD, 0x4309
+
+ .include "data/text/fame_checker.inc"
gUnknown_81B2E6F:: @ 81B2E6F
.incbin "baserom.gba", 0x1B2E6F, 0x15A
diff --git a/data/fame_checker/img_845ce00.png b/data/fame_checker/img_845ce00.png
new file mode 100644
index 000000000..b0a170e09
--- /dev/null
+++ b/data/fame_checker/img_845ce00.png
Binary files differ
diff --git a/data/fame_checker/img_845cf00.png b/data/fame_checker/img_845cf00.png
new file mode 100644
index 000000000..0d692439a
--- /dev/null
+++ b/data/fame_checker/img_845cf00.png
Binary files differ
diff --git a/data/fame_checker/img_845d100.png b/data/fame_checker/img_845d100.png
new file mode 100644
index 000000000..4cc3e200d
--- /dev/null
+++ b/data/fame_checker/img_845d100.png
Binary files differ
diff --git a/data/fame_checker/img_845d520.png b/data/fame_checker/img_845d520.png
new file mode 100644
index 000000000..4d23c4c87
--- /dev/null
+++ b/data/fame_checker/img_845d520.png
Binary files differ
diff --git a/data/fame_checker/img_845dd40.png b/data/fame_checker/img_845dd40.png
new file mode 100644
index 000000000..7e3a7b39b
--- /dev/null
+++ b/data/fame_checker/img_845dd40.png
Binary files differ
diff --git a/data/fame_checker/img_845e560.png b/data/fame_checker/img_845e560.png
new file mode 100644
index 000000000..1abf1a63e
--- /dev/null
+++ b/data/fame_checker/img_845e560.png
Binary files differ
diff --git a/data/fame_checker/img_845ed80.png b/data/fame_checker/img_845ed80.png
new file mode 100644
index 000000000..5e2a19aed
--- /dev/null
+++ b/data/fame_checker/img_845ed80.png
Binary files differ
diff --git a/data/fame_checker/pal_845d0e0.pal b/data/fame_checker/pal_845d0e0.pal
new file mode 100644
index 000000000..dac232f78
--- /dev/null
+++ b/data/fame_checker/pal_845d0e0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+106 106 106
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+139 139 139
+189 189 189
+205 205 205
+238 238 238
+230 230 230
+222 222 222
+180 180 180
+255 255 255
+106 106 106
diff --git a/data/fame_checker/pal_845d500.pal b/data/fame_checker/pal_845d500.pal
new file mode 100644
index 000000000..212d9eb69
--- /dev/null
+++ b/data/fame_checker/pal_845d500.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+246 222 82
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+246 148 41
+255 82 0
diff --git a/data/fame_checker/pal_845dd20.pal b/data/fame_checker/pal_845dd20.pal
new file mode 100644
index 000000000..e6dcabf2f
--- /dev/null
+++ b/data/fame_checker/pal_845dd20.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 197 164
+255 222 205
+238 180 148
+197 139 106
+115 90 65
+222 164 82
+180 139 65
+148 106 57
+172 164 189
+255 230 131
+230 205 106
+238 131 90
+90 90 106
+213 205 213
+255 255 255
+0 0 0
diff --git a/data/fame_checker/pal_845e540.pal b/data/fame_checker/pal_845e540.pal
new file mode 100644
index 000000000..485e27c48
--- /dev/null
+++ b/data/fame_checker/pal_845e540.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 197 164
+255 230 205
+230 189 156
+205 156 115
+106 74 57
+180 139 213
+139 98 172
+98 65 106
+213 189 131
+189 164 98
+139 123 74
+180 139 115
+156 106 82
+90 74 49
+255 255 255
+0 0 0
diff --git a/data/fame_checker/pal_845ed60.pal b/data/fame_checker/pal_845ed60.pal
new file mode 100644
index 000000000..adf46bf14
--- /dev/null
+++ b/data/fame_checker/pal_845ed60.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 197 164
+255 222 205
+238 180 148
+197 139 106
+172 123 98
+213 172 115
+156 123 74
+90 82 65
+205 115 98
+164 213 156
+115 172 106
+90 123 82
+222 230 255
+164 172 197
+255 255 255
+0 0 0
diff --git a/data/fame_checker/pal_845f580.pal b/data/fame_checker/pal_845f580.pal
new file mode 100644
index 000000000..eb6f2f18b
--- /dev/null
+++ b/data/fame_checker/pal_845f580.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+115 197 164
+255 222 205
+238 180 148
+197 139 106
+106 74 74
+139 156 164
+205 164 205
+164 123 164
+82 82 57
+213 213 222
+123 123 82
+115 115 115
+197 189 131
+156 156 90
+255 255 255
+0 0 0
diff --git a/data/fame_checker/pal_845f5a0.pal b/data/fame_checker/pal_845f5a0.pal
new file mode 100644
index 000000000..25a3ac1d2
--- /dev/null
+++ b/data/fame_checker/pal_845f5a0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+255 255 255
+255 255 255
+98 98 98
+213 213 205
+230 8 8
+255 189 115
+32 156 8
+148 246 148
+49 82 205
+164 197 246
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/fame_checker/pal_845f5c0.pal b/data/fame_checker/pal_845f5c0.pal
new file mode 100644
index 000000000..4b0812f09
--- /dev/null
+++ b/data/fame_checker/pal_845f5c0.pal
@@ -0,0 +1,19 @@
+JASC-PAL
+0100
+16
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+0 0 0
diff --git a/data/fame_checker/tilemap_845c600.bin b/data/fame_checker/tilemap_845c600.bin
new file mode 100644
index 000000000..8ff09b289
--- /dev/null
+++ b/data/fame_checker/tilemap_845c600.bin
Binary files differ
diff --git a/data/graphics.s b/data/graphics.s
index 50e557dc3..990a3dd9c 100644
--- a/data/graphics.s
+++ b/data/graphics.s
@@ -16185,17 +16185,17 @@ gUnknown_8E9E9FC:: @ 8E9E9FC
gUnknown_8E9F1FC:: @ 8E9F1FC
.incbin "baserom.gba", 0xE9F1FC, 0x24 @UNKNOWN
-gUnknown_8E9F220:: @ 8E9F220
- .incbin "baserom.gba", 0xE9F220, 0x40 @UNKNOWN
+gFameCheckerBgPals:: @ 8E9F220
+ .incbin "data/graphics/fame_checker_bg.gbapal"
-gUnknown_8E9F260:: @ 8E9F260
- .incbin "baserom.gba", 0xE9F260, 0x14A0 @UNKNOWN
+gFameCheckerBgTiles:: @ 8E9F260
+ .incbin "data/graphics/fame_checker_bg.4bpp"
-gUnknown_8EA0700:: @ 8EA0700
- .incbin "baserom.gba", 0xEA0700, 0x800 @UNKNOWN
+gFameCheckerBg3Tilemap:: @ 8EA0700
+ .incbin "data/graphics/fame_checker_tilemap3.bin"
-gUnknown_8EA0F00:: @ 8EA0F00
- .incbin "baserom.gba", 0xEA0F00, 0x800 @UNKNOWN
+gFameCheckerBg2Tilemap:: @ 8EA0F00
+ .incbin "data/graphics/fame_checker_tilemap2.bin"
gUnknown_8EA1700:: @ 8EA1700
.incbin "baserom.gba", 0xEA1700, 0x20 @UNKNOWN
diff --git a/data/graphics/fame_checker_bg.pal b/data/graphics/fame_checker_bg.pal
new file mode 100644
index 000000000..9fc41db87
--- /dev/null
+++ b/data/graphics/fame_checker_bg.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+246 222 82
+255 255 156
+246 222 82
+255 238 98
+255 255 213
+255 172 106
+222 148 74
+255 246 222
+156 148 164
+238 230 180
+255 255 213
+123 123 123
+213 213 213
+255 255 255
+106 106 106
+24 98 197
+246 222 82
+172 164 90
+148 156 230
+98 106 180
+123 131 205
+255 255 255
+213 213 213
+0 0 0
+0 0 0
+0 0 0
+0 0 0
+115 0 0
+0 255 0
+205 213 213
+238 238 246
+106 106 106
diff --git a/data/graphics/fame_checker_bg.png b/data/graphics/fame_checker_bg.png
new file mode 100644
index 000000000..ed1a9a0f8
--- /dev/null
+++ b/data/graphics/fame_checker_bg.png
Binary files differ
diff --git a/data/graphics/fame_checker_tilemap2.bin b/data/graphics/fame_checker_tilemap2.bin
new file mode 100644
index 000000000..6e2eed695
--- /dev/null
+++ b/data/graphics/fame_checker_tilemap2.bin
Binary files differ
diff --git a/data/graphics/fame_checker_tilemap3.bin b/data/graphics/fame_checker_tilemap3.bin
new file mode 100644
index 000000000..fdf419278
--- /dev/null
+++ b/data/graphics/fame_checker_tilemap3.bin
Binary files differ
diff --git a/data/text/fame_checker.inc b/data/text/fame_checker.inc
new file mode 100644
index 000000000..d73c05dbd
--- /dev/null
+++ b/data/text/fame_checker.inc
@@ -0,0 +1,1700 @@
+gFameCheckerFlavorText_ProfOak0:: @ 0x81AD106
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{COLOR RED}{SHADOW GREEN}OAK POKéMON RESEARCH LAB$"
+
+gFameCheckerFlavorText_ProfOak1:: @ 0x81AD145
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}To make a complete guide on all\n"
+ .string "the POKéMON in the world…\p"
+ .string "That was my dream!$"
+
+gFameCheckerFlavorText_ProfOak2:: @ 0x81AD1BB
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}PROF. OAK may not look like much,\n"
+ .string "but he’s the authority on POKéMON.\p"
+ .string "Many POKéMON TRAINERS hold him in\n"
+ .string "high regard.$"
+
+gFameCheckerFlavorText_ProfOak3:: @ 0x81AD258
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{COLOR RED}{SHADOW GREEN}PROF. OAK reportedly lives with his\n"
+ .string "grandchildren, DAISY and {RIVAL}.$"
+
+gFameCheckerFlavorText_ProfOak4:: @ 0x81AD2B9
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}I hear OAK’s taken a lot of\n"
+ .string "interest in you, child.\p"
+ .string "That old duff was once tough and\n"
+ .string "handsome.\p"
+ .string "But that was decades ago.\n"
+ .string "He’s a shadow of his former self.$"
+
+gFameCheckerFlavorText_ProfOak5:: @ 0x81AD377
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}PROF. OAK is going to have his own\n"
+ .string "radio show soon.\p"
+ .string "The program will be called PROF.\n"
+ .string "OAK’S POKéMON SEMINAR.$"
+
+gFameCheckerFlavorText_Daisy0:: @ 0x81AD40C
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}If you show DAISY your POKéMON,\n"
+ .string "she can tell how much it likes you.\p"
+ .string "Occasionally, she will even groom\n"
+ .string "a POKéMON for you.$"
+
+gFameCheckerFlavorText_Daisy1:: @ 0x81AD4AE
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}But the person who is most liked by\n"
+ .string "POKéMON is DAISY, I think.$"
+
+gFameCheckerFlavorText_Daisy2:: @ 0x81AD516
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}She was gently grooming POKéMON…\n"
+ .string "She was a little angel.\p"
+ .string "That little girl’s name…\n"
+ .string "I think it was DAISY.$"
+
+gFameCheckerFlavorText_Daisy3:: @ 0x81AD5A7
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{COLOR RED}{SHADOW GREEN}PROF. OAK reportedly lives with his\n"
+ .string "grandchildren, DAISY and {RIVAL}.$"
+
+gFameCheckerFlavorText_Daisy4:: @ 0x81AD608
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}A girl from PALLET TOWN, DAISY,\n"
+ .string "she enjoys TEA every day.\p"
+ .string "She visits the CELADON DEPT. STORE\n"
+ .string "to buy some TEA.$"
+
+gFameCheckerFlavorText_Daisy5:: @ 0x81AD69F
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{COLOR RED}{SHADOW GREEN}The Spring POKéMON CONTEST’s\n"
+ .string "Grand Champion is DAISY OAK of\l"
+ .string "PALLET TOWN!$"
+
+gFameCheckerFlavorText_Brock0:: @ 0x81AD705
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{COLOR RED}{SHADOW GREEN}PEWTER CITY POKéMON GYM\n"
+ .string "LEADER: BROCK\l"
+ .string "The Rock-Solid POKéMON TRAINER!$"
+
+gFameCheckerFlavorText_Brock1:: @ 0x81AD771
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}My rock-hard willpower is evident\n"
+ .string "in even my POKéMON.\p"
+ .string "My POKéMON are all rock hard and\n"
+ .string "have true-grit determination.\p"
+ .string "That’s right - my POKéMON are all\n"
+ .string "the ROCK type!$"
+
+gFameCheckerFlavorText_Brock2:: @ 0x81AD840
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}There aren’t many serious POKéMON\n"
+ .string "TRAINERS here.\p"
+ .string "They’re all like BUG CATCHERS,\n"
+ .string "you know, just hobbyists.\p"
+ .string "But PEWTER GYM’s BROCK isn’t like\n"
+ .string "that, not one bit.$"
+
+gFameCheckerFlavorText_Brock3:: @ 0x81AD908
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}BROCK is cool. He’s not just tough.\n"
+ .string "People like and respect him.\p"
+ .string "I want to become a GYM LEADER\n"
+ .string "like him.$"
+
+gFameCheckerFlavorText_Brock4:: @ 0x81AD99A
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Hi, I’m excavating for fossils here\n"
+ .string "under MT. MOON.\p"
+ .string "Sometimes, BROCK of PEWTER GYM\n"
+ .string "lends me a hand.$"
+
+gFameCheckerFlavorText_Brock5:: @ 0x81ADA27
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{COLOR RED}{SHADOW GREEN}BROCK rarely laughs, but is said to\n"
+ .string "be unable to stop if he starts.$"
+
+gFameCheckerFlavorText_Misty0:: @ 0x81ADA91
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{COLOR RED}{SHADOW GREEN}CERULEAN CITY POKéMON GYM\n"
+ .string "LEADER: MISTY\l"
+ .string "The Tomboyish Mermaid!$"
+
+gFameCheckerFlavorText_Misty1:: @ 0x81ADAF6
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}My policy is an all-out offensive\n"
+ .string "with WATER-type POKéMON!$"
+
+gFameCheckerFlavorText_Misty2:: @ 0x81ADB5A
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}MISTY is a TRAINER who’s going to\n"
+ .string "keep improving.\p"
+ .string "She won’t lose to someone like you!$"
+
+gFameCheckerFlavorText_Misty3:: @ 0x81ADBD9
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Strong TRAINERS and WATER POKéMON\n"
+ .string "are common sights in these parts.\p"
+ .string "They say that MISTY of the\n"
+ .string "CERULEAN GYM trains here.$"
+
+gFameCheckerFlavorText_Misty4:: @ 0x81ADC72
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}This cape is a famous date spot.\p"
+ .string "MISTY, the GYM LEADER, has high\n"
+ .string "hopes about this place.$"
+
+gFameCheckerFlavorText_Misty5:: @ 0x81ADCEB
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{COLOR RED}{SHADOW GREEN}MISTY is said to worship LORELEI\n"
+ .string "of the ELITE FOUR.$"
+
+gFameCheckerFlavorText_LtSurge0:: @ 0x81ADD3C
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{COLOR RED}{SHADOW GREEN}VERMILION CITY POKéMON GYM\n"
+ .string "LEADER: LT. SURGE\l"
+ .string "The Lightning American!$"
+
+gFameCheckerFlavorText_LtSurge1:: @ 0x81ADDA7
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}I tell you, kid, electric POKéMON\n"
+ .string "saved me during the war!$"
+
+gFameCheckerFlavorText_LtSurge2:: @ 0x81ADE0B
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}When I was in the Army, LT. SURGE\n"
+ .string "was my strict CO.\p"
+ .string "He was a hard taskmaster.$"
+
+gFameCheckerFlavorText_LtSurge3:: @ 0x81ADE82
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}LT. SURGE was always famous for\n"
+ .string "his cautious nature in the Army.$"
+
+gFameCheckerFlavorText_LtSurge4:: @ 0x81ADEEC
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}LT. SURGE installed the traps in\n"
+ .string "the GYM himself.\p"
+ .string "He set up double locks everywhere.$"
+
+gFameCheckerFlavorText_LtSurge5:: @ 0x81ADF6A
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{COLOR RED}{SHADOW GREEN}LT. SURGE is rumored to have been\n"
+ .string "a pilot while home in America.\p"
+ .string "He used the electricity generated\n"
+ .string "by POKéMON to power his plane.$"
+
+gFameCheckerFlavorText_Erika0:: @ 0x81AE009
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{COLOR RED}{SHADOW GREEN}CELADON CITY POKéMON GYM\n"
+ .string "LEADER: ERIKA\l"
+ .string "The Nature-Loving Princess!$"
+
+gFameCheckerFlavorText_Erika1:: @ 0x81AE072
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}I am a student of the art of\n"
+ .string "flower arranging.\p"
+ .string "My POKéMON are solely of the\n"
+ .string "GRASS type.$"
+
+gFameCheckerFlavorText_Erika2:: @ 0x81AE0F3
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}Our LEADER ERIKA might be quiet,\n"
+ .string "but she’s famous around here.$"
+
+gFameCheckerFlavorText_Erika3:: @ 0x81AE15B
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}We only use GRASS-type POKéMON at\n"
+ .string "our GYM.\p"
+ .string "Why? We also use them for making\n"
+ .string "flower arrangements!$"
+
+gFameCheckerFlavorText_Erika4:: @ 0x81AE1E5
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}I would never collect POKéMON if\n"
+ .string "they were unattractive.$"
+
+gFameCheckerFlavorText_Erika5:: @ 0x81AE247
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{COLOR RED}{SHADOW GREEN}Rumor has it that if you peek into\n"
+ .string "CELADON GYM, you can often\l"
+ .string "see ERIKA snoozing.$"
+
+gFameCheckerFlavorText_Koga0:: @ 0x81AE2B6
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{COLOR RED}{SHADOW GREEN}FUCHSIA CITY POKéMON GYM\n"
+ .string "LEADER: KOGA\l"
+ .string "The Poisonous Ninja Master$"
+
+gFameCheckerFlavorText_Koga1:: @ 0x81AE31D
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Despair to the creeping horror of\n"
+ .string "POISON-type POKéMON!$"
+
+gFameCheckerFlavorText_Koga2:: @ 0x81AE37D
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Even though I’ve lost, I will keep\n"
+ .string "training according to the teachings\l"
+ .string "of KOGA, my ninja master.$"
+
+gFameCheckerFlavorText_Koga3:: @ 0x81AE407
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}My father is the GYM LEADER of\n"
+ .string "this town.\p"
+ .string "I’m training to use POISON POKéMON\n"
+ .string "as well as my father.$"
+
+gFameCheckerFlavorText_Koga4:: @ 0x81AE48D
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{COLOR RED}{SHADOW GREEN}KOGA is said to have a thorough\n"
+ .string "knowledge of medicine.\p"
+ .string "He even concocts medicine to nurse\n"
+ .string "his POKéMON to health.$"
+
+gFameCheckerFlavorText_Koga5:: @ 0x81AE51B
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}The SAFARI ZONE’s huge, wouldn’t\n"
+ .string "you say?\p"
+ .string "FUCHSIA’s GYM LEADER, KOGA, \n"
+ .string "patrols the grounds every so often.\p"
+ .string "Thanks to him, we can play here\n"
+ .string "knowing that we’re safe.$"
+
+gFameCheckerFlavorText_Sabrina0:: @ 0x81AE5E8
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{COLOR RED}{SHADOW GREEN}SAFFRON CITY POKéMON GYM\n"
+ .string "LEADER: SABRINA\l"
+ .string "The Master of PSYCHIC POKéMON!$"
+
+gFameCheckerFlavorText_Sabrina1:: @ 0x81AE656
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}You know about a girl GYM LEADER\n"
+ .string "in SAFFRON CITY?\p"
+ .string "She uses PSYCHIC-type POKéMON,\n"
+ .string "right?$"
+
+gFameCheckerFlavorText_Sabrina2:: @ 0x81AE6D7
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}I have had psychic powers since\n"
+ .string "I was a child.\p"
+ .string "It started when a spoon I\n"
+ .string "carelessly tossed, bent.$"
+
+gFameCheckerFlavorText_Sabrina3:: @ 0x81AE762
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}I dislike battling, but if you wish,\n"
+ .string "I will show you my powers!$"
+
+gFameCheckerFlavorText_Sabrina4:: @ 0x81AE7CB
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{COLOR RED}{SHADOW GREEN}People say that SABRINA can\n"
+ .string "communicate with her POKéMON\l"
+ .string "during battle without speaking.$"
+
+gFameCheckerFlavorText_Sabrina5:: @ 0x81AE841
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}SABRINA just wiped out the KARATE\n"
+ .string "MASTER next door.$"
+
+gFameCheckerFlavorText_Blaine0:: @ 0x81AE89E
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{COLOR RED}{SHADOW GREEN}CINNABAR ISLAND POKéMON GYM\n"
+ .string "LEADER: BLAINE\l"
+ .string "The Hotheaded Quiz Master!$"
+
+gFameCheckerFlavorText_Blaine1:: @ 0x81AE90A
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}My fiery POKéMON are all rough\n"
+ .string "and ready with intense heat!\p"
+ .string "They incinerate all challengers!$"
+
+gFameCheckerFlavorText_Blaine2:: @ 0x81AE990
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Our LEADER, BLAINE, became lost\n"
+ .string "in the mountains but good.\p"
+ .string "Night fell when a fiery bird\n"
+ .string "POKéMON appeared.\p"
+ .string "Its light allowed BLAINE to find\n"
+ .string "his way down safely.$"
+
+gFameCheckerFlavorText_Blaine3:: @ 0x81AEA59
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}CINNABAR GYM’s BLAINE is quite the\n"
+ .string "odd fellow.\p"
+ .string "He’s lived on the island since way\n"
+ .string "before the LAB was built.$"
+
+gFameCheckerFlavorText_Blaine4:: @ 0x81AEAEE
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{COLOR RED}{SHADOW GREEN}It’s a photo of BLAINE and\n"
+ .string "MR. FUJI.\p"
+ .string "They’re standing shoulder to\n"
+ .string "shoulder with big grins.$"
+
+gFameCheckerFlavorText_Blaine5:: @ 0x81AEB69
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{COLOR RED}{SHADOW GREEN}BLAINE is said to remove his dark\n"
+ .string "shades only when he is thinking up\l"
+ .string "new quiz questions.$"
+
+gFameCheckerFlavorText_Lorelei0:: @ 0x81AEBDF
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}I am LORELEI of the ELITE FOUR.$"
+
+gFameCheckerFlavorText_Lorelei1:: @ 0x81AEC28
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}No one can best me when it comes\n"
+ .string "to icy POKéMON.$"
+
+gFameCheckerFlavorText_Lorelei2:: @ 0x81AEC82
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Where was this person born?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}We’ve had a great and powerful\n"
+ .string "TRAINER grow up on this island.\p"
+ .string "I bet even you’d know her.\n"
+ .string "It’s LORELEI of the ELITE FOUR!$"
+
+gFameCheckerFlavorText_Lorelei3:: @ 0x81AED27
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{COLOR RED}{SHADOW GREEN}Known for her logical, calculated,\n"
+ .string "and cool battling style, LORELEI\l"
+ .string "has a surprising secret!$"
+
+gFameCheckerFlavorText_Lorelei4:: @ 0x81AEDAA
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}Did you know that LORELEI has lots\n"
+ .string "and lots of stuffed dolls?\p"
+ .string "Every time she comes back to\n"
+ .string "FOUR ISLAND, her collection grows!$"
+
+gFameCheckerFlavorText_Lorelei5:: @ 0x81AEE51
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}The LAPRAS she has, I imagine it\n"
+ .string "to be the one she met as a child.\p"
+ .string "I believe it was in ICEFALL CAVE\n"
+ .string "that she caught it.\p"
+ .string "Perhaps that POKéMON has been with\n"
+ .string "her ever since.$"
+
+gFameCheckerFlavorText_Bruno0:: @ 0x81AEF25
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}I am BRUNO of the ELITE FOUR!$"
+
+gFameCheckerFlavorText_Bruno1:: @ 0x81AEF6C
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}I’ve lived and trained with my\n"
+ .string "fighting POKéMON!$"
+
+gFameCheckerFlavorText_Bruno2:: @ 0x81AEFC6
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{COLOR RED}{SHADOW GREEN}BRUNO apparently joined the ELITE\n"
+ .string "FOUR out of his burning ambition to\l"
+ .string "battle the best TRAINERS.$"
+
+gFameCheckerFlavorText_Bruno3:: @ 0x81AF04C
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}BRUNO, who’s a senior ahead of me,\n"
+ .string "visits the SPA on occasion.\p"
+ .string "He comes to rehab injuries, both\n"
+ .string "his own and his POKéMON’s.$"
+
+gFameCheckerFlavorText_Bruno4:: @ 0x81AF0F0
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}He’s one of the ELITE FOUR.\n"
+ .string "His name is BRUNO.\p"
+ .string "He went away disappointed when he\n"
+ .string "found out that they were all sold\l"
+ .string "out of Rage Candybars.$"
+
+gFameCheckerFlavorText_Bruno5:: @ 0x81AF19A
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Even BRUNO…\n"
+ .string "He trained with a fellow by the\l"
+ .string "name of BRAWLY before.$"
+
+gFameCheckerFlavorText_Agatha0:: @ 0x81AF200
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}I am AGATHA of the ELITE FOUR.$"
+
+gFameCheckerFlavorText_Agatha1:: @ 0x81AF248
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}AGATHA’s GHOST-type POKéMON are\n"
+ .string "horrifically terrifying in toughness.$"
+
+gFameCheckerFlavorText_Agatha2:: @ 0x81AF2B7
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}That old lady’s also got a really\n"
+ .string "short fuse, too.\p"
+ .string "It doesn’t take anything to get\n"
+ .string "that scary lady hollering.$"
+
+gFameCheckerFlavorText_Agatha3:: @ 0x81AF34E
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{COLOR RED}{SHADOW GREEN}In her youth, AGATHA and PROF.\n"
+ .string "OAK were rivals who vied for\l"
+ .string "supremacy as TRAINERS.$"
+
+gFameCheckerFlavorText_Agatha4:: @ 0x81AF3BE
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}I hear OAK’s taken a lot of\n"
+ .string "interest in you, child.\p"
+ .string "That old duff was once tough and\n"
+ .string "handsome.\p"
+ .string "But that was decades ago.\n"
+ .string "He’s a shadow of his former self.$"
+
+gFameCheckerFlavorText_Agatha5:: @ 0x81AF47C
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}Take AGATHA, for example.\p"
+ .string "She set a record for being the\n"
+ .string "oldest-ever ELITE FOUR member.$"
+
+gFameCheckerFlavorText_Lance0:: @ 0x81AF4FD
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}I lead the ELITE FOUR.\p"
+ .string "You can call me LANCE the dragon\n"
+ .string "TRAINER.$"
+
+gFameCheckerFlavorText_Lance1:: @ 0x81AF567
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}You know that dragons are\n"
+ .string "mythical POKéMON.\p"
+ .string "They’re hard to catch and raise,\n"
+ .string "but their powers are superior.\p"
+ .string "They’re virtually indestructible.\n"
+ .string "There’s no being clever with them.$"
+
+gFameCheckerFlavorText_Lance2:: @ 0x81AF641
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}He stands for justice!\n"
+ .string "He’s cool, and yet passionate!\l"
+ .string "He’s the greatest, LANCE!$"
+
+gFameCheckerFlavorText_Lance3:: @ 0x81AF6BA
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}We have a customer, LANCE, who\n"
+ .string "occasionally comes.\p"
+ .string "He always buys capes.\p"
+ .string "I wonder… Does he have many\n"
+ .string "identical capes at home?$"
+
+gFameCheckerFlavorText_Lance4:: @ 0x81AF758
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{COLOR RED}{SHADOW GREEN}LANCE’s grandfather is thought to\n"
+ .string "be the elder of a famous clan of\l"
+ .string "dragon masters.$"
+
+gFameCheckerFlavorText_Lance5:: @ 0x81AF7CB
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}From what I’ve heard, LANCE has\n"
+ .string "a cousin who’s a GYM LEADER\l"
+ .string "somewhere far away.$"
+
+gFameCheckerFlavorText_Bill0:: @ 0x81AF83E
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}After all, BILL’s world-famous as a\n"
+ .string "POKéMANIAC.\p"
+ .string "He invented the POKéMON Storage\n"
+ .string "System on PC, too.$"
+
+gFameCheckerFlavorText_Bill1:: @ 0x81AF8CA
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}BILL has lots of POKéMON!\n"
+ .string "He collects rare ones, too!$"
+
+gFameCheckerFlavorText_Bill2:: @ 0x81AF929
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}He’s my grandson!\p"
+ .string "He always liked collecting things,\n"
+ .string "even as a child!$"
+
+gFameCheckerFlavorText_Bill3:: @ 0x81AF998
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}BILL is a POKéMANIAC, so he loves\n"
+ .string "every kind.\p"
+ .string "Apparently, the first one he caught\n"
+ .string "was an ABRA.$"
+
+gFameCheckerFlavorText_Bill4:: @ 0x81AFA20
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}BILL’s hometown is GOLDENROD CITY,\n"
+ .string "where his folks still live.\p"
+ .string "I’ve heard that it’s quite the\n"
+ .string "festive, bustling city.$"
+
+gFameCheckerFlavorText_Bill5:: @ 0x81AFAB9
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Apparently, BILL simply can’t\n"
+ .string "stomach milk at all.$"
+
+gFameCheckerFlavorText_MrFuji0:: @ 0x81AFB0C
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}He’s really kind.\p"
+ .string "He looks after abandoned and\n"
+ .string "orphaned POKéMON.$"
+
+gFameCheckerFlavorText_MrFuji1:: @ 0x81AFB76
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}This old guy marched right up to\n"
+ .string "our HIDEOUT.\p"
+ .string "Then, he starts ranting about how\n"
+ .string "TEAM ROCKET’s abusing POKéMON.\p"
+ .string "So, we’re just talking it over as\n"
+ .string "adults.$"
+
+gFameCheckerFlavorText_MrFuji2:: @ 0x81AFC38
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{COLOR RED}{SHADOW GREEN}POKéMON FAN MAGAZINE\n"
+ .string "Monthly Grand Prize Drawing!\p"
+ .string "The application form is…\p"
+ .string "Gone! It’s been clipped out.\n"
+ .string "Someone must have applied already.$"
+
+gFameCheckerFlavorText_MrFuji3:: @ 0x81AFCE9
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}There’s a rumor…\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}I hear that MR. FUJI’s not from\n"
+ .string "these parts originally, either.$"
+
+gFameCheckerFlavorText_MrFuji4:: @ 0x81AFD49
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{COLOR RED}{SHADOW GREEN}It’s a photo of BLAINE and\n"
+ .string "MR. FUJI.\p"
+ .string "They’re standing shoulder to\n"
+ .string "shoulder with big grins.$"
+
+gFameCheckerFlavorText_MrFuji5:: @ 0x81AFDC4
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{COLOR RED}{SHADOW GREEN}Editor: The shy MR. FUJI turned\n"
+ .string "down our interview requests.\p"
+ .string "He is a kindly man who is adored\n"
+ .string "and respected in LAVENDER TOWN.$"
+
+gFameCheckerFlavorText_Giovanni0:: @ 0x81AFE68
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}TEAM ROCKET captures POKéMON from\n"
+ .string "around the world.\p"
+ .string "They’re important tools for keeping\n"
+ .string "our criminal enterprise going.\p"
+ .string "I am the leader, GIOVANNI!$"
+
+gFameCheckerFlavorText_Giovanni1:: @ 0x81AFF23
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Favorite kind of POKéMON?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Those thugs that took over our\n"
+ .string "building…\p"
+ .string "Their BOSS said he was looking for\n"
+ .string "strong POKéMON.$"
+
+gFameCheckerFlavorText_Giovanni2:: @ 0x81AFFA8
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What is this person like?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}TEAM ROCKET’s BOSS is terribly\n"
+ .string "cruel!\p"
+ .string "To him, POKéMON are just tools to\n"
+ .string "be used.$"
+
+gFameCheckerFlavorText_Giovanni3:: @ 0x81B0022
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Welcome to my hideout!\p"
+ .string "It shall be so until I can restore\n"
+ .string "TEAM ROCKET to its former glory.$"
+
+gFameCheckerFlavorText_Giovanni4:: @ 0x81B00A6
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}What does this person do?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Blow me away! GIOVANNI was the\n"
+ .string "GYM LEADER of VIRIDIAN?$"
+
+gFameCheckerFlavorText_Giovanni5:: @ 0x81B0106
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}Family and friends?\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}You… You’re not GIOVANNI’s kid,\n"
+ .string "are you?\p"
+ .string "No, that can’t be right.\n"
+ .string "GIOVANNI’s kid has red hair.$"
+
+
+gFameCheckerPersonName_ProfOak:: @ 0x81B0188
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}PROF. OAK$"
+
+gFameCheckerPersonQuote_ProfOak:: @ 0x81B0198
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: PROF. OAK\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Why do POKéMON compete and battle\n"
+ .string "so hard for you?\p"
+ .string "They do so because they can see\n"
+ .string "the love and trust you have\l"
+ .string "towards POKéMON.\p"
+ .string "Never forget that.$"
+
+gFameCheckerPersonName_Daisy:: @ 0x81B0251
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}DAISY$"
+
+gFameCheckerPersonQuote_Daisy:: @ 0x81B025D
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: DAISY\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}While I was comfortably enjoying\n"
+ .string "my tea breaks, you’ve grown very\l"
+ .string "skilled and powerful.\p"
+ .string "I hope you’ll remain a good rival\n"
+ .string "to my little brother.$"
+
+gFameCheckerPersonName_Brock:: @ 0x81B030F
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}BROCK$"
+
+gFameCheckerPersonQuote_Brock:: @ 0x81B031B
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: BROCK\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}In this big world of ours, there\n"
+ .string "must be many tough TRAINERS.\p"
+ .string "Let’s both keep training and\n"
+ .string "making ourselves stronger!$"
+
+gFameCheckerPersonName_Misty:: @ 0x81B03B3
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}MISTY$"
+
+gFameCheckerPersonQuote_Misty:: @ 0x81B03BF
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: MISTY\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}I’m going to keep training here at\n"
+ .string "this GYM.\p"
+ .string "When I get better, I’d love to hit\n"
+ .string "the road and travel.$"
+
+gFameCheckerPersonName_LtSurge:: @ 0x81B0446
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}LT. SURGE$"
+
+gFameCheckerPersonQuote_LtSurge:: @ 0x81B0456
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: LT. SURGE\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Hey, kid!\n"
+ .string "You electrified me in our battle!\p"
+ .string "I didn’t know that there were\n"
+ .string "gutsy TRAINERS like you.\p"
+ .string "It made me change my mind about\n"
+ .string "you!$"
+
+gFameCheckerPersonName_Erika:: @ 0x81B0504
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}ERIKA$"
+
+gFameCheckerPersonQuote_Erika:: @ 0x81B0510
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: ERIKA\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}I am so glad that there are strong\n"
+ .string "TRAINERS like you.\p"
+ .string "That awareness alone inspires and\n"
+ .string "motivates me to try harder.\p"
+ .string "Please visit me again.\n"
+ .string "Zzz…$"
+
+gFameCheckerPersonName_Koga:: @ 0x81B05C2
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}KOGA$"
+
+gFameCheckerPersonQuote_Koga:: @ 0x81B05CD
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: KOGA\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}You and I, we must both set our\n"
+ .string "sights higher and work towards\l"
+ .string "meeting our challenges.\p"
+ .string "Now, I must go train my daughter.$"
+
+gFameCheckerPersonName_Sabrina:: @ 0x81B0667
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}SABRINA$"
+
+gFameCheckerPersonQuote_Sabrina:: @ 0x81B0675
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: SABRINA\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}The love you have towards your\n"
+ .string "POKéMON…\p"
+ .string "It was a power that was never\n"
+ .string "bested by my psychic power.$"
+
+gFameCheckerPersonName_Blaine:: @ 0x81B06FB
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}BLAINE$"
+
+gFameCheckerPersonQuote_Blaine:: @ 0x81B0708
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: BLAINE\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}My fire POKéMON!\n"
+ .string "They’ll become even more powerful!\p"
+ .string "And now, a quiz. How many kinds of\n"
+ .string "FIRE-type POKéMON are there?$"
+
+gFameCheckerPersonName_Lorelei:: @ 0x81B079F
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}LORELEI$"
+
+gFameCheckerPersonQuote_Lorelei:: @ 0x81B07AD
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: LORELEI\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}I needed to thank you for your\n"
+ .string "help.\p"
+ .string "But that has nothing to do with our\n"
+ .string "battles.\p"
+ .string "You’d better watch out next time!$"
+
+gFameCheckerPersonName_Bruno:: @ 0x81B0845
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}BRUNO$"
+
+gFameCheckerPersonQuote_Bruno:: @ 0x81B0851
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: BRUNO\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}The super power of your POKéMON\n"
+ .string "and you I’ve experienced myself.\p"
+ .string "Next time, maybe I should show you\n"
+ .string "how to train yourself.$"
+
+gFameCheckerPersonName_Agatha:: @ 0x81B08EE
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}AGATHA$"
+
+gFameCheckerPersonQuote_Agatha:: @ 0x81B08FB
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: AGATHA\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 05}{COLOR RED}{SHADOW GREEN}When you grow older, don’t you\n"
+ .string "dare go soft like that coot OAK!\p"
+ .string "Be like me and keep battling on!$"
+
+gFameCheckerPersonName_Lance:: @ 0x81B097F
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}LANCE$"
+
+gFameCheckerPersonQuote_Lance:: @ 0x81B098B
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: LANCE\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}I’m considering going back to my\n"
+ .string "hometown.\p"
+ .string "I want to retrain my DRAGON-type\n"
+ .string "POKéMON and strengthen them.\p"
+ .string "I’d like to invite you to my\n"
+ .string "hometown one day.$"
+
+gFameCheckerPersonName_Bill:: @ 0x81B0A45
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}BILL$"
+
+gFameCheckerPersonQuote_Bill:: @ 0x81B0A50
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: BILL\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Hey, there! CELIO had nothing but\n"
+ .string "praise for you.\p"
+ .string "Hearing that makes me happy.\p"
+ .string "When you catch some rare POKéMON,\n"
+ .string "come show me, okay? Promise!$"
+
+gFameCheckerPersonName_MrFuji:: @ 0x81B0AFF
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}MR. FUJI$"
+
+gFameCheckerPersonQuote_MrFuji:: @ 0x81B0B0E
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: MR. FUJI\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}Instead of hoping for the happiness\n"
+ .string "of just your POKéMON…\p"
+ .string "…Can I get you to wish for the\n"
+ .string "happiness of all POKéMON?$"
+
+gFameCheckerPersonName_Giovanni:: @ 0x81B0BA6
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}GIOVANNI$"
+
+gFameCheckerPersonQuote_Giovanni:: @ 0x81B0BB5
+ .string "{COLOR LIGHT_GRAY}{SHADOW BLACK}From: GIOVANNI\n"
+ .string "To: {PLAYER}\p"
+ .string "{SIZE 04}{COLOR RED}{SHADOW GREEN}There is nothing that I wish to say\n"
+ .string "to you.\p"
+ .string "I will concentrate solely on\n"
+ .string "bettering myself, and none other.$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak0:: @ 0x81B0C45
+ .string "PALLET TOWN$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak1:: @ 81B0C51
+ .string "RESEARCH LAB$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak2:: @ 81B0C5E
+ .string "RESEARCH LAB$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak3:: @ 81B0C6B
+ .string "VIRIDIAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak4:: @ 81B0C79
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_ProfOak5:: @ 81B0C88
+ .string "RESEARCH LAB$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy0:: @ 81B0C95
+ .string "RESEARCH LAB$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy1:: @ 81B0CA2
+ .string "VERMILION CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy2:: @ 81B0CB1
+ .string "WATER LABYRINTH$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy3:: @ 81B0CC1
+ .string "VIRIDIAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy4:: @ 81B0CCF
+ .string "CELADON MANSION$"
+
+gFameCheckerFlavorTextOriginLocation_Daisy5:: @ 81B0CDF
+ .string "FOUR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Brock0:: @ 81B0CEB
+ .string "PEWTER CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Brock1:: @ 81B0CF7
+ .string "PEWTER GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Brock2:: @ 81B0D02
+ .string "PEWTER CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Brock3:: @ 81B0D0E
+ .string "ROUTE 4$"
+
+gFameCheckerFlavorTextOriginLocation_Brock4:: @ 81B0D16
+ .string "MT. MOON$"
+
+gFameCheckerFlavorTextOriginLocation_Brock5:: @ 81B0D1F
+ .string "PEWTER MUSEUM$"
+
+gFameCheckerFlavorTextOriginLocation_Misty0:: @ 81B0D2D
+ .string "CERULEAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Misty1:: @ 81B0D3B
+ .string "CERULEAN GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Misty2:: @ 81B0D48
+ .string "CERULEAN GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Misty3:: @ 81B0D55
+ .string "SEAFOAM ISLANDS$"
+
+gFameCheckerFlavorTextOriginLocation_Misty4:: @ 81B0D65
+ .string "CERULEAN CAPE$"
+
+gFameCheckerFlavorTextOriginLocation_Misty5:: @ 81B0D73
+ .string "CERULEAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge0:: @ 81B0D81
+ .string "VERMILION CITY$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge1:: @ 81B0D90
+ .string "VERMILION GYM$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge2:: @ 81B0D9E
+ .string "VERMILION GYM$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge3:: @ 81B0DAC
+ .string "VERMILION GYM$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge4:: @ 81B0DBA
+ .string "VERMILION GYM$"
+
+gFameCheckerFlavorTextOriginLocation_LtSurge5:: @ 81B0DC8
+ .string "VERMILION CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Erika0:: @ 81B0DD7
+ .string "CELADON CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Erika1:: @ 81B0DE4
+ .string "CELADON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Erika2:: @ 81B0DF0
+ .string "CELADON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Erika3:: @ 81B0DFC
+ .string "CELADON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Erika4:: @ 81B0E08
+ .string "CELADON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Erika5:: @ 81B0E14
+ .string "CELADON MANSION$"
+
+gFameCheckerFlavorTextOriginLocation_Koga0:: @ 81B0E24
+ .string "FUCHSIA CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Koga1:: @ 81B0E31
+ .string "FUCHSIA GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Koga2:: @ 81B0E3D
+ .string "FUCHSIA GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Koga3:: @ 81B0E49
+ .string "FUCHSIA CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Koga4:: @ 81B0E56
+ .string "FUCHSIA CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Koga5:: @ 81B0E63
+ .string "SAFARI ZONE$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina0:: @ 81B0E6F
+ .string "SAFFRON CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina1:: @ 81B0E7C
+ .string "THREE ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina2:: @ 81B0E89
+ .string "SAFFRON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina3:: @ 81B0E95
+ .string "SAFFRON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina4:: @ 81B0EA1
+ .string "SAFFRON CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Sabrina5:: @ 81B0EAE
+ .string "SAFFRON GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine0:: @ 81B0EBA
+ .string "CINNABAR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine1:: @ 81B0ECA
+ .string "CINNABAR GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine2:: @ 81B0ED7
+ .string "CINNABAR GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine3:: @ 81B0EE4
+ .string "CINNABAR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine4:: @ 81B0EF4
+ .string "CINNABAR GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Blaine5:: @ 81B0F01
+ .string "RESORT GORGEOUS$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei0:: @ 81B0F11
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei1:: @ 81B0F20
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei2:: @ 81B0F2F
+ .string "FOUR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei3:: @ 81B0F3B
+ .string "FIVE ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei4:: @ 81B0F47
+ .string "FOUR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Lorelei5:: @ 81B0F53
+ .string "FOUR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno0:: @ 81B0F5F
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno1:: @ 81B0F6E
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno2:: @ 81B0F7D
+ .string "SAFFRON CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno3:: @ 81B0F8A
+ .string "EMBER SPA$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno4:: @ 81B0F94
+ .string "TWO ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Bruno5:: @ 81B0F9F
+ .string "SEVAULT CANYON$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha0:: @ 81B0FAE
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha1:: @ 81B0FBD
+ .string "INDIGO PLATEAU$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha2:: @ 81B0FCC
+ .string "INDIGO PLATEAU$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha3:: @ 81B0FDB
+ .string "SEVEN ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha4:: @ 81B0FE8
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Agatha5:: @ 81B0FF7
+ .string "SIX ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Lance0:: @ 81B1002
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Lance1:: @ 81B1011
+ .string "POKéMON LEAGUE$"
+
+gFameCheckerFlavorTextOriginLocation_Lance2:: @ 81B1020
+ .string "SAFFRON CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Lance3:: @ 81B102D
+ .string "CELADON DEPT.$"
+
+gFameCheckerFlavorTextOriginLocation_Lance4:: @ 81B103B
+ .string "INDIGO PLATEAU$"
+
+gFameCheckerFlavorTextOriginLocation_Lance5:: @ 81B104A
+ .string "INDIGO PLATEAU$"
+
+gFameCheckerFlavorTextOriginLocation_Bill0:: @ 81B1059
+ .string "CERULEAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Bill1:: @ 81B1067
+ .string "CERULEAN CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Bill2:: @ 81B1075
+ .string "FUCHSIA CITY$"
+
+gFameCheckerFlavorTextOriginLocation_Bill3:: @ 81B1082
+ .string "ONE ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Bill4:: @ 81B108D
+ .string "ONE ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Bill5:: @ 81B1098
+ .string "ONE ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji0:: @ 81B10A3
+ .string "LAVENDER TOWN$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji1:: @ 81B10B1
+ .string "POKéMON TOWER$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji2:: @ 81B10BF
+ .string "LAVENDER TOWN$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji3:: @ 81B10CD
+ .string "LAVENDER TOWN$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji4:: @ 81B10DB
+ .string "CINNABAR GYM$"
+
+gFameCheckerFlavorTextOriginLocation_MrFuji5:: @ 81B10E8
+ .string "CINNABAR ISLAND$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni0:: @ 81B10F8
+ .string "ROCKET HIDEOUT$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni1:: @ 81B1107
+ .string "SILPH CO.$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni2:: @ 81B1111
+ .string "SILPH CO.$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni3:: @ 81B111B
+ .string "VIRIDIAN GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni4:: @ 81B1128
+ .string "VIRIDIAN GYM$"
+
+gFameCheckerFlavorTextOriginLocation_Giovanni5:: @ 81B1135
+ .string "ROCKET WAREHOUSE$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak0:: @ 81B1146
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak1:: @ 81B114B
+ .string "PROF. OAK$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak2:: @ 81B1155
+ .string "AIDE$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak3:: @ 81B115A
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak4:: @ 81B116A
+ .string "AGATHA$"
+
+gFameCheckerFlavorTextOriginObjectName_ProfOak5:: @ 81B1171
+ .string "AIDE$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy0:: @ 81B1176
+ .string "AIDE$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy1:: @ 81B117B
+ .string "WOMAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy2:: @ 81B1181
+ .string "MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy3:: @ 81B1185
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy4:: @ 81B1195
+ .string "OLD LADY$"
+
+gFameCheckerFlavorTextOriginObjectName_Daisy5:: @ 81B119E
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock0:: @ 81B11AE
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock1:: @ 81B11B3
+ .string "BROCK$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock2:: @ 81B11B9
+ .string "YOUNG MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock3:: @ 81B11C3
+ .string "BOY$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock4:: @ 81B11C7
+ .string "MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Brock5:: @ 81B11CB
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty0:: @ 81B11DB
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty1:: @ 81B11E0
+ .string "MISTY$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty2:: @ 81B11E6
+ .string "LUIS$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty3:: @ 81B11EB
+ .string "YOUNG MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty4:: @ 81B11F5
+ .string "DAME$"
+
+gFameCheckerFlavorTextOriginObjectName_Misty5:: @ 81B11FA
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge0:: @ 81B120A
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge1:: @ 81B120F
+ .string "LT. SURGE$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge2:: @ 81B1219
+ .string "TUCKER$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge3:: @ 81B1220
+ .string "TUCKER$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge4:: @ 81B1227
+ .string "DWAYNE$"
+
+gFameCheckerFlavorTextOriginObjectName_LtSurge5:: @ 81B122E
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika0:: @ 81B123E
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika1:: @ 81B1243
+ .string "ERIKA$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika2:: @ 81B1249
+ .string "LOLA$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika3:: @ 81B124E
+ .string "TAMIA$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika4:: @ 81B1254
+ .string "ERIKA$"
+
+gFameCheckerFlavorTextOriginObjectName_Erika5:: @ 81B125A
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga0:: @ 81B126A
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga1:: @ 81B126F
+ .string "KOGA$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga2:: @ 81B1274
+ .string "KIRK$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga3:: @ 81B1279
+ .string "CHARINE$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga4:: @ 81B1281
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Koga5:: @ 81B1291
+ .string "MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina0:: @ 81B1295
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina1:: @ 81B129A
+ .string "YOUNG MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina2:: @ 81B12A4
+ .string "SABRINA$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina3:: @ 81B12AC
+ .string "SABRINA$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina4:: @ 81B12B4
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Sabrina5:: @ 81B12C4
+ .string "TYRON$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine0:: @ 81B12CA
+ .string "SIGN$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine1:: @ 81B12CF
+ .string "BLAINE$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine2:: @ 81B12D6
+ .string "DEREK$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine3:: @ 81B12DC
+ .string "WOMAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine4:: @ 81B12E2
+ .string "PHOTO$"
+
+gFameCheckerFlavorTextOriginObjectName_Blaine5:: @ 81B12E8
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei0:: @ 81B12F8
+ .string "LORELEI$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei1:: @ 81B1300
+ .string "LORELEI$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei2:: @ 81B1308
+ .string "OLD MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei3:: @ 81B1310
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei4:: @ 81B1320
+ .string "LITTLE GIRL$"
+
+gFameCheckerFlavorTextOriginObjectName_Lorelei5:: @ 81B132C
+ .string "OLD LADY$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno0:: @ 81B1335
+ .string "BRUNO$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno1:: @ 81B133B
+ .string "BRUNO$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno2:: @ 81B1341
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno3:: @ 81B1351
+ .string "CRUSHER$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno4:: @ 81B1359
+ .string "WOMAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Bruno5:: @ 81B135F
+ .string "CRUSHER$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha0:: @ 81B1367
+ .string "AGATHA$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha1:: @ 81B136E
+ .string "CRUSHER$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha2:: @ 81B1376
+ .string "CRUSHER$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha3:: @ 81B137E
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha4:: @ 81B138E
+ .string "AGATHA$"
+
+gFameCheckerFlavorTextOriginObjectName_Agatha5:: @ 81B1395
+ .string "OLD LADY$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance0:: @ 81B139E
+ .string "LANCE$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance1:: @ 81B13A4
+ .string "LANCE$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance2:: @ 81B13AA
+ .string "WOMAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance3:: @ 81B13B0
+ .string "LITTLE GIRL$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance4:: @ 81B13BC
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Lance5:: @ 81B13CC
+ .string "YOUNG MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill0:: @ 81B13D6
+ .string "{RIVAL}$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill1:: @ 81B13D9
+ .string "LITTLE BOY$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill2:: @ 81B13E4
+ .string "OLD MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill3:: @ 81B13EC
+ .string "CELIO$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill4:: @ 81B13F2
+ .string "CELIO$"
+
+gFameCheckerFlavorTextOriginObjectName_Bill5:: @ 81B13F8
+ .string "CELIO$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji0:: @ 81B13FE
+ .string "LITTLE GIRL$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji1:: @ 81B140A
+ .string "TEAM ROCKET$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji2:: @ 81B1416
+ .string "MAGAZINE$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji3:: @ 81B141F
+ .string "MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji4:: @ 81B1423
+ .string "PHOTO$"
+
+gFameCheckerFlavorTextOriginObjectName_MrFuji5:: @ 81B1429
+ .string "POKéMON JOURNAL$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni0:: @ 81B1439
+ .string "GIOVANNI$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni1:: @ 81B1442
+ .string "SCIENTIST$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni2:: @ 81B144C
+ .string "SCIENTIST$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni3:: @ 81B1456
+ .string "GIOVANNI$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni4:: @ 81B145F
+ .string "MAN$"
+
+gFameCheckerFlavorTextOriginObjectName_Giovanni5:: @ 81B1463
+ .string "GIDEON$"
+
+gUnknown_81B146A:: @ 81B146A
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: PEWTER GYM\n"
+ .string "LEADER BROCK!\p"
+ .string "BROCK rarely laughs, but is said to\n"
+ .string "be unable to stop if he starts.$"
+
+gUnknown_81B14E8:: @ 81B14E8
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: CERULEAN GYM\n"
+ .string "LEADER MISTY!\p"
+ .string "MISTY is said to worship LORELEI\n"
+ .string "of the ELITE FOUR.$"
+
+gUnknown_81B1558:: @ 81B1558
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: VERMILION GYM\n"
+ .string "LEADER LT. SURGE!\p"
+ .string "LT. SURGE is rumored to have been\n"
+ .string "a pilot while home in America.\p"
+ .string "He used the electricity generated\n"
+ .string "by POKéMON to power his plane.$"
+
+gUnknown_81B161B:: @ 81B161B
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: CELADON GYM\n"
+ .string "LEADER ERIKA!\p"
+ .string "Rumor has it that if you peek into\n"
+ .string "CELADON GYM, you can often\l"
+ .string "see ERIKA snoozing.$"
+
+gUnknown_81B16A8:: @ 81B16A8
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: FUCHSIA GYM\n"
+ .string "LEADER KOGA!\p"
+ .string "KOGA is said to have a thorough\n"
+ .string "knowledge of medicine.\p"
+ .string "He even concocts medicine to nurse\n"
+ .string "his POKéMON to health.$"
+
+gUnknown_81B1753:: @ 81B1753
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: SAFFRON GYM\n"
+ .string "LEADER SABRINA!\p"
+ .string "People say that SABRINA can\n"
+ .string "communicate with her POKéMON\l"
+ .string "during battle without speaking.$"
+
+gUnknown_81B17E9:: @ 81B17E9
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: CINNABAR GYM\n"
+ .string "LEADER BLAINE!\p"
+ .string "BLAINE is said to remove his dark\n"
+ .string "shades only when he is thinking up\l"
+ .string "new quiz questions.$"
+
+gUnknown_81B187F:: @ 81B187F
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature:\n"
+ .string "ELITE FOUR’s LORELEI!\p"
+ .string "Known for her logical, calculated,\n"
+ .string "and cool battling style, LORELEI\l"
+ .string "has a surprising secret!$"
+
+gUnknown_81B1913:: @ 81B1913
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature:\n"
+ .string "ELITE FOUR’s BRUNO!\p"
+ .string "BRUNO apparently joined the ELITE\n"
+ .string "FOUR out of his burning ambition to\l"
+ .string "battle the best TRAINERS.$"
+
+gUnknown_81B19A8:: @ 81B19A8
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature:\n"
+ .string "ELITE FOUR’s AGATHA!\p"
+ .string "In her youth, AGATHA and PROF.\n"
+ .string "OAK were rivals who vied for\l"
+ .string "supremacy as TRAINERS.$"
+
+gUnknown_81B1A31:: @ 81B1A31
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature:\n"
+ .string "ELITE FOUR’s LANCE!\p"
+ .string "LANCE’s grandfather is thought to\n"
+ .string "be the elder of a famous clan of\l"
+ .string "dragon masters.$"
+
+gUnknown_81B1AB9:: @ 81B1AB9
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature: PROF. OAK,\n"
+ .string "the POKéMON Researcher!\p"
+ .string "PROF. OAK reportedly lives with his\n"
+ .string "grandchildren DAISY and {RIVAL}.$"
+
+gUnknown_81B1B3D:: @ 81B1B3D
+ .string "This is a POKéMON JOURNAL from\n"
+ .string "years ago…\p"
+ .string "POKéMON JOURNAL\n"
+ .string "CONTEST Special!\p"
+ .string "The Spring POKéMON CONTEST’s\n"
+ .string "Grand Champion is DAISY OAK of\l"
+ .string "PALLET TOWN!$"
+
+gUnknown_81B1BD1:: @ 81B1BD1
+ .string "POKéMON JOURNAL\p"
+ .string "Special Feature:\n"
+ .string "MR. FUJI of POKéMON HOUSE!\p"
+ .string "Editor: The shy MR. FUJI turned\n"
+ .string "down our interview requests.\p"
+ .string "He is a kindly man who is adored\n"
+ .string "and respected in LAVENDER TOWN.$"
+
+gUnknown_81B1C8B:: @ 81B1C8B
+ .string "Hmm…\n"
+ .string "Is that right…$"
+
+gUnknown_81B1C9F:: @ 81B1C9F
+ .string "Oh!\n"
+ .string "Look, look!$"
+
+gUnknown_81B1CAF:: @ 81B1CAF
+ .string "Read it, read it!$"
+
+gUnknown_81B1CC1:: @ 81B1CC1
+ .string "TRAINER TIPS\p"
+ .string "Press START to open the MENU!$"
+
+gUnknown_81B1CEC:: @ 81B1CEC
+ .string "Signs are useful, aren’t they?$"
+
+gUnknown_81B1D0B:: @ 81B1D0B
+ .string "Look, look!\p"
+ .string "I copied what it said on one of\n"
+ .string "those TRAINER TIPS signs!$"
+
+gUnknown_81B1D51:: @ 81B1D51
+ .string "TRAINER TIPS!\p"
+ .string "Press START to open the MENU!$"
+
+gUnknown_81B1D7D:: @ 81B1D7D
+ .string "It’s a POKéMON PRINTER!\p"
+ .string "It can put a print of your POKéMON\n"
+ .string "on the back of your TRAINER CARD.\p"
+ .string "It costs only ¥50.\n"
+ .string "Would you like to try it?$"
+
+gUnknown_81B1E07:: @ 81B1E07
+ .string "You don’t have enough money.$"
+
+gUnknown_81B1E24:: @ 81B1E24
+ .string "Please choose the print type.$"
+
+gUnknown_81B1E42:: @ 81B1E42
+ .string "A big smile for the photo, please!\n"
+ .string "Three… Two… One…\p"
+ .string "Flash!$"
+
+gUnknown_81B1E7D:: @ 81B1E7D
+ .string "Your POKéMON print is ready!\n"
+ .string "Check your TRAINER CARD.$"
+
+gUnknown_81B1EB3:: @ 81B1EB3
+ .string "Giggle…\n"
+ .string "I collected a ton of STICKERS.\l"
+ .string "I wish I could show them off…$"
+
+gUnknown_81B1EF8:: @ 81B1EF8
+ .string "Oh, excellent!\n"
+ .string "You’ve come to the right place!\p"
+ .string "Look, look! See? See?\n"
+ .string "These are my STICKERS!\l"
+ .string "Look how many I got!\p"
+ .string "I bet you want some.\n"
+ .string "I bet you do!\p"
+ .string "I’ll give a STICKER if you can tell\n"
+ .string "me something awesome about\l"
+ .string "yourself.\p"
+ .string "What will you brag about?$"
+
+gUnknown_81B1FEF:: @ 81B1FEF
+ .string "Brag about something for me.\n"
+ .string "I’ll give you a STICKER.$"
+
+gUnknown_81B2025:: @ 81B2025
+ .string "Oh, hi!\n"
+ .string "Here comes the braggart.\p"
+ .string "What are you going to brag about\n"
+ .string "today?$"
+
+gUnknown_81B206E:: @ 81B206E
+ .string "Oh, wow, you made it into the\n"
+ .string "HALL OF FAME.\p"
+ .string "That’s pretty good, yup!\n"
+ .string "I’ll give you one of these.$"
+
+gUnknown_81B20CF:: @ 81B20CF
+ .string "Oh, wow, you’ve entered the\n"
+ .string "HALL OF FAME often!\p"
+ .string "That’s impressive, yup!\n"
+ .string "I’ll give you one of these.$"
+
+gUnknown_81B2133:: @ 81B2133
+ .string "Whoa! You’ve made it into the\n"
+ .string "HALL OF FAME that often?\l"
+ .string "That’s seriously incredible, yup!\p"
+ .string "You own the POKéMON LEAGUE!\n"
+ .string "I’ll give you one of these.$"
+
+gUnknown_81B21C4:: @ 81B21C4
+ .string "No way! You’ve gone into the\n"
+ .string "HALL OF FAME that many times?\p"
+ .string "You’re beyond incredible, yup!\n"
+ .string "That’s it, I have to give you this.$"
+
+gUnknown_81B2242:: @ 81B2242
+ .string "The HALL OF FAME STICKER was\n"
+ .string "applied to the TRAINER CARD.$"
+
+gUnknown_81B227C:: @ 81B227C
+ .string "Hmm…\p"
+ .string "Come back with a better story next\n"
+ .string "time, okay?$"
+
+gUnknown_81B22B0:: @ 81B22B0
+ .string "Oh, no, no can do.\p"
+ .string "You’re practically a living legend.\n"
+ .string "I have no SITCKERS left to give.$"
+
+gUnknown_81B2308:: @ 81B2308
+ .string "Oh, wow, there are POKéMON EGGS?\n"
+ .string "I didn’t know that!\p"
+ .string "That’s pretty good, yup!\n"
+ .string "I’ll give you one of these.$"
+
+gUnknown_81B2372:: @ 81B2372
+ .string "You’ve hatched that many EGGS?\n"
+ .string "You really must like them!\p"
+ .string "That’s impressive, yup!\n"
+ .string "I’ll give you one of these.$"
+
+gUnknown_81B23E0:: @ 81B23E0
+ .string "Whoa! You’ve hatched a whole\n"
+ .string "bunch of EGGS!\p"
+ .string "You’re an EGG-hatching machine!\n"
+ .string "I’ll give you one of these.$"
+
+gUnknown_81B2448:: @ 81B2448
+ .string "Wh… You hatched that many EGGS?\p"
+ .string "What’s behind your love of EGGS?\n"
+ .string "It’s beyond incredible, yup!\p"
+ .string "You’re too awesome, I tell you.\n"
+ .string "That’s it, I have to give you this.$"
+
+gUnknown_81B24EA:: @ 81B24EA
+ .string "The EGG STICKER was applied\n"
+ .string "to the TRAINER CARD.$"
+
+gUnknown_81B251B:: @ 81B251B
+ .string "Hmm…\p"
+ .string "Come back with a better story next\n"
+ .string "time, okay?$"
+
+gUnknown_81B254F:: @ 81B254F
+ .string "Oh, no, no can do.\p"
+ .string "You’re practically a living legend.\n"
+ .string "I have no SITCKERS left to give.$"
+
+gUnknown_81B25A7:: @ 81B25A7
+ .string "Oh, wow, you’ve had success\n"
+ .string "link battling?\p"
+ .string "You’re pretty strong, yup!\n"
+ .string "I’ll give you one of these.$"
+
+gUnknown_81B2609:: @ 81B2609
+ .string "You’ve beaten your friends a lot\n"
+ .string "link battling, huh?\p"
+ .string "You’re impressively strong, yup!\n"
+ .string "I’ll give you one of these.$"
+
+gUnknown_81B267B:: @ 81B267B
+ .string "Whoa! You’ve beaten your friends\n"
+ .string "a frightful number of times.\p"
+ .string "Have you lost friends over this?\n"
+ .string "I’ll give you one of these.$"
+
+gUnknown_81B26F6:: @ 81B26F6
+ .string "Wh… Wickedly whoa!\n"
+ .string "You’ve won mind-blowingly often!\p"
+ .string "It just knocks me out thinking\n"
+ .string "about how tough you are.\p"
+ .string "You’re the stuff of nightmares!\n"
+ .string "That’s it, I have to give you this.$"
+
+gUnknown_81B27A6:: @ 81B27A6
+ .string "The VICTORY STICKER was applied\n"
+ .string "to the TRAINER CARD.$"
+
+gUnknown_81B27DB:: @ 81B27DB
+ .string "Hmm…\p"
+ .string "Come back with a better story next\n"
+ .string "time, okay?$"
+
+gUnknown_81B280F:: @ 81B280F
+ .string "Oh, no, no can do.\p"
+ .string "You’re practically a living legend.\n"
+ .string "I have no SITCKERS left to give.$"
+
+gUnknown_81B2867:: @ 81B2867
+
+gUnknown_81B2E1C:: @ 81B2E1C
+ .incbin "baserom.gba", 0x001b2867, 0x5b5
+ .string "How do I do this?$"
+
+gUnknown_81B2E2E:: @ 81B2E2E
+ .string "What does this term mean?$"
+
+gUnknown_81B2E48:: @ 81B2E48
+ .string "About this game$"
+
+gUnknown_81B2E58:: @ 81B2E58
+ .string "Type Matchup List$"
+
+gUnknown_81B2E6A:: @ 81B2E6A
+ .string "EXIT$"
diff --git a/graphics_file_rules.mk b/graphics_file_rules.mk
index 493077558..c34f43baa 100644
--- a/graphics_file_rules.mk
+++ b/graphics_file_rules.mk
@@ -3,7 +3,9 @@ MONBACKGFXDIR := graphics/pokemon/back_pics
MONFRONTGFXDIR := graphics/pokemon/anim_front_pics
MONPALDIR := graphics/pokemon/palettes
TILESETGFXDIR := data/tilesets
-FONTGFXDIR := data/graphics/fonts
+GLOBALGFXDIR := data/graphics
+FONTGFXDIR := $(GLOBALGFXDIR)/fonts
+FAMECHECKERGFXDIR := data/fame_checker
INTERFACEGFXDIR := graphics/interface
BTLANMSPRGFXDIR := graphics/battle_anims/sprites
UNUSEDGFXDIR := graphics/unused
@@ -651,3 +653,9 @@ $(INTERFACEGFXDIR)/region_map_affine.8bpp: %.8bpp: %.png
$(MISCGFXDIR)/birch_help.4bpp: $(MISCGFXDIR)/birch_bag.4bpp $(MISCGFXDIR)/birch_grass.4bpp
@cat $^ >$@
+
+$(FAMECHECKERGFXDIR)/img_845cf00.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -num_tiles 15
+
+$(GLOBALGFXDIR)/fame_checker_bg.4bpp: %.4bpp: %.png
+ $(GFX) $< $@ -num_tiles 165
diff --git a/include/battle_dome_cards.h b/include/battle_dome_cards.h
index 48d165e9c..94c9876f3 100644
--- a/include/battle_dome_cards.h
+++ b/include/battle_dome_cards.h
@@ -11,5 +11,7 @@ u16 sub_818D8AC(u16 species, bool8 isFrontPic, s16 x, s16 y, u8 paletteSlot, u16
u16 sub_818D8F0(u16 spriteId);
u16 sub_818D938(u16 species, bool8 isFrontPic, u16 destX, u16 destY, u8 paletteSlot, u8 windowId);
u8 sub_818D97C(u8 a0, u8 a1);
+u8 sub_810C2A4(u16, u8, s16, s16, u8, u16);
+void sub_810C2E8(u16);
#endif //GUARD_BATTLE_DOME_CARDS_H
diff --git a/include/bg.h b/include/bg.h
index 55927a5a4..003ffc916 100644
--- a/include/bg.h
+++ b/include/bg.h
@@ -77,9 +77,9 @@ void UnsetBgTilemapBuffer(u8 bg);
void* GetBgTilemapBuffer(u8 bg);
void CopyToBgTilemapBuffer(u8 bg, const void *src, u16 mode, u16 destOffset);
void CopyBgTilemapBufferToVram(u8 bg);
-void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height);
-void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
-void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2);
+void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height);
+void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette);
+void CopyRectToBgTilemapBufferRect(u8 bg, const void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2);
void FillBgTilemapBufferRect_Palette0(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height);
void FillBgTilemapBufferRect(u8 bg, u16 tileNum, u8 x, u8 y, u8 width, u8 height, u8 palette);
void WriteSequenceToBgTilemapBuffer(u8 bg, u16 firstTileNum, u8 x, u8 y, u8 width, u8 height, u8 paletteSlot, s16 tileNumDelta);
diff --git a/include/event_scripts.h b/include/event_scripts.h
index ebfdb4fe3..b909566d0 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -381,4 +381,328 @@ extern const u8 gUnknown_84178DA[];
extern const u8 gUnknown_81C137C[];
extern const u8 gUnknown_81C13D6[];
extern const u8 gUnknown_81C1429[];
+
+// fame_checker
+
+extern const u8 gFameCheckerFlavorText_ProfOak0[];
+extern const u8 gFameCheckerFlavorText_ProfOak1[];
+extern const u8 gFameCheckerFlavorText_ProfOak2[];
+extern const u8 gFameCheckerFlavorText_ProfOak3[];
+extern const u8 gFameCheckerFlavorText_ProfOak4[];
+extern const u8 gFameCheckerFlavorText_ProfOak5[];
+extern const u8 gFameCheckerFlavorText_Daisy0[];
+extern const u8 gFameCheckerFlavorText_Daisy1[];
+extern const u8 gFameCheckerFlavorText_Daisy2[];
+extern const u8 gFameCheckerFlavorText_Daisy3[];
+extern const u8 gFameCheckerFlavorText_Daisy4[];
+extern const u8 gFameCheckerFlavorText_Daisy5[];
+extern const u8 gFameCheckerFlavorText_Brock0[];
+extern const u8 gFameCheckerFlavorText_Brock1[];
+extern const u8 gFameCheckerFlavorText_Brock2[];
+extern const u8 gFameCheckerFlavorText_Brock3[];
+extern const u8 gFameCheckerFlavorText_Brock4[];
+extern const u8 gFameCheckerFlavorText_Brock5[];
+extern const u8 gFameCheckerFlavorText_Misty0[];
+extern const u8 gFameCheckerFlavorText_Misty1[];
+extern const u8 gFameCheckerFlavorText_Misty2[];
+extern const u8 gFameCheckerFlavorText_Misty3[];
+extern const u8 gFameCheckerFlavorText_Misty4[];
+extern const u8 gFameCheckerFlavorText_Misty5[];
+extern const u8 gFameCheckerFlavorText_LtSurge0[];
+extern const u8 gFameCheckerFlavorText_LtSurge1[];
+extern const u8 gFameCheckerFlavorText_LtSurge2[];
+extern const u8 gFameCheckerFlavorText_LtSurge3[];
+extern const u8 gFameCheckerFlavorText_LtSurge4[];
+extern const u8 gFameCheckerFlavorText_LtSurge5[];
+extern const u8 gFameCheckerFlavorText_Erika0[];
+extern const u8 gFameCheckerFlavorText_Erika1[];
+extern const u8 gFameCheckerFlavorText_Erika2[];
+extern const u8 gFameCheckerFlavorText_Erika3[];
+extern const u8 gFameCheckerFlavorText_Erika4[];
+extern const u8 gFameCheckerFlavorText_Erika5[];
+extern const u8 gFameCheckerFlavorText_Koga0[];
+extern const u8 gFameCheckerFlavorText_Koga1[];
+extern const u8 gFameCheckerFlavorText_Koga2[];
+extern const u8 gFameCheckerFlavorText_Koga3[];
+extern const u8 gFameCheckerFlavorText_Koga4[];
+extern const u8 gFameCheckerFlavorText_Koga5[];
+extern const u8 gFameCheckerFlavorText_Sabrina0[];
+extern const u8 gFameCheckerFlavorText_Sabrina1[];
+extern const u8 gFameCheckerFlavorText_Sabrina2[];
+extern const u8 gFameCheckerFlavorText_Sabrina3[];
+extern const u8 gFameCheckerFlavorText_Sabrina4[];
+extern const u8 gFameCheckerFlavorText_Sabrina5[];
+extern const u8 gFameCheckerFlavorText_Blaine0[];
+extern const u8 gFameCheckerFlavorText_Blaine1[];
+extern const u8 gFameCheckerFlavorText_Blaine2[];
+extern const u8 gFameCheckerFlavorText_Blaine3[];
+extern const u8 gFameCheckerFlavorText_Blaine4[];
+extern const u8 gFameCheckerFlavorText_Blaine5[];
+extern const u8 gFameCheckerFlavorText_Lorelei0[];
+extern const u8 gFameCheckerFlavorText_Lorelei1[];
+extern const u8 gFameCheckerFlavorText_Lorelei2[];
+extern const u8 gFameCheckerFlavorText_Lorelei3[];
+extern const u8 gFameCheckerFlavorText_Lorelei4[];
+extern const u8 gFameCheckerFlavorText_Lorelei5[];
+extern const u8 gFameCheckerFlavorText_Bruno0[];
+extern const u8 gFameCheckerFlavorText_Bruno1[];
+extern const u8 gFameCheckerFlavorText_Bruno2[];
+extern const u8 gFameCheckerFlavorText_Bruno3[];
+extern const u8 gFameCheckerFlavorText_Bruno4[];
+extern const u8 gFameCheckerFlavorText_Bruno5[];
+extern const u8 gFameCheckerFlavorText_Agatha0[];
+extern const u8 gFameCheckerFlavorText_Agatha1[];
+extern const u8 gFameCheckerFlavorText_Agatha2[];
+extern const u8 gFameCheckerFlavorText_Agatha3[];
+extern const u8 gFameCheckerFlavorText_Agatha4[];
+extern const u8 gFameCheckerFlavorText_Agatha5[];
+extern const u8 gFameCheckerFlavorText_Lance0[];
+extern const u8 gFameCheckerFlavorText_Lance1[];
+extern const u8 gFameCheckerFlavorText_Lance2[];
+extern const u8 gFameCheckerFlavorText_Lance3[];
+extern const u8 gFameCheckerFlavorText_Lance4[];
+extern const u8 gFameCheckerFlavorText_Lance5[];
+extern const u8 gFameCheckerFlavorText_Bill0[];
+extern const u8 gFameCheckerFlavorText_Bill1[];
+extern const u8 gFameCheckerFlavorText_Bill2[];
+extern const u8 gFameCheckerFlavorText_Bill3[];
+extern const u8 gFameCheckerFlavorText_Bill4[];
+extern const u8 gFameCheckerFlavorText_Bill5[];
+extern const u8 gFameCheckerFlavorText_MrFuji0[];
+extern const u8 gFameCheckerFlavorText_MrFuji1[];
+extern const u8 gFameCheckerFlavorText_MrFuji2[];
+extern const u8 gFameCheckerFlavorText_MrFuji3[];
+extern const u8 gFameCheckerFlavorText_MrFuji4[];
+extern const u8 gFameCheckerFlavorText_MrFuji5[];
+extern const u8 gFameCheckerFlavorText_Giovanni0[];
+extern const u8 gFameCheckerFlavorText_Giovanni1[];
+extern const u8 gFameCheckerFlavorText_Giovanni2[];
+extern const u8 gFameCheckerFlavorText_Giovanni3[];
+extern const u8 gFameCheckerFlavorText_Giovanni4[];
+extern const u8 gFameCheckerFlavorText_Giovanni5[];
+extern const u8 gFameCheckerPersonName_ProfOak[];
+extern const u8 gFameCheckerPersonQuote_ProfOak[];
+extern const u8 gFameCheckerPersonName_Daisy[];
+extern const u8 gFameCheckerPersonQuote_Daisy[];
+extern const u8 gFameCheckerPersonName_Brock[];
+extern const u8 gFameCheckerPersonQuote_Brock[];
+extern const u8 gFameCheckerPersonName_Misty[];
+extern const u8 gFameCheckerPersonQuote_Misty[];
+extern const u8 gFameCheckerPersonName_LtSurge[];
+extern const u8 gFameCheckerPersonQuote_LtSurge[];
+extern const u8 gFameCheckerPersonName_Erika[];
+extern const u8 gFameCheckerPersonQuote_Erika[];
+extern const u8 gFameCheckerPersonName_Koga[];
+extern const u8 gFameCheckerPersonQuote_Koga[];
+extern const u8 gFameCheckerPersonName_Sabrina[];
+extern const u8 gFameCheckerPersonQuote_Sabrina[];
+extern const u8 gFameCheckerPersonName_Blaine[];
+extern const u8 gFameCheckerPersonQuote_Blaine[];
+extern const u8 gFameCheckerPersonName_Lorelei[];
+extern const u8 gFameCheckerPersonQuote_Lorelei[];
+extern const u8 gFameCheckerPersonName_Bruno[];
+extern const u8 gFameCheckerPersonQuote_Bruno[];
+extern const u8 gFameCheckerPersonName_Agatha[];
+extern const u8 gFameCheckerPersonQuote_Agatha[];
+extern const u8 gFameCheckerPersonName_Lance[];
+extern const u8 gFameCheckerPersonQuote_Lance[];
+extern const u8 gFameCheckerPersonName_Bill[];
+extern const u8 gFameCheckerPersonQuote_Bill[];
+extern const u8 gFameCheckerPersonName_MrFuji[];
+extern const u8 gFameCheckerPersonQuote_MrFuji[];
+extern const u8 gFameCheckerPersonName_Giovanni[];
+extern const u8 gFameCheckerPersonQuote_Giovanni[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_ProfOak0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_ProfOak1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_ProfOak2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_ProfOak3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_ProfOak4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_ProfOak5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Daisy0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Daisy1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Daisy2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Daisy3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Daisy4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Daisy5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Brock0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Brock1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Brock2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Brock3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Brock4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Brock5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Misty0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Misty1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Misty2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Misty3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Misty4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Misty5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_LtSurge0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_LtSurge1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_LtSurge2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_LtSurge3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_LtSurge4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_LtSurge5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Erika0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Erika1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Erika2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Erika3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Erika4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Erika5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Koga0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Koga1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Koga2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Koga3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Koga4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Koga5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Sabrina0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Sabrina1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Sabrina2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Sabrina3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Sabrina4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Sabrina5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Blaine0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Blaine1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Blaine2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Blaine3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Blaine4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Blaine5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lorelei0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lorelei1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lorelei2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lorelei3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lorelei4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lorelei5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bruno0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bruno1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bruno2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bruno3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bruno4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bruno5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Agatha0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Agatha1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Agatha2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Agatha3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Agatha4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Agatha5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lance0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lance1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lance2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lance3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lance4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Lance5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bill0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bill1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bill2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bill3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bill4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Bill5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_MrFuji0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_MrFuji1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_MrFuji2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_MrFuji3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_MrFuji4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_MrFuji5[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Giovanni0[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Giovanni1[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Giovanni2[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Giovanni3[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Giovanni4[];
+extern const u8 gFameCheckerFlavorTextOriginLocation_Giovanni5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_ProfOak0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_ProfOak1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_ProfOak2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_ProfOak3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_ProfOak4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_ProfOak5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Daisy0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Daisy1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Daisy2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Daisy3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Daisy4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Daisy5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Brock0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Brock1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Brock2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Brock3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Brock4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Brock5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Misty0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Misty1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Misty2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Misty3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Misty4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Misty5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_LtSurge0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_LtSurge1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_LtSurge2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_LtSurge3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_LtSurge4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_LtSurge5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Erika0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Erika1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Erika2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Erika3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Erika4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Erika5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Koga0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Koga1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Koga2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Koga3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Koga4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Koga5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Sabrina0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Sabrina1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Sabrina2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Sabrina3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Sabrina4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Sabrina5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Blaine0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Blaine1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Blaine2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Blaine3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Blaine4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Blaine5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lorelei0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lorelei1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lorelei2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lorelei3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lorelei4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lorelei5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bruno0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bruno1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bruno2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bruno3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bruno4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bruno5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Agatha0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Agatha1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Agatha2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Agatha3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Agatha4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Agatha5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lance0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lance1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lance2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lance3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lance4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Lance5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bill0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bill1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bill2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bill3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bill4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Bill5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_MrFuji0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_MrFuji1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_MrFuji2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_MrFuji3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_MrFuji4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_MrFuji5[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni0[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni1[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni2[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni3[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni4[];
+extern const u8 gFameCheckerFlavorTextOriginObjectName_Giovanni5[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/fame_checker.h b/include/fame_checker.h
new file mode 100644
index 000000000..257431d8b
--- /dev/null
+++ b/include/fame_checker.h
@@ -0,0 +1,48 @@
+#ifndef GUARD_FAME_CHECKER_H
+#define GUARD_FAME_CHECKER_H
+
+#include "main.h"
+
+enum {
+ FAMECHECKER_OAK,
+ FAMECHECKER_DAISY,
+ FAMECHECKER_BROCK,
+ FAMECHECKER_MISTY,
+ FAMECHECKER_LTSURGE,
+ FAMECHECKER_ERIKA,
+ FAMECHECKER_KOGA,
+ FAMECHECKER_SABRINA,
+ FAMECHECKER_BLAINE,
+ FAMECHECKER_LORELEI,
+ FAMECHECKER_BRUNO,
+ FAMECHECKER_AGATHA,
+ FAMECHECKER_LANCE,
+ FAMECHECKER_BILL,
+ FAMECHECKER_MRFUJI,
+ FAMECHECKER_GIOVANNI,
+ NUM_FAMECHECKER_PERSONS
+};
+
+enum {
+ FCPICKSTATE_NO_DRAW,
+ FCPICKSTATE_SILHOUETTE,
+ FCPICKSTATE_COLORED
+};
+
+enum {
+ FCWINDOWID_LIST,
+ FCWINDOWID_UIHELP,
+ FCWINDOWID_MSGBOX,
+ FCWINDOWID_ICONDESC
+};
+
+extern struct ListMenuTemplate gFameChecker_ListMenuTemplate;
+extern u8 gIconDescriptionBoxIsOpen;
+
+void ResetFameChecker(void);
+void FullyUnlockFameChecker(void);
+void UseFameChecker(MainCallback savedCallback);
+void SetFlavorTextFlagFromSpecialVars(void);
+void UpdatePickStateFromSpecialVar8005(void);
+
+#endif //GUARD_FAME_CHECKER_H
diff --git a/include/field_map_obj.h b/include/field_map_obj.h
index ded970a83..d2ec58979 100644
--- a/include/field_map_obj.h
+++ b/include/field_map_obj.h
@@ -86,6 +86,8 @@ void npc_set_running_behaviour_etc(struct MapObject *, u8);
u8 sub_80634F0(u8 direction);
u8 sub_8063500(u8 a0);
void sub_805F060(struct MapObject *mapObject, u8 a1);
+u8 sub_805EB44(u8, u8, s16, s16);
+void npc_paltag_set_load(u8 mode);
// Exported data declarations
diff --git a/include/gba/macro.h b/include/gba/macro.h
index 462d3589d..c0a4e481b 100644
--- a/include/gba/macro.h
+++ b/include/gba/macro.h
@@ -125,6 +125,9 @@
#define DmaCopyLarge32(dmaNum, src, dest, size, block) DmaCopyLarge(dmaNum, src, dest, size, block, 32)
+#define DmaClearLarge16(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 16)
+#define DmaClearLarge32(dmaNum, dest, size, block) DmaClearLarge(dmaNum, dest, size, block, 32)
+
#define DmaCopyDefvars(dmaNum, src, dest, size, bit) \
{ \
const void *_src = src; \
diff --git a/include/global.berry.h b/include/global.berry.h
index f9e27b186..5c8a43a02 100644
--- a/include/global.berry.h
+++ b/include/global.berry.h
@@ -1,8 +1,6 @@
#ifndef GUARD_GLOBAL_BERRY_H
#define GUARD_GLOBAL_BERRY_H
-#include "global.h"
-
#define BERRY_NAME_COUNT 7
#define BERRY_ITEM_EFFECT_COUNT 18
diff --git a/include/global.fieldmap.h b/include/global.fieldmap.h
index 98077d8d4..ed5054b7d 100644
--- a/include/global.fieldmap.h
+++ b/include/global.fieldmap.h
@@ -1,8 +1,6 @@
#ifndef GUARD_GLOBAL_FIELDMAP_H
#define GUARD_GLOBAL_FIELDMAP_H
-#include "global.h"
-
#define NUM_FIELD_OBJECTS 16
enum
diff --git a/include/global.h b/include/global.h
index 050e200f9..d5bfc5241 100644
--- a/include/global.h
+++ b/include/global.h
@@ -62,6 +62,15 @@
#define T2_READ_32(ptr) ((ptr)[0] + ((ptr)[1] << 8) + ((ptr)[2] << 16) + ((ptr)[3] << 24))
#define T2_READ_PTR(ptr) (void*) T2_READ_32(ptr)
+// This macro is required to prevent the compiler from optimizing
+// a dpad up/down check in sub_812CAD8 (fame_checker.c).
+// We suspect it was used globally.
+// GameFreak never ceases to amaze.
+// TODO: Propagate use of this macro
+#define TEST_BUTTON(field, button) ({(field) & (button);})
+#define JOY_NEW(button) TEST_BUTTON(gMain.newKeys, button)
+#define JOY_HELD(button) TEST_BUTTON(gMain.heldKeys, button)
+
extern u8 gStringVar1[];
extern u8 gStringVar2[];
extern u8 gStringVar3[];
@@ -88,6 +97,7 @@ enum LanguageId {
#define GAME_LANGUAGE (LANGUAGE_ENGLISH)
+#define PC_ITEMS_COUNT 30
#define BAG_ITEMS_COUNT 42
#define BAG_KEYITEMS_COUNT 30
#define BAG_POKEBALLS_COUNT 13
@@ -479,8 +489,8 @@ struct DaycareMon
struct DayCare
{
struct DaycareMon mons[DAYCARE_MON_COUNT];
- u32 offspringPersonality;
- u8 stepCounter;
+ u16 unk_118;
+ u8 unk_11A;
};
struct DayCareMail
@@ -563,12 +573,24 @@ struct QuestLog
/*0x0668*/ u16 end[0];
};
+#include "fame_checker.h"
+
+struct FameCheckerSaveData
+{
+ /*3a54*/ u16 pickState:2;
+ u16 flavorTextFlags:12;
+ u16 unk_0_E:2;
+};
+
#define MAP_OBJECTS_COUNT 16
#define BERRY_TREES_COUNT 128
#define FLAGS_COUNT 288 // 300
#define VARS_COUNT 256
#define MAIL_COUNT 16
+#define NUM_EASY_CHAT_EXTRA_PHRASES 33
+#define EASY_CHAT_EXTRA_PHRASES_SIZE ((NUM_EASY_CHAT_EXTRA_PHRASES >> 3) + (NUM_EASY_CHAT_EXTRA_PHRASES % 8 ? 1 : 0))
+
struct SaveBlock1
{
/*0x0000*/ struct Coords16 pos;
@@ -587,36 +609,33 @@ struct SaveBlock1
/*0x0290*/ u32 money;
/*0x0294*/ u16 coins;
/*0x0296*/ u16 registeredItem; // registered for use with SELECT button
- /*0x0298*/ u8 filler298[0x78];
+ /*0x0298*/ struct ItemSlot pcItems[PC_ITEMS_COUNT];
/*0x0310*/ struct ItemSlot bagPocket_Items[BAG_ITEMS_COUNT];
/*0x03b8*/ struct ItemSlot bagPocket_KeyItems[BAG_KEYITEMS_COUNT];
/*0x0430*/ struct ItemSlot bagPocket_PokeBalls[BAG_POKEBALLS_COUNT];
/*0x0464*/ struct ItemSlot bagPocket_TMHM[BAG_TMHM_COUNT];
/*0x054c*/ struct ItemSlot bagPocket_Berries[BAG_BERRIES_COUNT];
/*0x05F8*/ u8 seen1[DEX_FLAGS_NO];
- /*0x062C*/ u8 filler_062c[12];
+ /*0x062C*/ u16 berryBlenderRecords[3]; // unused
+ /*0x0632*/ u8 field_632[6]; // unused?
/*0x0638*/ u8 trainerRematchStepCounter;
- u8 filler_639;
- /*0x063A*/ u8 trainerRematches[100];
- /*0x06A0*/ struct MapObject mapObjects[MAP_OBJECTS_COUNT];
- /*0x08E0*/ struct MapObjectTemplate mapObjectTemplates[64];
+ /*0x063A*/ u8 ALIGNED(2) trainerRematches[100];
+ /*0x06A0*/ struct MapObject mapObjects[MAP_OBJECTS_COUNT];
+ /*0x08E0*/ struct MapObjectTemplate mapObjectTemplates[64];
/*0x0EE0*/ u8 flags[FLAGS_COUNT];
/*0x1000*/ u16 vars[VARS_COUNT];
- /*0x1200*/ u8 filler1200[0x100];
+ /*0x1200*/ u32 gameStats[NUM_GAME_STATS];
/*0x1300*/ struct QuestLog questLog[4];
- /*0x2CA0*/ u8 filler2CA0[0x30];
+ /*0x2CA0*/ u16 unk2CA0[6];
+ /*0x2CAC*/ u16 unk2CAC[6];
+ /*0x2CB8*/ u16 unk2CB8[6];
+ /*0x2CC4*/ u16 unk2CC4[6];
/*0x2CD0*/ struct MailStruct mail[MAIL_COUNT];
- /*0x2F10*/ u8 filler2F10[0x184];
- struct {
- /*0x3094*/ u8 unknown1[8];
- /*0x309C*/ u8 giftRibbons[11];
- /*0x30A7*/ u8 unknown2[8];
- /*0x30AF*/ u32 currentPokeCoupons;
- /*0x30B3*/ u32 totalEarnedPokeCoupons;
- /*0x30B7*/ u8 unknown3[6];
- /*0x30BD*/ u8 receivedWishmakerJirachi;
- /*0x30BE*/ u8 unknown4[18];
- } __attribute__((packed)) externalReservedData;
+ /*0x2F10*/ u8 additionalPhrases[EASY_CHAT_EXTRA_PHRASES_SIZE];
+ /*0x2F18*/ OldMan oldMan; // unused
+ /*0x2F54*/ struct EasyChatPair easyChatPairs[5]; // unused
+ /*0x2F80*/ struct DayCare daycare;
+ /*0x309C*/ u8 giftRibbons[52];
/*0x30D0*/ struct Roamer roamer;
/*0x30EC*/ struct EnigmaBerry enigmaBerry;
/*0x3120*/ u8 filler3120[0x340];
@@ -627,7 +646,8 @@ struct SaveBlock1
/*0x3A14*/ u8 seen2[DEX_FLAGS_NO];
/*0x3A48*/ u8 filler_3a48[4];
/*0x3A4C*/ u8 rivalName[PLAYER_NAME_LENGTH];
- /*0x3A54*/ u8 filler3A54[0x2E4];
+ /*0x3A54*/ struct FameCheckerSaveData fameChecker[NUM_FAMECHECKER_PERSONS];
+ /*0x3A94*/ u8 filler3A94[0x2A4];
u32 unkArray[4][3];
};
diff --git a/include/graphics.h b/include/graphics.h
index 9888d2f7c..d249ece10 100644
--- a/include/graphics.h
+++ b/include/graphics.h
@@ -143,4 +143,11 @@ extern const u8 gUnknown_08DDB020[];
extern const u8 gUnknown_08DDB2C4[];
extern const u16 gUnknown_08DDAFE0[];
+// fame_checker
+
+extern const u16 gFameCheckerBgPals[0x30];
+extern const u16 gFameCheckerBgTiles[0xa50];
+extern const u16 gFameCheckerBg3Tilemap[0x400];
+extern const u16 gFameCheckerBg2Tilemap[0x400];
+
#endif //GUARD_GRAPHICS_H
diff --git a/include/item_menu.h b/include/item_menu.h
index 731c7cf2b..2482aa51f 100644
--- a/include/item_menu.h
+++ b/include/item_menu.h
@@ -12,5 +12,6 @@ extern u16 gUnknown_203AD30;
// Exported ROM declarations
void sub_81AAC50(void);
void sub_81AAC70(void);
+void UseFameCheckerFromMenu(void);
#endif //GUARD_ITEM_MENU_H
diff --git a/include/list_menu.h b/include/list_menu.h
index f547801bd..8834e5215 100644
--- a/include/list_menu.h
+++ b/include/list_menu.h
@@ -18,22 +18,23 @@ struct ListMenu;
struct ListMenuTemplate
{
const struct ListMenuItem *items;
- void (* unk_04)(u32, bool8, struct ListMenu *);
- void (* unk_08)(u8, s32, u8);
+ void (* moveCursorFunc)(s32 itemIndex, bool8 onInit, struct ListMenu *list);
+ void (* itemPrintFunc)(u8 windowId, s32 itemId, u8 y);
u16 totalItems;
u16 maxShowed;
- u8 unk_10;
- u8 unk_11;
- u8 unk_12;
- u8 cursor_Y;
- u32 upText_Y:4; // x1, x2, x4, x8 = xF
- u32 cursorColor:4; // x10, x20, x40, x80 = xF0
- u32 fillColor:4; // x100, x200, x400, x800 = xF00
- u32 cursorShadowColor:4; // x1000, x2000, x4000, x8000 = xF000
- u32 unk_16_0:1; // x10000
- u32 spaceBetweenItems:6; // x20000, x40000, x80000, x100000, x200000, x400000 = x7E0000
- u32 unk_16_7:1; // x800000
- u32 unk_17_0:6; // x1000000, x2000000, x4000000, x8000000, x10000000, x20000000 = x3F000000
+ u8 windowId;
+ u8 header_X;
+ u8 item_X;
+ u8 cursor_X;
+ u8 upText_Y:4; // x1, x2, x4, x8 = xF
+ u8 cursorPal:4; // x10, x20, x40, x80 = xF0
+ u8 fillValue:4; // x1, x2, x4, x8 = xF
+ u8 cursorShadowPal:4; // x10, x20, x40, x80 = xF0
+ u8 lettersSpacing:3;
+ u8 itemVerticalPadding:3;
+ u8 scrollMultiple:2; // x40, x80 = xC0
+ u8 fontId:6; // x1, x2, x4, x8, x10, x20 = x3F
+ u8 cursorKind:2; // x40, x80
};
struct ListMenu {
@@ -54,5 +55,7 @@ u8 ListMenuInit(struct ListMenuTemplate *template, u16 a1, u16 a2);
s32 ListMenuHandleInput(u8 id);
void get_coro_args_x18_x1A(u8 a0, u16 *a1, u16 *a2);
void sub_81AE6C8(u8 a0, u16 *a1, u16 *a2);
+void sub_810713C(u8, u8, u8);
+u16 ListMenuGetYCoordForPrintingArrowCursor(u8);
#endif //GUARD_LIST_MENU_H
diff --git a/include/menu_indicators.h b/include/menu_indicators.h
index 2350e2502..f195ceb6d 100644
--- a/include/menu_indicators.h
+++ b/include/menu_indicators.h
@@ -7,8 +7,25 @@
// Exported RAM declarations
+struct ScrollIndicatorArrowPairTemplate
+{
+ u8 unk_00;
+ u8 unk_01;
+ u8 unk_02;
+ u8 unk_03;
+ u8 unk_04;
+ u8 unk_05;
+ u16 unk_06;
+ u16 unk_08;
+ u16 unk_0a;
+ u16 unk_0c;
+ u16 unk_0e_0:4;
+ u16 unk_0e_4:12;
+};
+
// Exported ROM declarations
u8 AddScrollIndicatorArrowPairParametrized(u8, u8, u8, u8, s32, u16, u16, u16 *);
+u8 AddScrollIndicatorArrowPair(const struct ScrollIndicatorArrowPairTemplate * template, u16 * a1);
void RemoveScrollIndicatorArrowPair(u8);
#endif //GUARD_MENU_INDICATORS_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index 639395941..2a68a35e6 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -16,5 +16,8 @@ void SetStandardWindowBorderStyle(u8 a0, u8 a1);
void sub_8197930(void);
u8 GetPlayerTextSpeed(void);
void sub_80F6F54(u8, u8);
+u8 sub_80F78A8(void);
+void sub_80F6E9C(void);
+void sub_80F6EE4(u8 windowId, bool8 transfer);
#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/scanline_effect.h b/include/scanline_effect.h
new file mode 100644
index 000000000..d49f5b4d6
--- /dev/null
+++ b/include/scanline_effect.h
@@ -0,0 +1,6 @@
+#ifndef GUARD_SCANLINE_EFFECT_H
+#define GUARD_SCANLINE_EFFECT_H
+
+void remove_some_task(void);
+
+#endif //GUARD_SCANLINE_EFFECT_H
diff --git a/include/text.h b/include/text.h
index 2bda590c1..e127f103a 100644
--- a/include/text.h
+++ b/include/text.h
@@ -161,7 +161,7 @@ extern const struct FontInfo *gFonts;
struct GlyphWidthFunc
{
u32 font_id;
- u32 (*func)(u16 glyphId, bool32 isJapanese);
+ s32 (*func)(u16 glyphId, bool32 isJapanese);
};
struct KeypadIcon
@@ -224,9 +224,9 @@ bool16 TextPrinterWaitWithDownArrow(struct TextPrinter *textPrinter);
bool16 TextPrinterWait(struct TextPrinter *textPrinter);
void DrawDownArrow(u8 windowId, u16 x, u16 y, u8 bgColor, bool8 drawArrow, u8 *counter, u8 *yCoordIndex);
u16 RenderText(struct TextPrinter *textPrinter);
-u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing);
-u32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32);
-u32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing);
+s32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing);
+s32 (*GetFontWidthFunc(u8 glyphId))(u16, bool32);
+s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing);
u8 RenderTextFont9(u8 *pixels, u8 fontId, u8 *str);
u8 DrawKeypadIcon(u8 windowId, u8 keypadIconId, u16 x, u16 y);
u8 GetKeypadIconTileOffset(u8 keypadIconId);
@@ -236,19 +236,19 @@ void SetDefaultFontsPointer(void);
u8 GetFontAttribute(u8 fontId, u8 attributeId);
u8 GetMenuCursorDimensionByFont(u8 fontId, u8 whichDimension);
void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont0(u16 glyphId, bool32 isJapanese);
+s32 GetGlyphWidthFont0(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont7(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont7(u16 glyphId, bool32 isJapanese);
+s32 GetGlyphWidthFont7(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont8(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont8(u16 glyphId, bool32 isJapanese);
+s32 GetGlyphWidthFont8(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont2(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese);
+s32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese);
+s32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese);
void DecompressGlyphFont9(u16 glyphId);
-u32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese);
-u32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese);
+s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese);
+s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese);
+s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese);
void sub_80062B0(struct Sprite *sprite);
#endif // GUARD_TEXT_H
diff --git a/ld_script.txt b/ld_script.txt
index 67f21c48f..2a42825c9 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -226,7 +226,7 @@ SECTIONS {
asm/union_room_chat.o(.text);
asm/help_system_812B1E0.o(.text);
src/quest_log_battle.o(.text);
- asm/fame_checker.o(.text);
+ src/fame_checker.o(.text);
asm/menu2.o(.text);
asm/oak_speech.o(.text);
asm/tm_case.o(.text);
@@ -376,6 +376,8 @@ SECTIONS {
data/data_83FECCC.o(.rodata.8453F6C);
src/quest_log.o(.rodata);
data/data_83FECCC.o(.rodata.8456C74);
+ src/fame_checker.o(.rodata);
+ data/data_845FD54.o(.rodata);
src/menews_jisan.o(.rodata);
src/menews_jisan.o(.rodata.str1.4);
data/data_8468C98.o(.rodata);
diff --git a/src/bg.c b/src/bg.c
index df91e9d4a..5cbd7658e 100644
--- a/src/bg.c
+++ b/src/bg.c
@@ -391,7 +391,7 @@ void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numT
}
}
#else
-__attribute__((naked))
+NAKED
void InitBgsFromTemplates(u8 bgMode, const struct BgTemplate *templates, u8 numTemplates)
{
asm(".syntax unified\n\
@@ -634,7 +634,7 @@ bool8 IsDma3ManagerBusyWithBgCopy(void)
return FALSE;
}
#else
-__attribute__((naked))
+NAKED
bool8 IsDma3ManagerBusyWithBgCopy(void)
{
asm("push {r4-r7,lr}\n\
@@ -1065,7 +1065,7 @@ void CopyBgTilemapBufferToVram(u8 bg)
}
}
-void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u8 height)
+void CopyToBgTilemapBufferRect(u8 bg, const void* src, u8 destX, u8 destY, u8 width, u8 height)
{
u16 destX16;
u16 destY16;
@@ -1077,7 +1077,7 @@ void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u
{
case 0:
{
- u16 * srcCopy = src;
+ const u16 * srcCopy = src;
for (destY16 = destY; destY16 < (destY + height); destY16++)
{
for (destX16 = destX; destX16 < (destX + width); destX16++)
@@ -1089,7 +1089,7 @@ void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u
}
case 1:
{
- u8 * srcCopy = src;
+ const u8 * srcCopy = src;
mode = GetBgMetricAffineMode(bg, 0x1);
for (destY16 = destY; destY16 < (destY + height); destY16++)
{
@@ -1104,7 +1104,7 @@ void CopyToBgTilemapBufferRect(u8 bg, void* src, u8 destX, u8 destY, u8 width, u
}
}
-void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette)
+void CopyToBgTilemapBufferRect_ChangePalette(u8 bg, const void *src, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette)
{
CopyRectToBgTilemapBufferRect(bg, src, 0, 0, rectWidth, rectHeight, destX, destY, rectWidth, rectHeight, palette, 0, 0);
}
@@ -1151,8 +1151,8 @@ void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWid
}
}
}*/
-__attribute__((naked))
-void CopyRectToBgTilemapBufferRect(u8 bg, void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2)
+NAKED
+void CopyRectToBgTilemapBufferRect(u8 bg, const void* src, u8 srcX, u8 srcY, u8 srcWidth, u8 srcHeight, u8 destX, u8 destY, u8 rectWidth, u8 rectHeight, u8 palette1, u16 tileOffset, u16 palette2)
{
asm("push {r4-r7,lr}\n\
mov r7, r10\n\
@@ -1598,7 +1598,7 @@ void CopyTileMapEntry(u16 *src, u16 *dest, s32 palette1, u32 tileOffset, u32 pal
*dest = test;
}
#else
-__attribute__((naked))
+NAKED
void CopyTileMapEntry(u16 *src, u16 *dest, s32 palette1, u32 tileOffset, u32 palette2)
{
asm("push {r4-r6,lr}\n\
diff --git a/src/fame_checker.c b/src/fame_checker.c
new file mode 100644
index 000000000..ed38406cb
--- /dev/null
+++ b/src/fame_checker.c
@@ -0,0 +1,1553 @@
+#include "global.h"
+#include "constants/songs.h"
+#include "sprite.h"
+#include "bg.h"
+#include "event_data.h"
+#include "event_scripts.h"
+#include "graphics.h"
+#include "battle.h"
+#include "battle_setup.h"
+#include "menu.h"
+#include "battle_dome_cards.h"
+#include "scanline_effect.h"
+#include "new_menu_helpers.h"
+#include "item_menu.h"
+#include "list_menu.h"
+#include "gpu_regs.h"
+#include "palette.h"
+#include "task.h"
+#include "malloc.h"
+#include "main.h"
+#include "sound.h"
+#include "text.h"
+#include "window.h"
+#include "string_util.h"
+#include "field_map_obj.h"
+#include "menu_indicators.h"
+#include "text_window.h"
+#include "fame_checker.h"
+
+#define SPRITETAG_SELECTOR_CURSOR 1000
+#define SPRITETAG_QUESTION_MARK 1001
+#define SPRITETAG_SPINNING_POKEBALL 1002
+#define SPRITETAG_SCROLL_INDICATORS 1004
+#define SPRITETAG_DAISY 1006
+#define SPRITETAG_FUJI 1007
+#define SPRITETAG_OAK 1008
+#define SPRITETAG_BILL 1009
+
+#define FC_NONTRAINER_START 0xFE00
+
+struct FameCheckerData
+{
+ MainCallback savedCallback;
+ u16 listMenuTopIdx;
+ u8 scrollIndicatorPairTaskId;
+ u8 personHasUnlockedPanels:1;
+ u8 inPickMode:1;
+ u8 numUnlockedPersons:6;
+ u8 listMenuTaskId;
+ u8 listMenuCurIdx;
+ u8 listMenuTopIdx2;
+ u8 listMenuDrawnSelIdx;
+ u8 unlockedPersons[NUM_FAMECHECKER_PERSONS + 1];
+ u8 spriteIds[6];
+ u8 viewingFlavorText:1;
+ u8 unk_23_1:1; // unused
+ u8 pickModeOverCancel:1;
+};
+
+static EWRAM_DATA u16 * sBg3TilemapBuffer = NULL;
+static EWRAM_DATA u16 * sBg1TilemapBuffer = NULL;
+static EWRAM_DATA u16 * sBg2TilemapBuffer = NULL;
+static EWRAM_DATA struct FameCheckerData * sFameCheckerData = NULL;
+static EWRAM_DATA struct ListMenuItem * sListMenuItems = NULL;
+static EWRAM_DATA s32 sLastMenuIdx = 0;
+
+struct ListMenuTemplate gFameChecker_ListMenuTemplate;
+u8 gIconDescriptionBoxIsOpen;
+
+static void MainCB2_LoadFameChecker(void);
+static void LoadUISpriteSheetsAndPalettes(void);
+static void Task_WaitFadeOnInit(u8 taskId);
+static void Task_TopMenuHandleInput(u8 taskId);
+static bool8 TryExitPickMode(u8 taskId);
+static void MessageBoxPrintEmptyText(void);
+static void Task_EnterPickMode(u8 taskId);
+static void Task_ExitPickMode(u8 taskId);
+static void Task_FlavorTextDisplayHandleInput(u8 taskId);
+static void FC_MoveSelectorCursor(u8 taskId, s8 dx, s8 dy);
+static void GetPickModeText(void);
+static void PrintSelectedNameInBrightGreen(u8 taskId);
+static void WipeMsgBoxAndTransfer(void);
+static void Setup_DrawMsgAndListBoxes(void);
+static void FC_PutWindowTilemapAndCopyWindowToVramMode3(u8 windowId);
+static bool8 SetMessageSelectorIconObjMode(u8 taskId, u8 objMode);
+static void Task_StartToCloseFameChecker(u8 taskId);
+static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId);
+static void FC_DestroyWindow(u8 windowId);
+static void PrintUIHelp(u8 state);
+static bool8 CreateAllFlavorTextIcons(u8 who);
+static void FCSetup_ClearVideoRegisters(void);
+static void FCSetup_ResetTasksAndSpriteResources(void);
+static void FCSetup_TurnOnDisplay(void);
+static void FCSetup_ResetBGCoords(void);
+static bool8 HasUnlockedAllFlavorTextsForCurrentPerson(void);
+static void FreeSelectionCursorSpriteResources(void);
+static u8 CreateFlavorTextIconSelectorCursorSprite(s16 where);
+static void SpriteCB_DestroyFlavorTextIconSelectorCursor(struct Sprite *sprite);
+static void FreeQuestionMarkSpriteResources(void);
+static u8 PlaceQuestionMarkTile(u8 x, u8 y);
+static void FreeSpinningPokeballSpriteResources(void);
+static u8 CreateSpinningPokeballSprite(void);
+static void SpriteCB_DestroySpinningPokeball(struct Sprite *sprite);
+static void FreeNonTrainerPicTiles(void);
+static u8 CreatePersonPicSprite(u8 fcPersonIdx);
+static void DestroyPersonPicSprite(u8 taskId, u16 who);
+static void UpdateIconDescriptionBox(u8 whichText);
+static void UpdateIconDescriptionBoxOff(void);
+static void FC_CreateListMenu(void);
+static void SpriteCB_FCSpinningPokeball(struct Sprite * sprite);
+static void InitListMenuTemplate(void);
+static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu * list);
+static void Task_SwitchToPickMode(u8 taskId);
+static void PrintCancelDescription(void);
+static void FC_DoMoveCursor(s32 itemIndex, bool8 onInit);
+static u8 FC_PopulateListMenu(void);
+static void FC_PutWindowTilemapAndCopyWindowToVramMode3_2(u8 windowId);
+static void FC_CreateScrollIndicatorArrowPair(void);
+static void FreeListMenuSelectorArrowPairResources(void);
+static u16 FameCheckerGetCursorY(void);
+static void HandleFlavorTextModeSwitch(bool8 state);
+static void Task_FCOpenOrCloseInfoBox(u8 taskId);
+static void UpdateInfoBoxTilemap(u8 bg, s16 state);
+static void PlaceListMenuCursor(bool8 isActive);
+
+extern const u8 gFameCheckerText_Cancel[];
+extern const u8 gFameCheckerText_ListMenuCursor[];
+extern const u8 gFameCheckerText_FameCheckerWillBeClosed[];
+extern const u8 gFameCheckerText_ClearTextbox[];
+extern const u8 gFameCheckerText_MainScreenUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$"
+extern const u8 gFameCheckerText_PickScreenUI[]; // "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_B_BUTTON}CANCEL$"
+extern const u8 gFameCheckerText_FlavorTextUI[]; // "{KEYGFX_DPAD_ANY}PICK {KEYGFX_A_BUTTON}READ {KEYGFX_B_BUTTON}CANCEL$"
+extern const u8 gFameCheckerOakName[]; // "OAK$"
+extern const u8 gFameCheckerDaisyName[]; // "DAISY$"
+extern const u8 gFameCheckerBillName[]; // "BILL$"
+extern const u8 gFameCheckerMrFujiName[]; // "FUJI$"
+
+static const u16 sFameCheckerTilemap[] = INCBIN_U16("data/fame_checker/tilemap_845c600.bin");
+static const u8 sQuestionMarkSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845ce00.4bpp");
+static const u8 sSpinningPokeballSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845cf00.4bpp");
+static const u16 sSpinningPokeballSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845d0e0.gbapal");
+static const u8 sSelectorCursorSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845d100.4bpp");
+static const u16 sSelectorCursorSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845d500.gbapal");
+static const u8 sFujiSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845d520.4bpp");
+static const u16 sFujiSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845dd20.gbapal");
+static const u8 sBillSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845dd40.4bpp");
+static const u16 sBillSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845e540.gbapal");
+static const u8 sDaisySpriteGfx[] = INCBIN_U8("data/fame_checker/img_845e560.4bpp");
+static const u16 sDaisySpritePalette[] = INCBIN_U16("data/fame_checker/pal_845ed60.gbapal");
+static const u8 sOakSpriteGfx[] = INCBIN_U8("data/fame_checker/img_845ed80.4bpp");
+static const u16 sOakSpritePalette[] = INCBIN_U16("data/fame_checker/pal_845f580.gbapal");
+static const u16 gUnknown_845F5A0[] = INCBIN_U16("data/fame_checker/pal_845f5a0.gbapal"); // unused?
+static const u16 sSilhouettePalette[] = INCBIN_U16("data/fame_checker/pal_845f5c0.gbapal");
+
+static const struct TextColor sTextColor_White = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_WHITE, TEXT_COLOR_DARK_GREY};
+static const struct TextColor sTextColor_DkGrey = {TEXT_COLOR_TRANSPARENT, TEXT_COLOR_DARK_GREY, 0x03};
+static const struct TextColor sTextColor_Green = {TEXT_COLOR_TRANSPARENT, 0x06, 0x07};
+
+static const u16 sTrainerIdxs[] = {
+ FC_NONTRAINER_START + 0, // OAK
+ FC_NONTRAINER_START + 1, // DAISY
+ 0x019e, // BROCK
+ 0x019f, // MISTY
+ 0x01a0, // LTSURGE
+ 0x01a1, // ERIKA
+ 0x01a2, // KOGA
+ 0x01a4, // SABRINA
+ 0x01a3, // BLAINE
+ 0x019a, // LORELEI
+ 0x019b, // BRUNO
+ 0x019c, // AGATHA
+ 0x019d, // LANCE
+ FC_NONTRAINER_START + 2, // BILL
+ FC_NONTRAINER_START + 3, // MRFUJI
+ 0x015c // GIOVANNI
+};
+
+static const u8 *const sNonTrainerNamePointers[] = {
+ gFameCheckerOakName,
+ gFameCheckerDaisyName,
+ gFameCheckerBillName,
+ gFameCheckerMrFujiName
+};
+
+static const u8 sFameCheckerTrainerPicIdxs[] = {
+ 0x56, 0x54, 0x74, 0x75, 0x76, 0x77, 0x78, 0x7a, 0x79, 0x70, 0x71, 0x72, 0x73, 0x64, 0x7b, 0x6c,
+ 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00 // these values are unused
+};
+
+static const u8 *const sFameCheckerNameAndQuotesPointers[] = {
+ gFameCheckerPersonName_ProfOak, gFameCheckerPersonName_Daisy, gFameCheckerPersonName_Brock, gFameCheckerPersonName_Misty, gFameCheckerPersonName_LtSurge, gFameCheckerPersonName_Erika, gFameCheckerPersonName_Koga, gFameCheckerPersonName_Sabrina, gFameCheckerPersonName_Blaine, gFameCheckerPersonName_Lorelei, gFameCheckerPersonName_Bruno, gFameCheckerPersonName_Agatha, gFameCheckerPersonName_Lance, gFameCheckerPersonName_Bill, gFameCheckerPersonName_MrFuji, gFameCheckerPersonName_Giovanni,
+ gFameCheckerPersonQuote_ProfOak, gFameCheckerPersonQuote_Daisy, gFameCheckerPersonQuote_Brock, gFameCheckerPersonQuote_Misty, gFameCheckerPersonQuote_LtSurge, gFameCheckerPersonQuote_Erika, gFameCheckerPersonQuote_Koga, gFameCheckerPersonQuote_Sabrina, gFameCheckerPersonQuote_Blaine, gFameCheckerPersonQuote_Lorelei, gFameCheckerPersonQuote_Bruno, gFameCheckerPersonQuote_Agatha, gFameCheckerPersonQuote_Lance, gFameCheckerPersonQuote_Bill, gFameCheckerPersonQuote_MrFuji, gFameCheckerPersonQuote_Giovanni
+};
+
+static const u8 *const sFameCheckerFlavorTextPointers[] = {
+ gFameCheckerFlavorText_ProfOak0, gFameCheckerFlavorText_ProfOak1, gFameCheckerFlavorText_ProfOak2, gFameCheckerFlavorText_ProfOak3, gFameCheckerFlavorText_ProfOak4, gFameCheckerFlavorText_ProfOak5,
+ gFameCheckerFlavorText_Daisy0, gFameCheckerFlavorText_Daisy1, gFameCheckerFlavorText_Daisy2, gFameCheckerFlavorText_Daisy3, gFameCheckerFlavorText_Daisy4, gFameCheckerFlavorText_Daisy5,
+ gFameCheckerFlavorText_Brock0, gFameCheckerFlavorText_Brock1, gFameCheckerFlavorText_Brock2, gFameCheckerFlavorText_Brock3, gFameCheckerFlavorText_Brock4, gFameCheckerFlavorText_Brock5,
+ gFameCheckerFlavorText_Misty0, gFameCheckerFlavorText_Misty1, gFameCheckerFlavorText_Misty2, gFameCheckerFlavorText_Misty3, gFameCheckerFlavorText_Misty4, gFameCheckerFlavorText_Misty5,
+ gFameCheckerFlavorText_LtSurge0, gFameCheckerFlavorText_LtSurge1, gFameCheckerFlavorText_LtSurge2, gFameCheckerFlavorText_LtSurge3, gFameCheckerFlavorText_LtSurge4, gFameCheckerFlavorText_LtSurge5,
+ gFameCheckerFlavorText_Erika0, gFameCheckerFlavorText_Erika1, gFameCheckerFlavorText_Erika2, gFameCheckerFlavorText_Erika3, gFameCheckerFlavorText_Erika4, gFameCheckerFlavorText_Erika5,
+ gFameCheckerFlavorText_Koga0, gFameCheckerFlavorText_Koga1, gFameCheckerFlavorText_Koga2, gFameCheckerFlavorText_Koga3, gFameCheckerFlavorText_Koga4, gFameCheckerFlavorText_Koga5,
+ gFameCheckerFlavorText_Sabrina0, gFameCheckerFlavorText_Sabrina1, gFameCheckerFlavorText_Sabrina2, gFameCheckerFlavorText_Sabrina3, gFameCheckerFlavorText_Sabrina4, gFameCheckerFlavorText_Sabrina5,
+ gFameCheckerFlavorText_Blaine0, gFameCheckerFlavorText_Blaine1, gFameCheckerFlavorText_Blaine2, gFameCheckerFlavorText_Blaine3, gFameCheckerFlavorText_Blaine4, gFameCheckerFlavorText_Blaine5,
+ gFameCheckerFlavorText_Lorelei0, gFameCheckerFlavorText_Lorelei1, gFameCheckerFlavorText_Lorelei2, gFameCheckerFlavorText_Lorelei3, gFameCheckerFlavorText_Lorelei4, gFameCheckerFlavorText_Lorelei5,
+ gFameCheckerFlavorText_Bruno0, gFameCheckerFlavorText_Bruno1, gFameCheckerFlavorText_Bruno2, gFameCheckerFlavorText_Bruno3, gFameCheckerFlavorText_Bruno4, gFameCheckerFlavorText_Bruno5,
+ gFameCheckerFlavorText_Agatha0, gFameCheckerFlavorText_Agatha1, gFameCheckerFlavorText_Agatha2, gFameCheckerFlavorText_Agatha3, gFameCheckerFlavorText_Agatha4, gFameCheckerFlavorText_Agatha5,
+ gFameCheckerFlavorText_Lance0, gFameCheckerFlavorText_Lance1, gFameCheckerFlavorText_Lance2, gFameCheckerFlavorText_Lance3, gFameCheckerFlavorText_Lance4, gFameCheckerFlavorText_Lance5,
+ gFameCheckerFlavorText_Bill0, gFameCheckerFlavorText_Bill1, gFameCheckerFlavorText_Bill2, gFameCheckerFlavorText_Bill3, gFameCheckerFlavorText_Bill4, gFameCheckerFlavorText_Bill5,
+ gFameCheckerFlavorText_MrFuji0, gFameCheckerFlavorText_MrFuji1, gFameCheckerFlavorText_MrFuji2, gFameCheckerFlavorText_MrFuji3, gFameCheckerFlavorText_MrFuji4, gFameCheckerFlavorText_MrFuji5,
+ gFameCheckerFlavorText_Giovanni0, gFameCheckerFlavorText_Giovanni1, gFameCheckerFlavorText_Giovanni2, gFameCheckerFlavorText_Giovanni3, gFameCheckerFlavorText_Giovanni4, gFameCheckerFlavorText_Giovanni5
+};
+
+static const u8 sFameCheckerArrayNpcGraphicsIds[] = {
+ 0x67, 0x47, 0x30, 0x69, 0x4b, 0x37,
+ 0x37, 0x30, 0x3d, 0x69, 0x23, 0x69,
+ 0x66, 0x50, 0x1b, 0x13, 0x1e, 0x69,
+ 0x66, 0x51, 0x2b, 0x27, 0x1d, 0x69,
+ 0x66, 0x52, 0x3d, 0x3d, 0x3e, 0x69,
+ 0x66, 0x53, 0x16, 0x1d, 0x53, 0x69,
+ 0x66, 0x54, 0x1a, 0x16, 0x69, 0x1e,
+ 0x66, 0x19, 0x55, 0x55, 0x69, 0x29,
+ 0x66, 0x56, 0x37, 0x1c, 0x69, 0x69,
+ 0x4d, 0x4d, 0x20, 0x69, 0x11, 0x23,
+ 0x4f, 0x4f, 0x69, 0x36, 0x1d, 0x36,
+ 0x4b, 0x36, 0x36, 0x69, 0x4b, 0x23,
+ 0x4a, 0x4a, 0x18, 0x17, 0x69, 0x29,
+ 0x48, 0x12, 0x20, 0x59, 0x59, 0x59,
+ 0x11, 0x31, 0x69, 0x1e, 0x69, 0x69,
+ 0x57, 0x37, 0x37, 0x57, 0x5b, 0x37
+};
+
+static const u8 *const sFlavorTextOriginLocationTexts[] = {
+ gFameCheckerFlavorTextOriginLocation_ProfOak0, gFameCheckerFlavorTextOriginLocation_ProfOak1, gFameCheckerFlavorTextOriginLocation_ProfOak2, gFameCheckerFlavorTextOriginLocation_ProfOak3, gFameCheckerFlavorTextOriginLocation_ProfOak4, gFameCheckerFlavorTextOriginLocation_ProfOak5,
+ gFameCheckerFlavorTextOriginLocation_Daisy0, gFameCheckerFlavorTextOriginLocation_Daisy1, gFameCheckerFlavorTextOriginLocation_Daisy2, gFameCheckerFlavorTextOriginLocation_Daisy3, gFameCheckerFlavorTextOriginLocation_Daisy4, gFameCheckerFlavorTextOriginLocation_Daisy5,
+ gFameCheckerFlavorTextOriginLocation_Brock0, gFameCheckerFlavorTextOriginLocation_Brock1, gFameCheckerFlavorTextOriginLocation_Brock2, gFameCheckerFlavorTextOriginLocation_Brock3, gFameCheckerFlavorTextOriginLocation_Brock4, gFameCheckerFlavorTextOriginLocation_Brock5,
+ gFameCheckerFlavorTextOriginLocation_Misty0, gFameCheckerFlavorTextOriginLocation_Misty1, gFameCheckerFlavorTextOriginLocation_Misty2, gFameCheckerFlavorTextOriginLocation_Misty3, gFameCheckerFlavorTextOriginLocation_Misty4, gFameCheckerFlavorTextOriginLocation_Misty5,
+ gFameCheckerFlavorTextOriginLocation_LtSurge0, gFameCheckerFlavorTextOriginLocation_LtSurge1, gFameCheckerFlavorTextOriginLocation_LtSurge2, gFameCheckerFlavorTextOriginLocation_LtSurge3, gFameCheckerFlavorTextOriginLocation_LtSurge4, gFameCheckerFlavorTextOriginLocation_LtSurge5,
+ gFameCheckerFlavorTextOriginLocation_Erika0, gFameCheckerFlavorTextOriginLocation_Erika1, gFameCheckerFlavorTextOriginLocation_Erika2, gFameCheckerFlavorTextOriginLocation_Erika3, gFameCheckerFlavorTextOriginLocation_Erika4, gFameCheckerFlavorTextOriginLocation_Erika5,
+ gFameCheckerFlavorTextOriginLocation_Koga0, gFameCheckerFlavorTextOriginLocation_Koga1, gFameCheckerFlavorTextOriginLocation_Koga2, gFameCheckerFlavorTextOriginLocation_Koga3, gFameCheckerFlavorTextOriginLocation_Koga4, gFameCheckerFlavorTextOriginLocation_Koga5,
+ gFameCheckerFlavorTextOriginLocation_Sabrina0, gFameCheckerFlavorTextOriginLocation_Sabrina1, gFameCheckerFlavorTextOriginLocation_Sabrina2, gFameCheckerFlavorTextOriginLocation_Sabrina3, gFameCheckerFlavorTextOriginLocation_Sabrina4, gFameCheckerFlavorTextOriginLocation_Sabrina5,
+ gFameCheckerFlavorTextOriginLocation_Blaine0, gFameCheckerFlavorTextOriginLocation_Blaine1, gFameCheckerFlavorTextOriginLocation_Blaine2, gFameCheckerFlavorTextOriginLocation_Blaine3, gFameCheckerFlavorTextOriginLocation_Blaine4, gFameCheckerFlavorTextOriginLocation_Blaine5,
+ gFameCheckerFlavorTextOriginLocation_Lorelei0, gFameCheckerFlavorTextOriginLocation_Lorelei1, gFameCheckerFlavorTextOriginLocation_Lorelei2, gFameCheckerFlavorTextOriginLocation_Lorelei3, gFameCheckerFlavorTextOriginLocation_Lorelei4, gFameCheckerFlavorTextOriginLocation_Lorelei5,
+ gFameCheckerFlavorTextOriginLocation_Bruno0, gFameCheckerFlavorTextOriginLocation_Bruno1, gFameCheckerFlavorTextOriginLocation_Bruno2, gFameCheckerFlavorTextOriginLocation_Bruno3, gFameCheckerFlavorTextOriginLocation_Bruno4, gFameCheckerFlavorTextOriginLocation_Bruno5,
+ gFameCheckerFlavorTextOriginLocation_Agatha0, gFameCheckerFlavorTextOriginLocation_Agatha1, gFameCheckerFlavorTextOriginLocation_Agatha2, gFameCheckerFlavorTextOriginLocation_Agatha3, gFameCheckerFlavorTextOriginLocation_Agatha4, gFameCheckerFlavorTextOriginLocation_Agatha5,
+ gFameCheckerFlavorTextOriginLocation_Lance0, gFameCheckerFlavorTextOriginLocation_Lance1, gFameCheckerFlavorTextOriginLocation_Lance2, gFameCheckerFlavorTextOriginLocation_Lance3, gFameCheckerFlavorTextOriginLocation_Lance4, gFameCheckerFlavorTextOriginLocation_Lance5,
+ gFameCheckerFlavorTextOriginLocation_Bill0, gFameCheckerFlavorTextOriginLocation_Bill1, gFameCheckerFlavorTextOriginLocation_Bill2, gFameCheckerFlavorTextOriginLocation_Bill3, gFameCheckerFlavorTextOriginLocation_Bill4, gFameCheckerFlavorTextOriginLocation_Bill5,
+ gFameCheckerFlavorTextOriginLocation_MrFuji0, gFameCheckerFlavorTextOriginLocation_MrFuji1, gFameCheckerFlavorTextOriginLocation_MrFuji2, gFameCheckerFlavorTextOriginLocation_MrFuji3, gFameCheckerFlavorTextOriginLocation_MrFuji4, gFameCheckerFlavorTextOriginLocation_MrFuji5,
+ gFameCheckerFlavorTextOriginLocation_Giovanni0, gFameCheckerFlavorTextOriginLocation_Giovanni1, gFameCheckerFlavorTextOriginLocation_Giovanni2, gFameCheckerFlavorTextOriginLocation_Giovanni3, gFameCheckerFlavorTextOriginLocation_Giovanni4, gFameCheckerFlavorTextOriginLocation_Giovanni5
+};
+
+static const u8 *const sFlavorTextOriginObjectNameTexts[] = {
+ gFameCheckerFlavorTextOriginObjectName_ProfOak0, gFameCheckerFlavorTextOriginObjectName_ProfOak1, gFameCheckerFlavorTextOriginObjectName_ProfOak2, gFameCheckerFlavorTextOriginObjectName_ProfOak3, gFameCheckerFlavorTextOriginObjectName_ProfOak4, gFameCheckerFlavorTextOriginObjectName_ProfOak5,
+ gFameCheckerFlavorTextOriginObjectName_Daisy0, gFameCheckerFlavorTextOriginObjectName_Daisy1, gFameCheckerFlavorTextOriginObjectName_Daisy2, gFameCheckerFlavorTextOriginObjectName_Daisy3, gFameCheckerFlavorTextOriginObjectName_Daisy4, gFameCheckerFlavorTextOriginObjectName_Daisy5,
+ gFameCheckerFlavorTextOriginObjectName_Brock0, gFameCheckerFlavorTextOriginObjectName_Brock1, gFameCheckerFlavorTextOriginObjectName_Brock2, gFameCheckerFlavorTextOriginObjectName_Brock3, gFameCheckerFlavorTextOriginObjectName_Brock4, gFameCheckerFlavorTextOriginObjectName_Brock5,
+ gFameCheckerFlavorTextOriginObjectName_Misty0, gFameCheckerFlavorTextOriginObjectName_Misty1, gFameCheckerFlavorTextOriginObjectName_Misty2, gFameCheckerFlavorTextOriginObjectName_Misty3, gFameCheckerFlavorTextOriginObjectName_Misty4, gFameCheckerFlavorTextOriginObjectName_Misty5,
+ gFameCheckerFlavorTextOriginObjectName_LtSurge0, gFameCheckerFlavorTextOriginObjectName_LtSurge1, gFameCheckerFlavorTextOriginObjectName_LtSurge2, gFameCheckerFlavorTextOriginObjectName_LtSurge3, gFameCheckerFlavorTextOriginObjectName_LtSurge4, gFameCheckerFlavorTextOriginObjectName_LtSurge5,
+ gFameCheckerFlavorTextOriginObjectName_Erika0, gFameCheckerFlavorTextOriginObjectName_Erika1, gFameCheckerFlavorTextOriginObjectName_Erika2, gFameCheckerFlavorTextOriginObjectName_Erika3, gFameCheckerFlavorTextOriginObjectName_Erika4, gFameCheckerFlavorTextOriginObjectName_Erika5,
+ gFameCheckerFlavorTextOriginObjectName_Koga0, gFameCheckerFlavorTextOriginObjectName_Koga1, gFameCheckerFlavorTextOriginObjectName_Koga2, gFameCheckerFlavorTextOriginObjectName_Koga3, gFameCheckerFlavorTextOriginObjectName_Koga4, gFameCheckerFlavorTextOriginObjectName_Koga5,
+ gFameCheckerFlavorTextOriginObjectName_Sabrina0, gFameCheckerFlavorTextOriginObjectName_Sabrina1, gFameCheckerFlavorTextOriginObjectName_Sabrina2, gFameCheckerFlavorTextOriginObjectName_Sabrina3, gFameCheckerFlavorTextOriginObjectName_Sabrina4, gFameCheckerFlavorTextOriginObjectName_Sabrina5,
+ gFameCheckerFlavorTextOriginObjectName_Blaine0, gFameCheckerFlavorTextOriginObjectName_Blaine1, gFameCheckerFlavorTextOriginObjectName_Blaine2, gFameCheckerFlavorTextOriginObjectName_Blaine3, gFameCheckerFlavorTextOriginObjectName_Blaine4, gFameCheckerFlavorTextOriginObjectName_Blaine5,
+ gFameCheckerFlavorTextOriginObjectName_Lorelei0, gFameCheckerFlavorTextOriginObjectName_Lorelei1, gFameCheckerFlavorTextOriginObjectName_Lorelei2, gFameCheckerFlavorTextOriginObjectName_Lorelei3, gFameCheckerFlavorTextOriginObjectName_Lorelei4, gFameCheckerFlavorTextOriginObjectName_Lorelei5,
+ gFameCheckerFlavorTextOriginObjectName_Bruno0, gFameCheckerFlavorTextOriginObjectName_Bruno1, gFameCheckerFlavorTextOriginObjectName_Bruno2, gFameCheckerFlavorTextOriginObjectName_Bruno3, gFameCheckerFlavorTextOriginObjectName_Bruno4, gFameCheckerFlavorTextOriginObjectName_Bruno5,
+ gFameCheckerFlavorTextOriginObjectName_Agatha0, gFameCheckerFlavorTextOriginObjectName_Agatha1, gFameCheckerFlavorTextOriginObjectName_Agatha2, gFameCheckerFlavorTextOriginObjectName_Agatha3, gFameCheckerFlavorTextOriginObjectName_Agatha4, gFameCheckerFlavorTextOriginObjectName_Agatha5,
+ gFameCheckerFlavorTextOriginObjectName_Lance0, gFameCheckerFlavorTextOriginObjectName_Lance1, gFameCheckerFlavorTextOriginObjectName_Lance2, gFameCheckerFlavorTextOriginObjectName_Lance3, gFameCheckerFlavorTextOriginObjectName_Lance4, gFameCheckerFlavorTextOriginObjectName_Lance5,
+ gFameCheckerFlavorTextOriginObjectName_Bill0, gFameCheckerFlavorTextOriginObjectName_Bill1, gFameCheckerFlavorTextOriginObjectName_Bill2, gFameCheckerFlavorTextOriginObjectName_Bill3, gFameCheckerFlavorTextOriginObjectName_Bill4, gFameCheckerFlavorTextOriginObjectName_Bill5,
+ gFameCheckerFlavorTextOriginObjectName_MrFuji0, gFameCheckerFlavorTextOriginObjectName_MrFuji1, gFameCheckerFlavorTextOriginObjectName_MrFuji2, gFameCheckerFlavorTextOriginObjectName_MrFuji3, gFameCheckerFlavorTextOriginObjectName_MrFuji4, gFameCheckerFlavorTextOriginObjectName_MrFuji5,
+ gFameCheckerFlavorTextOriginObjectName_Giovanni0, gFameCheckerFlavorTextOriginObjectName_Giovanni1, gFameCheckerFlavorTextOriginObjectName_Giovanni2, gFameCheckerFlavorTextOriginObjectName_Giovanni3, gFameCheckerFlavorTextOriginObjectName_Giovanni4, gFameCheckerFlavorTextOriginObjectName_Giovanni5
+};
+
+static const struct SpriteSheet sUISpriteSheets[] = {
+ {sSelectorCursorSpriteGfx, 0x400, SPRITETAG_SELECTOR_CURSOR},
+ {sQuestionMarkSpriteGfx, 0x100, SPRITETAG_QUESTION_MARK},
+ {sSpinningPokeballSpriteGfx, 0x1e0, SPRITETAG_SPINNING_POKEBALL},
+ {sDaisySpriteGfx, 0x800, SPRITETAG_DAISY},
+ {sFujiSpriteGfx, 0x800, SPRITETAG_FUJI},
+ {sOakSpriteGfx, 0x800, SPRITETAG_OAK},
+ {sBillSpriteGfx, 0x800, SPRITETAG_BILL},
+ {}
+};
+
+static const struct SpritePalette sUISpritePalettes[] = {
+ {sSelectorCursorSpritePalette, SPRITETAG_SELECTOR_CURSOR},
+ {sSpinningPokeballSpritePalette, SPRITETAG_SPINNING_POKEBALL},
+ {}
+};
+
+static const struct BgTemplate sUIBgTemplates[4] = {
+ {
+ .bg = 3,
+ .charBaseIndex = 0x03,
+ .mapBaseIndex = 0x1e,
+ .screenSize = 0,
+ .paletteMode = FALSE,
+ .priority = 3,
+ .baseTile = 0x000},
+ {
+ .bg = 2,
+ .charBaseIndex = 0x03,
+ .mapBaseIndex = 0x1b,
+ .screenSize = 0,
+ .paletteMode = FALSE,
+ .priority = 2,
+ .baseTile = 0x000},
+ {
+ .bg = 1,
+ .charBaseIndex = 0x03,
+ .mapBaseIndex = 0x1c,
+ .screenSize = 1,
+ .paletteMode = FALSE,
+ .priority = 0,
+ .baseTile = 0x000},
+ {
+ .bg = 0,
+ .charBaseIndex = 0x00,
+ .mapBaseIndex = 0x1f,
+ .screenSize = 0,
+ .paletteMode = FALSE,
+ .priority = 2,
+ .baseTile = 0x000},
+};
+
+static const struct WindowTemplate sUIWindowTemplates[] = {
+ {0, 1, 3, 8, 10, 15, 0x014}, // List Menu
+ {0, 6, 0, 24, 2, 15, 0x064}, // UI across the top
+ {0, 2, 15, 26, 4, 15, 0x094}, // Textbox on the bottom
+ {0, 15, 10, 11, 4, 15, 0x0FC}, // Icon description
+ DUMMY_WIN_TEMPLATE
+};
+
+static const union AnimCmd sSelectorCursorAnim0[] = {
+ ANIMCMD_FRAME( 0, 15),
+ ANIMCMD_FRAME(16, 15),
+ ANIMCMD_JUMP(0)
+};
+
+static const union AnimCmd *const sSelectorCursorAnims[] = {
+ sSelectorCursorAnim0
+};
+
+static const struct OamData sSelectorCursorOamData = {
+ .size = 2,
+ .priority = 2
+};
+
+static const struct SpriteTemplate sSpriteTemplate_SelectorCursor = {
+ SPRITETAG_SELECTOR_CURSOR, SPRITETAG_SELECTOR_CURSOR, &sSelectorCursorOamData, sSelectorCursorAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const u8 filler_845FC5C[8] = {}; // ???
+
+static const struct OamData sQuestionMarkTileOamData = {
+ .shape = ST_OAM_V_RECTANGLE,
+ .size = 2,
+ .priority = 2
+};
+
+static const union AnimCmd sQuestionMarkTileAnim0[] = {
+ ANIMCMD_FRAME( 0, 10),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sQuestionMarkTileAnims[] = {
+ sQuestionMarkTileAnim0
+};
+
+static const struct SpriteTemplate sQuestionMarkTileSpriteTemplate = {
+ SPRITETAG_QUESTION_MARK, 0xffff, &sQuestionMarkTileOamData, sQuestionMarkTileAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const union AnimCmd sSpinningPokeballAnim0[] = {
+ ANIMCMD_FRAME( 0, 10),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sSpinningPokeballAnims[] = {
+ sSpinningPokeballAnim0
+};
+
+static const struct OamData sSpinningPokeballOamData = {
+ .affineMode = ST_OAM_AFFINE_NORMAL,
+ .size = 2
+};
+
+static const union AffineAnimCmd sSpinningPokeballAffineAnim0[] = {
+ AFFINEANIMCMD_FRAME(0, 0, 4, 20),
+ AFFINEANIMCMD_JUMP(0)
+};
+
+static const union AffineAnimCmd *const sSpinningPokeballAffineAnims[] = {
+ sSpinningPokeballAffineAnim0
+};
+
+static const struct SpriteTemplate sSpinningPokeballSpriteTemplate = {
+ SPRITETAG_SPINNING_POKEBALL, SPRITETAG_SPINNING_POKEBALL, &sSpinningPokeballOamData, sSpinningPokeballAnims, NULL, sSpinningPokeballAffineAnims, SpriteCB_FCSpinningPokeball
+};
+
+static const union AnimCmd sDaisyFujiOakBillAnim0[] = {
+ ANIMCMD_FRAME( 0, 15),
+ ANIMCMD_END
+};
+
+static const union AnimCmd *const sDaisyFujiOakBillAnims[] = {
+ sDaisyFujiOakBillAnim0
+};
+
+static const struct OamData sDaisyFujiOakBillOamData = {
+ .size = 3
+};
+
+static const struct SpriteTemplate sDaisySpriteTemplate = {
+ SPRITETAG_DAISY, 0xffff, &sDaisyFujiOakBillOamData, sDaisyFujiOakBillAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate sFujiSpriteTemplate = {
+ SPRITETAG_FUJI, 0xffff, &sDaisyFujiOakBillOamData, sDaisyFujiOakBillAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate sOakSpriteTemplate = {
+ SPRITETAG_OAK, 0xffff, &sDaisyFujiOakBillOamData, sDaisyFujiOakBillAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static const struct SpriteTemplate sBillSpriteTemplate = {
+ SPRITETAG_BILL, 0xffff, &sDaisyFujiOakBillOamData, sDaisyFujiOakBillAnims, NULL, gDummySpriteAffineAnimTable, SpriteCallbackDummy
+};
+
+static void FC_VBlankCallback(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+static void MainCB2_FameCheckerMain(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+void UseFameChecker(MainCallback savedCallback)
+{
+ SetVBlankCallback(NULL);
+ sFameCheckerData = AllocZeroed(sizeof(struct FameCheckerData));
+ sFameCheckerData->savedCallback = savedCallback;
+ sFameCheckerData->listMenuCurIdx = 0;
+ sFameCheckerData->listMenuTopIdx2 = 0;
+ sFameCheckerData->listMenuDrawnSelIdx = 0;
+ sFameCheckerData->viewingFlavorText = FALSE;
+ PlaySE(SE_W202);
+ SetMainCallback2(MainCB2_LoadFameChecker);
+}
+
+static void MainCB2_LoadFameChecker(void)
+{
+ switch (gMain.state)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ FCSetup_ClearVideoRegisters();
+ gMain.state++;
+ break;
+ case 1:
+ FCSetup_ResetTasksAndSpriteResources();
+ gMain.state++;
+ break;
+ case 2:
+ sBg3TilemapBuffer = AllocZeroed(0x800);
+ sBg1TilemapBuffer = AllocZeroed(0x1000);
+ sBg2TilemapBuffer = AllocZeroed(0x800);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, sUIBgTemplates, ARRAY_COUNT(sUIBgTemplates));
+ SetBgTilemapBuffer(3, sBg3TilemapBuffer);
+ SetBgTilemapBuffer(2, sBg2TilemapBuffer);
+ SetBgTilemapBuffer(1, sBg1TilemapBuffer);
+ FCSetup_ResetBGCoords();
+ gMain.state++;
+ break;
+ case 3:
+ LoadBgTiles(3, gFameCheckerBgTiles, sizeof(gFameCheckerBgTiles), 0);
+ CopyToBgTilemapBufferRect(3, gFameCheckerBg3Tilemap, 0, 0, 32, 32);
+ LoadPalette(gFameCheckerBgPals + 0x00, 0x00, 0x40);
+ LoadPalette(gFameCheckerBgPals + 0x10, 0x10, 0x20);
+ CopyToBgTilemapBufferRect(2, gFameCheckerBg2Tilemap, 0, 0, 32, 32);
+ CopyToBgTilemapBufferRect_ChangePalette(1, sFameCheckerTilemap, 30, 0, 32, 32, 0x11);
+ LoadPalette(stdpal_get(2), 0xF0, 0x20);
+ gMain.state++;
+ break;
+ case 4:
+ if (IsDma3ManagerBusyWithBgCopy() != TRUE)
+ {
+ ShowBg(0);
+ ShowBg(1);
+ ShowBg(2);
+ ShowBg(3);
+ CopyBgTilemapBufferToVram(3);
+ CopyBgTilemapBufferToVram(2);
+ CopyBgTilemapBufferToVram(1);
+ gMain.state++;
+ }
+ break;
+ case 5:
+ InitWindows(sUIWindowTemplates);
+ DeactivateAllTextPrinters();
+ Setup_DrawMsgAndListBoxes();
+ sListMenuItems = AllocZeroed(17 * sizeof(struct ListMenuItem));
+ FC_CreateListMenu();
+ gMain.state++;
+ break;
+ case 6:
+ LoadUISpriteSheetsAndPalettes();
+ CreateAllFlavorTextIcons(FAMECHECKER_OAK);
+ WipeMsgBoxAndTransfer();
+ BeginNormalPaletteFade(0xFFFFFFFF,0, 16, 0, 0);
+ gMain.state++;
+ break;
+ case 7:
+ FCSetup_TurnOnDisplay();
+ SetGpuReg(REG_OFFSET_BLDCNT, BLDCNT_EFFECT_BLEND | BLDCNT_TGT2_BG0 | BLDCNT_TGT2_BG1 | BLDCNT_TGT2_BG2 | BLDCNT_TGT2_BG3 | BLDCNT_TGT2_OBJ | BLDCNT_TGT2_BD);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0x07);
+ SetGpuReg(REG_OFFSET_BLDY, 0x08);
+ SetVBlankCallback(FC_VBlankCallback);
+ sFameCheckerData->listMenuTopIdx = 0;
+ FC_CreateScrollIndicatorArrowPair();
+ UpdateInfoBoxTilemap(1, 4);
+ CreateTask(Task_WaitFadeOnInit, 0x08);
+ SetMainCallback2(MainCB2_FameCheckerMain);
+ gMain.state = 0;
+ break;
+ }
+}
+
+static void LoadUISpriteSheetsAndPalettes(void)
+{
+ LoadSpriteSheets(sUISpriteSheets);
+ LoadSpritePalettes(sUISpritePalettes);
+}
+
+static void Task_WaitFadeOnInit(u8 taskId)
+{
+ if (!gPaletteFade.active)
+ gTasks[taskId].func = Task_TopMenuHandleInput;
+}
+
+static void Task_TopMenuHandleInput(u8 taskId)
+{
+ u16 cursorPos;
+ u8 i;
+ struct Task *task = &gTasks[taskId];
+ s16 * data = gTasks[taskId].data;
+ if (FindTaskIdByFunc(Task_FCOpenOrCloseInfoBox) == 0xFF)
+ {
+ RunTextPrinters();
+ if ((JOY_NEW(SELECT_BUTTON)) && !sFameCheckerData->inPickMode && sFameCheckerData->savedCallback != UseFameCheckerFromMenu)
+ task->func = Task_StartToCloseFameChecker;
+ else if (JOY_NEW(START_BUTTON))
+ {
+ cursorPos = FameCheckerGetCursorY();
+ if (TryExitPickMode(taskId) == TRUE)
+ {
+ PlaySE(SE_W100);
+ }
+ else if (cursorPos != sFameCheckerData->numUnlockedPersons - 1) // anything but CANCEL
+ {
+ PlaySE(SE_W100);
+ FillWindowPixelRect(FCWINDOWID_ICONDESC, 0x00, 0, 0, 88, 32);
+ FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_ICONDESC);
+ UpdateInfoBoxTilemap(2, 4);
+ UpdateInfoBoxTilemap(1, 5);
+ PrintUIHelp(1);
+ task->data[2] = CreatePersonPicSprite(sFameCheckerData->unlockedPersons[cursorPos]);
+ gSprites[task->data[2]].pos2.x = 0xF0;
+ gSprites[task->data[2]].data[0] = 1;
+ task->data[3] = CreateSpinningPokeballSprite();
+ gSprites[task->data[3]].pos2.x = 0xF0;
+ gSprites[task->data[3]].data[0] = 1;
+ task->func = Task_EnterPickMode;
+ }
+ }
+ else if (JOY_NEW(A_BUTTON))
+ {
+ cursorPos = ListMenuHandleInput(0);
+ if (cursorPos == sFameCheckerData->numUnlockedPersons - 1) // CANCEL
+ task->func = Task_StartToCloseFameChecker;
+ else if (sFameCheckerData->inPickMode)
+ {
+ if (!IsTextPrinterActive(2) && HasUnlockedAllFlavorTextsForCurrentPerson() == TRUE)
+ GetPickModeText();
+ }
+ else if (sFameCheckerData->personHasUnlockedPanels)
+ {
+ PlaySE(SE_SELECT);
+ task->data[0] = CreateFlavorTextIconSelectorCursorSprite(task->data[1]);
+ for (i = 0; i < 6; i++)
+ {
+ if (i != task->data[1])
+ SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[i], ST_OAM_OBJ_BLEND);
+ }
+ gIconDescriptionBoxIsOpen = 0xFF;
+ PlaceListMenuCursor(FALSE);
+ PrintUIHelp(2);
+ if (gSprites[sFameCheckerData->spriteIds[task->data[1]]].data[1] != 0xFF) // not a ? tile
+ {
+ PrintSelectedNameInBrightGreen(taskId);
+ UpdateIconDescriptionBox(data[1]);
+ }
+ FreeListMenuSelectorArrowPairResources();
+ task->func = Task_FlavorTextDisplayHandleInput;
+ }
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ if (TryExitPickMode(taskId) != TRUE)
+ task->func = Task_StartToCloseFameChecker;
+ }
+ else
+ ListMenuHandleInput(0);
+ }
+}
+
+static bool8 TryExitPickMode(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ if (sFameCheckerData->inPickMode)
+ {
+ gSprites[task->data[2]].data[0] = 2;
+ gSprites[task->data[2]].pos2.x += 10;
+ gSprites[task->data[3]].data[0] = 2;
+ gSprites[task->data[3]].pos2.x += 10;
+ WipeMsgBoxAndTransfer();
+ task->func = Task_ExitPickMode;
+ MessageBoxPrintEmptyText();
+ sFameCheckerData->pickModeOverCancel = FALSE;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void MessageBoxPrintEmptyText(void)
+{
+ AddTextPrinterParametrized(2, 2, gFameCheckerText_ClearTextbox, 0, NULL, 2, 1, 3);
+}
+
+static void Task_EnterPickMode(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ if (gSprites[task->data[2]].data[0] == 0)
+ {
+ GetPickModeText();
+ sFameCheckerData->inPickMode = TRUE;
+ task->func = Task_TopMenuHandleInput;
+ }
+ else
+ ChangeBgX(1, 0xA00, 1);
+}
+
+static void Task_ExitPickMode(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ if (GetBgX(1) != 0)
+ ChangeBgX(1, 0xA00, 2);
+ else
+ ChangeBgX(1, 0x000, 0);
+ if (gSprites[task->data[2]].data[0] == 0)
+ {
+ if (sFameCheckerData->personHasUnlockedPanels)
+ PrintUIHelp(0);
+ UpdateInfoBoxTilemap(1, 4);
+ UpdateInfoBoxTilemap(2, 2);
+ sFameCheckerData->inPickMode = FALSE;
+ DestroyPersonPicSprite(taskId, FameCheckerGetCursorY());
+ task->func = Task_TopMenuHandleInput;
+ gSprites[task->data[3]].callback = SpriteCB_DestroySpinningPokeball;
+ }
+}
+
+static void Task_FlavorTextDisplayHandleInput(u8 taskId)
+{
+ struct Task *task = &gTasks[taskId];
+ s16 *data = gTasks[taskId].data;
+
+ RunTextPrinters();
+ if (JOY_NEW(A_BUTTON) && !IsTextPrinterActive(2))
+ {
+ u8 spriteId = sFameCheckerData->spriteIds[data[1]];
+ if (gSprites[spriteId].data[1] != 0xFF)
+ PrintSelectedNameInBrightGreen(taskId);
+ }
+ if (JOY_NEW(B_BUTTON))
+ {
+ u8 i;
+ PlaySE(SE_SELECT);
+ for (i = 0; i < 6; i++)
+ SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[i], ST_OAM_OBJ_NORMAL);
+ WipeMsgBoxAndTransfer();
+ gSprites[task->data[0]].callback = SpriteCB_DestroyFlavorTextIconSelectorCursor;
+ if (gIconDescriptionBoxIsOpen != 0xFF)
+ UpdateIconDescriptionBoxOff();
+ PlaceListMenuCursor(TRUE);
+ PrintUIHelp(0);
+ FC_CreateScrollIndicatorArrowPair();
+ MessageBoxPrintEmptyText();
+ task->func = Task_TopMenuHandleInput;
+ }
+ else if (JOY_NEW(DPAD_UP) || JOY_NEW(DPAD_DOWN))
+ {
+ if (task->data[1] >= 3)
+ {
+ task->data[1] -= 3;
+ FC_MoveSelectorCursor(taskId, 0, -0x1b);
+ }
+ else
+ {
+ task->data[1] += 3;
+ FC_MoveSelectorCursor(taskId, 0, +0x1b);
+ }
+ }
+ else if (JOY_NEW(DPAD_LEFT))
+ {
+ if (task->data[1] == 0 || task->data[1] % 3 == 0)
+ {
+ task->data[1] += 2;
+ FC_MoveSelectorCursor(taskId, +0x5e, 0);
+ }
+ else
+ {
+ task->data[1]--;
+ FC_MoveSelectorCursor(taskId, -0x2f, 0);
+ }
+ }
+ else if (JOY_NEW(DPAD_RIGHT))
+ {
+ if ((task->data[1] + 1) % 3 == 0)
+ {
+ task->data[1] -= 2;
+ FC_MoveSelectorCursor(taskId, -0x5e, 0);
+ }
+ else
+ {
+ task->data[1]++;
+ FC_MoveSelectorCursor(taskId, +0x2f, 0);
+ }
+ }
+}
+
+static void FC_MoveSelectorCursor(u8 taskId, s8 dx, s8 dy)
+{
+ u8 i;
+ s16 *data = gTasks[taskId].data;
+ PlaySE(SE_W155);
+ gSprites[data[0]].pos1.x += dx;
+ gSprites[data[0]].pos1.y += dy;
+ for (i = 0; i < 6; i++)
+ SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[i], ST_OAM_OBJ_BLEND);
+ FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20);
+ MessageBoxPrintEmptyText();
+ if (SetMessageSelectorIconObjMode(sFameCheckerData->spriteIds[data[1]], ST_OAM_OBJ_NORMAL) == TRUE)
+ {
+ PrintSelectedNameInBrightGreen(taskId);
+ UpdateIconDescriptionBox(data[1]);
+ }
+ else if (gIconDescriptionBoxIsOpen != 0xFF)
+ UpdateIconDescriptionBoxOff();
+}
+
+static void GetPickModeText(void)
+{
+ u8 offset = 0;
+ u16 who = FameCheckerGetCursorY();
+ if (gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[who]].pickState != FCPICKSTATE_COLORED)
+ {
+ WipeMsgBoxAndTransfer();
+ MessageBoxPrintEmptyText();
+ }
+ else
+ {
+ FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20);
+ if (HasUnlockedAllFlavorTextsForCurrentPerson() == TRUE)
+ offset = NUM_FAMECHECKER_PERSONS;
+ StringExpandPlaceholders(gStringVar4, sFameCheckerNameAndQuotesPointers[sFameCheckerData->unlockedPersons[who] + offset]);
+ AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3);
+ FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
+ }
+}
+
+static void PrintSelectedNameInBrightGreen(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ u16 cursorPos = FameCheckerGetCursorY();
+ FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20);
+ StringExpandPlaceholders(gStringVar4, sFameCheckerFlavorTextPointers[sFameCheckerData->unlockedPersons[cursorPos] * 6 + data[1]]);
+ AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gStringVar4, sub_80F78A8(), NULL, 2, 1, 3);
+ FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
+}
+
+static void WipeMsgBoxAndTransfer(void)
+{
+ FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20);
+ FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
+}
+
+static void Setup_DrawMsgAndListBoxes(void)
+{
+ sub_80F6E9C();
+ sub_80F6EE4(FCWINDOWID_MSGBOX, TRUE);
+ FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
+ FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_LIST);
+}
+
+static void FC_PutWindowTilemapAndCopyWindowToVramMode3(u8 windowId)
+{
+ PutWindowTilemap(windowId);
+ CopyWindowToVram(windowId, 3);
+}
+
+static bool8 SetMessageSelectorIconObjMode(u8 spriteId, u8 objMode)
+{
+ if (gSprites[spriteId].data[1] != 0xFF)
+ {
+ gSprites[spriteId].oam.objMode = objMode;
+ return TRUE;
+ }
+ return FALSE;
+}
+
+static void Task_StartToCloseFameChecker(u8 taskId)
+{
+ PlaySE(SE_W202);
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gTasks[taskId].func = Task_DestroyAssetsAndCloseFameChecker;
+}
+
+static void Task_DestroyAssetsAndCloseFameChecker(u8 taskId)
+{
+ u8 i;
+
+ if (!gPaletteFade.active)
+ {
+ if (sFameCheckerData->inPickMode)
+ {
+ DestroyPersonPicSprite(taskId, FameCheckerGetCursorY());
+ FreeSpriteOamMatrix(&gSprites[gTasks[taskId].data[3]]);
+ DestroySprite(&gSprites[gTasks[taskId].data[3]]);
+ }
+ for (i = 0; i < 6; i++)
+ {
+ DestroySprite(&gSprites[sFameCheckerData->spriteIds[i]]);
+ }
+ FreeNonTrainerPicTiles();
+ FreeSpinningPokeballSpriteResources();
+ FreeSelectionCursorSpriteResources();
+ FreeQuestionMarkSpriteResources();
+ FreeListMenuSelectorArrowPairResources();
+ SetMainCallback2(sFameCheckerData->savedCallback);
+ sub_810713C(sFameCheckerData->listMenuTaskId, 0, 0);
+ Free(sBg3TilemapBuffer);
+ Free(sBg1TilemapBuffer);
+ Free(sBg2TilemapBuffer);
+ Free(sFameCheckerData);
+ Free(sListMenuItems);
+ FC_DestroyWindow(0);
+ FC_DestroyWindow(1);
+ FC_DestroyWindow(2);
+ FC_DestroyWindow(3);
+ FreeAllWindowBuffers();
+ DestroyTask(taskId);
+ }
+}
+
+static void FC_DestroyWindow(u8 windowId)
+{
+ FillWindowPixelBuffer(windowId, 0);
+ ClearWindowTilemap(windowId);
+ CopyWindowToVram(windowId, 2);
+ RemoveWindow(windowId);
+}
+
+static u8 AdjustGiovanniIndexIfBeatenInGym(u8 a0)
+{
+ if (HasTrainerAlreadyBeenFought(0x15e) == TRUE)
+ {
+ if (a0 == 9)
+ return FAMECHECKER_GIOVANNI;
+ if (a0 > 9)
+ return a0 - 1;
+ }
+ return a0;
+}
+
+static void PrintUIHelp(u8 state)
+{
+ s32 width;
+ const u8 * src = gFameCheckerText_MainScreenUI;
+ if (state != 0)
+ {
+ src = gFameCheckerText_FlavorTextUI;
+ if (state == 1)
+ src = gFameCheckerText_PickScreenUI;
+ }
+ width = GetStringWidth(0, src, 0);
+ FillWindowPixelRect(FCWINDOWID_UIHELP, 0x00, 0, 0, 0xc0, 0x10);
+ AddTextPrinterParametrized2(FCWINDOWID_UIHELP, 0, 188 - width, 0, 0, 2, &sTextColor_White, -1, src);
+ FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_UIHELP);
+}
+
+static void DestroyAllFlavorTextIcons(void)
+{
+ u8 i;
+ for (i = 0; i < 6; i++)
+ {
+ DestroySprite(&gSprites[sFameCheckerData->spriteIds[i]]);
+ }
+}
+
+static bool8 CreateAllFlavorTextIcons(u8 who)
+{
+ bool8 result = FALSE;
+ u8 i;
+ for (i = 0; i < 6; i++)
+ {
+ if ((gSaveBlock1Ptr->fameChecker[sFameCheckerData->unlockedPersons[who]].flavorTextFlags >> i) & 1)
+ {
+ sFameCheckerData->spriteIds[i] = sub_805EB44(
+ sFameCheckerArrayNpcGraphicsIds[sFameCheckerData->unlockedPersons[who] * 6 + i],
+ i,
+ 47 * (i % 3) + 0x72,
+ 27 * (i / 3) + 0x2F
+ );
+ result = TRUE;
+ }
+ else
+ {
+ sFameCheckerData->spriteIds[i] = PlaceQuestionMarkTile(
+ 47 * (i % 3) + 0x72,
+ 27 * (i / 3) + 0x1F
+ );
+ gSprites[sFameCheckerData->spriteIds[i]].data[1] = 0xFF;
+ }
+ }
+ if (result == TRUE)
+ {
+ sFameCheckerData->personHasUnlockedPanels = TRUE;
+ if (sFameCheckerData->inPickMode)
+ PrintUIHelp(1);
+ else
+ PrintUIHelp(0);
+ }
+ else
+ {
+ sFameCheckerData->personHasUnlockedPanels = FALSE;
+ PrintUIHelp(1);
+ }
+ return result;
+}
+
+void ResetFameChecker(void)
+{
+ u8 i;
+ for (i = 0; i < NUM_FAMECHECKER_PERSONS; i++)
+ {
+ gSaveBlock1Ptr->fameChecker[i].pickState = FCPICKSTATE_NO_DRAW;
+ gSaveBlock1Ptr->fameChecker[i].flavorTextFlags = 0;
+ gSaveBlock1Ptr->fameChecker[i].unk_0_E = 0;
+ }
+ gSaveBlock1Ptr->fameChecker[FAMECHECKER_OAK].pickState = FCPICKSTATE_COLORED;
+}
+
+void FullyUnlockFameChecker(void)
+{
+ u8 i, j;
+ for (i = 0; i < NUM_FAMECHECKER_PERSONS; i++)
+ {
+ gSaveBlock1Ptr->fameChecker[i].pickState = FCPICKSTATE_COLORED;
+ for (j = 0; j < 6; j++)
+ {
+ gSaveBlock1Ptr->fameChecker[i].flavorTextFlags |= (1 << j);
+ }
+ }
+}
+
+static void FCSetup_ClearVideoRegisters(void)
+{
+ void * vram = (void *)VRAM;
+ DmaClearLarge16(3, vram, VRAM_SIZE, 0x1000);
+ DmaClear32(3, OAM, OAM_SIZE);
+ DmaClear16(3, PLTT, PLTT_SIZE);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ SetGpuReg(REG_OFFSET_BG0CNT, 0);
+ SetGpuReg(REG_OFFSET_BG0HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG0VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1CNT, 0);
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG1VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2CNT, 0);
+ SetGpuReg(REG_OFFSET_BG2HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG2VOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3CNT, 0);
+ SetGpuReg(REG_OFFSET_BG3HOFS, 0);
+ SetGpuReg(REG_OFFSET_BG3VOFS, 0);
+ SetGpuReg(REG_OFFSET_WIN0H, 0);
+ SetGpuReg(REG_OFFSET_WIN0V, 0);
+ SetGpuReg(REG_OFFSET_WININ, 0);
+ SetGpuReg(REG_OFFSET_WINOUT, 0);
+ SetGpuReg(REG_OFFSET_BLDCNT, 0);
+ SetGpuReg(REG_OFFSET_BLDALPHA, 0);
+ SetGpuReg(REG_OFFSET_BLDY, 0);
+}
+
+static void FCSetup_ResetTasksAndSpriteResources(void)
+{
+ remove_some_task();
+ ResetTasks();
+ ResetSpriteData();
+ dp13_810BB8C();
+ ResetPaletteFade();
+ npc_paltag_set_load(0);
+ gReservedSpritePaletteCount = 7;
+
+}
+
+static void FCSetup_TurnOnDisplay(void)
+{
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_MODE_0 | DISPCNT_OBJ_1D_MAP | DISPCNT_BG_ALL_ON | DISPCNT_OBJ_ON);
+}
+
+static void FCSetup_ResetBGCoords(void)
+{
+ ChangeBgX(0, 0, 0);
+ ChangeBgY(0, 0, 0);
+ ChangeBgX(1, 0, 0);
+ ChangeBgY(1, 0, 0);
+ ChangeBgX(2, 0, 0);
+ ChangeBgY(2, 0, 0);
+ ChangeBgX(3, 0, 0);
+ ChangeBgY(3, 0, 0);
+}
+
+void SetFlavorTextFlagFromSpecialVars(void)
+{
+ if (gUnknown_20370C0 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 6)
+ {
+ gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].flavorTextFlags |= (1 << gSpecialVar_0x8005);
+ gSpecialVar_0x8005 = FCPICKSTATE_SILHOUETTE;
+ UpdatePickStateFromSpecialVar8005();
+ }
+}
+
+void UpdatePickStateFromSpecialVar8005(void)
+{
+ if (gUnknown_20370C0 < NUM_FAMECHECKER_PERSONS && gSpecialVar_0x8005 < 3)
+ {
+ if (gSpecialVar_0x8005 == FCPICKSTATE_NO_DRAW)
+ return;
+ if ( gSpecialVar_0x8005 == FCPICKSTATE_SILHOUETTE
+ && gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState == FCPICKSTATE_COLORED
+ )
+ return;
+ gSaveBlock1Ptr->fameChecker[gUnknown_20370C0].pickState = gSpecialVar_0x8005;
+ }
+}
+
+static bool8 HasUnlockedAllFlavorTextsForCurrentPerson(void)
+{
+ u8 i;
+ u8 who = sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()];
+ for (i = 0; i < 6; i++)
+ {
+ if (!((gSaveBlock1Ptr->fameChecker[who].flavorTextFlags >> i) & 1))
+ return FALSE;
+ }
+ return TRUE;
+}
+
+static void FreeSelectionCursorSpriteResources(void)
+{
+ FreeSpriteTilesByTag(SPRITETAG_SELECTOR_CURSOR);
+ FreeSpritePaletteByTag(SPRITETAG_SELECTOR_CURSOR);
+}
+
+static u8 CreateFlavorTextIconSelectorCursorSprite(s16 where)
+{
+ s16 y = 34 + 27 * (where >= 3);
+ s16 x = 114 + 47 * (where % 3);
+ return CreateSprite(&sSpriteTemplate_SelectorCursor, x, y, 0);
+}
+
+static void SpriteCB_DestroyFlavorTextIconSelectorCursor(struct Sprite * sprite)
+{
+ DestroySprite(sprite);
+}
+
+static void FreeQuestionMarkSpriteResources(void)
+{
+ FreeSpriteTilesByTag(SPRITETAG_QUESTION_MARK);
+}
+
+static u8 PlaceQuestionMarkTile(u8 x, u8 y)
+{
+ u8 spriteId = CreateSprite(&sQuestionMarkTileSpriteTemplate, x, y, 8);
+ gSprites[spriteId].oam.priority = 2;
+ gSprites[spriteId].oam.paletteNum = 2;
+ return spriteId;
+}
+
+static void FreeSpinningPokeballSpriteResources(void)
+{
+ FreeSpriteTilesByTag(SPRITETAG_SPINNING_POKEBALL);
+ FreeSpritePaletteByTag(SPRITETAG_SPINNING_POKEBALL);
+}
+
+static u8 CreateSpinningPokeballSprite(void)
+{
+ return CreateSprite(&sSpinningPokeballSpriteTemplate, 0xe2, 0x42, 0);
+}
+
+static void SpriteCB_DestroySpinningPokeball(struct Sprite * sprite)
+{
+ FreeSpriteOamMatrix(sprite);
+ DestroySprite(sprite);
+}
+
+static void FreeNonTrainerPicTiles(void)
+{
+ FreeSpriteTilesByTag(SPRITETAG_DAISY);
+ FreeSpriteTilesByTag(SPRITETAG_FUJI);
+ FreeSpriteTilesByTag(SPRITETAG_OAK);
+ FreeSpriteTilesByTag(SPRITETAG_BILL);
+}
+
+static void SpriteCB_FCSpinningPokeball(struct Sprite * sprite)
+{
+ if (sprite->data[0] == 1)
+ {
+ if (sprite->pos2.x - 10 < 0)
+ {
+ sprite->pos2.x = 0;
+ sprite->data[0] = 0;
+ }
+ else
+ sprite->pos2.x -= 10;
+ }
+ else if (sprite->data[0] == 2)
+ {
+ if (sprite->pos2.x > 240)
+ {
+ sprite->pos2.x = 240;
+ sprite->data[0] = 0;
+ }
+ else
+ sprite->pos2.x += 10;
+ }
+}
+
+static u8 CreatePersonPicSprite(u8 fcPersonIdx)
+{
+ u8 spriteId;
+ if (fcPersonIdx == FAMECHECKER_DAISY)
+ {
+ spriteId = CreateSprite(&sDaisySpriteTemplate, 0x94, 0x42, 0);
+ LoadPalette(sDaisySpritePalette, 0x160, 0x20);
+ gSprites[spriteId].oam.paletteNum = 6;
+ }
+ else if (fcPersonIdx == FAMECHECKER_MRFUJI)
+ {
+ spriteId = CreateSprite(&sFujiSpriteTemplate, 0x94, 0x42, 0);
+ LoadPalette(sFujiSpritePalette, 0x160, 0x20);
+ gSprites[spriteId].oam.paletteNum = 6;
+ }
+ else if (fcPersonIdx == FAMECHECKER_OAK)
+ {
+ spriteId = CreateSprite(&sOakSpriteTemplate, 0x94, 0x42, 0);
+ LoadPalette(sOakSpritePalette, 0x160, 0x20);
+ gSprites[spriteId].oam.paletteNum = 6;
+ }
+ else if (fcPersonIdx == FAMECHECKER_BILL)
+ {
+ spriteId = CreateSprite(&sBillSpriteTemplate, 0x94, 0x42, 0);
+ LoadPalette(sBillSpritePalette, 0x160, 0x20);
+ gSprites[spriteId].oam.paletteNum = 6;
+ }
+ else
+ {
+ spriteId = sub_810C2A4(sFameCheckerTrainerPicIdxs[fcPersonIdx], 1, 0x94, 0x42, 6, 0xFFFF);
+ }
+ gSprites[spriteId].callback = SpriteCB_FCSpinningPokeball;
+ if (gSaveBlock1Ptr->fameChecker[fcPersonIdx].pickState == FCPICKSTATE_SILHOUETTE)
+ LoadPalette(sSilhouettePalette, 0x160, 0x20);
+ return spriteId;
+}
+
+static void DestroyPersonPicSprite(u8 taskId, u16 who)
+{
+ s16 * data = gTasks[taskId].data;
+ u16 who_copy = who;
+ if (who == sFameCheckerData->numUnlockedPersons - 1)
+ who_copy = who - 1;
+ if ( sFameCheckerData->unlockedPersons[who_copy] == FAMECHECKER_DAISY
+ || sFameCheckerData->unlockedPersons[who_copy] == FAMECHECKER_MRFUJI
+ || sFameCheckerData->unlockedPersons[who_copy] == FAMECHECKER_OAK
+ || sFameCheckerData->unlockedPersons[who_copy] == FAMECHECKER_BILL
+ )
+ DestroySprite(&gSprites[data[2]]);
+ else
+ sub_810C2E8(data[2]);
+}
+
+static void UpdateIconDescriptionBox(u8 whichText)
+{
+ s32 width;
+ u32 idx = 6 * sFameCheckerData->unlockedPersons[FameCheckerGetCursorY()] + whichText;
+ HandleFlavorTextModeSwitch(TRUE);
+ gIconDescriptionBoxIsOpen = 1;
+ FillWindowPixelRect(FCWINDOWID_ICONDESC, 0x00, 0, 0, 0x58, 0x20);
+ width = (0x54 - GetStringWidth(0, sFlavorTextOriginLocationTexts[idx], 0)) / 2;
+ AddTextPrinterParametrized2(FCWINDOWID_ICONDESC, 0, width, 0, 0, 2, &sTextColor_DkGrey, -1, sFlavorTextOriginLocationTexts[idx]);
+ StringExpandPlaceholders(gStringVar1, sFlavorTextOriginObjectNameTexts[idx]);
+ width = (0x54 - GetStringWidth(0, gStringVar1, 0)) / 2;
+ AddTextPrinterParametrized2(FCWINDOWID_ICONDESC, 0, width, 10, 0, 2, &sTextColor_DkGrey, -1, gStringVar1);
+ FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_ICONDESC);
+}
+
+static void UpdateIconDescriptionBoxOff(void)
+{
+ HandleFlavorTextModeSwitch(FALSE);
+ gIconDescriptionBoxIsOpen = 0xFF;
+}
+
+static void FC_CreateListMenu(void)
+{
+ InitListMenuTemplate();
+ sFameCheckerData->numUnlockedPersons = FC_PopulateListMenu();
+ sFameCheckerData->listMenuTaskId = ListMenuInit(&gFameChecker_ListMenuTemplate, 0, 0);
+ FC_PutWindowTilemapAndCopyWindowToVramMode3_2(FCWINDOWID_LIST);
+}
+
+static void InitListMenuTemplate(void)
+{
+ gFameChecker_ListMenuTemplate.items = sListMenuItems;
+ gFameChecker_ListMenuTemplate.moveCursorFunc = FC_MoveCursorFunc;
+ gFameChecker_ListMenuTemplate.itemPrintFunc = NULL;
+ gFameChecker_ListMenuTemplate.totalItems = 1;
+ gFameChecker_ListMenuTemplate.maxShowed = 1;
+ gFameChecker_ListMenuTemplate.windowId = 0;
+ gFameChecker_ListMenuTemplate.header_X = 0;
+ gFameChecker_ListMenuTemplate.item_X = 8;
+ gFameChecker_ListMenuTemplate.cursor_X = 0;
+ gFameChecker_ListMenuTemplate.upText_Y = 4;
+ gFameChecker_ListMenuTemplate.cursorPal = 2;
+ gFameChecker_ListMenuTemplate.fillValue = 0;
+ gFameChecker_ListMenuTemplate.cursorShadowPal = 3;
+ gFameChecker_ListMenuTemplate.lettersSpacing = 0;
+ gFameChecker_ListMenuTemplate.itemVerticalPadding = 0;
+ gFameChecker_ListMenuTemplate.scrollMultiple = 0;
+ gFameChecker_ListMenuTemplate.fontId = 2;
+ gFameChecker_ListMenuTemplate.cursorKind = 0;
+}
+
+static void FC_MoveCursorFunc(s32 itemIndex, bool8 onInit, struct ListMenu *list)
+{
+ u16 listMenuTopIdx;
+ u8 taskId;
+ u16 personIdx;
+ sLastMenuIdx = 0;
+ personIdx = sFameCheckerData->listMenuTopIdx2 + sFameCheckerData->listMenuDrawnSelIdx;
+ FC_DoMoveCursor(itemIndex, onInit);
+ taskId = FindTaskIdByFunc(Task_TopMenuHandleInput);
+ if (taskId != 0xFF)
+ {
+ struct Task *task = &gTasks[taskId];
+ PlaySE(SE_SELECT);
+ task->data[1] = 0;
+ get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listMenuTopIdx, NULL);
+ sFameCheckerData->listMenuTopIdx = listMenuTopIdx;
+ if (itemIndex != sFameCheckerData->numUnlockedPersons - 1)
+ {
+ DestroyAllFlavorTextIcons();
+ CreateAllFlavorTextIcons(itemIndex);
+ if (sFameCheckerData->inPickMode)
+ {
+ if (!sFameCheckerData->pickModeOverCancel)
+ {
+ DestroyPersonPicSprite(taskId, personIdx);
+ sLastMenuIdx = itemIndex;
+ task->func = Task_SwitchToPickMode;
+ }
+ else
+ {
+ gSprites[task->data[2]].invisible = FALSE;
+ sFameCheckerData->pickModeOverCancel = FALSE;
+ gSprites[task->data[2]].data[0] = 0;
+ GetPickModeText();
+ }
+ }
+ else
+ {
+ FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20);
+ FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
+ }
+ }
+ else
+ {
+ PrintCancelDescription();
+ if (sFameCheckerData->inPickMode)
+ {
+ gSprites[task->data[2]].invisible = TRUE;
+ sFameCheckerData->pickModeOverCancel = TRUE;
+ }
+ else
+ {
+ u8 i;
+ for (i = 0; i < 6; i++)
+ {
+ gSprites[sFameCheckerData->spriteIds[i]].invisible = TRUE;
+ }
+ }
+ }
+ }
+}
+
+static void Task_SwitchToPickMode(u8 taskId)
+{
+ struct Task * task = &gTasks[taskId];
+ task->data[2] = CreatePersonPicSprite(sFameCheckerData->unlockedPersons[sLastMenuIdx]);
+ gSprites[task->data[2]].data[0] = 0;
+ GetPickModeText();
+ task->func = Task_TopMenuHandleInput;
+}
+
+static void PrintCancelDescription(void)
+{
+ FillWindowPixelRect(FCWINDOWID_MSGBOX, 0x11, 0, 0, 0xd0, 0x20);
+ AddTextPrinterParametrized(FCWINDOWID_MSGBOX, 2, gFameCheckerText_FameCheckerWillBeClosed, 0, NULL, 2, 1, 3);
+ FC_PutWindowTilemapAndCopyWindowToVramMode3(FCWINDOWID_MSGBOX);
+}
+
+static void FC_DoMoveCursor(s32 itemIndex, bool8 onInit)
+{
+ u16 listY;
+ u16 cursorY;
+ u16 who;
+ get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listY, &cursorY);
+ who = listY + cursorY;
+ AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * cursorY + 4, 0, 0, &sTextColor_Green, 0, sListMenuItems[itemIndex].unk_00);
+ if (!onInit)
+ {
+ if (listY < sFameCheckerData->listMenuTopIdx2)
+ sFameCheckerData->listMenuDrawnSelIdx++;
+ else if (listY > sFameCheckerData->listMenuTopIdx2 && who != sFameCheckerData->numUnlockedPersons - 1)
+ sFameCheckerData->listMenuDrawnSelIdx--;
+ AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 8, 14 * sFameCheckerData->listMenuDrawnSelIdx + 4, 0, 0, &sTextColor_DkGrey, 0, sListMenuItems[sFameCheckerData->listMenuCurIdx].unk_00);
+
+ }
+ sFameCheckerData->listMenuCurIdx = itemIndex;
+ sFameCheckerData->listMenuDrawnSelIdx = cursorY;
+ sFameCheckerData->listMenuTopIdx2 = listY;
+}
+
+static u8 FC_PopulateListMenu(void)
+{
+ u8 nitems = 0;
+ u8 i;
+
+ for (i = 0; i < NUM_FAMECHECKER_PERSONS; i++)
+ {
+ u8 fameCheckerIdx = AdjustGiovanniIndexIfBeatenInGym(i);
+ if (gSaveBlock1Ptr->fameChecker[fameCheckerIdx].pickState != FCPICKSTATE_NO_DRAW)
+ {
+ if (sTrainerIdxs[fameCheckerIdx] < FC_NONTRAINER_START)
+ {
+ sListMenuItems[nitems].unk_00 = gTrainers[sTrainerIdxs[fameCheckerIdx]].trainerName;
+ sListMenuItems[nitems].unk_04 = nitems;
+ }
+ else
+ {
+ sListMenuItems[nitems].unk_00 = sNonTrainerNamePointers[sTrainerIdxs[fameCheckerIdx] - FC_NONTRAINER_START];
+ sListMenuItems[nitems].unk_04 = nitems;
+ }
+ sFameCheckerData->unlockedPersons[nitems] = fameCheckerIdx;
+ nitems++;
+ }
+ }
+ sListMenuItems[nitems].unk_00 = gFameCheckerText_Cancel;
+ sListMenuItems[nitems].unk_04 = nitems;
+ sFameCheckerData->unlockedPersons[nitems] = 0xFF;
+ nitems++;
+ gFameChecker_ListMenuTemplate.totalItems = nitems;
+ if (nitems < 5)
+ gFameChecker_ListMenuTemplate.maxShowed = nitems;
+ else
+ gFameChecker_ListMenuTemplate.maxShowed = 5;
+ return nitems;
+}
+
+static void FC_PutWindowTilemapAndCopyWindowToVramMode3_2(u8 windowId)
+{
+ PutWindowTilemap(windowId);
+ CopyWindowToVram(windowId, 3);
+}
+
+static void FC_CreateScrollIndicatorArrowPair(void)
+{
+ struct ScrollIndicatorArrowPairTemplate template = {
+ 2,
+ 40,
+ 26,
+ 3,
+ 40,
+ 100,
+ 0,
+ 0,
+ SPRITETAG_SCROLL_INDICATORS,
+ 0xFFFF,
+ 1,
+ 0
+ };
+
+ if (sFameCheckerData->numUnlockedPersons > 5)
+ {
+ template.unk_06 = 0;
+ template.unk_08 = sFameCheckerData->numUnlockedPersons - 5;
+ sFameCheckerData->scrollIndicatorPairTaskId = AddScrollIndicatorArrowPair(&template, &sFameCheckerData->listMenuTopIdx);
+ }
+}
+
+static void FreeListMenuSelectorArrowPairResources(void)
+{
+ if (sFameCheckerData->numUnlockedPersons > 5)
+ RemoveScrollIndicatorArrowPair(sFameCheckerData->scrollIndicatorPairTaskId);
+}
+
+static u16 FameCheckerGetCursorY(void)
+{
+ u16 listY, cursorY;
+ get_coro_args_x18_x1A(sFameCheckerData->listMenuTaskId, &listY, &cursorY);
+ return listY + cursorY;
+}
+
+static void HandleFlavorTextModeSwitch(bool8 state)
+{
+ if (sFameCheckerData->viewingFlavorText != state)
+ {
+ u8 taskId = FindTaskIdByFunc(Task_FCOpenOrCloseInfoBox);
+ if (taskId == 0xFF)
+ taskId = CreateTask(Task_FCOpenOrCloseInfoBox, 8);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = 4;
+ if (state == TRUE)
+ {
+ gTasks[taskId].data[2] = 1;
+ sFameCheckerData->viewingFlavorText = TRUE;
+ }
+ else
+ {
+ gTasks[taskId].data[2] = 4;
+ sFameCheckerData->viewingFlavorText = FALSE;
+ }
+ }
+}
+
+static void Task_FCOpenOrCloseInfoBox(u8 taskId)
+{
+ struct Task * task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ if (--task->data[1] == 0)
+ {
+ UpdateInfoBoxTilemap(1, 0);
+ task->data[1] = 4;
+ task->data[0]++;
+ }
+ break;
+ case 1:
+ if (--task->data[1] == 0)
+ {
+ UpdateInfoBoxTilemap(1, task->data[2]);
+ DestroyTask(taskId);
+ }
+ break;
+ }
+}
+
+static void UpdateInfoBoxTilemap(u8 bg, s16 state)
+{
+ if (state == 0 || state == 3)
+ {
+ FillBgTilemapBufferRect(bg, 0x8C, 14, 10, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0xA1, 15, 10, 10, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x8D, 25, 10, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x8E, 26, 10, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x8F, 14, 11, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x00, 15, 11, 11, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x90, 26, 11, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x91, 14, 12, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0xA3, 15, 12, 10, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x92, 25, 12, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x93, 26, 12, 1, 1, 1);
+ }
+ else if (state == 1)
+ {
+ FillBgTilemapBufferRect(bg, 0x9B, 14, 10, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x9C, 15, 10, 11, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x96, 26, 10, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x9D, 14, 11, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x00, 15, 11, 11, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x90, 26, 11, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x9E, 14, 12, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x9F, 15, 12, 11, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x99, 26, 12, 1, 1, 1);
+ }
+ else if (state == 2)
+ {
+ FillBgTilemapBufferRect(bg, 0x94, 14, 10, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x95, 15, 10, 11, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x96, 26, 10, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x8F, 14, 11, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x9A, 15, 11, 11, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x90, 26, 11, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x97, 14, 12, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x98, 15, 12, 11, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x99, 26, 12, 1, 1, 1);
+ }
+ else if (state == 4)
+ {
+ FillBgTilemapBufferRect(bg, 0x83, 14, 10, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0xA0, 15, 10, 10, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x84, 25, 10, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x85, 26, 10, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x86, 14, 11, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0xA2, 15, 11, 10, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x87, 25, 11, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x88, 26, 11, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x83, 14, 12, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0xA0, 15, 12, 10, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x84, 25, 12, 1, 1, 1);
+ FillBgTilemapBufferRect(bg, 0x85, 26, 12, 1, 1, 1);
+ }
+ else if (state == 5)
+ {
+ FillBgTilemapBufferRect(bg, 0x00, 14, 10, 13, 3, 1);
+ }
+ CopyBgTilemapBufferToVram(bg);
+}
+
+static void PlaceListMenuCursor(bool8 isActive)
+{
+ u16 cursorY = ListMenuGetYCoordForPrintingArrowCursor(sFameCheckerData->listMenuTaskId);
+ if (isActive == TRUE)
+ AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &sTextColor_DkGrey, 0, gFameCheckerText_ListMenuCursor);
+ else
+ AddTextPrinterParametrized2(FCWINDOWID_LIST, 2, 0, cursorY, 0, 0, &sTextColor_White, 0, gFameCheckerText_ListMenuCursor);
+}
diff --git a/src/text.c b/src/text.c
index d4d25b5aa..874e12fd5 100644
--- a/src/text.c
+++ b/src/text.c
@@ -17,7 +17,7 @@ extern void BlitBitmapRectToWindow(u8 windowId, const u8 *pixels, u16 srcX, u16
extern u8 GetKeypadIconWidth(u8 keypadIconId);
extern void CopyWindowToVram(u8 windowId, u8 mode);
extern u16 Font6Func(struct TextPrinter *textPrinter);
-extern u32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese);
+extern s32 GetGlyphWidthFont6(u16 glyphId, bool32 isJapanese);
extern void PlaySE(u16 songNum);
extern u8* UnkTextUtil_GetPtrI(u8 a1);
@@ -1388,7 +1388,7 @@ _08005D6A:\n\
.syntax divided");
}
-u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
+s32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
{
int i;
u8 width;
@@ -1479,7 +1479,7 @@ u32 GetStringWidthFixedWidthFont(const u8 *str, u8 fontId, u8 letterSpacing)
return (u8)(GetFontAttribute(fontId, 0) + letterSpacing) * width;
}
-u32 (*GetFontWidthFunc(u8 glyphId))(u16 _glyphId, bool32 _isJapanese)
+s32 (*GetFontWidthFunc(u8 glyphId))(u16 _glyphId, bool32 _isJapanese)
{
u32 i;
@@ -1492,11 +1492,11 @@ u32 (*GetFontWidthFunc(u8 glyphId))(u16 _glyphId, bool32 _isJapanese)
return NULL;
}
-u32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
+s32 GetStringWidth(u8 fontId, const u8 *str, s16 letterSpacing)
{
bool8 isJapanese;
int minGlyphWidth;
- u32 (*func)(u16 glyphId, bool32 isJapanese);
+ s32 (*func)(u16 glyphId, bool32 isJapanese);
int localLetterSpacing;
register u32 lineWidth asm("r5");
u8 *bufferPointer;
@@ -1863,7 +1863,7 @@ void DecompressGlyphFont0(u16 glyphId, bool32 isJapanese)
}
}
-u32 GetGlyphWidthFont0(u16 glyphId, bool32 isJapanese)
+s32 GetGlyphWidthFont0(u16 glyphId, bool32 isJapanese)
{
if (isJapanese == TRUE)
return 8;
@@ -1896,7 +1896,7 @@ void DecompressGlyphFont1(u16 glyphId, bool32 isJapanese)
}
}
-u32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese)
+s32 GetGlyphWidthFont1(u16 glyphId, bool32 isJapanese)
{
if (isJapanese == TRUE)
return 8;
@@ -1962,7 +1962,7 @@ void DecompressGlyphFont2(u16 glyphId, bool32 isJapanese)
}
}
-u32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese)
+s32 GetGlyphWidthFont2(u16 glyphId, bool32 isJapanese)
{
if (isJapanese == TRUE)
{
@@ -2012,7 +2012,7 @@ void DecompressGlyphFont3(u16 glyphId, bool32 isJapanese)
DecompressGlyphFont2(glyphId, isJapanese);
}
-u32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese)
+s32 GetGlyphWidthFont3(u16 glyphId, bool32 isJapanese)
{
if(isJapanese == TRUE)
return 10;
@@ -2078,7 +2078,7 @@ void DecompressGlyphFont4(u16 glyphId, bool32 isJapanese)
}
}
-u32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese)
+s32 GetGlyphWidthFont4(u16 glyphId, bool32 isJapanese)
{
if(isJapanese == TRUE)
{
@@ -2149,7 +2149,7 @@ void DecompressGlyphFont5(u16 glyphId, bool32 isJapanese)
}
}
-u32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese)
+s32 GetGlyphWidthFont5(u16 glyphId, bool32 isJapanese)
{
if(isJapanese == TRUE)
{
diff --git a/sym_common.txt b/sym_common.txt
index 6c213ca4d..af6d7ba4f 100644
--- a/sym_common.txt
+++ b/sym_common.txt
@@ -324,11 +324,7 @@ gUnknown_3005E9C: @ 3005E9C
gUnknown_3005EA0: @ 3005EA0
.space 0x10
-gUnknown_3005EB0: @ 3005EB0
- .space 0x18
-
-gUnknown_3005EC8: @ 3005EC8
- .space 0x4
+ .include "fame_checker.o"
gUnknown_3005ECC: @ 3005ECC
.space 0x4
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 16a1e7ddd..83fdcf763 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1556,23 +1556,7 @@ gUnknown_203B0EC: @ 203B0EC
gUnknown_203B0EE: @ 203B0EE
.space 0x2
-gUnknown_203B0F0: @ 203B0F0
- .space 0x4
-
-gUnknown_203B0F4: @ 203B0F4
- .space 0x4
-
-gUnknown_203B0F8: @ 203B0F8
- .space 0x4
-
-gUnknown_203B0FC: @ 203B0FC
- .space 0x4
-
-gUnknown_203B100: @ 203B100
- .space 0x4
-
-gUnknown_203B104: @ 203B104
- .space 0x4
+ .include "src/fame_checker.o"
gUnknown_203B108: @ 203B108
.space 0x4