summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore61
-rw-r--r--Makefile4
-rw-r--r--asm/berry_crush_3.s8
-rw-r--r--asm/berry_pouch.s14
-rw-r--r--asm/cable_car_util.s162
-rw-r--r--asm/clear_save_data_screen.s4
-rw-r--r--asm/diploma.s607
-rw-r--r--asm/field_specials.s10
-rw-r--r--asm/hall_of_fame.s12
-rw-r--r--asm/item_menu.s6
-rw-r--r--asm/link_rfu_3.s2
-rw-r--r--asm/mailbox_pc.s2
-rw-r--r--asm/menu.s3455
-rw-r--r--asm/overworld.s6
-rw-r--r--asm/party_menu.s36
-rw-r--r--asm/player_pc.s28
-rw-r--r--asm/pokedex.s6
-rw-r--r--asm/pokemon_jump_2.s2
-rw-r--r--asm/pokemon_special_anim.s2
-rw-r--r--asm/pokemon_storage_system.s28
-rw-r--r--asm/script_menu.s26
-rw-r--r--asm/shop.s18
-rw-r--r--asm/slot_machine.s4
-rw-r--r--asm/start_menu.s14
-rw-r--r--asm/trade.s6
-rw-r--r--asm/trainer_card.s4
-rw-r--r--asm/union_room_chat.s18
-rw-r--r--baserom.ipsbin2360951 -> 2327998 bytes
-rw-r--r--data/data_83FECCC.s22
-rw-r--r--data/specials.inc2
-rw-r--r--data/strings.s2612
-rw-r--r--graphics/diploma/unk_84147C0.pngbin0 -> 2863 bytes
-rw-r--r--graphics/diploma/unk_84154E8.binbin0 -> 4096 bytes
-rw-r--r--graphics/diploma/unk_8415954.pal35
-rw-r--r--include/menu.h71
-rw-r--r--include/menu_helpers.h25
-rw-r--r--include/new_menu_helpers.h60
-rw-r--r--include/overworld.h1
-rw-r--r--include/palette.h2
-rw-r--r--include/pokedex.h3
-rw-r--r--include/sound.h1
-rw-r--r--include/strings.h9
-rw-r--r--ld_script.txt16
-rw-r--r--src/bag.c11
-rw-r--r--src/berry_powder.c10
-rw-r--r--src/buy_menu_helpers.c4
-rw-r--r--src/cable_car_util.c38
-rw-r--r--src/coins.c13
-rw-r--r--src/diploma.c285
-rw-r--r--src/fldeff_softboiled.c3
-rw-r--r--src/fldeff_sweetscent.c10
-rw-r--r--src/item_pc.c20
-rw-r--r--src/menu.c878
-rw-r--r--src/menu2.c2
-rw-r--r--src/menu_helpers.c8
-rw-r--r--src/mevent_8145654.c1
-rw-r--r--src/money.c11
-rw-r--r--src/new_menu_helpers.c8
-rw-r--r--src/oak_speech.c56
-rw-r--r--src/quest_log.c1
-rw-r--r--src/sound.c2
-rw-r--r--src/tm_case.c36
-rw-r--r--src/trainer_tower.c2
-rw-r--r--sym_ewram.txt21
-rwxr-xr-xtools/asmdiff.sh7
-rw-r--r--tools/gbafix/elf.h3147
-rw-r--r--tools/gbafix/gbafix.c508
67 files changed, 7305 insertions, 5181 deletions
diff --git a/.gitignore b/.gitignore
index c85c20759..6910d62e9 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,48 +1,49 @@
-*.exe
-*.o
-*.i
-*.elf
-*.gba
*.1bpp
*.4bpp
*.8bpp
+*.DS_Store
+*.bak
+*.bat
+*.diff
+*.dump
+*.elf
+*.exe
+*.fwjpnfont
+*.gba
*.gbapal
-*.lz
-*.rl
-*.pcm
-*.latfont
*.hwjpnfont
-*.fwjpnfont
-*.bat
-sound/**/*.bin
-src/*.s
-tools/agbcc
-tools/binutils
-ld_script_ruby.txt
-ld_script_sapphire.txt
-*.map
+*.i
*.id0
*.id1
*.id2
-*.nam
-*.til
-.fuse*
+*.latfont
*.ld
-tags
-types_*.taghl
-*.swp
-*.swo
+*.lz
+*.map
+*.nam
+*.o
+*.pcm
+*.pl
+*.rl
*.s.old
*.s.old2
-*.dump
*.sa*
+*.swo
+*.swp
+*.til
+.fuse*
+.idea/
Thumbs.db
build/
-.idea/
cmake-build-*
-*.DS_Store
-*.pl
-*.bak
+ld_script_ruby.txt
+ld_script_sapphire.txt
+sound/**/*.bin
+src/*.s
src/data/items.h
+tags
+tools/agbcc
+tools/binutils
tools/br_ips/br_ips
tools/br_ips/ips_patch
+types_*.taghl
diff --git a/Makefile b/Makefile
index eb131ba38..3f87a910d 100644
--- a/Makefile
+++ b/Makefile
@@ -244,10 +244,10 @@ $(OBJ_DIR)/ld_script.ld: ld_script.txt $(OBJ_DIR)/sym_bss.ld $(OBJ_DIR)/sym_comm
$(ELF): $(OBJ_DIR)/ld_script.ld $(OBJS)
cd $(OBJ_DIR) && ../../$(LD) $(LDFLAGS) -T ld_script.ld -o ../../$@ $(LIB)
+ $(FIX) $@ -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
$(ROM): $(ELF)
- $(OBJCOPY) -O binary $< $@
- $(FIX) $@ -p -t"$(TITLE)" -c$(GAME_CODE) -m$(MAKER_CODE) -r$(REVISION) --silent
+ $(OBJCOPY) -O binary --gap-fill 0xFF --pad-to 0x9000000 $< $@
berry_fix/berry_fix.gba:
@$(MAKE) -C berry_fix
diff --git a/asm/berry_crush_3.s b/asm/berry_crush_3.s
index 581b84793..b10f29f8d 100644
--- a/asm/berry_crush_3.s
+++ b/asm/berry_crush_3.s
@@ -2102,7 +2102,7 @@ _0814E6E0:
movs r1, 0
adds r2, r4, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
b _0814E7F8
.align 2, 0
_0814E700: .4byte 0x0000021d
@@ -2246,7 +2246,7 @@ sub_814E80C: @ 814E80C
adds r5, r4, r0
ldrb r0, [r5]
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r5]
bl RemoveWindow
adds r0, r4, 0
@@ -2314,7 +2314,7 @@ _0814E876:
movs r1, 0
adds r2, r4, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
b _0814EA66
.align 2, 0
_0814E8A8: .4byte gUnknown_846E3F0
@@ -2499,7 +2499,7 @@ _0814EA3C: .4byte gMain
_0814EA40:
ldrb r0, [r7, 0x2]
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r7, 0x2]
bl ClearWindowTilemap
ldrb r0, [r7, 0x2]
diff --git a/asm/berry_pouch.s b/asm/berry_pouch.s
index 8eb127d52..60d6873e6 100644
--- a/asm/berry_pouch.s
+++ b/asm/berry_pouch.s
@@ -1974,7 +1974,7 @@ _0813DC86:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x6
bl sub_813EA08
adds r4, r0, 0
@@ -2051,7 +2051,7 @@ sub_813DDA0: @ 813DDA0
lsrs r0, 24
cmp r0, 0x1
beq _0813DDFE
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
@@ -3509,7 +3509,7 @@ _0813EA38:
movs r1, 0
movs r2, 0xA
movs r3, 0xC
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
b _0813EA60
.align 2, 0
_0813EA4C: .4byte gUnknown_203F38C
@@ -3519,7 +3519,7 @@ _0813EA54:
movs r1, 0
movs r2, 0x1
movs r3, 0xE
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
_0813EA60:
movs r0, 0x2
bl ScheduleBgCopyTilemapToVram
@@ -3545,7 +3545,7 @@ sub_813EA78: @ 813EA78
movs r1, 0
movs r2, 0x1
movs r3, 0xE
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
pop {r0}
bx r0
.align 2, 0
@@ -3562,7 +3562,7 @@ sub_813EA98: @ 813EA98
adds r4, r0
ldrb r0, [r4]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl ClearWindowTilemap
ldrb r0, [r4]
@@ -3589,7 +3589,7 @@ sub_813EACC: @ 813EACC
cmp r0, 0xFF
beq _0813EB04
movs r1, 0
- bl ClearMenuWindow_BorderThickness2
+ bl ClearDialogWindowAndFrameToTransparent
ldrb r0, [r4]
bl ClearWindowTilemap
ldrb r0, [r4]
diff --git a/asm/cable_car_util.s b/asm/cable_car_util.s
deleted file mode 100644
index 4a8f99176..000000000
--- a/asm/cable_car_util.s
+++ /dev/null
@@ -1,162 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80D9614
-sub_80D9614: @ 80D9614
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r0
- ldr r0, [sp, 0x24]
- ldr r4, [sp, 0x28]
- lsls r1, 16
- lsrs r1, 16
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- lsls r3, 24
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- movs r0, 0
- lsrs r4, r3, 24
- cmp r0, r8
- bcs _080D968E
-_080D9646:
- ldr r2, [sp]
- movs r3, 0
- adds r6, r4, 0x1
- adds r0, 0x1
- mov r12, r0
- cmp r3, r7
- bcs _080D9678
- lsls r5, r4, 6
-_080D9656:
- lsls r0, r2, 1
- adds r0, r5
- add r0, r10
- mov r1, r9
- strh r1, [r0]
- adds r1, r2, 0x1
- adds r0, r1, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r1, r0
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r7
- bcc _080D9656
-_080D9678:
- adds r0, r6, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r6, r0
- lsls r0, 24
- lsrs r4, r0, 24
- mov r1, r12
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, r8
- bcc _080D9646
-_080D968E:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80D9614
-
- thumb_func_start sub_80D96A0
-sub_80D96A0: @ 80D96A0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x4
- mov r10, r0
- ldr r0, [sp, 0x24]
- ldr r4, [sp, 0x28]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp]
- lsls r3, 24
- lsls r0, 24
- lsrs r0, 24
- mov r12, r0
- lsls r4, 24
- lsrs r4, 24
- mov r9, r4
- movs r0, 0
- adds r5, r1, 0
- lsrs r4, r3, 24
- cmp r0, r9
- bcs _080D971A
-_080D96D0:
- ldr r2, [sp]
- movs r3, 0
- adds r7, r4, 0x1
- adds r0, 0x1
- mov r8, r0
- cmp r3, r12
- bcs _080D9704
- lsls r6, r4, 6
-_080D96E0:
- lsls r0, r2, 1
- adds r0, r6
- add r0, r10
- ldrh r1, [r5]
- strh r1, [r0]
- adds r5, 0x2
- adds r1, r2, 0x1
- adds r0, r1, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r1, r0
- lsls r0, 24
- lsrs r2, r0, 24
- adds r0, r3, 0x1
- lsls r0, 24
- lsrs r3, r0, 24
- cmp r3, r12
- bcc _080D96E0
-_080D9704:
- adds r0, r7, 0
- asrs r0, 5
- lsls r0, 5
- subs r0, r7, r0
- lsls r0, 24
- lsrs r4, r0, 24
- mov r1, r8
- lsls r0, r1, 24
- lsrs r0, 24
- cmp r0, r9
- bcc _080D96D0
-_080D971A:
- add sp, 0x4
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_80D96A0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/clear_save_data_screen.s b/asm/clear_save_data_screen.s
index ccae18c34..f6cd11410 100644
--- a/asm/clear_save_data_screen.s
+++ b/asm/clear_save_data_screen.s
@@ -120,7 +120,7 @@ _080F5660:
movs r1, 0x1
movs r2, 0x1
movs r3, 0xF
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
movs r0, 0x1
str r0, [sp]
str r0, [sp, 0x4]
@@ -304,7 +304,7 @@ _080F57D4:
lsrs r4, r0, 24
cmp r4, 0
bne _080F57FE
- bl sub_81100E8
+ bl DestroyYesNoMenu
adds r0, r6, 0
bl DestroyTask
bl FreeAllWindowBuffers
diff --git a/asm/diploma.s b/asm/diploma.s
deleted file mode 100644
index 9e3d1b3ee..000000000
--- a/asm/diploma.s
+++ /dev/null
@@ -1,607 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start sub_80F4BFC
-sub_80F4BFC: @ 80F4BFC
- push {lr}
- bl LoadOam
- bl ProcessSpriteCopyRequests
- bl TransferPlttBuffer
- pop {r0}
- bx r0
- thumb_func_end sub_80F4BFC
-
- thumb_func_start sub_80F4C10
-sub_80F4C10: @ 80F4C10
- push {r4,lr}
- ldr r4, _080F4C40 @ =gUnknown_203AB48
- ldr r0, _080F4C44 @ =0x00001004
- bl AllocZeroed
- str r0, [r4]
- movs r1, 0
- strb r1, [r0]
- ldr r0, [r4]
- strb r1, [r0, 0x1]
- ldr r0, [r4]
- strb r1, [r0, 0x2]
- bl sub_80F4E24
- ldr r0, _080F4C48 @ =sub_80F4C68
- movs r1, 0
- bl CreateTask
- ldr r0, _080F4C4C @ =sub_80F4C50
- bl SetMainCallback2
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4C40: .4byte gUnknown_203AB48
-_080F4C44: .4byte 0x00001004
-_080F4C48: .4byte sub_80F4C68
-_080F4C4C: .4byte sub_80F4C50
- thumb_func_end sub_80F4C10
-
- thumb_func_start sub_80F4C50
-sub_80F4C50: @ 80F4C50
- push {lr}
- bl RunTasks
- bl AnimateSprites
- bl BuildOamBuffer
- bl UpdatePaletteFade
- pop {r0}
- bx r0
- thumb_func_end sub_80F4C50
-
- thumb_func_start sub_80F4C68
-sub_80F4C68: @ 80F4C68
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r4, r0, 24
- ldr r0, _080F4C84 @ =gUnknown_203AB48
- ldr r0, [r0]
- ldrb r0, [r0, 0x2]
- cmp r0, 0x8
- bhi _080F4D30
- lsls r0, 2
- ldr r1, _080F4C88 @ =_080F4C8C
- adds r0, r1
- ldr r0, [r0]
- mov pc, r0
- .align 2, 0
-_080F4C84: .4byte gUnknown_203AB48
-_080F4C88: .4byte _080F4C8C
- .align 2, 0
-_080F4C8C:
- .4byte _080F4CB0
- .4byte _080F4CB8
- .4byte _080F4CBE
- .4byte _080F4CCA
- .4byte _080F4CDC
- .4byte _080F4CFC
- .4byte _080F4D02
- .4byte _080F4D10
- .4byte _080F4D22
-_080F4CB0:
- movs r0, 0
- bl SetVBlankCallback
- b _080F4D50
-_080F4CB8:
- bl sub_80F4E40
- b _080F4D50
-_080F4CBE:
- bl sub_80F4F9C
- lsls r0, 24
- cmp r0, 0
- beq _080F4D5A
- b _080F4D50
-_080F4CCA:
- ldr r1, _080F4CD8 @ =gUnknown_84154E8
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl CopyToBgTilemapBuffer
- b _080F4D50
- .align 2, 0
-_080F4CD8: .4byte gUnknown_84154E8
-_080F4CDC:
- bl sub_8088F84
- lsls r0, 16
- cmp r0, 0
- beq _080F4CF2
- movs r1, 0x80
- lsls r1, 1
- movs r0, 0x14
- bl SetGpuReg
- b _080F4D50
-_080F4CF2:
- movs r0, 0x14
- movs r1, 0
- bl SetGpuReg
- b _080F4D50
-_080F4CFC:
- bl sub_80F5018
- b _080F4D50
-_080F4D02:
- movs r0, 0
- bl CopyBgTilemapBufferToVram
- movs r0, 0x1
- bl CopyBgTilemapBufferToVram
- b _080F4D50
-_080F4D10:
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0x10
- movs r3, 0
- bl BeginNormalPaletteFade
- b _080F4D50
-_080F4D22:
- ldr r0, _080F4D2C @ =sub_80F4BFC
- bl SetVBlankCallback
- b _080F4D50
- .align 2, 0
-_080F4D2C: .4byte sub_80F4BFC
-_080F4D30:
- ldr r0, _080F4D64 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- bne _080F4D50
- movs r0, 0x5
- bl PlayFanfareByFanfareNum
- ldr r0, _080F4D68 @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r0
- ldr r0, _080F4D6C @ =sub_80F4D74
- str r0, [r1]
-_080F4D50:
- ldr r0, _080F4D70 @ =gUnknown_203AB48
- ldr r1, [r0]
- ldrb r0, [r1, 0x2]
- adds r0, 0x1
- strb r0, [r1, 0x2]
-_080F4D5A:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4D64: .4byte gPaletteFade
-_080F4D68: .4byte gTasks
-_080F4D6C: .4byte sub_80F4D74
-_080F4D70: .4byte gUnknown_203AB48
- thumb_func_end sub_80F4C68
-
- thumb_func_start sub_80F4D74
-sub_80F4D74: @ 80F4D74
- push {r4,lr}
- sub sp, 0x4
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r4, _080F4D90 @ =gUnknown_203AB48
- ldr r0, [r4]
- ldrb r1, [r0]
- cmp r1, 0x1
- beq _080F4DA8
- cmp r1, 0x1
- bgt _080F4D94
- cmp r1, 0
- beq _080F4D9A
- b _080F4DD6
- .align 2, 0
-_080F4D90: .4byte gUnknown_203AB48
-_080F4D94:
- cmp r1, 0x2
- beq _080F4DD0
- b _080F4DD6
-_080F4D9A:
- movs r0, 0
- bl WaitFanfare
- lsls r0, 24
- cmp r0, 0
- beq _080F4DD6
- b _080F4DC2
-_080F4DA8:
- ldr r0, _080F4DCC @ =gMain
- ldrh r0, [r0, 0x2E]
- ands r1, r0
- cmp r1, 0
- beq _080F4DD6
- movs r0, 0x1
- negs r0, r0
- movs r1, 0
- str r1, [sp]
- movs r2, 0
- movs r3, 0x10
- bl BeginNormalPaletteFade
-_080F4DC2:
- ldr r1, [r4]
- ldrb r0, [r1]
- adds r0, 0x1
- strb r0, [r1]
- b _080F4DD6
- .align 2, 0
-_080F4DCC: .4byte gMain
-_080F4DD0:
- adds r0, r2, 0
- bl sub_80F4DE0
-_080F4DD6:
- add sp, 0x4
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_80F4D74
-
- thumb_func_start sub_80F4DE0
-sub_80F4DE0: @ 80F4DE0
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r2, r0, 24
- ldr r0, _080F4E18 @ =gPaletteFade
- ldrb r1, [r0, 0x7]
- movs r0, 0x80
- ands r0, r1
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- bne _080F4E10
- adds r0, r2, 0
- bl DestroyTask
- bl FreeAllWindowBuffers
- ldr r4, _080F4E1C @ =gUnknown_203AB48
- ldr r0, [r4]
- bl Free
- str r5, [r4]
- ldr r0, _080F4E20 @ =sub_80568FC
- bl SetMainCallback2
-_080F4E10:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4E18: .4byte gPaletteFade
-_080F4E1C: .4byte gUnknown_203AB48
-_080F4E20: .4byte sub_80568FC
- thumb_func_end sub_80F4DE0
-
- thumb_func_start sub_80F4E24
-sub_80F4E24: @ 80F4E24
- push {lr}
- bl ResetSpriteData
- bl ResetPaletteFade
- bl FreeAllSpritePalettes
- bl ResetTasks
- bl ScanlineEffect_Stop
- pop {r0}
- bx r0
- thumb_func_end sub_80F4E24
-
- thumb_func_start sub_80F4E40
-sub_80F4E40: @ 80F4E40
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x10
- movs r3, 0xC0
- lsls r3, 19
- movs r4, 0xC0
- lsls r4, 9
- add r0, sp, 0xC
- mov r8, r0
- add r2, sp, 0x8
- movs r6, 0
- ldr r1, _080F4F88 @ =0x040000d4
- movs r5, 0x80
- lsls r5, 5
- ldr r7, _080F4F8C @ =0x81000800
- movs r0, 0x81
- lsls r0, 24
- mov r12, r0
-_080F4E66:
- strh r6, [r2]
- add r0, sp, 0x8
- 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 _080F4E66
- strh r6, [r2]
- add r2, sp, 0x8
- 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, 0xC]
- ldr r2, _080F4F88 @ =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
- add r0, sp, 0x8
- 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, 0
- bl ResetBgsAndClearDma3BusyFlags
- ldr r1, _080F4F90 @ =gUnknown_8415A08
- movs r0, 0
- movs r2, 0x2
- bl InitBgsFromTemplates
- 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
- ldr r0, _080F4F94 @ =gUnknown_8415A10
- bl InitWindows
- bl DeactivateAllTextPrinters
- movs r1, 0x82
- lsls r1, 5
- movs r0, 0
- bl SetGpuReg
- ldr r0, _080F4F98 @ =gUnknown_203AB48
- ldr r1, [r0]
- adds r1, 0x4
- movs r0, 0x1
- bl SetBgTilemapBuffer
- movs r0, 0
- bl ShowBg
- movs r0, 0x1
- bl ShowBg
- movs r5, 0x1E
- str r5, [sp]
- movs r4, 0x14
- str r4, [sp, 0x4]
- movs r0, 0
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- str r5, [sp]
- str r4, [sp, 0x4]
- movs r0, 0x1
- movs r1, 0
- movs r2, 0
- movs r3, 0
- bl FillBgTilemapBufferRect_Palette0
- add sp, 0x10
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_080F4F88: .4byte 0x040000d4
-_080F4F8C: .4byte 0x81000800
-_080F4F90: .4byte gUnknown_8415A08
-_080F4F94: .4byte gUnknown_8415A10
-_080F4F98: .4byte gUnknown_203AB48
- thumb_func_end sub_80F4E40
-
- thumb_func_start sub_80F4F9C
-sub_80F4F9C: @ 80F4F9C
- push {lr}
- sub sp, 0x4
- ldr r0, _080F4FB4 @ =gUnknown_203AB48
- ldr r0, [r0]
- ldrb r0, [r0, 0x1]
- cmp r0, 0x1
- beq _080F4FC8
- cmp r0, 0x1
- bgt _080F4FB8
- cmp r0, 0
- beq _080F4FC2
- b _080F4FF8
- .align 2, 0
-_080F4FB4: .4byte gUnknown_203AB48
-_080F4FB8:
- cmp r0, 0x2
- beq _080F4FE0
- cmp r0, 0x3
- beq _080F4FEE
- b _080F4FF8
-_080F4FC2:
- bl ResetTempTileDataBuffers
- b _080F5000
-_080F4FC8:
- ldr r1, _080F4FDC @ =gUnknown_84147C0
- movs r0, 0
- str r0, [sp]
- movs r0, 0x1
- movs r2, 0
- movs r3, 0
- bl DecompressAndCopyTileDataToVram
- b _080F5000
- .align 2, 0
-_080F4FDC: .4byte gUnknown_84147C0
-_080F4FE0:
- bl FreeTempTileDataBuffersIfPossible
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _080F5000
- b _080F500A
-_080F4FEE:
- ldr r0, _080F4FFC @ =gUnknown_8415954
- movs r1, 0
- movs r2, 0x40
- bl LoadPalette
-_080F4FF8:
- movs r0, 0x1
- b _080F500C
- .align 2, 0
-_080F4FFC: .4byte gUnknown_8415954
-_080F5000:
- ldr r0, _080F5014 @ =gUnknown_203AB48
- ldr r1, [r0]
- ldrb r0, [r1, 0x1]
- adds r0, 0x1
- strb r0, [r1, 0x1]
-_080F500A:
- movs r0, 0
-_080F500C:
- add sp, 0x4
- pop {r1}
- bx r1
- .align 2, 0
-_080F5014: .4byte gUnknown_203AB48
- thumb_func_end sub_80F4F9C
-
- thumb_func_start sub_80F5018
-sub_80F5018: @ 80F5018
- push {r4-r6,lr}
- sub sp, 0xAC
- bl DynamicPlaceholderTextUtil_Reset
- ldr r0, _080F5040 @ =gSaveBlock2Ptr
- ldr r1, [r0]
- movs r0, 0
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- bl sub_8088F84
- lsls r0, 16
- cmp r0, 0
- beq _080F5048
- ldr r1, _080F5044 @ =gUnknown_841B68F
- movs r0, 0x1
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
- b _080F5050
- .align 2, 0
-_080F5040: .4byte gSaveBlock2Ptr
-_080F5044: .4byte gUnknown_841B68F
-_080F5048:
- ldr r1, _080F50E0 @ =gUnknown_841B698
- movs r0, 0x1
- bl DynamicPlaceholderTextUtil_SetPlaceholderPtr
-_080F5050:
- movs r0, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- ldr r1, _080F50E4 @ =gUnknown_841B60E
- add r0, sp, 0xC
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- movs r5, 0x1
- negs r5, r5
- movs r0, 0x2
- add r1, sp, 0xC
- adds r2, r5, 0
- bl GetStringWidth
- lsrs r2, r0, 1
- movs r4, 0x78
- subs r2, r4, r2
- lsls r2, 24
- lsrs r2, 24
- ldr r6, _080F50E8 @ =gUnknown_8415A04
- str r6, [sp]
- str r5, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- movs r3, 0x4
- bl AddTextPrinterParameterized3
- ldr r1, _080F50EC @ =gUnknown_841B619
- add r0, sp, 0xC
- bl DynamicPlaceholderTextUtil_ExpandPlaceholders
- movs r0, 0x2
- add r1, sp, 0xC
- adds r2, r5, 0
- bl GetStringWidth
- lsrs r0, 1
- subs r4, r0
- lsls r4, 24
- lsrs r4, 24
- str r6, [sp]
- str r5, [sp, 0x4]
- add r0, sp, 0xC
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- adds r2, r4, 0
- movs r3, 0x1E
- bl AddTextPrinterParameterized3
- str r6, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- ldr r0, _080F50F0 @ =gUnknown_841B684
- str r0, [sp, 0x8]
- movs r0, 0
- movs r1, 0x2
- movs r2, 0x78
- movs r3, 0x69
- bl AddTextPrinterParameterized3
- movs r0, 0
- bl PutWindowTilemap
- add sp, 0xAC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_080F50E0: .4byte gUnknown_841B698
-_080F50E4: .4byte gUnknown_841B60E
-_080F50E8: .4byte gUnknown_8415A04
-_080F50EC: .4byte gUnknown_841B619
-_080F50F0: .4byte gUnknown_841B684
- thumb_func_end sub_80F5018
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/field_specials.s b/asm/field_specials.s
index c1555f2bb..4c37e0638 100644
--- a/asm/field_specials.s
+++ b/asm/field_specials.s
@@ -9,13 +9,13 @@
sub_80CA618: @ 80CA618
push {lr}
bl sub_8112364
- ldr r0, _080CA62C @ =sub_80F4C10
+ ldr r0, _080CA62C @ =CB2_ShowDiploma
bl SetMainCallback2
bl ScriptContext2_Enable
pop {r0}
bx r0
.align 2, 0
-_080CA62C: .4byte sub_80F4C10
+_080CA62C: .4byte CB2_ShowDiploma
thumb_func_end sub_80CA618
thumb_func_start sub_80CA630
@@ -2076,7 +2076,7 @@ sub_80CB580: @ 80CB580
movs r1, 0
adds r2, r5, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldrb r0, [r4]
ldr r2, _080CB630 @ =gUnknown_8418075
movs r1, 0x2
@@ -2141,7 +2141,7 @@ sub_80CB63C: @ 80CB63C
ldr r4, _080CB654 @ =gUnknown_2039A0C
ldrb r0, [r4]
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl RemoveWindow
pop {r4}
@@ -2862,7 +2862,7 @@ sub_80CBBAC: @ 80CBBAC
lsls r0, 24
lsrs r0, 24
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrh r0, [r4, 0x22]
lsls r0, 24
lsrs r0, 24
diff --git a/asm/hall_of_fame.s b/asm/hall_of_fame.s
index 4d861b902..19ff62664 100644
--- a/asm/hall_of_fame.s
+++ b/asm/hall_of_fame.s
@@ -1607,7 +1607,7 @@ sub_80F2AA4: @ 80F2AA4
movs r1, 0x1E
movs r2, 0
movs r3, 0xC
- bl CreateWindow_SnapRight_StdPal
+ bl CreateTopBarWindowLoadPalette
movs r0, 0x3
bl Save_LoadGameData
lsls r0, 24
@@ -1894,7 +1894,7 @@ _080F2CB4:
adds r0, r5, 0
movs r2, 0
movs r3, 0
- bl Menu_PrintHelpSystemUIHeader
+ bl TopBarWindowPrintTwoStrings
b _080F2D34
.align 2, 0
_080F2D08: .4byte 0xffff0000
@@ -1911,7 +1911,7 @@ _080F2D24:
adds r0, r5, 0
movs r2, 0
movs r3, 0
- bl Menu_PrintHelpSystemUIHeader
+ bl TopBarWindowPrintTwoStrings
_080F2D34:
ldr r0, _080F2D58 @ =gTasks
ldr r1, [sp, 0x14]
@@ -2298,7 +2298,7 @@ sub_80F3030: @ 80F3030
bl HideBg
movs r0, 0x3
bl HideBg
- bl sub_810F740
+ bl DestroyTopBarWindow
bl FreeAllWindowBuffers
movs r0, 0x1
bl UnsetBgTilemapBuffer
@@ -2342,7 +2342,7 @@ sub_80F30A4: @ 80F30A4
ldr r0, _080F30FC @ =gText_ABUTTONExit
movs r1, 0x8
movs r2, 0x1
- bl PrintTextOnRightSnappedWindow
+ bl TopBarWindowPrintString
movs r0, 0
movs r1, 0
bl DrawDialogueFrame
@@ -2750,7 +2750,7 @@ sub_80F33DC: @ 80F33DC
movs r0, 0x1
movs r1, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
movs r7, 0
str r7, [sp]
str r7, [sp, 0x4]
diff --git a/asm/item_menu.s b/asm/item_menu.s
index 8d01691a5..e85f63872 100644
--- a/asm/item_menu.s
+++ b/asm/item_menu.s
@@ -3715,7 +3715,7 @@ _08109AD4:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x6
movs r1, 0
bl sub_810B9DC
@@ -3791,7 +3791,7 @@ sub_8109BE4: @ 8109BE4
lsrs r0, 24
cmp r0, 0x1
beq _08109C42
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
@@ -6507,7 +6507,7 @@ _0810B290:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
+ bl Menu_MoveCursorNoWrapAround
b _0810B36C
_0810B29E:
movs r0, 0x5
diff --git a/asm/link_rfu_3.s b/asm/link_rfu_3.s
index 78c09b0ff..d4a88c18f 100644
--- a/asm/link_rfu_3.s
+++ b/asm/link_rfu_3.s
@@ -8586,7 +8586,7 @@ _0811A168:
_0811A174:
cmp r5, 0
beq _0811A186
- bl sub_81100E8
+ bl DestroyYesNoMenu
movs r0, 0
strb r0, [r4]
movs r0, 0x3
diff --git a/asm/mailbox_pc.s b/asm/mailbox_pc.s
index e41fb23c1..7e792681f 100644
--- a/asm/mailbox_pc.s
+++ b/asm/mailbox_pc.s
@@ -81,7 +81,7 @@ sub_810EBE0: @ 810EBE0
adds r4, r0
ldrb r0, [r4]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl ClearWindowTilemap
ldrb r0, [r4]
diff --git a/asm/menu.s b/asm/menu.s
deleted file mode 100644
index c8e823fc1..000000000
--- a/asm/menu.s
+++ /dev/null
@@ -1,3455 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start DrawDialogFrameWithCustomTileAndPalette
-DrawDialogFrameWithCustomTileAndPalette: @ 810EDC4
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810EE00 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r0, _0810EE04 @ =gUnknown_203ADF2
- strb r3, [r0]
- ldr r1, _0810EE08 @ =sub_810EE5C
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810EDFA
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810EDFA:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EE00: .4byte gUnknown_203ADF0
-_0810EE04: .4byte gUnknown_203ADF2
-_0810EE08: .4byte sub_810EE5C
- thumb_func_end DrawDialogFrameWithCustomTileAndPalette
-
- thumb_func_start sub_810EE0C
-sub_810EE0C: @ 810EE0C
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810EE50 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r5, _0810EE54 @ =gUnknown_203ADF2
- adds r0, r6, 0
- movs r1, 0x5
- bl GetWindowAttribute
- strb r0, [r5]
- ldr r1, _0810EE58 @ =sub_810EE5C
- adds r0, r6, 0
- bl CallWindowFunction
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r6, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810EE4A
- adds r0, r6, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810EE4A:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810EE50: .4byte gUnknown_203ADF0
-_0810EE54: .4byte gUnknown_203ADF2
-_0810EE58: .4byte sub_810EE5C
- thumb_func_end sub_810EE0C
-
- thumb_func_start sub_810EE5C
-sub_810EE5C: @ 810EE5C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- adds r6, r0, 0
- adds r5, r2, 0
- lsls r6, 24
- lsrs r6, 24
- lsls r0, r1, 24
- lsls r5, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- ldr r1, _0810F228 @ =gUnknown_203ADF0
- mov r9, r1
- ldrh r1, [r1]
- lsrs r2, r0, 24
- str r2, [sp, 0xC]
- movs r3, 0xFE
- lsls r3, 24
- adds r2, r0, r3
- lsrs r2, 24
- str r2, [sp, 0x14]
- lsrs r0, r5, 24
- mov r10, r0
- movs r2, 0xFF
- lsls r2, 24
- adds r5, r2
- lsrs r5, 24
- movs r4, 0x1
- str r4, [sp]
- str r4, [sp, 0x4]
- ldr r3, _0810F22C @ =gUnknown_203ADF2
- mov r8, r3
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r0, r9
- ldrh r1, [r0]
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- subs r0, 0x1
- lsls r2, r0, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x2
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0xC]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x3
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- ldr r2, [sp, 0x10]
- adds r7, r0, r2
- lsls r2, r7, 24
- lsrs r2, 24
- str r2, [sp, 0x1C]
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r0, r9
- ldrh r1, [r0]
- adds r1, 0x4
- lsls r1, 16
- lsrs r1, 16
- adds r0, r7, 0x1
- lsls r2, r0, 24
- lsrs r7, r2, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x5
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x6
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x8
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0x9
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- mov r3, r10
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xA
- lsls r1, 16
- lsrs r1, 16
- mov r5, r10
- adds r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xB
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xC
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- mov r3, r9
- ldrh r1, [r3]
- adds r1, 0xD
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F230 @ =0x0000080a
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- mov r5, r10
- adds r5, 0x2
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F234 @ =0x0000080b
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F238 @ =0x0000080c
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F23C @ =0x0000080d
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F240 @ =0x00000805
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- mov r5, r10
- adds r5, 0x3
- lsls r5, 24
- lsrs r5, 24
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F244 @ =0x00000806
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F248 @ =0x00000808
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- ldr r3, _0810F24C @ =0x00000809
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- movs r3, 0x80
- lsls r3, 4
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- movs r2, 0x4
- add r10, r2
- mov r3, r10
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x14]
- bl FillBgTilemapBufferRect
- ldr r3, _0810F250 @ =0x00000801
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r2, r8
- ldrb r0, [r2]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x18]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r3, _0810F254 @ =0x00000802
- adds r1, r3, 0
- mov r0, r9
- ldrh r0, [r0]
- adds r1, r0
- lsls r1, 16
- lsrs r1, 16
- ldr r2, [sp, 0x10]
- str r2, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0xC]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r0, _0810F258 @ =0x00000803
- adds r1, r0, 0
- mov r2, r9
- ldrh r2, [r2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- ldr r2, [sp, 0x1C]
- mov r3, r10
- bl FillBgTilemapBufferRect
- ldr r0, _0810F25C @ =0x00000804
- adds r1, r0, 0
- mov r2, r9
- ldrh r2, [r2]
- adds r1, r2
- lsls r1, 16
- lsrs r1, 16
- str r4, [sp]
- str r4, [sp, 0x4]
- mov r3, r8
- ldrb r0, [r3]
- str r0, [sp, 0x8]
- adds r0, r6, 0
- adds r2, r7, 0
- mov r3, r10
- bl FillBgTilemapBufferRect
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F228: .4byte gUnknown_203ADF0
-_0810F22C: .4byte gUnknown_203ADF2
-_0810F230: .4byte 0x0000080a
-_0810F234: .4byte 0x0000080b
-_0810F238: .4byte 0x0000080c
-_0810F23C: .4byte 0x0000080d
-_0810F240: .4byte 0x00000805
-_0810F244: .4byte 0x00000806
-_0810F248: .4byte 0x00000808
-_0810F24C: .4byte 0x00000809
-_0810F250: .4byte 0x00000801
-_0810F254: .4byte 0x00000802
-_0810F258: .4byte 0x00000803
-_0810F25C: .4byte 0x00000804
- thumb_func_end sub_810EE5C
-
- thumb_func_start ClearMenuWindow_BorderThickness2
-ClearMenuWindow_BorderThickness2: @ 810F260
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0810F294 @ =sub_810F298
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _0810F28E
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F28E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F294: .4byte sub_810F298
- thumb_func_end ClearMenuWindow_BorderThickness2
-
- thumb_func_start sub_810F298
-sub_810F298: @ 810F298
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFE
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0x80
- lsls r2, 19
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- movs r2, 0x80
- lsls r2, 18
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810F298
-
- thumb_func_start SetWindowBorderStyle
-SetWindowBorderStyle: @ 810F2E8
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810F324 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r0, _0810F328 @ =gUnknown_203ADF2
- strb r3, [r0]
- ldr r1, _0810F32C @ =DrawWindowBorder
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810F31E
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F31E:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F324: .4byte gUnknown_203ADF0
-_0810F328: .4byte gUnknown_203ADF2
-_0810F32C: .4byte DrawWindowBorder
- thumb_func_end SetWindowBorderStyle
-
- thumb_func_start sub_810F330
-sub_810F330: @ 810F330
- push {r4-r6,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r0, _0810F374 @ =gUnknown_203ADF0
- strh r2, [r0]
- ldr r5, _0810F378 @ =gUnknown_203ADF2
- adds r0, r6, 0
- movs r1, 0x5
- bl GetWindowAttribute
- strb r0, [r5]
- ldr r1, _0810F37C @ =DrawWindowBorder
- adds r0, r6, 0
- bl CallWindowFunction
- adds r0, r6, 0
- movs r1, 0x11
- bl FillWindowPixelBuffer
- adds r0, r6, 0
- bl PutWindowTilemap
- cmp r4, 0x1
- bne _0810F36E
- adds r0, r6, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F36E:
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F374: .4byte gUnknown_203ADF0
-_0810F378: .4byte gUnknown_203ADF2
-_0810F37C: .4byte DrawWindowBorder
- thumb_func_end sub_810F330
-
- thumb_func_start DrawWindowBorder
-DrawWindowBorder: @ 810F380
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- mov r9, r0
- adds r6, r1, 0
- adds r4, r2, 0
- ldr r0, [sp, 0x38]
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r6, 24
- lsls r4, 24
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x10]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x14]
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- lsrs r0, r6, 24
- str r0, [sp, 0xC]
- movs r2, 0xFF
- lsls r2, 24
- adds r6, r2
- lsrs r6, 24
- lsrs r0, r4, 24
- mov r8, r0
- adds r4, r2
- lsrs r4, 24
- movs r5, 0x1
- str r5, [sp]
- str r5, [sp, 0x4]
- ldr r7, _0810F4D4 @ =gUnknown_203ADF2
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x1
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- ldr r2, [sp, 0xC]
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x2
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0xC]
- ldr r2, [sp, 0x10]
- adds r0, r2
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- adds r3, r4, 0
- bl FillBgTilemapBufferRect
- ldr r0, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r0]
- adds r1, 0x3
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- ldr r2, [sp, 0x14]
- str r2, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r0, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r0]
- adds r1, 0x5
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- ldr r2, [sp, 0x14]
- str r2, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r0, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r0]
- adds r1, 0x6
- lsls r1, 16
- lsrs r1, 16
- ldr r2, [sp, 0x14]
- add r8, r2
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- adds r2, r6, 0
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x7
- lsls r1, 16
- lsrs r1, 16
- ldr r0, [sp, 0x10]
- str r0, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- ldr r2, [sp, 0xC]
- mov r3, r8
- bl FillBgTilemapBufferRect
- ldr r2, _0810F4D0 @ =gUnknown_203ADF0
- ldrh r1, [r2]
- adds r1, 0x8
- lsls r1, 16
- lsrs r1, 16
- str r5, [sp]
- str r5, [sp, 0x4]
- ldrb r0, [r7]
- str r0, [sp, 0x8]
- mov r0, r9
- mov r2, r10
- mov r3, r8
- bl FillBgTilemapBufferRect
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F4D0: .4byte gUnknown_203ADF0
-_0810F4D4: .4byte gUnknown_203ADF2
- thumb_func_end DrawWindowBorder
-
- thumb_func_start ClearMenuWindow
-ClearMenuWindow: @ 810F4D8
- push {r4,r5,lr}
- adds r4, r1, 0
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r4, 24
- lsrs r4, 24
- ldr r1, _0810F50C @ =sub_810F510
- adds r0, r5, 0
- bl CallWindowFunction
- adds r0, r5, 0
- movs r1, 0
- bl FillWindowPixelBuffer
- adds r0, r5, 0
- bl ClearWindowTilemap
- cmp r4, 0x1
- bne _0810F506
- adds r0, r5, 0
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F506:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F50C: .4byte sub_810F510
- thumb_func_end ClearMenuWindow
-
- thumb_func_start sub_810F510
-sub_810F510: @ 810F510
- push {r4,r5,lr}
- sub sp, 0xC
- adds r4, r1, 0
- adds r5, r2, 0
- ldr r1, [sp, 0x18]
- lsls r0, 24
- lsrs r0, 24
- lsls r4, 24
- lsls r5, 24
- lsls r3, 24
- lsls r1, 24
- movs r2, 0xFF
- lsls r2, 24
- adds r4, r2
- lsrs r4, 24
- adds r5, r2
- lsrs r5, 24
- movs r2, 0x80
- lsls r2, 18
- adds r3, r2
- lsrs r3, 24
- str r3, [sp]
- adds r1, r2
- lsrs r1, 24
- str r1, [sp, 0x4]
- movs r1, 0
- str r1, [sp, 0x8]
- adds r2, r4, 0
- adds r3, r5, 0
- bl FillBgTilemapBufferRect
- add sp, 0xC
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_810F510
-
- thumb_func_start CreateWindow_SnapRight_StdPal
-CreateWindow_SnapRight_StdPal: @ 810F558
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x8
- ldr r4, [sp, 0x20]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r2, 24
- mov r8, r2
- lsls r3, 24
- lsrs r5, r3, 24
- lsls r4, 16
- lsrs r4, 16
- mov r0, sp
- movs r1, 0
- movs r2, 0x8
- bl memset
- cmp r6, 0x3
- bls _0810F58E
- movs r1, 0
- mov r0, sp
- strb r1, [r0]
- b _0810F592
-_0810F58E:
- mov r0, sp
- strb r6, [r0]
-_0810F592:
- mov r1, sp
- mov r0, r8
- strb r0, [r1, 0x2]
- movs r0, 0x2
- strb r0, [r1, 0x4]
- movs r0, 0x1E
- subs r0, r7
- strb r0, [r1, 0x1]
- strb r7, [r1, 0x3]
- strb r5, [r1, 0x5]
- strh r4, [r1, 0x6]
- ldr r4, _0810F5BC @ =gUnknown_203ADF4
- mov r0, sp
- bl AddWindow
- strb r0, [r4]
- cmp r5, 0xF
- bls _0810F5C0
- movs r5, 0xF0
- b _0810F5C4
- .align 2, 0
-_0810F5BC: .4byte gUnknown_203ADF4
-_0810F5C0:
- lsls r0, r5, 28
- lsrs r5, r0, 24
-_0810F5C4:
- movs r0, 0x2
- bl stdpal_get
- adds r1, r5, 0
- movs r2, 0x20
- bl LoadPalette
- ldr r0, _0810F5E4 @ =gUnknown_203ADF4
- ldrb r0, [r0]
- add sp, 0x8
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810F5E4: .4byte gUnknown_203ADF4
- thumb_func_end CreateWindow_SnapRight_StdPal
-
- thumb_func_start PrintTextOnRightSnappedWindow
-PrintTextOnRightSnappedWindow: @ 810F5E8
- push {r4-r6,lr}
- sub sp, 0xC
- adds r5, r0, 0
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r4, _0810F648 @ =gUnknown_203ADF4
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0810F63E
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0
- bl GetStringWidth
- ldrb r1, [r4]
- movs r3, 0x14
- negs r3, r3
- adds r2, r3, 0
- subs r2, r0
- lsls r2, 24
- lsrs r2, 24
- ldr r0, _0810F64C @ =gUnknown_8456618
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0
- movs r3, 0x1
- bl AddTextPrinterParameterized3
- cmp r6, 0
- beq _0810F63E
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F63E:
- add sp, 0xC
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F648: .4byte gUnknown_203ADF4
-_0810F64C: .4byte gUnknown_8456618
- thumb_func_end PrintTextOnRightSnappedWindow
-
- thumb_func_start Menu_PrintHelpSystemUIHeader
-Menu_PrintHelpSystemUIHeader: @ 810F650
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0x18
- mov r8, r0
- adds r5, r1, 0
- ldr r0, [sp, 0x30]
- lsls r2, 24
- lsrs r2, 24
- lsls r0, 24
- lsrs r7, r0, 24
- ldr r0, _0810F67C @ =gUnknown_203ADF4
- ldrb r1, [r0]
- adds r6, r0, 0
- cmp r1, 0xFF
- beq _0810F6F6
- cmp r2, 0
- beq _0810F680
- add r1, sp, 0x14
- movs r0, 0
- b _0810F684
- .align 2, 0
-_0810F67C: .4byte gUnknown_203ADF4
-_0810F680:
- add r1, sp, 0x14
- movs r0, 0xF
-_0810F684:
- strb r0, [r1]
- movs r0, 0x1
- strb r0, [r1, 0x1]
- movs r0, 0x2
- strb r0, [r1, 0x2]
- adds r4, r6, 0
- ldrb r0, [r4]
- bl PutWindowTilemap
- ldrb r0, [r4]
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- cmp r5, 0
- beq _0810F6CE
- movs r0, 0
- adds r1, r5, 0
- movs r2, 0
- bl GetStringWidth
- ldrb r1, [r4]
- movs r3, 0x14
- negs r3, r3
- adds r2, r3, 0
- subs r2, r0
- lsls r2, 24
- lsrs r2, 24
- add r0, sp, 0x14
- str r0, [sp]
- movs r0, 0
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r1, 0
- movs r1, 0
- movs r3, 0x1
- bl AddTextPrinterParameterized3
-_0810F6CE:
- ldrb r0, [r6]
- movs r1, 0
- str r1, [sp]
- str r1, [sp, 0x4]
- add r2, sp, 0x14
- str r2, [sp, 0x8]
- str r1, [sp, 0xC]
- mov r3, r8
- str r3, [sp, 0x10]
- movs r1, 0x1
- movs r2, 0x4
- movs r3, 0x1
- bl AddTextPrinterParameterized4
- cmp r7, 0
- beq _0810F6F6
- ldrb r0, [r6]
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F6F6:
- add sp, 0x18
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end Menu_PrintHelpSystemUIHeader
-
- thumb_func_start sub_810F704
-sub_810F704: @ 810F704
- push {lr}
- ldr r1, _0810F718 @ =gUnknown_203ADF4
- ldrb r0, [r1]
- cmp r0, 0xFF
- beq _0810F714
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F714:
- pop {r0}
- bx r0
- .align 2, 0
-_0810F718: .4byte gUnknown_203ADF4
- thumb_func_end sub_810F704
-
- thumb_func_start sub_810F71C
-sub_810F71C: @ 810F71C
- push {r4,lr}
- ldr r4, _0810F73C @ =gUnknown_203ADF4
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0810F734
- movs r1, 0xFF
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
-_0810F734:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F73C: .4byte gUnknown_203ADF4
- thumb_func_end sub_810F71C
-
- thumb_func_start sub_810F740
-sub_810F740: @ 810F740
- push {r4,lr}
- ldr r4, _0810F770 @ =gUnknown_203ADF4
- ldrb r0, [r4]
- cmp r0, 0xFF
- beq _0810F768
- movs r1, 0
- bl FillWindowPixelBuffer
- ldrb r0, [r4]
- bl ClearWindowTilemap
- ldrb r0, [r4]
- movs r1, 0x3
- bl CopyWindowToVram
- ldrb r0, [r4]
- bl RemoveWindow
- movs r0, 0xFF
- strb r0, [r4]
-_0810F768:
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F770: .4byte gUnknown_203ADF4
- thumb_func_end sub_810F740
-
- thumb_func_start sub_810F774
-sub_810F774: @ 810F774
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- ldr r4, [sp, 0x18]
- mov r8, r4
- ldr r4, [sp, 0x1C]
- ldr r5, [sp, 0x20]
- ldr r6, [sp, 0x24]
- mov r12, r6
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r7, r5, 24
- ldr r5, _0810F7B8 @ =gUnknown_203ADE4
- movs r6, 0
- strb r2, [r5]
- strb r3, [r5, 0x1]
- strb r6, [r5, 0x3]
- subs r4, 0x1
- strb r4, [r5, 0x4]
- strb r0, [r5, 0x5]
- strb r1, [r5, 0x6]
- mov r0, r8
- strb r0, [r5, 0x8]
- mov r4, r12
- strb r4, [r5, 0xB]
- cmp r7, 0
- blt _0810F7B4
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r7, r0
- ble _0810F7BC
-_0810F7B4:
- strb r6, [r5, 0x2]
- b _0810F7BE
- .align 2, 0
-_0810F7B8: .4byte gUnknown_203ADE4
-_0810F7BC:
- strb r7, [r5, 0x2]
-_0810F7BE:
- movs r0, 0
- bl MoveMenuCursor
- ldr r0, _0810F7D4 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0810F7D4: .4byte gUnknown_203ADE4
- thumb_func_end sub_810F774
-
- thumb_func_start ProgramAndPlaceMenuCursorOnWindow
-ProgramAndPlaceMenuCursorOnWindow: @ 810F7D8
- push {r4-r6,lr}
- sub sp, 0x10
- ldr r4, [sp, 0x20]
- ldr r5, [sp, 0x24]
- ldr r6, [sp, 0x28]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r6, [sp, 0x8]
- movs r4, 0
- str r4, [sp, 0xC]
- bl sub_810F774
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x10
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProgramAndPlaceMenuCursorOnWindow
-
- thumb_func_start sub_810F818
-sub_810F818: @ 810F818
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- sub sp, 0x14
- mov r8, r0
- adds r6, r1, 0
- ldr r4, [sp, 0x28]
- ldr r5, [sp, 0x2C]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r6, 24
- lsrs r6, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0x1
- str r2, [sp, 0xC]
- str r3, [sp, 0x10]
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r4, [sp, 0x4]
- str r5, [sp, 0x8]
- mov r0, r8
- adds r1, r6, 0
- ldr r2, [sp, 0xC]
- ldr r3, [sp, 0x10]
- bl ProgramAndPlaceMenuCursorOnWindow
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x14
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_810F818
-
- thumb_func_start RedrawMenuCursor
-RedrawMenuCursor: @ 810F874
- push {r4-r6,lr}
- mov r6, r9
- mov r5, r8
- push {r5,r6}
- sub sp, 0xC
- adds r6, r0, 0
- mov r8, r1
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- ldr r5, _0810F8FC @ =gUnknown_203ADE4
- ldrb r0, [r5, 0x6]
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- ldrb r0, [r5, 0x6]
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r5, 0x5]
- mov r9, r1
- ldrb r2, [r5]
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r6
- ldrb r6, [r5, 0x1]
- adds r3, r6
- lsls r3, 16
- lsrs r3, 16
- str r4, [sp]
- str r0, [sp, 0x4]
- mov r0, r9
- movs r1, 0x1
- bl FillWindowPixelRect
- ldrb r0, [r5, 0x5]
- ldrb r1, [r5, 0x6]
- ldr r2, _0810F900 @ =gFameCheckerText_ListMenuCursor
- ldrb r3, [r5]
- ldrb r4, [r5, 0x8]
- mov r6, r8
- muls r6, r4
- adds r4, r6, 0
- ldrb r5, [r5, 0x1]
- adds r4, r5
- lsls r4, 24
- lsrs r4, 24
- str r4, [sp]
- movs r4, 0
- str r4, [sp, 0x4]
- str r4, [sp, 0x8]
- bl AddTextPrinterParameterized
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r6}
- pop {r0}
- bx r0
- .align 2, 0
-_0810F8FC: .4byte gUnknown_203ADE4
-_0810F900: .4byte gFameCheckerText_ListMenuCursor
- thumb_func_end RedrawMenuCursor
-
- thumb_func_start MoveMenuCursor
-MoveMenuCursor: @ 810F904
- push {r4,r5,lr}
- ldr r1, _0810F924 @ =gUnknown_203ADE4
- ldrb r5, [r1, 0x2]
- movs r2, 0x2
- ldrsb r2, [r1, r2]
- lsls r0, 24
- asrs r3, r0, 24
- adds r2, r3
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- adds r4, r1, 0
- cmp r2, r0
- bge _0810F928
- ldrb r0, [r4, 0x4]
- b _0810F936
- .align 2, 0
-_0810F924: .4byte gUnknown_203ADE4
-_0810F928:
- movs r0, 0x4
- ldrsb r0, [r4, r0]
- cmp r2, r0
- ble _0810F934
- ldrb r0, [r4, 0x3]
- b _0810F936
-_0810F934:
- adds r0, r3, r5
-_0810F936:
- strb r0, [r4, 0x2]
- ldrb r1, [r4, 0x2]
- adds r0, r5, 0
- bl RedrawMenuCursor
- ldrb r0, [r4, 0x2]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end MoveMenuCursor
-
- thumb_func_start MoveMenuCursorNoWrapAround
-MoveMenuCursorNoWrapAround: @ 810F948
- push {r4,r5,lr}
- ldr r1, _0810F968 @ =gUnknown_203ADE4
- ldrb r5, [r1, 0x2]
- movs r2, 0x2
- ldrsb r2, [r1, r2]
- lsls r0, 24
- asrs r3, r0, 24
- adds r2, r3
- movs r0, 0x3
- ldrsb r0, [r1, r0]
- adds r4, r1, 0
- cmp r2, r0
- bge _0810F96C
- ldrb r0, [r4, 0x3]
- b _0810F97A
- .align 2, 0
-_0810F968: .4byte gUnknown_203ADE4
-_0810F96C:
- movs r0, 0x4
- ldrsb r0, [r4, r0]
- cmp r2, r0
- ble _0810F978
- ldrb r0, [r4, 0x4]
- b _0810F97A
-_0810F978:
- adds r0, r3, r5
-_0810F97A:
- strb r0, [r4, 0x2]
- ldrb r1, [r4, 0x2]
- adds r0, r5, 0
- bl RedrawMenuCursor
- ldrb r0, [r4, 0x2]
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end MoveMenuCursorNoWrapAround
-
- thumb_func_start GetMenuCursorPos
-GetMenuCursorPos: @ 810F98C
- ldr r0, _0810F994 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- bx lr
- .align 2, 0
-_0810F994: .4byte gUnknown_203ADE4
- thumb_func_end GetMenuCursorPos
-
- thumb_func_start ProcessMenuInput
-ProcessMenuInput: @ 810F998
- push {r4,lr}
- ldr r0, _0810F9BC @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810F9C4
- ldr r4, _0810F9C0 @ =gUnknown_203ADE4
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810F9B4
- movs r0, 0x5
- bl PlaySE
-_0810F9B4:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810F9FE
- .align 2, 0
-_0810F9BC: .4byte gMain
-_0810F9C0: .4byte gUnknown_203ADE4
-_0810F9C4:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810F9D2
- movs r0, 0x1
- negs r0, r0
- b _0810F9FE
-_0810F9D2:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0810F9E6
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0810F9F6
-_0810F9E6:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0810F9FA
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0810F9F6:
- bl MoveMenuCursor
-_0810F9FA:
- movs r0, 0x2
- negs r0, r0
-_0810F9FE:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInput
-
- thumb_func_start ProcessMenuInputNoWrapAround
-ProcessMenuInputNoWrapAround: @ 810FA04
- push {r4-r6,lr}
- ldr r4, _0810FA2C @ =gUnknown_203ADE4
- ldrb r5, [r4, 0x2]
- adds r6, r5, 0
- ldr r0, _0810FA30 @ =gMain
- ldrh r1, [r0, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810FA34
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810FA24
- movs r0, 0x5
- bl PlaySE
-_0810FA24:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810FA7C
- .align 2, 0
-_0810FA2C: .4byte gUnknown_203ADE4
-_0810FA30: .4byte gMain
-_0810FA34:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810FA42
- movs r0, 0x1
- negs r0, r0
- b _0810FA7C
-_0810FA42:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _0810FA5C
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _0810FA78
- b _0810FA72
-_0810FA5C:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _0810FA78
- movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _0810FA78
-_0810FA72:
- movs r0, 0x5
- bl PlaySE
-_0810FA78:
- movs r0, 0x2
- negs r0, r0
-_0810FA7C:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInputNoWrapAround
-
- thumb_func_start ProcessMenuInput_other
-ProcessMenuInput_other: @ 810FA84
- push {r4,lr}
- ldr r2, _0810FAA8 @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810FAB0
- ldr r4, _0810FAAC @ =gUnknown_203ADE4
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810FAA0
- movs r0, 0x5
- bl PlaySE
-_0810FAA0:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810FAE8
- .align 2, 0
-_0810FAA8: .4byte gMain
-_0810FAAC: .4byte gUnknown_203ADE4
-_0810FAB0:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810FABE
- movs r0, 0x1
- negs r0, r0
- b _0810FAE8
-_0810FABE:
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _0810FAD4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0810FAE0
-_0810FAD4:
- cmp r1, 0x80
- bne _0810FAE4
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0810FAE0:
- bl MoveMenuCursor
-_0810FAE4:
- movs r0, 0x2
- negs r0, r0
-_0810FAE8:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInput_other
-
- thumb_func_start ProcessMenuInputNoWrapAround_other
-ProcessMenuInputNoWrapAround_other: @ 810FAF0
- push {r4-r6,lr}
- ldr r4, _0810FB18 @ =gUnknown_203ADE4
- ldrb r5, [r4, 0x2]
- adds r6, r5, 0
- ldr r2, _0810FB1C @ =gMain
- ldrh r1, [r2, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0810FB20
- ldrb r0, [r4, 0xB]
- cmp r0, 0
- bne _0810FB10
- movs r0, 0x5
- bl PlaySE
-_0810FB10:
- movs r0, 0x2
- ldrsb r0, [r4, r0]
- b _0810FB66
- .align 2, 0
-_0810FB18: .4byte gUnknown_203ADE4
-_0810FB1C: .4byte gMain
-_0810FB20:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0810FB2E
- movs r0, 0x1
- negs r0, r0
- b _0810FB66
-_0810FB2E:
- ldrh r0, [r2, 0x30]
- movs r1, 0xF0
- ands r1, r0
- cmp r1, 0x40
- bne _0810FB4A
- movs r0, 0x1
- negs r0, r0
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r5, r0
- beq _0810FB62
- b _0810FB5C
-_0810FB4A:
- cmp r1, 0x80
- bne _0810FB62
- movs r0, 0x1
- bl MoveMenuCursorNoWrapAround
- lsls r0, 24
- lsrs r0, 24
- cmp r6, r0
- beq _0810FB62
-_0810FB5C:
- movs r0, 0x5
- bl PlaySE
-_0810FB62:
- movs r0, 0x2
- negs r0, r0
-_0810FB66:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end ProcessMenuInputNoWrapAround_other
-
- thumb_func_start PrintTextArray
-PrintTextArray: @ 810FB6C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- ldr r4, [sp, 0x2C]
- ldr r5, [sp, 0x30]
- lsls r0, 24
- lsrs r6, r0, 24
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- mov r9, r2
- lsls r3, 24
- lsrs r3, 24
- mov r8, r3
- lsls r4, 24
- lsrs r7, r4, 24
- lsls r5, 24
- lsrs r5, 24
- movs r4, 0
- cmp r4, r5
- bcs _0810FBD0
-_0810FBA0:
- lsls r0, r4, 3
- ldr r1, [sp, 0x34]
- adds r0, r1
- ldr r2, [r0]
- adds r0, r7, 0
- muls r0, r4
- add r0, r8
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r6, 0
- mov r1, r10
- mov r3, r9
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _0810FBA0
-_0810FBD0:
- adds r0, r6, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0xC
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end PrintTextArray
-
- thumb_func_start sub_810FBE8
-sub_810FBE8: @ 810FBE8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- ldr r6, [sp, 0x4C]
- ldr r7, [sp, 0x50]
- mov r8, r7
- lsls r0, 24
- lsrs r7, r0, 24
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x14]
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x18]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x1C]
- lsls r4, 24
- lsrs r4, 24
- mov r10, r4
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- mov r9, r6
- mov r0, r8
- lsls r0, 24
- lsrs r6, r0, 24
- movs r4, 0
- cmp r4, r5
- bcs _0810FC68
-_0810FC30:
- lsls r0, r4, 3
- ldr r1, [sp, 0x48]
- adds r0, r1
- ldr r2, [r0]
- mov r0, r10
- muls r0, r4
- ldr r1, [sp, 0x1C]
- adds r0, r1, r0
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- mov r0, r9
- str r0, [sp, 0xC]
- str r6, [sp, 0x10]
- adds r0, r7, 0
- ldr r1, [sp, 0x14]
- ldr r3, [sp, 0x18]
- bl AddTextPrinterParameterized5
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r5
- bcc _0810FC30
-_0810FC68:
- adds r0, r7, 0
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810FBE8
-
- thumb_func_start sub_810FC80
-sub_810FC80: @ 810FC80
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- sub sp, 0xC
- mov r8, r0
- adds r6, r1, 0
- adds r4, r2, 0
- adds r5, r3, 0
- ldr r7, [sp, 0x24]
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r6, 24
- lsrs r6, 24
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- adds r0, r6, 0
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- adds r2, r0, 0
- lsls r2, 24
- lsrs r2, 24
- str r4, [sp]
- str r5, [sp, 0x4]
- str r7, [sp, 0x8]
- mov r0, r8
- adds r1, r6, 0
- movs r3, 0
- bl PrintTextArray
- add sp, 0xC
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810FC80
-
- thumb_func_start AddItemMenuActionTextPrinters
-AddItemMenuActionTextPrinters: @ 810FCD0
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- adds r6, r1, 0
- mov r8, r2
- ldr r1, [sp, 0x38]
- mov r9, r1
- ldr r1, [sp, 0x3C]
- ldr r2, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- lsls r6, 24
- lsrs r6, 24
- mov r4, r8
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- mov r0, r9
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r7, r2, 24
- mov r0, sp
- ldrb r1, [r0, 0x10]
- strb r1, [r0, 0x4]
- strb r6, [r0, 0x5]
- adds r0, r6, 0
- movs r1, 0x5
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- adds r0, r6, 0
- movs r1, 0x6
- bl GetFontAttribute
- mov r3, sp
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x7
- bl GetFontAttribute
- mov r3, sp
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x4
- bl GetFontAttribute
- mov r1, sp
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- mov r0, sp
- mov r2, r9
- strb r2, [r0, 0xA]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetFontAttribute
- mov r1, sp
- strb r0, [r1, 0xB]
- mov r0, sp
- mov r4, r8
- strb r4, [r0, 0x6]
- strb r4, [r0, 0x8]
- movs r4, 0
- cmp r4, r7
- bcs _0810FDCA
- mov r5, sp
-_0810FD9A:
- ldr r1, [sp, 0x48]
- adds r0, r1, r4
- ldrb r0, [r0]
- lsls r0, 3
- ldr r2, [sp, 0x44]
- adds r0, r2
- ldr r0, [r0]
- str r0, [sp]
- mov r0, r10
- muls r0, r4
- ldr r1, [sp, 0x14]
- adds r0, r1, r0
- strb r0, [r5, 0x7]
- strb r0, [r5, 0x9]
- mov r0, sp
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r7
- bcc _0810FD9A
-_0810FDCA:
- ldr r0, [sp, 0x10]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end AddItemMenuActionTextPrinters
-
- thumb_func_start sub_810FDE4
-sub_810FDE4: @ 810FDE4
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0x14
- mov r9, r0
- adds r4, r1, 0
- adds r6, r2, 0
- mov r8, r3
- ldr r7, [sp, 0x30]
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- lsls r4, 24
- lsrs r4, 24
- lsls r6, 24
- lsrs r6, 24
- mov r0, r8
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- adds r0, r4, 0
- movs r1, 0
- bl GetFontAttribute
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r4, 0
- movs r1, 0x2
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r6, [sp, 0x4]
- mov r0, r8
- str r0, [sp, 0x8]
- str r7, [sp, 0xC]
- ldr r0, [sp, 0x34]
- str r0, [sp, 0x10]
- mov r0, r9
- adds r1, r4, 0
- adds r2, r5, 0
- movs r3, 0
- bl AddItemMenuActionTextPrinters
- add sp, 0x14
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_810FDE4
-
- thumb_func_start SetWindowTemplateFields
-SetWindowTemplateFields: @ 810FE50
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x8
- ldr r4, [sp, 0x28]
- mov r12, r4
- ldr r4, [sp, 0x2C]
- mov r9, r4
- ldr r4, [sp, 0x30]
- mov r10, r4
- ldr r7, [sp, 0x34]
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsls r3, 24
- mov r4, r9
- lsls r4, 24
- lsrs r4, 24
- mov r9, r4
- mov r4, r10
- lsls r4, 24
- mov r10, r4
- ldr r4, _0810FEF0 @ =0xffffff00
- mov r8, r4
- mov r5, r8
- ldr r4, [sp]
- ands r5, r4
- orrs r5, r1
- str r5, [sp]
- lsrs r2, 16
- ldr r6, _0810FEF4 @ =0xffff00ff
- adds r4, r6, 0
- ands r4, r5
- orrs r4, r2
- str r4, [sp]
- lsrs r3, 8
- ldr r1, _0810FEF8 @ =0xff00ffff
- ands r1, r4
- orrs r1, r3
- str r1, [sp]
- mov r2, r12
- lsls r2, 24
- mov r12, r2
- ldr r2, _0810FEFC @ =0x00ffffff
- ands r1, r2
- mov r4, r12
- orrs r4, r1
- str r4, [sp]
- ldr r1, [sp, 0x4]
- mov r2, r8
- ands r1, r2
- mov r4, r9
- orrs r1, r4
- mov r8, r1
- str r1, [sp, 0x4]
- mov r1, r10
- lsrs r1, 16
- mov r2, r8
- ands r6, r2
- orrs r6, r1
- str r6, [sp, 0x4]
- lsls r2, r7, 16
- ldr r1, _0810FF00 @ =0x0000ffff
- ands r6, r1
- orrs r6, r2
- str r6, [sp, 0x4]
- ldr r1, [sp]
- ldr r2, [sp, 0x4]
- str r1, [r0]
- str r2, [r0, 0x4]
- add sp, 0x8
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r2}
- bx r2
- .align 2, 0
-_0810FEF0: .4byte 0xffffff00
-_0810FEF4: .4byte 0xffff00ff
-_0810FEF8: .4byte 0xff00ffff
-_0810FEFC: .4byte 0x00ffffff
-_0810FF00: .4byte 0x0000ffff
- thumb_func_end SetWindowTemplateFields
-
- thumb_func_start sub_810FF04
-sub_810FF04: @ 810FF04
- push {r4-r6,lr}
- sub sp, 0x20
- adds r4, r0, 0
- adds r5, r1, 0
- adds r6, r2, 0
- ldr r0, [sp, 0x30]
- ldr r1, [sp, 0x34]
- ldr r2, [sp, 0x38]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- str r3, [sp]
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- str r2, [sp, 0xC]
- add r0, sp, 0x10
- adds r1, r4, 0
- adds r2, r5, 0
- adds r3, r6, 0
- bl SetWindowTemplateFields
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- str r0, [sp, 0x18]
- str r1, [sp, 0x1C]
- add r0, sp, 0x18
- bl AddWindow
- lsls r0, 16
- lsrs r0, 16
- add sp, 0x20
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_810FF04
-
- thumb_func_start CreateYesNoMenu
-CreateYesNoMenu: @ 810FF60
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- adds r6, r1, 0
- mov r8, r2
- mov r9, r3
- ldr r4, [sp, 0x3C]
- ldr r5, [sp, 0x40]
- ldr r1, [sp, 0x44]
- mov r10, r1
- lsls r6, 24
- lsrs r6, 24
- mov r1, r8
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r4, 16
- lsrs r4, 16
- lsls r5, 24
- lsrs r5, 24
- mov r1, r10
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- ldr r7, _0811009C @ =gUnknown_203ADF3
- bl AddWindow
- strb r0, [r7]
- ldrb r0, [r7]
- movs r1, 0x1
- adds r2, r4, 0
- adds r3, r5, 0
- bl SetWindowBorderStyle
- ldr r0, _081100A0 @ =gUnknown_841623D
- str r0, [sp, 0xC]
- add r1, sp, 0xC
- ldrb r0, [r7]
- strb r0, [r1, 0x4]
- adds r0, r1, 0
- strb r6, [r0, 0x5]
- adds r0, r6, 0
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- add r1, sp, 0xC
- add r0, r8
- strb r0, [r1, 0x6]
- adds r0, r1, 0
- mov r1, r9
- strb r1, [r0, 0x7]
- adds r1, r0, 0
- ldrb r0, [r0, 0x6]
- strb r0, [r1, 0x8]
- adds r0, r1, 0
- ldrb r0, [r0, 0x7]
- strb r0, [r1, 0x9]
- adds r0, r6, 0
- movs r1, 0x5
- bl GetFontAttribute
- add r3, sp, 0xC
- lsls r0, 4
- ldrb r2, [r3, 0xC]
- movs r5, 0xF
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xC]
- adds r0, r6, 0
- movs r1, 0x6
- bl GetFontAttribute
- add r3, sp, 0xC
- adds r1, r5, 0
- ands r1, r0
- ldrb r2, [r3, 0xD]
- movs r4, 0x10
- negs r4, r4
- adds r0, r4, 0
- ands r0, r2
- orrs r0, r1
- strb r0, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x7
- bl GetFontAttribute
- add r3, sp, 0xC
- lsls r0, 4
- ldrb r2, [r3, 0xD]
- adds r1, r5, 0
- ands r1, r2
- orrs r1, r0
- strb r1, [r3, 0xD]
- adds r0, r6, 0
- movs r1, 0x4
- bl GetFontAttribute
- add r1, sp, 0xC
- ands r5, r0
- ldrb r0, [r1, 0xC]
- ands r4, r0
- orrs r4, r5
- strb r4, [r1, 0xC]
- adds r0, r6, 0
- movs r1, 0x2
- bl GetFontAttribute
- add r1, sp, 0xC
- strb r0, [r1, 0xA]
- adds r0, r6, 0
- movs r1, 0x3
- bl GetFontAttribute
- add r1, sp, 0xC
- strb r0, [r1, 0xB]
- adds r0, r1, 0
- movs r1, 0xFF
- movs r2, 0
- bl AddTextPrinter
- adds r0, r6, 0
- movs r1, 0x1
- bl GetFontAttribute
- add r1, sp, 0xC
- ldrb r1, [r1, 0xB]
- adds r0, r1
- lsls r0, 24
- lsrs r0, 24
- ldrb r1, [r7]
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- mov r0, r10
- str r0, [sp, 0x8]
- adds r0, r1, 0
- adds r1, r6, 0
- mov r2, r8
- mov r3, r9
- bl ProgramAndPlaceMenuCursorOnWindow
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0811009C: .4byte gUnknown_203ADF3
-_081100A0: .4byte gUnknown_841623D
- thumb_func_end CreateYesNoMenu
-
- thumb_func_start sub_81100A4
-sub_81100A4: @ 81100A4
- push {lr}
- sub sp, 0xC
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 16
- lsrs r2, 16
- lsls r3, 24
- lsrs r3, 24
- str r2, [sp]
- str r3, [sp, 0x4]
- movs r2, 0
- str r2, [sp, 0x8]
- movs r3, 0
- bl CreateYesNoMenu
- add sp, 0xC
- pop {r0}
- bx r0
- thumb_func_end sub_81100A4
-
- thumb_func_start Menu_ProcessInputNoWrapClearOnChoose
-Menu_ProcessInputNoWrapClearOnChoose: @ 81100C8
- push {r4,lr}
- bl ProcessMenuInputNoWrapAround
- lsls r0, 24
- asrs r4, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r4, r0
- beq _081100DE
- bl sub_81100E8
-_081100DE:
- adds r0, r4, 0
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end Menu_ProcessInputNoWrapClearOnChoose
-
- thumb_func_start sub_81100E8
-sub_81100E8: @ 81100E8
- push {r4,lr}
- ldr r4, _08110100 @ =gUnknown_203ADF3
- ldrb r0, [r4]
- movs r1, 0x1
- bl ClearMenuWindow
- ldrb r0, [r4]
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- .align 2, 0
-_08110100: .4byte gUnknown_203ADF3
- thumb_func_end sub_81100E8
-
- thumb_func_start sub_8110104
-sub_8110104: @ 8110104
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x20
- ldr r4, [sp, 0x40]
- ldr r5, [sp, 0x44]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- lsls r4, 24
- lsrs r6, r4, 24
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x18]
- mov r0, r9
- movs r1, 0
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- mov r10, r0
- mov r0, r9
- movs r1, 0x1
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0x10
- subs r1, r0
- lsrs r0, r1, 31
- adds r1, r0
- asrs r1, 1
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x1C]
- movs r5, 0
- b _081101B8
-_08110164:
- movs r4, 0
- adds r1, r5, 0x1
- mov r8, r1
- cmp r4, r6
- bcs _081101B2
- ldr r1, [sp, 0x14]
- adds r0, r1, 0
- muls r0, r5
- ldr r1, [sp, 0x1C]
- adds r0, r1, r0
- lsls r0, 24
- lsrs r7, r0, 24
-_0811017C:
- adds r0, r5, 0
- muls r0, r6
- adds r0, r4
- lsls r0, 3
- ldr r1, [sp, 0x48]
- adds r0, r1
- ldr r2, [r0]
- ldr r0, [sp, 0x10]
- adds r3, r0, 0
- muls r3, r4
- add r3, r10
- lsls r3, 24
- lsrs r3, 24
- str r7, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- ldr r0, [sp, 0xC]
- mov r1, r9
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _0811017C
-_081101B2:
- mov r1, r8
- lsls r0, r1, 24
- lsrs r5, r0, 24
-_081101B8:
- ldr r0, [sp, 0x18]
- cmp r5, r0
- bcc _08110164
- ldr r0, [sp, 0xC]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x20
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_8110104
-
- thumb_func_start sub_81101D8
-sub_81101D8: @ 81101D8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x1C
- ldr r4, [sp, 0x3C]
- ldr r5, [sp, 0x40]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0xC]
- lsls r1, 24
- lsrs r1, 24
- mov r10, r1
- lsls r2, 24
- lsrs r2, 24
- str r2, [sp, 0x10]
- lsls r3, 24
- lsrs r3, 24
- str r3, [sp, 0x14]
- lsls r4, 24
- lsrs r6, r4, 24
- lsls r5, 24
- lsrs r5, 24
- str r5, [sp, 0x18]
- mov r0, r10
- movs r1, 0
- bl GetFontAttribute
- lsls r0, 24
- lsrs r0, 24
- mov r9, r0
- movs r5, 0
- b _08110272
-_0811021C:
- movs r4, 0
- adds r1, r5, 0x1
- mov r8, r1
- cmp r4, r6
- bcs _0811026C
- ldr r1, [sp, 0x14]
- adds r0, r1, 0
- muls r0, r5
- lsls r0, 24
- lsrs r7, r0, 24
-_08110230:
- adds r0, r5, 0
- muls r0, r6
- adds r0, r4
- ldr r1, [sp, 0x48]
- adds r0, r1, r0
- ldrb r0, [r0]
- lsls r0, 3
- ldr r1, [sp, 0x44]
- adds r0, r1
- ldr r2, [r0]
- ldr r0, [sp, 0x10]
- adds r3, r0, 0
- muls r3, r4
- add r3, r9
- lsls r3, 24
- lsrs r3, 24
- str r7, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- ldr r0, [sp, 0xC]
- mov r1, r10
- bl AddTextPrinterParameterized
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, r6
- bcc _08110230
-_0811026C:
- mov r1, r8
- lsls r0, r1, 24
- lsrs r5, r0, 24
-_08110272:
- ldr r0, [sp, 0x18]
- cmp r5, r0
- bcc _0811021C
- ldr r0, [sp, 0xC]
- movs r1, 0x2
- bl CopyWindowToVram
- add sp, 0x1C
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r0}
- bx r0
- thumb_func_end sub_81101D8
-
- thumb_func_start sub_8110290
-sub_8110290: @ 8110290
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- ldr r4, [sp, 0x20]
- mov r12, r4
- ldr r4, [sp, 0x24]
- mov r8, r4
- ldr r4, [sp, 0x28]
- mov r9, r4
- ldr r4, [sp, 0x2C]
- mov r10, r4
- ldr r4, [sp, 0x30]
- ldr r5, [sp, 0x34]
- lsls r4, 24
- lsrs r4, 24
- lsls r5, 24
- lsrs r7, r5, 24
- ldr r5, _081102E8 @ =gUnknown_203ADE4
- movs r6, 0
- strb r2, [r5]
- strb r3, [r5, 0x1]
- strb r6, [r5, 0x3]
- subs r4, 0x1
- strb r4, [r5, 0x4]
- strb r0, [r5, 0x5]
- strb r1, [r5, 0x6]
- mov r0, r12
- strb r0, [r5, 0x7]
- mov r4, r8
- strb r4, [r5, 0x8]
- mov r0, r9
- strb r0, [r5, 0x9]
- mov r4, r10
- strb r4, [r5, 0xA]
- cmp r7, 0
- blt _081102E4
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r7, r0
- ble _081102EC
-_081102E4:
- strb r6, [r5, 0x2]
- b _081102EE
- .align 2, 0
-_081102E8: .4byte gUnknown_203ADE4
-_081102EC:
- strb r7, [r5, 0x2]
-_081102EE:
- movs r0, 0
- movs r1, 0
- bl sub_8110450
- ldr r0, _08110308 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_08110308: .4byte gUnknown_203ADE4
- thumb_func_end sub_8110290
-
- thumb_func_start sub_811030C
-sub_811030C: @ 811030C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- ldr r4, [sp, 0x38]
- ldr r5, [sp, 0x3C]
- ldr r6, [sp, 0x40]
- ldr r7, [sp, 0x44]
- lsls r0, 24
- lsrs r0, 24
- lsls r1, 24
- lsrs r1, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- lsls r4, 24
- lsrs r4, 24
- mov r8, r4
- lsls r5, 24
- lsrs r5, 24
- lsls r6, 24
- lsrs r6, 24
- lsls r7, 24
- adds r4, r7, 0
- lsrs r4, 24
- mov r9, r4
- movs r7, 0x10
- mov r10, r7
- adds r4, r5, 0
- muls r4, r6
- lsls r4, 24
- lsrs r4, 24
- mov r7, r8
- str r7, [sp]
- mov r7, r10
- str r7, [sp, 0x4]
- str r5, [sp, 0x8]
- str r6, [sp, 0xC]
- str r4, [sp, 0x10]
- mov r4, r9
- str r4, [sp, 0x14]
- bl sub_8110290
- lsls r0, 24
- lsrs r0, 24
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_811030C
-
- thumb_func_start sub_811037C
-sub_811037C: @ 811037C
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0xC
- mov r8, r0
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- lsls r0, r1, 24
- lsrs r7, r0, 24
- ldr r5, _08110448 @ =gUnknown_203ADE4
- ldrb r0, [r5, 0x6]
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- mov r9, r0
- mov r1, r9
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldrb r0, [r5, 0x6]
- movs r1, 0x1
- bl GetMenuCursorDimensionByFont
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- ldrb r0, [r5, 0x9]
- mov r10, r0
- mov r0, r8
- mov r1, r10
- bl __umodsi3
- ldrb r1, [r5, 0x7]
- adds r4, r1, 0
- muls r4, r0
- ldrb r1, [r5]
- adds r4, r1
- lsls r4, 24
- lsrs r4, 24
- mov r0, r8
- mov r1, r10
- bl __udivsi3
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r0
- ldrb r0, [r5, 0x1]
- adds r3, r0
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r5, 0x5]
- mov r1, r9
- str r1, [sp]
- str r6, [sp, 0x4]
- movs r1, 0x11
- adds r2, r4, 0
- bl FillWindowPixelRect
- ldrb r6, [r5, 0x9]
- adds r0, r7, 0
- adds r1, r6, 0
- bl __umodsi3
- ldrb r1, [r5, 0x7]
- adds r4, r1, 0
- muls r4, r0
- ldrb r0, [r5]
- adds r4, r0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- adds r1, r6, 0
- bl __udivsi3
- ldrb r1, [r5, 0x8]
- adds r3, r1, 0
- muls r3, r0
- ldrb r1, [r5, 0x1]
- adds r3, r1
- lsls r3, 24
- lsrs r3, 24
- ldrb r0, [r5, 0x5]
- ldrb r1, [r5, 0x6]
- ldr r2, _0811044C @ =gFameCheckerText_ListMenuCursor
- str r3, [sp]
- movs r3, 0
- str r3, [sp, 0x4]
- str r3, [sp, 0x8]
- adds r3, r4, 0
- bl AddTextPrinterParameterized
- 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
-_08110448: .4byte gUnknown_203ADE4
-_0811044C: .4byte gFameCheckerText_ListMenuCursor
- thumb_func_end sub_811037C
-
- thumb_func_start sub_8110450
-sub_8110450: @ 8110450
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- lsls r1, 24
- lsrs r1, 24
- mov r9, r1
- ldr r1, _0811048C @ =gUnknown_203ADE4
- ldrb r2, [r1, 0x2]
- mov r8, r2
- lsls r0, 24
- asrs r6, r0, 24
- adds r5, r1, 0
- cmp r6, 0
- beq _081104A6
- movs r7, 0x2
- ldrsb r7, [r5, r7]
- ldrb r4, [r5, 0x9]
- adds r0, r7, 0
- adds r1, r4, 0
- bl __modsi3
- adds r0, r6
- cmp r0, 0
- bge _08110490
- adds r0, r4, 0
- adds r0, 0xFF
- add r0, r8
- b _081104A4
- .align 2, 0
-_0811048C: .4byte gUnknown_203ADE4
-_08110490:
- cmp r0, r4
- blt _081104A0
- adds r0, r7, 0
- adds r1, r4, 0
- bl __divsi3
- muls r0, r4
- b _081104A4
-_081104A0:
- mov r1, r8
- adds r0, r6, r1
-_081104A4:
- strb r0, [r5, 0x2]
-_081104A6:
- mov r2, r9
- lsls r0, r2, 24
- asrs r6, r0, 24
- cmp r6, 0
- beq _081104EA
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r4, [r5, 0x9]
- adds r1, r4, 0
- bl __divsi3
- adds r1, r0, r6
- cmp r1, 0
- bge _081104CE
- ldrb r0, [r5, 0xA]
- subs r0, 0x1
- muls r0, r4
- ldrb r1, [r5, 0x2]
- adds r0, r1
- b _081104E8
-_081104CE:
- ldrb r0, [r5, 0xA]
- cmp r1, r0
- blt _081104E0
- subs r0, 0x1
- adds r1, r4, 0
- muls r1, r0
- ldrb r0, [r5, 0x2]
- subs r0, r1
- b _081104E8
-_081104E0:
- adds r0, r4, 0
- muls r0, r6
- ldrb r2, [r5, 0x2]
- adds r0, r2
-_081104E8:
- strb r0, [r5, 0x2]
-_081104EA:
- movs r1, 0x2
- ldrsb r1, [r5, r1]
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r1, r0
- bgt _08110500
- ldrb r1, [r5, 0x2]
- mov r0, r8
- bl sub_811037C
- b _08110504
-_08110500:
- mov r0, r8
- strb r0, [r5, 0x2]
-_08110504:
- ldrb r0, [r5, 0x2]
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8110450
-
- thumb_func_start sub_8110514
-sub_8110514: @ 8110514
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r1, 24
- lsrs r1, 24
- mov r8, r1
- ldr r1, _0811058C @ =gUnknown_203ADE4
- ldrb r7, [r1, 0x2]
- lsls r0, 24
- asrs r4, r0, 24
- adds r5, r1, 0
- cmp r4, 0
- beq _08110548
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r6, [r5, 0x9]
- adds r1, r6, 0
- bl __modsi3
- adds r0, r4
- cmp r0, 0
- blt _08110548
- cmp r0, r6
- bge _08110548
- adds r0, r4, r7
- strb r0, [r5, 0x2]
-_08110548:
- mov r1, r8
- lsls r0, r1, 24
- asrs r4, r0, 24
- cmp r4, 0
- beq _08110574
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- ldrb r6, [r5, 0x9]
- adds r1, r6, 0
- bl __divsi3
- adds r0, r4
- cmp r0, 0
- blt _08110574
- ldrb r1, [r5, 0xA]
- cmp r0, r1
- bge _08110574
- adds r0, r6, 0
- muls r0, r4
- ldrb r1, [r5, 0x2]
- adds r0, r1
- strb r0, [r5, 0x2]
-_08110574:
- movs r1, 0x2
- ldrsb r1, [r5, r1]
- movs r0, 0x4
- ldrsb r0, [r5, r0]
- cmp r1, r0
- bgt _08110590
- ldrb r1, [r5, 0x2]
- adds r0, r7, 0
- bl sub_811037C
- b _08110592
- .align 2, 0
-_0811058C: .4byte gUnknown_203ADE4
-_08110590:
- strb r7, [r5, 0x2]
-_08110592:
- ldrb r0, [r5, 0x2]
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end sub_8110514
-
- thumb_func_start sub_81105A0
-sub_81105A0: @ 81105A0
- push {r4,lr}
- ldr r4, _081105C0 @ =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081105C8
- movs r0, 0x5
- bl PlaySE
- ldr r0, _081105C4 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- b _08110648
- .align 2, 0
-_081105C0: .4byte gMain
-_081105C4: .4byte gUnknown_203ADE4
-_081105C8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081105D6
- movs r0, 0x1
- negs r0, r0
- b _08110648
-_081105D6:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _081105EC
- movs r0, 0x5
- bl PlaySE
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08110640
-_081105EC:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _08110600
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0x1
- b _08110640
-_08110600:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _08110614
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08110620
-_08110614:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0811063E
-_08110620:
- ldrh r1, [r4, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _08110636
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08110644
-_08110636:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0811063E:
- movs r1, 0
-_08110640:
- bl sub_8110450
-_08110644:
- movs r0, 0x2
- negs r0, r0
-_08110648:
- pop {r4}
- pop {r1}
- bx r1
- thumb_func_end sub_81105A0
-
- thumb_func_start sub_8110650
-sub_8110650: @ 8110650
- push {r4-r6,lr}
- ldr r5, _08110670 @ =gUnknown_203ADE4
- ldrb r4, [r5, 0x2]
- ldr r6, _08110674 @ =gMain
- ldrh r1, [r6, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _08110678
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- ldrsb r0, [r5, r0]
- b _081106EE
- .align 2, 0
-_08110670: .4byte gUnknown_203ADE4
-_08110674: .4byte gMain
-_08110678:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _08110686
- movs r0, 0x1
- negs r0, r0
- b _081106EE
-_08110686:
- movs r0, 0x40
- ands r0, r1
- cmp r0, 0
- beq _08110696
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _081106D8
-_08110696:
- movs r0, 0x80
- ands r0, r1
- cmp r0, 0
- beq _081106A4
- movs r0, 0
- movs r1, 0x1
- b _081106D8
-_081106A4:
- movs r0, 0x20
- ands r0, r1
- cmp r0, 0
- bne _081106B8
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _081106BE
-_081106B8:
- movs r0, 0x1
- negs r0, r0
- b _081106D6
-_081106BE:
- ldrh r1, [r6, 0x2E]
- movs r0, 0x10
- ands r0, r1
- cmp r0, 0
- bne _081106D4
- bl GetLRKeysState
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _081106EA
-_081106D4:
- movs r0, 0x1
-_081106D6:
- movs r1, 0
-_081106D8:
- bl sub_8110514
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _081106EA
- movs r0, 0x5
- bl PlaySE
-_081106EA:
- movs r0, 0x2
- negs r0, r0
-_081106EE:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_8110650
-
- thumb_func_start sub_81106F4
-sub_81106F4: @ 81106F4
- push {r4,r5,lr}
- ldr r4, _08110714 @ =gMain
- ldrh r1, [r4, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _0811071C
- movs r0, 0x5
- bl PlaySE
- ldr r0, _08110718 @ =gUnknown_203ADE4
- ldrb r0, [r0, 0x2]
- lsls r0, 24
- asrs r0, 24
- b _08110798
- .align 2, 0
-_08110714: .4byte gMain
-_08110718: .4byte gUnknown_203ADE4
-_0811071C:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _0811072A
- movs r0, 0x1
- negs r0, r0
- b _08110798
-_0811072A:
- ldrh r0, [r4, 0x30]
- movs r5, 0xF0
- adds r1, r5, 0
- ands r1, r0
- cmp r1, 0x40
- bne _08110744
- movs r0, 0x5
- bl PlaySE
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08110790
-_08110744:
- cmp r1, 0x80
- bne _08110754
- movs r0, 0x5
- bl PlaySE
- movs r0, 0
- movs r1, 0x1
- b _08110790
-_08110754:
- cmp r1, 0x20
- beq _08110764
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _08110770
-_08110764:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
- negs r0, r0
- b _0811078E
-_08110770:
- ldrh r1, [r4, 0x30]
- adds r0, r5, 0
- ands r0, r1
- cmp r0, 0x10
- beq _08110786
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08110794
-_08110786:
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x1
-_0811078E:
- movs r1, 0
-_08110790:
- bl sub_8110450
-_08110794:
- movs r0, 0x2
- negs r0, r0
-_08110798:
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end sub_81106F4
-
- thumb_func_start sub_81107A0
-sub_81107A0: @ 81107A0
- push {r4-r6,lr}
- ldr r6, _081107C0 @ =gUnknown_203ADE4
- ldrb r4, [r6, 0x2]
- ldr r5, _081107C4 @ =gMain
- ldrh r1, [r5, 0x2E]
- movs r0, 0x1
- ands r0, r1
- cmp r0, 0
- beq _081107C8
- movs r0, 0x5
- bl PlaySE
- movs r0, 0x2
- ldrsb r0, [r6, r0]
- b _0811083A
- .align 2, 0
-_081107C0: .4byte gUnknown_203ADE4
-_081107C4: .4byte gMain
-_081107C8:
- movs r0, 0x2
- ands r0, r1
- cmp r0, 0
- beq _081107D6
- movs r0, 0x1
- negs r0, r0
- b _0811083A
-_081107D6:
- ldrh r0, [r5, 0x30]
- movs r6, 0xF0
- adds r1, r6, 0
- ands r1, r0
- cmp r1, 0x40
- bne _081107EA
- movs r1, 0x1
- negs r1, r1
- movs r0, 0
- b _08110824
-_081107EA:
- cmp r1, 0x80
- bne _081107F4
- movs r0, 0
- movs r1, 0x1
- b _08110824
-_081107F4:
- cmp r1, 0x20
- beq _08110804
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0811080A
-_08110804:
- movs r0, 0x1
- negs r0, r0
- b _08110822
-_0811080A:
- ldrh r1, [r5, 0x30]
- adds r0, r6, 0
- ands r0, r1
- cmp r0, 0x10
- beq _08110820
- bl sub_80BF66C
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x2
- bne _08110836
-_08110820:
- movs r0, 0x1
-_08110822:
- movs r1, 0
-_08110824:
- bl sub_8110514
- lsls r0, 24
- lsrs r0, 24
- cmp r4, r0
- beq _08110836
- movs r0, 0x5
- bl PlaySE
-_08110836:
- movs r0, 0x2
- negs r0, r0
-_0811083A:
- pop {r4-r6}
- pop {r1}
- bx r1
- thumb_func_end sub_81107A0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/asm/overworld.s b/asm/overworld.s
index dec8f6715..934fd29f3 100644
--- a/asm/overworld.s
+++ b/asm/overworld.s
@@ -3799,8 +3799,8 @@ _080568F4: .4byte gFieldCallback
_080568F8: .4byte FieldCallback_ReturnToEventScript2
thumb_func_end CB2_ReturnToFieldContinueScriptPlayMapMusic
- thumb_func_start sub_80568FC
-sub_80568FC: @ 80568FC
+ thumb_func_start CB2_Overworld
+CB2_Overworld: @ 80568FC
push {lr}
bl sub_80569BC
ldr r1, _08056910 @ =gFieldCallback
@@ -3812,7 +3812,7 @@ sub_80568FC: @ 80568FC
.align 2, 0
_08056910: .4byte gFieldCallback
_08056914: .4byte sub_807DF7C
- thumb_func_end sub_80568FC
+ thumb_func_end CB2_Overworld
thumb_func_start sub_8056918
sub_8056918: @ 8056918
diff --git a/asm/party_menu.s b/asm/party_menu.s
index d2052f4c2..ace2e3554 100644
--- a/asm/party_menu.s
+++ b/asm/party_menu.s
@@ -3234,7 +3234,7 @@ sub_8120328: @ 8120328
bne _0812035E
movs r0, 0x6
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x6
bl ClearWindowTilemap
_0812035E:
@@ -3302,7 +3302,7 @@ sub_81203B8: @ 81203B8
beq _08120410
movs r0, 0x6
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x6
bl ClearWindowTilemap
bl MenuHelpers_LinkSomething
@@ -6507,7 +6507,7 @@ sub_8121CE4: @ 8121CE4
cmp r0, 0xFF
beq _08121D04
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl RemoveWindow
movs r0, 0xFF
@@ -6608,7 +6608,7 @@ _08121DB0:
movs r1, 0
movs r2, 0x58
movs r3, 0xF
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r4, _08121DF0 @ =gStringVar4
ldr r1, _08121DF4 @ =gUnknown_845A2E8
lsls r0, r6, 2
@@ -6770,7 +6770,7 @@ _08121ED2:
movs r1, 0
movs r2, 0x4F
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
cmp r4, 0x3
bne _08121F00
ldr r0, [r6]
@@ -6854,7 +6854,7 @@ _08121F7A:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl sub_810F774
+ bl Menu_InitCursorInternal
movs r0, 0x2
bl ScheduleBgCopyTilemapToVram
ldr r0, [r4]
@@ -6882,7 +6882,7 @@ sub_8121FC0: @ 8121FC0
movs r1, 0
movs r2, 0x4F
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r2, _08122008 @ =gTextFlags
ldrb r0, [r2]
movs r1, 0x1
@@ -6947,7 +6947,7 @@ sub_8122034: @ 8122034
movs r1, 0
movs r2, 0x4F
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r0, [r4]
ldrb r0, [r0, 0xC]
pop {r4}
@@ -7054,7 +7054,7 @@ sub_8122110: @ 8122110
bl ClearWindowTilemap
adds r0, r4, 0
movs r1, 0
- bl ClearMenuWindow_BorderThickness2
+ bl ClearDialogWindowAndFrameToTransparent
adds r0, r4, 0
bl RemoveWindow
movs r0, 0x2
@@ -8550,27 +8550,27 @@ sub_8122C5C: @ 8122C5C
ldrb r0, [r0, 0x17]
cmp r0, 0x3
bhi _08122CA0
- bl ProcessMenuInputNoWrapAround_other
+ bl Menu_ProcessInputNoWrapAround_other
b _08122CA4
.align 2, 0
_08122C94: .4byte gPaletteFade
_08122C98: .4byte gTasks+0x8
_08122C9C: .4byte gUnknown_203B09C
_08122CA0:
- bl ProcessMenuInput_other
+ bl Menu_ProcessInput_other
_08122CA4:
lsls r0, 24
lsrs r5, r0, 24
movs r0, 0
ldrsh r4, [r7, r0]
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
cmp r4, r0
beq _08122CCE
ldr r0, _08122D14 @ =gUnknown_203B09C
ldr r4, [r0]
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
adds r4, 0xF
@@ -8578,7 +8578,7 @@ _08122CA4:
ldrb r0, [r4]
bl sub_8122138
_08122CCE:
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
strh r0, [r7]
@@ -11600,7 +11600,7 @@ sub_81245A4: @ 81245A4
push {r4-r7,lr}
lsls r0, 24
lsrs r6, r0, 24
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
ldr r5, _08124610 @ =gUnknown_203B09C
ldr r1, [r5]
lsls r0, 24
@@ -13684,7 +13684,7 @@ _08125680:
mov r1, r8
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x2
bl ScheduleBgCopyTilemapToVram
add sp, 0x10
@@ -13706,7 +13706,7 @@ sub_81256C0: @ 81256C0
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x2
@@ -13813,7 +13813,7 @@ sub_8125790: @ 8125790
ldr r0, [r0]
adds r0, 0xC
bl sub_8121CE4
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
ldr r1, _081257C4 @ =gUnknown_203B0A0
lsls r0, 24
lsrs r0, 24
diff --git a/asm/player_pc.s b/asm/player_pc.s
index dfcac85f4..32838be77 100644
--- a/asm/player_pc.s
+++ b/asm/player_pc.s
@@ -187,7 +187,7 @@ _080EB77E:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
bl ScheduleBgCopyTilemapToVram
ldr r1, _080EB814 @ =gTasks
@@ -223,7 +223,7 @@ sub_80EB81C: @ 80EB81C
lsls r6, r1, 3
ldr r7, _080EB870 @ =gTasks+0x8
adds r4, r6, r7
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r5, r0, 24
movs r0, 0x2
@@ -237,7 +237,7 @@ sub_80EB81C: @ 80EB81C
bl PlaySE
ldrb r0, [r4, 0x14]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
@@ -256,7 +256,7 @@ _080EB874: .4byte sub_80EB9B8
_080EB878:
ldrb r0, [r4, 0x14]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
@@ -488,7 +488,7 @@ _080EBA1E:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
bl ScheduleBgCopyTilemapToVram
ldr r1, _080EBA88 @ =gUnknown_84021DC
@@ -541,7 +541,7 @@ sub_80EBAB8: @ 80EBAB8
ands r0, r1
cmp r0, 0
beq _080EBAE8
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
cmp r0, 0
beq _080EBB64
@@ -557,7 +557,7 @@ _080EBAE8:
ands r0, r1
cmp r0, 0
beq _080EBB20
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
cmp r0, 0x2
@@ -566,9 +566,9 @@ _080EBAE8:
bl PlaySE
movs r0, 0x1
_080EBB04:
- bl MoveMenuCursor
+ bl Menu_MoveCursor
ldr r4, _080EBB1C @ =gUnknown_84021DC
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 22
adds r0, r4
@@ -586,7 +586,7 @@ _080EBB20:
movs r0, 0x5
bl PlaySE
ldr r4, _080EBB48 @ =gUnknown_8402208
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 21
adds r4, 0x4
@@ -752,7 +752,7 @@ _080EBC78: .4byte sub_80EBCAC
_080EBC7C:
ldrb r0, [r4, 0x14]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
@@ -861,7 +861,7 @@ sub_80EBD48: @ 80EBD48
adds r4, r0
ldrb r0, [r4, 0x14]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4, 0x14]
bl ClearWindowTilemap
ldrb r0, [r4, 0x14]
@@ -1341,7 +1341,7 @@ sub_80EC0D8: @ 80EC0D8
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
bl ScheduleBgCopyTilemapToVram
ldr r1, _080EC154 @ =gTasks
@@ -1369,7 +1369,7 @@ sub_80EC15C: @ 80EC15C
lsls r0, 24
lsrs r5, r0, 24
adds r6, r5, 0
- bl ProcessMenuInput_other
+ bl Menu_ProcessInput_other
lsls r0, 24
asrs r4, r0, 24
movs r0, 0x2
diff --git a/asm/pokedex.s b/asm/pokedex.s
index 279270fbb..69ca5adcf 100644
--- a/asm/pokedex.s
+++ b/asm/pokedex.s
@@ -220,8 +220,8 @@ _08088F7C:
bx r1
thumb_func_end sub_8088F58
- thumb_func_start sub_8088F84
-sub_8088F84: @ 8088F84
+ thumb_func_start HasAllKantoMons
+HasAllKantoMons: @ 8088F84
push {r4,r5,lr}
movs r0, 0
_08088F88:
@@ -277,6 +277,6 @@ _08088FE8:
pop {r4,r5}
pop {r1}
bx r1
- thumb_func_end sub_8088F84
+ thumb_func_end HasAllKantoMons
.align 2, 0 @ Don't pad with nop.
diff --git a/asm/pokemon_jump_2.s b/asm/pokemon_jump_2.s
index 7ef149fec..8fc385744 100644
--- a/asm/pokemon_jump_2.s
+++ b/asm/pokemon_jump_2.s
@@ -5304,7 +5304,7 @@ sub_814A218: @ 814A218
_0814A22C: .4byte gUnknown_203F3D8
_0814A230:
bl sub_814A6CC
- bl sub_81100E8
+ bl DestroyYesNoMenu
movs r0, 0
bl CopyBgTilemapBufferToVram
ldr r1, [r5]
diff --git a/asm/pokemon_special_anim.s b/asm/pokemon_special_anim.s
index 5c91419df..c8906230b 100644
--- a/asm/pokemon_special_anim.s
+++ b/asm/pokemon_special_anim.s
@@ -1703,7 +1703,7 @@ sub_811D2D0: @ 811D2D0
bl ClearWindowTilemap
movs r0, 0
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0
movs r1, 0x1
bl CopyWindowToVram
diff --git a/asm/pokemon_storage_system.s b/asm/pokemon_storage_system.s
index a5e91a4a6..a7777c2ca 100644
--- a/asm/pokemon_storage_system.s
+++ b/asm/pokemon_storage_system.s
@@ -1466,7 +1466,7 @@ _0808C454:
strh r0, [r5, 0x8]
b _0808C69C
_0808C45C:
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r0, 24
strh r0, [r5, 0xC]
@@ -1665,8 +1665,8 @@ _0808C5D8:
_0808C5F4:
movs r0, 0x1
negs r0, r0
- bl MoveMenuCursor
- bl GetMenuCursorPos
+ bl Menu_MoveCursor
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xA]
@@ -1699,8 +1699,8 @@ _0808C624:
strh r6, [r5, 0xA]
_0808C63C:
movs r0, 0x1
- bl MoveMenuCursor
- bl GetMenuCursorPos
+ bl Menu_MoveCursor
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 24
strh r0, [r5, 0xA]
@@ -1861,7 +1861,7 @@ sub_808C72C: @ 808C72C
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
mov r0, r10
strh r5, [r0]
add sp, 0xC
@@ -8349,7 +8349,7 @@ sub_808FCE8: @ 808FCE8
lsls r4, 24
asrs r4, 24
adds r0, r4, 0
- bl MoveMenuCursorNoWrapAround
+ bl Menu_MoveCursorNoWrapAround
add sp, 0xC
pop {r4}
pop {r0}
@@ -8363,7 +8363,7 @@ sub_808FD20: @ 808FD20
push {lr}
movs r0, 0x1
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0
bl ScheduleBgCopyTilemapToVram
pop {r0}
@@ -18931,7 +18931,7 @@ sub_8094E88: @ 8094E88
movs r1, 0
movs r2, 0xB
movs r3, 0xE
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r2, [r5]
adds r0, r2, r4
ldrb r0, [r0]
@@ -18961,7 +18961,7 @@ sub_8094E88: @ 8094E88
movs r1, 0x1
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
bl ScheduleBgCopyTilemapToVram
ldr r0, [r5]
@@ -19023,7 +19023,7 @@ _08094FB6:
bl PlaySE
movs r0, 0x1
negs r0, r0
- bl MoveMenuCursor
+ bl Menu_MoveCursor
b _08094FF2
.align 2, 0
_08094FD0: .4byte gMain
@@ -19035,10 +19035,10 @@ _08094FD4:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursor
+ bl Menu_MoveCursor
b _08094FF2
_08094FEA:
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r5, r0, 24
_08094FF2:
@@ -19077,7 +19077,7 @@ sub_8095024: @ 8095024
adds r0, r4
ldrb r0, [r0]
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldr r0, [r5]
adds r0, r4
ldrb r0, [r0]
diff --git a/asm/script_menu.s b/asm/script_menu.s
index 0d5cabbcf..59af843f1 100644
--- a/asm/script_menu.s
+++ b/asm/script_menu.s
@@ -271,7 +271,7 @@ _0809CB32:
movs r1, 0x2
movs r2, 0x8
movs r3, 0x2
- bl sub_810FBE8
+ bl MultichoiceList_PrintItems
b _0809CB7A
.align 2, 0
_0809CB54: .4byte sub_809D6D4
@@ -290,7 +290,7 @@ _0809CB5C:
movs r1, 0x2
movs r2, 0x8
movs r3, 0x2
- bl sub_810FBE8
+ bl MultichoiceList_PrintItems
_0809CB7A:
movs r0, 0xE
str r0, [sp]
@@ -301,7 +301,7 @@ _0809CB7A:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
ldr r0, [sp, 0x18]
adds r1, r7, 0
adds r2, r5, 0
@@ -475,10 +475,10 @@ _0809CCD0:
ldrsh r0, [r5, r1]
cmp r0, 0
bne _0809CCDE
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
b _0809CCE2
_0809CCDE:
- bl ProcessMenuInput
+ bl Menu_ProcessInput
_0809CCE2:
lsls r0, 24
lsrs r4, r0, 24
@@ -562,7 +562,7 @@ _0809CD78:
bl FillWindowPixelBuffer
ldr r4, _0809CDAC @ =gUnknown_83E0738
_0809CD82:
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 22
adds r0, r4
@@ -587,7 +587,7 @@ _0809CDB0:
movs r1, 0x11
bl FillWindowPixelBuffer
ldr r4, _0809CDE8 @ =gUnknown_83E0748
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 22
adds r0, r4
@@ -833,7 +833,7 @@ _0809CF08:
movs r1, 0x1
adds r2, r5, 0
movs r3, 0x10
- bl sub_8110104
+ bl MultichoiceGrid_PrintItems
ldrb r0, [r4, 0x14]
str r5, [sp]
str r7, [sp, 0x4]
@@ -843,7 +843,7 @@ _0809CF08:
movs r1, 0x1
movs r2, 0
movs r3, 0x1
- bl sub_811030C
+ bl MultichoiceGrid_InitCursor
movs r0, 0
bl ScheduleBgCopyTilemapToVram
_0809CFB8:
@@ -874,7 +874,7 @@ sub_809CFDC: @ 809CFDC
lsls r0, 3
ldr r1, _0809D018 @ =gTasks+0x8
adds r5, r0, r1
- bl sub_8110650
+ bl Menu_ProcessInputGridLayout
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x2
@@ -1138,7 +1138,7 @@ _0809D1FA:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
mov r1, r9
adds r2, r6, 0
@@ -1721,7 +1721,7 @@ sub_809D6B0: @ 809D6B0
bl ClearWindowTilemap
adds r0, r4, 0
movs r1, 0x1
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
adds r0, r4, 0
bl RemoveWindow
pop {r4}
@@ -1946,7 +1946,7 @@ _0809D844:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0
mov r1, r9
adds r2, r7, 0
diff --git a/asm/shop.s b/asm/shop.s
index 01bca8033..c0f4779b7 100644
--- a/asm/shop.s
+++ b/asm/shop.s
@@ -74,7 +74,7 @@ _0809AAF8:
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
ldrb r0, [r4]
bl PutWindowTilemap
ldrb r0, [r4]
@@ -194,7 +194,7 @@ sub_809AC10: @ 809AC10
lsls r0, 24
lsrs r4, r0, 24
adds r5, r4, 0
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r1, r0, 24
movs r0, 0x2
@@ -211,7 +211,7 @@ sub_809AC10: @ 809AC10
b _0809AC52
_0809AC3C:
ldr r4, _0809AC58 @ =gUnknown_83DF09C
- bl GetMenuCursorPos
+ bl Menu_GetCursorPos
lsls r0, 24
lsrs r0, 21
adds r4, 0x4
@@ -332,7 +332,7 @@ sub_809AD24: @ 809AD24
ldr r4, _0809AD3C @ =gUnknown_2039950
ldrb r0, [r4]
movs r1, 0x2
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
bl RemoveWindow
pop {r4}
@@ -2396,10 +2396,10 @@ _0809BDD4:
bl sub_809B73C
movs r0, 0x3
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x1
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x3
bl ClearWindowTilemap
movs r0, 0x1
@@ -2442,10 +2442,10 @@ _0809BE54:
bl sub_809B73C
movs r0, 0x3
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x1
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x3
bl ClearWindowTilemap
movs r0, 0x1
@@ -2601,7 +2601,7 @@ sub_809BF98: @ 809BF98
adds r4, r5, r6
movs r0, 0x2
movs r1, 0
- bl ClearMenuWindow_BorderThickness2
+ bl ClearDialogWindowAndFrameToTransparent
ldrb r0, [r4, 0xE]
movs r1, 0x1
bl sub_809B57C
diff --git a/asm/slot_machine.s b/asm/slot_machine.s
index b355fed51..c5f6d2b72 100644
--- a/asm/slot_machine.s
+++ b/asm/slot_machine.s
@@ -4607,7 +4607,7 @@ sub_8141AD8: @ 8141AD8
lsls r4, 24
asrs r4, 24
adds r0, r4, 0
- bl MoveMenuCursorNoWrapAround
+ bl Menu_MoveCursorNoWrapAround
bl sub_814112C
movs r1, 0x1
str r1, [r0, 0x28]
@@ -4627,7 +4627,7 @@ sub_8141B18: @ 8141B18
ldr r0, [r4, 0x28]
cmp r0, 0
beq _08141B2E
- bl sub_81100E8
+ bl DestroyYesNoMenu
movs r0, 0
str r0, [r4, 0x28]
_08141B2E:
diff --git a/asm/start_menu.s b/asm/start_menu.s
index 4f898b88c..f7ea9a712 100644
--- a/asm/start_menu.s
+++ b/asm/start_menu.s
@@ -220,7 +220,7 @@ sub_806EF18: @ 806EF18
ldr r4, _0806EF40 @ =gUnknown_2037101
ldrb r0, [r4]
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldrb r0, [r4]
movs r1, 0x2
bl CopyWindowToVram
@@ -438,7 +438,7 @@ _0806F0C4:
movs r1, 0x2
movs r2, 0
movs r3, 0
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
strb r0, [r4]
bl MenuHelpers_LinkSomething
lsls r0, 24
@@ -663,7 +663,7 @@ sub_806F280: @ 806F280
bl PlaySE
movs r0, 0x1
negs r0, r0
- bl MoveMenuCursor
+ bl Menu_MoveCursor
ldr r4, _0806F360 @ =gUnknown_20370F4
strb r0, [r4]
bl MenuHelpers_LinkSomething
@@ -698,7 +698,7 @@ _0806F2D2:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursor
+ bl Menu_MoveCursor
ldr r4, _0806F360 @ =gUnknown_20370F4
strb r0, [r4]
bl MenuHelpers_LinkSomething
@@ -1080,7 +1080,7 @@ sub_806F5C8: @ 806F5C8
_0806F5E4:
movs r0, 0
movs r1, 0
- bl ClearMenuWindow_BorderThickness2
+ bl ClearDialogWindowAndFrameToTransparent
bl sub_806F14C
bl sub_812B248
ldr r1, _0806F5FC @ =gUnknown_20370F0
@@ -1093,7 +1093,7 @@ _0806F600: .4byte sub_806F280
_0806F604:
movs r0, 0
movs r1, 0x1
- bl ClearMenuWindow_BorderThickness2
+ bl ClearDialogWindowAndFrameToTransparent
bl sub_80696C0
bl ScriptContext2_Disable
bl sub_812B248
@@ -2019,7 +2019,7 @@ sub_806FCF4: @ 806FCF4
movs r1, 0
adds r2, r4, 0
movs r3, 0xD
- bl SetWindowBorderStyle
+ bl DrawStdFrameWithCustomTileAndPalette
ldr r4, _0806FE60 @ =gStringVar4
movs r0, 0x3
adds r1, r4, 0
diff --git a/asm/trade.s b/asm/trade.s
index 468183b24..61328d618 100644
--- a/asm/trade.s
+++ b/asm/trade.s
@@ -3379,7 +3379,7 @@ _0804E208:
movs r1, 0x3
movs r2, 0x10
movs r3, 0x2
- bl sub_810FC80
+ bl UnionRoomAndTradeMenuPrintOptions
movs r0, 0x10
str r0, [sp]
movs r0, 0x2
@@ -3390,7 +3390,7 @@ _0804E208:
movs r1, 0x3
movs r2, 0
movs r3, 0
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x1
bl PutWindowTilemap
movs r0, 0x1
@@ -3533,7 +3533,7 @@ _0804E384: .4byte 0x06010000
sub_804E388: @ 804E388
push {lr}
sub sp, 0x4
- bl ProcessMenuInputNoWrapAround
+ bl Menu_ProcessInputNoWrapAround
lsls r0, 24
asrs r0, 24
movs r1, 0x1
diff --git a/asm/trainer_card.s b/asm/trainer_card.s
index a5a3613dc..0ccec8553 100644
--- a/asm/trainer_card.s
+++ b/asm/trainer_card.s
@@ -1070,7 +1070,7 @@ _080898BE:
adds r0, 0x1
strb r0, [r5, 0x1]
_080898CE:
- bl sub_8088F84
+ bl HasAllKantoMons
lsls r0, 16
cmp r0, 0
beq _080898DE
@@ -1117,7 +1117,7 @@ _08089918:
_0808991C:
bl sub_8088F58
strb r0, [r5, 0x3]
- bl sub_8088F84
+ bl HasAllKantoMons
adds r6, r5, 0
adds r6, 0x4D
strb r0, [r6]
diff --git a/asm/union_room_chat.s b/asm/union_room_chat.s
index 609cf8366..9f8d7da11 100644
--- a/asm/union_room_chat.s
+++ b/asm/union_room_chat.s
@@ -499,7 +499,7 @@ _081287FE:
.align 2, 0
_0812880C: .4byte gUnknown_203B0E0
_08128810:
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r0, 8
lsrs r6, r0, 16
@@ -534,7 +534,7 @@ _08128848:
movs r0, 0x5
bl PlaySE
movs r0, 0x1
- bl MoveMenuCursor
+ bl Menu_MoveCursor
b _081288CE
.align 2, 0
_08128864: .4byte gMain
@@ -4299,7 +4299,7 @@ sub_812A424: @ 812A424
movs r1, 0x2
movs r2, 0
movs r3, 0x2
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
_0812A4F0:
add sp, 0x14
pop {r3}
@@ -4329,7 +4329,7 @@ sub_812A51C: @ 812A51C
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldr r0, [r4]
ldrb r0, [r0, 0x18]
bl ClearWindowTilemap
@@ -4366,7 +4366,7 @@ _0812A564: .4byte gUnknown_203B0E4
thumb_func_start sub_812A568
sub_812A568: @ 812A568
push {lr}
- bl ProcessMenuInput
+ bl Menu_ProcessInput
lsls r0, 24
asrs r0, 24
pop {r1}
@@ -4568,7 +4568,7 @@ sub_812A6F4: @ 812A6F4
lsls r0, 24
lsrs r0, 24
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
ldr r0, [r4]
ldrb r0, [r0, 0x1E]
bl ClearWindowTilemap
@@ -4987,7 +4987,7 @@ sub_812AA10: @ 812AA10
movs r1, 0x2
movs r2, 0xE
movs r3, 0x5
- bl sub_810FC80
+ bl UnionRoomAndTradeMenuPrintOptions
bl sub_81296F4
lsls r0, 24
lsrs r0, 24
@@ -5000,7 +5000,7 @@ sub_812AA10: @ 812AA10
movs r1, 0x2
movs r2, 0
movs r3, 0
- bl ProgramAndPlaceMenuCursorOnWindow
+ bl Menu_InitCursor
movs r0, 0x3
bl PutWindowTilemap
add sp, 0xC
@@ -5015,7 +5015,7 @@ sub_812AA64: @ 812AA64
push {lr}
movs r0, 0x3
movs r1, 0
- bl ClearMenuWindow
+ bl ClearStdWindowAndFrameToTransparent
movs r0, 0x3
bl ClearWindowTilemap
pop {r0}
diff --git a/baserom.ips b/baserom.ips
index 110503bd7..f70a84768 100644
--- a/baserom.ips
+++ b/baserom.ips
Binary files differ
diff --git a/data/data_83FECCC.s b/data/data_83FECCC.s
index d16de696f..6aade55b6 100644
--- a/data/data_83FECCC.s
+++ b/data/data_83FECCC.s
@@ -345,24 +345,6 @@ gUnknown_8414588:: @ 8414588
gUnknown_84145BC:: @ 84145BC
.incbin "baserom.gba", 0x4145BC, 0x204
-gUnknown_84147C0:: @ 84147C0
- .incbin "baserom.gba", 0x4147C0, 0xD28
-
-gUnknown_84154E8:: @ 84154E8
- .incbin "baserom.gba", 0x4154E8, 0x46C
-
-gUnknown_8415954:: @ 8415954
- .incbin "baserom.gba", 0x415954, 0xB0
-
-gUnknown_8415A04:: @ 8415A04
- .incbin "baserom.gba", 0x415A04, 0x4
-
-gUnknown_8415A08:: @ 8415A08
- .incbin "baserom.gba", 0x415A08, 0x8
-
-gUnknown_8415A10:: @ 8415A10
- .incbin "baserom.gba", 0x415A10, 0x10
-
@ strings
.section .rodata.841EE44
@@ -823,9 +805,7 @@ gUnknown_8454000:: @ 8454000
gUnknown_8454003:: @ 8454003
.incbin "baserom.gba", 0x454003, 0x2615
-gUnknown_8456618:: @ 8456618
- .incbin "baserom.gba", 0x456618, 0x4
-
+ @ menu.o
@ quest_log.o
@ link_rfu_3.o
.section .rodata.8456C74
diff --git a/data/specials.inc b/data/specials.inc
index 6341da329..7c82d42f8 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -441,7 +441,7 @@ gSpecials:: @ 815FD60
def_special sub_8147594
def_special sub_80CD034
def_special sub_815D834
- def_special sub_8088F84
+ def_special HasAllKantoMons
def_special sub_80CD074
def_special sub_80CD098
def_special sub_811B15C
diff --git a/data/strings.s b/data/strings.s
index 9490372e7..83b86558c 100644
--- a/data/strings.s
+++ b/data/strings.s
@@ -4,73 +4,130 @@
.section .rodata
.align 2
gExpandedPlaceholder_Empty:: @ 8415A20
- .incbin "baserom.gba", 0x415A20, 0x1
+ .string "$"
gExpandedPlaceholder_Kun:: @ 8415A21
- .incbin "baserom.gba", 0x415A21, 0x1
+ .string "$"
gExpandedPlaceholder_Chan:: @ 8415A22
- .incbin "baserom.gba", 0x415A22, 0xA
+ .string "$"
+
+gUnknown_8415A23:: @ 0x8415A23
+ .string "SAPPHIRE$"
gExpandedPlaceholder_Ruby:: @ 8415A2C
- .incbin "baserom.gba", 0x415A2C, 0x5
+ .string "RUBY$"
gExpandedPlaceholder_Aqua:: @ 8415A31
- .incbin "baserom.gba", 0x415A31, 0x5
+ .string "AQUA$"
gExpandedPlaceholder_Magma:: @ 8415A36
- .incbin "baserom.gba", 0x415A36, 0x6
+ .string "MAGMA$"
gExpandedPlaceholder_Archie:: @ 8415A3C
- .incbin "baserom.gba", 0x415A3C, 0x7
+ .string "ARCHIE$"
gExpandedPlaceholder_Maxie:: @ 8415A43
- .incbin "baserom.gba", 0x415A43, 0x6
+ .string "MAXIE$"
gExpandedPlaceholder_Kyogre:: @ 8415A49
- .incbin "baserom.gba", 0x415A49, 0x7
+ .string "KYOGRE$"
gExpandedPlaceholder_Groudon:: @ 8415A50
- .incbin "baserom.gba", 0x415A50, 0x8
+ .string "GROUDON$"
gExpandedPlaceholder_Red:: @ 8415A58
- .incbin "baserom.gba", 0x415A58, 0x4
+ .string "RED$"
gExpandedPlaceholder_Green:: @ 8415A5C
- .incbin "baserom.gba", 0x415A5C, 0x6
+ .string "GREEN$"
gText_EggNickname:: @ 8415A62
- .incbin "baserom.gba", 0x415A62, 0x4
+ .string "EGG$"
gText_Pokemon:: @ 8415A66
- .incbin "baserom.gba", 0x415A66, 0x8
+ .string "POKéMON$"
gUnknown_8415A6E:: @ 8415A6E
- .incbin "baserom.gba", 0x415A6E, 0x9
+ .string "NEW GAME$"
gUnknown_8415A77:: @ 8415A77
- .incbin "baserom.gba", 0x415A77, 0x20
+ .string "CONTINUE$"
+
+gUnknown_8415A80:: @ 0x8415A80
+ .string "せっていを かえる$"
+
+gUnknown_8415A8A:: @ 0x8415A8A
+ .string "MYSTERY GIFT$"
gUnknown_8415A97:: @ 8415A97
- .incbin "baserom.gba", 0x415A97, 0xD
+ .string "MYSTERY GIFT$"
gUnknown_8415AA4:: @ 8415AA4
- .incbin "baserom.gba", 0x415AA4, 0x27
+ .string "The Wireless Adapter is not\nconnected.$"
gUnknown_8415ACB:: @ 8415ACB
- .incbin "baserom.gba", 0x415ACB, 0x134
+ .string "MYSTERY GIFT can't be used while\nthe Wireless Adapter is attached.$"
+
+gUnknown_8415B0E:: @ 0x8415B0E
+ .string "がいぶデ-タにより レポ-トを こうしんします\nしばらく おまちください$"
+
+gUnknown_8415B33:: @ 0x8415B33
+ .string "レポ-トが こうしんされました!$"
+
+gUnknown_8415B44:: @ 0x8415B44
+ .string "レポ-トが こうしんされました!\pこれいじょう\nレポ-トが かききれないので\lバックアップカ-トリッジを\lこうかんしてください!\pくわしくは\nにんてんどう サ-ビスセンタ- まで\lおといあわせ ください$"
+
+gUnknown_8415BAA:: @ 0x8415BAA
+ .string "レポ-トの こうしんは\nしっぱいしました!\pバックアップカ-トリッジを\nこうかんしてください!\pくわしくは\nにんてんどう サ-ビスセンタ- まで\lおといあわせ ください$"
gUnknown_8415BFF:: @ 8415BFF
- .incbin "baserom.gba", 0x415BFF, 0x43
+ .string "The save file is corrupted.\pThe previous save file will be\nloaded.$"
gUnknown_8415C42:: @ 8415C42
- .incbin "baserom.gba", 0x415C42, 0x22
+ .string "The save file has been\ndeleted...$"
gUnknown_8415C64:: @ 8415C64
- .incbin "baserom.gba", 0x415C64, 0x84
+ .string "The 1M sub-circuit board is\nnot installed.$"
+
+gUnknown_8415C8F:: @ 0x8415C8F
+ .string "でんちぎれの ために\nとけいが うごかなくなりました\pとけいに かんけいする できごとは おきませんが\nゲ-ムを つづけて あそぶことは できます$"
+
+gUnknown_8415CD9:: @ 0x8415CD9
+ .string "しゅじんこう$"
+
+gUnknown_8415CE0:: @ 0x8415CE0
+ .string "ポケモンずかん$"
gUnknown_8415CE8:: @ 8415CE8
- .incbin "baserom.gba", 0x415CE8, 0x44
+ .string "TIME$"
+
+gUnknown_8415CED:: @ 0x8415CED
+ .string "もっているバッジ$"
+
+gUnknown_8415CF6:: @ 0x8415CF6
+ .string "Aボタン$"
+
+gUnknown_8415CFB:: @ 0x8415CFB
+ .string "Bボタン$"
+
+gUnknown_8415D00:: @ 0x8415D00
+ .string "Rボタン$"
+
+gUnknown_8415D05:: @ 0x8415D05
+ .string "Lボタン$"
+
+gUnknown_8415D0A:: @ 0x8415D0A
+ .string "スタ-トボタン$"
+
+gUnknown_8415D12:: @ 0x8415D12
+ .string "セレクトボタン$"
+
+gUnknown_8415D1A:: @ 0x8415D1A
+ .string "じゅうじボタン$"
+
+gUnknown_8415D22:: @ 0x8415D22
+ .string "Lボタン Rボタン$"
gText_Controls:: @ 8415D2C
.string "CONTROLS$"
@@ -106,112 +163,205 @@ gText_Girl:: @ 8415D97
.string "GIRL$"
gUnknown_8415D9C:: @ 8415D9C
- .incbin "baserom.gba", 0x415D9C, 0x1C
+ .string "POKéDEX TABLE OF CONTENTS$"
gUnknown_8415DB8:: @ 8415DB8
- .incbin "baserom.gba", 0x415DB8, 0xC
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK$"
gUnknown_8415DC4:: @ 8415DC4
- .incbin "baserom.gba", 0x415DC4, 0x6
+ .string "Seen:$"
gUnknown_8415DCA:: @ 8415DCA
- .incbin "baserom.gba", 0x415DCA, 0x7
+ .string "Owned:$"
gUnknown_8415DD1:: @ 8415DD1
- .incbin "baserom.gba", 0x415DD1, 0x6
+ .string "KANTO$"
gUnknown_8415DD7:: @ 8415DD7
- .incbin "baserom.gba", 0x415DD7, 0x166
+ .string "NATIONAL$"
+
+gUnknown_8415DE0:: @ 0x8415DE0
+ .string "{COLOR WHITE2}{SHADOW LIGHT_BLUE}POKéMON HABITATS$"
+
+gUnknown_8415DF7:: @ 0x8415DF7
+ .string "Grassland POKéMON$"
+
+gUnknown_8415E09:: @ 0x8415E09
+ .string "Forest POKéMON$"
+
+gUnknown_8415E18:: @ 0x8415E18
+ .string "Water's-edge POKéMON$"
+
+gUnknown_8415E2D:: @ 0x8415E2D
+ .string "Sea POKéMON$"
+
+gUnknown_8415E39:: @ 0x8415E39
+ .string "Cave POKéMON$"
+
+gUnknown_8415E46:: @ 0x8415E46
+ .string "Mountain POKéMON$"
+
+gUnknown_8415E57:: @ 0x8415E57
+ .string "Rough-terrain POKéMON$"
+
+gUnknown_8415E6D:: @ 0x8415E6D
+ .string "Urban POKéMON$"
+
+gUnknown_8415E7B:: @ 0x8415E7B
+ .string "Rare POKéMON$"
+
+gUnknown_8415E88:: @ 0x8415E88
+ .string "{COLOR WHITE2}{SHADOW LIGHT_BLUE}SEARCH$"
+
+gUnknown_8415E95:: @ 0x8415E95
+ .string "NUMERICAL MODE$"
+
+gUnknown_8415EA4:: @ 0x8415EA4
+ .string "A TO Z MODE$"
+
+gUnknown_8415EB0:: @ 0x8415EB0
+ .string "{COLOR WHITE2}{SHADOW LIGHT_BLUE}OTHER$"
+
+gUnknown_8415EBC:: @ 0x8415EBC
+ .string "ずかんの つかいかた$"
+
+gUnknown_8415EC7:: @ 0x8415EC7
+ .string "CLOSE POKéDEX$"
+
+gUnknown_8415ED5:: @ 0x8415ED5
+ .string "TYPE MODE$"
+
+gUnknown_8415EDF:: @ 0x8415EDF
+ .string "LIGHTEST MODE$"
+
+gUnknown_8415EED:: @ 0x8415EED
+ .string "SMALLEST MODE$"
+
+gUnknown_8415EFB:: @ 0x8415EFB
+ .string "{COLOR WHITE2}{SHADOW LIGHT_BLUE}POKéMON LIST$"
+
+gUnknown_8415F0E:: @ 0x8415F0E
+ .string "NUMERICAL MODE: KANTO$"
+
+gUnknown_8415F24:: @ 0x8415F24
+ .string "NUMERICAL MODE: NATIONAL$"
gUnknown_8415F3D:: @ 8415F3D
- .incbin "baserom.gba", 0x415F3D, 0xD
+ .string "POKéMON LIST$"
gUnknown_8415F4A:: @ 8415F4A
- .incbin "baserom.gba", 0x415F4A, 0x7
+ .string "SEARCH$"
gText_PickOKExit:: @ 8415F51
- .incbin "baserom.gba", 0x415F51, 0x15
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}CANCEL$"
gUnknown_8415F66:: @ 8415F66
- .incbin "baserom.gba", 0x415F66, 0x6
+ .string "-----$"
gUnknown_8415F6C:: @ 8415F6C
- .incbin "baserom.gba", 0x415F6C, 0x23
+ .string "{KEYGFX_DPAD_LEFT_RIGHT}PICK{EXTRA_PLUS}FLIP PAGE {KEYGFX_A_BUTTON}CHECK {KEYGFX_B_BUTTON}CANCEL$"
gUnknown_8415F8F:: @ 8415F8F
- .incbin "baserom.gba", 0x415F8F, 0x9
+ .string " POKéMON$"
gUnknown_8415F98:: @ 8415F98
- .incbin "baserom.gba", 0x415F98, 0x3
+ .string "HT$"
gUnknown_8415F9B:: @ 8415F9B
- .incbin "baserom.gba", 0x415F9B, 0x5
+ .string "WT$"
+
+gUnknown_8415F9E:: @ 0x8415F9E
+ .string "”$"
gUnknown_8415FA0:: @ 8415FA0
- .incbin "baserom.gba", 0x415FA0, 0xD
+ .string "lbs.$"
+
+gUnknown_8415FA5:: @ 0x8415FA5
+ .string "ポケモンデ-タ$"
gUnknown_8415FAD:: @ 8415FAD
- .incbin "baserom.gba", 0x415FAD, 0x6
+ .string "{KEYGFX_START_BUTTON}CRY$"
gUnknown_8415FB3:: @ 8415FB3
- .incbin "baserom.gba", 0x415FB3, 0x15
+ .string "{KEYGFX_A_BUTTON}NEXT DATA {KEYGFX_B_BUTTON}CANCEL$"
gUnknown_8415FC8:: @ 8415FC8
- .incbin "baserom.gba", 0x415FC8, 0x7
+ .string "{KEYGFX_A_BUTTON}NEXT$"
gUnknown_8415FCF:: @ 8415FCF
- .incbin "baserom.gba", 0x415FCF, 0x19
+ .string "{KEYGFX_A_BUTTON}CANCEL {KEYGFX_B_BUTTON}PREVIOUS DATA$"
gUnknown_8415FE8:: @ 8415FE8
- .incbin "baserom.gba", 0x415FE8, 0x5
+ .string "AREA$"
gUnknown_8415FED:: @ 8415FED
- .incbin "baserom.gba", 0x415FED, 0x5
+ .string "SIZE$"
gUnknown_8415FF2:: @ 8415FF2
- .incbin "baserom.gba", 0x415FF2, 0xD
+ .string "AREA UNKNOWN$"
gUnknown_8415FFF:: @ 8415FFF
- .incbin "baserom.gba", 0x415FFF, 0x3
+ .string "{EXTRA_NO}$"
gUnknown_8416002:: @ 8416002
- .incbin "baserom.gba", 0x416002, 0x6
+ .string "PAGE$"
+ .align 2
gUnknown_8416008:: @ 8416008
- .incbin "baserom.gba", 0x416008, 0x88
+ .string "Welcome to the HALL OF FAME!$"
+
+gUnknown_8416025:: @ 0x8416025
+ .string " みつけた ポケモン {STR_VAR_1}!\nつかまえた ポケモン {STR_VAR_2}!\pオダマキはかせの\nポケモンずかん ひょうか!\pオダマキ“どれどれ\p$"
+gUnknown_8416067:: @ 0x8416067
+ .string " ここまでの レポ-トを かきしるしています!\nでんげんを きらないでください$"
+
+ .align 2
gUnknown_8416090:: @ 8416090
- .incbin "baserom.gba", 0x416090, 0x24
+ .string "The HALL OF FAME data is\ncorrupted.$"
gUnknown_84160B4:: @ 84160B4
- .incbin "baserom.gba", 0x4160B4, 0x14
+ .string "HALL OF FAME No. {STR_VAR_1}$"
gUnknown_84160C8:: @ 84160C8
- .incbin "baserom.gba", 0x4160C8, 0x24
+ .string "LEAGUE CHAMPION!\nCONGRATULATIONS!$"
+ .align 2
gUnknown_84160EC:: @ 84160EC
- .incbin "baserom.gba", 0x4160EC, 0x8
+ .string "No. $"
+ .align 2
gUnknown_84160F4:: @ 84160F4
- .incbin "baserom.gba", 0x4160F4, 0x8
+ .string "Lv. $"
+ .align 2
gUnknown_84160FC:: @ 84160FC
- .incbin "baserom.gba", 0x4160FC, 0x8
+ .string "NAME$"
+ .align 2
gUnknown_8416104:: @ 8416104
- .incbin "baserom.gba", 0x416104, 0x47
+ .string "IDNo.$"
+
+gUnknown_841610A:: @ 0x841610A
+ .string "{HIGHLIGHT WHITE2}{COLOR DARK_GREY}オダマキはかせが ピンチだ!\nポケモンを だして たすけてあげよう!$"
+
+gUnknown_8416133:: @ 0x8416133
+ .string "{HIGHLIGHT WHITE2}{COLOR DARK_GREY}このポケモンにしますか?$"
+
+gUnknown_8416146:: @ 0x8416146
+ .string "ポケモン$"
gUnknown_841614B:: @ 841614B
- .incbin "baserom.gba", 0x41614B, 0x2F
+ .string "Save error.\pPlease exchange the\nbackup memory.$"
gUnknown_841617A:: @ 841617A
- .incbin "baserom.gba", 0x41617A, 0x7
+ .string "PLAYER$"
gUnknown_8416181:: @ 8416181
- .incbin "baserom.gba", 0x416181, 0x7
+ .string "BADGES$"
gUnknown_8416188:: @ 8416188
- .incbin "baserom.gba", 0x416188, 0x8
+ .string "POKéDEX$"
gUnknown_8416190:: @ 8416190
.string "TIME$"
@@ -367,13 +517,22 @@ gUnknown_84162BD:: @ 84162BD
.string " BERRY$"
gText_Coins:: @ 84162C4
- .incbin "baserom.gba", 0x4162C4, 0x24
+ .string "{STR_VAR_1} COINS$"
+
+gUnknown_84162CD:: @ 0x84162CD
+ .string "ITEMS$"
+
+gUnknown_84162D3:: @ 0x84162D3
+ .string "POKé BALLS$"
+
+gUnknown_84162DE:: @ 0x84162DE
+ .string "KEY ITEMS$"
gText_DepositItem:: @ 84162E8
.string "DEPOSIT ITEM$"
gUnknown_84162F5:: @ 84162F5
- .incbin "baserom.gba", 0x4162F5, 0xA
+ .string "CLOSE BAG$"
gOtherText_StrVar1:: @ 84162FF
.string "{STR_VAR_1}"
@@ -383,7 +542,7 @@ gText_IsSelected:: @ 8416301
.string "selected.$"
gUnknown_841630F:: @ 841630F
- .incbin "baserom.gba", 0x41630F, 0x1B
+ .string "You can't write\nMAIL here.$"
gText_ThereIsNoPokemon:: @ 841632A
.string "There is no\n"
@@ -397,61 +556,70 @@ gText_ItemCantBeHeld:: @ 841635E
.string "The {STR_VAR_1} can't be held.$"
gUnknown_8416374:: @ 8416374
- .incbin "baserom.gba", 0x416374, 0x1B
+ .string "The {STR_VAR_1} can't be held\nhere.$"
gUnknown_841638F:: @ 841638F
- .incbin "baserom.gba", 0x41638F, 0x18
+ .string "Deposit how many\n{STR_VAR_1}シsス?$"
gUnknown_84163A7:: @ 84163A7
- .incbin "baserom.gba", 0x4163A7, 0x14
+ .string "Deposited {STR_VAR_2}\n{STR_VAR_1}シsス.$"
gUnknown_84163BB:: @ 84163BB
- .incbin "baserom.gba", 0x4163BB, 0x20
+ .string "There's no room to\nstore items.$"
gUnknown_84163DB:: @ 84163DB
- .incbin "baserom.gba", 0x4163DB, 0x19
+ .string "Toss out how many\n{STR_VAR_1}シsス?$"
gUnknown_84163F4:: @ 84163F4
- .incbin "baserom.gba", 0x4163F4, 0x15
+ .string "Threw away {STR_VAR_2}\n{STR_VAR_1}シsス.$"
gUnknown_8416409:: @ 8416409
- .incbin "baserom.gba", 0x416409, 0x1C
+ .string "Throw away {STR_VAR_2} of\nthis item?$"
gUnknown_8416425:: @ 8416425
- .incbin "baserom.gba", 0x416425, 0x2C
+ .string "OAK: {PLAYER}!\nThis isn't the time to use that!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416451:: @ 8416451
- .incbin "baserom.gba", 0x416451, 0x25
+ .string "You can't dismount your BIKE here.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416476:: @ 8416476
- .incbin "baserom.gba", 0x416476, 0x48
+ .string "Huh?\nThe ITEMFINDER's responding!\pThere's an item buried around here!{PAUSE_UNTIL_PRESS}$"
gUnknown_84164BE:: @ 84164BE
- .incbin "baserom.gba", 0x4164BE, 0x55
+ .string "Oh!\nThe ITEMFINDER's shaking wildly!\pThere's an item buried underfoot!\p‥ ‥ ‥ ‥ ‥ ‥{PAUSE_UNTIL_PRESS}$"
gUnknown_8416513:: @ 8416513
- .incbin "baserom.gba", 0x416513, 0x24
+ .string "‥ ‥ ‥ ‥Nope!\nThere's no response.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416537:: @ 8416537
- .incbin "baserom.gba", 0x416537, 0x55
+ .string "Your COINS:\n{STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416548:: @ 0x8416548
+ .string "わざマシンを きどうした!$"
+
+gUnknown_8416556:: @ 0x8416556
+ .string "ひでんマシンを きどうした!$"
+
+gUnknown_8416565:: @ 0x8416565
+ .string "なかには {STR_VAR_1}が\nきろくされていた!\p{STR_VAR_1}を\nポケモンに おぼえさせますか?$"
gUnknown_841658C:: @ 841658C
- .incbin "baserom.gba", 0x41658C, 0x12
+ .string "{PLAYER} used the\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
gUnknown_841659E:: @ 841659E
- .incbin "baserom.gba", 0x41659E, 0x34
+ .string "But the effects of a REPEL\nlingered from earlier.{PAUSE_UNTIL_PRESS}$"
gUnknown_84165D2:: @ 84165D2
- .incbin "baserom.gba", 0x4165D2, 0x2E
+ .string "{PLAYER} used the\n{STR_VAR_2}.\pWild POKéMON will be lured.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416600:: @ 8416600
- .incbin "baserom.gba", 0x416600, 0x31
+ .string "{PLAYER} used the\n{STR_VAR_2}.\pWild POKéMON will be repelled.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416631:: @ 8416631
- .incbin "baserom.gba", 0x416631, 0x13
+ .string "The BOX is full.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416644:: @ 8416644
- .incbin "baserom.gba", 0x416644, 0x11
+ .string "POWDER QTY: {STR_VAR_1}{PAUSE_UNTIL_PRESS}$"
gOtherText_Powder:: @ 8416655
.string "POWDER$"
@@ -487,34 +655,64 @@ gUnknown_8416707:: @ 8416707
.string " $"
gUnknown_841670A:: @ 841670A
- .incbin "baserom.gba", 0x41670A, 0xC
+ .string "BERRY POUCH$"
gUnknown_8416716:: @ 8416716
- .incbin "baserom.gba", 0x416716, 0x33
+ .string "The BERRY POUCH will be\nput away.$"
+
+gUnknown_8416738:: @ 0x8416738
+ .string "BUY$"
+
+gUnknown_841673C:: @ 0x841673C
+ .string "SELL$"
+
+gUnknown_8416741:: @ 0x8416741
+ .string "SEE YA!$"
gUnknown_8416749:: @ 8416749
- .incbin "baserom.gba", 0x416749, 0xE
+ .string "IN BAG:{SIZE 0x00} {STR_VAR_1}$"
gUnknown_8416757:: @ 8416757
- .incbin "baserom.gba", 0x416757, 0xF
+ .string "Quit shopping.$"
gUnknown_8416766:: @ 8416766
- .incbin "baserom.gba", 0x416766, 0x28
+ .string "{STR_VAR_1}? Certainly.\nHow many would you like?$"
gUnknown_841678E:: @ 841678E
- .incbin "baserom.gba", 0x41678E, 0x59
+ .string "{STR_VAR_1}, and you want {STR_VAR_2}.\nThat will be ¥{STR_VAR_3}. Okay?$"
+
+gUnknown_84167BB:: @ 0x84167BB
+ .string "{STR_VAR_1} だね!\n{STR_VAR_2}¥ だけど かうかい?$"
+
+gUnknown_84167D0:: @ 0x84167D0
+ .string "{STR_VAR_1} ですね!\n{STR_VAR_2}¥ だけど かいますか?$"
gUnknown_84167E7:: @ 84167E7
- .incbin "baserom.gba", 0x4167E7, 0x5B
+ .string "Here you are!\nThank you!$"
+
+gUnknown_8416800:: @ 0x8416800
+ .string "どうも ありがとう!\nじたくの パソコンに おくって おきますね!$"
+
+gUnknown_8416822:: @ 0x8416822
+ .string "どうも ありがとう!\nじたくの パソコンに おくって おくね!$"
gUnknown_8416842:: @ 8416842
- .incbin "baserom.gba", 0x416842, 0x1F
+ .string "You don't have enough money.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416861:: @ 8416861
- .incbin "baserom.gba", 0x416861, 0x3D
+ .string "You have no more room for this\nitem.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416888:: @ 0x8416888
+ .string "{STR_VAR_1}を\nいれる ばしょが いっぱいです{PAUSE_UNTIL_PRESS}$"
gUnknown_841689E:: @ 841689E
- .incbin "baserom.gba", 0x41689E, 0x53
+ .string "Is there anything else I can do?$"
+
+gUnknown_84168BF:: @ 0x84168BF
+ .string "その ほかに\nなにか ちからに なれることは?$"
+
+gUnknown_84168D7:: @ 0x84168D7
+ .string "プレミアボ-ル 1コ\nおまけ しておきますね!{PAUSE_UNTIL_PRESS}$"
gText_OhNoICantBuyThat:: @ 84168F1
.string "{STR_VAR_1}? Oh, no.\n"
@@ -529,207 +727,446 @@ gText_ICanPayThisMuch_WouldThatBeOkay:: @ 8416936
.string "Would that be okay?$"
gText_TurnedOverItemsWorthYen:: @ 8416959
- .incbin "baserom.gba", 0x416959, 0x21
+ .string "Turned over the {STR_VAR_1}シSス\nworth ¥{STR_VAR_3}.$"
gText_PokedollarVar1:: @ 841697A
- .incbin "baserom.gba", 0x41697A, 0x48
+ .string "¥{STR_VAR_1}$"
+
+gUnknown_841697E:: @ 0x841697E
+ .string "SHIFT$"
+
+gUnknown_8416984:: @ 0x8416984
+ .string "SEND OUT$"
+
+gUnknown_841698D:: @ 0x841698D
+ .string "SWITCH$"
+
+gUnknown_8416994:: @ 0x8416994
+ .string "SUMMARY$"
+
+gUnknown_841699C:: @ 0x841699C
+ .string "つかえるわざ$"
+
+gUnknown_84169A3:: @ 0x84169A3
+ .string "ENTER$"
+
+gUnknown_84169A9:: @ 0x84169A9
+ .string "NO ENTRY$"
+
+gUnknown_84169B2:: @ 0x84169B2
+ .string "TAKE$"
+
+gUnknown_84169B7:: @ 0x84169B7
+ .string "READ$"
+
+gUnknown_84169BC:: @ 0x84169BC
+ .string "TRADE$"
gUnknown_84169C2:: @ 84169C2
- .incbin "baserom.gba", 0x4169C2, 0x3
+ .string "HP$"
gUnknown_84169C5:: @ 84169C5
- .incbin "baserom.gba", 0x4169C5, 0x8
+ .string "SP. ATK$"
gUnknown_84169CD:: @ 84169CD
- .incbin "baserom.gba", 0x4169CD, 0x8
+ .string "SP. DEF$"
gUnknown_84169D5:: @ 84169D5
- .incbin "baserom.gba", 0x4169D5, 0x4
+ .string "OK$"
+
+gUnknown_84169D8:: @ 0x84169D8
+ .string "$"
gUnknown_84169D9:: @ 84169D9
- .incbin "baserom.gba", 0x4169D9, 0x3
+ .string "{PAUSE_UNTIL_PRESS}$"
gUnknown_84169DC:: @ 84169DC
- .incbin "baserom.gba", 0x4169DC, 0x1C
+ .string "It won't have any effect.{PAUSE_UNTIL_PRESS}$"
gUnknown_84169F8:: @ 84169F8
.string "This can't be used on\n"
.string "that POKéMON.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416A1E:: @ 8416A1E
- .incbin "baserom.gba", 0x416A1E, 0x1C
+ .string "{STR_VAR_1} can't be switched\nout!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416A3A:: @ 8416A3A
- .incbin "baserom.gba", 0x416A3A, 0x1B
+ .string "{STR_VAR_1} is already\nin battle!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416A55:: @ 8416A55
- .incbin "baserom.gba", 0x416A55, 0x20
+ .string "{STR_VAR_1} has already been\nselected.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416A75:: @ 8416A75
- .incbin "baserom.gba", 0x416A75, 0x23
+ .string "{STR_VAR_1} has no energy\nleft to battle!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416A98:: @ 8416A98
- .incbin "baserom.gba", 0x416A98, 0x33
+ .string "You can't switch {STR_VAR_1}'s\nPOKéMON with one of yours!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416ACB:: @ 8416ACB
- .incbin "baserom.gba", 0x416ACB, 0x17
+ .string "An EGG can't battle!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416AE2:: @ 8416AE2
- .incbin "baserom.gba", 0x416AE2, 0x34
+ .string "This can't be used until a new\nBADGE is obtained.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416B16:: @ 8416B16
- .incbin "baserom.gba", 0x416B16, 0x28
+ .string "No more than three POKéMON\nmay enter.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416B3E:: @ 8416B3E
- .incbin "baserom.gba", 0x416B3E, 0x26
+ .string "No more than two POKéMON\nmay enter.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416B64:: @ 8416B64
- .incbin "baserom.gba", 0x416B64, 0x22
+ .string "Send the removed MAIL to\nyour PC?$"
gUnknown_8416B86:: @ 8416B86
- .incbin "baserom.gba", 0x416B86, 0x20
+ .string "The MAIL was sent to your PC.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416BA6:: @ 8416BA6
- .incbin "baserom.gba", 0x416BA6, 0x1D
+ .string "Your PC's MAILBOX is full.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416BC3:: @ 8416BC3
- .incbin "baserom.gba", 0x416BC3, 0x38
+ .string "If the MAIL is removed, the\nmessage will be lost. Okay?$"
gUnknown_8416BFB:: @ 8416BFB
- .incbin "baserom.gba", 0x416BFB, 0x2F
+ .string "MAIL must be removed before\nholding an item.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416C2A:: @ 8416C2A
- .incbin "baserom.gba", 0x416C2A, 0x1F
+ .string "{STR_VAR_1} was given the\n{STR_VAR_2} to hold.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416C49:: @ 8416C49
- .incbin "baserom.gba", 0x416C49, 0x46
+ .string "{STR_VAR_1} is already holding\none {STR_VAR_2}.\pWould you like to switch the\ntwo items?$"
gUnknown_8416C8F:: @ 8416C8F
- .incbin "baserom.gba", 0x416C8F, 0x1D
+ .string "{STR_VAR_1} isn't holding\nanything.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416CAC:: @ 8416CAC
- .incbin "baserom.gba", 0x416CAC, 0x1B
+ .string "Received the {STR_VAR_2}\nfrom {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416CC7:: @ 8416CC7
- .incbin "baserom.gba", 0x416CC7, 0x23
+ .string "MAIL was taken from the\nPOKéMON.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416CEA:: @ 8416CEA
- .incbin "baserom.gba", 0x416CEA, 0x2D
+ .string "The {STR_VAR_2} was taken and\nreplaced with the {STR_VAR_1}.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416D17:: @ 8416D17
- .incbin "baserom.gba", 0x416D17, 0x38
+ .string "This POKéMON is holding an\nitem. It cannot hold MAIL.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416D4F:: @ 8416D4F
- .incbin "baserom.gba", 0x416D4F, 0x29
+ .string "MAIL was transferred from\nthe MAILBOX.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416D78:: @ 8416D78
- .incbin "baserom.gba", 0x416D78, 0x3B
+ .string "The {STR_VAR_1} is full. The POKéMON's\nitem could not be removed.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416DB3:: @ 8416DB3
- .incbin "baserom.gba", 0x416DB3, 0xF
+ .string "{STR_VAR_1} learned\n{STR_VAR_2}!$"
gUnknown_8416DC2:: @ 8416DC2
- .incbin "baserom.gba", 0x416DC2, 0x35
+ .string "{STR_VAR_1} and {STR_VAR_2}\nare not compatible.\p{STR_VAR_2} can't be\nlearned.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416DF7:: @ 8416DF7
- .incbin "baserom.gba", 0x416DF7, 0x74
+ .string "{STR_VAR_1} wants to learn the\nmove {STR_VAR_2}.\pHowever, {STR_VAR_1} already\nknows four moves.\pShould a move be deleted and\nreplaced with {STR_VAR_2}?$"
gUnknown_8416E6B:: @ 8416E6B
- .incbin "baserom.gba", 0x416E6B, 0x19
+ .string "Stop trying to teach\n{STR_VAR_2}?$"
gUnknown_8416E84:: @ 8416E84
- .incbin "baserom.gba", 0x416E84, 0x20
+ .string "{STR_VAR_1} did not learn the\nmove {STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416EA4:: @ 8416EA4
- .incbin "baserom.gba", 0x416EA4, 0x22
+ .string "Which move should be forgotten?{PAUSE_UNTIL_PRESS}$"
gUnknown_8416EC6:: @ 8416EC6
- .incbin "baserom.gba", 0x416EC6, 0x4A
+ .string "1, {PAUSE 0x0F}2, and{PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}{PLAY_SE SE_TRACK_MOVE}Poof!\p{STR_VAR_1} forgot how to\nuse {STR_VAR_2}.\pAnd...{PAUSE_UNTIL_PRESS}$"
gUnknown_8416F10:: @ 8416F10
- .incbin "baserom.gba", 0x416F10, 0x17
+ .string "{STR_VAR_1} already knows\n{STR_VAR_2}.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416F27:: @ 8416F27
.string "{STR_VAR_1}'s HP was restored\n"
.string "by {STR_VAR_2} point(s).{PAUSE_UNTIL_PRESS}$"
gUnknown_8416F4E:: @ 8416F4E
- .incbin "baserom.gba", 0x416F4E, 0x21
+ .string "{STR_VAR_1} was cured of its\npoisoning.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416F6F:: @ 8416F6F
- .incbin "baserom.gba", 0x416F6F, 0x1D
+ .string "{STR_VAR_1} was cured of\nparalysis.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416F8C:: @ 8416F8C
- .incbin "baserom.gba", 0x416F8C, 0xE
+ .string "{STR_VAR_1} woke up.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416F9A:: @ 8416F9A
- .incbin "baserom.gba", 0x416F9A, 0x18
+ .string "{STR_VAR_1}'s burn was healed.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416FB2:: @ 8416FB2
- .incbin "baserom.gba", 0x416FB2, 0x15
+ .string "{STR_VAR_1} was thawed out.{PAUSE_UNTIL_PRESS}$"
gUnknown_8416FC7:: @ 8416FC7
- .incbin "baserom.gba", 0x416FC7, 0x26
+ .string "PP was restored.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8416FDA:: @ 0x8416FDA
+ .string "{STR_VAR_1}は\nげんきを とりもどした!{PAUSE_UNTIL_PRESS}$"
gUnknown_8416FED:: @ 8416FED
- .incbin "baserom.gba", 0x416FED, 0x15
+ .string "{STR_VAR_1} became healthy.{PAUSE_UNTIL_PRESS}$"
gUnknown_8417002:: @ 8417002
- .incbin "baserom.gba", 0x417002, 0x15
+ .string "{STR_VAR_1}'s PP increased.{PAUSE_UNTIL_PRESS}$"
gUnknown_8417017:: @ 8417017
- .incbin "baserom.gba", 0x417017, 0x1B
+ .string "{STR_VAR_1} was elevated to\nLv. {STR_VAR_2}.$"
gUnknown_8417032:: @ 8417032
- .incbin "baserom.gba", 0x417032, 0x20
+ .string "{STR_VAR_1}'s base {STR_VAR_2}\nstat was raised.{PAUSE_UNTIL_PRESS}$"
gUnknown_8417052:: @ 8417052
- .incbin "baserom.gba", 0x417052, 0x23
+ .string "{STR_VAR_1} snapped out of its\nconfusion.{PAUSE_UNTIL_PRESS}$"
gUnknown_8417075:: @ 8417075
- .incbin "baserom.gba", 0x417075, 0x47
+ .string "{STR_VAR_1} got over its\ninfatuation.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8417094:: @ 0x8417094
+ .string "That's your only\nPOKéMON for battle.$"
+ .align 2
gUnknown_84170BC:: @ 84170BC
- .incbin "baserom.gba", 0x4170BC, 0x24
+ .string "That POKéMON can't be traded\nnow.$"
+ .align 2
gUnknown_84170E0:: @ 84170E0
- .incbin "baserom.gba", 0x4170E0, 0x377
+ .string "An EGG can't be traded now.$"
+
+gUnknown_84170FC:: @ 0x84170FC
+ .string "The other TRAINER's POKéMON\ncan't be traded now.$"
+
+gUnknown_841712D:: @ 0x841712D
+ .string " The other TRAINER can't accept\nthat POKéMON now.$"
+
+gUnknown_8417161:: @ 0x8417161
+ .string " You can't trade with that\nTRAINER now.$"
+
+gUnknown_841718B:: @ 0x841718B
+ .string " That isn't the type of POKéMON\nthat the other TRAINER wants.$"
+
+gUnknown_84171C9:: @ 0x84171C9
+ .string " That isn't an EGG.$"
+
+gUnknown_84171DF:: @ 0x84171DF
+ .string "Choose a POKéMON.$"
+
+gUnknown_84171F1:: @ 0x84171F1
+ .string "Move to where?$"
+
+gUnknown_8417200:: @ 0x8417200
+ .string "Teach which POKéMON?$"
+
+gUnknown_8417215:: @ 0x8417215
+ .string "Use on which POKéMON?$"
+
+gUnknown_841722B:: @ 0x841722B
+ .string "Give to which POKéMON?$"
+
+gUnknown_8417242:: @ 0x8417242
+ .string "Do what with this {PKMN}?$"
+
+gUnknown_8417258:: @ 0x8417258
+ .string "There's nothing to CUT.$"
+
+gUnknown_8417270:: @ 0x8417270
+ .string "No SURFING here!$"
+
+gUnknown_8417281:: @ 0x8417281
+ .string "You're already SURFING.$"
+
+gUnknown_8417299:: @ 0x8417299
+ .string "Can't use that here.$"
+
+gUnknown_84172AE:: @ 0x84172AE
+ .string "Restore which move?$"
+
+gUnknown_84172C2:: @ 0x84172C2
+ .string "Boost PP of which?$"
+
+gUnknown_84172D5:: @ 0x84172D5
+ .string "Do what with an item?$"
+
+gUnknown_84172EB:: @ 0x84172EB
+ .string "No battling this way!$"
+
+gUnknown_8417301:: @ 0x8417301
+ .string "Choose a POKéMON.$"
+
+gUnknown_8417313:: @ 0x8417313
+ .string "Not enough HP‥$"
+
+gUnknown_8417322:: @ 0x8417322
+ .string "Three {PKMN} are needed.$"
+
+gUnknown_8417337:: @ 0x8417337
+ .string "{PKMN} can't be the same.$"
+
+gUnknown_841734D:: @ 0x841734D
+ .string "No same hold items!$"
+
+gUnknown_8417361:: @ 0x8417361
+ .string "The current is much too fast!$"
+
+gUnknown_841737F:: @ 0x841737F
+ .string "Do what with the MAIL?$"
+
+gUnknown_8417396:: @ 0x8417396
+ .string "Choose POKéMON or CANCEL.$"
+
+gUnknown_84173B0:: @ 0x84173B0
+ .string "Choose POKéMON and confirm.$"
+
+gUnknown_84173CC:: @ 0x84173CC
+ .string "Two POKéMON are needed.$"
+
+gUnknown_84173E4:: @ 0x84173E4
+ .string "Let's enjoy cycling!$"
+
+gUnknown_84173F9:: @ 0x84173F9
+ .string "This is in use already.$"
+
+gUnknown_8417411:: @ 0x8417411
+ .string "No use.$"
+
+gUnknown_8417419:: @ 0x8417419
+ .string "ABLE$"
+
+gUnknown_841741E:: @ 0x841741E
+ .string "FIRST$"
+
+gUnknown_8417424:: @ 0x8417424
+ .string "SECOND$"
+
+gUnknown_841742B:: @ 0x841742B
+ .string "THIRD$"
+
+gUnknown_8417431:: @ 0x8417431
+ .string "ABLE$"
+
+gUnknown_8417436:: @ 0x8417436
+ .string "NOT ABLE$"
+
+gUnknown_841743F:: @ 0x841743F
+ .string "ABLE!$"
+
+gUnknown_8417445:: @ 0x8417445
+ .string "NOT ABLE!$"
+
+gUnknown_841744F:: @ 0x841744F
+ .string "LEARNED$"
gUnknown_8417457:: @ 8417457
- .incbin "baserom.gba", 0x417457, 0x3D
+ .string "OAK: It's important to get to know\nyour POKéMON thoroughly.\p$"
gUnknown_8417494:: @ 8417494
- .incbin "baserom.gba", 0x417494, 0x181
+ .string "This is a list of your POKéMON,\n{PLAYER}.\pOpen this to check the skills\nand moves of your POKéMON.\pYou also choose POKéMON here if\nyou want to use an item on one.{PAUSE_UNTIL_PRESS}$"
+
+gUnknown_8417533:: @ 0x8417533
+ .string "Cut a tree or grass.$"
+
+gUnknown_8417548:: @ 0x8417548
+ .string "Fly to a known town.$"
+
+gUnknown_841755D:: @ 0x841755D
+ .string "Travel on water.$"
+
+gUnknown_841756E:: @ 0x841756E
+ .string "Move heavy boulders.$"
+
+gUnknown_8417583:: @ 0x8417583
+ .string "Light up darkness.$"
+
+gUnknown_8417596:: @ 0x8417596
+ .string "Shatter a cracked rock.$"
+
+gUnknown_84175AE:: @ 0x84175AE
+ .string "Climb a waterfall.$"
+
+gUnknown_84175C1:: @ 0x84175C1
+ .string "すいちゅうに もぐる$"
+
+gUnknown_84175CC:: @ 0x84175CC
+ .string "Escape from here.$"
+
+gUnknown_84175DE:: @ 0x84175DE
+ .string "Lure wild POKéMON.$"
+
+gUnknown_84175F1:: @ 0x84175F1
+ .string "Share HP.$"
+
+gUnknown_84175FB:: @ 0x84175FB
+ .string "Return to a healing spot.$"
gUnknown_8417615:: @ 8417615
- .incbin "baserom.gba", 0x417615, 0x2B
+ .string "Want to escape from here and return\nto {STR_VAR_1}?$"
gUnknown_8417640:: @ 8417640
- .incbin "baserom.gba", 0x417640, 0x34
+ .string "Want to return to the healing spot\nused last in {STR_VAR_1}?$"
gUnknown_8417674:: @ 8417674
- .incbin "baserom.gba", 0x417674, 0x7
+ .string "ATTACK$"
gUnknown_841767B:: @ 841767B
- .incbin "baserom.gba", 0x41767B, 0x12
+ .string "DEFENSE$"
+
+gUnknown_8417683:: @ 0x8417683
+ .string "とくこう$"
+
+gUnknown_8417688:: @ 0x8417688
+ .string "とくぼう$"
gUnknown_841768D:: @ 841768D
- .incbin "baserom.gba", 0x41768D, 0x9
+ .string "SPEED$"
+
+gUnknown_8417693:: @ 0x8417693
+ .string "HP$"
gUnknown_8417696:: @ 8417696
- .incbin "baserom.gba", 0x417696, 0x22
+ .string "That POKéMON can't participate.{PAUSE_UNTIL_PRESS}$"
gUnknown_84176B8:: @ 84176B8
- .incbin "baserom.gba", 0x4176B8, 0x17
+ .string "Cancel participation?$"
+
+gUnknown_84176CE:: @ 0x84176CE
+ .string "$"
gUnknown_84176CF:: @ 84176CF
- .incbin "baserom.gba", 0x4176CF, 0x2F
+ .string "Cancel the battle?$"
+
+gUnknown_84176E2:: @ 0x84176E2
+ .string "TURN OFF$"
+
+gUnknown_84176EB:: @ 0x84176EB
+ .string "もようがえ$"
+
+gUnknown_84176F1:: @ 0x84176F1
+ .string "ITEM STORAGE$"
gUnknown_84176FE:: @ 84176FE
- .incbin "baserom.gba", 0x4176FE, 0x76
+ .string "MAILBOX$"
+
+gUnknown_8417706:: @ 0x8417706
+ .string "DEPOSIT ITEM$"
+
+gUnknown_8417713:: @ 0x8417713
+ .string "WITHDRAW ITEM$"
+
+gUnknown_8417721:: @ 0x8417721
+ .string "どうぐを すてる$"
+
+gUnknown_841772A:: @ 0x841772A
+ .string "Store items in the PC.$"
+
+gUnknown_8417741:: @ 0x8417741
+ .string "Take out items from the PC.$"
+
+gUnknown_841775D:: @ 0x841775D
+ .string "パソコンに あずけている\nどうぐを すてます$"
gUnknown_8417774:: @ 8417774
- .incbin "baserom.gba", 0x417774, 0x16
+ .string "There are no items.{PAUSE_UNTIL_PRESS}$"
gText_NoMoreRoomInBag:: @ 841778A
.string "There is no more\n"
@@ -753,19 +1190,19 @@ gOtherText_Give2::
.string "GIVE$"
gUnknown_84177EE:: @ 84177EE
- .incbin "baserom.gba", 0x4177EE, 0x18
+ .string "There's no MAIL here.{PAUSE_UNTIL_PRESS}$"
gUnknown_8417806:: @ 8417806
- .incbin "baserom.gba", 0x417806, 0x2A
+ .string "What would you like to do with\n{STR_VAR_1}'s MAIL?$"
gUnknown_8417830:: @ 8417830
- .incbin "baserom.gba", 0x417830, 0x28
+ .string "The message will be lost.\nIs that okay?$"
gUnknown_8417858:: @ 8417858
- .incbin "baserom.gba", 0x417858, 0x13
+ .string "The BAG is full.{PAUSE_UNTIL_PRESS}$"
gUnknown_841786B:: @ 841786B
- .incbin "baserom.gba", 0x41786B, 0x3C
+ .string "The MAIL was returned to the BAG\nwith its message erased.{PAUSE_UNTIL_PRESS}$"
gText_WithdrawItem:: @ 84178A7
.string "WITHDRAW\n"
@@ -778,73 +1215,619 @@ gText_ReturnToPC:: @ 84178BE
.string "Return to the PC.$"
gUnknown_84178D0:: @ 84178D0
- .incbin "baserom.gba", 0x4178D0, 0xA
+ .string "LT. SURGE$"
gUnknown_84178DA:: @ 84178DA
- .incbin "baserom.gba", 0x4178DA, 0x5E
+ .string "KOGA$"
+
+gUnknown_84178DF:: @ 0x84178DF
+ .string "さんか する$"
+
+gUnknown_84178E6:: @ 0x84178E6
+ .string "INFO$"
+
+gUnknown_84178EB:: @ 0x84178EB
+ .string "EGGS$"
+
+gUnknown_84178F0:: @ 0x84178F0
+ .string "HALL OF FAME$"
+
+gUnknown_84178FD:: @ 0x84178FD
+ .string "VICTORIES$"
+
+gUnknown_8417907:: @ 0x8417907
+ .string "QUIT$"
+
+gUnknown_841790C:: @ 0x841790C
+ .string "PSN$"
+
+gUnknown_8417910:: @ 0x8417910
+ .string "PAR$"
+
+gUnknown_8417914:: @ 0x8417914
+ .string "SLP$"
+
+gUnknown_8417918:: @ 0x8417918
+ .string "BRN$"
+
+gUnknown_841791C:: @ 0x841791C
+ .string "FRZ$"
+
+gUnknown_8417920:: @ 0x8417920
+ .string "TOXIC$"
+
+gUnknown_8417926:: @ 0x8417926
+ .string "OK$"
+
+gUnknown_8417929:: @ 0x8417929
+ .string "QUIT$"
+
+gUnknown_841792E:: @ 0x841792E
+ .string "みました$"
+
+gUnknown_8417933:: @ 0x8417933
+ .string "これから$"
gUnknown_8417938:: @ 8417938
- .incbin "baserom.gba", 0x417938, 0x4
+ .string "YES$"
gUnknown_841793C:: @ 841793C
- .incbin "baserom.gba", 0x41793C, 0x263
+ .string "NO$"
+
+gUnknown_841793F:: @ 0x841793F
+ .string "せつめい$"
+
+gUnknown_8417944:: @ 0x8417944
+ .string "SINGLE BATTLE$"
+
+gUnknown_8417952:: @ 0x8417952
+ .string "DOUBLE BATTLE$"
+
+gUnknown_8417960:: @ 0x8417960
+ .string "MULTI BATTLE$"
+
+gUnknown_841796D:: @ 0x841796D
+ .string "Make a challenge.$"
+
+gUnknown_841797F:: @ 0x841797F
+ .string "INFO$"
+
+gUnknown_8417984:: @ 0x8417984
+ .string "FRESH WATER{CLEAR_TO 0x57}{SIZE 0x00}¥200$"
+
+gUnknown_841799A:: @ 0x841799A
+ .string "SODA POP{CLEAR_TO 0x57}{SIZE 0x00}¥300$"
+
+gUnknown_84179AD:: @ 0x84179AD
+ .string "LEMONADE{CLEAR_TO 0x57}{SIZE 0x00}¥350$"
+
+gUnknown_84179C0:: @ 0x84179C0
+ .string "{SIZE 0x00} 50 COINS{CLEAR_TO 0x45}¥1,000$"
+
+gUnknown_84179D6:: @ 0x84179D6
+ .string "{SIZE 0x00}500 COINS{CLEAR_TO 0x40}¥10,000$"
+
+gUnknown_84179ED:: @ 0x84179ED
+ .string "Excellent$"
+
+gUnknown_84179F7:: @ 0x84179F7
+ .string "Not so bad$"
+
+gUnknown_8417A02:: @ 0x8417A02
+ .string "RED SHARD$"
+
+gUnknown_8417A0C:: @ 0x8417A0C
+ .string "YELLOW SHARD$"
+
+gUnknown_8417A19:: @ 0x8417A19
+ .string "BLUE SHARD$"
+
+gUnknown_8417A24:: @ 0x8417A24
+ .string "GREEN SHARD$"
+
+gUnknown_8417A30:: @ 0x8417A30
+ .string "バトルタワ-$"
+
+gUnknown_8417A37:: @ 0x8417A37
+ .string "Right$"
+
+gUnknown_8417A3D:: @ 0x8417A3D
+ .string "Left$"
+
+gUnknown_8417A42:: @ 0x8417A42
+ .string "TM13{CLEAR_TO 0x48}{SIZE 0x00}4,000 COINS$"
+
+gUnknown_8417A58:: @ 0x8417A58
+ .string "TM23{CLEAR_TO 0x48}{SIZE 0x00}3,500 COINS$"
+
+gUnknown_8417A6E:: @ 0x8417A6E
+ .string "TM24{CLEAR_TO 0x48}{SIZE 0x00}4,000 COINS$"
+
+gUnknown_8417A84:: @ 0x8417A84
+ .string "TM30{CLEAR_TO 0x48}{SIZE 0x00}4,500 COINS$"
+
+gUnknown_8417A9A:: @ 0x8417A9A
+ .string "TM35{CLEAR_TO 0x48}{SIZE 0x00}4,000 COINS$"
+
+gUnknown_8417AB0:: @ 0x8417AB0
+ .string "1F$"
+
+gUnknown_8417AB3:: @ 0x8417AB3
+ .string "2F$"
+
+gUnknown_8417AB6:: @ 0x8417AB6
+ .string "3F$"
+
+gUnknown_8417AB9:: @ 0x8417AB9
+ .string "4F$"
+
+gUnknown_8417ABC:: @ 0x8417ABC
+ .string "5F$"
+
+gUnknown_8417ABF:: @ 0x8417ABF
+ .string "COOL$"
+
+gUnknown_8417AC4:: @ 0x8417AC4
+ .string "BEAUTY$"
+
+gUnknown_8417ACB:: @ 0x8417ACB
+ .string "CUTE$"
+
+gUnknown_8417AD0:: @ 0x8417AD0
+ .string "SMART$"
+
+gUnknown_8417AD6:: @ 0x8417AD6
+ .string "TOUGH$"
+
+gUnknown_8417ADC:: @ 0x8417ADC
+ .string "NORMAL$"
+
+gUnknown_8417AE3:: @ 0x8417AE3
+ .string "BLACK$"
+
+gUnknown_8417AE9:: @ 0x8417AE9
+ .string "PINK$"
+
+gUnknown_8417AEE:: @ 0x8417AEE
+ .string "SEPIA$"
+
+gUnknown_8417AF4:: @ 0x8417AF4
+ .string "COOL$"
+
+gUnknown_8417AF9:: @ 0x8417AF9
+ .string "BEAUTY$"
+
+gUnknown_8417B00:: @ 0x8417B00
+ .string "CUTE$"
+
+gUnknown_8417B05:: @ 0x8417B05
+ .string "SMART$"
+
+gUnknown_8417B0B:: @ 0x8417B0B
+ .string "TOUGH$"
+
+gUnknown_8417B11:: @ 0x8417B11
+ .string "ITEMS$"
+
+gUnknown_8417B17:: @ 0x8417B17
+ .string "KEY ITEMS$"
+
+gUnknown_8417B21:: @ 0x8417B21
+ .string "POKé BALLS$"
+
+gUnknown_8417B2C:: @ 0x8417B2C
+ .string "TMs を HMs$"
+
+gUnknown_8417B36:: @ 0x8417B36
+ .string "BERRIES$"
+
+gUnknown_8417B3E:: @ 0x8417B3E
+ .string "BOULDERBADGE$"
+
+gUnknown_8417B4B:: @ 0x8417B4B
+ .string "CASCADEBADGE$"
+
+gUnknown_8417B58:: @ 0x8417B58
+ .string "THUNDERBADGE$"
+
+gUnknown_8417B65:: @ 0x8417B65
+ .string "RAINBOWBADGE$"
+
+gUnknown_8417B72:: @ 0x8417B72
+ .string "SOULBADGE$"
+
+gUnknown_8417B7C:: @ 0x8417B7C
+ .string "MARSHBADGE$"
+
+gUnknown_8417B87:: @ 0x8417B87
+ .string "VOLCANOBADGE$"
+
+gUnknown_8417B94:: @ 0x8417B94
+ .string "EARTHBADGE$"
gUnknown_8417B9F:: @ 8417B9F
- .incbin "baserom.gba", 0x417B9F, 0xD
+ .string "SOMEONE'S PC$"
gUnknown_8417BAC:: @ 8417BAC
- .incbin "baserom.gba", 0x417BAC, 0xA
+ .string "BILL'S PC$"
gUnknown_8417BB6:: @ 8417BB6
- .incbin "baserom.gba", 0x417BB6, 0x8
+ .string "{PLAYER}'s PC$"
gUnknown_8417BBE:: @ 8417BBE
- .incbin "baserom.gba", 0x417BBE, 0xD
+ .string "HALL OF FAME$"
gUnknown_8417BCB:: @ 8417BCB
- .incbin "baserom.gba", 0x417BCB, 0x8
+ .string "LOG OFF$"
gUnknown_8417BD3:: @ 8417BD3
- .incbin "baserom.gba", 0x417BD3, 0x5A
+ .string "PROF. OAK's PC$"
+
+gUnknown_8417BE2:: @ 0x8417BE2
+ .string "EEVEE$"
+
+gUnknown_8417BE8:: @ 0x8417BE8
+ .string "FLAREON$"
+
+gUnknown_8417BF0:: @ 0x8417BF0
+ .string "JOLTEON$"
+
+gUnknown_8417BF8:: @ 0x8417BF8
+ .string "VAPOREON$"
+
+gUnknown_8417C01:: @ 0x8417C01
+ .string "Quit looking.$"
+
+gUnknown_8417C0F:: @ 0x8417C0F
+ .string "FRESH WATER$"
+
+gUnknown_8417C1B:: @ 0x8417C1B
+ .string "SODA POP$"
+
+gUnknown_8417C24:: @ 0x8417C24
+ .string "LEMONADE$"
gUnknown_8417C2D:: @ 8417C2D
- .incbin "baserom.gba", 0x417C2D, 0x1C0
+ .string "COINS$"
+
+gUnknown_8417C33:: @ 0x8417C33
+ .string "BICYCLE{CLEAR_TO 0x49}{SIZE 0x00}¥1,000,000$"
+
+gUnknown_8417C4B:: @ 0x8417C4B
+ .string "NO THANKS$"
+
+gUnknown_8417C55:: @ 0x8417C55
+ .string "ABRA{CLEAR_TO 0x55}{SIZE 0x00} 180 COINS$"
+
+gUnknown_8417C6A:: @ 0x8417C6A
+ .string "CLEFAIRY{CLEAR_TO 0x55}{SIZE 0x00} 500 COINS$"
+
+gUnknown_8417C83:: @ 0x8417C83
+ .string "DRATINI{CLEAR_TO 0x4B}{SIZE 0x00} 2,800 COINS$"
+
+gUnknown_8417C9D:: @ 0x8417C9D
+ .string "SCYTHER{CLEAR_TO 0x4B}{SIZE 0x00} 5,500 COINS$"
+
+gUnknown_8417CB7:: @ 0x8417CB7
+ .string "PORYGON{CLEAR_TO 0x4B}{SIZE 0x00} 9,999 COINS$"
+
+gUnknown_8417CD1:: @ 0x8417CD1
+ .string "ABRA{CLEAR_TO 0x55}{SIZE 0x00} 120 COINS$"
+
+gUnknown_8417CE6:: @ 0x8417CE6
+ .string "CLEFAIRY{CLEAR_TO 0x55}{SIZE 0x00} 750 COINS$"
+
+gUnknown_8417CFF:: @ 0x8417CFF
+ .string "PINSIR{CLEAR_TO 0x4B}{SIZE 0x00} 2,500 COINS$"
+
+gUnknown_8417D18:: @ 0x8417D18
+ .string "DRATINI{CLEAR_TO 0x4B}{SIZE 0x00} 4,600 COINS$"
+
+gUnknown_8417D32:: @ 0x8417D32
+ .string "PORYGON{CLEAR_TO 0x4B}{SIZE 0x00} 6,500 COINS$"
+
+gUnknown_8417D4C:: @ 0x8417D4C
+ .string "NO THANKS$"
+
+gUnknown_8417D56:: @ 0x8417D56
+ .string "HELIX FOSSIL$"
+
+gUnknown_8417D63:: @ 0x8417D63
+ .string "DOME FOSSIL$"
+
+gUnknown_8417D6F:: @ 0x8417D6F
+ .string "OLD AMBER$"
+
+gUnknown_8417D79:: @ 0x8417D79
+ .string "TRADE CENTER$"
+
+gUnknown_8417D86:: @ 0x8417D86
+ .string "COLOSSEUM$"
+
+gUnknown_8417D90:: @ 0x8417D90
+ .string "Game Link cable$"
+
+gUnknown_8417DA0:: @ 0x8417DA0
+ .string "Wireless$"
+
+gUnknown_8417DA9:: @ 0x8417DA9
+ .string "ITEMS POCKET$"
+
+gUnknown_8417DB6:: @ 0x8417DB6
+ .string "KEY ITEMS POCKET$"
+
+gUnknown_8417DC7:: @ 0x8417DC7
+ .string "POKé BALLS POCKET$"
+
+gUnknown_8417DD9:: @ 0x8417DD9
+ .string "TM CASE$"
+
+gUnknown_8417DE1:: @ 0x8417DE1
+ .string "BERRY POUCH$"
gUnknown_8417DED:: @ 8417DED
- .incbin "baserom.gba", 0x417DED, 0x1CC
+ .string "OTHER$"
+
+gUnknown_8417DF3:: @ 0x8417DF3
+ .string "ONE ISLAND$"
+
+gUnknown_8417DFE:: @ 0x8417DFE
+ .string "TWO ISLAND$"
+
+gUnknown_8417E09:: @ 0x8417E09
+ .string "THREE ISLAND$"
+
+gUnknown_8417E16:: @ 0x8417E16
+ .string "FOUR ISLAND$"
+
+gUnknown_8417E22:: @ 0x8417E22
+ .string "FIVE ISLAND$"
+
+gUnknown_8417E2E:: @ 0x8417E2E
+ .string "SIX ISLAND$"
+
+gUnknown_8417E39:: @ 0x8417E39
+ .string "SEVEN ISLAND$"
+
+gUnknown_8417E46:: @ 0x8417E46
+ .string "VERMILION$"
+
+gUnknown_8417E50:: @ 0x8417E50
+ .string "COLOSSEUM$"
+
+gUnknown_8417E5A:: @ 0x8417E5A
+ .string "BERRY CRUSH$"
+
+gUnknown_8417E66:: @ 0x8417E66
+ .string "$"
+
+gUnknown_8417E67:: @ 0x8417E67
+ .string "$"
+
+gUnknown_8417E68:: @ 0x8417E68
+ .string "せつめいを きく$"
+
+gUnknown_8417E71:: @ 0x8417E71
+ .string "$"
+
+gUnknown_8417E72:: @ 0x8417E72
+ .string "POKéMON JUMP$"
+
+gUnknown_8417E7F:: @ 0x8417E7F
+ .string "DODRIO BERRY-PICKING$"
+
+gUnknown_8417E94:: @ 0x8417E94
+ .string "2 TINYMUSHROOMS$"
+
+gUnknown_8417EA4:: @ 0x8417EA4
+ .string "1 BIG MUSHROOM$"
+
+gUnknown_8417EB3:: @ 0x8417EB3
+ .string "SEVII ISLANDS$"
+
+gUnknown_8417EC1:: @ 0x8417EC1
+ .string "NAVEL ROCK$"
+
+gUnknown_8417ECC:: @ 0x8417ECC
+ .string "BIRTH ISLAND$"
+
+gUnknown_8417ED9:: @ 0x8417ED9
+ .string "MIRACLE SEED{CLEAR_TO 0x50}{SIZE 0x00}1,000 COINS$"
+
+gUnknown_8417EF7:: @ 0x8417EF7
+ .string "CHARCOAL{CLEAR_TO 0x50}{SIZE 0x00}1,000 COINS$"
+
+gUnknown_8417F11:: @ 0x8417F11
+ .string "MYSTIC WATER{CLEAR_TO 0x50}{SIZE 0x00}1,000 COINS$"
+
+gUnknown_8417F2F:: @ 0x8417F2F
+ .string "YELLOW FLUTE{CLEAR_TO 0x50}{SIZE 0x00}1,600 COINS$"
+
+gUnknown_8417F4D:: @ 0x8417F4D
+ .string "SMOKE BALL{CLEAR_TO 0x5A}{SIZE 0x00}800 COINS$"
+
+gUnknown_8417F67:: @ 0x8417F67
+ .string "$"
+
+gUnknown_8417F68:: @ 0x8417F68
+ .string "$"
+
+gUnknown_8417F69:: @ 0x8417F69
+ .string "BECOME LEADER$"
+
+gUnknown_8417F77:: @ 0x8417F77
+ .string "JOIN GROUP$"
+
+gUnknown_8417F82:: @ 0x8417F82
+ .string "SINGLE$"
+
+gUnknown_8417F89:: @ 0x8417F89
+ .string "DOUBLE$"
+
+gUnknown_8417F90:: @ 0x8417F90
+ .string "KNOCKOUT$"
+
+gUnknown_8417F99:: @ 0x8417F99
+ .string "MIXED$"
+
+gUnknown_8417F9F:: @ 0x8417F9F
+ .string "99かい いじょう$"
+
+gUnknown_8417FA9:: @ 0x8417FA9
+ .string "1ぷん いじょう$"
+
+gUnknown_8417FB2:: @ 0x8417FB2
+ .string "びょう$"
+
+gUnknown_8417FB6:: @ 0x8417FB6
+ .string "かい$"
gUnknown_8417FB9:: @ 8417FB9
- .incbin "baserom.gba", 0x417FB9, 0x2
+ .string ".$"
gUnknown_8417FBB:: @ 8417FBB
- .incbin "baserom.gba", 0x417FBB, 0x8
+ .string "Big guy$"
gUnknown_8417FC3:: @ 8417FC3
- .incbin "baserom.gba", 0x417FC3, 0x9
+ .string "Big girl$"
gUnknown_8417FCC:: @ 8417FCC
- .incbin "baserom.gba", 0x417FCC, 0x4
+ .string "son$"
gUnknown_8417FD0:: @ 8417FD0
- .incbin "baserom.gba", 0x417FD0, 0xA5
+ .string "daughter$"
+
+gUnknown_8417FD9:: @ 0x8417FD9
+ .string "BOULDERBADGE$"
+
+gUnknown_8417FE6:: @ 0x8417FE6
+ .string "CASCADEBADGE$"
+
+gUnknown_8417FF3:: @ 0x8417FF3
+ .string "THUNDERBADGE$"
+
+gUnknown_8418000:: @ 0x8418000
+ .string "RAINBOWBADGE$"
+
+gUnknown_841800D:: @ 0x841800D
+ .string "SOULBADGE$"
+
+gUnknown_8418017:: @ 0x8418017
+ .string "MARSHBADGE$"
+
+gUnknown_8418022:: @ 0x8418022
+ .string "VOLCANOBADGE$"
+
+gUnknown_841802F:: @ 0x841802F
+ .string "EARTHBADGE$"
+
+gUnknown_841803A:: @ 0x841803A
+ .string "1F$"
+
+gUnknown_841803D:: @ 0x841803D
+ .string "2F$"
+
+gUnknown_8418040:: @ 0x8418040
+ .string "3F$"
+
+gUnknown_8418043:: @ 0x8418043
+ .string "4F$"
+
+gUnknown_8418046:: @ 0x8418046
+ .string "5F$"
+
+gUnknown_8418049:: @ 0x8418049
+ .string "6F$"
+
+gUnknown_841804C:: @ 0x841804C
+ .string "7F$"
+
+gUnknown_841804F:: @ 0x841804F
+ .string "8F$"
+
+gUnknown_8418052:: @ 0x8418052
+ .string "9F$"
+
+gUnknown_8418055:: @ 0x8418055
+ .string "10F$"
+
+gUnknown_8418059:: @ 0x8418059
+ .string "11F$"
+
+gUnknown_841805D:: @ 0x841805D
+ .string "B1F$"
+
+gUnknown_8418061:: @ 0x8418061
+ .string "B2F$"
+
+gUnknown_8418065:: @ 0x8418065
+ .string "B3F$"
+
+gUnknown_8418069:: @ 0x8418069
+ .string "B4F$"
+
+gUnknown_841806D:: @ 0x841806D
+ .string "ROOFTOP$"
gUnknown_8418075:: @ 8418075
- .incbin "baserom.gba", 0x418075, 0xFF
+ .string "Now on:$"
+
+gUnknown_841807D:: @ 0x841807D
+ .string "LINKED GAME PLAY$"
+
+gUnknown_841808E:: @ 0x841808E
+ .string "DIRECT CORNER$"
+
+gUnknown_841809C:: @ 0x841809C
+ .string "UNION ROOM$"
+
+gUnknown_84180A7:: @ 0x84180A7
+ .string "ENERGYPOWDER{CLEAR_TO 0x74}{SIZE 0x00}50$"
+
+gUnknown_84180BC:: @ 0x84180BC
+ .string "ENERGY ROOT{CLEAR_TO 0x74}{SIZE 0x00}80$"
+
+gUnknown_84180D0:: @ 0x84180D0
+ .string "HEAL POWDER{CLEAR_TO 0x74}{SIZE 0x00}50$"
+
+gUnknown_84180E4:: @ 0x84180E4
+ .string "REVIVAL HERB{CLEAR_TO 0x6F}{SIZE 0x00}300$"
+
+gUnknown_84180FA:: @ 0x84180FA
+ .string "PROTEIN{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
+
+gUnknown_841810D:: @ 0x841810D
+ .string "IRON{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
+
+gUnknown_841811D:: @ 0x841811D
+ .string "CARBOS{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
+
+gUnknown_841812F:: @ 0x841812F
+ .string "CALCIUM{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
+
+gUnknown_8418142:: @ 0x8418142
+ .string "ZINC{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
+
+gUnknown_8418152:: @ 0x8418152
+ .string "HP UP{CLEAR_TO 0x65}{SIZE 0x00}1,000$"
+
+gUnknown_8418163:: @ 0x8418163
+ .string "PP UP{CLEAR_TO 0x65}{SIZE 0x00}3,000$"
gUnknown_8418174:: @ 8418174
- .incbin "baserom.gba", 0x418174, 0x14
+ .string "{PLAYER}'s BATTLE RESULTS$"
gUnknown_8418188:: @ 8418188
- .incbin "baserom.gba", 0x418188, 0x1C
+ .string "TOTAL RECORD W:{STR_VAR_1} L:{STR_VAR_2} D:{STR_VAR_3}$"
gUnknown_84181A4:: @ 84181A4
- .incbin "baserom.gba", 0x4181A4, 0x12
+ .string "WIN{CLEAR_TO 0x30}LOSE{CLEAR_TO 0x60}DRAW$"
gUnknown_84181B6:: @ 84181B6
- .incbin "baserom.gba", 0x4181B6, 0x8
+ .string "-------$"
gUnknown_84181BE:: @ 84181BE
- .incbin "baserom.gba", 0x4181BE, 0x5
+ .string "----$"
gFameCheckerText_FameCheckerWillBeClosed:: @ 84181C3
.string "The FAME CHECKER will be closed.$"
@@ -854,37 +1837,481 @@ gFameCheckerText_ClearTextbox:: @ 84181E4
.string " $"
gUnknown_8418204:: @ 8418204
- .incbin "baserom.gba", 0x00418204, 0x48c
+ .string "やめる$"
+
+gUnknown_8418208:: @ 0x8418208
+ .string "Exit from the BOX.$"
+
+gUnknown_841821B:: @ 0x841821B
+ .string "What do you want to do?$"
+
+gUnknown_8418233:: @ 0x8418233
+ .string "Please pick a theme.$"
+
+gUnknown_8418248:: @ 0x8418248
+ .string "Pick the wallpaper.$"
+
+gUnknown_841825C:: @ 0x841825C
+ .string "{UNKNOWN_F7 0x00} is selected.$"
+
+gUnknown_841826C:: @ 0x841826C
+ .string "Jump to which BOX?$"
+
+gUnknown_841827F:: @ 0x841827F
+ .string "Deposit in which BOX?$"
+
+gUnknown_8418295:: @ 0x8418295
+ .string "{UNKNOWN_F7 0x00} was deposited.$"
+
+gUnknown_84182A7:: @ 0x84182A7
+ .string "The BOX is full.$"
+
+gUnknown_84182B8:: @ 0x84182B8
+ .string "Release this POKéMON?$"
+
+gUnknown_84182CE:: @ 0x84182CE
+ .string "{UNKNOWN_F7 0x00} was released.$"
+
+gUnknown_84182DF:: @ 0x84182DF
+ .string "Bye-bye, {UNKNOWN_F7 0x00}!$"
+
+gUnknown_84182EC:: @ 0x84182EC
+ .string "Mark your POKéMON.$"
+
+gUnknown_84182FF:: @ 0x84182FF
+ .string "That's your last POKéMON!$"
+
+gUnknown_8418319:: @ 0x8418319
+ .string "Your party's full!$"
+
+gUnknown_841832C:: @ 0x841832C
+ .string "You're holding a POKéMON!$"
+
+gUnknown_8418346:: @ 0x8418346
+ .string "Which one will you take?$"
+
+gUnknown_841835F:: @ 0x841835F
+ .string "You can't release an EGG.$"
+
+gUnknown_8418379:: @ 0x8418379
+ .string "Continue BOX operations?$"
+
+gUnknown_8418392:: @ 0x8418392
+ .string "{UNKNOWN_F7 0x00} came back!$"
+
+gUnknown_84183A0:: @ 0x84183A0
+ .string "Was it worried about you?$"
+
+gUnknown_84183BA:: @ 0x84183BA
+ .string "‥ ‥ ‥ ‥ ‥!$"
+
+gUnknown_84183C5:: @ 0x84183C5
+ .string "Please remove the MAIL.$"
+
+gUnknown_84183DD:: @ 0x84183DD
+ .string "GIVE to a POKéMON?$"
+
+gUnknown_84183F0:: @ 0x84183F0
+ .string "Placed item in the BAG.$"
+
+gUnknown_8418408:: @ 0x8418408
+ .string "The BAG is full.$"
+
+gUnknown_8418419:: @ 0x8418419
+ .string "Put this item in the BAG?$"
+
+gUnknown_8418433:: @ 0x8418433
+ .string "{UNKNOWN_F7 0x00} is now held.$"
+
+gUnknown_8418443:: @ 0x8418443
+ .string "Changed to {UNKNOWN_F7 0x00}.$"
+
+gUnknown_8418452:: @ 0x8418452
+ .string "MAIL can't be stored!$"
+
+gUnknown_8418468:: @ 0x8418468
+ .string "CANCEL$"
+
+gUnknown_841846F:: @ 0x841846F
+ .string "STORE$"
+
+gUnknown_8418475:: @ 0x8418475
+ .string "WITHDRAW$"
+
+gUnknown_841847E:: @ 0x841847E
+ .string "SHIFT$"
+
+gUnknown_8418484:: @ 0x8418484
+ .string "MOVE$"
+
+gUnknown_8418489:: @ 0x8418489
+ .string "PLACE$"
+
+gUnknown_841848F:: @ 0x841848F
+ .string "SUMMARY$"
+
+gUnknown_8418497:: @ 0x8418497
+ .string "RELEASE$"
+
+gUnknown_841849F:: @ 0x841849F
+ .string "MARK$"
+
+gUnknown_84184A4:: @ 0x84184A4
+ .string "NAME$"
+
+gUnknown_84184A9:: @ 0x84184A9
+ .string "JUMP$"
+
+gUnknown_84184AE:: @ 0x84184AE
+ .string "WALLPAPER$"
+
+gUnknown_84184B8:: @ 0x84184B8
+ .string "TAKE$"
+
+gUnknown_84184BD:: @ 0x84184BD
+ .string "GIVE$"
+
+gUnknown_84184C2:: @ 0x84184C2
+ .string "SWITCH$"
+
+gUnknown_84184C9:: @ 0x84184C9
+ .string "BAG$"
+
+gUnknown_84184CD:: @ 0x84184CD
+ .string "INFO$"
+
+gUnknown_84184D2:: @ 0x84184D2
+ .string "SCENERY 1$"
+
+gUnknown_84184DC:: @ 0x84184DC
+ .string "SCENERY 2$"
+
+gUnknown_84184E6:: @ 0x84184E6
+ .string "SCENERY 3$"
+
+gUnknown_84184F0:: @ 0x84184F0
+ .string "ETCETERA$"
+
+gUnknown_84184F9:: @ 0x84184F9
+ .string "FOREST$"
+
+gUnknown_8418500:: @ 0x8418500
+ .string "CITY$"
+
+gUnknown_8418505:: @ 0x8418505
+ .string "DESERT$"
+
+gUnknown_841850C:: @ 0x841850C
+ .string "SAVANNA$"
+
+gUnknown_8418514:: @ 0x8418514
+ .string "CRAG$"
+
+gUnknown_8418519:: @ 0x8418519
+ .string "VOLCANO$"
+
+gUnknown_8418521:: @ 0x8418521
+ .string "SNOW$"
+
+gUnknown_8418526:: @ 0x8418526
+ .string "CAVE$"
+
+gUnknown_841852B:: @ 0x841852B
+ .string "BEACH$"
+
+gUnknown_8418531:: @ 0x8418531
+ .string "SEAFLOOR$"
+
+gUnknown_841853A:: @ 0x841853A
+ .string "RIVER$"
+
+gUnknown_8418540:: @ 0x8418540
+ .string "SKY$"
+
+gUnknown_8418544:: @ 0x8418544
+ .string "STARS$"
+
+gUnknown_841854A:: @ 0x841854A
+ .string "POKéCENTER$"
+
+gUnknown_8418555:: @ 0x8418555
+ .string "TILES$"
+
+gUnknown_841855B:: @ 0x841855B
+ .string "SIMPLE$"
+
+gUnknown_8418562:: @ 0x8418562
+ .string "なにを しますか?$"
+
+gUnknown_841856C:: @ 0x841856C
+ .string "WITHDRAW POKéMON$"
+
+gUnknown_841857D:: @ 0x841857D
+ .string "DEPOSIT POKéMON$"
+
+gUnknown_841858D:: @ 0x841858D
+ .string "MOVE POKéMON$"
+
+gUnknown_841859A:: @ 0x841859A
+ .string "MOVE ITEMS$"
+
+gUnknown_84185A5:: @ 0x84185A5
+ .string "SEE YA!$"
+
+gUnknown_84185AD:: @ 0x84185AD
+ .string "You can withdraw a POKéMON if you\nhave any in a BOX.$"
+
+gUnknown_84185E2:: @ 0x84185E2
+ .string "You can deposit your party\nPOKéMON in any BOX.$"
+
+gUnknown_8418611:: @ 0x8418611
+ .string "You can move POKéMON that are\nstored in any BOX.$"
+
+gUnknown_8418642:: @ 0x8418642
+ .string "You can move items held by any\nPOKéMON in a BOX or your party.$"
+
+gUnknown_8418681:: @ 0x8418681
+ .string "See you later!$"
gUnknown_8418690:: @ 8418690
- .incbin "baserom.gba", 0x418690, 0x20
+ .string "Can't deposit the last POKéMON!$"
gUnknown_84186B0:: @ 84186B0
- .incbin "baserom.gba", 0x4186B0, 0x1D
+ .string "Can't take any more POKéMON.$"
gUnknown_84186CD:: @ 84186CD
- .incbin "baserom.gba", 0x4186CD, 0x26A
+ .string "BOX$"
+
+gUnknown_84186D1:: @ 0x84186D1
+ .string "Combine four words or phrases$"
+
+gUnknown_84186EF:: @ 0x84186EF
+ .string "and make your profile.$"
+
+gUnknown_8418706:: @ 0x8418706
+ .string "Make a message of six phrases.$"
+
+gUnknown_8418725:: @ 0x8418725
+ .string "Max two 12-letter phrases/line.$"
+
+gUnknown_8418745:: @ 0x8418745
+ .string "Find words that describe your$"
+
+gUnknown_8418763:: @ 0x8418763
+ .string "feelings right now.$"
+
+gUnknown_8418777:: @ 0x8418777
+ .string "4つの ことばで$"
+
+gUnknown_8418780:: @ 0x8418780
+ .string "Combine nine words or phrases$"
+
+gUnknown_841879E:: @ 0x841879E
+ .string "and make a message.$"
+
+gUnknown_84187B2:: @ 0x84187B2
+ .string "Change just one word or phrase$"
+
+gUnknown_84187D1:: @ 0x84187D1
+ .string "and improve the BARD's song.$"
+
+gUnknown_84187EE:: @ 0x84187EE
+ .string "and fill out the questionnaire.$"
+
+gUnknown_841880E:: @ 0x841880E
+ .string "Your profile$"
+
+gUnknown_841881B:: @ 0x841881B
+ .string "Your feeling at the battle's start$"
+
+gUnknown_841883E:: @ 0x841883E
+ .string "What you say if you win a battle$"
+
+gUnknown_841885F:: @ 0x841885F
+ .string "What you say if you lose a battle$"
+
+gUnknown_8418881:: @ 0x8418881
+ .string "The answer$"
+
+gUnknown_841888C:: @ 0x841888C
+ .string "The MAIL message$"
+
+gUnknown_841889D:: @ 0x841889D
+ .string "はがきに のせる あいさつは$"
+
+gUnknown_84188AC:: @ 0x84188AC
+ .string "The new song$"
+
+gUnknown_84188B9:: @ 0x84188B9
+ .string "Combine two words or phrases$"
+
+gUnknown_84188D6:: @ 0x84188D6
+ .string "and make a trendy saying.$"
+
+gUnknown_84188F0:: @ 0x84188F0
+ .string "The trendy saying$"
+
+gUnknown_8418902:: @ 0x8418902
+ .string "is as shown. Okay?$"
+
+gUnknown_8418915:: @ 0x8418915
+ .string "2つの ことばを くみあわせて$"
+
+gUnknown_8418925:: @ 0x8418925
+ .string "いい ことばを おしえてあげよう!$"
gUnknown_8418937:: @ 8418937
- .incbin "baserom.gba", 0x418937, 0x1F
+ .string "All the text being edited will$"
gUnknown_8418956:: @ 8418956
- .incbin "baserom.gba", 0x418956, 0x8A
+ .string "be deleted. Is that okay?$"
+
+gUnknown_8418970:: @ 0x8418970
+ .string "なにか ことばを いれてください!$"
+
+gUnknown_8418982:: @ 0x8418982
+ .string "ことばを ぜんぶ けすことは できません!$"
+
+gUnknown_8418998:: @ 0x8418998
+ .string "かえられる ことばは 1つ までです!$"
+
+gUnknown_84189AC:: @ 0x84189AC
+ .string "うたを もとに もどします!$"
+
+gUnknown_84189BB:: @ 0x84189BB
+ .string "それは もう はやっています!$"
+
+gUnknown_84189CB:: @ 0x84189CB
+ .string "2つの ことばを くみあわせてください!$"
gUnknown_84189E0:: @ 84189E0
- .incbin "baserom.gba", 0x4189E0, 0xE
+ .string "Quit editing?$"
gUnknown_84189EE:: @ 84189EE
- .incbin "baserom.gba", 0x4189EE, 0x22D
+ .string "Stop giving the POKéMON MAIL?$"
+
+gUnknown_8418A0C:: @ 0x8418A0C
+ .string "へんしゅうした ことばは ほぞん$"
+
+gUnknown_8418A1D:: @ 0x8418A1D
+ .string "されませんが いいですか?$"
+
+gUnknown_8418A2B:: @ 0x8418A2B
+ .string "PROFILE$"
+
+gUnknown_8418A33:: @ 0x8418A33
+ .string "At the battle's start:$"
+
+gUnknown_8418A4A:: @ 0x8418A4A
+ .string "Upon winning a battle:$"
+
+gUnknown_8418A61:: @ 0x8418A61
+ .string "Upon losing a battle:$"
+
+gUnknown_8418A77:: @ 0x8418A77
+ .string "The BARD's Song$"
+
+gUnknown_8418A87:: @ 0x8418A87
+ .string "What's hip and happening?$"
+
+gUnknown_8418AA1:: @ 0x8418AA1
+ .string "Interview$"
+
+gUnknown_8418AAB:: @ 0x8418AAB
+ .string "いい ことば$"
+
+gUnknown_8418AB2:: @ 0x8418AB2
+ .string "QUESTIONNAIRE$"
+
+gUnknown_8418AC0:: @ 0x8418AC0
+ .string " きれい だよね-$"
+
+gUnknown_8418ACA:: @ 0x8418ACA
+ .string " かわいい よね-$"
+
+gUnknown_8418AD4:: @ 0x8418AD4
+ .string " のんびり だよね-$"
+
+gUnknown_8418ADF:: @ 0x8418ADF
+ .string " ぽっかぽか だよね-$"
+
+gUnknown_8418AEB:: @ 0x8418AEB
+ .string " あこがれる よね-$"
+
+gUnknown_8418AF6:: @ 0x8418AF6
+ .string " ドキドキ するよね-$"
+
+gUnknown_8418B02:: @ 0x8418B02
+ .string " おもしろい よね-$"
+
+gUnknown_8418B0D:: @ 0x8418B0D
+ .string " ふしぎ だよね-$"
+
+gUnknown_8418B17:: @ 0x8418B17
+ .string "って$"
+
+gUnknown_8418B1A:: @ 0x8418B1A
+ .string "\nそう おもわない?$"
+
+gUnknown_8418B25:: @ 0x8418B25
+ .string "たびに でたいな-\nどこか いい ところ しらない?$"
+
+gUnknown_8418B40:: @ 0x8418B40
+ .string "120しょくの クレヨン かったんだ-\nいいでしょう?$"
+
+gUnknown_8418B5C:: @ 0x8418B5C
+ .string "しゃぼんだまに のって とべるように\nならないかな-$"
+
+gUnknown_8418B77:: @ 0x8418B77
+ .string "すなはまに かいた もじは\nすぐに きえちゃうのが かなしいよね-$"
+
+gUnknown_8418B99:: @ 0x8418B99
+ .string "うみの そこって どうなってるのかな-\nいちどで いいから みて みたいな-$"
+
+gUnknown_8418BC0:: @ 0x8418BC0
+ .string "ゆうやけを みると\nウチに かえりたく ならない?$"
+
+gUnknown_8418BDA:: @ 0x8418BDA
+ .string "みどりの しばで ねころがると\nきもちいいよね-$"
+
+gUnknown_8418BF3:: @ 0x8418BF3
+ .string "ひみつきち って いいよね!\nなんか わくわく してこない?$"
+
+gUnknown_8418C12:: @ 0x8418C12
+ .string "ポケモン リ-グ$"
gUnknown_8418C1B:: @ 8418C1B
.string "POKéMON CENTER$"
gUnknown_8418C2A:: @ 8418C2A
- .incbin "baserom.gba", 0x418C2A, 0x59
+ .string "に ポロックを あげますか?$"
+
+gUnknown_8418C39:: @ 0x8418C39
+ .string "かっこよさ$"
+
+gUnknown_8418C3F:: @ 0x8418C3F
+ .string "うつくしさ$"
+
+gUnknown_8418C45:: @ 0x8418C45
+ .string "かわいさ$"
+
+gUnknown_8418C4A:: @ 0x8418C4A
+ .string "かしこさ$"
+
+gUnknown_8418C4F:: @ 0x8418C4F
+ .string "たくましさ$"
+
+gUnknown_8418C55:: @ 0x8418C55
+ .string "に みがきが かかった!$"
+
+gUnknown_8418C62:: @ 0x8418C62
+ .string "なにも かわらなかった!$"
+
+gUnknown_8418C6F:: @ 0x8418C6F
+ .string "もう これいじょう たべない みたい‥$"
gUnknown_8418C83:: @ 8418C83
- .incbin "baserom.gba", 0x418C83, 0x56
+ .string "Save failed.\nChecking the backup memory‥\nPlease wait.\n“Time required:\nabout 1 minute”$"
gUnknown_8418CD9:: @ 8418CD9
.string "The backup memory is damaged or\n"
@@ -894,40 +2321,67 @@ gUnknown_8418CD9:: @ 8418CD9
.string "“Please press the A Button.”$"
gUnknown_8418D70:: @ 8418D70
- .incbin "baserom.gba", 0x418D70, 0x99
+ .string "{COLOR RED}“このまま ぼうけんをつづけることは できません\nタイトルに もどります”$"
+
+gUnknown_8418D99:: @ 0x8418D99
+ .string "けんさが しゅうりょうしました!\nもういちど レポ-トを かきこみます\nしばらくおまちください$"
+
+gUnknown_8418DC9:: @ 0x8418DC9
+ .string "レポ-トの かきこみは しゅうりょうしました\n{COLOR RED}“このまま ぼうけんをつづけることは できません\nタイトルに もどります”$"
gUnknown_8418E09:: @ 8418E09
- .incbin "baserom.gba", 0x418E09, 0x6E
+ .string "Save completed.\n“Please press the A Button.”$"
+
+gUnknown_8418E36:: @ 0x8418E36
+ .string "れんらくせん$"
+
+gUnknown_8418E3D:: @ 0x8418E3D
+ .string "ひみつきち$"
+
+gUnknown_8418E43:: @ 0x8418E43
+ .string "アジト$"
+
+gUnknown_8418E47:: @ 0x8418E47
+ .string "YOUR NAME?$"
+
+gUnknown_8418E52:: @ 0x8418E52
+ .string "BOX NAME?$"
+
+gUnknown_8418E5C:: @ 0x8418E5C
+ .string "'s nickname?$"
+
+gUnknown_8418E69:: @ 0x8418E69
+ .string "RIVAL's NAME?$"
gUnknown_8418E77:: @ 8418E77
- .incbin "baserom.gba", 0x418E77, 0x13
+ .string "{KEYGFX_DPAD_ANY}MOVE {KEYGFX_A_BUTTON}OK {KEYGFX_B_BUTTON}BACK$"
gUnknown_8418E8A:: @ 8418E8A
- .incbin "baserom.gba", 0x418E8A, 0x1
+ .string "$"
gUnknown_8418E8B:: @ 8418E8B
- .incbin "baserom.gba", 0x418E8B, 0x2
+ .string " $"
gUnknown_8418E8D:: @ 8418E8D
- .incbin "baserom.gba", 0x418E8D, 0x8
+ .string "{KEYGFX_A_BUTTON}GUIDE$"
gUnknown_8418E95:: @ 8418E95
- .incbin "baserom.gba", 0x418E95, 0x9
+ .string "{KEYGFX_A_BUTTON}CANCEL$"
gUnknown_8418E9E:: @ 8418E9E
- .incbin "baserom.gba", 0x418E9E, 0x9
+ .string "{KEYGFX_A_BUTTON}CANCEL$"
gUnknown_8418EA7:: @ 8418EA7
- .incbin "baserom.gba", 0x418EA7, 0x9
+ .string "{KEYGFX_A_BUTTON}SWITCH$"
gUnknown_8418EB0:: @ 8418EB0
- .incbin "baserom.gba", 0x418EB0, 0x5
+ .string "{KEYGFX_A_BUTTON}OK$"
gUnknown_8418EB5:: @ 8418EB5
- .incbin "baserom.gba", 0x418EB5, 0x7
+ .string "{KEYGFX_DPAD_ANY}MOVE$"
gUnknown_8418EBC:: @ 8418EBC
- .incbin "baserom.gba", 0x418EBC, 0x7
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK$"
gUnknown_8418EC3:: @ 8418EC3
.string "No data$"
@@ -1136,109 +2590,235 @@ gUnknown_84199AB:: @ 84199AB
.string "{UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}).$"
gUnknown_84199F4:: @ 84199F4
- .incbin "baserom.gba", 0x4199F4, 0x217
+ .string "{UNKNOWN_F7 0x00} nature. Apparently met in\na fateful encounter シhatched:\n{UNKNOWN_F7 0x02} at {EXTRA_LV} {UNKNOWN_F7 0x01}ス.$"
+
+gUnknown_8419A3D:: @ 0x8419A3D
+ .string "An odd POKéMON EGG found by the\nDAY-CARE couple.$"
+
+gUnknown_8419A6E:: @ 0x8419A6E
+ .string "An odd POKéMON EGG obtained from\nthe traveling man.$"
+
+gUnknown_8419AA2:: @ 0x8419AA2
+ .string "A wondrously peculiar POKéMON EGG\nobtained at a nice place.$"
+
+gUnknown_8419ADE:: @ 0x8419ADE
+ .string "An odd POKéMON EGG obtained from\nan old woman at the SPA.$"
+
+gUnknown_8419B18:: @ 0x8419B18
+ .string "A peculiar POKéMON EGG obtained\nin a trade.$"
+
+gUnknown_8419B44:: @ 0x8419B44
+ .string "It looks like this\nEGG will take a\nlong time to hatch.$"
+
+gUnknown_8419B7B:: @ 0x8419B7B
+ .string "What will hatch\nfrom this? It will\ntake some time.$"
+
+gUnknown_8419BAE:: @ 0x8419BAE
+ .string "It occasionally\nmoves. It should\nhatch soon.$"
+
+gUnknown_8419BDB:: @ 0x8419BDB
+ .string "It's making sounds.\nIt's almost ready\nto hatch!$"
gUnknown_8419C0B:: @ 8419C0B
- .incbin "baserom.gba", 0x419C0B, 0x8
+ .string "a trade$"
gUnknown_8419C13:: @ 8419C13
- .incbin "baserom.gba", 0x419C13, 0xA
+ .string "Somewhere$"
gUnknown_8419C1D:: @ 8419C1D
- .incbin "baserom.gba", 0x419C1D, 0xD
+ .string "POKéMON INFO$"
gUnknown_8419C2A:: @ 8419C2A
- .incbin "baserom.gba", 0x419C2A, 0xF
+ .string "POKéMON SKILLS$"
gUnknown_8419C39:: @ 8419C39
- .incbin "baserom.gba", 0x419C39, 0xC
+ .string "KNOWN MOVES$"
gUnknown_8419C45:: @ 8419C45
- .incbin "baserom.gba", 0x419C45, 0x8
+ .string "No data$"
gUnknown_8419C4D:: @ 8419C4D
- .incbin "baserom.gba", 0x419C4D, 0xC
+ .string "EXP. POINTS$"
gUnknown_8419C59:: @ 8419C59
- .incbin "baserom.gba", 0x419C59, 0x9
+ .string "NEXT LV.$"
gUnknown_8419C62:: @ 8419C62
- .incbin "baserom.gba", 0x419C62, 0x10
+ .string "{KEYGFX_DPAD_RIGHT}PAGE {KEYGFX_A_BUTTON}CANCEL$"
gUnknown_8419C72:: @ 8419C72
- .incbin "baserom.gba", 0x419C72, 0x9
+ .string "{KEYGFX_A_BUTTON}CANCEL$"
gUnknown_8419C7B:: @ 8419C7B
- .incbin "baserom.gba", 0x419C7B, 0x7
+ .string "{KEYGFX_DPAD_LEFT_RIGHT}PAGE$"
gUnknown_8419C82:: @ 8419C82
- .incbin "baserom.gba", 0x419C82, 0x10
+ .string "{KEYGFX_DPAD_LEFT}PAGE {KEYGFX_A_BUTTON}DETAIL$"
gUnknown_8419C92:: @ 8419C92
- .incbin "baserom.gba", 0x419C92, 0x10
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}SWITCH$"
gUnknown_8419CA2:: @ 8419CA2
- .incbin "baserom.gba", 0x419CA2, 0x7
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK$"
gUnknown_8419CA9:: @ 8419CA9
- .incbin "baserom.gba", 0x419CA9, 0x10
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_A_BUTTON}DELETE$"
gUnknown_8419CB9:: @ 8419CB9
- .incbin "baserom.gba", 0x419CB9, 0x21
+ .string "HM moves can't be\nforgotten now.$"
gUnknown_8419CDA:: @ 8419CDA
- .incbin "baserom.gba", 0x419CDA, 0x7
+ .string "NAME: $"
gUnknown_8419CE1:: @ 8419CE1
- .incbin "baserom.gba", 0x419CE1, 0x6
+ .string "IDNo.$"
gUnknown_8419CE7:: @ 8419CE7
- .incbin "baserom.gba", 0x419CE7, 0x6
+ .string "MONEY$"
gUnknown_8419CED:: @ 8419CED
- .incbin "baserom.gba", 0x419CED, 0x2
+ .string "¥$"
gUnknown_8419CEF:: @ 8419CEF
- .incbin "baserom.gba", 0x419CEF, 0x8
+ .string "POKéDEX$"
gUnknown_8419CF7:: @ 8419CF7
- .incbin "baserom.gba", 0x419CF7, 0x1
+ .string "$"
gUnknown_8419CF8:: @ 8419CF8
- .incbin "baserom.gba", 0x419CF8, 0x5
+ .string ":$"
+
+gUnknown_8419CFA:: @ 0x8419CFA
+ .string "てん$"
gUnknown_8419CFD:: @ 8419CFD
- .incbin "baserom.gba", 0x419CFD, 0xD
+ .string "TIME$"
+
+gUnknown_8419D02:: @ 0x8419D02
+ .string "ゲ-ムポイント$"
gUnknown_8419D0A:: @ 8419D0A
- .incbin "baserom.gba", 0x419D0A, 0x10
+ .string "'s TRAINER CARD$"
gUnknown_8419D1A:: @ 8419D1A
- .incbin "baserom.gba", 0x419D1A, 0x35
+ .string "HALL OF FAME DEBUT $"
+
+gUnknown_8419D2F:: @ 0x8419D2F
+ .string "LINK BATTLES$"
+
+gUnknown_8419D3C:: @ 0x8419D3C
+ .string "LINK CABLE BATTLES$"
gUnknown_8419D4F:: @ 8419D4F
- .incbin "baserom.gba", 0x419D4F, 0x8
+ .string "W:{CLEAR_TO 0x30}L:$"
gUnknown_8419D57:: @ 8419D57
- .incbin "baserom.gba", 0x419D57, 0xF
+ .string "POKéMON TRADES$"
gUnknown_8419D66:: @ 8419D66
- .incbin "baserom.gba", 0x419D66, 0x17
+ .string "UNION TRADES を BATTLES$"
gUnknown_8419D7D:: @ 8419D7D
- .incbin "baserom.gba", 0x419D7D, 0xC
+ .string "BERRY CRUSH$"
gUnknown_8419D89:: @ 8419D89
- .incbin "baserom.gba", 0x419D89, 0x43
+ .string "Waiting for the other TRAINER to\nfinish reading your TRAINER CARD.$"
gUnknown_8419DCC:: @ 8419DCC
- .incbin "baserom.gba", 0x419DCC, 0x86
+ .string "OPTION$"
+
+gUnknown_8419DD3:: @ 0x8419DD3
+ .string "TEXT SPEED$"
+
+gUnknown_8419DDE:: @ 0x8419DDE
+ .string "BATTLE SCENE$"
+
+gUnknown_8419DEB:: @ 0x8419DEB
+ .string "BATTLE STYLE$"
+
+gUnknown_8419DF8:: @ 0x8419DF8
+ .string "SOUND$"
+
+gUnknown_8419DFE:: @ 0x8419DFE
+ .string "BUTTON MODE$"
+
+gUnknown_8419E0A:: @ 0x8419E0A
+ .string "FRAME$"
+
+gUnknown_8419E10:: @ 0x8419E10
+ .string "CANCEL$"
+
+gUnknown_8419E17:: @ 0x8419E17
+ .string "SLOW$"
+
+gUnknown_8419E1C:: @ 0x8419E1C
+ .string "MID$"
+
+gUnknown_8419E20:: @ 0x8419E20
+ .string "FAST$"
+
+gUnknown_8419E25:: @ 0x8419E25
+ .string "ON$"
+
+gUnknown_8419E28:: @ 0x8419E28
+ .string "OFF$"
+
+gUnknown_8419E2C:: @ 0x8419E2C
+ .string "SHIFT$"
+
+gUnknown_8419E32:: @ 0x8419E32
+ .string "SET$"
+
+gUnknown_8419E36:: @ 0x8419E36
+ .string "MONO$"
+
+gUnknown_8419E3B:: @ 0x8419E3B
+ .string "STEREO$"
+
+gUnknown_8419E42:: @ 0x8419E42
+ .string "タイプ$"
+
+gUnknown_8419E46:: @ 0x8419E46
+ .string "HELP$"
+
+gUnknown_8419E4B:: @ 0x8419E4B
+ .string "LゅA$"
+
+gUnknown_8419E4F:: @ 0x8419E4F
+ .string "LR$"
gUnknown_8419E52:: @ 8419E52
- .incbin "baserom.gba", 0x419E52, 0x5
+ .string "TYPE$"
gUnknown_8419E57:: @ 8419E57
- .incbin "baserom.gba", 0x419E57, 0xFD
+ .string "{KEYGFX_DPAD_UP_DOWN}PICK {KEYGFX_DPAD_LEFT_RIGHT}SWITCH {KEYGFX_A_BUTTON}{KEYGFX_B_BUTTON}CANCEL$"
+
+gUnknown_8419E72:: @ 0x8419E72
+ .string "RTCを リセットします\nAで けってい Bで キャンセル$"
+
+gUnknown_8419E90:: @ 0x8419E90
+ .string "げんざいの ゲ-ムない じかん$"
+
+gUnknown_8419EA0:: @ 0x8419EA0
+ .string "ぜんかいの ゲ-ムない じかん$"
+
+gUnknown_8419EB0:: @ 0x8419EB0
+ .string "じかんを さいせってい してください$"
+
+gUnknown_8419EC3:: @ 0x8419EC3
+ .string "じかんを さいせってい しました!\nレポ-トを かいています おまちください$"
+
+gUnknown_8419EEA:: @ 0x8419EEA
+ .string "レポ-トを かきこみました!$"
+
+gUnknown_8419EF9:: @ 0x8419EF9
+ .string "レポ-トの かきこみに\nしっぱい しました‥$"
+
+gUnknown_8419F10:: @ 0x8419F10
+ .string "レポ-トが ないので\nじかんの せっていは できません!$"
+
+gUnknown_8419F2D:: @ 0x8419F2D
+ .string "ゲ-ムない じかんの しゅうせい システムが\nつかえる ように なりました!$"
gUnknown_8419F54:: @ 8419F54
.string "SAVING…\n"
@@ -1278,139 +2858,229 @@ gUnknown_841A111:: @ 841A111 // Retire
.include "data/text/quest_log.inc"
gUnknown_841B285:: @ 841B285
- .incbin "baserom.gba", 0x41B285, 0xE
+ .string " was used on\n$"
gUnknown_841B293:: @ 841B293
- .incbin "baserom.gba", 0x41B293, 0x2
+ .string ".$"
gUnknown_841B295:: @ 841B295
- .incbin "baserom.gba", 0x41B295, 0x12
+ .string "'s level rose to\n$"
gUnknown_841B2A7:: @ 841B2A7
- .incbin "baserom.gba", 0x41B2A7, 0x35
+ .string ".$"
+
+gUnknown_841B2A9:: @ 0x841B2A9
+ .string "{SIZE 0x00}MAX.{SIZE 0x02} HP$"
+
+gUnknown_841B2B7:: @ 0x841B2B7
+ .string "ATTACK$"
+
+gUnknown_841B2BE:: @ 0x841B2BE
+ .string "DEFENSE$"
+
+gUnknown_841B2C6:: @ 0x841B2C6
+ .string "SPEED$"
+
+gUnknown_841B2CC:: @ 0x841B2CC
+ .string "SP. ATK$"
+
+gUnknown_841B2D4:: @ 0x841B2D4
+ .string "SP. DEF$"
gUnknown_841B2DC:: @ 841B2DC
- .incbin "baserom.gba", 0x41B2DC, 0x9
+ .string "{SIZE 0x00}{EXTRA_PLUS}{SIZE 0x02}$"
gUnknown_841B2E5:: @ 841B2E5
- .incbin "baserom.gba", 0x41B2E5, 0x8
+ .string "{SIZE 0x00}-{SIZE 0x02}$"
gUnknown_841B2ED:: @ 841B2ED
- .incbin "baserom.gba", 0x41B2ED, 0x4
+ .string "1, $"
gUnknown_841B2F1:: @ 841B2F1
- .incbin "baserom.gba", 0x41B2F1, 0x15
+ .string "2, and ‥ ‥ ‥ $"
+
+gUnknown_841B2FF:: @ 0x841B2FF
+ .string "Poof!\p$"
gUnknown_841B306:: @ 841B306
- .incbin "baserom.gba", 0x41B306, 0xF
+ .string "{UNKNOWN_F7 0x00} forgot\n{UNKNOWN_F7 0x01}.\p$"
gUnknown_841B315:: @ 841B315
- .incbin "baserom.gba", 0x41B315, 0x6
+ .string "And‥\p$"
gUnknown_841B31B:: @ 841B31B
- .incbin "baserom.gba", 0x41B31B, 0xE
+ .string "Machine set!\p$"
gUnknown_841B329:: @ 841B329
- .incbin "baserom.gba", 0x41B329, 0x5
+ .string "Huh?$"
gUnknown_841B32E:: @ 841B32E
- .incbin "baserom.gba", 0x41B32E, 0x7C
+ .string "{UNKNOWN_F7 0x00} learned\n{UNKNOWN_F7 0x01}!$"
+
+gUnknown_841B33D:: @ 0x841B33D
+ .string "UPPER$"
+
+gUnknown_841B343:: @ 0x841B343
+ .string "lower$"
+
+gUnknown_841B349:: @ 0x841B349
+ .string "OTHERS$"
+
+gUnknown_841B350:: @ 0x841B350
+ .string "SYMBOLS$"
+
+gUnknown_841B358:: @ 0x841B358
+ .string "REGISTER$"
+
+gUnknown_841B361:: @ 0x841B361
+ .string "EXIT$"
+
+gUnknown_841B366:: @ 0x841B366
+ .string "Quit chatting?$"
+
+gUnknown_841B375:: @ 0x841B375
+ .string "Register text where?$"
+
+gUnknown_841B38A:: @ 0x841B38A
+ .string "Register text here?$"
+
+gUnknown_841B39E:: @ 0x841B39E
+ .string "Input text.$"
gUnknown_841B3AA:: @ 841B3AA
- .incbin "baserom.gba", 0x41B3AA, 0x14
+ .string "{UNKNOWN_F7 0x00} joined the chat!$"
gUnknown_841B3BE:: @ 841B3BE
- .incbin "baserom.gba", 0x41B3BE, 0x152
+ .string "{UNKNOWN_F7 0x00} left the chat.$"
+
+gUnknown_841B3D0:: @ 0x841B3D0
+ .string "{UNKNOWN_F7 0x00}の{UNKNOWN_F7 0x01}ひきめ:$"
+
+gUnknown_841B3DA:: @ 0x841B3DA
+ .string "{UNKNOWN_F7 0x00}の{UNKNOWN_F7 0x01}ひきめは いません$"
+
+gUnknown_841B3E9:: @ 0x841B3E9
+ .string "Exiting the chat‥$"
+
+gUnknown_841B3FB:: @ 0x841B3FB
+ .string "The LEADER, {UNKNOWN_F7 0x00}, has\nleft, ending the chat.$"
+
+gUnknown_841B426:: @ 0x841B426
+ .string "The registered text has been changed.\nIs it okay to save the game?$"
+
+gUnknown_841B469:: @ 0x841B469
+ .string "There is already a saved file.\nIs it okay to overwrite it?$"
+
+gUnknown_841B4A4:: @ 0x841B4A4
+ .string "SAVING‥\nDON'T TURN OFF THE POWER.$"
+
+gUnknown_841B4C6:: @ 0x841B4C6
+ .string "{UNKNOWN_F7 0x00} saved the game.$"
+
+gUnknown_841B4D9:: @ 0x841B4D9
+ .string "If the LEADER leaves, the chat\nwill end. Is that okay?$"
gUnknown_841B510:: @ 841B510
- .incbin "baserom.gba", 0x41B510, 0x6
+ .string "HELLO$"
gUnknown_841B516:: @ 841B516
- .incbin "baserom.gba", 0x41B516, 0x8
+ .string "POKéMON$"
gUnknown_841B51E:: @ 841B51E
- .incbin "baserom.gba", 0x41B51E, 0x6
+ .string "TRADE$"
gUnknown_841B524:: @ 841B524
- .incbin "baserom.gba", 0x41B524, 0x7
+ .string "BATTLE$"
gUnknown_841B52B:: @ 841B52B
- .incbin "baserom.gba", 0x41B52B, 0x6
+ .string "LET'S$"
gUnknown_841B531:: @ 841B531
- .incbin "baserom.gba", 0x41B531, 0x4
+ .string "OK!$"
gUnknown_841B535:: @ 841B535
- .incbin "baserom.gba", 0x41B535, 0x6
+ .string "SORRY$"
gUnknown_841B53B:: @ 841B53B
- .incbin "baserom.gba", 0x41B53B, 0x6
+ .string "YAY{EXTRA 0xF9}$"
gUnknown_841B541:: @ 841B541
- .incbin "baserom.gba", 0x41B541, 0xA
+ .string "THANK YOU$"
gUnknown_841B54B:: @ 841B54B
- .incbin "baserom.gba", 0x41B54B, 0x9
+ .string "BYE-BYE!$"
gUnknown_841B554:: @ 841B554
- .incbin "baserom.gba", 0x41B554, 0x62
+ .string "{PLAYER} scurried to a POKéMON CENTER,\nprotecting the exhausted and fainted\nPOKéMON from further harm‥\p$"
gUnknown_841B5B6:: @ 841B5B6
- .incbin "baserom.gba", 0x41B5B6, 0x58
+ .string "{PLAYER} scurried back home, protecting\nthe exhausted and fainted POKéMON from\nfurther harm‥\p$"
gUnknown_841B60E:: @ 841B60E
- .incbin "baserom.gba", 0x41B60E, 0xB
+ .string "PLAYER: {UNKNOWN_F7 0x00}$"
gUnknown_841B619:: @ 841B619
- .incbin "baserom.gba", 0x41B619, 0x6B
+ .string "This document is issued in\nrecognition of your magnificent\nachievement - the completion of\nthe {UNKNOWN_F7 0x01} POKéDEX.$"
gUnknown_841B684:: @ 841B684
- .incbin "baserom.gba", 0x41B684, 0xB
+ .string "GAME FREAK$"
gUnknown_841B68F:: @ 841B68F
- .incbin "baserom.gba", 0x41B68F, 0x9
+ .string "NATIONAL$"
gUnknown_841B698:: @ 841B698
- .incbin "baserom.gba", 0x41B698, 0x6
+ .string "KANTO$"
gUnknown_841B69E:: @ 841B69E
- .incbin "baserom.gba", 0x41B69E, 0x1B
+ .string "Clear all save data areas?$"
gUnknown_841B6B9:: @ 841B6B9
- .incbin "baserom.gba", 0x41B6B9, 0x1C
+ .string "Clearing data‥\nPlease wait.$"
gUnknown_841B6D5:: @ 841B6D5
- .incbin "baserom.gba", 0x41B6D5, 0x7
+ .string "PLAYER$"
gUnknown_841B6DC:: @ 841B6DC
- .incbin "baserom.gba", 0x41B6DC, 0x7
+ .string "TIME$"
+
+gUnknown_841B6E1:: @ 0x841B6E1
+ .string ":$"
gUnknown_841B6E3:: @ 841B6E3
- .incbin "baserom.gba", 0x41B6E3, 0x8
+ .string "POKéDEX$"
gUnknown_841B6EB:: @ 841B6EB
- .incbin "baserom.gba", 0x41B6EB, 0x1
+ .string "$"
gUnknown_841B6EC:: @ 841B6EC
- .incbin "baserom.gba", 0x41B6EC, 0x7
+ .string "BADGES$"
gUnknown_841B6F3:: @ 841B6F3
- .incbin "baserom.gba", 0x41B6F3, 0xA
+ .string "$"
+
+gUnknown_841B6F4:: @ 0x841B6F4
+ .string "REGISTER$"
gText_HatchedFromEgg:: @ 841B6FD
- .incbin "baserom.gba", 0x41B6FD, 0x19
+ .string "{STR_VAR_1} hatched from the EGG!$"
gText_NickHatchPrompt:: @ 841B716
- .incbin "baserom.gba", 0x41B716, 0x31
+ .string "Would you like to nickname the newly\nhatched {STR_VAR_1}?$"
gUnknown_841B747:: @ 841B747
- .incbin "baserom.gba", 0x41B747, 0x24
+ .string "You've run out of COINS.\nGame over!$"
gUnknown_841B76B:: @ 841B76B
- .incbin "baserom.gba", 0x41B76B, 0xE
+ .string "Quit playing?$"
gUnknown_841B779:: @ 841B779
- .incbin "baserom.gba", 0x41B779, 0x2B
+ .string "{KEYGFX_DPAD_LEFT_RIGHT}COMBOS {KEYGFX_DPAD_DOWN}WAGER {KEYGFX_A_BUTTON}STOP {KEYGFX_B_BUTTON}EXIT$"
+
+gUnknown_841B798:: @ 0x841B798
+ .string "おしえテレビ$"
+
+gUnknown_841B79F:: @ 0x841B79F
+ .string "おしまい$"
.include "data/text/teachy_tv.inc"
@@ -1556,73 +3226,357 @@ gUnknown_841CE24:: @ 841CE24
.align 2
gUnknown_841D020:: @ 841D020
- .incbin "baserom.gba", 0x41D020, 0xC
+ .string "1. {COLOR LIGHT_GRAY}{SHADOW BLACK}{UNKNOWN_F7 0x00}$"
gUnknown_841D02C:: @ 841D02C
- .incbin "baserom.gba", 0x41D02C, 0x24
+ .string "1. {UNKNOWN_F7 0x00}$"
+
+gUnknown_841D032:: @ 0x841D032
+ .string " times$"
+
+gUnknown_841D03B:: @ 0x841D03B
+ .string " {STR_VAR_1}.{STR_VAR_2}$"
+gUnknown_841D042:: @ 0x841D042
+ .string " {STR_VAR_1} BERRY$"
+
+ .align 2
gUnknown_841D050:: @ 841D050
- .incbin "baserom.gba", 0x41D050, 0x8
+ .string "Time:$"
+ .align 2
gUnknown_841D058:: @ 841D058
- .incbin "baserom.gba", 0x41D058, 0x10
+ .string "Pressing Speed:$"
gUnknown_841D068:: @ 841D068
- .incbin "baserom.gba", 0x41D068, 0xC
+ .string "Silkiness:$"
+ .align 2
gUnknown_841D074:: @ 841D074
- .incbin "baserom.gba", 0x41D074, 0x4
+ .string "{STR_VAR_1}$"
+ .align 2
gUnknown_841D078:: @ 841D078
- .incbin "baserom.gba", 0x41D078, 0x8
+ .string "min.$"
+ .align 2
gUnknown_841D080:: @ 841D080
- .incbin "baserom.gba", 0x41D080, 0x8
+ .string "{STR_VAR_1}.{STR_VAR_2}$"
+ .align 2
gUnknown_841D088:: @ 841D088
- .incbin "baserom.gba", 0x41D088, 0x8
+ .string "sec.$"
+ .align 2
gUnknown_841D090:: @ 841D090
- .incbin "baserom.gba", 0x41D090, 0x8
+ .string "{STR_VAR_1}.{STR_VAR_2}$"
+ .align 2
gUnknown_841D098:: @ 841D098
- .incbin "baserom.gba", 0x41D098, 0xC
+ .string "Times/sec.$"
+ .align 2
gUnknown_841D0A4:: @ 841D0A4
- .incbin "baserom.gba", 0x41D0A4, 0x4
+ .string "{STR_VAR_1}サ$"
gUnknown_841D0A8:: @ 841D0A8
- .incbin "baserom.gba", 0x41D0A8, 0x18
+ .string "No. of Presses Rankings$"
gUnknown_841D0C0:: @ 841D0C0
- .incbin "baserom.gba", 0x41D0C0, 0x58
+ .string "Crushing Results$"
+
+gUnknown_841D0D1:: @ 0x841D0D1
+ .string " Neatness Rankings$"
+
+gUnknown_841D0E6:: @ 0x841D0E6
+ .string " Cooperative Rankings$"
+
+gUnknown_841D0FD:: @ 0x841D0FD
+ .string " Pressing-Power Rankings$"
gUnknown_841D118:: @ 841D118
- .incbin "baserom.gba", 0x41D118, 0xC
+ .string "BERRY CRUSH$"
gUnknown_841D124:: @ 841D124
- .incbin "baserom.gba", 0x41D124, 0x18
+ .string "Pressing-Speed Rankings$"
gUnknown_841D13C:: @ 841D13C
- .incbin "baserom.gba", 0x41D13C, 0xC
+ .string "{STR_VAR_1} PLAYERS$"
+ .align 2
gUnknown_841D148:: @ 841D148
- .incbin "baserom.gba", 0x41D148, 0x6
+ .string "GHOST$"
gUnknown_841D14E:: @ 841D14E
- .incbin "baserom.gba", 0x41D14E, 0x1B
+ .string "A POKéMON's on the hook!{PAUSE_UNTIL_PRESS}$"
gUnknown_841D169:: @ 841D169
- .incbin "baserom.gba", 0x41D169, 0x15
+ .string "Not even a nibble‥{PAUSE_UNTIL_PRESS}$"
gUnknown_841D17E:: @ 841D17E
- .incbin "baserom.gba", 0x41D17E, 0xF
+ .string "It got away‥{PAUSE_UNTIL_PRESS}$"
gUnknown_841D18D:: @ 841D18D
- .incbin "baserom.gba", 0x41D18D, 0xB
+ .string "ROOFTOP$"
+ .align 2
gUnknown_841D198:: @ 841D198
- .incbin "baserom.gba", 0x41D198, 0xCB8
+ .string "Pokémon FireRed Version\nStaff$"
+
+gUnknown_841D1B6:: @ 0x841D1B6
+ .string " Pokémon LeafGreen Version\nStaff$"
+
+gUnknown_841D1D8:: @ 0x841D1D8
+ .string "\n\nDirector\n\n\n\n$"
+
+gUnknown_841D1E7:: @ 0x841D1E7
+ .string " \n\n\nJunichi Masuda\n\n\n$"
+
+gUnknown_841D1FD:: @ 0x841D1FD
+ .string " \nArt Director\n\nBattle Director\n\n\n$"
+
+gUnknown_841D222:: @ 0x841D222
+ .string " \n\nKen Sugimori\n\nShigeki Morimoto\n\n$"
+
+gUnknown_841D247:: @ 0x841D247
+ .string " Program Leader\n\nPlanning Leader\n\nGraphic Design Leader\n\n$"
+
+gUnknown_841D281:: @ 0x841D281
+ .string " \nTetsuya Watanabe\n\nKoji Nishino\n\nTakao Unno\n$"
+
+gUnknown_841D2B1:: @ 0x841D2B1
+ .string " Programmers\n\n\n\n\n$"
+
+gUnknown_841D2C5:: @ 0x841D2C5
+ .string " \nHiroyuki Nakamura\nMasao Taya\nSatoshi Nohara\nMiyuki Iwasawa\nDaisuke Goto\n$"
+
+gUnknown_841D312:: @ 0x841D312
+ .string " System Programmers\n\n\n\n\n\n$"
+
+gUnknown_841D32D:: @ 0x841D32D
+ .string " \nTetsuya Watanabe\nAkito Mori\nHisashi Sogabe\nSousuke Tamada\n\n$"
+
+gUnknown_841D36D:: @ 0x841D36D
+ .string " Graphic Designers\n\n\n\n\n\n$"
+
+gUnknown_841D388:: @ 0x841D388
+ .string "\nTakao Unno\nAsuka Iwashita\nKanako Eo\nHiroki Fuchino\n\n$"
+
+gUnknown_841D3BE:: @ 0x841D3BE
+ .string " \nGraphic Designers\n\n\n\n\n$"
+
+gUnknown_841D3D8:: @ 0x841D3D8
+ .string "\n\nKen Sugimori\nHironobu Yoshida\n\n\n$"
+
+gUnknown_841D3FB:: @ 0x841D3FB
+ .string " \nMusic Composition\n\n\n\n\n$"
+
+gUnknown_841D414:: @ 0x841D414
+ .string "\n\nGo Ichinose\nJunichi Masuda\n\n\n$"
+
+gUnknown_841D434:: @ 0x841D434
+ .string "\n\nSound Effects\n\n\n\n$"
+
+gUnknown_841D448:: @ 0x841D448
+ .string "\n\n\nGo Ichinose\n\n\n$"
+
+gUnknown_841D45A:: @ 0x841D45A
+ .string " \nGame Designers\n\n\n\n\n$"
+
+gUnknown_841D471:: @ 0x841D471
+ .string " \n\nJunichi Masuda\nKoji Nishino\nTetsuji Ohta\n\n$"
+
+gUnknown_841D4A1:: @ 0x841D4A1
+ .string " \nGame Designers\n\n\n\n\n$"
+
+gUnknown_841D4B9:: @ 0x841D4B9
+ .string " \n\nHitomi Sato\nShigeru Ohmori\nTadashi Takahashi\n\n$"
+
+gUnknown_841D4ED:: @ 0x841D4ED
+ .string " \nGame Scenario\n\n\n\n\n$"
+
+gUnknown_841D504:: @ 0x841D504
+ .string "\n\nHitomi Sato\nSatoshi Tajiri\n\n\n$"
+
+gUnknown_841D524:: @ 0x841D524
+ .string "\nScript Designer\n\nMap Designer\n\n\n$"
+
+gUnknown_841D546:: @ 0x841D546
+ .string " \n\nSatoshi Nohara\n\nShigeru Ohmori\n\n$"
+
+gUnknown_841D56B:: @ 0x841D56B
+ .string " \nParametric Designers\n\n\n\n\n$"
+
+gUnknown_841D587:: @ 0x841D587
+ .string " \n\nKoji Nishino\nTetsuji Ohta\nShigeki Morimoto\n\n$"
+
+gUnknown_841D5B7:: @ 0x841D5B7
+ .string " \n\nPOKéDEX Text\n\n\n\n$"
+
+gUnknown_841D5CB:: @ 0x841D5CB
+ .string " \n\n\nKenji Matsushima\n\n\n$"
+
+gUnknown_841D5E3:: @ 0x841D5E3
+ .string " POKéMON Designers\n\n\n\n\n\n$"
+
+gUnknown_841D5FC:: @ 0x841D5FC
+ .string "\nKen Sugimori\nMotofumi Fujiwara\nShigeki Morimoto\nHironobu Yoshida\n\n$"
+
+gUnknown_841D640:: @ 0x841D640
+ .string "POKéMON Designers\n\n\n\n\n\n$"
+
+gUnknown_841D658:: @ 0x841D658
+ .string "\nSatoshi Ohta\nAsuka Iwashita\nTakao Unno\nKanako Eo\nAimi Tomita\n$"
+
+gUnknown_841D697:: @ 0x841D697
+ .string " POKéMON Designers\n\n\n\n\n\n$"
+
+gUnknown_841D6B0:: @ 0x841D6B0
+ .string "\nAtsuko Nishida\nMuneo Saito\nRena Yoshikawa\nJun Okutani\n\n$"
+
+gUnknown_841D6E9:: @ 0x841D6E9
+ .string " Supporting Programmers\n\n\n\n$"
+
+gUnknown_841D707:: @ 0x841D707
+ .string " \nTeruyuki Yoshioka\nTakao Nakano\n\nSatoshi Mitsuhara\nDaisuke Hoshino\n$"
+
+gUnknown_841D74C:: @ 0x841D74C
+ .string "\n\nNCL Product Testing\n\n\n\n$"
+
+gUnknown_841D766:: @ 0x841D766
+ .string " \n\n\nNCL Super Mario Club\n\n\n$"
+
+gUnknown_841D783:: @ 0x841D783
+ .string " Special Thanks\n\n\n\n\n\n$"
+
+gUnknown_841D799:: @ 0x841D799
+ .string " \nHiro Nakamura\nHiroyuki Uesugi\nTeruki Murakawa\n\nKazuya Suyama\n$"
+
+gUnknown_841D7DB:: @ 0x841D7DB
+ .string " Special Thanks\n\n\n\n\n\n$"
+
+gUnknown_841D7F1:: @ 0x841D7F1
+ .string " \nKenji Tominaga\n\nKenjiro Ito\nTomotaka Komura\nMichiko Takizawa\n$"
+
+gUnknown_841D833:: @ 0x841D833
+ .string " Special Thanks\n\n\n\n\n\n$"
+
+gUnknown_841D849:: @ 0x841D849
+ .string " \nMakiko Takada\nMikiko Ohashi\nShusaku Egami\nTakanao Kondo\nRui Kawaguchi\n$"
+
+gUnknown_841D894:: @ 0x841D894
+ .string "\n\nBraille Code Check\n\n\n\n$"
+
+gUnknown_841D8AD:: @ 0x841D8AD
+ .string " \n\n\nJapan Braille Library\n\n\n$"
+
+gUnknown_841D8CC:: @ 0x841D8CC
+ .string "Information Supervisors\n\n\n\n\n\n$"
+
+gUnknown_841D8EA:: @ 0x841D8EA
+ .string " \nHiroki Enomoto\nKazuyuki Terada\nYuri Sakurai\nYumi Funasaka\nNaoko Yanase\n$"
+
+gUnknown_841D935:: @ 0x841D935
+ .string " Coordinators\n\n\n\n\n\n$"
+
+gUnknown_841D94B:: @ 0x841D94B
+ .string " \nAzusa Tajima\nAkira Kinashi\nKazuki Yoshihara\n\nRetsuji Nomoto\n$"
+
+gUnknown_841D98A:: @ 0x841D98A
+ .string " \nTask Managers\n\n\n\n\n$"
+
+gUnknown_841D9A0:: @ 0x841D9A0
+ .string "\n\nHitoshi Yamagami\nGakuji Nomoto\n\n\n$"
+
+gUnknown_841D9C4:: @ 0x841D9C4
+ .string "\nProducers\n\n\n\n\n$"
+
+gUnknown_841D9D4:: @ 0x841D9D4
+ .string "\n\nHiroyuki Jinnai\nTakehiro Izushi\nHiroaki Tsuru\n\n$"
+
+gUnknown_841DA06:: @ 0x841DA06
+ .string " \n\nExecutive Director\n\n\n\n$"
+
+gUnknown_841DA21:: @ 0x841DA21
+ .string " \n\n\nSatoshi Tajiri\n\n\n$"
+
+gUnknown_841DA39:: @ 0x841DA39
+ .string " \n\nExecutive Producer\n\n\n\n$"
+
+gUnknown_841DA55:: @ 0x841DA55
+ .string " \n\n\nSatoru Iwata\n\n\n$"
+
+gUnknown_841DA6B:: @ 0x841DA6B
+ .string " \n\nExecutive Producer\n\n\n\n$"
+
+gUnknown_841DA85:: @ 0x841DA85
+ .string " \n\n\nTsunekaz Ishihara\n\n\n$"
+
+gUnknown_841DAA0:: @ 0x841DAA0
+ .string "\nEnglish Version Coordinators\n\n\n\n\n$"
+
+gUnknown_841DAC3:: @ 0x841DAC3
+ .string " \n\nHiro Nakamura\nSeth McMahill\n\n\n$"
+
+gUnknown_841DAE5:: @ 0x841DAE5
+ .string " \nTranslator\n\nText Editor\n\n\n$"
+
+gUnknown_841DB04:: @ 0x841DB04
+ .string "\n\nNob Ogasawara\n\nTeresa Lillygren\n\n$"
+
+gUnknown_841DB28:: @ 0x841DB28
+ .string "Programmers\n\n\n\n\n\n$"
+
+gUnknown_841DB3A:: @ 0x841DB3A
+ .string " \nTeruki Murakawa\nSouichi Yamamoto\nYuichiro Ito\nAkira Kinashi\n\n$"
+
+gUnknown_841DB7B:: @ 0x841DB7B
+ .string " \nEnvironment を Tool Programmers\n\n\n\n\n$"
+
+gUnknown_841DBA1:: @ 0x841DBA1
+ .string " \n\nTeruki Murakawa\nSouichi Yamamoto\nKimiko Nakamichi\n\n$"
+
+gUnknown_841DBDA:: @ 0x841DBDA
+ .string " NOA Product Testing\n\n\n\n\n\n$"
+
+gUnknown_841DBF6:: @ 0x841DBF6
+ .string " \nThomas Hertzog\nKathy Huguenard\nMika Kurosawa\n\n\n$"
+
+gUnknown_841DC29:: @ 0x841DC29
+ .string " Braille Code Check\n\n\n\n\n\n$"
+
+gUnknown_841DC45:: @ 0x841DC45
+ .string " \nNational Federation\n{CLEAR_TO 0x13}of the Blind\nPatricia A. Maurer\nJapan Braille Library\nEuropean Blind Union\n$"
+
+gUnknown_841DCAC:: @ 0x841DCAC
+ .string "\nBraille Code Check\n\n\n\n\n$"
+
+gUnknown_841DCC5:: @ 0x841DCC5
+ .string " \n\nNational Information Library\n{CLEAR_TO 0x2D}Service\nMargaret Campion\n\n$"
+
+gUnknown_841DD05:: @ 0x841DD05
+ .string " Special Thanks\n\n\n\n\n\n$"
+
+gUnknown_841DD1D:: @ 0x841DD1D
+ .string " \nTakehiro Izushi\nMotoyasu Tojima\nHitoshi Yamagami\nHiroyuki Uesugi\n\n$"
+
+gUnknown_841DD64:: @ 0x841DD64
+ .string "Special Thanks\n\n\n\n\n\n$"
+
+gUnknown_841DD79:: @ 0x841DD79
+ .string " \nNicola Pratt-Barlow\nShellie Dow\nAnthony Howitt\nNaoko Saeki\nKyoko Onishi\n$"
+
+gUnknown_841DDC6:: @ 0x841DDC6
+ .string " \nBraille Code Check\n\n\n\n\n$"
+
+gUnknown_841DDE1:: @ 0x841DDE1
+ .string " \n\nThe Royal New Zealand\nFoundation of the Blind\nGreg Moran\n\n$"
+
+gUnknown_841DE21:: @ 0x841DE21
+ .string " \n\nGraphic Designer\n\n\n\n$"
+
+gUnknown_841DE3B:: @ 0x841DE3B
+ .string " \n\n\nAkira Kinashi\n\n\n$"
gJPText_MysteryGift:: @ 841DE50
.string "$"
@@ -1640,7 +3594,7 @@ gUnknown_841DE54:: @ 841DE54
.string "$"
gUnknown_841DE55:: @ 841DE55
- .incbin "baserom.gba", 0x41DE55, 0x27 @ japanese
+ .string "カ-ドeリ-ダ-{EXTRA_PLUS}の ‘つうしん'を\nえらんで Aボタンを おしてください$"
gUnknown_841DE7C:: @ 841DE7C
.string "$"
@@ -1649,7 +3603,7 @@ gUnknown_841DE7D:: @ 841DE7D
.string "$"
gUnknown_841DE7E:: @ 841DE7E
- .incbin "baserom.gba", 0x0041de7e, 0x17 @ japanese
+ .string "カ-ドeリ-ダ-{EXTRA_PLUS}と\nつうしん できません$"
gUnknown_841DE95:: @ 841DE95
.string "$"
@@ -1890,13 +3844,13 @@ gUnknown_841E2D4:: @ 841E2D4
.string "{UNKNOWN_F7 0x03} players$"
gUnknown_841E2DF:: @ 841E2DF
- .incbin "baserom.gba", 0x41e2df, 0xd
+ .string "{KEYGFX_DPAD_ANY}えらぶ:{KEYGFX_A_BUTTON}けってい$"
gUnknown_841E2EC:: @ 841E2EC
- .incbin "baserom.gba", 0x41e2ec, 0x9
+ .string "{KEYGFX_B_BUTTON}CANCEL$"
gUnknown_841E2F5:: @ 841E2F5
- .incbin "baserom.gba", 0x41e2f5, 0x2d
+ .string "{COLOR BLUE}{SHADOW YELLOW} たいせんの くみあわせ\n{COLOR RED}{SHADOW GREEN}じぶんの ばしょをきめて ください$"
gUnknown_841E322:: @ 841E322
.string "{EXTRA_ID}$"
@@ -1920,40 +3874,43 @@ gDaycareText_PlayOther:: @ 841E3A8
.string "POKéMON than each other.$"
gUnknown_841E3E3:: @ 841E3E3
- .incbin "baserom.gba", 0x41E3E3, 0x18
+ .string "Teach which move to {STR_VAR_1}?$"
gUnknown_841E3FB:: @ 841E3FB
- .incbin "baserom.gba", 0x41E3FB, 0xA
+ .string "Teach {STR_VAR_2}?$"
gUnknown_841E405:: @ 841E405
- .incbin "baserom.gba", 0x41E405, 0xF
+ .string "{STR_VAR_1} learned\n{STR_VAR_2}.$"
gUnknown_841E414:: @ 841E414
- .incbin "baserom.gba", 0x41E414, 0x6D
+ .string "{STR_VAR_1} is trying to learn\n{STR_VAR_2}.\pBut {STR_VAR_1} can't learn more\nthan four moves.\pDelete an older move to make\nroom for {STR_VAR_2}?$"
gUnknown_841E481:: @ 841E481
- .incbin "baserom.gba", 0x41E481, 0x12
+ .string "Stop learning {STR_VAR_2}?$"
gUnknown_841E493:: @ 841E493
- .incbin "baserom.gba", 0x41E493, 0x2D
+ .string "{PAUSE 0x20}1, {PAUSE 0x0F}2, and {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}‥ {PAUSE 0x0F}{PLAY_SE SE_TRACK_MOVE}Poof!\p$"
gUnknown_841E4C0:: @ 841E4C0
- .incbin "baserom.gba", 0x41E4C0, 0x22
+ .string "{STR_VAR_1} forgot {STR_VAR_3}.\pAnd‥\p{STR_VAR_1}\nlearned {STR_VAR_2}.$"
gUnknown_841E4E2:: @ 841E4E2
- .incbin "baserom.gba", 0x41E4E2, 0x2A
+ .string "Give up trying to teach a new\nmove to {STR_VAR_1}?$"
gUnknown_841E50C:: @ 841E50C
- .incbin "baserom.gba", 0x41E50C, 0x2C
+ .string "Which move should be forgotten?\p$"
+
+gUnknown_841E52D:: @ 0x841E52D
+ .string "----------$"
gUnknown_841E538:: @ 841E538
- .incbin "baserom.gba", 0x41E538, 0x3A
+ .string "Communication standby‥\nAwaiting another player to choose.$"
gUnknown_841E572:: @ 841E572
- .incbin "baserom.gba", 0x41E572, 0x1B
+ .string "The battle was refused.{PAUSE 0x3C}$"
gUnknown_841E58D:: @ 841E58D
- .incbin "baserom.gba", 0x41E58D, 0x17
+ .string "Refused the battle.{PAUSE 0x3C}$"
gFameCheckerText_MainScreenUI:: @ 841E5A4
.string "{KEYGFX_START_BUTTON}PICK {KEYGFX_DPAD_UP_DOWN}SELECT {KEYGFX_A_BUTTON}OK$"
@@ -2188,4 +4145,5 @@ gText_Toss::
.string "TOSS$"
gUnknown_841EE2B:: @ 841EE2B
- .incbin "baserom.gba", 0x41EE2B, 0x17
+ .string "DEL. ALL{CLEAR_TO 0x57}CANCEL{CLEAR_TO 0xA4}OK$"
+
diff --git a/graphics/diploma/unk_84147C0.png b/graphics/diploma/unk_84147C0.png
new file mode 100644
index 000000000..ac6e113f8
--- /dev/null
+++ b/graphics/diploma/unk_84147C0.png
Binary files differ
diff --git a/graphics/diploma/unk_84154E8.bin b/graphics/diploma/unk_84154E8.bin
new file mode 100644
index 000000000..38c32e5b2
--- /dev/null
+++ b/graphics/diploma/unk_84154E8.bin
Binary files differ
diff --git a/graphics/diploma/unk_8415954.pal b/graphics/diploma/unk_8415954.pal
new file mode 100644
index 000000000..3ba0bc65d
--- /dev/null
+++ b/graphics/diploma/unk_8415954.pal
@@ -0,0 +1,35 @@
+JASC-PAL
+0100
+32
+123 205 172
+255 0 255
+222 230 139
+205 246 156
+230 222 164
+197 238 172
+205 230 213
+213 246 172
+205 230 164
+238 255 156
+197 238 172
+222 230 238
+222 238 238
+213 246 172
+246 238 172
+238 238 139
+123 205 172
+255 0 255
+255 0 255
+246 246 205
+230 230 148
+230 230 148
+230 230 148
+238 238 164
+222 222 148
+255 238 180
+238 230 164
+238 222 180
+246 246 164
+246 230 131
+246 230 172
+222 238 222
diff --git a/include/menu.h b/include/menu.h
index 19efc3ad9..6d8de3274 100644
--- a/include/menu.h
+++ b/include/menu.h
@@ -17,44 +17,51 @@ struct MenuAction
} func;
};
-void AddTextPrinterParameterized3(u8, u8, u8, u8, const void *, s8, const u8 *);
-void sub_8198070(u8 windowId, bool8 copyToVram);
-void SetWindowTemplateFields(struct WindowTemplate* template, u8 priority, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 palNum, u16 baseBlock);
-void SetWindowBorderStyle(u8 windowId, bool8 copyToVram, u16 tileStart, u8 palette);
-void ScheduleBgCopyTilemapToVram(u8 bgNum);
-void PrintMenuTable(u8 idx, u8 nstrs, const struct MenuAction *strs);
-void InitMenuInUpperLeftCornerPlaySoundWhenAPressed(u8 idx, u8 nstrs,u8);
-u8 GetMenuCursorPos(void);
-s8 ProcessMenuInput(void);
-s8 ProcessMenuInputNoWrapAround(void);
-void ResetTempTileDataBuffers(void);
-void *DecompressAndCopyTileDataToVram(u8 bg_id, const void *src, u32 size, u16 offset, u8 mode);
-bool8 FreeTempTileDataBuffersIfPossible(void);
-u64 sub_8198A50(struct WindowTemplate*, u8, u8, u8, u8, u8, u8, u16); // returns something but it isn't used, fix when menu.s is decomp'd
-s8 Menu_ProcessInputNoWrapClearOnChoose(void);
-void DoScheduledBgTilemapCopiesToVram(void);
-void ClearScheduledBgCopiesToVram(void);
+// menu2
+void AddTextPrinterParameterized3(u8 windowId, u8 fontId, u8 x, u8 y, const struct TextColor * color, s8 speed, const u8 * str);
void AddTextPrinterParameterized4(u8 windowId, u8 fontId, u8 x, u8 y, u8 letterSpacing, u8 lineSpacing, const struct TextColor *color, s8 speed, const u8 *str);
-void sub_8197B1C(u8 windowId, bool8 copyToVram, u16 a2, u16 a3);
-void ClearMenuWindow(u8 windowId, bool8 copyToVram);
-void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
-void CreateWindow_SnapRight_StdPal(u8, u8, u8, u8, u16);
-void Menu_PrintHelpSystemUIHeader(const u8 *, const u8 *, u8, u32, u8);
-void PrintTextOnRightSnappedWindow(const u8 *, u32, u8);
-void sub_810F71C(void);
-void sub_810F740(void);
-u8 ProgramAndPlaceMenuCursorOnWindow(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPosition);
-void CreateYesNoMenu(const struct WindowTemplate *, u8, u8, u8, u16, u8, u8);
-void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 a2, u8 a3);
+void AddTextPrinterParameterized5(u8 windowId, u8 fontId, const u8 *str, u8 x, u8 y, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 letterSpacing, u8 lineSpacing);
+void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y);
void StartBlendTask(u8 eva_start, u8 evb_start, u8 eva_end, u8 evb_end, u8 ev_step, u8 priority);
bool8 IsBlendTaskActive(void);
-void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *a8);
-void ClearMenuWindow_BorderThickness2(u8 windowId, u8 a1);
-void PrintTextArray(u8, u8, u8, u8, u8, u8, const struct MenuAction *);
+u8 sub_812EA78(u16 species, u32 personality, u8 a2);
+s8 sub_812EAE4(u16 species, u32 personality, u8 a2);
+// list_menu
void sub_8107CD8(u8 palOffset, u16 speciesId);
void sub_8107CF8(u8 windowId, u16 speciesId, u32 personality, u16 x, u16 y);
-void sub_8107D38(u8, u8);
+void sub_8107D38(u8 palOffset, u8 palId);
void BlitMoveInfoIcon(u8 windowId, u8 iconId, u16 x, u16 y);
+// menu
+s8 Menu_ProcessInputGridLayout(void);
+u8 MultichoiceGrid_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cols, u8 rows, u8 cursorPos);
+void MultichoiceGrid_PrintItems(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs);
+void DestroyYesNoMenu(void);
+s8 Menu_ProcessInputNoWrapClearOnChoose(void);
+void CreateYesNoMenu(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos);
+void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *orderArray);
+void UnionRoomAndTradeMenuPrintOptions(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
+void MultichoiceList_PrintItems(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, u8 letterSpacing, u8 lineSpacing);
+void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs);
+s8 Menu_ProcessInputNoWrapAround_other(void);
+s8 Menu_ProcessInput_other(void);
+s8 Menu_ProcessInputNoWrapAround(void);
+s8 Menu_ProcessInput(void);
+u8 Menu_GetCursorPos(void);
+u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta);
+u8 Menu_MoveCursor(s8 cursorDelta);
+u8 Menu_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos);
+u8 Menu_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos, bool8 APressMuted);
+void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgColorChooser, u8 notUsed, bool8 copyToVram);
+void TopBarWindowPrintString(const u8 *string, u8 unUsed, bool8 copyToVram);
+void ClearTopBarWindow(void);
+void DestroyTopBarWindow(void);
+u8 CreateTopBarWindowLoadPalette(u8 bg, u8 width, u8 yPos, u8 palette, u16 baseTile);
+void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
+void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum);
+void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram);
+void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum);
+struct WindowTemplate SetWindowTemplateFields(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock);
+
#endif // GUARD_MENU_H
diff --git a/include/menu_helpers.h b/include/menu_helpers.h
index 93a4fe5d3..7fe8c19b2 100644
--- a/include/menu_helpers.h
+++ b/include/menu_helpers.h
@@ -4,29 +4,26 @@
#include "global.h"
#include "task.h"
-// Exported type declarations
-
-struct YesNoFuncTable {
+struct YesNoFuncTable
+{
TaskFunc yesFunc;
TaskFunc noFunc;
};
-// Exported RAM declarations
-
-// Exported ROM declarations
-
-void sub_812225C(u16 *, u16 *, u8, u8);
-void sub_8122298(u16 *, u16 *, u8, u8, u8);
-void sub_8121F68(u8 taskId, const struct YesNoFuncTable *data);
-bool8 sub_81221AC(void);
bool16 RunTextPrinters_CheckActive(u8 textPrinterId);
bool8 sub_80BF72C(void);
+bool8 sub_80BF748(void);
bool8 MenuHelpers_LinkSomething(void);
void SetVBlankHBlankCallbacksToNull(void);
void ResetAllBgsCoordinatesAndBgCntRegs(void);
u8 sub_80BF8E4(void);
-u8 AdjustQuantityAccordingToDPadInput(s16 * a0, u16 a1);
-void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
-void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
+bool8 AdjustQuantityAccordingToDPadInput(s16 *arg0, u16 arg1);
+void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc);
+void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo);
+u8 GetLRKeysState(void);
+u8 sub_80BF66C(void);
+bool8 sub_80BF6A8(u16 itemId);
+bool8 itemid_80BF6D8_mail_related(u16 itemId);
+void ClearVramOamPltt(void);
#endif //GUARD_MENU_HELPERS_H
diff --git a/include/new_menu_helpers.h b/include/new_menu_helpers.h
index caa7cfc3c..d68957e62 100644
--- a/include/new_menu_helpers.h
+++ b/include/new_menu_helpers.h
@@ -5,48 +5,48 @@
#include "text.h"
#include "task.h"
-void sub_81973A4(void);
-void sub_81973C4(u8, u8);
-void sub_819746C(u8 windowId, bool8 copyToVram);
-void sub_81973FC(u8, u8);
+void ClearScheduledBgCopiesToVram(void);
+void ScheduleBgCopyTilemapToVram(u8 bgId);
+void DoScheduledBgTilemapCopiesToVram(void);
+void ResetTempTileDataBuffers(void);
+bool8 FreeTempTileDataBuffersIfPossible(void);
+void *DecompressAndCopyTileDataToVram(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void *DecompressAndCopyTileDataToVram2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
+void * MallocAndDecompress(const void * src, u32 * size);
+void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
+void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
+void ResetBgPositions(void);
+void InitStandardTextBoxWindows(void);
+void FreeAllOverworldWindowBuffers(void);
+void ResetBg0(void);
+u16 RunTextPrinters_CheckPrinter0Active(void);
u16 AddTextPrinterParameterized2(u8 windowId, u8 fontId, const u8 *str, u8 speed, void (*callback)(struct TextPrinterTemplate *, u16), u8 fgColor, u8 bgColor, u8 shadowColor);
-void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callback);
-void sub_8197434(u8 a0, u8 a1);
-void SetStandardWindowBorderStyle(u8 a0, u8 a1);
-void sub_8197930(void);
-u8 GetPlayerTextSpeed(void);
-void ClearDialogWindowAndFrame(u8, u8);
-u8 GetTextSpeedSetting(void);
+void AddTextPrinterDiffStyle(bool8 allowSkippingDelayWithButtonPress);
+void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
+void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed);
void sub_80F6E9C(void);
void DrawDialogueFrame(u8 windowId, bool8 transfer);
-void sub_80F7974(const u8 * text);
-void sub_80F7998(void);
-void sub_80F79A4(void);
void DrawStdWindowFrame(u8 windowId, bool8 copyNow);
-void InitStandardTextBoxWindows(void);
-void ResetBg0(void);
-void ResetBgPositions(void);
-void CopyRectIntoAltRect(u8 bgId, u16 *dest, u8 left, u8 top, u8 width, u8 height);
-void SetBgRectPal(u8 bgId, u8 left, u8 top, u8 width, u8 height, u8 palette);
-void DecompressAndLoadBgGfxUsingHeap(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
-void DecompressAndLoadBgGfxUsingHeap2(u8 bgId, const void *src, u32 size, u16 offset, u8 mode);
-void Menu_LoadStdPal(void);
-void Menu_LoadStdPalAt(u16);
-void * MallocAndDecompress(const void * src, u32 * size);
-u16 GetStdWindowBaseTileNum(void);
+void ClearDialogWindowAndFrame(u8 windowId, bool8 copyToVram);
void ClearStdWindowAndFrame(u8 taskId, bool8 copyNow);
-void sub_80F6E9C(void);
void sub_80F771C(bool8 copyToVram);
-void AddTextPrinterWithCustomSpeedForMessage(bool8 allowSkippingDelayWithButtonPress, u8 speed);
-void AddTextPrinterDiffStyle(bool8 allowSkippingDelayWithButtonPress);
-void AddTextPrinterForMessage(bool8 allowSkippingDelayWithButtonPress);
void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram);
void sub_80F7768(u8 windowId, bool8 copyToVram);
+void Menu_LoadStdPal(void);
+void Menu_LoadStdPalAt(u16 offset);
+void DisplayItemMessageOnField(u8 taskId, u8 bgId, const u8 *src, TaskFunc callback);
void DisplayYesNoMenuDefaultYes(void);
void DisplayYesNoMenuDefaultNo(void);
-u8 sub_80F78E0(u8 windowId);
+u8 GetTextSpeedSetting(void);
+u8 sub_80F78E0(u8 height);
u8 GetStartMenuWindowId(void);
void RemoveStartMenuWindow(void);
+u16 GetStdWindowBaseTileNum(void);
+void sub_80F7974(const u8 * text);
+void sub_80F7998(void);
+void sub_80F79A4(void);
void SetDefaultFontsPointer(void);
#endif // GUARD_NEW_MENU_HELPERS_H
diff --git a/include/overworld.h b/include/overworld.h
index 60fa566f7..799389353 100644
--- a/include/overworld.h
+++ b/include/overworld.h
@@ -104,6 +104,7 @@ extern bool8 (* gFieldCallback2)(void);
void SetLastHealLocationWarp(u8 healLocaionId);
void sub_8055864(u8 mapGroup, u8 mapNum);
+void CB2_Overworld(void);
void CB2_NewGame(void);
bool8 Overworld_MapTypeAllowsTeleportAndFly(u8 mapType);
void Overworld_ResetStateAfterTeleport(void);
diff --git a/include/palette.h b/include/palette.h
index 78f398873..06b9b1f6f 100644
--- a/include/palette.h
+++ b/include/palette.h
@@ -43,7 +43,7 @@ struct PaletteFadeControl
extern struct PaletteFadeControl gPaletteFade;
extern u32 gPlttBufferTransferPending;
-extern u8 *gPaletteDecompressionBuffer;
+extern u8 *gUnknown_203AAB0;
extern u16 gPlttBufferUnfaded[PLTT_BUFFER_SIZE];
extern u16 gPlttBufferFaded[PLTT_BUFFER_SIZE];
diff --git a/include/pokedex.h b/include/pokedex.h
index b389bf821..c4ec27e0b 100644
--- a/include/pokedex.h
+++ b/include/pokedex.h
@@ -7,7 +7,8 @@ void ResetPokedex(void);
void CopyMonCategoryText(u16 species, u8 *dst);
u16 GetPokedexHeightWeight(u16 dexNum, u8 data);
u16 GetNationalPokedexCount(u8);
-u16 GetHoennPokedexCount(u8);
+u16 GetKantoPokedexCount(u8);
+bool16 HasAllKantoMons(void);
u8 CreateDexDisplayMonDataTask(u16 dexNum, u32 trainerId, u32 personality);
enum
diff --git a/include/sound.h b/include/sound.h
index e720fc1a2..e5736fad8 100644
--- a/include/sound.h
+++ b/include/sound.h
@@ -12,7 +12,6 @@ void StopMapMusic(void);
void FadeOutMapMusic(u8 speed);
void FadeOutAndPlayNewMapMusic(u16 songNum, u8 speed);
void FadeOutAndFadeInNewMapMusic(u16 songNum, u8 fadeOutSpeed, u8 fadeInSpeed);
-void FadeInNewMapMusic(u16 songNum, u8 speed);
bool8 IsNotWaitingForBGMStop(void);
void PlayFanfareByFanfareNum(u8 fanfareNum);
bool8 WaitFanfare(bool8 stop);
diff --git a/include/strings.h b/include/strings.h
index 0bb7223be..70d30b230 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -175,7 +175,7 @@ extern const u8 gUnknown_841665C[];
extern const u8 gUnknown_8416690[];
extern const u8 gUnknown_84166A7[];
extern const u8 gUnknown_84169DC[];
-
+extern const u8 gUnknown_841623D[];
extern const u8 gUnknown_84162BD[];
extern const u8 gUnknown_841D148[];
@@ -189,4 +189,11 @@ extern const u8 gText_BadEgg[];
extern const u8 gText_PkmnsXPreventsSwitching[];
extern u8 *gUnknown_83FD5D0[];
+// diploma
+extern const u8 gUnknown_841B60E[];
+extern const u8 gUnknown_841B619[];
+extern const u8 gUnknown_841B684[];
+extern const u8 gUnknown_841B68F[];
+extern const u8 gUnknown_841B698[];
+
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 2159a7390..d891908ca 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -196,7 +196,7 @@ SECTIONS {
asm/battle_message.o(.text);
src/math_util.o(.text);
src/roulette_util.o(.text);
- asm/cable_car_util.o(.text);
+ src/cable_car_util.o(.text);
src/save.o(.text);
src/mystery_event_script.o(.text);
asm/field_effect_helpers.o(.text);
@@ -213,7 +213,7 @@ SECTIONS {
asm/battle_anim_special.o(.text);
asm/hall_of_fame.o(.text);
asm/credits.o(.text);
- asm/diploma.o(.text);
+ src/diploma.o(.text);
asm/save_failed_screen.o(.text);
asm/clear_save_data_screen.o(.text);
asm/evolution_graphics.o(.text);
@@ -233,7 +233,7 @@ SECTIONS {
src/vs_seeker.o(.text);
src/item_pc.o(.text);
asm/mailbox_pc.o(.text);
- asm/menu.o(.text);
+ src/menu.o(.text);
src/quest_log.o(.text);
asm/link_rfu_3.o(.text);
asm/pokemon_special_anim.o(.text);
@@ -420,6 +420,7 @@ SECTIONS {
data/data_83FECCC.o(.rodata);
src/intro.o(.rodata);
data/data_83FECCC.o(.rodata.battle_anim_special);
+ src/diploma.o(.rodata);
data/strings.o(.rodata);
data/data_83FECCC.o(.rodata.841EE44);
src/new_menu_helpers.o(.rodata);
@@ -432,6 +433,7 @@ SECTIONS {
src/vs_seeker.o(.rodata);
src/item_pc.o(.rodata);
data/data_83FECCC.o(.rodata.8453F6C);
+ src/menu.o(.rodata);
src/quest_log.o(.rodata);
data/data_83FECCC.o(.rodata.8456C74);
src/help_system_812B1E0.o(.rodata);
@@ -541,13 +543,7 @@ SECTIONS {
data/multiboot_pokemon_colosseum.o(.rodata);
} =0
- gap1 :
- {
- gap1_start = ABSOLUTE(.);
- BYTE(0xFF)
- . = 0x8D00000 - gap1_start;
- } =0xFF
-
+ . = 0x08D00000;
gfx_data :
ALIGN(4)
{
diff --git a/src/bag.c b/src/bag.c
index f4d29dfd4..a63f57702 100644
--- a/src/bag.c
+++ b/src/bag.c
@@ -6,6 +6,7 @@
#include "window.h"
#include "text_window.h"
#include "menu_helpers.h"
+#include "new_menu_helpers.h"
#include "menu.h"
#include "money.h"
#include "bag.h"
@@ -240,7 +241,7 @@ void sub_810B958(const u8 * str)
void sub_810B994(void)
{
u32 x;
- SetWindowBorderStyle(2, FALSE, 0x081, 0x0C);
+ DrawStdFrameWithCustomTileAndPalette(2, FALSE, 0x081, 0x0C);
x = 0x40 - GetStringWidth(0, gText_DepositItem, 0);
AddTextPrinterParameterized(2, 0, gText_DepositItem, x / 2, 1, 0, NULL);
}
@@ -252,11 +253,11 @@ u8 sub_810B9DC(u8 a0, u8 a1)
gUnknown_203AD34[a0] = AddWindow(&gUnknown_8453104[a0 + a1]);
if (a0 != 6)
{
- SetWindowBorderStyle(gUnknown_203AD34[a0], FALSE, 0x064, 0x0E);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_203AD34[a0], FALSE, 0x064, 0x0E);
}
else
{
- SetWindowBorderStyle(gUnknown_203AD34[a0], FALSE, 0x081, 0x0C);
+ DrawStdFrameWithCustomTileAndPalette(gUnknown_203AD34[a0], FALSE, 0x081, 0x0C);
}
ScheduleBgCopyTilemapToVram(0);
}
@@ -265,7 +266,7 @@ u8 sub_810B9DC(u8 a0, u8 a1)
void sub_810BA3C(u8 a0)
{
- ClearMenuWindow(gUnknown_203AD34[a0], FALSE);
+ ClearStdWindowAndFrameToTransparent(gUnknown_203AD34[a0], FALSE);
ClearWindowTilemap(gUnknown_203AD34[a0]);
RemoveWindow(gUnknown_203AD34[a0]);
ScheduleBgCopyTilemapToVram(0);
@@ -285,7 +286,7 @@ void sub_810BA9C(u8 a0)
{
if (gUnknown_203AD34[a0] != 0xFF)
{
- ClearMenuWindow_BorderThickness2(gUnknown_203AD34[a0], FALSE);
+ ClearDialogWindowAndFrameToTransparent(gUnknown_203AD34[a0], FALSE);
ClearWindowTilemap(gUnknown_203AD34[a0]);
RemoveWindow(gUnknown_203AD34[a0]);
PutWindowTilemap(1);
diff --git a/src/berry_powder.c b/src/berry_powder.c
index b3069d697..9b3bbc17f 100644
--- a/src/berry_powder.c
+++ b/src/berry_powder.c
@@ -97,7 +97,7 @@ void sub_815EFBC(u8 windowId, u32 powder, u8 x, u8 y, u8 speed)
void sub_815F014(u8 windowId, u16 baseBlock, u8 palette, u32 powder)
{
- SetWindowBorderStyle(windowId, FALSE, baseBlock, palette);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, baseBlock, palette);
AddTextPrinterParameterized(windowId, 0, gOtherText_Powder, 0, 0, -1, NULL);
sub_815EFBC(windowId, powder, 39, 12, 0);
}
@@ -110,13 +110,11 @@ void sub_815F070(void)
void sub_815F094(void)
{
struct WindowTemplate template;
- struct WindowTemplate template2;
if (sub_81119D4(sub_809D6D4) != TRUE)
{
- SetWindowTemplateFields(&template, 0, 1, 1, 8, 3, 15, 32);
- template2 = template;
- gUnknown_203F464 = AddWindow(&template2);
+ template = SetWindowTemplateFields(0, 1, 1, 8, 3, 15, 32);
+ gUnknown_203F464 = AddWindow(&template);
FillWindowPixelBuffer(gUnknown_203F464, 0);
PutWindowTilemap(gUnknown_203F464);
TextWindow_SetStdFrame0_WithPal(gUnknown_203F464, 0x21D, 0xD0);
@@ -127,6 +125,6 @@ void sub_815F094(void)
void sub_815F114(void)
{
ClearWindowTilemap(gUnknown_203F464);
- ClearMenuWindow(gUnknown_203F464, 1);
+ ClearStdWindowAndFrameToTransparent(gUnknown_203F464, 1);
RemoveWindow(gUnknown_203F464);
}
diff --git a/src/buy_menu_helpers.c b/src/buy_menu_helpers.c
index 4febb8209..4cdf90e4e 100644
--- a/src/buy_menu_helpers.c
+++ b/src/buy_menu_helpers.c
@@ -202,12 +202,12 @@ void BuyMenuDisplayMessage(u8 taskId, const u8 *text, TaskFunc callback)
void BuyMenuQuantityBoxNormalBorder(u8 windowId, bool8 copyToVram)
{
- SetWindowBorderStyle(windowId, copyToVram, 0x1, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, 0x1, 0xD);
}
void BuyMenuQuantityBoxThinBorder(u8 windowId, bool8 copyToVram)
{
- SetWindowBorderStyle(windowId, copyToVram, 0xA, 0xF);
+ DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, 0xA, 0xF);
}
void BuyMenuConfirmPurchase(u8 taskId, const struct YesNoFuncTable *yesNo)
diff --git a/src/cable_car_util.c b/src/cable_car_util.c
new file mode 100644
index 000000000..7bad79079
--- /dev/null
+++ b/src/cable_car_util.c
@@ -0,0 +1,38 @@
+#include "global.h"
+
+void CableCarUtil_FillWrapped(void *dest, u16 value, u8 left, u8 top, u8 width, u8 height)
+{
+ u8 i;
+ u8 j;
+ u8 x;
+ u8 y;
+
+ for (i = 0, y = top; i < height; i++)
+ {
+ for (x = left, j = 0; j < width; j++)
+ {
+ *(u16 *)&((u8 *)dest)[y * 64 + x * 2] = value;
+ x = (x + 1) % 32;
+ }
+ y = (y + 1) % 32;
+ }
+}
+
+void CableCarUtil_CopyWrapped(void *dest, const u16 *src, u8 left, u8 top, u8 width, u8 height)
+{
+ u8 i;
+ u8 j;
+ u8 x;
+ u8 y;
+ const u16 *_src;
+
+ for (i = 0, _src = src, y = top; i < height; i++)
+ {
+ for (x = left, j = 0; j < width; j++)
+ {
+ *(u16 *)&((u8 *)dest)[y * 64 + x * 2] = *_src++;
+ x = (x + 1) % 32;
+ }
+ y = (y + 1) % 32;
+ }
+}
diff --git a/src/coins.c b/src/coins.c
index 3a51f6813..9de600e7f 100644
--- a/src/coins.c
+++ b/src/coins.c
@@ -61,7 +61,7 @@ void PrintCoinsString_Parameterized(u8 windowId, u32 coinAmount, u8 x, u8 y, u8
void sub_80D0674(u8 windowId, u16 tileStart, u8 palette, u32 coinAmount)
{
- SetWindowBorderStyle(windowId, FALSE, tileStart, palette);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, palette);
AddTextPrinterParameterized(windowId, 2, gUnknown_8417C2D, 0, 0, 0xFF, 0);
PrintCoinsString_Parameterized(windowId, coinAmount, 0x10, 0xC, 0);
}
@@ -80,15 +80,14 @@ void PrintCoinsString(u32 coinAmount)
void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
{
- struct WindowTemplate template, template2;
+ struct WindowTemplate template;
- SetWindowTemplateFields(&template, 0, x + 1, y + 1, 8, 3, 0xF, 0x20);
- template2 = template; // again, why...
- sCoinsWindowId = AddWindow(&template2);
+ template = SetWindowTemplateFields(0, x + 1, y + 1, 8, 3, 0xF, 0x20);
+ sCoinsWindowId = AddWindow(&template);
FillWindowPixelBuffer(sCoinsWindowId, 0);
PutWindowTilemap(sCoinsWindowId);
TextWindow_SetStdFrame0_WithPal(sCoinsWindowId, 0x21D, 0xD0);
- SetWindowBorderStyle(sCoinsWindowId, FALSE, 0x21D, 0xD);
+ DrawStdFrameWithCustomTileAndPalette(sCoinsWindowId, FALSE, 0x21D, 0xD);
AddTextPrinterParameterized(sCoinsWindowId, 2, gUnknown_8417C2D, 0, 0, 0xFF, 0);
PrintCoinsString(coinAmount);
}
@@ -96,6 +95,6 @@ void ShowCoinsWindow(u32 coinAmount, u8 x, u8 y)
void HideCoinsWindow(void)
{
ClearWindowTilemap(sCoinsWindowId);
- ClearMenuWindow(sCoinsWindowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(sCoinsWindowId, TRUE);
RemoveWindow(sCoinsWindowId);
}
diff --git a/src/diploma.c b/src/diploma.c
new file mode 100644
index 000000000..517ee8aa0
--- /dev/null
+++ b/src/diploma.c
@@ -0,0 +1,285 @@
+#include "global.h"
+#include "bg.h"
+#include "constants/fanfares.h"
+#include "dynamic_placeholder_text_util.h"
+#include "gba/macro.h"
+#include "gpu_regs.h"
+#include "gpu_regs.h"
+#include "main.h"
+#include "malloc.h"
+#include "menu.h"
+#include "new_menu_helpers.h"
+#include "overworld.h"
+#include "palette.h"
+#include "pokedex.h"
+#include "scanline_effect.h"
+#include "sound.h"
+#include "sprite.h"
+#include "strings.h"
+#include "task.h"
+#include "text.h"
+#include "window.h"
+#include "diploma.h"
+
+struct Diploma
+{
+ u8 state;
+ u8 gfxStep;
+ u8 callbackStep;
+ u16 tilemapBuffer[0x800];
+};
+
+static EWRAM_DATA struct Diploma *gDiploma = NULL;
+
+static void DiplomaBgInit(void);
+static void DiplomaPrintText(void);
+static u8 DiplomaLoadGfx(void);
+static void DiplomaVblankHandler(void);
+static void CB2_DiplomaInit(void);
+static void Task_WaitForExit(u8);
+static void Task_DiplomaInit(u8);
+static void Task_DiplomaReturnToOverworld(u8);
+
+static const u32 gUnknown_84147C0[] = INCBIN_U32("graphics/diploma/unk_84147C0.4bpp.lz");
+static const u32 gUnknown_84154E8[] = INCBIN_U32("graphics/diploma/unk_84154E8.bin.lz");
+static const u16 gUnknown_8415954[] = INCBIN_U16("graphics/diploma/unk_8415954.gbapal");
+
+static const u8 gUnknown_8415994[] = _("{HIGHLIGHT TRANSPARENT}プレイヤー");
+static const u8 gUnknown_841599D[] = _("{HIGHLIGHT TRANSPARENT}さま");
+static const u8 gUnknown_84159A3[] = _("{HIGHLIGHT TRANSPARENT}ホウエン");
+static const u8 gUnknown_84159AB[] = _("{HIGHLIGHT TRANSPARENT}ぜんこく");
+static const u8 gUnknown_84159B3[] = _("{HIGHLIGHT TRANSPARENT}     ポケモンずかんを\nみごと かんせい させた\nいだいなこうせきを たたえ\nここに しょうめい します");
+static const u8 gUnknown_84159ED[] = _("{COLOR RED}{HIGHLIGHT TRANSPARENT}ゲームフリーク");
+static const u8 gUnknown_84159FB[] = _("{COLOR RED}{HIGHLIGHT TRANSPARENT}");
+
+static const ALIGNED(4) struct TextColor gUnknown_8415A04 = {0, 2, 3};
+
+static const struct BgTemplate gUnknown_8415A08[] = {
+ {
+ .bg = 0,
+ .charBaseIndex = 0,
+ .mapBaseIndex = 31,
+ .screenSize = 0,
+ .paletteMode = 0,
+ .priority = 0,
+ .baseTile = 1,
+ }, {
+ .bg = 1,
+ .charBaseIndex = 1,
+ .mapBaseIndex = 29,
+ .screenSize = 1,
+ .paletteMode = 0,
+ .priority = 1,
+ .baseTile = 0,
+ }
+};
+
+static const struct WindowTemplate gUnknown_8415A10[] = {
+ {
+ .bg = 0,
+ .tilemapLeft = 0,
+ .tilemapTop = 2,
+ .width = 29,
+ .height = 16,
+ .paletteNum = 15,
+ .baseBlock = 0x000
+ }, DUMMY_WIN_TEMPLATE
+};
+
+static void VCBC_DiplomaOam(void)
+{
+ LoadOam();
+ ProcessSpriteCopyRequests();
+ TransferPlttBuffer();
+}
+
+void CB2_ShowDiploma(void)
+{
+ gDiploma = AllocZeroed(sizeof(*gDiploma));
+ gDiploma->state = 0;
+ gDiploma->gfxStep = 0;
+ gDiploma->callbackStep = 0;
+ DiplomaBgInit();
+ CreateTask(Task_DiplomaInit, 0);
+ SetMainCallback2(CB2_DiplomaInit);
+}
+
+static void CB2_DiplomaInit(void)
+{
+ RunTasks();
+ AnimateSprites();
+ BuildOamBuffer();
+ UpdatePaletteFade();
+}
+
+static void Task_DiplomaInit(u8 taskId)
+{
+ switch (gDiploma->callbackStep)
+ {
+ case 0:
+ SetVBlankCallback(NULL);
+ break;
+ case 1:
+ DiplomaVblankHandler();
+ break;
+ case 2:
+ if (!DiplomaLoadGfx())
+ {
+ return;
+ }
+ break;
+ case 3:
+ CopyToBgTilemapBuffer(1, gUnknown_84154E8, 0, 0);
+ break;
+ case 4:
+ if (HasAllKantoMons())
+ {
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0x80 << 1);
+ }
+ else
+ {
+ SetGpuReg(REG_OFFSET_BG1HOFS, 0);
+ }
+ break;
+ case 5:
+ DiplomaPrintText();
+ break;
+ case 6:
+ CopyBgTilemapBufferToVram(0);
+ CopyBgTilemapBufferToVram(1);
+ break;
+ case 7:
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 16, 0, RGB_BLACK);
+ break;
+ case 8:
+ SetVBlankCallback(VCBC_DiplomaOam);
+ break;
+ default:
+ if (gPaletteFade.active)
+ {
+ break;
+ }
+ PlayFanfareByFanfareNum(FANFARE_05);
+ gTasks[taskId].func = Task_WaitForExit;
+ }
+ gDiploma->callbackStep++;
+}
+
+static void Task_WaitForExit(u8 taskId)
+{
+ switch (gDiploma->state)
+ {
+ case 0:
+ if (WaitFanfare(0))
+ {
+ gDiploma->state++;
+ }
+ break;
+ case 1:
+ if (JOY_NEW(A_BUTTON))
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, RGB_BLACK);
+ gDiploma->state++;
+ }
+ break;
+ case 2:
+ Task_DiplomaReturnToOverworld(taskId);
+ break;
+ }
+}
+
+static void Task_DiplomaReturnToOverworld(u8 taskId)
+{
+ if (gPaletteFade.active)
+ return;
+ DestroyTask(taskId);
+ FreeAllWindowBuffers();
+ FREE_AND_SET_NULL(gDiploma);
+ SetMainCallback2(CB2_Overworld);
+}
+
+static void DiplomaBgInit(void)
+{
+ ResetSpriteData();
+ ResetPaletteFade();
+ FreeAllSpritePalettes();
+ ResetTasks();
+ ScanlineEffect_Stop();
+}
+
+static void DiplomaVblankHandler(void)
+{
+ void *vram = (void *)VRAM;
+ DmaClearLarge16(3, vram, VRAM_SIZE, 0x1000);
+ DmaClear32(3, (void *)OAM, OAM_SIZE);
+ DmaClear16(3, (void *)PLTT, PLTT_SIZE);
+ SetGpuReg(REG_OFFSET_DISPCNT, 0);
+ ResetBgsAndClearDma3BusyFlags(0);
+ InitBgsFromTemplates(0, gUnknown_8415A08, 2);
+ 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);
+ InitWindows(gUnknown_8415A10);
+ DeactivateAllTextPrinters();
+ SetGpuReg(REG_OFFSET_DISPCNT, DISPCNT_OBJ_1D_MAP | DISPCNT_OBJ_ON);
+ SetBgTilemapBuffer(1, gDiploma->tilemapBuffer);
+ ShowBg(0);
+ ShowBg(1);
+ FillBgTilemapBufferRect_Palette0(0, 0, 0, 0, 30, 20);
+ FillBgTilemapBufferRect_Palette0(1, 0, 0, 0, 30, 20);
+}
+
+static u8 DiplomaLoadGfx(void)
+{
+ switch (gDiploma->gfxStep)
+ {
+ case 0:
+ ResetTempTileDataBuffers();
+ break;
+ case 1:
+ DecompressAndCopyTileDataToVram(1, gUnknown_84147C0, 0, 0, 0);
+ break;
+ case 2:
+ if (!(FreeTempTileDataBuffersIfPossible() == 1))
+ {
+ break;
+ }
+ return 0;
+ case 3:
+ LoadPalette(gUnknown_8415954, 0, 0x40);
+ default:
+ return 1;
+ }
+ gDiploma->gfxStep++;
+ return 0;
+}
+
+static void DiplomaPrintText(void)
+{
+ u8 arr[160];
+ u32 width;
+ DynamicPlaceholderTextUtil_Reset();
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
+ if (HasAllKantoMons())
+ {
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841B68F);
+ }
+ else
+ {
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gUnknown_841B698);
+ }
+ FillWindowPixelBuffer(0, 0);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arr, gUnknown_841B60E);
+ width = GetStringWidth(2, arr, -1);
+ AddTextPrinterParameterized3(0, 2, 0x78 - (width / 2), 4, &gUnknown_8415A04, -1, arr);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(arr, gUnknown_841B619);
+ width = GetStringWidth(2, arr, -1);
+ AddTextPrinterParameterized3(0, 0x2, 0x78 - (width / 2), 0x1E, &gUnknown_8415A04, -1, arr);
+ AddTextPrinterParameterized3(0, 0x2, 0x78, 0x69, &gUnknown_8415A04, 0, gUnknown_841B684);
+ PutWindowTilemap(0);
+}
diff --git a/src/fldeff_softboiled.c b/src/fldeff_softboiled.c
index 2a3d68e70..400a1d382 100644
--- a/src/fldeff_softboiled.c
+++ b/src/fldeff_softboiled.c
@@ -3,6 +3,7 @@
#include "sound.h"
#include "string_util.h"
#include "menu.h"
+#include "new_menu_helpers.h"
#include "constants/songs.h"
#include "fldeff.h"
@@ -85,7 +86,7 @@ static void sub_80E58A0(u8 taskId)
sub_811F818(gUnknown_203B0A0.unk9, 0);
gUnknown_203B0A0.unk9 = gUnknown_203B0A0.unkA;
sub_811F818(gUnknown_203B0A0.unkA, 1);
- ClearMenuWindow(6, 0);
+ ClearStdWindowAndFrameToTransparent(6, 0);
ClearWindowTilemap(6);
sub_8121D0C(0);
gTasks[taskId].func = sub_811FB28;
diff --git a/src/fldeff_sweetscent.c b/src/fldeff_sweetscent.c
index 9c6115044..aca56ef4c 100644
--- a/src/fldeff_sweetscent.c
+++ b/src/fldeff_sweetscent.c
@@ -52,8 +52,8 @@ static void StartSweetScentFieldEffect(void)
u8 taskId;
PlaySE(SE_W260);
- gPaletteDecompressionBuffer = (u8 *)Alloc(0x400);
- CpuFastSet(gPlttBufferUnfaded, gPaletteDecompressionBuffer, 0x100);
+ gUnknown_203AAB0 = (u8 *)Alloc(0x400);
+ CpuFastSet(gPlttBufferUnfaded, gUnknown_203AAB0, 0x100);
CpuFastSet(gPlttBufferFaded, gPlttBufferUnfaded, 0x100);
BeginNormalPaletteFade(~(1 << (gSprites[GetPlayerAvatarObjectId()].oam.paletteNum + 16)), 4, 0, 8, RGB(31, 0, 0));
taskId = CreateTask(TrySweetScentEncounter, 0);
@@ -72,7 +72,7 @@ static void TrySweetScentEncounter(u8 taskId)
data[0] = 0;
if (SweetScentWildEncounter() == TRUE)
{
- Free(gPaletteDecompressionBuffer);
+ Free(gUnknown_203AAB0);
DestroyTask(taskId);
}
else
@@ -92,9 +92,9 @@ static void FailSweetScentEncounter(u8 taskId)
{
if (!gPaletteFade.active)
{
- CpuFastSet(gPaletteDecompressionBuffer, gPlttBufferUnfaded, 0x100);
+ CpuFastSet(gUnknown_203AAB0, gPlttBufferUnfaded, 0x100);
sub_807B070();
- Free(gPaletteDecompressionBuffer);
+ Free(gUnknown_203AAB0);
ScriptContext1_SetupScript(EventScript_FailSweetScent);
DestroyTask(taskId);
}
diff --git a/src/item_pc.c b/src/item_pc.c
index abafaa8d9..8f1fd1cbf 100644
--- a/src/item_pc.c
+++ b/src/item_pc.c
@@ -845,7 +845,7 @@ static void Task_ItemPcSubmenuInit(u8 taskId)
ItemPc_SetBorderStyleOnWindow(4);
windowId = ItemPc_GetOrCreateSubwindow(0);
PrintTextArray(4, 2, 8, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, sItemPcSubmenuOptions);
- ProgramAndPlaceMenuCursorOnWindow(4, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, 0);
+ Menu_InitCursor(4, 2, 0, 2, GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT) + 2, 3, 0);
CopyItemName(ItemPc_GetItemIdBySlotId(data[1]), gStringVar1);
StringExpandPlaceholders(gStringVar4, gOtherText_StrVar1);
ItemPc_AddTextPrinterParameterized(windowId, 2, gStringVar4, 0, 2, 1, 0, 0, 1);
@@ -855,7 +855,7 @@ static void Task_ItemPcSubmenuInit(u8 taskId)
static void Task_ItemPcSubmenuRun(u8 taskId)
{
- s8 input = ProcessMenuInputNoWrapAround();
+ s8 input = Menu_ProcessInputNoWrapAround();
switch (input)
{
case -1:
@@ -874,7 +874,7 @@ static void Task_ItemPcWithdraw(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- ClearMenuWindow(4, FALSE);
+ ClearStdWindowAndFrameToTransparent(4, FALSE);
ItemPc_DestroySubwindow(0);
ClearWindowTilemap(4);
data[8] = 1;
@@ -998,7 +998,7 @@ static void Task_ItemPcHandleWithdrawMultiple(u8 taskId)
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- ClearMenuWindow(3, FALSE);
+ ClearStdWindowAndFrameToTransparent(3, FALSE);
ItemPc_DestroySubwindow(1);
ClearWindowTilemap(3);
PutWindowTilemap(0);
@@ -1014,7 +1014,7 @@ static void Task_ItemPcGive(u8 taskId)
{
if (CalculatePlayerPartyCount() == 0)
{
- ClearMenuWindow(4, FALSE);
+ ClearStdWindowAndFrameToTransparent(4, FALSE);
ItemPc_DestroySubwindow(0);
ClearWindowTilemap(4);
PutWindowTilemap(0);
@@ -1045,7 +1045,7 @@ static void gTask_ItemPcWaitButtonAndExitSubmenu(u8 taskId)
if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
- ClearMenuWindow_BorderThickness2(5, 0);
+ ClearDialogWindowAndFrameToTransparent(5, 0);
ClearWindowTilemap(5);
PutWindowTilemap(1);
ItemPc_PrintOrRemoveCursor(data[0], 1);
@@ -1058,7 +1058,7 @@ static void Task_ItemPcCancel(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- ClearMenuWindow(4, FALSE);
+ ClearStdWindowAndFrameToTransparent(4, FALSE);
ItemPc_DestroySubwindow(0);
ClearWindowTilemap(4);
PutWindowTilemap(0);
@@ -1116,7 +1116,7 @@ static void ItemPc_AddTextPrinterParameterized(u8 windowId, u8 fontId, const u8
static void ItemPc_SetBorderStyleOnWindow(u8 windowId)
{
- SetWindowBorderStyle(windowId, FALSE, 0x3C0, 0x0E);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x3C0, 0x0E);
}
static u8 ItemPc_GetOrCreateSubwindow(u8 idx)
@@ -1124,7 +1124,7 @@ static u8 ItemPc_GetOrCreateSubwindow(u8 idx)
if (sSubmenuWindowIds[idx] == 0xFF)
{
sSubmenuWindowIds[idx] = AddWindow(&gUnknown_8453FD0[idx]);
- SetWindowBorderStyle(sSubmenuWindowIds[idx], TRUE, 0x3A3, 0x0C);
+ DrawStdFrameWithCustomTileAndPalette(sSubmenuWindowIds[idx], TRUE, 0x3A3, 0x0C);
}
return sSubmenuWindowIds[idx];
@@ -1132,7 +1132,7 @@ static u8 ItemPc_GetOrCreateSubwindow(u8 idx)
static void ItemPc_DestroySubwindow(u8 idx)
{
- ClearMenuWindow(sSubmenuWindowIds[idx], FALSE);
+ ClearStdWindowAndFrameToTransparent(sSubmenuWindowIds[idx], FALSE);
ClearWindowTilemap(sSubmenuWindowIds[idx]); // redundant
RemoveWindow(sSubmenuWindowIds[idx]);
sSubmenuWindowIds[idx] = 0xFF;
diff --git a/src/menu.c b/src/menu.c
new file mode 100644
index 000000000..bef442d84
--- /dev/null
+++ b/src/menu.c
@@ -0,0 +1,878 @@
+#include "global.h"
+#include "bg.h"
+#include "malloc.h"
+#include "menu.h"
+#include "menu_helpers.h"
+#include "new_menu_helpers.h"
+#include "string_util.h"
+#include "strings.h"
+#include "task.h"
+#include "text_window.h"
+#include "window.h"
+#include "sound.h"
+#include "palette.h"
+#include "constants/songs.h"
+
+struct Menu
+{
+ u8 left;
+ u8 top;
+ s8 cursorPos;
+ s8 minCursorPos;
+ s8 maxCursorPos;
+ u8 windowId;
+ u8 fontId;
+ u8 optionWidth;
+ u8 optionHeight;
+ u8 columns;
+ u8 rows;
+ bool8 APressMuted;
+};
+
+static EWRAM_DATA struct Menu sMenu = {0};
+static EWRAM_DATA u16 sTileNum = 0;
+static EWRAM_DATA u8 sPaletteNum = 0;
+static EWRAM_DATA u8 sYesNoWindowId = 0;
+static EWRAM_DATA u8 sTopBarWindowId = 0;
+
+static void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum);
+static u8 MultichoiceGrid_MoveCursor(s8 deltaX, s8 deltaY);
+
+static const struct TextColor gUnknown_8456618 =
+{
+ .fgColor = 15,
+ .bgColor = 1,
+ .shadowColor = 2,
+};
+
+void DrawDialogFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 tileNum, u8 paletteNum)
+{
+ sTileNum = tileNum;
+ sPaletteNum = paletteNum;
+ CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+// not used
+static void DrawDialogFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 tileNum)
+{
+ sTileNum = tileNum;
+ sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
+ CallWindowFunction(windowId, WindowFunc_DrawDialogFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_DrawDialogFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, sTileNum, tilemapLeft - 2, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 1, tilemapLeft - 1, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 2, tilemapLeft, tilemapTop - 1, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 3, tilemapLeft + width, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 4, tilemapLeft + width + 1, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 5, tilemapLeft - 2, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 6, tilemapLeft - 1, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 8, tilemapLeft + width, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 9, tilemapLeft + width + 1, tilemapTop, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 10, tilemapLeft - 2, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 11, tilemapLeft - 1, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 12, tilemapLeft + width, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 13, tilemapLeft + width + 1, tilemapTop + 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 10), tilemapLeft - 2, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 11), tilemapLeft - 1, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 12), tilemapLeft + width, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 13), tilemapLeft + width + 1, tilemapTop + 2, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 5), tilemapLeft - 2, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 6), tilemapLeft - 1, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 8), tilemapLeft + width, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 9), tilemapLeft + width + 1, tilemapTop + 3, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum), tilemapLeft - 2, tilemapTop + 4, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 1), tilemapLeft - 1, tilemapTop + 4, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 2), tilemapLeft, tilemapTop + 4, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 3), tilemapLeft + width, tilemapTop + 4, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, BG_TILE_V_FLIP(sTileNum + 4), tilemapLeft + width + 1, tilemapTop + 4, 1, 1, sPaletteNum);
+}
+
+void ClearDialogWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram)
+{
+ // The palette slot doesn't matter, since the tiles are transparent.
+ CallWindowFunction(windowId, WindowFunc_ClearDialogWindowAndFrameNullPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_ClearDialogWindowAndFrameNullPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 2, tilemapTop - 1, width + 4, height + 2, 0);
+}
+
+void DrawStdFrameWithCustomTileAndPalette(u8 windowId, bool8 copyToVram, u16 baseTileNum, u8 paletteNum)
+{
+ sTileNum = baseTileNum;
+ sPaletteNum = paletteNum;
+ CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+// not used
+static void DrawStdFrameWithCustomTile(u8 windowId, bool8 copyToVram, u16 baseTileNum)
+{
+ sTileNum = baseTileNum;
+ sPaletteNum = GetWindowAttribute(windowId, WINDOW_PALETTE_NUM);
+ CallWindowFunction(windowId, WindowFunc_DrawStdFrameWithCustomTileAndPalette);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(1));
+ PutWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_DrawStdFrameWithCustomTileAndPalette(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, sTileNum, tilemapLeft - 1, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 1, tilemapLeft, tilemapTop - 1, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 2, tilemapLeft + width, tilemapTop - 1, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 3, tilemapLeft - 1, tilemapTop, 1, height, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 5, tilemapLeft + width, tilemapTop, 1, height, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 6, tilemapLeft - 1, tilemapTop + height, 1, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 7, tilemapLeft, tilemapTop + height, width, 1, sPaletteNum);
+ FillBgTilemapBufferRect(bg, sTileNum + 8, tilemapLeft + width, tilemapTop + height, 1, 1, sPaletteNum);
+}
+
+void ClearStdWindowAndFrameToTransparent(u8 windowId, bool8 copyToVram)
+{
+ CallWindowFunction(windowId, WindowFunc_ClearStdWindowAndFrameToTransparent);
+ FillWindowPixelBuffer(windowId, PIXEL_FILL(0));
+ ClearWindowTilemap(windowId);
+ if (copyToVram == TRUE)
+ CopyWindowToVram(windowId, 3);
+}
+
+static void WindowFunc_ClearStdWindowAndFrameToTransparent(u8 bg, u8 tilemapLeft, u8 tilemapTop, u8 width, u8 height, u8 paletteNum)
+{
+ FillBgTilemapBufferRect(bg, 0, tilemapLeft - 1, tilemapTop - 1, width + 2, height + 2, 0);
+}
+
+/*
+ The following functions are used for handling top bar window
+ in hall of fame screen and story mode screen before oak intro.
+ However, you can still designate a yPos value to place that bar
+ as well as the bar width.
+ The xPos is simply computed according to width (always right aligned).
+*/
+u8 CreateTopBarWindowLoadPalette(u8 bg, u8 width, u8 yPos, u8 palette, u16 baseTile)
+{
+ struct WindowTemplate window;
+
+ memset(&window, 0, sizeof(window));
+ if (bg > 3)
+ window.bg = 0;
+ else
+ window.bg = bg;
+ window.tilemapTop = yPos;
+ window.height = 2;
+ window.tilemapLeft = 0x1E - width;
+ window.width = width;
+ window.paletteNum = palette;
+ window.baseBlock = baseTile;
+ sTopBarWindowId = AddWindow(&window);
+ if (palette > 15)
+ palette = 15 * 16;
+ else
+ palette *= 16;
+ LoadPalette(stdpal_get(2), palette, 0x20);
+ return sTopBarWindowId;
+}
+
+void TopBarWindowPrintString(const u8 *string, u8 unused, bool8 copyToVram)
+{
+ s32 width;
+
+ if (sTopBarWindowId != 0xFF)
+ {
+ PutWindowTilemap(sTopBarWindowId);
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(15));
+ width = GetStringWidth(0, string, 0);
+ AddTextPrinterParameterized3(sTopBarWindowId, 0, -20 - width, 1, &gUnknown_8456618, 0, string);
+ if (copyToVram)
+ CopyWindowToVram(sTopBarWindowId, 3);
+ }
+}
+
+void TopBarWindowPrintTwoStrings(const u8 *string, const u8 *string2, bool8 fgColorChooser, u8 unused, bool8 copyToVram)
+{
+ struct TextColor color;
+ s32 fgColor, width;
+
+ if ( sTopBarWindowId != 0xFF )
+ {
+ if (fgColorChooser)
+ {
+ color.fgColor = 0;
+ color.bgColor = 1;
+ color.shadowColor = 2;
+ }
+ else
+ {
+ color.fgColor = 15;
+ color.bgColor = 1;
+ color.shadowColor = 2;
+ }
+
+ PutWindowTilemap(sTopBarWindowId);
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(15));
+ if (string2)
+ {
+ width = GetStringWidth(0, string2, 0);
+ AddTextPrinterParameterized3(sTopBarWindowId, 0, -20 - width, 1, &color, 0, string2);
+ }
+ AddTextPrinterParameterized4(sTopBarWindowId, 1, 4, 1, 0, 0, &color, 0, string);
+ if (copyToVram)
+ CopyWindowToVram(sTopBarWindowId, 3);
+ }
+}
+
+// not used
+static void CopyTopBarWindowToVram(void)
+{
+ if (sTopBarWindowId != 0xFF)
+ CopyWindowToVram(sTopBarWindowId, 3);
+}
+
+void ClearTopBarWindow(void)
+{
+ if (sTopBarWindowId != 0xFF)
+ {
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(15));
+ CopyWindowToVram(sTopBarWindowId, 3);
+ }
+}
+
+void DestroyTopBarWindow(void)
+{
+ if (sTopBarWindowId != 0xFF)
+ {
+ FillWindowPixelBuffer(sTopBarWindowId, PIXEL_FILL(0));
+ ClearWindowTilemap(sTopBarWindowId);
+ CopyWindowToVram(sTopBarWindowId, 3);
+ RemoveWindow(sTopBarWindowId);
+ sTopBarWindowId = 0xFF;
+ }
+}
+
+u8 Menu_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos, bool8 APressMuted)
+{
+ s32 pos;
+
+ sMenu.left = left;
+ sMenu.top = top;
+ sMenu.minCursorPos = 0;
+ sMenu.maxCursorPos = numChoices - 1;
+ sMenu.windowId = windowId;
+ sMenu.fontId = fontId;
+ sMenu.optionHeight = cursorHeight;
+ sMenu.APressMuted = APressMuted;
+ pos = initialCursorPos;
+ if (pos < 0 || pos > sMenu.maxCursorPos)
+ sMenu.cursorPos = 0;
+ else
+ sMenu.cursorPos = pos;
+
+ Menu_MoveCursor(0);
+ return sMenu.cursorPos;
+}
+
+u8 Menu_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 cursorHeight, u8 numChoices, u8 initialCursorPos)
+{
+ return Menu_InitCursorInternal(windowId, fontId, left, top, cursorHeight, numChoices, initialCursorPos, 0);
+}
+
+// not used
+static u8 sub_810F818(u8 windowId, u8 fontId, u8 left, u8 top, u8 numChoices, u8 initialCursorPos)
+{
+ return Menu_InitCursor(windowId, fontId, left, top, GetMenuCursorDimensionByFont(fontId, 1), numChoices, initialCursorPos);
+}
+
+static void Menu_RedrawCursor(u8 oldPos, u8 newPos)
+{
+ u8 width, height;
+
+ width = GetMenuCursorDimensionByFont(sMenu.fontId, 0);
+ height = GetMenuCursorDimensionByFont(sMenu.fontId, 1);
+ FillWindowPixelRect(sMenu.windowId, 1, sMenu.left, sMenu.optionHeight * oldPos + sMenu.top, width, height);
+ AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gFameCheckerText_ListMenuCursor, sMenu.left, sMenu.optionHeight * newPos + sMenu.top, 0, 0);
+}
+
+u8 Menu_MoveCursor(s8 cursorDelta)
+{
+ u8 oldPos = sMenu.cursorPos;
+ s32 newPos = sMenu.cursorPos + cursorDelta;
+
+ if (newPos < sMenu.minCursorPos)
+ sMenu.cursorPos = sMenu.maxCursorPos;
+ else if (newPos > sMenu.maxCursorPos)
+ sMenu.cursorPos = sMenu.minCursorPos;
+ else
+ sMenu.cursorPos += cursorDelta;
+ Menu_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+}
+
+u8 Menu_MoveCursorNoWrapAround(s8 cursorDelta)
+{
+ u8 oldPos = sMenu.cursorPos;
+ s32 newPos = sMenu.cursorPos + cursorDelta;
+
+ if (newPos < sMenu.minCursorPos)
+ sMenu.cursorPos = sMenu.minCursorPos;
+ else if (newPos > sMenu.maxCursorPos)
+ sMenu.cursorPos = sMenu.maxCursorPos;
+ else
+ sMenu.cursorPos += cursorDelta;
+
+ Menu_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+}
+
+u8 Menu_GetCursorPos(void)
+{
+ return sMenu.cursorPos;
+}
+
+s8 Menu_ProcessInput(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(-1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInputNoWrapAround(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(-1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInput_other(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(-1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ Menu_MoveCursor(1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInputNoWrapAround_other(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ if (!sMenu.APressMuted)
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(-1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ if (oldPos != Menu_MoveCursorNoWrapAround(1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+void PrintTextArray(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs)
+{
+ u8 i;
+
+ for (i = 0; i < itemCount; i++)
+ AddTextPrinterParameterized(windowId, fontId, strs[i].text, left, (lineHeight * i) + top, 0xFF, NULL);
+ CopyWindowToVram(windowId, 2);
+}
+
+void MultichoiceList_PrintItems(u8 windowId, u8 fontId, u8 left, u8 top, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, u8 letterSpacing, u8 lineSpacing)
+{
+ u8 i;
+
+ for (i = 0; i < itemCount; i++)
+ AddTextPrinterParameterized5(windowId, fontId, strs[i].text, left, (lineHeight * i) + top, 0xFF, NULL, letterSpacing, lineSpacing);
+ CopyWindowToVram(windowId, 2);
+}
+
+void UnionRoomAndTradeMenuPrintOptions(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs)
+{
+ u8 left = GetMenuCursorDimensionByFont(fontId, 0);
+
+ PrintTextArray(windowId, fontId, left, 0, lineHeight, itemCount, strs);
+}
+
+void AddItemMenuActionTextPrinters(u8 windowId, u8 fontId, u8 left, u8 top, u8 letterSpacing, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *orderArray)
+{
+ u8 i;
+ struct TextPrinterTemplate printer;
+
+ printer.windowId = windowId;
+ printer.fontId = fontId;
+ printer.fgColor = GetFontAttribute(fontId, FONTATTR_COLOR_FOREGROUND);
+ printer.bgColor = GetFontAttribute(fontId, FONTATTR_COLOR_BACKGROUND);
+ printer.shadowColor = GetFontAttribute(fontId, FONTATTR_COLOR_SHADOW);
+ printer.unk = GetFontAttribute(fontId, FONTATTR_UNKNOWN);
+ printer.letterSpacing = letterSpacing;
+ printer.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
+ printer.x = left;
+ printer.currentX = left;
+ for (i = 0; i < itemCount; i++)
+ {
+ printer.currentChar = strs[orderArray[i]].text;
+ printer.y = (lineHeight * i) + top;
+ printer.currentY = printer.y;
+ AddTextPrinter(&printer, 0xFF, NULL);
+ }
+ CopyWindowToVram(windowId, 2);
+}
+
+// not used
+static void sub_810FDE4(u8 windowId, u8 fontId, u8 lineHeight, u8 itemCount, const struct MenuAction *strs, const u8 *orderArray)
+{
+ AddItemMenuActionTextPrinters(windowId, fontId, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH), 0, GetFontAttribute(fontId, FONTATTR_LETTER_SPACING), lineHeight, itemCount, strs, orderArray);
+}
+
+struct WindowTemplate SetWindowTemplateFields(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
+{
+ struct WindowTemplate template;
+
+ template.bg = bg;
+ template.tilemapLeft = left;
+ template.tilemapTop = top;
+ template.width = width;
+ template.height = height;
+ template.paletteNum = paletteNum;
+ template.baseBlock = baseBlock;
+ return template;
+}
+
+// not used
+static u16 CreateWindowTemplate(u8 bg, u8 left, u8 top, u8 width, u8 height, u8 paletteNum, u16 baseBlock)
+{
+ struct WindowTemplate template = SetWindowTemplateFields(bg, left, top, width, height, paletteNum, baseBlock);
+ return AddWindow(&template);
+}
+
+void CreateYesNoMenu(const struct WindowTemplate *window, u8 fontId, u8 left, u8 top, u16 baseTileNum, u8 paletteNum, u8 initialCursorPos)
+{
+ struct TextPrinterTemplate textSubPrinter;
+
+ sYesNoWindowId = AddWindow(window);
+ DrawStdFrameWithCustomTileAndPalette(sYesNoWindowId, 1, baseTileNum, paletteNum);
+ textSubPrinter.currentChar = gUnknown_841623D;
+ textSubPrinter.windowId = sYesNoWindowId;
+ textSubPrinter.fontId = fontId;
+ textSubPrinter.x = GetMenuCursorDimensionByFont(fontId, 0) + left;
+ textSubPrinter.y = top;
+ textSubPrinter.currentX = textSubPrinter.x;
+ textSubPrinter.currentY = textSubPrinter.y;
+ textSubPrinter.fgColor = GetFontAttribute(fontId, FONTATTR_COLOR_FOREGROUND);
+ textSubPrinter.bgColor = GetFontAttribute(fontId, FONTATTR_COLOR_BACKGROUND);
+ textSubPrinter.shadowColor = GetFontAttribute(fontId, FONTATTR_COLOR_SHADOW);
+ textSubPrinter.unk = GetFontAttribute(fontId, FONTATTR_UNKNOWN);
+ textSubPrinter.letterSpacing = GetFontAttribute(fontId, FONTATTR_LETTER_SPACING);
+ textSubPrinter.lineSpacing = GetFontAttribute(fontId, FONTATTR_LINE_SPACING);
+ AddTextPrinter(&textSubPrinter, 0xFF, NULL);
+ Menu_InitCursor(sYesNoWindowId, fontId, left, top, GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT) + textSubPrinter.lineSpacing, 2, initialCursorPos);
+}
+
+// not used
+static void CreateYesNoMenu2(const struct WindowTemplate *window, u8 paletteNum, u16 baseTileNum, u8 initialCursorPos)
+{
+ CreateYesNoMenu(window, paletteNum, 0, 0, baseTileNum, initialCursorPos, 0);
+}
+
+s8 Menu_ProcessInputNoWrapClearOnChoose(void)
+{
+ s8 result = Menu_ProcessInputNoWrapAround();
+ if (result != MENU_NOTHING_CHOSEN)
+ DestroyYesNoMenu();
+ return result;
+}
+
+void DestroyYesNoMenu(void)
+{
+ ClearStdWindowAndFrameToTransparent(sYesNoWindowId, TRUE);
+ RemoveWindow(sYesNoWindowId);
+}
+
+void MultichoiceGrid_PrintItems(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs)
+{
+ u8 width, i, j, yOffset;
+
+ fontId = fontId;
+ itemWidth = itemWidth;
+ itemHeight = itemHeight;
+ width = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH);
+ yOffset = (16 - GetFontAttribute(fontId, FONTATTR_MAX_LETTER_HEIGHT)) / 2;
+ for (i = 0; i < rows; ++i)
+ for (j = 0; j < cols; ++j)
+ AddTextPrinterParameterized(windowId, fontId, strs[i * cols + j].text, itemWidth * j + width, yOffset + itemHeight * i, 0xFF, 0);
+ CopyWindowToVram(windowId, 2);
+}
+
+//not used
+static void MultichoiceGrid_PrintItemsCustomOrder(u8 windowId, u8 fontId, u8 itemWidth, u8 itemHeight, u8 cols, u8 rows, const struct MenuAction *strs, const u8 *orderArray)
+{
+ u8 width, i, j;
+
+ fontId = fontId;
+ itemWidth = itemWidth;
+ itemHeight = itemHeight;
+ width = GetFontAttribute(fontId, FONTATTR_MAX_LETTER_WIDTH);
+ for (i = 0; i < rows; ++i)
+ for (j = 0; j < cols; ++j)
+ AddTextPrinterParameterized(windowId, fontId, strs[orderArray[i * cols + j]].text, itemWidth * j + width, itemHeight * i, 0xFF, 0);
+ CopyWindowToVram(windowId, 2);
+}
+
+static u8 MultichoiceGrid_InitCursorInternal(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cursorHeight, u8 cols, u8 rows, u8 numChoices, u8 cursorPos)
+{
+ s32 pos;
+
+ sMenu.left = left;
+ sMenu.top = top;
+ sMenu.minCursorPos = 0;
+ sMenu.maxCursorPos = numChoices - 1;
+ sMenu.windowId = windowId;
+ sMenu.fontId = fontId;
+ sMenu.optionWidth = optionWidth;
+ sMenu.optionHeight = cursorHeight;
+ sMenu.columns = cols;
+ sMenu.rows = rows;
+ pos = cursorPos;
+ if (pos < 0 || pos > sMenu.maxCursorPos)
+ sMenu.cursorPos = 0;
+ else
+ sMenu.cursorPos = pos;
+ MultichoiceGrid_MoveCursor(0, 0);
+ return sMenu.cursorPos;
+}
+
+u8 MultichoiceGrid_InitCursor(u8 windowId, u8 fontId, u8 left, u8 top, u8 optionWidth, u8 cols, u8 rows, u8 cursorPos)
+{
+ s32 cursorHeight = 16;
+ u8 numChoices = cols * rows;
+
+ return MultichoiceGrid_InitCursorInternal(windowId, fontId, left, top, optionWidth, cursorHeight, cols, rows, numChoices, cursorPos);
+}
+
+static void MultichoiceGrid_RedrawCursor(u8 oldCursorPos, u8 newCursorPos)
+{
+ u8 cursorWidth = GetMenuCursorDimensionByFont(sMenu.fontId, 0);
+ u8 cursorHeight = GetMenuCursorDimensionByFont(sMenu.fontId, 1);
+ u8 xPos = (oldCursorPos % sMenu.columns) * sMenu.optionWidth + sMenu.left;
+ u8 yPos = (oldCursorPos / sMenu.columns) * sMenu.optionHeight + sMenu.top;
+
+ FillWindowPixelRect(sMenu.windowId, PIXEL_FILL(1), xPos, yPos, cursorWidth, cursorHeight);
+ xPos = (newCursorPos % sMenu.columns) * sMenu.optionWidth + sMenu.left;
+ yPos = (newCursorPos / sMenu.columns) * sMenu.optionHeight + sMenu.top;
+ AddTextPrinterParameterized(sMenu.windowId, sMenu.fontId, gFameCheckerText_ListMenuCursor, xPos, yPos, 0, 0);
+}
+
+static u8 MultichoiceGrid_MoveCursor(s8 deltaX, s8 deltaY)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (deltaX)
+ {
+ if ((sMenu.cursorPos % sMenu.columns) + deltaX < 0)
+ sMenu.cursorPos += sMenu.columns - 1;
+ else if ((sMenu.cursorPos % sMenu.columns) + deltaX >= sMenu.columns)
+ sMenu.cursorPos = (sMenu.cursorPos / sMenu.columns) * sMenu.columns;
+ else
+ sMenu.cursorPos += deltaX;
+ }
+ if (deltaY)
+ {
+ if ((sMenu.cursorPos / sMenu.columns) + deltaY < 0)
+ sMenu.cursorPos += sMenu.columns * (sMenu.rows - 1);
+ else if ((sMenu.cursorPos / sMenu.columns) + deltaY >= sMenu.rows)
+ sMenu.cursorPos -= sMenu.columns * (sMenu.rows - 1);
+ else
+ sMenu.cursorPos += (sMenu.columns * deltaY);
+ }
+ if (sMenu.cursorPos > sMenu.maxCursorPos)
+ {
+ sMenu.cursorPos = oldPos;
+ return sMenu.cursorPos;
+ }
+ else
+ {
+ MultichoiceGrid_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+ }
+}
+
+static u8 MultichoiceGrid_MoveCursorIfValid(s8 deltaX, s8 deltaY)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (deltaX)
+ {
+ if (((sMenu.cursorPos % sMenu.columns) + deltaX >= 0) && ((sMenu.cursorPos % sMenu.columns) + deltaX < sMenu.columns))
+ sMenu.cursorPos += deltaX;
+ }
+ if (deltaY)
+ {
+ if (((sMenu.cursorPos / sMenu.columns) + deltaY >= 0) && ((sMenu.cursorPos / sMenu.columns) + deltaY < sMenu.rows))
+ sMenu.cursorPos += (sMenu.columns * deltaY);
+ }
+ if (sMenu.cursorPos > sMenu.maxCursorPos)
+ {
+ sMenu.cursorPos = oldPos;
+ return sMenu.cursorPos;
+ }
+ else
+ {
+ MultichoiceGrid_RedrawCursor(oldPos, sMenu.cursorPos);
+ return sMenu.cursorPos;
+ }
+}
+
+// not used
+static s8 sub_81105A0(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, -1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, 1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_LEFT) || GetLRKeysState() == 1)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(-1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysState() == 2)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+s8 Menu_ProcessInputGridLayout(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_NEW(DPAD_UP))
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, -1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_DOWN))
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, 1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_LEFT) || GetLRKeysState() == 1)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(-1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_NEW(DPAD_RIGHT) || GetLRKeysState() == 2)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
+
+// not used
+static s8 sub_81106F4(void)
+{
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, -1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(0, 1);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || sub_80BF66C() == 1)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(-1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || sub_80BF66C() == 2)
+ {
+ PlaySE(SE_SELECT);
+ MultichoiceGrid_MoveCursor(1, 0);
+ return MENU_NOTHING_CHOSEN;
+ }
+
+ return MENU_NOTHING_CHOSEN;
+}
+
+// not used
+static s8 sub_81107A0(void)
+{
+ u8 oldPos = sMenu.cursorPos;
+
+ if (JOY_NEW(A_BUTTON))
+ {
+ PlaySE(SE_SELECT);
+ return sMenu.cursorPos;
+ }
+ else if (JOY_NEW(B_BUTTON))
+ {
+ return MENU_B_PRESSED;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_UP)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, -1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_DOWN)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(0, 1))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_LEFT || sub_80BF66C() == 1)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(-1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ else if (JOY_REPT(DPAD_ANY) == DPAD_RIGHT || sub_80BF66C() == 2)
+ {
+ if (oldPos != MultichoiceGrid_MoveCursorIfValid(1, 0))
+ PlaySE(SE_SELECT);
+ return MENU_NOTHING_CHOSEN;
+ }
+ return MENU_NOTHING_CHOSEN;
+}
diff --git a/src/menu2.c b/src/menu2.c
index ffe5865e4..6a3668cfa 100644
--- a/src/menu2.c
+++ b/src/menu2.c
@@ -504,7 +504,7 @@ void sub_812E6DC(u8 windowId, const u8 * src, u16 x, u16 y)
// Yeah, no, I'm not bothering with this
NAKED
-void sub_819A080(void * a0, void * a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
+static void sub_812E768(void * a0, void * a1, u16 a2, u16 a3, u16 a4, u16 a5, u16 a6, u16 a7)
{
asm_unified("\tpush {r4-r7,lr}\n"
"\tmov r7, r10\n"
diff --git a/src/menu_helpers.c b/src/menu_helpers.c
index 12837c099..fdcb9a56e 100644
--- a/src/menu_helpers.c
+++ b/src/menu_helpers.c
@@ -22,10 +22,10 @@ static EWRAM_DATA u8 gUnknown_20399D0 = {0};
static void Task_ContinueTaskAfterMessagePrints(u8 taskId);
-void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 arg2, u8 arg3, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc)
+void DisplayMessageAndContinueTask(u8 taskId, u8 windowId, u16 tileNum, u8 paletteNum, u8 fontId, u8 textSpeed, const u8 *string, void *taskFunc)
{
gUnknown_20399D0 = windowId;
- DrawDialogFrameWithCustomTileAndPalette(windowId, TRUE, arg2, arg3);
+ DrawDialogFrameWithCustomTileAndPalette(windowId, TRUE, tileNum, paletteNum);
if (string != gStringVar4)
StringExpandPlaceholders(gStringVar4, string);
@@ -64,9 +64,9 @@ static void Task_CallYesOrNoCallback(u8 taskId)
}
}
-void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 arg2, u8 arg3, u8 arg4, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo)
+void CreateYesNoMenuWithCallbacks(u8 taskId, const struct WindowTemplate *template, u8 fontId, u8 left, u8 top, u16 tileStart, u8 palette, const struct YesNoFuncTable *yesNo)
{
- CreateYesNoMenu(template, arg2, arg3, arg4, tileStart, palette, 0);
+ CreateYesNoMenu(template, fontId, left, top, tileStart, palette, 0);
gUnknown_20399C8 = yesNo;
gTasks[taskId].func = Task_CallYesOrNoCallback;
}
diff --git a/src/mevent_8145654.c b/src/mevent_8145654.c
index de6e1caa5..c67cd1358 100644
--- a/src/mevent_8145654.c
+++ b/src/mevent_8145654.c
@@ -6,6 +6,7 @@
#include "decompress.h"
#include "malloc.h"
#include "menu.h"
+#include "new_menu_helpers.h"
#include "pokemon_icon.h"
#include "mystery_gift_menu.h"
#include "menu_indicators.h"
diff --git a/src/money.c b/src/money.c
index ffaba2e29..39e5aaa32 100644
--- a/src/money.c
+++ b/src/money.c
@@ -109,7 +109,7 @@ void PrintMoneyAmount(u8 windowId, u8 x, u8 y, int amount, u8 speed)
void PrintMoneyAmountInMoneyBoxWithBorder(u8 windowId, u16 tileStart, u8 pallete, int amount)
{
- SetWindowBorderStyle(windowId, FALSE, tileStart, pallete);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, tileStart, pallete);
AddTextPrinterParameterized(windowId, 2, gUnknown_8419CE7, 0, 0, 0xFF, 0);
PrintMoneyAmountInMoneyBox(windowId, amount, 0);
}
@@ -121,11 +121,10 @@ void ChangeAmountInMoneyBox(int amount)
void DrawMoneyBox(int amount, u8 x, u8 y)
{
- struct WindowTemplate template, template2;
+ struct WindowTemplate template;
- SetWindowTemplateFields(&template, 0, x + 1, y + 1, 8, 3, 15, 8);
- template2 = template;
- sMoneyBoxWindowId = AddWindow(&template2);
+ template = SetWindowTemplateFields(0, x + 1, y + 1, 8, 3, 15, 8);
+ sMoneyBoxWindowId = AddWindow(&template);
FillWindowPixelBuffer(sMoneyBoxWindowId, 0);
PutWindowTilemap(sMoneyBoxWindowId);
TextWindow_SetStdFrame0_WithPal(sMoneyBoxWindowId, 0x21D, 0xD0);
@@ -134,7 +133,7 @@ void DrawMoneyBox(int amount, u8 x, u8 y)
void HideMoneyBox(void)
{
- ClearMenuWindow(sMoneyBoxWindowId, FALSE);
+ ClearStdWindowAndFrameToTransparent(sMoneyBoxWindowId, FALSE);
CopyWindowToVram(sMoneyBoxWindowId, 2);
RemoveWindow(sMoneyBoxWindowId);
}
diff --git a/src/new_menu_helpers.c b/src/new_menu_helpers.c
index 1939154da..9d2a5c883 100644
--- a/src/new_menu_helpers.c
+++ b/src/new_menu_helpers.c
@@ -603,7 +603,7 @@ void sub_80F771C(bool8 copyToVram)
void SetStdWindowBorderStyle(u8 windowId, bool8 copyToVram)
{
- SetWindowBorderStyle(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM);
+ DrawStdFrameWithCustomTileAndPalette(windowId, copyToVram, STD_WINDOW_BASE_TILE_NUM, STD_WINDOW_PALETTE_NUM);
}
void sub_80F7768(u8 windowId, bool8 copyToVram)
@@ -671,10 +671,8 @@ u8 sub_80F78E0(u8 height)
{
if (sStartMenuWindowId == 0xFF)
{
- struct WindowTemplate wTemp1, wTemp2;
- SetWindowTemplateFields(&wTemp1, 0, 0x16, 1, 7, height * 2 - 1, DLG_WINDOW_PALETTE_NUM, 0x13D);
- wTemp2 = wTemp1;
- sStartMenuWindowId = AddWindow(&wTemp2);
+ struct WindowTemplate template = SetWindowTemplateFields(0, 0x16, 1, 7, height * 2 - 1, DLG_WINDOW_PALETTE_NUM, 0x13D);
+ sStartMenuWindowId = AddWindow(&template);
PutWindowTilemap(sStartMenuWindowId);
}
return sStartMenuWindowId;
diff --git a/src/oak_speech.c b/src/oak_speech.c
index 43ff133de..c00335136 100644
--- a/src/oak_speech.c
+++ b/src/oak_speech.c
@@ -37,7 +37,7 @@ struct OakSpeechResources
u16 unk_0010;
u16 unk_0012;
u16 unk_0014[4];
- u8 unk_001C[3];
+ struct TextColor textColor;
u8 textSpeed;
u8 filler_0020[0x1800];
u8 bg2TilemapBuffer[0x400];
@@ -546,7 +546,7 @@ static void Task_OaksSpeech1(u8 taskId)
CopyBgTilemapBufferToVram(1);
break;
case 7:
- CreateWindow_SnapRight_StdPal(0, 30, 0, 13, 0x1C4);
+ CreateTopBarWindowLoadPalette(0, 30, 0, 13, 0x1C4);
FillBgTilemapBufferRect_Palette0(1, 0xD00F, 0, 0, 30, 2);
FillBgTilemapBufferRect_Palette0(1, 0xD002, 0, 2, 30, 1);
FillBgTilemapBufferRect_Palette0(1, 0xD00E, 0, 19, 30, 1);
@@ -572,7 +572,7 @@ static void Task_OaksSpeech1(u8 taskId)
static void CreateHelpDocsPage1(void)
{
- Menu_PrintHelpSystemUIHeader(gText_Controls, gText_ABUTTONNext, 0, 0, 1);
+ TopBarWindowPrintTwoStrings(gText_Controls, gText_ABUTTONNext, 0, 0, 1);
sOakSpeechResources->unk_0014[0] = AddWindow(sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012]);
PutWindowTilemap(sOakSpeechResources->unk_0014[0]);
FillWindowPixelBuffer(sOakSpeechResources->unk_0014[0], 0x00);
@@ -592,7 +592,7 @@ static void Task_OakSpeech4(u8 taskId)
}
else
{
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext_BBUTTONBack, 0, 1);
+ TopBarWindowPrintString(gText_ABUTTONNext_BBUTTONBack, 0, 1);
for (i = 0; i < 3; i++)
{
sOakSpeechResources->unk_0014[i] = AddWindow(&sHelpDocsWindowTemplatePtrs[sOakSpeechResources->unk_0012][i]);
@@ -716,8 +716,8 @@ static void Task_OakSpeech6(u8 taskId)
else
{
PlayBGM(BGM_FRLG_GAME_EXPLANATION_MIDDLE);
- sub_810F71C();
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1);
+ ClearTopBarWindow();
+ TopBarWindowPrintString(gText_ABUTTONNext, 0, 1);
sOakSpeechResources->unk_0008 = MallocAndDecompress(sNewGameAdventureIntroTilemap, &sp14);
CopyToBgTilemapBufferRect(1, sOakSpeechResources->unk_0008, 0, 2, 30, 19);
CopyBgTilemapBufferToVram(1);
@@ -793,13 +793,13 @@ static void Task_OakSpeech7(u8 taskId)
AddTextPrinterParameterized4(data[14], 2, 3, 5, 1, 0, &sTextColor_OakSpeech, 0, sNewGameAdventureIntroTextPointers[sOakSpeechResources->unk_0012]);
if (sOakSpeechResources->unk_0012 == 0)
{
- sub_810F71C();
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext, 0, 1);
+ ClearTopBarWindow();
+ TopBarWindowPrintString(gText_ABUTTONNext, 0, 1);
}
else
{
- sub_810F71C();
- PrintTextOnRightSnappedWindow(gText_ABUTTONNext_BBUTTONBack, 0, 1);
+ ClearTopBarWindow();
+ TopBarWindowPrintString(gText_ABUTTONNext_BBUTTONBack, 0, 1);
}
gMain.state++;
}
@@ -846,7 +846,7 @@ static void Task_OakSpeech8(u8 taskId)
if (!gPaletteFade.active)
{
- sub_810F740();
+ DestroyTopBarWindow();
FillWindowPixelBuffer(data[14], 0x00);
ClearWindowTilemap(data[14]);
CopyWindowToVram(data[14], 3);
@@ -1054,17 +1054,17 @@ static void Task_OakSpeech19(u8 taskId)
{
gTasks[taskId].data[13] = AddWindow(&sNewGameAdventureIntroWindowTemplates[1]);
PutWindowTilemap(gTasks[taskId].data[13]);
- SetWindowBorderStyle(gTasks[taskId].data[13], 1, GetStdWindowBaseTileNum(), 14);
+ DrawStdFrameWithCustomTileAndPalette(gTasks[taskId].data[13], 1, GetStdWindowBaseTileNum(), 14);
FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11);
- sOakSpeechResources->unk_001C[0] = 1;
- sOakSpeechResources->unk_001C[1] = 2;
- sOakSpeechResources->unk_001C[2] = 3;
- AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 1, sOakSpeechResources->unk_001C, 0, gText_Boy);
- sOakSpeechResources->unk_001C[0] = 1;
- sOakSpeechResources->unk_001C[1] = 2;
- sOakSpeechResources->unk_001C[2] = 3;
- AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 17, sOakSpeechResources->unk_001C, 0, gText_Girl);
- ProgramAndPlaceMenuCursorOnWindow(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0);
+ sOakSpeechResources->textColor.fgColor = 1;
+ sOakSpeechResources->textColor.bgColor = 2;
+ sOakSpeechResources->textColor.shadowColor = 3;
+ AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 1, &sOakSpeechResources->textColor, 0, gText_Boy);
+ sOakSpeechResources->textColor.fgColor = 1;
+ sOakSpeechResources->textColor.bgColor = 2;
+ sOakSpeechResources->textColor.shadowColor = 3;
+ AddTextPrinterParameterized3(gTasks[taskId].data[13], 2, 8, 17, &sOakSpeechResources->textColor, 0, gText_Girl);
+ Menu_InitCursor(gTasks[taskId].data[13], 2, 0, 1, GetFontAttribute(2, 1) + 2, 2, 0);
CopyWindowToVram(gTasks[taskId].data[13], 3);
gTasks[taskId].func = Task_OakSpeech20;
}
@@ -1072,7 +1072,7 @@ static void Task_OakSpeech19(u8 taskId)
static void Task_OakSpeech20(u8 taskId)
{
- s8 input = ProcessMenuInputNoWrapAround();
+ s8 input = Menu_ProcessInputNoWrapAround();
switch (input)
{
case 0:
@@ -1092,7 +1092,7 @@ static void Task_OakSpeech20(u8 taskId)
static void Task_OakSpeech21(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- ClearMenuWindow(data[13], 1);
+ ClearStdWindowAndFrameToTransparent(data[13], 1);
RemoveWindow(data[13]);
data[13] = 0;
ClearDialogWindowAndFrame(0, 1);
@@ -1176,7 +1176,7 @@ static void Task_OakSpeech28(u8 taskId)
static void Task_OakSpeech29(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- s8 input = ProcessMenuInput();
+ s8 input = Menu_ProcessInput();
switch (input)
{
case 1:
@@ -1184,7 +1184,7 @@ static void Task_OakSpeech29(u8 taskId)
case 3:
case 4:
PlaySE(SE_SELECT);
- ClearMenuWindow(data[13], TRUE);
+ ClearStdWindowAndFrameToTransparent(data[13], TRUE);
RemoveWindow(data[13]);
GetDefaultName(sOakSpeechResources->unk_0010, input - 1);
data[15] = 1;
@@ -1211,7 +1211,7 @@ static void Task_OakSpeech25(u8 taskId)
}
else
{
- ClearMenuWindow(gTasks[taskId].data[13], 1);
+ ClearStdWindowAndFrameToTransparent(gTasks[taskId].data[13], 1);
RemoveWindow(gTasks[taskId].data[13]);
DoNamingScreen(4, gSaveBlock1Ptr->rivalName, 0, 0, 0, CB2_ReturnFromNamingScreen);
}
@@ -1850,7 +1850,7 @@ static void PrintNameChoiceOptions(u8 taskId, u8 state)
data[13] = AddWindow(&sNewGameAdventureIntroWindowTemplates[3]);
PutWindowTilemap(data[13]);
- SetWindowBorderStyle(data[13], 1, GetStdWindowBaseTileNum(), 14);
+ DrawStdFrameWithCustomTileAndPalette(data[13], 1, GetStdWindowBaseTileNum(), 14);
FillWindowPixelBuffer(gTasks[taskId].data[13], 0x11);
AddTextPrinterParameterized(data[13], 2, gOtherText_NewName, 8, 1, 0, NULL);
if (state == 0)
@@ -1861,7 +1861,7 @@ static void PrintNameChoiceOptions(u8 taskId, u8 state)
{
AddTextPrinterParameterized(data[13], 2, textPtrs[i], 8, 16 * (i + 1) + 1, 0, NULL);
}
- ProgramAndPlaceMenuCursorOnWindow(data[13], 2, 0, 1, 16, 5, 0);
+ Menu_InitCursor(data[13], 2, 0, 1, 16, 5, 0);
CopyWindowToVram(data[13], 3);
}
diff --git a/src/quest_log.c b/src/quest_log.c
index d08724a56..0d1cb7984 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -37,6 +37,7 @@
#include "link.h"
#include "quest_log_8150454.h"
#include "quest_log.h"
+#include "new_menu_helpers.h"
u8 gUnknown_3005E88;
diff --git a/src/sound.c b/src/sound.c
index ba6511d1c..dc4b9f604 100644
--- a/src/sound.c
+++ b/src/sound.c
@@ -169,7 +169,7 @@ void FadeOutAndFadeInNewMapMusic(u16 songNum, u8 fadeOutSpeed, u8 fadeInSpeed)
sMapMusicFadeInSpeed = fadeInSpeed;
}
-void FadeInNewMapMusic(u16 songNum, u8 speed)
+static void FadeInNewMapMusic(u16 songNum, u8 speed)
{
FadeInNewBGM(songNum, speed);
sCurrentMapMusic = songNum;
diff --git a/src/tm_case.c b/src/tm_case.c
index 0266f9c90..79e10bcfc 100644
--- a/src/tm_case.c
+++ b/src/tm_case.c
@@ -795,7 +795,7 @@ static void Task_SelectTMAction_FromFieldBag(u8 taskId)
sTMCaseDynamicResources->numMenuActions = NELEMS(sMenuActionIndices_UnionRoom);
}
AddItemMenuActionTextPrinters(sTMCaseDynamicResources->contextMenuWindowId, 2, GetMenuCursorDimensionByFont(2, 0), 2, 0, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, sMenuActions_UseGiveExit, sTMCaseDynamicResources->menuActionIndices);
- ProgramAndPlaceMenuCursorOnWindow(sTMCaseDynamicResources->contextMenuWindowId, 2, 0, 2, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, 0);
+ Menu_InitCursor(sTMCaseDynamicResources->contextMenuWindowId, 2, 0, 2, GetFontAttribute(2, 1) + 2, sTMCaseDynamicResources->numMenuActions, 0);
strbuf = Alloc(256);
GetTMNumberAndMoveString(strbuf, gSpecialVar_ItemId);
StringAppend(strbuf, gText_IsSelected);
@@ -817,7 +817,7 @@ static void Task_TMContextMenu_HandleInput(u8 taskId)
if (sub_80BF72C() != TRUE)
{
- input = ProcessMenuInputNoWrapAround();
+ input = Menu_ProcessInputNoWrapAround();
switch (input)
{
case -1:
@@ -837,7 +837,7 @@ static void Task_TMContextMenu_HandleInput(u8 taskId)
static void TMHMContextMenuAction_Use(u8 taskId)
{
RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId);
- ClearMenuWindow(2, 0);
+ ClearStdWindowAndFrameToTransparent(2, 0);
ClearWindowTilemap(2);
PutWindowTilemap(0);
ScheduleBgCopyTilemapToVram(0);
@@ -859,7 +859,7 @@ static void TMHMContextMenuAction_Give(u8 taskId)
s16 * data = gTasks[taskId].data;
u16 itemId = BagGetItemIdByPocketPosition(POCKET_TM_CASE, data[1]);
RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId);
- ClearMenuWindow(2, 0);
+ ClearStdWindowAndFrameToTransparent(2, 0);
ClearWindowTilemap(2);
PutWindowTilemap(1);
PutWindowTilemap(4);
@@ -912,7 +912,7 @@ static void Subtask_CloseContextMenuAndReturnToMain(u8 taskId)
DestroyListMenuTask(data[0], &sTMCaseStaticResources.scrollOffset, &sTMCaseStaticResources.selectedRow);
data[0] = ListMenuInit(&gMultiuseListMenuTemplate, sTMCaseStaticResources.scrollOffset, sTMCaseStaticResources.selectedRow);
PrintListMenuCursorByID_WithColorIdx(data[0], 1);
- ClearMenuWindow_BorderThickness2(6, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
ClearWindowTilemap(6);
PutWindowTilemap(1);
PutWindowTilemap(4);
@@ -927,7 +927,7 @@ static void TMHMContextMenuAction_Exit(u8 taskId)
s16 * data = gTasks[taskId].data;
RemoveTMContextMenu(&sTMCaseDynamicResources->contextMenuWindowId);
- ClearMenuWindow(2, 0);
+ ClearStdWindowAndFrameToTransparent(2, 0);
ClearWindowTilemap(2);
PutWindowTilemap(0);
PrintListMenuCursorByID_WithColorIdx(data[0], 1);
@@ -1016,8 +1016,8 @@ static void Task_SaleOfTMsCancelled(u8 taskId)
{
s16 * data = gTasks[taskId].data;
- ClearMenuWindow(8, 0);
- ClearMenuWindow_BorderThickness2(6, 0);
+ ClearStdWindowAndFrameToTransparent(8, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
PutWindowTilemap(0);
PutWindowTilemap(1);
PutWindowTilemap(3);
@@ -1065,7 +1065,7 @@ static void Task_QuantitySelect_HandleInput(u8 taskId)
else if (JOY_NEW(A_BUTTON))
{
PlaySE(SE_SELECT);
- ClearMenuWindow(7, 0);
+ ClearStdWindowAndFrameToTransparent(7, 0);
ScheduleBgCopyTilemapToVram(0);
ScheduleBgCopyTilemapToVram(1);
RemoveTMCaseScrollIndicatorArrowPair();
@@ -1074,9 +1074,9 @@ static void Task_QuantitySelect_HandleInput(u8 taskId)
else if (JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- ClearMenuWindow(7, 0);
- ClearMenuWindow(8, 0);
- ClearMenuWindow_BorderThickness2(6, 0);
+ ClearStdWindowAndFrameToTransparent(7, 0);
+ ClearStdWindowAndFrameToTransparent(8, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
PutWindowTilemap(3);
PutWindowTilemap(0);
PutWindowTilemap(1);
@@ -1123,8 +1123,8 @@ static void Task_AfterSale_ReturnToList(u8 taskId)
if (JOY_NEW(A_BUTTON) || JOY_NEW(B_BUTTON))
{
PlaySE(SE_SELECT);
- ClearMenuWindow(8, 0);
- ClearMenuWindow_BorderThickness2(6, 0);
+ ClearStdWindowAndFrameToTransparent(8, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
PutWindowTilemap(1);
PutWindowTilemap(3);
PutWindowTilemap(4);
@@ -1249,7 +1249,7 @@ static void Task_TMCaseDude_Playback(u8 taskId)
{
FillBG2RowWithPalette_2timesNplus1(0);
BeginNormalPaletteFade(0x00000400, 0, 6, 0, 0);
- ClearMenuWindow_BorderThickness2(6, 0);
+ ClearDialogWindowAndFrameToTransparent(6, 0);
ScheduleBgCopyTilemapToVram(1);
data[8]++;
}
@@ -1322,12 +1322,12 @@ static void AddTextPrinterParameterized_ColorByIndex(u8 windowId, u8 fontId, con
static void TMCase_SetWindowBorder1(u8 windowId)
{
- SetWindowBorderStyle(windowId, FALSE, 0x5B, 0x0E);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x5B, 0x0E);
}
static void TMCase_SetWindowBorder2(u8 windowId)
{
- SetWindowBorderStyle(windowId, FALSE, 0x78, 0x0D);
+ DrawStdFrameWithCustomTileAndPalette(windowId, FALSE, 0x78, 0x0D);
}
static void TMCase_PrintMessageWithFollowupTask(u8 taskId, u8 windowId, const u8 * str, TaskFunc func)
@@ -1420,7 +1420,7 @@ static u8 AddTMContextMenu(u8 * a0, u8 a1)
static void RemoveTMContextMenu(u8 * a0)
{
- ClearMenuWindow(*a0, FALSE);
+ ClearStdWindowAndFrameToTransparent(*a0, FALSE);
ClearWindowTilemap(*a0);
RemoveWindow(*a0);
ScheduleBgCopyTilemapToVram(0);
diff --git a/src/trainer_tower.c b/src/trainer_tower.c
index 8f82e67d4..cdb42ca96 100644
--- a/src/trainer_tower.c
+++ b/src/trainer_tower.c
@@ -1299,7 +1299,7 @@ void sub_815E720(void)
void sub_815E88C(void)
{
u8 windowId = VarGet(VAR_0x4001);
- ClearMenuWindow(windowId, TRUE);
+ ClearStdWindowAndFrameToTransparent(windowId, TRUE);
RemoveWindow(windowId);
}
diff --git a/sym_ewram.txt b/sym_ewram.txt
index 2b6f96a66..bb2198bd4 100644
--- a/sym_ewram.txt
+++ b/sym_ewram.txt
@@ -1079,7 +1079,7 @@ gUnknown_2039A34: @ 2039A34
.include "src/save.o"
.include "src/mystery_event_script.o"
-gPaletteDecompressionBuffer: @ 203AAB0
+gUnknown_203AAB0: @ 203AAB0
.space 0x4
gUnknown_203AAB4: @ 203AAB4
@@ -1118,8 +1118,7 @@ gUnknown_203AB40: @ 203AB40
gUnknown_203AB44: @ 203AB44
.space 0x4
-gUnknown_203AB48: @ 203AB48
- .space 0x4
+ .include "src/diploma.o"
gUnknown_203AB4C: @ 203AB4C
.space 0x4
@@ -1222,21 +1221,7 @@ gUnknown_203ADDC: @ 203ADDC
gUnknown_203ADE0: @ 203ADE0
.space 0x4
-gUnknown_203ADE4: @ 203ADE4
- .space 0xC
-
-gUnknown_203ADF0: @ 203ADF0
- .space 0x2
-
-gUnknown_203ADF2: @ 203ADF2
- .space 0x1
-
-gUnknown_203ADF3: @ 203ADF3
- .space 0x1
-
-gUnknown_203ADF4: @ 203ADF4
- .space 0x4
-
+ .include "src/menu.o"
.include "src/quest_log.o"
gUnknown_203B04C: @ 203B04C
diff --git a/tools/asmdiff.sh b/tools/asmdiff.sh
new file mode 100755
index 000000000..a8114dc4f
--- /dev/null
+++ b/tools/asmdiff.sh
@@ -0,0 +1,7 @@
+#!/bin/bash
+
+OBJDUMP="./tools/binutils/bin/arm-none-eabi-objdump -D -bbinary -marmv4t -Mforce-thumb"
+OPTIONS="--start-address=$1 --stop-address=$2"
+$OBJDUMP $OPTIONS baserom.gba > baserom.dump
+$OBJDUMP $OPTIONS pokefirered.gba > pokefirered.dump
+diff -u baserom.dump pokefirered.dump
diff --git a/tools/gbafix/elf.h b/tools/gbafix/elf.h
new file mode 100644
index 000000000..79d3b974b
--- /dev/null
+++ b/tools/gbafix/elf.h
@@ -0,0 +1,3147 @@
+/*
+From musl include/elf.h
+
+Copyright © 2005-2014 Rich Felker, et al.
+
+Permission is hereby granted, free of charge, to any person obtaining
+a copy of this software and associated documentation files (the
+"Software"), to deal in the Software without restriction, including
+without limitation the rights to use, copy, modify, merge, publish,
+distribute, sublicense, and/or sell copies of the Software, and to
+permit persons to whom the Software is furnished to do so, subject to
+the following conditions:
+
+The above copyright notice and this permission notice shall be
+included in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
+CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
+TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
+SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
+*/
+
+#ifndef _ELF_H
+#define _ELF_H
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+#include <stdint.h>
+
+typedef uint16_t Elf32_Half;
+typedef uint16_t Elf64_Half;
+
+typedef uint32_t Elf32_Word;
+typedef int32_t Elf32_Sword;
+typedef uint32_t Elf64_Word;
+typedef int32_t Elf64_Sword;
+
+typedef uint64_t Elf32_Xword;
+typedef int64_t Elf32_Sxword;
+typedef uint64_t Elf64_Xword;
+typedef int64_t Elf64_Sxword;
+
+typedef uint32_t Elf32_Addr;
+typedef uint64_t Elf64_Addr;
+
+typedef uint32_t Elf32_Off;
+typedef uint64_t Elf64_Off;
+
+typedef uint16_t Elf32_Section;
+typedef uint16_t Elf64_Section;
+
+typedef Elf32_Half Elf32_Versym;
+typedef Elf64_Half Elf64_Versym;
+
+#define EI_NIDENT (16)
+
+typedef struct {
+ unsigned char e_ident[EI_NIDENT];
+ Elf32_Half e_type;
+ Elf32_Half e_machine;
+ Elf32_Word e_version;
+ Elf32_Addr e_entry;
+ Elf32_Off e_phoff;
+ Elf32_Off e_shoff;
+ Elf32_Word e_flags;
+ Elf32_Half e_ehsize;
+ Elf32_Half e_phentsize;
+ Elf32_Half e_phnum;
+ Elf32_Half e_shentsize;
+ Elf32_Half e_shnum;
+ Elf32_Half e_shstrndx;
+} Elf32_Ehdr;
+
+typedef struct {
+ unsigned char e_ident[EI_NIDENT];
+ Elf64_Half e_type;
+ Elf64_Half e_machine;
+ Elf64_Word e_version;
+ Elf64_Addr e_entry;
+ Elf64_Off e_phoff;
+ Elf64_Off e_shoff;
+ Elf64_Word e_flags;
+ Elf64_Half e_ehsize;
+ Elf64_Half e_phentsize;
+ Elf64_Half e_phnum;
+ Elf64_Half e_shentsize;
+ Elf64_Half e_shnum;
+ Elf64_Half e_shstrndx;
+} Elf64_Ehdr;
+
+#define EI_MAG0 0
+#define ELFMAG0 0x7f
+
+#define EI_MAG1 1
+#define ELFMAG1 'E'
+
+#define EI_MAG2 2
+#define ELFMAG2 'L'
+
+#define EI_MAG3 3
+#define ELFMAG3 'F'
+
+
+#define ELFMAG "\177ELF"
+#define SELFMAG 4
+
+#define EI_CLASS 4
+#define ELFCLASSNONE 0
+#define ELFCLASS32 1
+#define ELFCLASS64 2
+#define ELFCLASSNUM 3
+
+#define EI_DATA 5
+#define ELFDATANONE 0
+#define ELFDATA2LSB 1
+#define ELFDATA2MSB 2
+#define ELFDATANUM 3
+
+#define EI_VERSION 6
+
+
+#define EI_OSABI 7
+#define ELFOSABI_NONE 0
+#define ELFOSABI_SYSV 0
+#define ELFOSABI_HPUX 1
+#define ELFOSABI_NETBSD 2
+#define ELFOSABI_LINUX 3
+#define ELFOSABI_GNU 3
+#define ELFOSABI_SOLARIS 6
+#define ELFOSABI_AIX 7
+#define ELFOSABI_IRIX 8
+#define ELFOSABI_FREEBSD 9
+#define ELFOSABI_TRU64 10
+#define ELFOSABI_MODESTO 11
+#define ELFOSABI_OPENBSD 12
+#define ELFOSABI_ARM 97
+#define ELFOSABI_STANDALONE 255
+
+#define EI_ABIVERSION 8
+
+#define EI_PAD 9
+
+
+
+#define ET_NONE 0
+#define ET_REL 1
+#define ET_EXEC 2
+#define ET_DYN 3
+#define ET_CORE 4
+#define ET_NUM 5
+#define ET_LOOS 0xfe00
+#define ET_HIOS 0xfeff
+#define ET_LOPROC 0xff00
+#define ET_HIPROC 0xffff
+
+
+
+#define EM_NONE 0
+#define EM_M32 1
+#define EM_SPARC 2
+#define EM_386 3
+#define EM_68K 4
+#define EM_88K 5
+#define EM_860 7
+#define EM_MIPS 8
+#define EM_S370 9
+#define EM_MIPS_RS3_LE 10
+
+#define EM_PARISC 15
+#define EM_VPP500 17
+#define EM_SPARC32PLUS 18
+#define EM_960 19
+#define EM_PPC 20
+#define EM_PPC64 21
+#define EM_S390 22
+
+#define EM_V800 36
+#define EM_FR20 37
+#define EM_RH32 38
+#define EM_RCE 39
+#define EM_ARM 40
+#define EM_FAKE_ALPHA 41
+#define EM_SH 42
+#define EM_SPARCV9 43
+#define EM_TRICORE 44
+#define EM_ARC 45
+#define EM_H8_300 46
+#define EM_H8_300H 47
+#define EM_H8S 48
+#define EM_H8_500 49
+#define EM_IA_64 50
+#define EM_MIPS_X 51
+#define EM_COLDFIRE 52
+#define EM_68HC12 53
+#define EM_MMA 54
+#define EM_PCP 55
+#define EM_NCPU 56
+#define EM_NDR1 57
+#define EM_STARCORE 58
+#define EM_ME16 59
+#define EM_ST100 60
+#define EM_TINYJ 61
+#define EM_X86_64 62
+#define EM_PDSP 63
+
+#define EM_FX66 66
+#define EM_ST9PLUS 67
+#define EM_ST7 68
+#define EM_68HC16 69
+#define EM_68HC11 70
+#define EM_68HC08 71
+#define EM_68HC05 72
+#define EM_SVX 73
+#define EM_ST19 74
+#define EM_VAX 75
+#define EM_CRIS 76
+#define EM_JAVELIN 77
+#define EM_FIREPATH 78
+#define EM_ZSP 79
+#define EM_MMIX 80
+#define EM_HUANY 81
+#define EM_PRISM 82
+#define EM_AVR 83
+#define EM_FR30 84
+#define EM_D10V 85
+#define EM_D30V 86
+#define EM_V850 87
+#define EM_M32R 88
+#define EM_MN10300 89
+#define EM_MN10200 90
+#define EM_PJ 91
+#define EM_OR1K 92
+#define EM_OPENRISC 92
+#define EM_ARC_A5 93
+#define EM_ARC_COMPACT 93
+#define EM_XTENSA 94
+#define EM_VIDEOCORE 95
+#define EM_TMM_GPP 96
+#define EM_NS32K 97
+#define EM_TPC 98
+#define EM_SNP1K 99
+#define EM_ST200 100
+#define EM_IP2K 101
+#define EM_MAX 102
+#define EM_CR 103
+#define EM_F2MC16 104
+#define EM_MSP430 105
+#define EM_BLACKFIN 106
+#define EM_SE_C33 107
+#define EM_SEP 108
+#define EM_ARCA 109
+#define EM_UNICORE 110
+#define EM_EXCESS 111
+#define EM_DXP 112
+#define EM_ALTERA_NIOS2 113
+#define EM_CRX 114
+#define EM_XGATE 115
+#define EM_C166 116
+#define EM_M16C 117
+#define EM_DSPIC30F 118
+#define EM_CE 119
+#define EM_M32C 120
+#define EM_TSK3000 131
+#define EM_RS08 132
+#define EM_SHARC 133
+#define EM_ECOG2 134
+#define EM_SCORE7 135
+#define EM_DSP24 136
+#define EM_VIDEOCORE3 137
+#define EM_LATTICEMICO32 138
+#define EM_SE_C17 139
+#define EM_TI_C6000 140
+#define EM_TI_C2000 141
+#define EM_TI_C5500 142
+#define EM_TI_ARP32 143
+#define EM_TI_PRU 144
+#define EM_MMDSP_PLUS 160
+#define EM_CYPRESS_M8C 161
+#define EM_R32C 162
+#define EM_TRIMEDIA 163
+#define EM_QDSP6 164
+#define EM_8051 165
+#define EM_STXP7X 166
+#define EM_NDS32 167
+#define EM_ECOG1X 168
+#define EM_MAXQ30 169
+#define EM_XIMO16 170
+#define EM_MANIK 171
+#define EM_CRAYNV2 172
+#define EM_RX 173
+#define EM_METAG 174
+#define EM_MCST_ELBRUS 175
+#define EM_ECOG16 176
+#define EM_CR16 177
+#define EM_ETPU 178
+#define EM_SLE9X 179
+#define EM_L10M 180
+#define EM_K10M 181
+#define EM_AARCH64 183
+#define EM_AVR32 185
+#define EM_STM8 186
+#define EM_TILE64 187
+#define EM_TILEPRO 188
+#define EM_MICROBLAZE 189
+#define EM_CUDA 190
+#define EM_TILEGX 191
+#define EM_CLOUDSHIELD 192
+#define EM_COREA_1ST 193
+#define EM_COREA_2ND 194
+#define EM_ARC_COMPACT2 195
+#define EM_OPEN8 196
+#define EM_RL78 197
+#define EM_VIDEOCORE5 198
+#define EM_78KOR 199
+#define EM_56800EX 200
+#define EM_BA1 201
+#define EM_BA2 202
+#define EM_XCORE 203
+#define EM_MCHP_PIC 204
+#define EM_KM32 210
+#define EM_KMX32 211
+#define EM_EMX16 212
+#define EM_EMX8 213
+#define EM_KVARC 214
+#define EM_CDP 215
+#define EM_COGE 216
+#define EM_COOL 217
+#define EM_NORC 218
+#define EM_CSR_KALIMBA 219
+#define EM_Z80 220
+#define EM_VISIUM 221
+#define EM_FT32 222
+#define EM_MOXIE 223
+#define EM_AMDGPU 224
+#define EM_RISCV 243
+#define EM_BPF 247
+#define EM_NUM 248
+
+#define EM_ALPHA 0x9026
+
+#define EV_NONE 0
+#define EV_CURRENT 1
+#define EV_NUM 2
+
+typedef struct {
+ Elf32_Word sh_name;
+ Elf32_Word sh_type;
+ Elf32_Word sh_flags;
+ Elf32_Addr sh_addr;
+ Elf32_Off sh_offset;
+ Elf32_Word sh_size;
+ Elf32_Word sh_link;
+ Elf32_Word sh_info;
+ Elf32_Word sh_addralign;
+ Elf32_Word sh_entsize;
+} Elf32_Shdr;
+
+typedef struct {
+ Elf64_Word sh_name;
+ Elf64_Word sh_type;
+ Elf64_Xword sh_flags;
+ Elf64_Addr sh_addr;
+ Elf64_Off sh_offset;
+ Elf64_Xword sh_size;
+ Elf64_Word sh_link;
+ Elf64_Word sh_info;
+ Elf64_Xword sh_addralign;
+ Elf64_Xword sh_entsize;
+} Elf64_Shdr;
+
+
+
+#define SHN_UNDEF 0
+#define SHN_LORESERVE 0xff00
+#define SHN_LOPROC 0xff00
+#define SHN_BEFORE 0xff00
+
+#define SHN_AFTER 0xff01
+
+#define SHN_HIPROC 0xff1f
+#define SHN_LOOS 0xff20
+#define SHN_HIOS 0xff3f
+#define SHN_ABS 0xfff1
+#define SHN_COMMON 0xfff2
+#define SHN_XINDEX 0xffff
+#define SHN_HIRESERVE 0xffff
+
+
+
+#define SHT_NULL 0
+#define SHT_PROGBITS 1
+#define SHT_SYMTAB 2
+#define SHT_STRTAB 3
+#define SHT_RELA 4
+#define SHT_HASH 5
+#define SHT_DYNAMIC 6
+#define SHT_NOTE 7
+#define SHT_NOBITS 8
+#define SHT_REL 9
+#define SHT_SHLIB 10
+#define SHT_DYNSYM 11
+#define SHT_INIT_ARRAY 14
+#define SHT_FINI_ARRAY 15
+#define SHT_PREINIT_ARRAY 16
+#define SHT_GROUP 17
+#define SHT_SYMTAB_SHNDX 18
+#define SHT_NUM 19
+#define SHT_LOOS 0x60000000
+#define SHT_GNU_ATTRIBUTES 0x6ffffff5
+#define SHT_GNU_HASH 0x6ffffff6
+#define SHT_GNU_LIBLIST 0x6ffffff7
+#define SHT_CHECKSUM 0x6ffffff8
+#define SHT_LOSUNW 0x6ffffffa
+#define SHT_SUNW_move 0x6ffffffa
+#define SHT_SUNW_COMDAT 0x6ffffffb
+#define SHT_SUNW_syminfo 0x6ffffffc
+#define SHT_GNU_verdef 0x6ffffffd
+#define SHT_GNU_verneed 0x6ffffffe
+#define SHT_GNU_versym 0x6fffffff
+#define SHT_HISUNW 0x6fffffff
+#define SHT_HIOS 0x6fffffff
+#define SHT_LOPROC 0x70000000
+#define SHT_HIPROC 0x7fffffff
+#define SHT_LOUSER 0x80000000
+#define SHT_HIUSER 0x8fffffff
+
+#define SHF_WRITE (1 << 0)
+#define SHF_ALLOC (1 << 1)
+#define SHF_EXECINSTR (1 << 2)
+#define SHF_MERGE (1 << 4)
+#define SHF_STRINGS (1 << 5)
+#define SHF_INFO_LINK (1 << 6)
+#define SHF_LINK_ORDER (1 << 7)
+#define SHF_OS_NONCONFORMING (1 << 8)
+
+#define SHF_GROUP (1 << 9)
+#define SHF_TLS (1 << 10)
+#define SHF_COMPRESSED (1 << 11)
+#define SHF_MASKOS 0x0ff00000
+#define SHF_MASKPROC 0xf0000000
+#define SHF_ORDERED (1 << 30)
+#define SHF_EXCLUDE (1U << 31)
+
+typedef struct {
+ Elf32_Word ch_type;
+ Elf32_Word ch_size;
+ Elf32_Word ch_addralign;
+} Elf32_Chdr;
+
+typedef struct {
+ Elf64_Word ch_type;
+ Elf64_Word ch_reserved;
+ Elf64_Xword ch_size;
+ Elf64_Xword ch_addralign;
+} Elf64_Chdr;
+
+#define ELFCOMPRESS_ZLIB 1
+#define ELFCOMPRESS_LOOS 0x60000000
+#define ELFCOMPRESS_HIOS 0x6fffffff
+#define ELFCOMPRESS_LOPROC 0x70000000
+#define ELFCOMPRESS_HIPROC 0x7fffffff
+
+
+#define GRP_COMDAT 0x1
+
+typedef struct {
+ Elf32_Word st_name;
+ Elf32_Addr st_value;
+ Elf32_Word st_size;
+ unsigned char st_info;
+ unsigned char st_other;
+ Elf32_Section st_shndx;
+} Elf32_Sym;
+
+typedef struct {
+ Elf64_Word st_name;
+ unsigned char st_info;
+ unsigned char st_other;
+ Elf64_Section st_shndx;
+ Elf64_Addr st_value;
+ Elf64_Xword st_size;
+} Elf64_Sym;
+
+typedef struct {
+ Elf32_Half si_boundto;
+ Elf32_Half si_flags;
+} Elf32_Syminfo;
+
+typedef struct {
+ Elf64_Half si_boundto;
+ Elf64_Half si_flags;
+} Elf64_Syminfo;
+
+#define SYMINFO_BT_SELF 0xffff
+#define SYMINFO_BT_PARENT 0xfffe
+#define SYMINFO_BT_LOWRESERVE 0xff00
+
+#define SYMINFO_FLG_DIRECT 0x0001
+#define SYMINFO_FLG_PASSTHRU 0x0002
+#define SYMINFO_FLG_COPY 0x0004
+#define SYMINFO_FLG_LAZYLOAD 0x0008
+
+#define SYMINFO_NONE 0
+#define SYMINFO_CURRENT 1
+#define SYMINFO_NUM 2
+
+#define ELF32_ST_BIND(val) (((unsigned char) (val)) >> 4)
+#define ELF32_ST_TYPE(val) ((val) & 0xf)
+#define ELF32_ST_INFO(bind, type) (((bind) << 4) + ((type) & 0xf))
+
+#define ELF64_ST_BIND(val) ELF32_ST_BIND (val)
+#define ELF64_ST_TYPE(val) ELF32_ST_TYPE (val)
+#define ELF64_ST_INFO(bind, type) ELF32_ST_INFO ((bind), (type))
+
+#define STB_LOCAL 0
+#define STB_GLOBAL 1
+#define STB_WEAK 2
+#define STB_NUM 3
+#define STB_LOOS 10
+#define STB_GNU_UNIQUE 10
+#define STB_HIOS 12
+#define STB_LOPROC 13
+#define STB_HIPROC 15
+
+#define STT_NOTYPE 0
+#define STT_OBJECT 1
+#define STT_FUNC 2
+#define STT_SECTION 3
+#define STT_FILE 4
+#define STT_COMMON 5
+#define STT_TLS 6
+#define STT_NUM 7
+#define STT_LOOS 10
+#define STT_GNU_IFUNC 10
+#define STT_HIOS 12
+#define STT_LOPROC 13
+#define STT_HIPROC 15
+
+#define STN_UNDEF 0
+
+#define ELF32_ST_VISIBILITY(o) ((o) & 0x03)
+#define ELF64_ST_VISIBILITY(o) ELF32_ST_VISIBILITY (o)
+
+#define STV_DEFAULT 0
+#define STV_INTERNAL 1
+#define STV_HIDDEN 2
+#define STV_PROTECTED 3
+
+
+
+
+typedef struct {
+ Elf32_Addr r_offset;
+ Elf32_Word r_info;
+} Elf32_Rel;
+
+typedef struct {
+ Elf64_Addr r_offset;
+ Elf64_Xword r_info;
+} Elf64_Rel;
+
+
+
+typedef struct {
+ Elf32_Addr r_offset;
+ Elf32_Word r_info;
+ Elf32_Sword r_addend;
+} Elf32_Rela;
+
+typedef struct {
+ Elf64_Addr r_offset;
+ Elf64_Xword r_info;
+ Elf64_Sxword r_addend;
+} Elf64_Rela;
+
+
+
+#define ELF32_R_SYM(val) ((val) >> 8)
+#define ELF32_R_TYPE(val) ((val) & 0xff)
+#define ELF32_R_INFO(sym, type) (((sym) << 8) + ((type) & 0xff))
+
+#define ELF64_R_SYM(i) ((i) >> 32)
+#define ELF64_R_TYPE(i) ((i) & 0xffffffff)
+#define ELF64_R_INFO(sym,type) ((((Elf64_Xword) (sym)) << 32) + (type))
+
+
+
+typedef struct {
+ Elf32_Word p_type;
+ Elf32_Off p_offset;
+ Elf32_Addr p_vaddr;
+ Elf32_Addr p_paddr;
+ Elf32_Word p_filesz;
+ Elf32_Word p_memsz;
+ Elf32_Word p_flags;
+ Elf32_Word p_align;
+} Elf32_Phdr;
+
+typedef struct {
+ Elf64_Word p_type;
+ Elf64_Word p_flags;
+ Elf64_Off p_offset;
+ Elf64_Addr p_vaddr;
+ Elf64_Addr p_paddr;
+ Elf64_Xword p_filesz;
+ Elf64_Xword p_memsz;
+ Elf64_Xword p_align;
+} Elf64_Phdr;
+
+
+
+#define PT_NULL 0
+#define PT_LOAD 1
+#define PT_DYNAMIC 2
+#define PT_INTERP 3
+#define PT_NOTE 4
+#define PT_SHLIB 5
+#define PT_PHDR 6
+#define PT_TLS 7
+#define PT_NUM 8
+#define PT_LOOS 0x60000000
+#define PT_GNU_EH_FRAME 0x6474e550
+#define PT_GNU_STACK 0x6474e551
+#define PT_GNU_RELRO 0x6474e552
+#define PT_LOSUNW 0x6ffffffa
+#define PT_SUNWBSS 0x6ffffffa
+#define PT_SUNWSTACK 0x6ffffffb
+#define PT_HISUNW 0x6fffffff
+#define PT_HIOS 0x6fffffff
+#define PT_LOPROC 0x70000000
+#define PT_HIPROC 0x7fffffff
+
+
+#define PN_XNUM 0xffff
+
+
+#define PF_X (1 << 0)
+#define PF_W (1 << 1)
+#define PF_R (1 << 2)
+#define PF_MASKOS 0x0ff00000
+#define PF_MASKPROC 0xf0000000
+
+
+
+#define NT_PRSTATUS 1
+#define NT_FPREGSET 2
+#define NT_PRPSINFO 3
+#define NT_PRXREG 4
+#define NT_TASKSTRUCT 4
+#define NT_PLATFORM 5
+#define NT_AUXV 6
+#define NT_GWINDOWS 7
+#define NT_ASRS 8
+#define NT_PSTATUS 10
+#define NT_PSINFO 13
+#define NT_PRCRED 14
+#define NT_UTSNAME 15
+#define NT_LWPSTATUS 16
+#define NT_LWPSINFO 17
+#define NT_PRFPXREG 20
+#define NT_SIGINFO 0x53494749
+#define NT_FILE 0x46494c45
+#define NT_PRXFPREG 0x46e62b7f
+#define NT_PPC_VMX 0x100
+#define NT_PPC_SPE 0x101
+#define NT_PPC_VSX 0x102
+#define NT_386_TLS 0x200
+#define NT_386_IOPERM 0x201
+#define NT_X86_XSTATE 0x202
+#define NT_S390_HIGH_GPRS 0x300
+#define NT_S390_TIMER 0x301
+#define NT_S390_TODCMP 0x302
+#define NT_S390_TODPREG 0x303
+#define NT_S390_CTRS 0x304
+#define NT_S390_PREFIX 0x305
+#define NT_S390_LAST_BREAK 0x306
+#define NT_S390_SYSTEM_CALL 0x307
+#define NT_S390_TDB 0x308
+#define NT_ARM_VFP 0x400
+#define NT_ARM_TLS 0x401
+#define NT_ARM_HW_BREAK 0x402
+#define NT_ARM_HW_WATCH 0x403
+#define NT_ARM_SYSTEM_CALL 0x404
+#define NT_ARM_SVE 0x405
+#define NT_METAG_CBUF 0x500
+#define NT_METAG_RPIPE 0x501
+#define NT_METAG_TLS 0x502
+#define NT_VERSION 1
+
+
+
+
+typedef struct {
+ Elf32_Sword d_tag;
+ union {
+ Elf32_Word d_val;
+ Elf32_Addr d_ptr;
+ } d_un;
+} Elf32_Dyn;
+
+typedef struct {
+ Elf64_Sxword d_tag;
+ union {
+ Elf64_Xword d_val;
+ Elf64_Addr d_ptr;
+ } d_un;
+} Elf64_Dyn;
+
+
+
+#define DT_NULL 0
+#define DT_NEEDED 1
+#define DT_PLTRELSZ 2
+#define DT_PLTGOT 3
+#define DT_HASH 4
+#define DT_STRTAB 5
+#define DT_SYMTAB 6
+#define DT_RELA 7
+#define DT_RELASZ 8
+#define DT_RELAENT 9
+#define DT_STRSZ 10
+#define DT_SYMENT 11
+#define DT_INIT 12
+#define DT_FINI 13
+#define DT_SONAME 14
+#define DT_RPATH 15
+#define DT_SYMBOLIC 16
+#define DT_REL 17
+#define DT_RELSZ 18
+#define DT_RELENT 19
+#define DT_PLTREL 20
+#define DT_DEBUG 21
+#define DT_TEXTREL 22
+#define DT_JMPREL 23
+#define DT_BIND_NOW 24
+#define DT_INIT_ARRAY 25
+#define DT_FINI_ARRAY 26
+#define DT_INIT_ARRAYSZ 27
+#define DT_FINI_ARRAYSZ 28
+#define DT_RUNPATH 29
+#define DT_FLAGS 30
+#define DT_ENCODING 32
+#define DT_PREINIT_ARRAY 32
+#define DT_PREINIT_ARRAYSZ 33
+#define DT_NUM 34
+#define DT_LOOS 0x6000000d
+#define DT_HIOS 0x6ffff000
+#define DT_LOPROC 0x70000000
+#define DT_HIPROC 0x7fffffff
+#define DT_PROCNUM DT_MIPS_NUM
+
+#define DT_VALRNGLO 0x6ffffd00
+#define DT_GNU_PRELINKED 0x6ffffdf5
+#define DT_GNU_CONFLICTSZ 0x6ffffdf6
+#define DT_GNU_LIBLISTSZ 0x6ffffdf7
+#define DT_CHECKSUM 0x6ffffdf8
+#define DT_PLTPADSZ 0x6ffffdf9
+#define DT_MOVEENT 0x6ffffdfa
+#define DT_MOVESZ 0x6ffffdfb
+#define DT_FEATURE_1 0x6ffffdfc
+#define DT_POSFLAG_1 0x6ffffdfd
+
+#define DT_SYMINSZ 0x6ffffdfe
+#define DT_SYMINENT 0x6ffffdff
+#define DT_VALRNGHI 0x6ffffdff
+#define DT_VALTAGIDX(tag) (DT_VALRNGHI - (tag))
+#define DT_VALNUM 12
+
+#define DT_ADDRRNGLO 0x6ffffe00
+#define DT_GNU_HASH 0x6ffffef5
+#define DT_TLSDESC_PLT 0x6ffffef6
+#define DT_TLSDESC_GOT 0x6ffffef7
+#define DT_GNU_CONFLICT 0x6ffffef8
+#define DT_GNU_LIBLIST 0x6ffffef9
+#define DT_CONFIG 0x6ffffefa
+#define DT_DEPAUDIT 0x6ffffefb
+#define DT_AUDIT 0x6ffffefc
+#define DT_PLTPAD 0x6ffffefd
+#define DT_MOVETAB 0x6ffffefe
+#define DT_SYMINFO 0x6ffffeff
+#define DT_ADDRRNGHI 0x6ffffeff
+#define DT_ADDRTAGIDX(tag) (DT_ADDRRNGHI - (tag))
+#define DT_ADDRNUM 11
+
+
+
+#define DT_VERSYM 0x6ffffff0
+
+#define DT_RELACOUNT 0x6ffffff9
+#define DT_RELCOUNT 0x6ffffffa
+
+
+#define DT_FLAGS_1 0x6ffffffb
+#define DT_VERDEF 0x6ffffffc
+
+#define DT_VERDEFNUM 0x6ffffffd
+#define DT_VERNEED 0x6ffffffe
+
+#define DT_VERNEEDNUM 0x6fffffff
+#define DT_VERSIONTAGIDX(tag) (DT_VERNEEDNUM - (tag))
+#define DT_VERSIONTAGNUM 16
+
+
+
+#define DT_AUXILIARY 0x7ffffffd
+#define DT_FILTER 0x7fffffff
+#define DT_EXTRATAGIDX(tag) ((Elf32_Word)-((Elf32_Sword) (tag) <<1>>1)-1)
+#define DT_EXTRANUM 3
+
+
+#define DF_ORIGIN 0x00000001
+#define DF_SYMBOLIC 0x00000002
+#define DF_TEXTREL 0x00000004
+#define DF_BIND_NOW 0x00000008
+#define DF_STATIC_TLS 0x00000010
+
+
+
+#define DF_1_NOW 0x00000001
+#define DF_1_GLOBAL 0x00000002
+#define DF_1_GROUP 0x00000004
+#define DF_1_NODELETE 0x00000008
+#define DF_1_LOADFLTR 0x00000010
+#define DF_1_INITFIRST 0x00000020
+#define DF_1_NOOPEN 0x00000040
+#define DF_1_ORIGIN 0x00000080
+#define DF_1_DIRECT 0x00000100
+#define DF_1_TRANS 0x00000200
+#define DF_1_INTERPOSE 0x00000400
+#define DF_1_NODEFLIB 0x00000800
+#define DF_1_NODUMP 0x00001000
+#define DF_1_CONFALT 0x00002000
+#define DF_1_ENDFILTEE 0x00004000
+#define DF_1_DISPRELDNE 0x00008000
+#define DF_1_DISPRELPND 0x00010000
+#define DF_1_NODIRECT 0x00020000
+#define DF_1_IGNMULDEF 0x00040000
+#define DF_1_NOKSYMS 0x00080000
+#define DF_1_NOHDR 0x00100000
+#define DF_1_EDITED 0x00200000
+#define DF_1_NORELOC 0x00400000
+#define DF_1_SYMINTPOSE 0x00800000
+#define DF_1_GLOBAUDIT 0x01000000
+#define DF_1_SINGLETON 0x02000000
+
+#define DTF_1_PARINIT 0x00000001
+#define DTF_1_CONFEXP 0x00000002
+
+
+#define DF_P1_LAZYLOAD 0x00000001
+#define DF_P1_GROUPPERM 0x00000002
+
+
+
+
+typedef struct {
+ Elf32_Half vd_version;
+ Elf32_Half vd_flags;
+ Elf32_Half vd_ndx;
+ Elf32_Half vd_cnt;
+ Elf32_Word vd_hash;
+ Elf32_Word vd_aux;
+ Elf32_Word vd_next;
+} Elf32_Verdef;
+
+typedef struct {
+ Elf64_Half vd_version;
+ Elf64_Half vd_flags;
+ Elf64_Half vd_ndx;
+ Elf64_Half vd_cnt;
+ Elf64_Word vd_hash;
+ Elf64_Word vd_aux;
+ Elf64_Word vd_next;
+} Elf64_Verdef;
+
+
+
+#define VER_DEF_NONE 0
+#define VER_DEF_CURRENT 1
+#define VER_DEF_NUM 2
+
+
+#define VER_FLG_BASE 0x1
+#define VER_FLG_WEAK 0x2
+
+
+#define VER_NDX_LOCAL 0
+#define VER_NDX_GLOBAL 1
+#define VER_NDX_LORESERVE 0xff00
+#define VER_NDX_ELIMINATE 0xff01
+
+
+
+typedef struct {
+ Elf32_Word vda_name;
+ Elf32_Word vda_next;
+} Elf32_Verdaux;
+
+typedef struct {
+ Elf64_Word vda_name;
+ Elf64_Word vda_next;
+} Elf64_Verdaux;
+
+
+
+
+typedef struct {
+ Elf32_Half vn_version;
+ Elf32_Half vn_cnt;
+ Elf32_Word vn_file;
+ Elf32_Word vn_aux;
+ Elf32_Word vn_next;
+} Elf32_Verneed;
+
+typedef struct {
+ Elf64_Half vn_version;
+ Elf64_Half vn_cnt;
+ Elf64_Word vn_file;
+ Elf64_Word vn_aux;
+ Elf64_Word vn_next;
+} Elf64_Verneed;
+
+
+
+#define VER_NEED_NONE 0
+#define VER_NEED_CURRENT 1
+#define VER_NEED_NUM 2
+
+
+
+typedef struct {
+ Elf32_Word vna_hash;
+ Elf32_Half vna_flags;
+ Elf32_Half vna_other;
+ Elf32_Word vna_name;
+ Elf32_Word vna_next;
+} Elf32_Vernaux;
+
+typedef struct {
+ Elf64_Word vna_hash;
+ Elf64_Half vna_flags;
+ Elf64_Half vna_other;
+ Elf64_Word vna_name;
+ Elf64_Word vna_next;
+} Elf64_Vernaux;
+
+
+
+#define VER_FLG_WEAK 0x2
+
+
+
+typedef struct {
+ uint32_t a_type;
+ union {
+ uint32_t a_val;
+ } a_un;
+} Elf32_auxv_t;
+
+typedef struct {
+ uint64_t a_type;
+ union {
+ uint64_t a_val;
+ } a_un;
+} Elf64_auxv_t;
+
+
+
+#define AT_NULL 0
+#define AT_IGNORE 1
+#define AT_EXECFD 2
+#define AT_PHDR 3
+#define AT_PHENT 4
+#define AT_PHNUM 5
+#define AT_PAGESZ 6
+#define AT_BASE 7
+#define AT_FLAGS 8
+#define AT_ENTRY 9
+#define AT_NOTELF 10
+#define AT_UID 11
+#define AT_EUID 12
+#define AT_GID 13
+#define AT_EGID 14
+#define AT_CLKTCK 17
+
+
+#define AT_PLATFORM 15
+#define AT_HWCAP 16
+
+
+
+
+#define AT_FPUCW 18
+
+
+#define AT_DCACHEBSIZE 19
+#define AT_ICACHEBSIZE 20
+#define AT_UCACHEBSIZE 21
+
+
+
+#define AT_IGNOREPPC 22
+
+#define AT_SECURE 23
+
+#define AT_BASE_PLATFORM 24
+
+#define AT_RANDOM 25
+
+#define AT_HWCAP2 26
+
+#define AT_EXECFN 31
+
+
+
+#define AT_SYSINFO 32
+#define AT_SYSINFO_EHDR 33
+
+
+
+#define AT_L1I_CACHESHAPE 34
+#define AT_L1D_CACHESHAPE 35
+#define AT_L2_CACHESHAPE 36
+#define AT_L3_CACHESHAPE 37
+
+
+
+
+typedef struct {
+ Elf32_Word n_namesz;
+ Elf32_Word n_descsz;
+ Elf32_Word n_type;
+} Elf32_Nhdr;
+
+typedef struct {
+ Elf64_Word n_namesz;
+ Elf64_Word n_descsz;
+ Elf64_Word n_type;
+} Elf64_Nhdr;
+
+
+
+
+#define ELF_NOTE_SOLARIS "SUNW Solaris"
+
+
+#define ELF_NOTE_GNU "GNU"
+
+
+
+
+
+#define ELF_NOTE_PAGESIZE_HINT 1
+
+
+#define NT_GNU_ABI_TAG 1
+#define ELF_NOTE_ABI NT_GNU_ABI_TAG
+
+
+
+#define ELF_NOTE_OS_LINUX 0
+#define ELF_NOTE_OS_GNU 1
+#define ELF_NOTE_OS_SOLARIS2 2
+#define ELF_NOTE_OS_FREEBSD 3
+
+#define NT_GNU_BUILD_ID 3
+#define NT_GNU_GOLD_VERSION 4
+
+
+
+typedef struct {
+ Elf32_Xword m_value;
+ Elf32_Word m_info;
+ Elf32_Word m_poffset;
+ Elf32_Half m_repeat;
+ Elf32_Half m_stride;
+} Elf32_Move;
+
+typedef struct {
+ Elf64_Xword m_value;
+ Elf64_Xword m_info;
+ Elf64_Xword m_poffset;
+ Elf64_Half m_repeat;
+ Elf64_Half m_stride;
+} Elf64_Move;
+
+
+#define ELF32_M_SYM(info) ((info) >> 8)
+#define ELF32_M_SIZE(info) ((unsigned char) (info))
+#define ELF32_M_INFO(sym, size) (((sym) << 8) + (unsigned char) (size))
+
+#define ELF64_M_SYM(info) ELF32_M_SYM (info)
+#define ELF64_M_SIZE(info) ELF32_M_SIZE (info)
+#define ELF64_M_INFO(sym, size) ELF32_M_INFO (sym, size)
+
+#define EF_CPU32 0x00810000
+
+#define R_68K_NONE 0
+#define R_68K_32 1
+#define R_68K_16 2
+#define R_68K_8 3
+#define R_68K_PC32 4
+#define R_68K_PC16 5
+#define R_68K_PC8 6
+#define R_68K_GOT32 7
+#define R_68K_GOT16 8
+#define R_68K_GOT8 9
+#define R_68K_GOT32O 10
+#define R_68K_GOT16O 11
+#define R_68K_GOT8O 12
+#define R_68K_PLT32 13
+#define R_68K_PLT16 14
+#define R_68K_PLT8 15
+#define R_68K_PLT32O 16
+#define R_68K_PLT16O 17
+#define R_68K_PLT8O 18
+#define R_68K_COPY 19
+#define R_68K_GLOB_DAT 20
+#define R_68K_JMP_SLOT 21
+#define R_68K_RELATIVE 22
+#define R_68K_NUM 23
+
+#define R_386_NONE 0
+#define R_386_32 1
+#define R_386_PC32 2
+#define R_386_GOT32 3
+#define R_386_PLT32 4
+#define R_386_COPY 5
+#define R_386_GLOB_DAT 6
+#define R_386_JMP_SLOT 7
+#define R_386_RELATIVE 8
+#define R_386_GOTOFF 9
+#define R_386_GOTPC 10
+#define R_386_32PLT 11
+#define R_386_TLS_TPOFF 14
+#define R_386_TLS_IE 15
+#define R_386_TLS_GOTIE 16
+#define R_386_TLS_LE 17
+#define R_386_TLS_GD 18
+#define R_386_TLS_LDM 19
+#define R_386_16 20
+#define R_386_PC16 21
+#define R_386_8 22
+#define R_386_PC8 23
+#define R_386_TLS_GD_32 24
+#define R_386_TLS_GD_PUSH 25
+#define R_386_TLS_GD_CALL 26
+#define R_386_TLS_GD_POP 27
+#define R_386_TLS_LDM_32 28
+#define R_386_TLS_LDM_PUSH 29
+#define R_386_TLS_LDM_CALL 30
+#define R_386_TLS_LDM_POP 31
+#define R_386_TLS_LDO_32 32
+#define R_386_TLS_IE_32 33
+#define R_386_TLS_LE_32 34
+#define R_386_TLS_DTPMOD32 35
+#define R_386_TLS_DTPOFF32 36
+#define R_386_TLS_TPOFF32 37
+#define R_386_SIZE32 38
+#define R_386_TLS_GOTDESC 39
+#define R_386_TLS_DESC_CALL 40
+#define R_386_TLS_DESC 41
+#define R_386_IRELATIVE 42
+#define R_386_GOT32X 43
+#define R_386_NUM 44
+
+
+
+
+
+#define STT_SPARC_REGISTER 13
+
+
+
+#define EF_SPARCV9_MM 3
+#define EF_SPARCV9_TSO 0
+#define EF_SPARCV9_PSO 1
+#define EF_SPARCV9_RMO 2
+#define EF_SPARC_LEDATA 0x800000
+#define EF_SPARC_EXT_MASK 0xFFFF00
+#define EF_SPARC_32PLUS 0x000100
+#define EF_SPARC_SUN_US1 0x000200
+#define EF_SPARC_HAL_R1 0x000400
+#define EF_SPARC_SUN_US3 0x000800
+
+
+
+#define R_SPARC_NONE 0
+#define R_SPARC_8 1
+#define R_SPARC_16 2
+#define R_SPARC_32 3
+#define R_SPARC_DISP8 4
+#define R_SPARC_DISP16 5
+#define R_SPARC_DISP32 6
+#define R_SPARC_WDISP30 7
+#define R_SPARC_WDISP22 8
+#define R_SPARC_HI22 9
+#define R_SPARC_22 10
+#define R_SPARC_13 11
+#define R_SPARC_LO10 12
+#define R_SPARC_GOT10 13
+#define R_SPARC_GOT13 14
+#define R_SPARC_GOT22 15
+#define R_SPARC_PC10 16
+#define R_SPARC_PC22 17
+#define R_SPARC_WPLT30 18
+#define R_SPARC_COPY 19
+#define R_SPARC_GLOB_DAT 20
+#define R_SPARC_JMP_SLOT 21
+#define R_SPARC_RELATIVE 22
+#define R_SPARC_UA32 23
+
+
+
+#define R_SPARC_PLT32 24
+#define R_SPARC_HIPLT22 25
+#define R_SPARC_LOPLT10 26
+#define R_SPARC_PCPLT32 27
+#define R_SPARC_PCPLT22 28
+#define R_SPARC_PCPLT10 29
+#define R_SPARC_10 30
+#define R_SPARC_11 31
+#define R_SPARC_64 32
+#define R_SPARC_OLO10 33
+#define R_SPARC_HH22 34
+#define R_SPARC_HM10 35
+#define R_SPARC_LM22 36
+#define R_SPARC_PC_HH22 37
+#define R_SPARC_PC_HM10 38
+#define R_SPARC_PC_LM22 39
+#define R_SPARC_WDISP16 40
+#define R_SPARC_WDISP19 41
+#define R_SPARC_GLOB_JMP 42
+#define R_SPARC_7 43
+#define R_SPARC_5 44
+#define R_SPARC_6 45
+#define R_SPARC_DISP64 46
+#define R_SPARC_PLT64 47
+#define R_SPARC_HIX22 48
+#define R_SPARC_LOX10 49
+#define R_SPARC_H44 50
+#define R_SPARC_M44 51
+#define R_SPARC_L44 52
+#define R_SPARC_REGISTER 53
+#define R_SPARC_UA64 54
+#define R_SPARC_UA16 55
+#define R_SPARC_TLS_GD_HI22 56
+#define R_SPARC_TLS_GD_LO10 57
+#define R_SPARC_TLS_GD_ADD 58
+#define R_SPARC_TLS_GD_CALL 59
+#define R_SPARC_TLS_LDM_HI22 60
+#define R_SPARC_TLS_LDM_LO10 61
+#define R_SPARC_TLS_LDM_ADD 62
+#define R_SPARC_TLS_LDM_CALL 63
+#define R_SPARC_TLS_LDO_HIX22 64
+#define R_SPARC_TLS_LDO_LOX10 65
+#define R_SPARC_TLS_LDO_ADD 66
+#define R_SPARC_TLS_IE_HI22 67
+#define R_SPARC_TLS_IE_LO10 68
+#define R_SPARC_TLS_IE_LD 69
+#define R_SPARC_TLS_IE_LDX 70
+#define R_SPARC_TLS_IE_ADD 71
+#define R_SPARC_TLS_LE_HIX22 72
+#define R_SPARC_TLS_LE_LOX10 73
+#define R_SPARC_TLS_DTPMOD32 74
+#define R_SPARC_TLS_DTPMOD64 75
+#define R_SPARC_TLS_DTPOFF32 76
+#define R_SPARC_TLS_DTPOFF64 77
+#define R_SPARC_TLS_TPOFF32 78
+#define R_SPARC_TLS_TPOFF64 79
+#define R_SPARC_GOTDATA_HIX22 80
+#define R_SPARC_GOTDATA_LOX10 81
+#define R_SPARC_GOTDATA_OP_HIX22 82
+#define R_SPARC_GOTDATA_OP_LOX10 83
+#define R_SPARC_GOTDATA_OP 84
+#define R_SPARC_H34 85
+#define R_SPARC_SIZE32 86
+#define R_SPARC_SIZE64 87
+#define R_SPARC_GNU_VTINHERIT 250
+#define R_SPARC_GNU_VTENTRY 251
+#define R_SPARC_REV32 252
+
+#define R_SPARC_NUM 253
+
+
+
+#define DT_SPARC_REGISTER 0x70000001
+#define DT_SPARC_NUM 2
+
+
+#define EF_MIPS_NOREORDER 1
+#define EF_MIPS_PIC 2
+#define EF_MIPS_CPIC 4
+#define EF_MIPS_XGOT 8
+#define EF_MIPS_64BIT_WHIRL 16
+#define EF_MIPS_ABI2 32
+#define EF_MIPS_ABI_ON32 64
+#define EF_MIPS_FP64 512
+#define EF_MIPS_NAN2008 1024
+#define EF_MIPS_ARCH 0xf0000000
+
+
+
+#define EF_MIPS_ARCH_1 0x00000000
+#define EF_MIPS_ARCH_2 0x10000000
+#define EF_MIPS_ARCH_3 0x20000000
+#define EF_MIPS_ARCH_4 0x30000000
+#define EF_MIPS_ARCH_5 0x40000000
+#define EF_MIPS_ARCH_32 0x50000000
+#define EF_MIPS_ARCH_64 0x60000000
+#define EF_MIPS_ARCH_32R2 0x70000000
+#define EF_MIPS_ARCH_64R2 0x80000000
+
+
+#define E_MIPS_ARCH_1 0x00000000
+#define E_MIPS_ARCH_2 0x10000000
+#define E_MIPS_ARCH_3 0x20000000
+#define E_MIPS_ARCH_4 0x30000000
+#define E_MIPS_ARCH_5 0x40000000
+#define E_MIPS_ARCH_32 0x50000000
+#define E_MIPS_ARCH_64 0x60000000
+
+
+
+#define SHN_MIPS_ACOMMON 0xff00
+#define SHN_MIPS_TEXT 0xff01
+#define SHN_MIPS_DATA 0xff02
+#define SHN_MIPS_SCOMMON 0xff03
+#define SHN_MIPS_SUNDEFINED 0xff04
+
+
+
+#define SHT_MIPS_LIBLIST 0x70000000
+#define SHT_MIPS_MSYM 0x70000001
+#define SHT_MIPS_CONFLICT 0x70000002
+#define SHT_MIPS_GPTAB 0x70000003
+#define SHT_MIPS_UCODE 0x70000004
+#define SHT_MIPS_DEBUG 0x70000005
+#define SHT_MIPS_REGINFO 0x70000006
+#define SHT_MIPS_PACKAGE 0x70000007
+#define SHT_MIPS_PACKSYM 0x70000008
+#define SHT_MIPS_RELD 0x70000009
+#define SHT_MIPS_IFACE 0x7000000b
+#define SHT_MIPS_CONTENT 0x7000000c
+#define SHT_MIPS_OPTIONS 0x7000000d
+#define SHT_MIPS_SHDR 0x70000010
+#define SHT_MIPS_FDESC 0x70000011
+#define SHT_MIPS_EXTSYM 0x70000012
+#define SHT_MIPS_DENSE 0x70000013
+#define SHT_MIPS_PDESC 0x70000014
+#define SHT_MIPS_LOCSYM 0x70000015
+#define SHT_MIPS_AUXSYM 0x70000016
+#define SHT_MIPS_OPTSYM 0x70000017
+#define SHT_MIPS_LOCSTR 0x70000018
+#define SHT_MIPS_LINE 0x70000019
+#define SHT_MIPS_RFDESC 0x7000001a
+#define SHT_MIPS_DELTASYM 0x7000001b
+#define SHT_MIPS_DELTAINST 0x7000001c
+#define SHT_MIPS_DELTACLASS 0x7000001d
+#define SHT_MIPS_DWARF 0x7000001e
+#define SHT_MIPS_DELTADECL 0x7000001f
+#define SHT_MIPS_SYMBOL_LIB 0x70000020
+#define SHT_MIPS_EVENTS 0x70000021
+#define SHT_MIPS_TRANSLATE 0x70000022
+#define SHT_MIPS_PIXIE 0x70000023
+#define SHT_MIPS_XLATE 0x70000024
+#define SHT_MIPS_XLATE_DEBUG 0x70000025
+#define SHT_MIPS_WHIRL 0x70000026
+#define SHT_MIPS_EH_REGION 0x70000027
+#define SHT_MIPS_XLATE_OLD 0x70000028
+#define SHT_MIPS_PDR_EXCEPTION 0x70000029
+
+
+
+#define SHF_MIPS_GPREL 0x10000000
+#define SHF_MIPS_MERGE 0x20000000
+#define SHF_MIPS_ADDR 0x40000000
+#define SHF_MIPS_STRINGS 0x80000000
+#define SHF_MIPS_NOSTRIP 0x08000000
+#define SHF_MIPS_LOCAL 0x04000000
+#define SHF_MIPS_NAMES 0x02000000
+#define SHF_MIPS_NODUPE 0x01000000
+
+
+
+
+
+#define STO_MIPS_DEFAULT 0x0
+#define STO_MIPS_INTERNAL 0x1
+#define STO_MIPS_HIDDEN 0x2
+#define STO_MIPS_PROTECTED 0x3
+#define STO_MIPS_PLT 0x8
+#define STO_MIPS_SC_ALIGN_UNUSED 0xff
+
+
+#define STB_MIPS_SPLIT_COMMON 13
+
+
+
+typedef union {
+ struct {
+ Elf32_Word gt_current_g_value;
+ Elf32_Word gt_unused;
+ } gt_header;
+ struct {
+ Elf32_Word gt_g_value;
+ Elf32_Word gt_bytes;
+ } gt_entry;
+} Elf32_gptab;
+
+
+
+typedef struct {
+ Elf32_Word ri_gprmask;
+ Elf32_Word ri_cprmask[4];
+ Elf32_Sword ri_gp_value;
+} Elf32_RegInfo;
+
+
+
+typedef struct {
+ unsigned char kind;
+
+ unsigned char size;
+ Elf32_Section section;
+
+ Elf32_Word info;
+} Elf_Options;
+
+
+
+#define ODK_NULL 0
+#define ODK_REGINFO 1
+#define ODK_EXCEPTIONS 2
+#define ODK_PAD 3
+#define ODK_HWPATCH 4
+#define ODK_FILL 5
+#define ODK_TAGS 6
+#define ODK_HWAND 7
+#define ODK_HWOR 8
+
+
+
+#define OEX_FPU_MIN 0x1f
+#define OEX_FPU_MAX 0x1f00
+#define OEX_PAGE0 0x10000
+#define OEX_SMM 0x20000
+#define OEX_FPDBUG 0x40000
+#define OEX_PRECISEFP OEX_FPDBUG
+#define OEX_DISMISS 0x80000
+
+#define OEX_FPU_INVAL 0x10
+#define OEX_FPU_DIV0 0x08
+#define OEX_FPU_OFLO 0x04
+#define OEX_FPU_UFLO 0x02
+#define OEX_FPU_INEX 0x01
+
+
+
+#define OHW_R4KEOP 0x1
+#define OHW_R8KPFETCH 0x2
+#define OHW_R5KEOP 0x4
+#define OHW_R5KCVTL 0x8
+
+#define OPAD_PREFIX 0x1
+#define OPAD_POSTFIX 0x2
+#define OPAD_SYMBOL 0x4
+
+
+
+typedef struct {
+ Elf32_Word hwp_flags1;
+ Elf32_Word hwp_flags2;
+} Elf_Options_Hw;
+
+
+
+#define OHWA0_R4KEOP_CHECKED 0x00000001
+#define OHWA1_R4KEOP_CLEAN 0x00000002
+
+
+
+#define R_MIPS_NONE 0
+#define R_MIPS_16 1
+#define R_MIPS_32 2
+#define R_MIPS_REL32 3
+#define R_MIPS_26 4
+#define R_MIPS_HI16 5
+#define R_MIPS_LO16 6
+#define R_MIPS_GPREL16 7
+#define R_MIPS_LITERAL 8
+#define R_MIPS_GOT16 9
+#define R_MIPS_PC16 10
+#define R_MIPS_CALL16 11
+#define R_MIPS_GPREL32 12
+
+#define R_MIPS_SHIFT5 16
+#define R_MIPS_SHIFT6 17
+#define R_MIPS_64 18
+#define R_MIPS_GOT_DISP 19
+#define R_MIPS_GOT_PAGE 20
+#define R_MIPS_GOT_OFST 21
+#define R_MIPS_GOT_HI16 22
+#define R_MIPS_GOT_LO16 23
+#define R_MIPS_SUB 24
+#define R_MIPS_INSERT_A 25
+#define R_MIPS_INSERT_B 26
+#define R_MIPS_DELETE 27
+#define R_MIPS_HIGHER 28
+#define R_MIPS_HIGHEST 29
+#define R_MIPS_CALL_HI16 30
+#define R_MIPS_CALL_LO16 31
+#define R_MIPS_SCN_DISP 32
+#define R_MIPS_REL16 33
+#define R_MIPS_ADD_IMMEDIATE 34
+#define R_MIPS_PJUMP 35
+#define R_MIPS_RELGOT 36
+#define R_MIPS_JALR 37
+#define R_MIPS_TLS_DTPMOD32 38
+#define R_MIPS_TLS_DTPREL32 39
+#define R_MIPS_TLS_DTPMOD64 40
+#define R_MIPS_TLS_DTPREL64 41
+#define R_MIPS_TLS_GD 42
+#define R_MIPS_TLS_LDM 43
+#define R_MIPS_TLS_DTPREL_HI16 44
+#define R_MIPS_TLS_DTPREL_LO16 45
+#define R_MIPS_TLS_GOTTPREL 46
+#define R_MIPS_TLS_TPREL32 47
+#define R_MIPS_TLS_TPREL64 48
+#define R_MIPS_TLS_TPREL_HI16 49
+#define R_MIPS_TLS_TPREL_LO16 50
+#define R_MIPS_GLOB_DAT 51
+#define R_MIPS_COPY 126
+#define R_MIPS_JUMP_SLOT 127
+
+#define R_MIPS_NUM 128
+
+
+
+#define PT_MIPS_REGINFO 0x70000000
+#define PT_MIPS_RTPROC 0x70000001
+#define PT_MIPS_OPTIONS 0x70000002
+#define PT_MIPS_ABIFLAGS 0x70000003
+
+
+
+#define PF_MIPS_LOCAL 0x10000000
+
+
+
+#define DT_MIPS_RLD_VERSION 0x70000001
+#define DT_MIPS_TIME_STAMP 0x70000002
+#define DT_MIPS_ICHECKSUM 0x70000003
+#define DT_MIPS_IVERSION 0x70000004
+#define DT_MIPS_FLAGS 0x70000005
+#define DT_MIPS_BASE_ADDRESS 0x70000006
+#define DT_MIPS_MSYM 0x70000007
+#define DT_MIPS_CONFLICT 0x70000008
+#define DT_MIPS_LIBLIST 0x70000009
+#define DT_MIPS_LOCAL_GOTNO 0x7000000a
+#define DT_MIPS_CONFLICTNO 0x7000000b
+#define DT_MIPS_LIBLISTNO 0x70000010
+#define DT_MIPS_SYMTABNO 0x70000011
+#define DT_MIPS_UNREFEXTNO 0x70000012
+#define DT_MIPS_GOTSYM 0x70000013
+#define DT_MIPS_HIPAGENO 0x70000014
+#define DT_MIPS_RLD_MAP 0x70000016
+#define DT_MIPS_DELTA_CLASS 0x70000017
+#define DT_MIPS_DELTA_CLASS_NO 0x70000018
+
+#define DT_MIPS_DELTA_INSTANCE 0x70000019
+#define DT_MIPS_DELTA_INSTANCE_NO 0x7000001a
+
+#define DT_MIPS_DELTA_RELOC 0x7000001b
+#define DT_MIPS_DELTA_RELOC_NO 0x7000001c
+
+#define DT_MIPS_DELTA_SYM 0x7000001d
+
+#define DT_MIPS_DELTA_SYM_NO 0x7000001e
+
+#define DT_MIPS_DELTA_CLASSSYM 0x70000020
+
+#define DT_MIPS_DELTA_CLASSSYM_NO 0x70000021
+
+#define DT_MIPS_CXX_FLAGS 0x70000022
+#define DT_MIPS_PIXIE_INIT 0x70000023
+#define DT_MIPS_SYMBOL_LIB 0x70000024
+#define DT_MIPS_LOCALPAGE_GOTIDX 0x70000025
+#define DT_MIPS_LOCAL_GOTIDX 0x70000026
+#define DT_MIPS_HIDDEN_GOTIDX 0x70000027
+#define DT_MIPS_PROTECTED_GOTIDX 0x70000028
+#define DT_MIPS_OPTIONS 0x70000029
+#define DT_MIPS_INTERFACE 0x7000002a
+#define DT_MIPS_DYNSTR_ALIGN 0x7000002b
+#define DT_MIPS_INTERFACE_SIZE 0x7000002c
+#define DT_MIPS_RLD_TEXT_RESOLVE_ADDR 0x7000002d
+
+#define DT_MIPS_PERF_SUFFIX 0x7000002e
+
+#define DT_MIPS_COMPACT_SIZE 0x7000002f
+#define DT_MIPS_GP_VALUE 0x70000030
+#define DT_MIPS_AUX_DYNAMIC 0x70000031
+
+#define DT_MIPS_PLTGOT 0x70000032
+
+#define DT_MIPS_RWPLT 0x70000034
+#define DT_MIPS_RLD_MAP_REL 0x70000035
+#define DT_MIPS_NUM 0x36
+
+
+
+#define RHF_NONE 0
+#define RHF_QUICKSTART (1 << 0)
+#define RHF_NOTPOT (1 << 1)
+#define RHF_NO_LIBRARY_REPLACEMENT (1 << 2)
+#define RHF_NO_MOVE (1 << 3)
+#define RHF_SGI_ONLY (1 << 4)
+#define RHF_GUARANTEE_INIT (1 << 5)
+#define RHF_DELTA_C_PLUS_PLUS (1 << 6)
+#define RHF_GUARANTEE_START_INIT (1 << 7)
+#define RHF_PIXIE (1 << 8)
+#define RHF_DEFAULT_DELAY_LOAD (1 << 9)
+#define RHF_REQUICKSTART (1 << 10)
+#define RHF_REQUICKSTARTED (1 << 11)
+#define RHF_CORD (1 << 12)
+#define RHF_NO_UNRES_UNDEF (1 << 13)
+#define RHF_RLD_ORDER_SAFE (1 << 14)
+
+
+
+typedef struct {
+ Elf32_Word l_name;
+ Elf32_Word l_time_stamp;
+ Elf32_Word l_checksum;
+ Elf32_Word l_version;
+ Elf32_Word l_flags;
+} Elf32_Lib;
+
+typedef struct {
+ Elf64_Word l_name;
+ Elf64_Word l_time_stamp;
+ Elf64_Word l_checksum;
+ Elf64_Word l_version;
+ Elf64_Word l_flags;
+} Elf64_Lib;
+
+
+
+
+#define LL_NONE 0
+#define LL_EXACT_MATCH (1 << 0)
+#define LL_IGNORE_INT_VER (1 << 1)
+#define LL_REQUIRE_MINOR (1 << 2)
+#define LL_EXPORTS (1 << 3)
+#define LL_DELAY_LOAD (1 << 4)
+#define LL_DELTA (1 << 5)
+
+
+
+typedef Elf32_Addr Elf32_Conflict;
+
+typedef struct {
+ Elf32_Half version;
+ unsigned char isa_level;
+ unsigned char isa_rev;
+ unsigned char gpr_size;
+ unsigned char cpr1_size;
+ unsigned char cpr2_size;
+ unsigned char fp_abi;
+ Elf32_Word isa_ext;
+ Elf32_Word ases;
+ Elf32_Word flags1;
+ Elf32_Word flags2;
+} Elf_MIPS_ABIFlags_v0;
+
+#define MIPS_AFL_REG_NONE 0x00
+#define MIPS_AFL_REG_32 0x01
+#define MIPS_AFL_REG_64 0x02
+#define MIPS_AFL_REG_128 0x03
+
+#define MIPS_AFL_ASE_DSP 0x00000001
+#define MIPS_AFL_ASE_DSPR2 0x00000002
+#define MIPS_AFL_ASE_EVA 0x00000004
+#define MIPS_AFL_ASE_MCU 0x00000008
+#define MIPS_AFL_ASE_MDMX 0x00000010
+#define MIPS_AFL_ASE_MIPS3D 0x00000020
+#define MIPS_AFL_ASE_MT 0x00000040
+#define MIPS_AFL_ASE_SMARTMIPS 0x00000080
+#define MIPS_AFL_ASE_VIRT 0x00000100
+#define MIPS_AFL_ASE_MSA 0x00000200
+#define MIPS_AFL_ASE_MIPS16 0x00000400
+#define MIPS_AFL_ASE_MICROMIPS 0x00000800
+#define MIPS_AFL_ASE_XPA 0x00001000
+#define MIPS_AFL_ASE_MASK 0x00001fff
+
+#define MIPS_AFL_EXT_XLR 1
+#define MIPS_AFL_EXT_OCTEON2 2
+#define MIPS_AFL_EXT_OCTEONP 3
+#define MIPS_AFL_EXT_LOONGSON_3A 4
+#define MIPS_AFL_EXT_OCTEON 5
+#define MIPS_AFL_EXT_5900 6
+#define MIPS_AFL_EXT_4650 7
+#define MIPS_AFL_EXT_4010 8
+#define MIPS_AFL_EXT_4100 9
+#define MIPS_AFL_EXT_3900 10
+#define MIPS_AFL_EXT_10000 11
+#define MIPS_AFL_EXT_SB1 12
+#define MIPS_AFL_EXT_4111 13
+#define MIPS_AFL_EXT_4120 14
+#define MIPS_AFL_EXT_5400 15
+#define MIPS_AFL_EXT_5500 16
+#define MIPS_AFL_EXT_LOONGSON_2E 17
+#define MIPS_AFL_EXT_LOONGSON_2F 18
+
+#define MIPS_AFL_FLAGS1_ODDSPREG 1
+
+enum
+{
+ Val_GNU_MIPS_ABI_FP_ANY = 0,
+ Val_GNU_MIPS_ABI_FP_DOUBLE = 1,
+ Val_GNU_MIPS_ABI_FP_SINGLE = 2,
+ Val_GNU_MIPS_ABI_FP_SOFT = 3,
+ Val_GNU_MIPS_ABI_FP_OLD_64 = 4,
+ Val_GNU_MIPS_ABI_FP_XX = 5,
+ Val_GNU_MIPS_ABI_FP_64 = 6,
+ Val_GNU_MIPS_ABI_FP_64A = 7,
+ Val_GNU_MIPS_ABI_FP_MAX = 7
+};
+
+
+
+
+#define EF_PARISC_TRAPNIL 0x00010000
+#define EF_PARISC_EXT 0x00020000
+#define EF_PARISC_LSB 0x00040000
+#define EF_PARISC_WIDE 0x00080000
+#define EF_PARISC_NO_KABP 0x00100000
+
+#define EF_PARISC_LAZYSWAP 0x00400000
+#define EF_PARISC_ARCH 0x0000ffff
+
+
+
+#define EFA_PARISC_1_0 0x020b
+#define EFA_PARISC_1_1 0x0210
+#define EFA_PARISC_2_0 0x0214
+
+
+
+#define SHN_PARISC_ANSI_COMMON 0xff00
+
+#define SHN_PARISC_HUGE_COMMON 0xff01
+
+
+
+#define SHT_PARISC_EXT 0x70000000
+#define SHT_PARISC_UNWIND 0x70000001
+#define SHT_PARISC_DOC 0x70000002
+
+
+
+#define SHF_PARISC_SHORT 0x20000000
+#define SHF_PARISC_HUGE 0x40000000
+#define SHF_PARISC_SBP 0x80000000
+
+
+
+#define STT_PARISC_MILLICODE 13
+
+#define STT_HP_OPAQUE (STT_LOOS + 0x1)
+#define STT_HP_STUB (STT_LOOS + 0x2)
+
+
+
+#define R_PARISC_NONE 0
+#define R_PARISC_DIR32 1
+#define R_PARISC_DIR21L 2
+#define R_PARISC_DIR17R 3
+#define R_PARISC_DIR17F 4
+#define R_PARISC_DIR14R 6
+#define R_PARISC_PCREL32 9
+#define R_PARISC_PCREL21L 10
+#define R_PARISC_PCREL17R 11
+#define R_PARISC_PCREL17F 12
+#define R_PARISC_PCREL14R 14
+#define R_PARISC_DPREL21L 18
+#define R_PARISC_DPREL14R 22
+#define R_PARISC_GPREL21L 26
+#define R_PARISC_GPREL14R 30
+#define R_PARISC_LTOFF21L 34
+#define R_PARISC_LTOFF14R 38
+#define R_PARISC_SECREL32 41
+#define R_PARISC_SEGBASE 48
+#define R_PARISC_SEGREL32 49
+#define R_PARISC_PLTOFF21L 50
+#define R_PARISC_PLTOFF14R 54
+#define R_PARISC_LTOFF_FPTR32 57
+#define R_PARISC_LTOFF_FPTR21L 58
+#define R_PARISC_LTOFF_FPTR14R 62
+#define R_PARISC_FPTR64 64
+#define R_PARISC_PLABEL32 65
+#define R_PARISC_PLABEL21L 66
+#define R_PARISC_PLABEL14R 70
+#define R_PARISC_PCREL64 72
+#define R_PARISC_PCREL22F 74
+#define R_PARISC_PCREL14WR 75
+#define R_PARISC_PCREL14DR 76
+#define R_PARISC_PCREL16F 77
+#define R_PARISC_PCREL16WF 78
+#define R_PARISC_PCREL16DF 79
+#define R_PARISC_DIR64 80
+#define R_PARISC_DIR14WR 83
+#define R_PARISC_DIR14DR 84
+#define R_PARISC_DIR16F 85
+#define R_PARISC_DIR16WF 86
+#define R_PARISC_DIR16DF 87
+#define R_PARISC_GPREL64 88
+#define R_PARISC_GPREL14WR 91
+#define R_PARISC_GPREL14DR 92
+#define R_PARISC_GPREL16F 93
+#define R_PARISC_GPREL16WF 94
+#define R_PARISC_GPREL16DF 95
+#define R_PARISC_LTOFF64 96
+#define R_PARISC_LTOFF14WR 99
+#define R_PARISC_LTOFF14DR 100
+#define R_PARISC_LTOFF16F 101
+#define R_PARISC_LTOFF16WF 102
+#define R_PARISC_LTOFF16DF 103
+#define R_PARISC_SECREL64 104
+#define R_PARISC_SEGREL64 112
+#define R_PARISC_PLTOFF14WR 115
+#define R_PARISC_PLTOFF14DR 116
+#define R_PARISC_PLTOFF16F 117
+#define R_PARISC_PLTOFF16WF 118
+#define R_PARISC_PLTOFF16DF 119
+#define R_PARISC_LTOFF_FPTR64 120
+#define R_PARISC_LTOFF_FPTR14WR 123
+#define R_PARISC_LTOFF_FPTR14DR 124
+#define R_PARISC_LTOFF_FPTR16F 125
+#define R_PARISC_LTOFF_FPTR16WF 126
+#define R_PARISC_LTOFF_FPTR16DF 127
+#define R_PARISC_LORESERVE 128
+#define R_PARISC_COPY 128
+#define R_PARISC_IPLT 129
+#define R_PARISC_EPLT 130
+#define R_PARISC_TPREL32 153
+#define R_PARISC_TPREL21L 154
+#define R_PARISC_TPREL14R 158
+#define R_PARISC_LTOFF_TP21L 162
+#define R_PARISC_LTOFF_TP14R 166
+#define R_PARISC_LTOFF_TP14F 167
+#define R_PARISC_TPREL64 216
+#define R_PARISC_TPREL14WR 219
+#define R_PARISC_TPREL14DR 220
+#define R_PARISC_TPREL16F 221
+#define R_PARISC_TPREL16WF 222
+#define R_PARISC_TPREL16DF 223
+#define R_PARISC_LTOFF_TP64 224
+#define R_PARISC_LTOFF_TP14WR 227
+#define R_PARISC_LTOFF_TP14DR 228
+#define R_PARISC_LTOFF_TP16F 229
+#define R_PARISC_LTOFF_TP16WF 230
+#define R_PARISC_LTOFF_TP16DF 231
+#define R_PARISC_GNU_VTENTRY 232
+#define R_PARISC_GNU_VTINHERIT 233
+#define R_PARISC_TLS_GD21L 234
+#define R_PARISC_TLS_GD14R 235
+#define R_PARISC_TLS_GDCALL 236
+#define R_PARISC_TLS_LDM21L 237
+#define R_PARISC_TLS_LDM14R 238
+#define R_PARISC_TLS_LDMCALL 239
+#define R_PARISC_TLS_LDO21L 240
+#define R_PARISC_TLS_LDO14R 241
+#define R_PARISC_TLS_DTPMOD32 242
+#define R_PARISC_TLS_DTPMOD64 243
+#define R_PARISC_TLS_DTPOFF32 244
+#define R_PARISC_TLS_DTPOFF64 245
+#define R_PARISC_TLS_LE21L R_PARISC_TPREL21L
+#define R_PARISC_TLS_LE14R R_PARISC_TPREL14R
+#define R_PARISC_TLS_IE21L R_PARISC_LTOFF_TP21L
+#define R_PARISC_TLS_IE14R R_PARISC_LTOFF_TP14R
+#define R_PARISC_TLS_TPREL32 R_PARISC_TPREL32
+#define R_PARISC_TLS_TPREL64 R_PARISC_TPREL64
+#define R_PARISC_HIRESERVE 255
+
+
+
+#define PT_HP_TLS (PT_LOOS + 0x0)
+#define PT_HP_CORE_NONE (PT_LOOS + 0x1)
+#define PT_HP_CORE_VERSION (PT_LOOS + 0x2)
+#define PT_HP_CORE_KERNEL (PT_LOOS + 0x3)
+#define PT_HP_CORE_COMM (PT_LOOS + 0x4)
+#define PT_HP_CORE_PROC (PT_LOOS + 0x5)
+#define PT_HP_CORE_LOADABLE (PT_LOOS + 0x6)
+#define PT_HP_CORE_STACK (PT_LOOS + 0x7)
+#define PT_HP_CORE_SHM (PT_LOOS + 0x8)
+#define PT_HP_CORE_MMF (PT_LOOS + 0x9)
+#define PT_HP_PARALLEL (PT_LOOS + 0x10)
+#define PT_HP_FASTBIND (PT_LOOS + 0x11)
+#define PT_HP_OPT_ANNOT (PT_LOOS + 0x12)
+#define PT_HP_HSL_ANNOT (PT_LOOS + 0x13)
+#define PT_HP_STACK (PT_LOOS + 0x14)
+
+#define PT_PARISC_ARCHEXT 0x70000000
+#define PT_PARISC_UNWIND 0x70000001
+
+
+
+#define PF_PARISC_SBP 0x08000000
+
+#define PF_HP_PAGE_SIZE 0x00100000
+#define PF_HP_FAR_SHARED 0x00200000
+#define PF_HP_NEAR_SHARED 0x00400000
+#define PF_HP_CODE 0x01000000
+#define PF_HP_MODIFY 0x02000000
+#define PF_HP_LAZYSWAP 0x04000000
+#define PF_HP_SBP 0x08000000
+
+
+
+
+
+
+#define EF_ALPHA_32BIT 1
+#define EF_ALPHA_CANRELAX 2
+
+
+
+
+#define SHT_ALPHA_DEBUG 0x70000001
+#define SHT_ALPHA_REGINFO 0x70000002
+
+
+
+#define SHF_ALPHA_GPREL 0x10000000
+
+
+#define STO_ALPHA_NOPV 0x80
+#define STO_ALPHA_STD_GPLOAD 0x88
+
+
+
+#define R_ALPHA_NONE 0
+#define R_ALPHA_REFLONG 1
+#define R_ALPHA_REFQUAD 2
+#define R_ALPHA_GPREL32 3
+#define R_ALPHA_LITERAL 4
+#define R_ALPHA_LITUSE 5
+#define R_ALPHA_GPDISP 6
+#define R_ALPHA_BRADDR 7
+#define R_ALPHA_HINT 8
+#define R_ALPHA_SREL16 9
+#define R_ALPHA_SREL32 10
+#define R_ALPHA_SREL64 11
+#define R_ALPHA_GPRELHIGH 17
+#define R_ALPHA_GPRELLOW 18
+#define R_ALPHA_GPREL16 19
+#define R_ALPHA_COPY 24
+#define R_ALPHA_GLOB_DAT 25
+#define R_ALPHA_JMP_SLOT 26
+#define R_ALPHA_RELATIVE 27
+#define R_ALPHA_TLS_GD_HI 28
+#define R_ALPHA_TLSGD 29
+#define R_ALPHA_TLS_LDM 30
+#define R_ALPHA_DTPMOD64 31
+#define R_ALPHA_GOTDTPREL 32
+#define R_ALPHA_DTPREL64 33
+#define R_ALPHA_DTPRELHI 34
+#define R_ALPHA_DTPRELLO 35
+#define R_ALPHA_DTPREL16 36
+#define R_ALPHA_GOTTPREL 37
+#define R_ALPHA_TPREL64 38
+#define R_ALPHA_TPRELHI 39
+#define R_ALPHA_TPRELLO 40
+#define R_ALPHA_TPREL16 41
+
+#define R_ALPHA_NUM 46
+
+
+#define LITUSE_ALPHA_ADDR 0
+#define LITUSE_ALPHA_BASE 1
+#define LITUSE_ALPHA_BYTOFF 2
+#define LITUSE_ALPHA_JSR 3
+#define LITUSE_ALPHA_TLS_GD 4
+#define LITUSE_ALPHA_TLS_LDM 5
+
+
+#define DT_ALPHA_PLTRO (DT_LOPROC + 0)
+#define DT_ALPHA_NUM 1
+
+
+
+
+#define EF_PPC_EMB 0x80000000
+
+
+#define EF_PPC_RELOCATABLE 0x00010000
+#define EF_PPC_RELOCATABLE_LIB 0x00008000
+
+
+
+#define R_PPC_NONE 0
+#define R_PPC_ADDR32 1
+#define R_PPC_ADDR24 2
+#define R_PPC_ADDR16 3
+#define R_PPC_ADDR16_LO 4
+#define R_PPC_ADDR16_HI 5
+#define R_PPC_ADDR16_HA 6
+#define R_PPC_ADDR14 7
+#define R_PPC_ADDR14_BRTAKEN 8
+#define R_PPC_ADDR14_BRNTAKEN 9
+#define R_PPC_REL24 10
+#define R_PPC_REL14 11
+#define R_PPC_REL14_BRTAKEN 12
+#define R_PPC_REL14_BRNTAKEN 13
+#define R_PPC_GOT16 14
+#define R_PPC_GOT16_LO 15
+#define R_PPC_GOT16_HI 16
+#define R_PPC_GOT16_HA 17
+#define R_PPC_PLTREL24 18
+#define R_PPC_COPY 19
+#define R_PPC_GLOB_DAT 20
+#define R_PPC_JMP_SLOT 21
+#define R_PPC_RELATIVE 22
+#define R_PPC_LOCAL24PC 23
+#define R_PPC_UADDR32 24
+#define R_PPC_UADDR16 25
+#define R_PPC_REL32 26
+#define R_PPC_PLT32 27
+#define R_PPC_PLTREL32 28
+#define R_PPC_PLT16_LO 29
+#define R_PPC_PLT16_HI 30
+#define R_PPC_PLT16_HA 31
+#define R_PPC_SDAREL16 32
+#define R_PPC_SECTOFF 33
+#define R_PPC_SECTOFF_LO 34
+#define R_PPC_SECTOFF_HI 35
+#define R_PPC_SECTOFF_HA 36
+
+
+#define R_PPC_TLS 67
+#define R_PPC_DTPMOD32 68
+#define R_PPC_TPREL16 69
+#define R_PPC_TPREL16_LO 70
+#define R_PPC_TPREL16_HI 71
+#define R_PPC_TPREL16_HA 72
+#define R_PPC_TPREL32 73
+#define R_PPC_DTPREL16 74
+#define R_PPC_DTPREL16_LO 75
+#define R_PPC_DTPREL16_HI 76
+#define R_PPC_DTPREL16_HA 77
+#define R_PPC_DTPREL32 78
+#define R_PPC_GOT_TLSGD16 79
+#define R_PPC_GOT_TLSGD16_LO 80
+#define R_PPC_GOT_TLSGD16_HI 81
+#define R_PPC_GOT_TLSGD16_HA 82
+#define R_PPC_GOT_TLSLD16 83
+#define R_PPC_GOT_TLSLD16_LO 84
+#define R_PPC_GOT_TLSLD16_HI 85
+#define R_PPC_GOT_TLSLD16_HA 86
+#define R_PPC_GOT_TPREL16 87
+#define R_PPC_GOT_TPREL16_LO 88
+#define R_PPC_GOT_TPREL16_HI 89
+#define R_PPC_GOT_TPREL16_HA 90
+#define R_PPC_GOT_DTPREL16 91
+#define R_PPC_GOT_DTPREL16_LO 92
+#define R_PPC_GOT_DTPREL16_HI 93
+#define R_PPC_GOT_DTPREL16_HA 94
+#define R_PPC_TLSGD 95
+#define R_PPC_TLSLD 96
+
+
+#define R_PPC_EMB_NADDR32 101
+#define R_PPC_EMB_NADDR16 102
+#define R_PPC_EMB_NADDR16_LO 103
+#define R_PPC_EMB_NADDR16_HI 104
+#define R_PPC_EMB_NADDR16_HA 105
+#define R_PPC_EMB_SDAI16 106
+#define R_PPC_EMB_SDA2I16 107
+#define R_PPC_EMB_SDA2REL 108
+#define R_PPC_EMB_SDA21 109
+#define R_PPC_EMB_MRKREF 110
+#define R_PPC_EMB_RELSEC16 111
+#define R_PPC_EMB_RELST_LO 112
+#define R_PPC_EMB_RELST_HI 113
+#define R_PPC_EMB_RELST_HA 114
+#define R_PPC_EMB_BIT_FLD 115
+#define R_PPC_EMB_RELSDA 116
+
+
+#define R_PPC_DIAB_SDA21_LO 180
+#define R_PPC_DIAB_SDA21_HI 181
+#define R_PPC_DIAB_SDA21_HA 182
+#define R_PPC_DIAB_RELSDA_LO 183
+#define R_PPC_DIAB_RELSDA_HI 184
+#define R_PPC_DIAB_RELSDA_HA 185
+
+
+#define R_PPC_IRELATIVE 248
+
+
+#define R_PPC_REL16 249
+#define R_PPC_REL16_LO 250
+#define R_PPC_REL16_HI 251
+#define R_PPC_REL16_HA 252
+
+
+
+#define R_PPC_TOC16 255
+
+
+#define DT_PPC_GOT (DT_LOPROC + 0)
+#define DT_PPC_OPT (DT_LOPROC + 1)
+#define DT_PPC_NUM 2
+
+#define PPC_OPT_TLS 1
+
+
+#define R_PPC64_NONE R_PPC_NONE
+#define R_PPC64_ADDR32 R_PPC_ADDR32
+#define R_PPC64_ADDR24 R_PPC_ADDR24
+#define R_PPC64_ADDR16 R_PPC_ADDR16
+#define R_PPC64_ADDR16_LO R_PPC_ADDR16_LO
+#define R_PPC64_ADDR16_HI R_PPC_ADDR16_HI
+#define R_PPC64_ADDR16_HA R_PPC_ADDR16_HA
+#define R_PPC64_ADDR14 R_PPC_ADDR14
+#define R_PPC64_ADDR14_BRTAKEN R_PPC_ADDR14_BRTAKEN
+#define R_PPC64_ADDR14_BRNTAKEN R_PPC_ADDR14_BRNTAKEN
+#define R_PPC64_REL24 R_PPC_REL24
+#define R_PPC64_REL14 R_PPC_REL14
+#define R_PPC64_REL14_BRTAKEN R_PPC_REL14_BRTAKEN
+#define R_PPC64_REL14_BRNTAKEN R_PPC_REL14_BRNTAKEN
+#define R_PPC64_GOT16 R_PPC_GOT16
+#define R_PPC64_GOT16_LO R_PPC_GOT16_LO
+#define R_PPC64_GOT16_HI R_PPC_GOT16_HI
+#define R_PPC64_GOT16_HA R_PPC_GOT16_HA
+
+#define R_PPC64_COPY R_PPC_COPY
+#define R_PPC64_GLOB_DAT R_PPC_GLOB_DAT
+#define R_PPC64_JMP_SLOT R_PPC_JMP_SLOT
+#define R_PPC64_RELATIVE R_PPC_RELATIVE
+
+#define R_PPC64_UADDR32 R_PPC_UADDR32
+#define R_PPC64_UADDR16 R_PPC_UADDR16
+#define R_PPC64_REL32 R_PPC_REL32
+#define R_PPC64_PLT32 R_PPC_PLT32
+#define R_PPC64_PLTREL32 R_PPC_PLTREL32
+#define R_PPC64_PLT16_LO R_PPC_PLT16_LO
+#define R_PPC64_PLT16_HI R_PPC_PLT16_HI
+#define R_PPC64_PLT16_HA R_PPC_PLT16_HA
+
+#define R_PPC64_SECTOFF R_PPC_SECTOFF
+#define R_PPC64_SECTOFF_LO R_PPC_SECTOFF_LO
+#define R_PPC64_SECTOFF_HI R_PPC_SECTOFF_HI
+#define R_PPC64_SECTOFF_HA R_PPC_SECTOFF_HA
+#define R_PPC64_ADDR30 37
+#define R_PPC64_ADDR64 38
+#define R_PPC64_ADDR16_HIGHER 39
+#define R_PPC64_ADDR16_HIGHERA 40
+#define R_PPC64_ADDR16_HIGHEST 41
+#define R_PPC64_ADDR16_HIGHESTA 42
+#define R_PPC64_UADDR64 43
+#define R_PPC64_REL64 44
+#define R_PPC64_PLT64 45
+#define R_PPC64_PLTREL64 46
+#define R_PPC64_TOC16 47
+#define R_PPC64_TOC16_LO 48
+#define R_PPC64_TOC16_HI 49
+#define R_PPC64_TOC16_HA 50
+#define R_PPC64_TOC 51
+#define R_PPC64_PLTGOT16 52
+#define R_PPC64_PLTGOT16_LO 53
+#define R_PPC64_PLTGOT16_HI 54
+#define R_PPC64_PLTGOT16_HA 55
+
+#define R_PPC64_ADDR16_DS 56
+#define R_PPC64_ADDR16_LO_DS 57
+#define R_PPC64_GOT16_DS 58
+#define R_PPC64_GOT16_LO_DS 59
+#define R_PPC64_PLT16_LO_DS 60
+#define R_PPC64_SECTOFF_DS 61
+#define R_PPC64_SECTOFF_LO_DS 62
+#define R_PPC64_TOC16_DS 63
+#define R_PPC64_TOC16_LO_DS 64
+#define R_PPC64_PLTGOT16_DS 65
+#define R_PPC64_PLTGOT16_LO_DS 66
+
+
+#define R_PPC64_TLS 67
+#define R_PPC64_DTPMOD64 68
+#define R_PPC64_TPREL16 69
+#define R_PPC64_TPREL16_LO 70
+#define R_PPC64_TPREL16_HI 71
+#define R_PPC64_TPREL16_HA 72
+#define R_PPC64_TPREL64 73
+#define R_PPC64_DTPREL16 74
+#define R_PPC64_DTPREL16_LO 75
+#define R_PPC64_DTPREL16_HI 76
+#define R_PPC64_DTPREL16_HA 77
+#define R_PPC64_DTPREL64 78
+#define R_PPC64_GOT_TLSGD16 79
+#define R_PPC64_GOT_TLSGD16_LO 80
+#define R_PPC64_GOT_TLSGD16_HI 81
+#define R_PPC64_GOT_TLSGD16_HA 82
+#define R_PPC64_GOT_TLSLD16 83
+#define R_PPC64_GOT_TLSLD16_LO 84
+#define R_PPC64_GOT_TLSLD16_HI 85
+#define R_PPC64_GOT_TLSLD16_HA 86
+#define R_PPC64_GOT_TPREL16_DS 87
+#define R_PPC64_GOT_TPREL16_LO_DS 88
+#define R_PPC64_GOT_TPREL16_HI 89
+#define R_PPC64_GOT_TPREL16_HA 90
+#define R_PPC64_GOT_DTPREL16_DS 91
+#define R_PPC64_GOT_DTPREL16_LO_DS 92
+#define R_PPC64_GOT_DTPREL16_HI 93
+#define R_PPC64_GOT_DTPREL16_HA 94
+#define R_PPC64_TPREL16_DS 95
+#define R_PPC64_TPREL16_LO_DS 96
+#define R_PPC64_TPREL16_HIGHER 97
+#define R_PPC64_TPREL16_HIGHERA 98
+#define R_PPC64_TPREL16_HIGHEST 99
+#define R_PPC64_TPREL16_HIGHESTA 100
+#define R_PPC64_DTPREL16_DS 101
+#define R_PPC64_DTPREL16_LO_DS 102
+#define R_PPC64_DTPREL16_HIGHER 103
+#define R_PPC64_DTPREL16_HIGHERA 104
+#define R_PPC64_DTPREL16_HIGHEST 105
+#define R_PPC64_DTPREL16_HIGHESTA 106
+#define R_PPC64_TLSGD 107
+#define R_PPC64_TLSLD 108
+#define R_PPC64_TOCSAVE 109
+#define R_PPC64_ADDR16_HIGH 110
+#define R_PPC64_ADDR16_HIGHA 111
+#define R_PPC64_TPREL16_HIGH 112
+#define R_PPC64_TPREL16_HIGHA 113
+#define R_PPC64_DTPREL16_HIGH 114
+#define R_PPC64_DTPREL16_HIGHA 115
+
+
+#define R_PPC64_JMP_IREL 247
+#define R_PPC64_IRELATIVE 248
+#define R_PPC64_REL16 249
+#define R_PPC64_REL16_LO 250
+#define R_PPC64_REL16_HI 251
+#define R_PPC64_REL16_HA 252
+
+#define EF_PPC64_ABI 3
+
+#define DT_PPC64_GLINK (DT_LOPROC + 0)
+#define DT_PPC64_OPD (DT_LOPROC + 1)
+#define DT_PPC64_OPDSZ (DT_LOPROC + 2)
+#define DT_PPC64_OPT (DT_LOPROC + 3)
+#define DT_PPC64_NUM 4
+
+#define PPC64_OPT_TLS 1
+#define PPC64_OPT_MULTI_TOC 2
+
+#define STO_PPC64_LOCAL_BIT 5
+#define STO_PPC64_LOCAL_MASK 0xe0
+#define PPC64_LOCAL_ENTRY_OFFSET(x) (1 << (((x)&0xe0)>>5) & 0xfc)
+
+
+#define EF_ARM_RELEXEC 0x01
+#define EF_ARM_HASENTRY 0x02
+#define EF_ARM_INTERWORK 0x04
+#define EF_ARM_APCS_26 0x08
+#define EF_ARM_APCS_FLOAT 0x10
+#define EF_ARM_PIC 0x20
+#define EF_ARM_ALIGN8 0x40
+#define EF_ARM_NEW_ABI 0x80
+#define EF_ARM_OLD_ABI 0x100
+#define EF_ARM_SOFT_FLOAT 0x200
+#define EF_ARM_VFP_FLOAT 0x400
+#define EF_ARM_MAVERICK_FLOAT 0x800
+
+#define EF_ARM_ABI_FLOAT_SOFT 0x200
+#define EF_ARM_ABI_FLOAT_HARD 0x400
+
+
+#define EF_ARM_SYMSARESORTED 0x04
+#define EF_ARM_DYNSYMSUSESEGIDX 0x08
+#define EF_ARM_MAPSYMSFIRST 0x10
+#define EF_ARM_EABIMASK 0XFF000000
+
+
+#define EF_ARM_BE8 0x00800000
+#define EF_ARM_LE8 0x00400000
+
+#define EF_ARM_EABI_VERSION(flags) ((flags) & EF_ARM_EABIMASK)
+#define EF_ARM_EABI_UNKNOWN 0x00000000
+#define EF_ARM_EABI_VER1 0x01000000
+#define EF_ARM_EABI_VER2 0x02000000
+#define EF_ARM_EABI_VER3 0x03000000
+#define EF_ARM_EABI_VER4 0x04000000
+#define EF_ARM_EABI_VER5 0x05000000
+
+
+#define STT_ARM_TFUNC STT_LOPROC
+#define STT_ARM_16BIT STT_HIPROC
+
+
+#define SHF_ARM_ENTRYSECT 0x10000000
+#define SHF_ARM_COMDEF 0x80000000
+
+
+
+#define PF_ARM_SB 0x10000000
+
+#define PF_ARM_PI 0x20000000
+#define PF_ARM_ABS 0x40000000
+
+
+#define PT_ARM_EXIDX (PT_LOPROC + 1)
+
+
+#define SHT_ARM_EXIDX (SHT_LOPROC + 1)
+#define SHT_ARM_PREEMPTMAP (SHT_LOPROC + 2)
+#define SHT_ARM_ATTRIBUTES (SHT_LOPROC + 3)
+
+#define R_AARCH64_NONE 0
+#define R_AARCH64_P32_ABS32 1
+#define R_AARCH64_P32_COPY 180
+#define R_AARCH64_P32_GLOB_DAT 181
+#define R_AARCH64_P32_JUMP_SLOT 182
+#define R_AARCH64_P32_RELATIVE 183
+#define R_AARCH64_P32_TLS_DTPMOD 184
+#define R_AARCH64_P32_TLS_DTPREL 185
+#define R_AARCH64_P32_TLS_TPREL 186
+#define R_AARCH64_P32_TLSDESC 187
+#define R_AARCH64_P32_IRELATIVE 188
+#define R_AARCH64_ABS64 257
+#define R_AARCH64_ABS32 258
+#define R_AARCH64_ABS16 259
+#define R_AARCH64_PREL64 260
+#define R_AARCH64_PREL32 261
+#define R_AARCH64_PREL16 262
+#define R_AARCH64_MOVW_UABS_G0 263
+#define R_AARCH64_MOVW_UABS_G0_NC 264
+#define R_AARCH64_MOVW_UABS_G1 265
+#define R_AARCH64_MOVW_UABS_G1_NC 266
+#define R_AARCH64_MOVW_UABS_G2 267
+#define R_AARCH64_MOVW_UABS_G2_NC 268
+#define R_AARCH64_MOVW_UABS_G3 269
+#define R_AARCH64_MOVW_SABS_G0 270
+#define R_AARCH64_MOVW_SABS_G1 271
+#define R_AARCH64_MOVW_SABS_G2 272
+#define R_AARCH64_LD_PREL_LO19 273
+#define R_AARCH64_ADR_PREL_LO21 274
+#define R_AARCH64_ADR_PREL_PG_HI21 275
+#define R_AARCH64_ADR_PREL_PG_HI21_NC 276
+#define R_AARCH64_ADD_ABS_LO12_NC 277
+#define R_AARCH64_LDST8_ABS_LO12_NC 278
+#define R_AARCH64_TSTBR14 279
+#define R_AARCH64_CONDBR19 280
+#define R_AARCH64_JUMP26 282
+#define R_AARCH64_CALL26 283
+#define R_AARCH64_LDST16_ABS_LO12_NC 284
+#define R_AARCH64_LDST32_ABS_LO12_NC 285
+#define R_AARCH64_LDST64_ABS_LO12_NC 286
+#define R_AARCH64_MOVW_PREL_G0 287
+#define R_AARCH64_MOVW_PREL_G0_NC 288
+#define R_AARCH64_MOVW_PREL_G1 289
+#define R_AARCH64_MOVW_PREL_G1_NC 290
+#define R_AARCH64_MOVW_PREL_G2 291
+#define R_AARCH64_MOVW_PREL_G2_NC 292
+#define R_AARCH64_MOVW_PREL_G3 293
+#define R_AARCH64_LDST128_ABS_LO12_NC 299
+#define R_AARCH64_MOVW_GOTOFF_G0 300
+#define R_AARCH64_MOVW_GOTOFF_G0_NC 301
+#define R_AARCH64_MOVW_GOTOFF_G1 302
+#define R_AARCH64_MOVW_GOTOFF_G1_NC 303
+#define R_AARCH64_MOVW_GOTOFF_G2 304
+#define R_AARCH64_MOVW_GOTOFF_G2_NC 305
+#define R_AARCH64_MOVW_GOTOFF_G3 306
+#define R_AARCH64_GOTREL64 307
+#define R_AARCH64_GOTREL32 308
+#define R_AARCH64_GOT_LD_PREL19 309
+#define R_AARCH64_LD64_GOTOFF_LO15 310
+#define R_AARCH64_ADR_GOT_PAGE 311
+#define R_AARCH64_LD64_GOT_LO12_NC 312
+#define R_AARCH64_LD64_GOTPAGE_LO15 313
+#define R_AARCH64_TLSGD_ADR_PREL21 512
+#define R_AARCH64_TLSGD_ADR_PAGE21 513
+#define R_AARCH64_TLSGD_ADD_LO12_NC 514
+#define R_AARCH64_TLSGD_MOVW_G1 515
+#define R_AARCH64_TLSGD_MOVW_G0_NC 516
+#define R_AARCH64_TLSLD_ADR_PREL21 517
+#define R_AARCH64_TLSLD_ADR_PAGE21 518
+#define R_AARCH64_TLSLD_ADD_LO12_NC 519
+#define R_AARCH64_TLSLD_MOVW_G1 520
+#define R_AARCH64_TLSLD_MOVW_G0_NC 521
+#define R_AARCH64_TLSLD_LD_PREL19 522
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G2 523
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G1 524
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G1_NC 525
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G0 526
+#define R_AARCH64_TLSLD_MOVW_DTPREL_G0_NC 527
+#define R_AARCH64_TLSLD_ADD_DTPREL_HI12 528
+#define R_AARCH64_TLSLD_ADD_DTPREL_LO12 529
+#define R_AARCH64_TLSLD_ADD_DTPREL_LO12_NC 530
+#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12 531
+#define R_AARCH64_TLSLD_LDST8_DTPREL_LO12_NC 532
+#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12 533
+#define R_AARCH64_TLSLD_LDST16_DTPREL_LO12_NC 534
+#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12 535
+#define R_AARCH64_TLSLD_LDST32_DTPREL_LO12_NC 536
+#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12 537
+#define R_AARCH64_TLSLD_LDST64_DTPREL_LO12_NC 538
+#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G1 539
+#define R_AARCH64_TLSIE_MOVW_GOTTPREL_G0_NC 540
+#define R_AARCH64_TLSIE_ADR_GOTTPREL_PAGE21 541
+#define R_AARCH64_TLSIE_LD64_GOTTPREL_LO12_NC 542
+#define R_AARCH64_TLSIE_LD_GOTTPREL_PREL19 543
+#define R_AARCH64_TLSLE_MOVW_TPREL_G2 544
+#define R_AARCH64_TLSLE_MOVW_TPREL_G1 545
+#define R_AARCH64_TLSLE_MOVW_TPREL_G1_NC 546
+#define R_AARCH64_TLSLE_MOVW_TPREL_G0 547
+#define R_AARCH64_TLSLE_MOVW_TPREL_G0_NC 548
+#define R_AARCH64_TLSLE_ADD_TPREL_HI12 549
+#define R_AARCH64_TLSLE_ADD_TPREL_LO12 550
+#define R_AARCH64_TLSLE_ADD_TPREL_LO12_NC 551
+#define R_AARCH64_TLSLE_LDST8_TPREL_LO12 552
+#define R_AARCH64_TLSLE_LDST8_TPREL_LO12_NC 553
+#define R_AARCH64_TLSLE_LDST16_TPREL_LO12 554
+#define R_AARCH64_TLSLE_LDST16_TPREL_LO12_NC 555
+#define R_AARCH64_TLSLE_LDST32_TPREL_LO12 556
+#define R_AARCH64_TLSLE_LDST32_TPREL_LO12_NC 557
+#define R_AARCH64_TLSLE_LDST64_TPREL_LO12 558
+#define R_AARCH64_TLSLE_LDST64_TPREL_LO12_NC 559
+#define R_AARCH64_TLSDESC_LD_PREL19 560
+#define R_AARCH64_TLSDESC_ADR_PREL21 561
+#define R_AARCH64_TLSDESC_ADR_PAGE21 562
+#define R_AARCH64_TLSDESC_LD64_LO12 563
+#define R_AARCH64_TLSDESC_ADD_LO12 564
+#define R_AARCH64_TLSDESC_OFF_G1 565
+#define R_AARCH64_TLSDESC_OFF_G0_NC 566
+#define R_AARCH64_TLSDESC_LDR 567
+#define R_AARCH64_TLSDESC_ADD 568
+#define R_AARCH64_TLSDESC_CALL 569
+#define R_AARCH64_TLSLE_LDST128_TPREL_LO12 570
+#define R_AARCH64_TLSLE_LDST128_TPREL_LO12_NC 571
+#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12 572
+#define R_AARCH64_TLSLD_LDST128_DTPREL_LO12_NC 573
+#define R_AARCH64_COPY 1024
+#define R_AARCH64_GLOB_DAT 1025
+#define R_AARCH64_JUMP_SLOT 1026
+#define R_AARCH64_RELATIVE 1027
+#define R_AARCH64_TLS_DTPMOD 1028
+#define R_AARCH64_TLS_DTPMOD64 1028
+#define R_AARCH64_TLS_DTPREL 1029
+#define R_AARCH64_TLS_DTPREL64 1029
+#define R_AARCH64_TLS_TPREL 1030
+#define R_AARCH64_TLS_TPREL64 1030
+#define R_AARCH64_TLSDESC 1031
+
+
+#define R_ARM_NONE 0
+#define R_ARM_PC24 1
+#define R_ARM_ABS32 2
+#define R_ARM_REL32 3
+#define R_ARM_PC13 4
+#define R_ARM_ABS16 5
+#define R_ARM_ABS12 6
+#define R_ARM_THM_ABS5 7
+#define R_ARM_ABS8 8
+#define R_ARM_SBREL32 9
+#define R_ARM_THM_PC22 10
+#define R_ARM_THM_PC8 11
+#define R_ARM_AMP_VCALL9 12
+#define R_ARM_TLS_DESC 13
+#define R_ARM_THM_SWI8 14
+#define R_ARM_XPC25 15
+#define R_ARM_THM_XPC22 16
+#define R_ARM_TLS_DTPMOD32 17
+#define R_ARM_TLS_DTPOFF32 18
+#define R_ARM_TLS_TPOFF32 19
+#define R_ARM_COPY 20
+#define R_ARM_GLOB_DAT 21
+#define R_ARM_JUMP_SLOT 22
+#define R_ARM_RELATIVE 23
+#define R_ARM_GOTOFF 24
+#define R_ARM_GOTPC 25
+#define R_ARM_GOT32 26
+#define R_ARM_PLT32 27
+#define R_ARM_CALL 28
+#define R_ARM_JUMP24 29
+#define R_ARM_THM_JUMP24 30
+#define R_ARM_BASE_ABS 31
+#define R_ARM_ALU_PCREL_7_0 32
+#define R_ARM_ALU_PCREL_15_8 33
+#define R_ARM_ALU_PCREL_23_15 34
+#define R_ARM_LDR_SBREL_11_0 35
+#define R_ARM_ALU_SBREL_19_12 36
+#define R_ARM_ALU_SBREL_27_20 37
+#define R_ARM_TARGET1 38
+#define R_ARM_SBREL31 39
+#define R_ARM_V4BX 40
+#define R_ARM_TARGET2 41
+#define R_ARM_PREL31 42
+#define R_ARM_MOVW_ABS_NC 43
+#define R_ARM_MOVT_ABS 44
+#define R_ARM_MOVW_PREL_NC 45
+#define R_ARM_MOVT_PREL 46
+#define R_ARM_THM_MOVW_ABS_NC 47
+#define R_ARM_THM_MOVT_ABS 48
+#define R_ARM_THM_MOVW_PREL_NC 49
+#define R_ARM_THM_MOVT_PREL 50
+#define R_ARM_THM_JUMP19 51
+#define R_ARM_THM_JUMP6 52
+#define R_ARM_THM_ALU_PREL_11_0 53
+#define R_ARM_THM_PC12 54
+#define R_ARM_ABS32_NOI 55
+#define R_ARM_REL32_NOI 56
+#define R_ARM_ALU_PC_G0_NC 57
+#define R_ARM_ALU_PC_G0 58
+#define R_ARM_ALU_PC_G1_NC 59
+#define R_ARM_ALU_PC_G1 60
+#define R_ARM_ALU_PC_G2 61
+#define R_ARM_LDR_PC_G1 62
+#define R_ARM_LDR_PC_G2 63
+#define R_ARM_LDRS_PC_G0 64
+#define R_ARM_LDRS_PC_G1 65
+#define R_ARM_LDRS_PC_G2 66
+#define R_ARM_LDC_PC_G0 67
+#define R_ARM_LDC_PC_G1 68
+#define R_ARM_LDC_PC_G2 69
+#define R_ARM_ALU_SB_G0_NC 70
+#define R_ARM_ALU_SB_G0 71
+#define R_ARM_ALU_SB_G1_NC 72
+#define R_ARM_ALU_SB_G1 73
+#define R_ARM_ALU_SB_G2 74
+#define R_ARM_LDR_SB_G0 75
+#define R_ARM_LDR_SB_G1 76
+#define R_ARM_LDR_SB_G2 77
+#define R_ARM_LDRS_SB_G0 78
+#define R_ARM_LDRS_SB_G1 79
+#define R_ARM_LDRS_SB_G2 80
+#define R_ARM_LDC_SB_G0 81
+#define R_ARM_LDC_SB_G1 82
+#define R_ARM_LDC_SB_G2 83
+#define R_ARM_MOVW_BREL_NC 84
+#define R_ARM_MOVT_BREL 85
+#define R_ARM_MOVW_BREL 86
+#define R_ARM_THM_MOVW_BREL_NC 87
+#define R_ARM_THM_MOVT_BREL 88
+#define R_ARM_THM_MOVW_BREL 89
+#define R_ARM_TLS_GOTDESC 90
+#define R_ARM_TLS_CALL 91
+#define R_ARM_TLS_DESCSEQ 92
+#define R_ARM_THM_TLS_CALL 93
+#define R_ARM_PLT32_ABS 94
+#define R_ARM_GOT_ABS 95
+#define R_ARM_GOT_PREL 96
+#define R_ARM_GOT_BREL12 97
+#define R_ARM_GOTOFF12 98
+#define R_ARM_GOTRELAX 99
+#define R_ARM_GNU_VTENTRY 100
+#define R_ARM_GNU_VTINHERIT 101
+#define R_ARM_THM_PC11 102
+#define R_ARM_THM_PC9 103
+#define R_ARM_TLS_GD32 104
+
+#define R_ARM_TLS_LDM32 105
+
+#define R_ARM_TLS_LDO32 106
+
+#define R_ARM_TLS_IE32 107
+
+#define R_ARM_TLS_LE32 108
+#define R_ARM_TLS_LDO12 109
+#define R_ARM_TLS_LE12 110
+#define R_ARM_TLS_IE12GP 111
+#define R_ARM_ME_TOO 128
+#define R_ARM_THM_TLS_DESCSEQ 129
+#define R_ARM_THM_TLS_DESCSEQ16 129
+#define R_ARM_THM_TLS_DESCSEQ32 130
+#define R_ARM_THM_GOT_BREL12 131
+#define R_ARM_IRELATIVE 160
+#define R_ARM_RXPC25 249
+#define R_ARM_RSBREL32 250
+#define R_ARM_THM_RPC22 251
+#define R_ARM_RREL32 252
+#define R_ARM_RABS22 253
+#define R_ARM_RPC24 254
+#define R_ARM_RBASE 255
+
+#define R_ARM_NUM 256
+
+
+
+
+#define EF_IA_64_MASKOS 0x0000000f
+#define EF_IA_64_ABI64 0x00000010
+#define EF_IA_64_ARCH 0xff000000
+
+
+#define PT_IA_64_ARCHEXT (PT_LOPROC + 0)
+#define PT_IA_64_UNWIND (PT_LOPROC + 1)
+#define PT_IA_64_HP_OPT_ANOT (PT_LOOS + 0x12)
+#define PT_IA_64_HP_HSL_ANOT (PT_LOOS + 0x13)
+#define PT_IA_64_HP_STACK (PT_LOOS + 0x14)
+
+
+#define PF_IA_64_NORECOV 0x80000000
+
+
+#define SHT_IA_64_EXT (SHT_LOPROC + 0)
+#define SHT_IA_64_UNWIND (SHT_LOPROC + 1)
+
+
+#define SHF_IA_64_SHORT 0x10000000
+#define SHF_IA_64_NORECOV 0x20000000
+
+
+#define DT_IA_64_PLT_RESERVE (DT_LOPROC + 0)
+#define DT_IA_64_NUM 1
+
+
+#define R_IA64_NONE 0x00
+#define R_IA64_IMM14 0x21
+#define R_IA64_IMM22 0x22
+#define R_IA64_IMM64 0x23
+#define R_IA64_DIR32MSB 0x24
+#define R_IA64_DIR32LSB 0x25
+#define R_IA64_DIR64MSB 0x26
+#define R_IA64_DIR64LSB 0x27
+#define R_IA64_GPREL22 0x2a
+#define R_IA64_GPREL64I 0x2b
+#define R_IA64_GPREL32MSB 0x2c
+#define R_IA64_GPREL32LSB 0x2d
+#define R_IA64_GPREL64MSB 0x2e
+#define R_IA64_GPREL64LSB 0x2f
+#define R_IA64_LTOFF22 0x32
+#define R_IA64_LTOFF64I 0x33
+#define R_IA64_PLTOFF22 0x3a
+#define R_IA64_PLTOFF64I 0x3b
+#define R_IA64_PLTOFF64MSB 0x3e
+#define R_IA64_PLTOFF64LSB 0x3f
+#define R_IA64_FPTR64I 0x43
+#define R_IA64_FPTR32MSB 0x44
+#define R_IA64_FPTR32LSB 0x45
+#define R_IA64_FPTR64MSB 0x46
+#define R_IA64_FPTR64LSB 0x47
+#define R_IA64_PCREL60B 0x48
+#define R_IA64_PCREL21B 0x49
+#define R_IA64_PCREL21M 0x4a
+#define R_IA64_PCREL21F 0x4b
+#define R_IA64_PCREL32MSB 0x4c
+#define R_IA64_PCREL32LSB 0x4d
+#define R_IA64_PCREL64MSB 0x4e
+#define R_IA64_PCREL64LSB 0x4f
+#define R_IA64_LTOFF_FPTR22 0x52
+#define R_IA64_LTOFF_FPTR64I 0x53
+#define R_IA64_LTOFF_FPTR32MSB 0x54
+#define R_IA64_LTOFF_FPTR32LSB 0x55
+#define R_IA64_LTOFF_FPTR64MSB 0x56
+#define R_IA64_LTOFF_FPTR64LSB 0x57
+#define R_IA64_SEGREL32MSB 0x5c
+#define R_IA64_SEGREL32LSB 0x5d
+#define R_IA64_SEGREL64MSB 0x5e
+#define R_IA64_SEGREL64LSB 0x5f
+#define R_IA64_SECREL32MSB 0x64
+#define R_IA64_SECREL32LSB 0x65
+#define R_IA64_SECREL64MSB 0x66
+#define R_IA64_SECREL64LSB 0x67
+#define R_IA64_REL32MSB 0x6c
+#define R_IA64_REL32LSB 0x6d
+#define R_IA64_REL64MSB 0x6e
+#define R_IA64_REL64LSB 0x6f
+#define R_IA64_LTV32MSB 0x74
+#define R_IA64_LTV32LSB 0x75
+#define R_IA64_LTV64MSB 0x76
+#define R_IA64_LTV64LSB 0x77
+#define R_IA64_PCREL21BI 0x79
+#define R_IA64_PCREL22 0x7a
+#define R_IA64_PCREL64I 0x7b
+#define R_IA64_IPLTMSB 0x80
+#define R_IA64_IPLTLSB 0x81
+#define R_IA64_COPY 0x84
+#define R_IA64_SUB 0x85
+#define R_IA64_LTOFF22X 0x86
+#define R_IA64_LDXMOV 0x87
+#define R_IA64_TPREL14 0x91
+#define R_IA64_TPREL22 0x92
+#define R_IA64_TPREL64I 0x93
+#define R_IA64_TPREL64MSB 0x96
+#define R_IA64_TPREL64LSB 0x97
+#define R_IA64_LTOFF_TPREL22 0x9a
+#define R_IA64_DTPMOD64MSB 0xa6
+#define R_IA64_DTPMOD64LSB 0xa7
+#define R_IA64_LTOFF_DTPMOD22 0xaa
+#define R_IA64_DTPREL14 0xb1
+#define R_IA64_DTPREL22 0xb2
+#define R_IA64_DTPREL64I 0xb3
+#define R_IA64_DTPREL32MSB 0xb4
+#define R_IA64_DTPREL32LSB 0xb5
+#define R_IA64_DTPREL64MSB 0xb6
+#define R_IA64_DTPREL64LSB 0xb7
+#define R_IA64_LTOFF_DTPREL22 0xba
+
+
+#define EF_SH_MACH_MASK 0x1f
+#define EF_SH_UNKNOWN 0x0
+#define EF_SH1 0x1
+#define EF_SH2 0x2
+#define EF_SH3 0x3
+#define EF_SH_DSP 0x4
+#define EF_SH3_DSP 0x5
+#define EF_SH4AL_DSP 0x6
+#define EF_SH3E 0x8
+#define EF_SH4 0x9
+#define EF_SH2E 0xb
+#define EF_SH4A 0xc
+#define EF_SH2A 0xd
+#define EF_SH4_NOFPU 0x10
+#define EF_SH4A_NOFPU 0x11
+#define EF_SH4_NOMMU_NOFPU 0x12
+#define EF_SH2A_NOFPU 0x13
+#define EF_SH3_NOMMU 0x14
+#define EF_SH2A_SH4_NOFPU 0x15
+#define EF_SH2A_SH3_NOFPU 0x16
+#define EF_SH2A_SH4 0x17
+#define EF_SH2A_SH3E 0x18
+
+#define R_SH_NONE 0
+#define R_SH_DIR32 1
+#define R_SH_REL32 2
+#define R_SH_DIR8WPN 3
+#define R_SH_IND12W 4
+#define R_SH_DIR8WPL 5
+#define R_SH_DIR8WPZ 6
+#define R_SH_DIR8BP 7
+#define R_SH_DIR8W 8
+#define R_SH_DIR8L 9
+#define R_SH_SWITCH16 25
+#define R_SH_SWITCH32 26
+#define R_SH_USES 27
+#define R_SH_COUNT 28
+#define R_SH_ALIGN 29
+#define R_SH_CODE 30
+#define R_SH_DATA 31
+#define R_SH_LABEL 32
+#define R_SH_SWITCH8 33
+#define R_SH_GNU_VTINHERIT 34
+#define R_SH_GNU_VTENTRY 35
+#define R_SH_TLS_GD_32 144
+#define R_SH_TLS_LD_32 145
+#define R_SH_TLS_LDO_32 146
+#define R_SH_TLS_IE_32 147
+#define R_SH_TLS_LE_32 148
+#define R_SH_TLS_DTPMOD32 149
+#define R_SH_TLS_DTPOFF32 150
+#define R_SH_TLS_TPOFF32 151
+#define R_SH_GOT32 160
+#define R_SH_PLT32 161
+#define R_SH_COPY 162
+#define R_SH_GLOB_DAT 163
+#define R_SH_JMP_SLOT 164
+#define R_SH_RELATIVE 165
+#define R_SH_GOTOFF 166
+#define R_SH_GOTPC 167
+#define R_SH_GOT20 201
+#define R_SH_GOTOFF20 202
+#define R_SH_GOTFUNCDESC 203
+#define R_SH_GOTFUNCDEST20 204
+#define R_SH_GOTOFFFUNCDESC 205
+#define R_SH_GOTOFFFUNCDEST20 206
+#define R_SH_FUNCDESC 207
+#define R_SH_FUNCDESC_VALUE 208
+
+#define R_SH_NUM 256
+
+
+
+#define R_390_NONE 0
+#define R_390_8 1
+#define R_390_12 2
+#define R_390_16 3
+#define R_390_32 4
+#define R_390_PC32 5
+#define R_390_GOT12 6
+#define R_390_GOT32 7
+#define R_390_PLT32 8
+#define R_390_COPY 9
+#define R_390_GLOB_DAT 10
+#define R_390_JMP_SLOT 11
+#define R_390_RELATIVE 12
+#define R_390_GOTOFF32 13
+#define R_390_GOTPC 14
+#define R_390_GOT16 15
+#define R_390_PC16 16
+#define R_390_PC16DBL 17
+#define R_390_PLT16DBL 18
+#define R_390_PC32DBL 19
+#define R_390_PLT32DBL 20
+#define R_390_GOTPCDBL 21
+#define R_390_64 22
+#define R_390_PC64 23
+#define R_390_GOT64 24
+#define R_390_PLT64 25
+#define R_390_GOTENT 26
+#define R_390_GOTOFF16 27
+#define R_390_GOTOFF64 28
+#define R_390_GOTPLT12 29
+#define R_390_GOTPLT16 30
+#define R_390_GOTPLT32 31
+#define R_390_GOTPLT64 32
+#define R_390_GOTPLTENT 33
+#define R_390_PLTOFF16 34
+#define R_390_PLTOFF32 35
+#define R_390_PLTOFF64 36
+#define R_390_TLS_LOAD 37
+#define R_390_TLS_GDCALL 38
+
+#define R_390_TLS_LDCALL 39
+
+#define R_390_TLS_GD32 40
+
+#define R_390_TLS_GD64 41
+
+#define R_390_TLS_GOTIE12 42
+
+#define R_390_TLS_GOTIE32 43
+
+#define R_390_TLS_GOTIE64 44
+
+#define R_390_TLS_LDM32 45
+
+#define R_390_TLS_LDM64 46
+
+#define R_390_TLS_IE32 47
+
+#define R_390_TLS_IE64 48
+
+#define R_390_TLS_IEENT 49
+
+#define R_390_TLS_LE32 50
+
+#define R_390_TLS_LE64 51
+
+#define R_390_TLS_LDO32 52
+
+#define R_390_TLS_LDO64 53
+
+#define R_390_TLS_DTPMOD 54
+#define R_390_TLS_DTPOFF 55
+#define R_390_TLS_TPOFF 56
+
+#define R_390_20 57
+#define R_390_GOT20 58
+#define R_390_GOTPLT20 59
+#define R_390_TLS_GOTIE20 60
+
+
+#define R_390_NUM 61
+
+
+
+#define R_CRIS_NONE 0
+#define R_CRIS_8 1
+#define R_CRIS_16 2
+#define R_CRIS_32 3
+#define R_CRIS_8_PCREL 4
+#define R_CRIS_16_PCREL 5
+#define R_CRIS_32_PCREL 6
+#define R_CRIS_GNU_VTINHERIT 7
+#define R_CRIS_GNU_VTENTRY 8
+#define R_CRIS_COPY 9
+#define R_CRIS_GLOB_DAT 10
+#define R_CRIS_JUMP_SLOT 11
+#define R_CRIS_RELATIVE 12
+#define R_CRIS_16_GOT 13
+#define R_CRIS_32_GOT 14
+#define R_CRIS_16_GOTPLT 15
+#define R_CRIS_32_GOTPLT 16
+#define R_CRIS_32_GOTREL 17
+#define R_CRIS_32_PLT_GOTREL 18
+#define R_CRIS_32_PLT_PCREL 19
+
+#define R_CRIS_NUM 20
+
+
+
+#define R_X86_64_NONE 0
+#define R_X86_64_64 1
+#define R_X86_64_PC32 2
+#define R_X86_64_GOT32 3
+#define R_X86_64_PLT32 4
+#define R_X86_64_COPY 5
+#define R_X86_64_GLOB_DAT 6
+#define R_X86_64_JUMP_SLOT 7
+#define R_X86_64_RELATIVE 8
+#define R_X86_64_GOTPCREL 9
+
+#define R_X86_64_32 10
+#define R_X86_64_32S 11
+#define R_X86_64_16 12
+#define R_X86_64_PC16 13
+#define R_X86_64_8 14
+#define R_X86_64_PC8 15
+#define R_X86_64_DTPMOD64 16
+#define R_X86_64_DTPOFF64 17
+#define R_X86_64_TPOFF64 18
+#define R_X86_64_TLSGD 19
+
+#define R_X86_64_TLSLD 20
+
+#define R_X86_64_DTPOFF32 21
+#define R_X86_64_GOTTPOFF 22
+
+#define R_X86_64_TPOFF32 23
+#define R_X86_64_PC64 24
+#define R_X86_64_GOTOFF64 25
+#define R_X86_64_GOTPC32 26
+#define R_X86_64_GOT64 27
+#define R_X86_64_GOTPCREL64 28
+#define R_X86_64_GOTPC64 29
+#define R_X86_64_GOTPLT64 30
+#define R_X86_64_PLTOFF64 31
+#define R_X86_64_SIZE32 32
+#define R_X86_64_SIZE64 33
+
+#define R_X86_64_GOTPC32_TLSDESC 34
+#define R_X86_64_TLSDESC_CALL 35
+
+#define R_X86_64_TLSDESC 36
+#define R_X86_64_IRELATIVE 37
+#define R_X86_64_RELATIVE64 38
+#define R_X86_64_GOTPCRELX 41
+#define R_X86_64_REX_GOTPCRELX 42
+#define R_X86_64_NUM 43
+
+
+
+#define R_MN10300_NONE 0
+#define R_MN10300_32 1
+#define R_MN10300_16 2
+#define R_MN10300_8 3
+#define R_MN10300_PCREL32 4
+#define R_MN10300_PCREL16 5
+#define R_MN10300_PCREL8 6
+#define R_MN10300_GNU_VTINHERIT 7
+#define R_MN10300_GNU_VTENTRY 8
+#define R_MN10300_24 9
+#define R_MN10300_GOTPC32 10
+#define R_MN10300_GOTPC16 11
+#define R_MN10300_GOTOFF32 12
+#define R_MN10300_GOTOFF24 13
+#define R_MN10300_GOTOFF16 14
+#define R_MN10300_PLT32 15
+#define R_MN10300_PLT16 16
+#define R_MN10300_GOT32 17
+#define R_MN10300_GOT24 18
+#define R_MN10300_GOT16 19
+#define R_MN10300_COPY 20
+#define R_MN10300_GLOB_DAT 21
+#define R_MN10300_JMP_SLOT 22
+#define R_MN10300_RELATIVE 23
+
+#define R_MN10300_NUM 24
+
+
+
+#define R_M32R_NONE 0
+#define R_M32R_16 1
+#define R_M32R_32 2
+#define R_M32R_24 3
+#define R_M32R_10_PCREL 4
+#define R_M32R_18_PCREL 5
+#define R_M32R_26_PCREL 6
+#define R_M32R_HI16_ULO 7
+#define R_M32R_HI16_SLO 8
+#define R_M32R_LO16 9
+#define R_M32R_SDA16 10
+#define R_M32R_GNU_VTINHERIT 11
+#define R_M32R_GNU_VTENTRY 12
+
+#define R_M32R_16_RELA 33
+#define R_M32R_32_RELA 34
+#define R_M32R_24_RELA 35
+#define R_M32R_10_PCREL_RELA 36
+#define R_M32R_18_PCREL_RELA 37
+#define R_M32R_26_PCREL_RELA 38
+#define R_M32R_HI16_ULO_RELA 39
+#define R_M32R_HI16_SLO_RELA 40
+#define R_M32R_LO16_RELA 41
+#define R_M32R_SDA16_RELA 42
+#define R_M32R_RELA_GNU_VTINHERIT 43
+#define R_M32R_RELA_GNU_VTENTRY 44
+#define R_M32R_REL32 45
+
+#define R_M32R_GOT24 48
+#define R_M32R_26_PLTREL 49
+#define R_M32R_COPY 50
+#define R_M32R_GLOB_DAT 51
+#define R_M32R_JMP_SLOT 52
+#define R_M32R_RELATIVE 53
+#define R_M32R_GOTOFF 54
+#define R_M32R_GOTPC24 55
+#define R_M32R_GOT16_HI_ULO 56
+
+#define R_M32R_GOT16_HI_SLO 57
+
+#define R_M32R_GOT16_LO 58
+#define R_M32R_GOTPC_HI_ULO 59
+
+#define R_M32R_GOTPC_HI_SLO 60
+
+#define R_M32R_GOTPC_LO 61
+
+#define R_M32R_GOTOFF_HI_ULO 62
+
+#define R_M32R_GOTOFF_HI_SLO 63
+
+#define R_M32R_GOTOFF_LO 64
+#define R_M32R_NUM 256
+
+#define R_MICROBLAZE_NONE 0
+#define R_MICROBLAZE_32 1
+#define R_MICROBLAZE_32_PCREL 2
+#define R_MICROBLAZE_64_PCREL 3
+#define R_MICROBLAZE_32_PCREL_LO 4
+#define R_MICROBLAZE_64 5
+#define R_MICROBLAZE_32_LO 6
+#define R_MICROBLAZE_SRO32 7
+#define R_MICROBLAZE_SRW32 8
+#define R_MICROBLAZE_64_NONE 9
+#define R_MICROBLAZE_32_SYM_OP_SYM 10
+#define R_MICROBLAZE_GNU_VTINHERIT 11
+#define R_MICROBLAZE_GNU_VTENTRY 12
+#define R_MICROBLAZE_GOTPC_64 13
+#define R_MICROBLAZE_GOT_64 14
+#define R_MICROBLAZE_PLT_64 15
+#define R_MICROBLAZE_REL 16
+#define R_MICROBLAZE_JUMP_SLOT 17
+#define R_MICROBLAZE_GLOB_DAT 18
+#define R_MICROBLAZE_GOTOFF_64 19
+#define R_MICROBLAZE_GOTOFF_32 20
+#define R_MICROBLAZE_COPY 21
+#define R_MICROBLAZE_TLS 22
+#define R_MICROBLAZE_TLSGD 23
+#define R_MICROBLAZE_TLSLD 24
+#define R_MICROBLAZE_TLSDTPMOD32 25
+#define R_MICROBLAZE_TLSDTPREL32 26
+#define R_MICROBLAZE_TLSDTPREL64 27
+#define R_MICROBLAZE_TLSGOTTPREL32 28
+#define R_MICROBLAZE_TLSTPREL32 29
+
+#define DT_NIOS2_GP 0x70000002
+
+#define R_NIOS2_NONE 0
+#define R_NIOS2_S16 1
+#define R_NIOS2_U16 2
+#define R_NIOS2_PCREL16 3
+#define R_NIOS2_CALL26 4
+#define R_NIOS2_IMM5 5
+#define R_NIOS2_CACHE_OPX 6
+#define R_NIOS2_IMM6 7
+#define R_NIOS2_IMM8 8
+#define R_NIOS2_HI16 9
+#define R_NIOS2_LO16 10
+#define R_NIOS2_HIADJ16 11
+#define R_NIOS2_BFD_RELOC_32 12
+#define R_NIOS2_BFD_RELOC_16 13
+#define R_NIOS2_BFD_RELOC_8 14
+#define R_NIOS2_GPREL 15
+#define R_NIOS2_GNU_VTINHERIT 16
+#define R_NIOS2_GNU_VTENTRY 17
+#define R_NIOS2_UJMP 18
+#define R_NIOS2_CJMP 19
+#define R_NIOS2_CALLR 20
+#define R_NIOS2_ALIGN 21
+#define R_NIOS2_GOT16 22
+#define R_NIOS2_CALL16 23
+#define R_NIOS2_GOTOFF_LO 24
+#define R_NIOS2_GOTOFF_HA 25
+#define R_NIOS2_PCREL_LO 26
+#define R_NIOS2_PCREL_HA 27
+#define R_NIOS2_TLS_GD16 28
+#define R_NIOS2_TLS_LDM16 29
+#define R_NIOS2_TLS_LDO16 30
+#define R_NIOS2_TLS_IE16 31
+#define R_NIOS2_TLS_LE16 32
+#define R_NIOS2_TLS_DTPMOD 33
+#define R_NIOS2_TLS_DTPREL 34
+#define R_NIOS2_TLS_TPREL 35
+#define R_NIOS2_COPY 36
+#define R_NIOS2_GLOB_DAT 37
+#define R_NIOS2_JUMP_SLOT 38
+#define R_NIOS2_RELATIVE 39
+#define R_NIOS2_GOTOFF 40
+#define R_NIOS2_CALL26_NOAT 41
+#define R_NIOS2_GOT_LO 42
+#define R_NIOS2_GOT_HA 43
+#define R_NIOS2_CALL_LO 44
+#define R_NIOS2_CALL_HA 45
+
+#define R_OR1K_NONE 0
+#define R_OR1K_32 1
+#define R_OR1K_16 2
+#define R_OR1K_8 3
+#define R_OR1K_LO_16_IN_INSN 4
+#define R_OR1K_HI_16_IN_INSN 5
+#define R_OR1K_INSN_REL_26 6
+#define R_OR1K_GNU_VTENTRY 7
+#define R_OR1K_GNU_VTINHERIT 8
+#define R_OR1K_32_PCREL 9
+#define R_OR1K_16_PCREL 10
+#define R_OR1K_8_PCREL 11
+#define R_OR1K_GOTPC_HI16 12
+#define R_OR1K_GOTPC_LO16 13
+#define R_OR1K_GOT16 14
+#define R_OR1K_PLT26 15
+#define R_OR1K_GOTOFF_HI16 16
+#define R_OR1K_GOTOFF_LO16 17
+#define R_OR1K_COPY 18
+#define R_OR1K_GLOB_DAT 19
+#define R_OR1K_JMP_SLOT 20
+#define R_OR1K_RELATIVE 21
+#define R_OR1K_TLS_GD_HI16 22
+#define R_OR1K_TLS_GD_LO16 23
+#define R_OR1K_TLS_LDM_HI16 24
+#define R_OR1K_TLS_LDM_LO16 25
+#define R_OR1K_TLS_LDO_HI16 26
+#define R_OR1K_TLS_LDO_LO16 27
+#define R_OR1K_TLS_IE_HI16 28
+#define R_OR1K_TLS_IE_LO16 29
+#define R_OR1K_TLS_LE_HI16 30
+#define R_OR1K_TLS_LE_LO16 31
+#define R_OR1K_TLS_TPOFF 32
+#define R_OR1K_TLS_DTPOFF 33
+#define R_OR1K_TLS_DTPMOD 34
+
+#define R_BPF_NONE 0
+#define R_BPF_MAP_FD 1
+
+#ifdef __cplusplus
+}
+#endif
+
+
+#endif
diff --git a/tools/gbafix/gbafix.c b/tools/gbafix/gbafix.c
index 81c8c04c0..9088cdc5f 100644
--- a/tools/gbafix/gbafix.c
+++ b/tools/gbafix/gbafix.c
@@ -1,45 +1,46 @@
/*
- "$Id: gbafix.c,v 1.2 2008-07-30 17:12:51 wntrmute Exp $"
+ "$Id: gbafix.c,v 1.2 2008-07-30 17:12:51 wntrmute Exp $"
- DevkitPro GBA ROM fix utility
+ DevkitPro GBA ROM fix utility
- This library is free software; you can redistribute it and/or
- modify it under the terms of the GNU Library General Public
- License as published by the Free Software Foundation; either
- version 2 of the License, or (at your option) any later version.
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
- This library is distributed in the hope that it will be useful,
- but WITHOUT ANY WARRANTY; without even the implied warranty of
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- Library General Public License for more details.
+ This library is distributed in the hope that it will be useful,
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ Library General Public License for more details.
- You should have received a copy of the GNU Library General Public
- License along with this library; if not, write to the Free Software
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
- USA.
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free Software
+ Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
+ USA.
- Please report all bugs and problems through the bug tracker at
- "http://sourceforge.net/tracker/?group_id=114505&atid=668551".
+ Please report all bugs and problems through the bug tracker at
+ "http://sourceforge.net/tracker/?group_id=114505&atid=668551".
- "$Header: /lvm/shared/ds/ds/cvs/devkitpro-cvsbackup/tools/gba/gbatools/gbafix.c,v 1.2 2008-07-30 17:12:51 wntrmute Exp $"
+ "$Header: /lvm/shared/ds/ds/cvs/devkitpro-cvsbackup/tools/gba/gbatools/gbafix.c,v 1.2 2008-07-30 17:12:51 wntrmute Exp $"
*/
//---------------------------------------------------------------------------------
// gbafix.c
//---------------------------------------------------------------------------------
/*
- Gameboy Advance ROM fixer (by Dark Fader / BlackThunder / WinterMute / Diegoisawesome)
- Validates header of GBA roms.
-
- History
- -------
- v1.06 - added output silencing, (Diegoisawesome)
- v1.05 - added debug offset argument, (Diegoisawesome)
- v1.04 - converted to plain C, (WinterMute)
- v1.03 - header.fixed, header.device_type
- v1.02 - redefined the options (rgbfix style), checksum=0
- v1.01 - fix in parameters
- v1.00 - logo, complement
+ Gameboy Advance ROM fixer (by Dark Fader / BlackThunder / WinterMute / Diegoisawesome)
+ Validates header of GBA roms.
+
+ History
+ -------
+ v1.07 - added support for ELF input, (PikalaxALT)
+ v1.06 - added output silencing, (Diegoisawesome)
+ v1.05 - added debug offset argument, (Diegoisawesome)
+ v1.04 - converted to plain C, (WinterMute)
+ v1.03 - header.fixed, header.device_type
+ v1.02 - redefined the options (rgbfix style), checksum=0
+ v1.01 - fix in parameters
+ v1.00 - logo, complement
*/
#pragma pack(1)
@@ -48,26 +49,27 @@
#include <stdlib.h>
#include <string.h>
#include <stdint.h>
+#include "elf.h"
-#define VER "1.06"
-#define ARGV argv[arg]
-#define VALUE (ARGV+2)
-#define NUMBER strtoul(VALUE, NULL, 0)
+#define VER "1.07"
+#define ARGV argv[arg]
+#define VALUE (ARGV+2)
+#define NUMBER strtoul(VALUE, NULL, 0)
typedef struct
{
- uint32_t start_code; // B instruction
- uint8_t logo[0xA0-0x04]; // logo data
- uint8_t title[0xC]; // game title name
- uint32_t game_code; //
- uint16_t maker_code; //
- uint8_t fixed; // 0x96
- uint8_t unit_code; // 0x00
- uint8_t device_type; // 0x00
- uint8_t unused[7]; //
- uint8_t game_version; // 0x00
- uint8_t complement; // 800000A0..800000BC
- uint16_t checksum; // 0x0000
+ uint32_t start_code; // B instruction
+ uint8_t logo[0xA0-0x04]; // logo data
+ uint8_t title[0xC]; // game title name
+ uint32_t game_code; //
+ uint16_t maker_code; //
+ uint8_t fixed; // 0x96
+ uint8_t unit_code; // 0x00
+ uint8_t device_type; // 0x00
+ uint8_t unused[7]; //
+ uint8_t game_version; // 0x00
+ uint8_t complement; // 800000A0..800000BC
+ uint16_t checksum; // 0x0000
} Header;
@@ -77,55 +79,55 @@ unsigned short checksum_without_header = 0;
const Header good_header =
{
- // start_code
- 0xEA00002E,
- // logo
- { 0x24,0xFF,0xAE,0x51,0x69,0x9A,0xA2,0x21,0x3D,0x84,0x82,0x0A,0x84,0xE4,0x09,0xAD,
- 0x11,0x24,0x8B,0x98,0xC0,0x81,0x7F,0x21,0xA3,0x52,0xBE,0x19,0x93,0x09,0xCE,0x20,
- 0x10,0x46,0x4A,0x4A,0xF8,0x27,0x31,0xEC,0x58,0xC7,0xE8,0x33,0x82,0xE3,0xCE,0xBF,
- 0x85,0xF4,0xDF,0x94,0xCE,0x4B,0x09,0xC1,0x94,0x56,0x8A,0xC0,0x13,0x72,0xA7,0xFC,
- 0x9F,0x84,0x4D,0x73,0xA3,0xCA,0x9A,0x61,0x58,0x97,0xA3,0x27,0xFC,0x03,0x98,0x76,
- 0x23,0x1D,0xC7,0x61,0x03,0x04,0xAE,0x56,0xBF,0x38,0x84,0x00,0x40,0xA7,0x0E,0xFD,
- 0xFF,0x52,0xFE,0x03,0x6F,0x95,0x30,0xF1,0x97,0xFB,0xC0,0x85,0x60,0xD6,0x80,0x25,
- 0xA9,0x63,0xBE,0x03,0x01,0x4E,0x38,0xE2,0xF9,0xA2,0x34,0xFF,0xBB,0x3E,0x03,0x44,
- 0x78,0x00,0x90,0xCB,0x88,0x11,0x3A,0x94,0x65,0xC0,0x7C,0x63,0x87,0xF0,0x3C,0xAF,
- 0xD6,0x25,0xE4,0x8B,0x38,0x0A,0xAC,0x72,0x21,0xD4,0xF8,0x07 } ,
- // title
- { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
- // game code
- 0x00000000,
- // maker code
- 0x3130,
- // fixed
- 0x96,
- // unit_code
- 0x00,
- // device type
- 0x00,
- // unused
- { 0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
- // game version
- 0x00,
- // complement
- 0x00,
- // checksum
- 0x0000
+ // start_code
+ 0xEA00002E,
+ // logo
+ { 0x24,0xFF,0xAE,0x51,0x69,0x9A,0xA2,0x21,0x3D,0x84,0x82,0x0A,0x84,0xE4,0x09,0xAD,
+ 0x11,0x24,0x8B,0x98,0xC0,0x81,0x7F,0x21,0xA3,0x52,0xBE,0x19,0x93,0x09,0xCE,0x20,
+ 0x10,0x46,0x4A,0x4A,0xF8,0x27,0x31,0xEC,0x58,0xC7,0xE8,0x33,0x82,0xE3,0xCE,0xBF,
+ 0x85,0xF4,0xDF,0x94,0xCE,0x4B,0x09,0xC1,0x94,0x56,0x8A,0xC0,0x13,0x72,0xA7,0xFC,
+ 0x9F,0x84,0x4D,0x73,0xA3,0xCA,0x9A,0x61,0x58,0x97,0xA3,0x27,0xFC,0x03,0x98,0x76,
+ 0x23,0x1D,0xC7,0x61,0x03,0x04,0xAE,0x56,0xBF,0x38,0x84,0x00,0x40,0xA7,0x0E,0xFD,
+ 0xFF,0x52,0xFE,0x03,0x6F,0x95,0x30,0xF1,0x97,0xFB,0xC0,0x85,0x60,0xD6,0x80,0x25,
+ 0xA9,0x63,0xBE,0x03,0x01,0x4E,0x38,0xE2,0xF9,0xA2,0x34,0xFF,0xBB,0x3E,0x03,0x44,
+ 0x78,0x00,0x90,0xCB,0x88,0x11,0x3A,0x94,0x65,0xC0,0x7C,0x63,0x87,0xF0,0x3C,0xAF,
+ 0xD6,0x25,0xE4,0x8B,0x38,0x0A,0xAC,0x72,0x21,0xD4,0xF8,0x07 } ,
+ // title
+ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
+ // game code
+ 0x00000000,
+ // maker code
+ 0x3130,
+ // fixed
+ 0x96,
+ // unit_code
+ 0x00,
+ // device type
+ 0x00,
+ // unused
+ { 0x00,0x00,0x00,0x00,0x00,0x00,0x00 },
+ // game version
+ 0x00,
+ // complement
+ 0x00,
+ // checksum
+ 0x0000
};
//---------------------------------------------------------------------------------
char HeaderComplement()
/*---------------------------------------------------------------------------------
- Calculate Header complement check
+ Calculate Header complement check
---------------------------------------------------------------------------------*/
{
- int n;
- char c = 0;
- char *p = (char *)&header + 0xA0;
- for (n=0; n<0xBD-0xA0; n++)
- {
- c += *p++;
- }
- return -(0x19+c);
+ int n;
+ char c = 0;
+ char *p = (char *)&header + 0xA0;
+ for (n=0; n<0xBD-0xA0; n++)
+ {
+ c += *p++;
+ }
+ return -(0x19+c);
}
@@ -133,157 +135,183 @@ char HeaderComplement()
int main(int argc, char *argv[])
//---------------------------------------------------------------------------------
{
- int arg;
- char *argfile = 0;
- FILE *infile;
- int silent = 0;
-
- int size,bit;
-
- // show syntax
- if (argc <= 1)
- {
- printf("GBA ROM fixer v"VER" by Dark Fader / BlackThunder / WinterMute / Diegoisawesome \n");
- printf("Syntax: gbafix <rom.gba> [-p] [-t[title]] [-c<game_code>] [-m<maker_code>] [-r<version>] [-d<debug>] [--silent]\n");
- printf("\n");
- printf("parameters:\n");
- printf(" -p Pad to next exact power of 2. No minimum size!\n");
- printf(" -t[<title>] Patch title. Stripped filename if none given.\n");
- printf(" -c<game_code> Patch game code (four characters)\n");
- printf(" -m<maker_code> Patch maker code (two characters)\n");
- printf(" -r<version> Patch game version (number)\n");
- printf(" -d<debug> Enable debugging handler and set debug entry point (0 or 1)\n");
- printf(" --silent Silence non-error output\n");
- return -1;
- }
-
- // get filename
- for (arg=1; arg<argc; arg++)
- {
- if (ARGV[0] != '-') { argfile=ARGV; }
- if (strncmp("--silent", &ARGV[0], 7) == 0) { silent = 1; }
- }
-
- // check filename
- if (!argfile)
- {
- fprintf(stderr, "Filename needed!\n");
- return -1;
- }
-
- // read file
- infile = fopen(argfile, "r+b");
- if (!infile) { fprintf(stderr, "Error opening input file!\n"); return -1; }
- fseek(infile, 0, SEEK_SET);
- fread(&header, sizeof(header), 1, infile);
-
- // fix some data
- memcpy(header.logo, good_header.logo, sizeof(header.logo));
- memcpy(&header.fixed, &good_header.fixed, sizeof(header.fixed));
- memcpy(&header.device_type, &good_header.device_type, sizeof(header.device_type));
-
- // parse command line
- for (arg=1; arg<argc; arg++)
- {
- if ((ARGV[0] == '-'))
- {
- switch (ARGV[1])
- {
- case 'p': // pad
- {
- fseek(infile, 0, SEEK_END);
- size = ftell(infile);
- for (bit=31; bit>=0; bit--) if (size & (1<<bit)) break;
- if (size != (1<<bit))
- {
- int todo = (1<<(bit+1)) - size;
- while (todo--) fputc(0xFF, infile);
- }
- fseek(infile, 0, SEEK_SET);
- break;
- }
-
- case 't': // title
- {
- char title[256];
- memset(title, 0, sizeof(title));
- if (VALUE[0])
- {
- strncpy(title, VALUE, sizeof(header.title));
- }
- else
- {
- // use filename
- char s[256], *begin=s, *t; strcpy(s, argfile);
- t = strrchr(s, '\\'); if (t) begin = t+1;
- t = strrchr(s, '/'); if (t) begin = t+1;
- t = strrchr(s, '.'); if (t) *t = 0;
- strncpy(title, begin, sizeof(header.title));
- if (!silent) printf("%s\n",begin);
- }
- memcpy(header.title, title, sizeof(header.title)); // copy
- break;
- }
-
- case 'c': // game code
- {
- //if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
- //header.game_code = NUMBER;
- header.game_code = VALUE[0] | VALUE[1]<<8 | VALUE[2]<<16 | VALUE[3]<<24;
- break;
- }
-
- case 'm': // maker code
- {
- //if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
- //header.maker_code = (unsigned short)NUMBER;
- header.maker_code = VALUE[0] | VALUE[1]<<8;
- break;
- }
-
- case 'v': // ignored, compatability with other gbafix
- {
- break;
- }
-
- case 'r': // version
- {
- if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
- header.game_version = (unsigned char)NUMBER;
- break;
- }
-
- case 'd': // debug
- {
- if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
- header.logo[0x9C-0x04] = 0xA5; // debug enable
- header.device_type = (unsigned char)((NUMBER & 1) << 7); // debug handler entry point
- break;
- }
- case '-': // long arguments
- {
- if (strncmp("silent", &ARGV[2], 6) == 0) { continue; }
- break;
- }
- default:
- {
- printf("Invalid option: %s\n", ARGV);
- }
- }
- }
- }
-
- // update complement check & total checksum
- header.complement = 0;
- header.checksum = 0; // must be 0
- header.complement = HeaderComplement();
- //header.checksum = checksum_without_header + HeaderChecksum();
-
- fseek(infile, 0, SEEK_SET);
- fwrite(&header, sizeof(header), 1, infile);
- fclose(infile);
-
- if (!silent) printf("ROM fixed!\n");
-
- return 0;
+ int arg;
+ char *argfile = 0;
+ FILE *infile;
+ int silent = 0;
+ int schedule_pad = 0;
+
+ int size,bit;
+
+ // show syntax
+ if (argc <= 1)
+ {
+ printf("GBA ROM fixer v"VER" by Dark Fader / BlackThunder / WinterMute / Diegoisawesome \n");
+ printf("Syntax: gbafix <rom.gba> [-p] [-t[title]] [-c<game_code>] [-m<maker_code>] [-r<version>] [-d<debug>] [--silent]\n");
+ printf("\n");
+ printf("parameters:\n");
+ printf(" -p Pad to next exact power of 2. No minimum size!\n");
+ printf(" -t[<title>] Patch title. Stripped filename if none given.\n");
+ printf(" -c<game_code> Patch game code (four characters)\n");
+ printf(" -m<maker_code> Patch maker code (two characters)\n");
+ printf(" -r<version> Patch game version (number)\n");
+ printf(" -d<debug> Enable debugging handler and set debug entry point (0 or 1)\n");
+ printf(" --silent Silence non-error output\n");
+ return -1;
+ }
+
+ // get filename
+ for (arg=1; arg<argc; arg++)
+ {
+ if (ARGV[0] != '-') { argfile=ARGV; }
+ if (strncmp("--silent", &ARGV[0], 7) == 0) { silent = 1; }
+ }
+
+ // check filename
+ if (!argfile)
+ {
+ fprintf(stderr, "Filename needed!\n");
+ return -1;
+ }
+
+ uint32_t sh_offset = 0;
+
+ // read file
+ infile = fopen(argfile, "r+b");
+ if (!infile) { fprintf(stderr, "Error opening input file!\n"); return -1; }
+ fseek(infile, sh_offset, SEEK_SET);
+ fread(&header, sizeof(header), 1, infile);
+
+ // elf check
+ Elf32_Shdr secHeader;
+ if (memcmp(&header, ELFMAG, 4) == 0) {
+ Elf32_Ehdr *elfHeader = (Elf32_Ehdr *)&header;
+ fseek(infile, elfHeader->e_shoff, SEEK_SET);
+ int i;
+ for (i = 0; i < elfHeader->e_shnum; i++) {
+ fread(&secHeader, sizeof(Elf32_Shdr), 1, infile);
+ if (secHeader.sh_type == SHT_PROGBITS && secHeader.sh_addr == elfHeader->e_entry) break;
+ }
+ if (i == elfHeader->e_shnum) { fprintf(stderr, "Error finding entry point!\n"); return 1; }
+ fseek(infile, secHeader.sh_offset, SEEK_SET);
+ sh_offset = secHeader.sh_offset;
+ fread(&header, sizeof(header), 1, infile);
+ }
+
+ // fix some data
+ memcpy(header.logo, good_header.logo, sizeof(header.logo));
+ memcpy(&header.fixed, &good_header.fixed, sizeof(header.fixed));
+ memcpy(&header.device_type, &good_header.device_type, sizeof(header.device_type));
+
+ // parse command line
+ for (arg=1; arg<argc; arg++)
+ {
+ if ((ARGV[0] == '-'))
+ {
+ switch (ARGV[1])
+ {
+ case 'p': // pad
+ {
+ schedule_pad = 1;
+ break;
+ }
+
+ case 't': // title
+ {
+ char title[256];
+ memset(title, 0, sizeof(title));
+ if (VALUE[0])
+ {
+ strncpy(title, VALUE, sizeof(header.title));
+ }
+ else
+ {
+ // use filename
+ char s[256], *begin=s, *t; strcpy(s, argfile);
+ t = strrchr(s, '\\'); if (t) begin = t+1;
+ t = strrchr(s, '/'); if (t) begin = t+1;
+ t = strrchr(s, '.'); if (t) *t = 0;
+ strncpy(title, begin, sizeof(header.title));
+ if (!silent) printf("%s\n",begin);
+ }
+ memcpy(header.title, title, sizeof(header.title)); // copy
+ break;
+ }
+
+ case 'c': // game code
+ {
+ //if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
+ //header.game_code = NUMBER;
+ header.game_code = VALUE[0] | VALUE[1]<<8 | VALUE[2]<<16 | VALUE[3]<<24;
+ break;
+ }
+
+ case 'm': // maker code
+ {
+ //if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
+ //header.maker_code = (unsigned short)NUMBER;
+ header.maker_code = VALUE[0] | VALUE[1]<<8;
+ break;
+ }
+
+ case 'v': // ignored, compatability with other gbafix
+ {
+ break;
+ }
+
+ case 'r': // version
+ {
+ if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
+ header.game_version = (unsigned char)NUMBER;
+ break;
+ }
+
+ case 'd': // debug
+ {
+ if (!VALUE[0]) { fprintf(stderr, "Need value for %s\n", ARGV); break; }
+ header.logo[0x9C-0x04] = 0xA5; // debug enable
+ header.device_type = (unsigned char)((NUMBER & 1) << 7); // debug handler entry point
+ break;
+ }
+ case '-': // long arguments
+ {
+ if (strncmp("silent", &ARGV[2], 6) == 0) { continue; }
+ break;
+ }
+ default:
+ {
+ printf("Invalid option: %s\n", ARGV);
+ }
+ }
+ }
+ }
+
+ // update complement check & total checksum
+ header.complement = 0;
+ header.checksum = 0; // must be 0
+ header.complement = HeaderComplement();
+ //header.checksum = checksum_without_header + HeaderChecksum();
+
+ if (schedule_pad) {
+ if (sh_offset != 0) {
+ fprintf(stderr, "Warning: Cannot safely pad an ELF\n");
+ } else {
+ fseek(infile, 0, SEEK_END);
+ size = ftell(infile);
+ for (bit=31; bit>=0; bit--) if (size & (1<<bit)) break;
+ if (size != (1<<bit))
+ {
+ int todo = (1<<(bit+1)) - size;
+ while (todo--) fputc(0xFF, infile);
+ }
+ }
+ }
+
+ fseek(infile, sh_offset, SEEK_SET);
+ fwrite(&header, sizeof(header), 1, infile);
+ fclose(infile);
+
+ if (!silent) printf("ROM fixed!\n");
+
+ return 0;
}