diff options
author | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-07-15 00:04:06 +0800 |
---|---|---|
committer | jiangzhengwenjz <jiangzhengwenjzw@qq.com> | 2019-07-15 00:04:06 +0800 |
commit | 96fa1a23edaf12082034b4ef79244e6ce3dd3128 (patch) | |
tree | 969c8a73b9f5b3ecdb0f7fc13d551f73d4d70e63 | |
parent | 277726fd5e8c6da021206deeecb163f40073ff3c (diff) | |
parent | 53b950019aca8896d70c4d5e4f9e2a1d5143e489 (diff) |
Merge branch 'master' into pokemon
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 @@ -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 Binary files differindex 110503bd7..f70a84768 100644 --- a/baserom.ips +++ b/baserom.ips 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 Binary files differnew file mode 100644 index 000000000..ac6e113f8 --- /dev/null +++ b/graphics/diploma/unk_84147C0.png diff --git a/graphics/diploma/unk_84154E8.bin b/graphics/diploma/unk_84154E8.bin Binary files differnew file mode 100644 index 000000000..38c32e5b2 --- /dev/null +++ b/graphics/diploma/unk_84154E8.bin 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) { @@ -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; } |