summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--asm/script_menu.s1330
-rw-r--r--data/data_835B488.s20
-rw-r--r--data/maps/PewterCity_Museum_1F/scripts.inc8
-rw-r--r--data/specials.inc4
-rw-r--r--include/event_scripts.h3
-rw-r--r--include/field_effect.h2
-rw-r--r--include/quest_log.h2
-rw-r--r--include/script_menu.h2
-rw-r--r--include/strings.h10
-rw-r--r--ld_script.txt1
-rw-r--r--src/berry_powder.c2
-rw-r--r--src/field_specials.c4
-rw-r--r--src/quest_log.c674
-rw-r--r--src/scrcmd.c4
-rw-r--r--src/script_menu.c428
15 files changed, 800 insertions, 1694 deletions
diff --git a/asm/script_menu.s b/asm/script_menu.s
deleted file mode 100644
index bf7819eb1..000000000
--- a/asm/script_menu.s
+++ /dev/null
@@ -1,1330 +0,0 @@
- .include "asm/macros.inc"
- .include "constants/constants.inc"
-
- .syntax unified
-
- .text
-
- thumb_func_start ScriptMenu_MultichoiceGrid
-ScriptMenu_MultichoiceGrid: @ 809CEC8
- push {r4-r7,lr}
- mov r7, r10
- mov r6, r9
- mov r5, r8
- push {r5-r7}
- sub sp, 0x18
- ldr r4, [sp, 0x38]
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp, 0x10]
- lsls r1, 24
- lsrs r1, 24
- str r1, [sp, 0x14]
- lsls r2, 24
- lsrs r5, r2, 24
- lsls r3, 24
- lsrs r3, 24
- mov r10, r3
- lsls r4, 24
- lsrs r7, r4, 24
- ldr r0, _0809CF04 @ =sub_809CFDC
- mov r9, r0
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809CF08
- movs r0, 0
- b _0809CFBA
- .align 2, 0
-_0809CF04: .4byte sub_809CFDC
-_0809CF08:
- ldr r1, _0809CFCC @ =gSpecialVar_Result
- movs r0, 0xFF
- strh r0, [r1]
- ldr r0, _0809CFD0 @ =sub_809D6D4
- bl sub_81119D4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809CFB8
- ldr r1, _0809CFD4 @ =gUnknown_83E04B0
- lsls r0, r5, 3
- adds r0, r1
- ldr r1, [r0]
- mov r8, r1
- ldrb r4, [r0, 0x4]
- mov r0, r8
- adds r1, r4, 0
- bl sub_809C974
- adds r5, r0, 0
- adds r5, 0x1
- lsls r5, 24
- lsrs r5, 24
- adds r0, r4, 0
- adds r1, r7, 0
- bl __udivsi3
- adds r6, r0, 0
- lsls r6, 24
- lsrs r6, 24
- mov r0, r9
- movs r1, 0x50
- bl CreateTask
- lsls r0, 24
- lsrs r0, 24
- ldr r1, _0809CFD8 @ =gTasks
- lsls r4, r0, 2
- adds r4, r0
- lsls r4, 3
- adds r4, r1
- movs r0, 0
- mov r9, r0
- mov r1, r10
- strh r1, [r4, 0x10]
- adds r2, r5, 0
- muls r2, r7
- lsls r2, 24
- lsrs r2, 24
- lsls r3, r6, 25
- lsrs r3, 24
- ldr r0, [sp, 0x10]
- ldr r1, [sp, 0x14]
- bl CreateWindowFromRect
- lsls r0, 24
- lsrs r0, 24
- strh r0, [r4, 0x14]
- movs r1, 0
- bl SetStdWindowBorderStyle
- ldrb r0, [r4, 0x14]
- lsls r5, 27
- lsrs r5, 24
- str r7, [sp]
- str r6, [sp, 0x4]
- mov r1, r8
- str r1, [sp, 0x8]
- movs r1, 0x1
- adds r2, r5, 0
- movs r3, 0x10
- bl MultichoiceGrid_PrintItems
- ldrb r0, [r4, 0x14]
- str r5, [sp]
- str r7, [sp, 0x4]
- str r6, [sp, 0x8]
- mov r1, r9
- str r1, [sp, 0xC]
- movs r1, 0x1
- movs r2, 0
- movs r3, 0x1
- bl MultichoiceGrid_InitCursor
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
-_0809CFB8:
- movs r0, 0x1
-_0809CFBA:
- add sp, 0x18
- pop {r3-r5}
- mov r8, r3
- mov r9, r4
- mov r10, r5
- pop {r4-r7}
- pop {r1}
- bx r1
- .align 2, 0
-_0809CFCC: .4byte gSpecialVar_Result
-_0809CFD0: .4byte sub_809D6D4
-_0809CFD4: .4byte gUnknown_83E04B0
-_0809CFD8: .4byte gTasks
- thumb_func_end ScriptMenu_MultichoiceGrid
-
- thumb_func_start sub_809CFDC
-sub_809CFDC: @ 809CFDC
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r4, r0, 24
- lsls r0, r4, 2
- adds r0, r4
- lsls r0, 3
- ldr r1, _0809D018 @ =gTasks+0x8
- adds r5, r0, r1
- bl Menu_ProcessInputGridLayout
- lsls r0, 24
- asrs r1, r0, 24
- movs r0, 0x2
- negs r0, r0
- cmp r1, r0
- beq _0809D034
- adds r0, 0x1
- cmp r1, r0
- bne _0809D020
- movs r1, 0x8
- ldrsh r0, [r5, r1]
- cmp r0, 0
- bne _0809D034
- movs r0, 0x5
- bl PlaySE
- ldr r1, _0809D01C @ =gSpecialVar_Result
- movs r0, 0x7F
- strh r0, [r1]
- b _0809D024
- .align 2, 0
-_0809D018: .4byte gTasks+0x8
-_0809D01C: .4byte gSpecialVar_Result
-_0809D020:
- ldr r0, _0809D03C @ =gSpecialVar_Result
- strh r1, [r0]
-_0809D024:
- ldrb r0, [r5, 0xC]
- bl sub_809D6B0
- adds r0, r4, 0
- bl DestroyTask
- bl EnableBothScriptContexts
-_0809D034:
- pop {r4,r5}
- pop {r0}
- bx r0
- .align 2, 0
-_0809D03C: .4byte gSpecialVar_Result
- thumb_func_end sub_809CFDC
-
- thumb_func_start ScrSpecial_CreatePCMenu
-ScrSpecial_CreatePCMenu: @ 809D040
- push {lr}
- ldr r0, _0809D060 @ =sub_809CC98
- bl FuncIsActiveTask
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809D068
- ldr r1, _0809D064 @ =gSpecialVar_Result
- movs r0, 0xFF
- strh r0, [r1]
- bl sub_809D070
- movs r0, 0x1
- b _0809D06A
- .align 2, 0
-_0809D060: .4byte sub_809CC98
-_0809D064: .4byte gSpecialVar_Result
-_0809D068:
- movs r0, 0
-_0809D06A:
- pop {r1}
- bx r1
- thumb_func_end ScrSpecial_CreatePCMenu
-
- thumb_func_start sub_809D070
-sub_809D070: @ 809D070
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r7, r0, 24
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- ldr r0, _0809D11C @ =gUnknown_8417BB6
- bl sub_809C954
- lsls r0, 16
- lsrs r0, 16
- cmp r0, 0xA
- bgt _0809D0A0
- cmp r0, 0x9
- bge _0809D0AE
-_0809D0A0:
- ldr r0, _0809D120 @ =0x00000829
- bl FlagGet
- lsls r0, 24
- movs r4, 0xD
- cmp r0, 0
- beq _0809D0B0
-_0809D0AE:
- movs r4, 0xE
-_0809D0B0:
- ldr r0, _0809D124 @ =0x0000082c
- bl FlagGet
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0
- beq _0809D134
- movs r0, 0x5
- mov r9, r0
- movs r0, 0
- movs r1, 0
- adds r2, r4, 0
- movs r3, 0xA
- bl CreateWindowFromRect
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r6, 0
- movs r1, 0
- bl SetStdWindowBorderStyle
- ldr r2, _0809D128 @ =gUnknown_8417BD3
- movs r0, 0x22
- str r0, [sp]
- movs r5, 0xFF
- str r5, [sp, 0x4]
- movs r4, 0
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x2
- adds r3, r7, 0
- bl AddTextPrinterParameterized
- ldr r2, _0809D12C @ =gUnknown_8417BBE
- movs r0, 0x32
- str r0, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x2
- adds r3, r7, 0
- bl AddTextPrinterParameterized
- ldr r2, _0809D130 @ =gUnknown_8417BCB
- movs r0, 0x42
- str r0, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x2
- adds r3, r7, 0
- bl AddTextPrinterParameterized
- b _0809D1A8
- .align 2, 0
-_0809D11C: .4byte gUnknown_8417BB6
-_0809D120: .4byte 0x00000829
-_0809D124: .4byte 0x0000082c
-_0809D128: .4byte gUnknown_8417BD3
-_0809D12C: .4byte gUnknown_8417BBE
-_0809D130: .4byte gUnknown_8417BCB
-_0809D134:
- ldr r1, _0809D1D0 @ =0x00000829
- mov r8, r1
- mov r0, r8
- bl FlagGet
- lsls r0, 24
- movs r1, 0x3
- mov r9, r1
- cmp r0, 0
- beq _0809D14C
- movs r0, 0x4
- mov r9, r0
-_0809D14C:
- mov r1, r9
- lsls r3, r1, 1
- movs r0, 0
- movs r1, 0
- adds r2, r4, 0
- bl CreateWindowFromRect
- lsls r0, 24
- lsrs r6, r0, 24
- adds r0, r6, 0
- movs r1, 0
- bl SetStdWindowBorderStyle
- mov r0, r8
- bl FlagGet
- lsls r0, 24
- cmp r0, 0
- beq _0809D188
- ldr r2, _0809D1D4 @ =gUnknown_8417BD3
- movs r0, 0x22
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x2
- adds r3, r7, 0
- bl AddTextPrinterParameterized
-_0809D188:
- ldr r2, _0809D1D8 @ =gUnknown_8417BCB
- mov r0, r9
- subs r0, 0x1
- lsls r0, 4
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- str r5, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x2
- adds r3, r7, 0
- bl AddTextPrinterParameterized
-_0809D1A8:
- ldr r0, _0809D1DC @ =0x00000834
- bl FlagGet
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0
- beq _0809D1E4
- ldr r2, _0809D1E0 @ =gUnknown_8417BAC
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x2
- adds r3, r7, 0
- bl AddTextPrinterParameterized
- b _0809D1FA
- .align 2, 0
-_0809D1D0: .4byte 0x00000829
-_0809D1D4: .4byte gUnknown_8417BD3
-_0809D1D8: .4byte gUnknown_8417BCB
-_0809D1DC: .4byte 0x00000834
-_0809D1E0: .4byte gUnknown_8417BAC
-_0809D1E4:
- ldr r2, _0809D248 @ =gUnknown_8417B9F
- movs r0, 0x2
- str r0, [sp]
- movs r0, 0xFF
- str r0, [sp, 0x4]
- str r1, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x2
- adds r3, r7, 0
- bl AddTextPrinterParameterized
-_0809D1FA:
- ldr r4, _0809D24C @ =gStringVar4
- ldr r1, _0809D250 @ =gUnknown_8417BB6
- adds r0, r4, 0
- bl StringExpandPlaceholders
- adds r0, r6, 0
- adds r1, r4, 0
- adds r2, r7, 0
- movs r3, 0x12
- bl Menu_PrintFormatIntlPlayerName
- movs r0, 0x10
- str r0, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- movs r0, 0
- str r0, [sp, 0x8]
- adds r0, r6, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl Menu_InitCursor
- movs r0, 0
- mov r1, r9
- adds r2, r6, 0
- movs r3, 0xFF
- bl sub_809CC18
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809D248: .4byte gUnknown_8417B9F
-_0809D24C: .4byte gStringVar4
-_0809D250: .4byte gUnknown_8417BB6
- thumb_func_end sub_809D070
-
- thumb_func_start ScriptMenu_DisplayPCStartupPrompt
-ScriptMenu_DisplayPCStartupPrompt: @ 809D254
- push {lr}
- sub sp, 0x10
- movs r0, 0
- movs r1, 0x1
- bl sub_80F7768
- ldr r2, _0809D284 @ =gUnknown_81A508A
- movs r0, 0
- str r0, [sp]
- movs r0, 0x2
- str r0, [sp, 0x4]
- movs r0, 0x1
- str r0, [sp, 0x8]
- movs r0, 0x3
- str r0, [sp, 0xC]
- movs r0, 0
- movs r1, 0x2
- movs r3, 0
- bl AddTextPrinterParameterized2
- add sp, 0x10
- pop {r0}
- bx r0
- .align 2, 0
-_0809D284: .4byte gUnknown_81A508A
- thumb_func_end ScriptMenu_DisplayPCStartupPrompt
-
- thumb_func_start sub_809D288
-sub_809D288: @ 809D288
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0809D2AC @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0809D2E8
- cmp r0, 0x1
- bgt _0809D2B0
- cmp r0, 0
- beq _0809D2CE
- b _0809D2E8
- .align 2, 0
-_0809D2AC: .4byte gTasks
-_0809D2B0:
- cmp r0, 0x2
- beq _0809D2BA
- cmp r0, 0x3
- beq _0809D2DC
- b _0809D2E8
-_0809D2BA:
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809D2D8 @ =gSprites
- adds r0, r1
- ldrb r1, [r4, 0xC]
- bl sub_8083A5C
-_0809D2CE:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0809D2E8
- .align 2, 0
-_0809D2D8: .4byte gSprites
-_0809D2DC:
- ldrb r0, [r4, 0x12]
- bl sub_809D6B0
- adds r0, r5, 0
- bl DestroyTask
-_0809D2E8:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_809D288
-
- thumb_func_start ScriptMenu_ShowPokemonPic
-ScriptMenu_ShowPokemonPic: @ 809D2F0
- push {r4-r7,lr}
- mov r7, r8
- push {r7}
- lsls r0, 16
- lsrs r0, 16
- mov r8, r0
- lsls r1, 24
- lsrs r7, r1, 24
- lsls r2, 24
- lsrs r6, r2, 24
- ldr r0, _0809D318 @ =sub_809D6D4
- bl sub_81119D4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809D31C
- movs r0, 0x1
- b _0809D3C2
- .align 2, 0
-_0809D318: .4byte sub_809D6D4
-_0809D31C:
- ldr r4, _0809D3B0 @ =sub_809D288
- adds r0, r4, 0
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0809D3C0
- lsls r1, r7, 19
- movs r0, 0xA0
- lsls r0, 14
- adds r1, r0
- asrs r1, 16
- lsls r2, r6, 19
- adds r2, r0
- asrs r2, 16
- mov r0, r8
- movs r3, 0
- bl sub_8083970
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- adds r0, r4, 0
- movs r1, 0x50
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r7, 0
- adds r1, r6, 0
- movs r2, 0x8
- movs r3, 0x8
- bl CreateWindowFromRect
- ldr r1, _0809D3B4 @ =gTasks
- lsls r3, r4, 2
- adds r3, r4
- lsls r3, 3
- adds r3, r1
- lsls r0, 24
- lsrs r0, 24
- movs r1, 0
- strh r0, [r3, 0x12]
- strh r1, [r3, 0x8]
- mov r0, r8
- strh r0, [r3, 0xA]
- strh r5, [r3, 0xC]
- ldr r4, _0809D3B8 @ =gSprites
- lsls r1, r5, 4
- adds r1, r5
- lsls r1, 2
- adds r0, r4, 0
- adds r0, 0x1C
- adds r0, r1, r0
- ldr r2, _0809D3BC @ =SpriteCallbackDummy
- str r2, [r0]
- adds r1, r4
- ldrb r2, [r1, 0x5]
- movs r0, 0xD
- negs r0, r0
- ands r0, r2
- strb r0, [r1, 0x5]
- ldrb r0, [r3, 0x12]
- movs r1, 0x1
- bl SetStdWindowBorderStyle
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
- movs r0, 0x1
- b _0809D3C2
- .align 2, 0
-_0809D3B0: .4byte sub_809D288
-_0809D3B4: .4byte gTasks
-_0809D3B8: .4byte gSprites
-_0809D3BC: .4byte SpriteCallbackDummy
-_0809D3C0:
- movs r0, 0
-_0809D3C2:
- pop {r3}
- mov r8, r3
- pop {r4-r7}
- pop {r1}
- bx r1
- thumb_func_end ScriptMenu_ShowPokemonPic
-
- thumb_func_start ScriptMenu_GetPicboxWaitFunc
-ScriptMenu_GetPicboxWaitFunc: @ 809D3CC
- push {lr}
- ldr r0, _0809D3F0 @ =sub_809D288
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _0809D3FC
- ldr r0, _0809D3F4 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- ldr r0, _0809D3F8 @ =sub_809D404
- b _0809D3FE
- .align 2, 0
-_0809D3F0: .4byte sub_809D288
-_0809D3F4: .4byte gTasks
-_0809D3F8: .4byte sub_809D404
-_0809D3FC:
- movs r0, 0
-_0809D3FE:
- pop {r1}
- bx r1
- thumb_func_end ScriptMenu_GetPicboxWaitFunc
-
- thumb_func_start sub_809D404
-sub_809D404: @ 809D404
- push {lr}
- ldr r0, _0809D418 @ =sub_809D288
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- beq _0809D41C
- movs r0, 0
- b _0809D41E
- .align 2, 0
-_0809D418: .4byte sub_809D288
-_0809D41C:
- movs r0, 0x1
-_0809D41E:
- pop {r1}
- bx r1
- thumb_func_end sub_809D404
-
- thumb_func_start sub_809D424
-sub_809D424: @ 809D424
- push {r4,r5,lr}
- ldr r0, _0809D450 @ =sub_809D288
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r5, r0, 24
- cmp r5, 0xFF
- beq _0809D48C
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0809D454 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0
- blt _0809D48C
- cmp r0, 0x2
- ble _0809D458
- cmp r0, 0x3
- beq _0809D480
- b _0809D48C
- .align 2, 0
-_0809D450: .4byte sub_809D288
-_0809D454: .4byte gTasks
-_0809D458:
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809D47C @ =gSprites
- adds r0, r1
- ldrb r1, [r4, 0xC]
- bl sub_8083A5C
- ldrb r0, [r4, 0x12]
- bl sub_809D6B0
- adds r0, r5, 0
- bl DestroyTask
- b _0809D48C
- .align 2, 0
-_0809D47C: .4byte gSprites
-_0809D480:
- ldrb r0, [r4, 0x12]
- bl sub_809D6B0
- adds r0, r5, 0
- bl DestroyTask
-_0809D48C:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_809D424
-
- thumb_func_start sub_809D494
-sub_809D494: @ 809D494
- push {r4,r5,lr}
- lsls r0, 24
- lsrs r5, r0, 24
- lsls r0, r5, 2
- adds r0, r5
- lsls r0, 3
- ldr r1, _0809D4B8 @ =gTasks
- adds r4, r0, r1
- movs r1, 0x8
- ldrsh r0, [r4, r1]
- cmp r0, 0x1
- beq _0809D4FC
- cmp r0, 0x1
- bgt _0809D4BC
- cmp r0, 0
- beq _0809D4DE
- b _0809D4FC
- .align 2, 0
-_0809D4B8: .4byte gTasks
-_0809D4BC:
- cmp r0, 0x2
- beq _0809D4C6
- cmp r0, 0x3
- beq _0809D4F0
- b _0809D4FC
-_0809D4C6:
- movs r0, 0xC
- ldrsh r1, [r4, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809D4E8 @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r0, _0809D4EC @ =0x00001b58
- bl FreeSpriteTilesByTag
-_0809D4DE:
- ldrh r0, [r4, 0x8]
- adds r0, 0x1
- strh r0, [r4, 0x8]
- b _0809D4FC
- .align 2, 0
-_0809D4E8: .4byte gSprites
-_0809D4EC: .4byte 0x00001b58
-_0809D4F0:
- ldrb r0, [r4, 0x12]
- bl sub_809D6B0
- adds r0, r5, 0
- bl DestroyTask
-_0809D4FC:
- pop {r4,r5}
- pop {r0}
- bx r0
- thumb_func_end sub_809D494
-
- thumb_func_start sub_809D504
-sub_809D504: @ 809D504
- push {r4-r6,lr}
- mov r6, r8
- push {r6}
- ldr r0, _0809D544 @ =sub_809D6D4
- bl sub_81119D4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- beq _0809D5F2
- ldr r0, _0809D548 @ =sub_809D494
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0xFF
- bne _0809D55C
- ldr r0, _0809D54C @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x8D
- bne _0809D558
- ldr r0, _0809D550 @ =gUnknown_83E17C0
- bl LoadSpriteSheets
- ldr r0, _0809D554 @ =gUnknown_83E17A0
- movs r1, 0xE8
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
- b _0809D572
- .align 2, 0
-_0809D544: .4byte sub_809D6D4
-_0809D548: .4byte sub_809D494
-_0809D54C: .4byte gSpecialVar_0x8004
-_0809D550: .4byte gUnknown_83E17C0
-_0809D554: .4byte gUnknown_83E17A0
-_0809D558:
- cmp r0, 0x8E
- beq _0809D560
-_0809D55C:
- movs r0, 0
- b _0809D5F4
-_0809D560:
- ldr r0, _0809D600 @ =gUnknown_83E17D0
- bl LoadSpriteSheets
- ldr r0, _0809D604 @ =gUnknown_83E0F80
- movs r1, 0xE8
- lsls r1, 1
- movs r2, 0x20
- bl LoadPalette
-_0809D572:
- ldr r0, _0809D608 @ =gUnknown_83E0768
- ldr r1, _0809D60C @ =gSpecialVar_0x8005
- mov r8, r1
- ldrh r1, [r1]
- lsls r1, 19
- movs r2, 0xA0
- lsls r2, 14
- adds r1, r2
- asrs r1, 16
- ldr r6, _0809D610 @ =gSpecialVar_0x8006
- ldrh r2, [r6]
- lsls r2, 19
- movs r3, 0xA0
- lsls r3, 14
- adds r2, r3
- asrs r2, 16
- movs r3, 0
- bl CreateSprite
- adds r5, r0, 0
- lsls r5, 24
- lsrs r5, 24
- ldr r1, _0809D614 @ =gSprites
- lsls r0, r5, 4
- adds r0, r5
- lsls r0, 2
- adds r0, r1
- ldrb r2, [r0, 0x5]
- movs r1, 0xF
- ands r1, r2
- movs r2, 0xD0
- orrs r1, r2
- strb r1, [r0, 0x5]
- ldr r0, _0809D618 @ =sub_809D494
- movs r1, 0x50
- bl CreateTask
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- mov r1, r8
- ldrb r0, [r1]
- ldrb r1, [r6]
- movs r2, 0x8
- movs r3, 0x8
- bl CreateWindowFromRect
- ldr r2, _0809D61C @ =gTasks
- lsls r1, r4, 2
- adds r1, r4
- lsls r1, 3
- adds r1, r2
- lsls r0, 24
- lsrs r0, 24
- movs r2, 0
- strh r0, [r1, 0x12]
- strh r2, [r1, 0x8]
- strh r5, [r1, 0xC]
- movs r1, 0x1
- bl SetStdWindowBorderStyle
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
-_0809D5F2:
- movs r0, 0x1
-_0809D5F4:
- pop {r3}
- mov r8, r3
- pop {r4-r6}
- pop {r1}
- bx r1
- .align 2, 0
-_0809D600: .4byte gUnknown_83E17D0
-_0809D604: .4byte gUnknown_83E0F80
-_0809D608: .4byte gUnknown_83E0768
-_0809D60C: .4byte gSpecialVar_0x8005
-_0809D610: .4byte gSpecialVar_0x8006
-_0809D614: .4byte gSprites
-_0809D618: .4byte sub_809D494
-_0809D61C: .4byte gTasks
- thumb_func_end sub_809D504
-
- thumb_func_start sub_809D620
-sub_809D620: @ 809D620
- push {lr}
- ldr r0, _0809D644 @ =sub_809D494
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r2, r0, 24
- cmp r2, 0xFF
- beq _0809D64C
- ldr r0, _0809D648 @ =gTasks
- lsls r1, r2, 2
- adds r1, r2
- lsls r1, 3
- adds r1, r0
- ldrh r0, [r1, 0x8]
- adds r0, 0x1
- strh r0, [r1, 0x8]
- movs r0, 0x1
- b _0809D64E
- .align 2, 0
-_0809D644: .4byte sub_809D494
-_0809D648: .4byte gTasks
-_0809D64C:
- movs r0, 0
-_0809D64E:
- pop {r1}
- bx r1
- thumb_func_end sub_809D620
-
- thumb_func_start CreateWindowFromRect
-CreateWindowFromRect: @ 809D654
- push {r4,r5,lr}
- sub sp, 0x20
- adds r4, r0, 0
- adds r5, r1, 0
- lsls r4, 24
- lsls r5, 24
- lsls r2, 24
- lsrs r2, 24
- lsls r3, 24
- lsrs r3, 24
- movs r0, 0x80
- lsls r0, 17
- adds r4, r0
- lsrs r4, 24
- adds r5, r0
- lsrs r5, 24
- str r2, [sp]
- str r3, [sp, 0x4]
- movs r0, 0xF
- str r0, [sp, 0x8]
- movs r0, 0x38
- str r0, [sp, 0xC]
- add r0, sp, 0x10
- movs r1, 0
- adds r2, r4, 0
- adds r3, r5, 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
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl PutWindowTilemap
- adds r0, r4, 0
- add sp, 0x20
- pop {r4,r5}
- pop {r1}
- bx r1
- thumb_func_end CreateWindowFromRect
-
- thumb_func_start sub_809D6B0
-sub_809D6B0: @ 809D6B0
- push {r4,lr}
- adds r4, r0, 0
- lsls r4, 24
- lsrs r4, 24
- adds r0, r4, 0
- bl ClearWindowTilemap
- adds r0, r4, 0
- movs r1, 0x1
- bl ClearStdWindowAndFrameToTransparent
- adds r0, r4, 0
- bl RemoveWindow
- pop {r4}
- pop {r0}
- bx r0
- thumb_func_end sub_809D6B0
-
- thumb_func_start sub_809D6D4
-sub_809D6D4: @ 809D6D4
- push {lr}
- ldr r0, _0809D74C @ =EventScript_1A7AE0
- bl ScriptContext1_SetupScript
- ldr r0, _0809D750 @ =sub_809D288
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xFF
- beq _0809D710
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _0809D754 @ =gTasks+0x8
- adds r2, r0, r1
- movs r1, 0
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bgt _0809D710
- movs r0, 0x4
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809D758 @ =gSprites
- adds r0, r1
- ldrb r1, [r2, 0x4]
- bl sub_8083A5C
-_0809D710:
- ldr r0, _0809D75C @ =sub_809D494
- bl FindTaskIdByFunc
- lsls r0, 24
- lsrs r1, r0, 24
- cmp r1, 0xFF
- beq _0809D748
- lsls r0, r1, 2
- adds r0, r1
- lsls r0, 3
- ldr r1, _0809D754 @ =gTasks+0x8
- adds r2, r0, r1
- movs r1, 0
- ldrsh r0, [r2, r1]
- cmp r0, 0x1
- bgt _0809D748
- movs r0, 0x4
- ldrsh r1, [r2, r0]
- lsls r0, r1, 4
- adds r0, r1
- lsls r0, 2
- ldr r1, _0809D758 @ =gSprites
- adds r0, r1
- bl DestroySprite
- ldr r0, _0809D760 @ =0x00001b58
- bl FreeSpriteTilesByTag
-_0809D748:
- pop {r0}
- bx r0
- .align 2, 0
-_0809D74C: .4byte EventScript_1A7AE0
-_0809D750: .4byte sub_809D288
-_0809D754: .4byte gTasks+0x8
-_0809D758: .4byte gSprites
-_0809D75C: .4byte sub_809D494
-_0809D760: .4byte 0x00001b58
- thumb_func_end sub_809D6D4
-
- thumb_func_start sub_809D764
-sub_809D764: @ 809D764
- push {r4-r7,lr}
- mov r7, r9
- mov r6, r8
- push {r6,r7}
- sub sp, 0xC
- ldr r1, _0809D7A0 @ =gSpecialVar_Result
- movs r0, 0xFF
- strh r0, [r1]
- ldr r0, _0809D7A4 @ =sub_809D6D4
- bl sub_81119D4
- lsls r0, 24
- lsrs r0, 24
- cmp r0, 0x1
- bne _0809D784
- b _0809D8A8
-_0809D784:
- ldr r0, _0809D7A8 @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- cmp r0, 0x1
- bne _0809D7B0
- ldr r0, _0809D7AC @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- movs r4, 0x4
- cmp r0, 0x4
- bhi _0809D798
- movs r4, 0x5
-_0809D798:
- movs r0, 0x5
- mov r9, r0
- movs r5, 0x2
- b _0809D7B8
- .align 2, 0
-_0809D7A0: .4byte gSpecialVar_Result
-_0809D7A4: .4byte sub_809D6D4
-_0809D7A8: .4byte gSpecialVar_0x8005
-_0809D7AC: .4byte gSpecialVar_0x8004
-_0809D7B0:
- movs r4, 0
- movs r0, 0x6
- mov r9, r0
- movs r5, 0
-_0809D7B8:
- movs r0, 0x2
- movs r1, 0
- bl GetMenuCursorDimensionByFont
- lsls r0, 24
- lsrs r0, 24
- mov r8, r0
- movs r0, 0x2
- movs r1, 0x1
- bl GetFontAttribute
- mov r0, r9
- lsls r3, r0, 1
- movs r0, 0x11
- adds r1, r5, 0
- movs r2, 0xB
- bl CreateWindowFromRect
- lsls r0, 24
- lsrs r7, r0, 24
- adds r0, r7, 0
- movs r1, 0
- bl SetStdWindowBorderStyle
- movs r6, 0
- mov r5, r9
- subs r5, 0x2
- cmp r6, r5
- bge _0809D844
-_0809D7F2:
- ldr r0, _0809D820 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r4, r0
- beq _0809D828
- ldr r1, _0809D824 @ =gUnknown_83E17E0
- lsls r0, r4, 2
- adds r0, r1
- ldr r2, [r0]
- lsls r0, r6, 4
- adds r0, 0x2
- 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, r7, 0
- movs r1, 0x2
- mov r3, r8
- bl AddTextPrinterParameterized
- b _0809D82E
- .align 2, 0
-_0809D820: .4byte gSpecialVar_0x8004
-_0809D824: .4byte gUnknown_83E17E0
-_0809D828:
- subs r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
-_0809D82E:
- adds r0, r4, 0x1
- lsls r0, 24
- lsrs r4, r0, 24
- cmp r4, 0x8
- bne _0809D83A
- movs r4, 0
-_0809D83A:
- adds r0, r6, 0x1
- lsls r0, 24
- lsrs r6, r0, 24
- cmp r6, r5
- blt _0809D7F2
-_0809D844:
- ldr r2, _0809D8B8 @ =gUnknown_8417DED
- lsls r0, r6, 4
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- movs r5, 0xFF
- str r5, [sp, 0x4]
- movs r4, 0
- str r4, [sp, 0x8]
- adds r0, r7, 0
- movs r1, 0x2
- mov r3, r8
- bl AddTextPrinterParameterized
- adds r0, r6, 0x1
- lsls r0, 24
- ldr r2, _0809D8BC @ =gOtherText_Exit
- lsrs r0, 20
- adds r0, 0x2
- lsls r0, 24
- lsrs r0, 24
- str r0, [sp]
- str r5, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r7, 0
- movs r1, 0x2
- mov r3, r8
- bl AddTextPrinterParameterized
- movs r0, 0x10
- str r0, [sp]
- mov r0, r9
- str r0, [sp, 0x4]
- str r4, [sp, 0x8]
- adds r0, r7, 0
- movs r1, 0x2
- movs r2, 0
- movs r3, 0x2
- bl Menu_InitCursor
- movs r0, 0
- mov r1, r9
- adds r2, r7, 0
- movs r3, 0xFF
- bl sub_809CC18
- movs r0, 0
- bl ScheduleBgCopyTilemapToVram
-_0809D8A8:
- add sp, 0xC
- pop {r3,r4}
- mov r8, r3
- mov r9, r4
- pop {r4-r7}
- pop {r0}
- bx r0
- .align 2, 0
-_0809D8B8: .4byte gUnknown_8417DED
-_0809D8BC: .4byte gOtherText_Exit
- thumb_func_end sub_809D764
-
- thumb_func_start sub_809D8C0
-sub_809D8C0: @ 809D8C0
- push {lr}
- ldr r3, _0809D8EC @ =gSpecialVar_Result
- ldrh r2, [r3]
- adds r1, r2, 0
- cmp r1, 0x7F
- beq _0809D930
- ldr r0, _0809D8F0 @ =gSpecialVar_0x8005
- ldrh r0, [r0]
- cmp r0, 0x1
- bne _0809D924
- cmp r1, 0x3
- beq _0809D928
- cmp r1, 0x4
- beq _0809D930
- cmp r1, 0
- bne _0809D8F8
- ldr r0, _0809D8F4 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x4
- bls _0809D904
- movs r0, 0x4
- b _0809D94E
- .align 2, 0
-_0809D8EC: .4byte gSpecialVar_Result
-_0809D8F0: .4byte gSpecialVar_0x8005
-_0809D8F4: .4byte gSpecialVar_0x8004
-_0809D8F8:
- cmp r1, 0x1
- bne _0809D90C
- ldr r0, _0809D908 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x5
- bls _0809D918
-_0809D904:
- movs r0, 0x5
- b _0809D94E
- .align 2, 0
-_0809D908: .4byte gSpecialVar_0x8004
-_0809D90C:
- cmp r1, 0x2
- bne _0809D94C
- ldr r0, _0809D91C @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r0, 0x6
- bls _0809D920
-_0809D918:
- movs r0, 0x6
- b _0809D94E
- .align 2, 0
-_0809D91C: .4byte gSpecialVar_0x8004
-_0809D920:
- movs r0, 0x7
- b _0809D94E
-_0809D924:
- cmp r1, 0x4
- bne _0809D92C
-_0809D928:
- movs r0, 0xFE
- b _0809D94E
-_0809D92C:
- cmp r1, 0x5
- bne _0809D934
-_0809D930:
- movs r0, 0x7F
- b _0809D94E
-_0809D934:
- ldr r0, _0809D944 @ =gSpecialVar_0x8004
- ldrh r0, [r0]
- cmp r1, r0
- bcc _0809D948
- adds r0, r2, 0x1
- lsls r0, 16
- lsrs r0, 16
- b _0809D94E
- .align 2, 0
-_0809D944: .4byte gSpecialVar_0x8004
-_0809D948:
- ldrh r0, [r3]
- b _0809D94E
-_0809D94C:
- movs r0, 0
-_0809D94E:
- pop {r1}
- bx r1
- thumb_func_end sub_809D8C0
-
- .align 2, 0 @ Don't pad with nop.
diff --git a/data/data_835B488.s b/data/data_835B488.s
index e49b310a6..a909cfbff 100644
--- a/data/data_835B488.s
+++ b/data/data_835B488.s
@@ -1033,19 +1033,25 @@ gUnknown_83E0738:: @ 83E0738
gUnknown_83E0748:: @ 83E0748
.incbin "baserom.gba", 0x3E0748, 0x20
-gUnknown_83E0768:: @ 83E0768
- .incbin "baserom.gba", 0x3E0768, 0x818
+sMuseumFossilSprTemplate:: @ 83E0768
+ .incbin "baserom.gba", 0x3E0768, 0x18
-gUnknown_83E0F80:: @ 83E0F80
- .incbin "baserom.gba", 0x3E0F80, 0x820
+gUnknown_83E7080::
+ .incbin "baserom.gba", 0x3E0780, 0x800
-gUnknown_83E17A0:: @ 83E17A0
+sMuseumAerodactylSprPalette:: @ 83E0F80
+ .incbin "baserom.gba", 0x3E0F80, 0x20
+
+gUnknown_83E0FA0::
+ .incbin "baserom.gba", 0x3E0FA0, 0x800
+
+sMuseumKabutopsSprPalette:: @ 83E17A0
.incbin "baserom.gba", 0x3E17A0, 0x20
-gUnknown_83E17C0:: @ 83E17C0
+sMuseumKabutopsSprSheets:: @ 83E17C0
.incbin "baserom.gba", 0x3E17C0, 0x10
-gUnknown_83E17D0:: @ 83E17D0
+sMuseumAerodactylSprSheets:: @ 83E17D0
.incbin "baserom.gba", 0x3E17D0, 0x10
gUnknown_83E17E0:: @ 83E17E0
diff --git a/data/maps/PewterCity_Museum_1F/scripts.inc b/data/maps/PewterCity_Museum_1F/scripts.inc
index 8a3bdd640..8d4f9dc6d 100644
--- a/data/maps/PewterCity_Museum_1F/scripts.inc
+++ b/data/maps/PewterCity_Museum_1F/scripts.inc
@@ -190,9 +190,9 @@ PewterCity_Museum_1F_EventScript_16A512:: @ 816A512
setvar VAR_0x8004, SPECIES_AERODACTYL
setvar VAR_0x8005, 10
setvar VAR_0x8006, 3
- special sub_809D504
+ special Special_OpenMuseumFossilPic
msgbox gUnknown_8190945
- special sub_809D620
+ special Special_CloseMuseumFossilPic
releaseall
end
@@ -201,8 +201,8 @@ PewterCity_Museum_1F_EventScript_16A532:: @ 816A532
setvar VAR_0x8004, SPECIES_KABUTOPS
setvar VAR_0x8005, 10
setvar VAR_0x8006, 3
- special sub_809D504
+ special Special_OpenMuseumFossilPic
msgbox gUnknown_8190975
- special sub_809D620
+ special Special_CloseMuseumFossilPic
releaseall
end
diff --git a/data/specials.inc b/data/specials.inc
index 96d997597..ac15812e3 100644
--- a/data/specials.inc
+++ b/data/specials.inc
@@ -403,8 +403,8 @@ gSpecials:: @ 815FD60
def_special sub_8112364
def_special Special_GetMENewsJisanItemAndState
def_special get_unknown_box_id
- def_special sub_809D504
- def_special sub_809D620
+ def_special Special_OpenMuseumFossilPic
+ def_special Special_CloseMuseumFossilPic
def_special sub_812781C
def_special sub_8127888
def_special sub_80803FC
diff --git a/include/event_scripts.h b/include/event_scripts.h
index 99b453c85..28058af81 100644
--- a/include/event_scripts.h
+++ b/include/event_scripts.h
@@ -1168,4 +1168,7 @@ extern const u8 gText_SavingDontTurnOffThePower[];
extern const u8 gText_PlayerSavedTheGame[];
extern const u8 gText_DifferentGameFile[];
+// script_menu
+extern const u8 EventScript_1A7AE0[];
+
#endif //GUARD_EVENT_SCRIPTS_H
diff --git a/include/field_effect.h b/include/field_effect.h
index 70398313b..4afc5cace 100644
--- a/include/field_effect.h
+++ b/include/field_effect.h
@@ -21,5 +21,7 @@ void sub_8084784(u8 a0, u8 a1);
void sub_8084F2C(u8 a0);
void sub_80853CC(u8 a0);
void sub_8083598(u8 a0);
+void sub_8083A5C(struct Sprite * sprite, u8 spriteId);
+u8 sub_8083970(u16 species, s16 x, s16 y, bool8 unused);
#endif //GUARD_FIELD_EFFECTS_H
diff --git a/include/quest_log.h b/include/quest_log.h
index f5fd820b0..b7dcec871 100644
--- a/include/quest_log.h
+++ b/include/quest_log.h
@@ -25,7 +25,7 @@ void sub_8113550(u16, const u16 *);
void sub_811539C(void);
void sub_8115748(u16);
u8 sub_8112CAC(void);
-bool8 sub_81119D4(void (*func)(void));
+bool8 QuestLog_ScheduleRoutineIfNotInPlaybackMode(void (*func)(void));
void sub_8111F38(u16, u16);
void sub_8111134(void);
void DestroyHelpMessageWindow(u8 a0);
diff --git a/include/script_menu.h b/include/script_menu.h
index d3d04c65d..95eb30d74 100644
--- a/include/script_menu.h
+++ b/include/script_menu.h
@@ -10,7 +10,7 @@ bool8 ScriptMenu_MultichoiceWithDefault(u8 left, u8 top, u8 var3, u8 var4, u8 va
bool8 ScriptMenu_YesNo(u8 var1, u8 var2);
bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount);
bool8 ScriptMenu_ShowPokemonPic(u16 var1, u8 var2, u8 var3);
-bool32 ScrSpecial_CreatePCMenu(void);
+bool8 ScrSpecial_CreatePCMenu(void);
void ScriptMenu_DisplayPCStartupPrompt(void);
bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void);
diff --git a/include/strings.h b/include/strings.h
index ee7536d9b..121a577a2 100644
--- a/include/strings.h
+++ b/include/strings.h
@@ -521,4 +521,14 @@ extern const u8 gUnknown_8418142[];
extern const u8 gUnknown_8418152[];
extern const u8 gUnknown_8418163[];
+// script_menu
+extern const u8 gUnknown_8417B9F[];
+extern const u8 gUnknown_8417BAC[];
+extern const u8 gUnknown_8417BB6[];
+extern const u8 gUnknown_8417BBE[];
+extern const u8 gUnknown_8417BCB[];
+extern const u8 gUnknown_8417BD3[];
+extern const u8 gUnknown_8417DED[];
+extern const u8 gUnknown_81A508A[];
+
#endif //GUARD_STRINGS_H
diff --git a/ld_script.txt b/ld_script.txt
index 584d283a0..5c3c5ccb7 100644
--- a/ld_script.txt
+++ b/ld_script.txt
@@ -142,7 +142,6 @@ SECTIONS {
asm/shop.o(.text);
src/berry.o(.text);
src/script_menu.o(.text);
- asm/script_menu.o(.text);
asm/naming_screen.o(.text);
src/money.o(.text);
asm/script_pokemon_util_80A0058.o(.text);
diff --git a/src/berry_powder.c b/src/berry_powder.c
index 992e82522..6adf4a4f9 100644
--- a/src/berry_powder.c
+++ b/src/berry_powder.c
@@ -111,7 +111,7 @@ void sub_815F094(void)
{
struct WindowTemplate template;
- if (sub_81119D4(sub_809D6D4) != TRUE)
+ if (QuestLog_ScheduleRoutineIfNotInPlaybackMode(sub_809D6D4) != TRUE)
{
template = SetWindowTemplateFields(0, 1, 1, 8, 3, 15, 32);
gUnknown_203F464 = AddWindow(&template);
diff --git a/src/field_specials.c b/src/field_specials.c
index 867df4b94..d701a9145 100644
--- a/src/field_specials.c
+++ b/src/field_specials.c
@@ -1064,7 +1064,7 @@ void Special_DrawElevatorCurrentFloorWindow(void)
{
const u8 *floorname;
u32 strwidth;
- if (sub_81119D4(sub_809D6D4) != TRUE)
+ if (QuestLog_ScheduleRoutineIfNotInPlaybackMode(sub_809D6D4) != TRUE)
{
sElevatorCurrentFloorWindowId = AddWindow(&sElevatorCurrentFloorWindowTemplate);
TextWindow_SetStdFrame0_WithPal(sElevatorCurrentFloorWindowId, 0x21D, 0xD0);
@@ -1137,7 +1137,7 @@ void Special_ListMenu(void)
{
u8 taskId;
struct Task * task;
- if (sub_81119D4(sub_809D6D4) != TRUE)
+ if (QuestLog_ScheduleRoutineIfNotInPlaybackMode(sub_809D6D4) != TRUE)
{
taskId = CreateTask(Task_CreateScriptListMenu, 8);
task = &gTasks[taskId];
diff --git a/src/quest_log.c b/src/quest_log.c
index ffced87ee..b5e333688 100644
--- a/src/quest_log.c
+++ b/src/quest_log.c
@@ -813,13 +813,13 @@ static bool8 sub_8110E68(struct UnkStruct_203AE98 * a0)
return FALSE;
switch (a0[i].unk_6)
{
- case 0:
- case 1:
- gUnknown_203AE08 = sub_8113D48(gUnknown_203AE08, &a0[i]);
- break;
- default:
- gUnknown_203AE08 = sub_8113CC8(gUnknown_203AE08, &a0[i]);
- break;
+ case 0:
+ case 1:
+ gUnknown_203AE08 = sub_8113D48(gUnknown_203AE08, &a0[i]);
+ break;
+ default:
+ gUnknown_203AE08 = sub_8113CC8(gUnknown_203AE08, &a0[i]);
+ break;
}
if (gUnknown_203AE08 == NULL)
{
@@ -1176,29 +1176,29 @@ static void sub_811175C(u8 a0, struct UnkStruct_203AE98 * a1)
{
switch (r4[0] & 0xFFF)
{
- case 0:
- r4 = sub_8113D08(r4, &a1[r6]);
- r6++;
- break;
- case 1:
- case 2:
- r4 = sub_8113D94(r4, &a1[r6]);
- r6++;
- break;
- case 39:
- r4 = sub_8113C20(r4, &a1[r6]);
- r6++;
- break;
- case 41:
- r4 = sub_8113C8C(r4, &a1[r6]);
- r6++;
- break;
- default:
- r4 = sub_8113A78(r4, &gUnknown_203AE0C[r9]);
- if (r9 == 0)
- sub_8113ABC(gUnknown_203AE0C[0]);
- r9++;
- break;
+ case 0:
+ r4 = sub_8113D08(r4, &a1[r6]);
+ r6++;
+ break;
+ case 1:
+ case 2:
+ r4 = sub_8113D94(r4, &a1[r6]);
+ r6++;
+ break;
+ case 39:
+ r4 = sub_8113C20(r4, &a1[r6]);
+ r6++;
+ break;
+ case 41:
+ r4 = sub_8113C8C(r4, &a1[r6]);
+ r6++;
+ break;
+ default:
+ r4 = sub_8113A78(r4, &gUnknown_203AE0C[r9]);
+ if (r9 == 0)
+ sub_8113ABC(gUnknown_203AE0C[0]);
+ r9++;
+ break;
}
if (r4 == NULL)
break;
@@ -1246,7 +1246,7 @@ void sub_81119C8(void)
sub_8111914();
}
-bool8 sub_81119D4(void (*a0)(void))
+bool8 QuestLog_ScheduleRoutineIfNotInPlaybackMode(void (*a0)(void))
{
u8 taskId;
@@ -1260,7 +1260,7 @@ bool8 sub_81119D4(void (*a0)(void))
taskId = CreateTask(sub_8111A34, 80);
gTasks[taskId].data[0] = 0;
gTasks[taskId].data[1] = 0;
- SetWordTaskArg(taskId, 14, (u32)a0);
+ SetWordTaskArg(taskId, 14, (uintptr_t)a0);
return TRUE;
}
return FALSE;
@@ -1273,25 +1273,25 @@ static void sub_8111A34(u8 taskId)
switch (data[1])
{
- case 0:
- if (++data[0] == 0x7F)
- {
- BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
- gUnknown_203AE94.unk_0_6 = 2;
- data[1]++;
- }
- break;
- case 1:
- if (!gPaletteFade.active)
- {
- gUnknown_3005E88 = 0;
- routine = (void (*)(void)) GetWordTaskArg(taskId, 14);
- if (routine != NULL)
- routine();
- DestroyTask(taskId);
- gUnknown_203AE8C = sub_8111914;
- }
- break;
+ case 0:
+ if (++data[0] == 0x7F)
+ {
+ BeginNormalPaletteFade(0xFFFFFFFF, 0, 0, 16, 0);
+ gUnknown_203AE94.unk_0_6 = 2;
+ data[1]++;
+ }
+ break;
+ case 1:
+ if (!gPaletteFade.active)
+ {
+ gUnknown_3005E88 = 0;
+ routine = (void (*)(void)) GetWordTaskArg(taskId, 14);
+ if (routine != NULL)
+ routine();
+ DestroyTask(taskId);
+ gUnknown_203AE8C = sub_8111914;
+ }
+ break;
}
}
@@ -1431,15 +1431,15 @@ static void sub_8111D90(u8 a0)
{
switch (i)
{
- default:
- y = 1;
- break;
- case 0:
- y = 0;
- break;
- case 5:
- y = 2;
- break;
+ default:
+ y = 1;
+ break;
+ case 0:
+ y = 0;
+ break;
+ case 5:
+ y = 2;
+ break;
}
// r6 = y * 32
@@ -1563,46 +1563,46 @@ static void sub_81120AC(u8 taskId)
switch (data[0])
{
- case 0:
- gDisableMapMusicChangeOnMapLoad = 0;
- Overworld_PlaySpecialMapMusic();
- sub_811229C();
- FillWindowPixelRect(gUnknown_203ADFE[0], 0xF, 0, 0, gUnknown_845661C[0].width * 8, gUnknown_845661C[0].height * 8);
- data[0]++;
- break;
- case 1:
- if (sub_81121D8(taskId))
+ case 0:
+ gDisableMapMusicChangeOnMapLoad = 0;
+ Overworld_PlaySpecialMapMusic();
+ sub_811229C();
+ FillWindowPixelRect(gUnknown_203ADFE[0], 0xF, 0, 0, gUnknown_845661C[0].width * 8, gUnknown_845661C[0].height * 8);
+ data[0]++;
+ break;
+ case 1:
+ if (sub_81121D8(taskId))
+ {
+ for (i = 0; i < 3; i++)
{
- for (i = 0; i < 3; i++)
- {
- ClearWindowTilemap(gUnknown_203ADFE[i]);
- CopyWindowToVram(gUnknown_203ADFE[i], 1);
- RemoveWindow(gUnknown_203ADFE[i]);
- }
- data[1] = 0;
- data[0]++;
+ ClearWindowTilemap(gUnknown_203ADFE[i]);
+ CopyWindowToVram(gUnknown_203ADFE[i], 1);
+ RemoveWindow(gUnknown_203ADFE[i]);
}
- break;
- case 2:
- if (data[1] < 32)
- data[1]++;
- else
- data[0]++;
- break;
- default:
- if (gUnknown_203AE94.unk_0_6 == 1)
- sub_8098110(1);
- CpuCopy16(gUnknown_203AE90, gPlttBufferUnfaded, 0x400);
- Free(gUnknown_203AE90);
- gUnknown_203AE94 = (struct UnkStruct_203AE94){};
- sub_80696C0();
- ScriptContext2_Disable();
- gTextFlags.autoScroll = FALSE;
- gUnknown_2036E28 = 0;
- sub_8082740(0);
- gHelpSystemEnabled = TRUE;
- DestroyTask(taskId);
- break;
+ data[1] = 0;
+ data[0]++;
+ }
+ break;
+ case 2:
+ if (data[1] < 32)
+ data[1]++;
+ else
+ data[0]++;
+ break;
+ default:
+ if (gUnknown_203AE94.unk_0_6 == 1)
+ sub_8098110(1);
+ CpuCopy16(gUnknown_203AE90, gPlttBufferUnfaded, 0x400);
+ Free(gUnknown_203AE90);
+ gUnknown_203AE94 = (struct UnkStruct_203AE94){};
+ sub_80696C0();
+ ScriptContext2_Disable();
+ gTextFlags.autoScroll = FALSE;
+ gUnknown_2036E28 = 0;
+ sub_8082740(0);
+ gHelpSystemEnabled = TRUE;
+ DestroyTask(taskId);
+ break;
}
}
@@ -1834,14 +1834,14 @@ static void sub_8112888(u8 a0)
{
switch (a0)
{
- case 1:
- if (gUnknown_3005E88 == 1)
- gUnknown_3005E88 = 3;
- break;
- case 2:
- if (gUnknown_3005E88 == 3)
- gUnknown_3005E88 = 1;
- break;
+ case 1:
+ if (gUnknown_3005E88 == 1)
+ gUnknown_3005E88 = 3;
+ break;
+ case 2:
+ if (gUnknown_3005E88 == 3)
+ gUnknown_3005E88 = 1;
+ break;
}
}
@@ -1851,24 +1851,24 @@ void sub_81128BC(u8 a0)
switch (a0)
{
- case 1:
- if (r1 == 1)
- gUnknown_3005E88 = 3;
- else if (r1 == 2)
- {
- gUnknown_3005E94[sQuestLogIdx].unk_4 = gUnknown_203B01A;
- gUnknown_3005E94[sQuestLogIdx].unk_6 = 3;
- sQuestLogIdx++;
- gUnknown_203B01A = 0;
- gUnknown_3005E88 = 4;
- }
- break;
- case 2:
- if (r1 == 1)
- gUnknown_3005E88 = 1;
- else if (r1 == 2)
- gUnknown_3005E88 = 2;
- break;
+ case 1:
+ if (r1 == 1)
+ gUnknown_3005E88 = 3;
+ else if (r1 == 2)
+ {
+ gUnknown_3005E94[sQuestLogIdx].unk_4 = gUnknown_203B01A;
+ gUnknown_3005E94[sQuestLogIdx].unk_6 = 3;
+ sQuestLogIdx++;
+ gUnknown_203B01A = 0;
+ gUnknown_3005E88 = 4;
+ }
+ break;
+ case 2:
+ if (r1 == 1)
+ gUnknown_3005E88 = 1;
+ else if (r1 == 2)
+ gUnknown_3005E88 = 2;
+ break;
}
}
@@ -1878,64 +1878,64 @@ static void sub_8112940(u8 a0, struct UnkStruct_203AE98 *a1, u16 a2)
switch (a0)
{
- default:
- gUnknown_3005E88 = 0;
- break;
+ default:
+ gUnknown_3005E88 = 0;
+ break;
+ case 1:
+ gUnknown_3005E94 = a1;
+ sNumQuestLogs = a2 / 8;
+ for (i = 0; i < 0x40; i++)
+ {
+ gUnknown_203AF9A[i][0] |= 0xFF;
+ gUnknown_203AF9A[i][1] |= 0xFF;
+ }
+ sQuestLogIdx = 0;
+ gUnknown_203B01C = 0;
+ gUnknown_3005E90 = (struct UnkStruct_3005E90){};
+ gUnknown_203B01A = gUnknown_3005E94[sQuestLogIdx].unk_4;
+ gUnknown_203AF9A[0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
+ gUnknown_203AF9A[0][1] = 0xFF;
+ gUnknown_3005E88 = 1;
+ break;
+ case 2:
+ gUnknown_3005E94 = a1;
+ sNumQuestLogs = a2 / 8;
+ for (i = 0; i < sNumQuestLogs; i++)
+ {
+ gUnknown_3005E94[i] = (struct UnkStruct_203AE98){ 0, 0, 0, 0, 0xFFFF, 0xFF };
+ }
+ sQuestLogIdx = 0;
+ gUnknown_203B01A = 0;
+ gUnknown_3005E94[sQuestLogIdx].unk_4 = 0;
+ gUnknown_3005E94[sQuestLogIdx].unk_6 = 0;
+ gUnknown_3005E94[sQuestLogIdx].unk_0 = 0;
+ switch (GetPlayerFacingDirection())
+ {
+ case 0:
case 1:
- gUnknown_3005E94 = a1;
- sNumQuestLogs = a2 / 8;
- for (i = 0; i < 0x40; i++)
- {
- gUnknown_203AF9A[i][0] |= 0xFF;
- gUnknown_203AF9A[i][1] |= 0xFF;
- }
- sQuestLogIdx = 0;
- gUnknown_203B01C = 0;
- gUnknown_3005E90 = (struct UnkStruct_3005E90){};
- gUnknown_203B01A = gUnknown_3005E94[sQuestLogIdx].unk_4;
- gUnknown_203AF9A[0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
- gUnknown_203AF9A[0][1] = 0xFF;
- gUnknown_3005E88 = 1;
+ gUnknown_3005E94[sQuestLogIdx].unk_3 = 0;
+ break;
+ case 4:
+ gUnknown_3005E94[sQuestLogIdx].unk_3 = 3;
break;
case 2:
- gUnknown_3005E94 = a1;
- sNumQuestLogs = a2 / 8;
- for (i = 0; i < sNumQuestLogs; i++)
- {
- gUnknown_3005E94[i] = (struct UnkStruct_203AE98){ 0, 0, 0, 0, 0xFFFF, 0xFF };
- }
- sQuestLogIdx = 0;
- gUnknown_203B01A = 0;
- gUnknown_3005E94[sQuestLogIdx].unk_4 = 0;
- gUnknown_3005E94[sQuestLogIdx].unk_6 = 0;
- gUnknown_3005E94[sQuestLogIdx].unk_0 = 0;
- switch (GetPlayerFacingDirection())
- {
- case 0:
- case 1:
- gUnknown_3005E94[sQuestLogIdx].unk_3 = 0;
- break;
- case 4:
- gUnknown_3005E94[sQuestLogIdx].unk_3 = 3;
- break;
- case 2:
- gUnknown_3005E94[sQuestLogIdx].unk_3 = 1;
- break;
- case 3:
- gUnknown_3005E94[sQuestLogIdx].unk_3 = 2;
- break;
- }
- gUnknown_203B01C = 0;
- sQuestLogIdx++;
- gUnknown_3005E94[sQuestLogIdx].unk_4 = 0;
- gUnknown_3005E94[sQuestLogIdx].unk_6 = 2;
- gUnknown_3005E94[sQuestLogIdx].unk_0 = 0;
- gUnknown_3005E94[sQuestLogIdx].unk_1 = 0;
- gUnknown_3005E94[sQuestLogIdx].unk_2 = 0;
- gUnknown_3005E94[sQuestLogIdx].unk_3 = 0;
- sQuestLogIdx++;
- gUnknown_3005E88 = 2;
+ gUnknown_3005E94[sQuestLogIdx].unk_3 = 1;
break;
+ case 3:
+ gUnknown_3005E94[sQuestLogIdx].unk_3 = 2;
+ break;
+ }
+ gUnknown_203B01C = 0;
+ sQuestLogIdx++;
+ gUnknown_3005E94[sQuestLogIdx].unk_4 = 0;
+ gUnknown_3005E94[sQuestLogIdx].unk_6 = 2;
+ gUnknown_3005E94[sQuestLogIdx].unk_0 = 0;
+ gUnknown_3005E94[sQuestLogIdx].unk_1 = 0;
+ gUnknown_3005E94[sQuestLogIdx].unk_2 = 0;
+ gUnknown_3005E94[sQuestLogIdx].unk_3 = 0;
+ sQuestLogIdx++;
+ gUnknown_3005E88 = 2;
+ break;
}
}
@@ -1944,67 +1944,67 @@ void sub_8112B3C(void)
{
switch (gUnknown_3005E88)
{
- case 0:
- break;
- case 1:
- if (sub_8112CEC())
+ case 0:
+ break;
+ case 1:
+ if (sub_8112CEC())
+ {
+ if (gUnknown_203B01A != 0)
+ gUnknown_203B01A--;
+ else
{
- if (gUnknown_203B01A != 0)
- gUnknown_203B01A--;
- else
+ while (1)
{
- while (1)
+ switch (gUnknown_3005E94[sQuestLogIdx].unk_6)
{
- switch (gUnknown_3005E94[sQuestLogIdx].unk_6)
- {
- case 0:
- gUnknown_203AF9A[gUnknown_3005E94[sQuestLogIdx].unk_0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
- break;
- case 1:
- gUnknown_203AF9A[gUnknown_3005E94[sQuestLogIdx].unk_0][1] = gUnknown_3005E94[sQuestLogIdx].unk_3;
- break;
- case 2:
- *(u32 *)&gUnknown_3005E90 = ((gUnknown_3005E94[sQuestLogIdx].unk_3 << 24) | (gUnknown_3005E94[sQuestLogIdx].unk_2 << 16) | (gUnknown_3005E94[sQuestLogIdx].unk_1 << 8) | (gUnknown_3005E94[sQuestLogIdx].unk_0 << 0));
- break;
- case 3:
- gUnknown_3005E88 = 3;
- break;
- case 0xFE:
- break;
- case 0xFF:
- gUnknown_3005E88 = 0;
- break;
- }
- if (gUnknown_3005E88 == 0)
- break;
- if (++sQuestLogIdx >= sNumQuestLogs)
- {
- gUnknown_3005E88 = 0;
- break;
- }
- gUnknown_203B01A = gUnknown_3005E94[sQuestLogIdx].unk_4;
- if (gUnknown_3005E88 == 3)
- break;
- if (gUnknown_203B01A == 0)
- continue;
- if (gUnknown_203B01A == 0xFFFF)
- break;
- }
+ case 0:
+ gUnknown_203AF9A[gUnknown_3005E94[sQuestLogIdx].unk_0][0] = gUnknown_3005E94[sQuestLogIdx].unk_3;
+ break;
+ case 1:
+ gUnknown_203AF9A[gUnknown_3005E94[sQuestLogIdx].unk_0][1] = gUnknown_3005E94[sQuestLogIdx].unk_3;
+ break;
+ case 2:
+ *(u32 *)&gUnknown_3005E90 = ((gUnknown_3005E94[sQuestLogIdx].unk_3 << 24) | (gUnknown_3005E94[sQuestLogIdx].unk_2 << 16) | (gUnknown_3005E94[sQuestLogIdx].unk_1 << 8) | (gUnknown_3005E94[sQuestLogIdx].unk_0 << 0));
+ break;
+ case 3:
+ gUnknown_3005E88 = 3;
+ break;
+ case 0xFE:
+ break;
+ case 0xFF:
+ gUnknown_3005E88 = 0;
+ break;
+ }
+ if (gUnknown_3005E88 == 0)
+ break;
+ if (++sQuestLogIdx >= sNumQuestLogs)
+ {
+ gUnknown_3005E88 = 0;
+ break;
+ }
+ gUnknown_203B01A = gUnknown_3005E94[sQuestLogIdx].unk_4;
+ if (gUnknown_3005E88 == 3)
+ break;
+ if (gUnknown_203B01A == 0)
+ continue;
+ if (gUnknown_203B01A == 0xFFFF)
+ break;
}
}
- else if (sQuestLogIdx >= sNumQuestLogs)
- gUnknown_3005E88 = 0;
- break;
- case 2:
- if (ScriptContext2_IsEnabled() != 1)
- gUnknown_203B01A++;
- if (sQuestLogIdx >= sNumQuestLogs)
- gUnknown_3005E88 = 0;
- break;
- case 3:
- break;
- case 4:
- break;
+ }
+ else if (sQuestLogIdx >= sNumQuestLogs)
+ gUnknown_3005E88 = 0;
+ break;
+ case 2:
+ if (ScriptContext2_IsEnabled() != 1)
+ gUnknown_203B01A++;
+ if (sQuestLogIdx >= sNumQuestLogs)
+ gUnknown_3005E88 = 0;
+ break;
+ case 3:
+ break;
+ case 4:
+ break;
}
}
#else
@@ -2203,15 +2203,15 @@ u8 sub_8112CAC(void)
{
switch (gUnknown_3005E88)
{
- case 0:
- default:
- return 0;
- case 1:
- case 3:
- return 1;
- case 2:
- case 4:
- return 2;
+ case 0:
+ default:
+ return 0;
+ case 1:
+ case 3:
+ return 1;
+ case 2:
+ case 4:
+ return 2;
}
}
@@ -2669,27 +2669,27 @@ void BufferStreakTrainerText(void)
switch (gSpecialVar_0x8004)
{
- case 0:
- r2 = 0;
- r3 = 0;
- break;
- case 1:
- case 2:
- case 3:
- case 7:
- break;
- case 4:
- r2 = 1;
- r3 = 0;
- break;
- case 5:
- r2 = 0;
- r3 = 1;
- break;
- case 6:
- r2 = 2;
- r3 = 1;
- break;
+ case 0:
+ r2 = 0;
+ r3 = 0;
+ break;
+ case 1:
+ case 2:
+ case 3:
+ case 7:
+ break;
+ case 4:
+ r2 = 1;
+ r3 = 0;
+ break;
+ case 5:
+ r2 = 0;
+ r3 = 1;
+ break;
+ case 6:
+ r2 = 2;
+ r3 = 1;
+ break;
}
sub_8113414(&gSaveBlock2Ptr->linkBattleRecords, r3, r2);
}
@@ -2702,18 +2702,18 @@ static void sub_8113414(struct LinkBattleRecords * a0, u8 a1, u8 a2)
{
switch (a2)
{
- case 0:
- StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName);
- break;
- case 1:
- StringCopy(gStringVar1, gUnknown_84178D0); // LT. SURGE
- break;
- case 2:
- StringCopy(gStringVar1, gUnknown_84178DA); // KOGA
- break;
- default:
- StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName);
- break;
+ case 0:
+ StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName);
+ break;
+ case 1:
+ StringCopy(gStringVar1, gUnknown_84178D0); // LT. SURGE
+ break;
+ case 2:
+ StringCopy(gStringVar1, gUnknown_84178DA); // KOGA
+ break;
+ default:
+ StringCopy(gStringVar1, gSaveBlock1Ptr->rivalName);
+ break;
}
}
else
@@ -3703,48 +3703,48 @@ static const u16 *sub_8113FBC(const u16 *a0)
switch (ItemId_GetPocket(r5[0]))
{
- case POCKET_ITEMS:
- case POCKET_POKE_BALLS:
- case POCKET_BERRY_POUCH:
- StringCopy(gStringVar1, ItemId_GetName(r5[0]));
- if (r5[0] == ITEM_ESCAPE_ROPE)
- {
- sub_80C4DF8(gStringVar2, r5[2]);
- StringExpandPlaceholders(gStringVar4, gUnknown_841AFA6);
- }
- else if (r5[1] != 0xFFFF)
- {
- QuestLog_AutoGetSpeciesName(r5[1], gStringVar2, 0);
- StringExpandPlaceholders(gStringVar4, gUnknown_841A1E7);
- }
+ case POCKET_ITEMS:
+ case POCKET_POKE_BALLS:
+ case POCKET_BERRY_POUCH:
+ StringCopy(gStringVar1, ItemId_GetName(r5[0]));
+ if (r5[0] == ITEM_ESCAPE_ROPE)
+ {
+ sub_80C4DF8(gStringVar2, r5[2]);
+ StringExpandPlaceholders(gStringVar4, gUnknown_841AFA6);
+ }
+ else if (r5[1] != 0xFFFF)
+ {
+ QuestLog_AutoGetSpeciesName(r5[1], gStringVar2, 0);
+ StringExpandPlaceholders(gStringVar4, gUnknown_841A1E7);
+ }
+ else
+ {
+ StringExpandPlaceholders(gStringVar4, gUnknown_841A210);
+ }
+ break;
+ case POCKET_KEY_ITEMS:
+ StringCopy(gStringVar1, ItemId_GetName(r5[0]));
+ StringExpandPlaceholders(gStringVar4, gUnknown_841A220);
+ break;
+ case POCKET_TM_CASE:
+ QuestLog_AutoGetSpeciesName(r5[1], gStringVar1, 0);
+ StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(r5[0])]);
+ if (r5[2] != 0xFFFF)
+ {
+ StringCopy(gStringVar3, gMoveNames[r5[2]]);
+ if (r5[0] > ITEM_TM50)
+ StringExpandPlaceholders(gStringVar4, gUnknown_841A965);
else
- {
- StringExpandPlaceholders(gStringVar4, gUnknown_841A210);
- }
- break;
- case POCKET_KEY_ITEMS:
- StringCopy(gStringVar1, ItemId_GetName(r5[0]));
- StringExpandPlaceholders(gStringVar4, gUnknown_841A220);
- break;
- case POCKET_TM_CASE:
- QuestLog_AutoGetSpeciesName(r5[1], gStringVar1, 0);
- StringCopy(gStringVar2, gMoveNames[ItemIdToBattleMoveId(r5[0])]);
- if (r5[2] != 0xFFFF)
- {
- StringCopy(gStringVar3, gMoveNames[r5[2]]);
- if (r5[0] > ITEM_TM50)
- StringExpandPlaceholders(gStringVar4, gUnknown_841A965);
- else
- StringExpandPlaceholders(gStringVar4, gUnknown_841A277);
- }
+ StringExpandPlaceholders(gStringVar4, gUnknown_841A277);
+ }
+ else
+ {
+ if (r5[0] > ITEM_TM50)
+ StringExpandPlaceholders(gStringVar4, gUnknown_841A938);
else
- {
- if (r5[0] > ITEM_TM50)
- StringExpandPlaceholders(gStringVar4, gUnknown_841A938);
- else
- StringExpandPlaceholders(gStringVar4, gUnknown_841A255);
- }
- break;
+ StringExpandPlaceholders(gStringVar4, gUnknown_841A255);
+ }
+ break;
}
return r5 + 3;
}
@@ -4442,11 +4442,11 @@ static bool8 sub_8114FBC(u16 a0)
{
switch (a0)
{
- case 0x96:
- case 0x8F ... 0x92:
- case 0xF9 ... 0xFA:
- case 0x19A:
- return TRUE;
+ case 0x96:
+ case 0x8F ... 0x92:
+ case 0xF9 ... 0xFA:
+ case 0x19A:
+ return TRUE;
}
return FALSE;
}
@@ -4495,22 +4495,22 @@ static const u16 *sub_81150CC(const u16 *a0)
switch (gUnknown_203B044.unk_2)
{
- case 0:
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gSaveBlock1Ptr->rivalName);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A2E1);
- break;
- case 1:
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock1Ptr->rivalName);
- QuestLog_AutoGetSpeciesName(a0[2], NULL, 1);
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gSaveBlock2Ptr->playerName);
- QuestLog_AutoGetSpeciesName(a0[3], NULL, 3);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A312);
- break;
- case 2:
- DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_8456AD8[r5[0]]);
- DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A349);
- break;
+ case 0:
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock2Ptr->playerName);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(1, gSaveBlock1Ptr->rivalName);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A2E1);
+ break;
+ case 1:
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gSaveBlock1Ptr->rivalName);
+ QuestLog_AutoGetSpeciesName(a0[2], NULL, 1);
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(2, gSaveBlock2Ptr->playerName);
+ QuestLog_AutoGetSpeciesName(a0[3], NULL, 3);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A312);
+ break;
+ case 2:
+ DynamicPlaceholderTextUtil_SetPlaceholderPtr(0, gUnknown_8456AD8[r5[0]]);
+ DynamicPlaceholderTextUtil_ExpandPlaceholders(gStringVar4, gUnknown_841A349);
+ break;
}
return (const u16 *)(r5 + 2);
}
diff --git a/src/scrcmd.c b/src/scrcmd.c
index 2a6aff709..b54e08faa 100644
--- a/src/scrcmd.c
+++ b/src/scrcmd.c
@@ -1835,7 +1835,7 @@ bool8 ScrCmd_showmoneybox(struct ScriptContext *ctx)
u8 y = ScriptReadByte(ctx);
u8 ignore = ScriptReadByte(ctx);
- if (!ignore && sub_81119D4(sub_809D6D4) != TRUE)
+ if (!ignore && QuestLog_ScheduleRoutineIfNotInPlaybackMode(sub_809D6D4) != TRUE)
DrawMoneyBox(GetMoney(&gSaveBlock1Ptr->money), x, y);
return FALSE;
}
@@ -1865,7 +1865,7 @@ bool8 ScrCmd_showcoinsbox(struct ScriptContext *ctx)
u8 x = ScriptReadByte(ctx);
u8 y = ScriptReadByte(ctx);
- if (sub_81119D4(sub_809D6D4) != TRUE)
+ if (QuestLog_ScheduleRoutineIfNotInPlaybackMode(sub_809D6D4) != TRUE)
ShowCoinsWindow(GetCoins(), x, y);
return FALSE;
}
diff --git a/src/script_menu.c b/src/script_menu.c
index d375ece08..4bc7bfec9 100644
--- a/src/script_menu.c
+++ b/src/script_menu.c
@@ -1,7 +1,6 @@
#include "global.h"
#include "palette.h"
#include "text.h"
-#include "list_menu.h"
#include "menu.h"
#include "task.h"
#include "sound.h"
@@ -11,7 +10,12 @@
#include "new_menu_helpers.h"
#include "event_data.h"
#include "script.h"
+#include "strings.h"
+#include "string_util.h"
+#include "field_effect.h"
+#include "event_scripts.h"
#include "constants/songs.h"
+#include "constants/species.h"
struct MultichoiceListStruct
{
@@ -27,6 +31,9 @@ void sub_809CC18(u8 ignoreBpress, u8 count, u8 windowId, u8 mcId);
void sub_809CC98(u8 taskId);
void sub_809CD48(u8 mcId);
void task_yes_no_maybe(u8 taskId);
+void sub_809CFDC(u8 taskId);
+void sub_809D070(void);
+bool8 sub_809D404(void);
void sub_809D6B0(u8 windowId);
u8 CreateWindowFromRect(u8 left, u8 top, u8 width, u8 height);
@@ -34,21 +41,27 @@ extern const u8 *const gUnknown_83E072C[];
extern const u8 *const gUnknown_83E0738[];
extern const u8 *const gUnknown_83E0748[];
extern const struct MultichoiceListStruct gUnknown_83E04B0[];
+extern const struct SpriteSheet sMuseumKabutopsSprSheets[];
+extern const u16 sMuseumKabutopsSprPalette[];
+extern const struct SpriteSheet sMuseumAerodactylSprSheets[];
+extern const u16 sMuseumAerodactylSprPalette[];
+extern const struct SpriteTemplate sMuseumFossilSprTemplate;
+extern const u8 *const gUnknown_83E17E0[];
u16 sub_809C954(const u8 *str)
{
return (GetStringWidth(1, str, 0) + 7) / 8;
}
-u8 sub_809C974(const struct ListMenuItem * items, u8 count)
+u8 sub_809C974(const struct MenuAction * items, u8 count)
{
u16 i;
- u8 width = sub_809C954(items[0].label);
+ u8 width = sub_809C954(items[0].text);
u8 tmp;
for (i = 1; i < count; i++)
{
- tmp = sub_809C954(items[i].label);
+ tmp = sub_809C954(items[i].text);
if (width < tmp)
width = tmp;
}
@@ -84,7 +97,7 @@ void sub_809CA64(u8 left, u8 top, u8 mcId, u8 ignoreBpress, u8 initPos)
u8 windowId;
const struct MenuAction * list;
- if ((ignoreBpress & 2) || sub_81119D4(sub_809D6D4) != TRUE)
+ if ((ignoreBpress & 2) || QuestLog_ScheduleRoutineIfNotInPlaybackMode(sub_809D6D4) != TRUE)
{
ignoreBpress &= 1;
count = gUnknown_83E04B0[mcId].count;
@@ -218,7 +231,7 @@ bool8 ScriptMenu_YesNo(u8 unused, u8 stuff)
if (FuncIsActiveTask(task_yes_no_maybe) == TRUE)
return FALSE;
gSpecialVar_Result = 255;
- if (!sub_81119D4(sub_809D6D4))
+ if (!QuestLog_ScheduleRoutineIfNotInPlaybackMode(sub_809D6D4))
{
DisplayYesNoMenuDefaultYes();
CreateTask(task_yes_no_maybe, 80);
@@ -261,3 +274,406 @@ void task_yes_no_maybe(u8 taskId)
EnableBothScriptContexts();
}
}
+
+bool8 ScriptMenu_MultichoiceGrid(u8 left, u8 top, u8 multichoiceId, u8 a4, u8 columnCount)
+{
+ const struct MenuAction * list;
+ u8 count;
+ u8 width;
+ u8 rowCount;
+ u8 taskId;
+ if (FuncIsActiveTask(sub_809CFDC) == TRUE)
+ return FALSE;
+ gSpecialVar_Result = 255;
+ if (QuestLog_ScheduleRoutineIfNotInPlaybackMode(sub_809D6D4) != TRUE)
+ {
+ list = gUnknown_83E04B0[multichoiceId].list;
+ count = gUnknown_83E04B0[multichoiceId].count;
+ width = sub_809C974(list, count) + 1;
+ rowCount = count / columnCount;
+ taskId = CreateTask(sub_809CFDC, 80);
+ gTasks[taskId].data[4] = a4;
+ gTasks[taskId].data[6] = CreateWindowFromRect(left, top, width * columnCount, rowCount * 2);
+ SetStdWindowBorderStyle(gTasks[taskId].data[6], FALSE);
+ MultichoiceGrid_PrintItems(gTasks[taskId].data[6], 1, width * 8, 16, columnCount, rowCount, list);
+ MultichoiceGrid_InitCursor(gTasks[taskId].data[6], 1, 0, 1, width * 8, columnCount, rowCount, 0);
+ ScheduleBgCopyTilemapToVram(0);
+ }
+ return TRUE;
+}
+
+void sub_809CFDC(u8 taskId)
+{
+ s16 *data = gTasks[taskId].data;
+ s8 input = Menu_ProcessInputGridLayout();
+ switch (input)
+ {
+ case -2:
+ return;
+ case -1:
+ if (data[4])
+ return;
+ PlaySE(SE_SELECT);
+ gSpecialVar_Result = 127;
+ break;
+ default:
+ gSpecialVar_Result = input;
+ break;
+ }
+ sub_809D6B0(data[6]);
+ DestroyTask(taskId);
+ EnableBothScriptContexts();
+}
+
+bool8 ScrSpecial_CreatePCMenu(void)
+{
+ if (FuncIsActiveTask(sub_809CC98) == TRUE)
+ return FALSE;
+ gSpecialVar_Result = 255;
+ sub_809D070();
+ return TRUE;
+}
+
+void sub_809D070(void)
+{
+ u8 cursorWidth = GetMenuCursorDimensionByFont(2, 0);
+ u8 height = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT);
+ u8 windowWidth;
+ u8 nitems;
+ u8 windowId;
+ switch (sub_809C954(gUnknown_8417BB6))
+ {
+ default:
+ if (FlagGet(FLAG_SYS_POKEDEX_GET))
+ windowWidth = 14;
+ else
+ windowWidth = 13;
+ break;
+ case 9:
+ case 10:
+ windowWidth = 14;
+ break;
+ }
+ if (FlagGet(FLAG_SYS_GAME_CLEAR))
+ {
+ nitems = 5;
+ windowId = CreateWindowFromRect(0, 0, windowWidth, 10);
+ SetStdWindowBorderStyle(windowId, FALSE);
+ AddTextPrinterParameterized(windowId, 2, gUnknown_8417BD3, cursorWidth, 34, 0xFF, NULL);
+ AddTextPrinterParameterized(windowId, 2, gUnknown_8417BBE, cursorWidth, 50, 0xFF, NULL);
+ AddTextPrinterParameterized(windowId, 2, gUnknown_8417BCB, cursorWidth, 66, 0xFF, NULL);
+ }
+ else
+ {
+ if (FlagGet(FLAG_SYS_POKEDEX_GET))
+ nitems = 4;
+ else
+ nitems = 3;
+ windowId = CreateWindowFromRect(0, 0, windowWidth, nitems * 2);
+ SetStdWindowBorderStyle(windowId, FALSE);
+ if (FlagGet(FLAG_SYS_POKEDEX_GET))
+ AddTextPrinterParameterized(windowId, 2, gUnknown_8417BD3, cursorWidth, 34, 0xFF, NULL);
+ AddTextPrinterParameterized(windowId, 2, gUnknown_8417BCB, cursorWidth, 2 + 16 * (nitems - 1), 0xFF, NULL);
+ }
+ if (FlagGet(FLAG_SYS_NOT_SOMEONES_PC))
+ AddTextPrinterParameterized(windowId, 2, gUnknown_8417BAC, cursorWidth, 2 , 0xFF, NULL);
+ else
+ AddTextPrinterParameterized(windowId, 2, gUnknown_8417B9F, cursorWidth, 2 , 0xFF, NULL);
+ StringExpandPlaceholders(gStringVar4, gUnknown_8417BB6);
+ Menu_PrintFormatIntlPlayerName(windowId, gStringVar4, cursorWidth, 18);
+ Menu_InitCursor(windowId, 2, 0, 2, 16, nitems, 0);
+ sub_809CC18(FALSE, nitems, windowId, 0xFF);
+ ScheduleBgCopyTilemapToVram(0);
+}
+
+void ScriptMenu_DisplayPCStartupPrompt(void)
+{
+ sub_80F7768(0, TRUE);
+ AddTextPrinterParameterized2(0, 2, gUnknown_81A508A, 0, NULL, 2, 1, 3);
+}
+
+void sub_809D288(u8 taskId)
+{
+ struct Task * task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[0]++;
+ break;
+ case 1:
+ break;
+ case 2:
+ sub_8083A5C(&gSprites[task->data[2]], task->data[2]);
+ task->data[0]++;
+ break;
+ case 3:
+ sub_809D6B0(task->data[5]);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+bool8 ScriptMenu_ShowPokemonPic(u16 species, u8 x, u8 y)
+{
+ u8 spriteId;
+ u8 taskId;
+ if (QuestLog_ScheduleRoutineIfNotInPlaybackMode(sub_809D6D4) == TRUE)
+ return TRUE;
+ if (FindTaskIdByFunc(sub_809D288) != 0xFF)
+ return FALSE;
+ spriteId = sub_8083970(species, 8 * x + 40, 8 * y + 40, FALSE);
+ taskId = CreateTask(sub_809D288, 80);
+ gTasks[taskId].data[5] = CreateWindowFromRect(x, y, 8, 8);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[1] = species;
+ gTasks[taskId].data[2] = spriteId;
+ gSprites[spriteId].callback = SpriteCallbackDummy;
+ gSprites[spriteId].oam.priority = 0;
+ SetStdWindowBorderStyle(gTasks[taskId].data[5], TRUE);
+ ScheduleBgCopyTilemapToVram(0);
+ return TRUE;
+}
+
+bool8 (*ScriptMenu_GetPicboxWaitFunc(void))(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_809D288);
+ if (taskId == 0xFF)
+ return NULL;
+ gTasks[taskId].data[0]++;
+ return sub_809D404;
+}
+
+bool8 sub_809D404(void)
+{
+ if (FindTaskIdByFunc(sub_809D288) == 0xFF)
+ return TRUE;
+ else
+ return FALSE;
+}
+
+void sub_809D424(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_809D288);
+ struct Task * task;
+ if (taskId != 0xFF)
+ {
+ task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ case 1:
+ case 2:
+ sub_8083A5C(&gSprites[task->data[2]], task->data[2]);
+ sub_809D6B0(task->data[5]);
+ DestroyTask(taskId);
+ break;
+ case 3:
+ sub_809D6B0(task->data[5]);
+ DestroyTask(taskId);
+ break;
+ }
+ }
+}
+
+void sub_809D494(u8 taskId)
+{
+ struct Task * task = &gTasks[taskId];
+ switch (task->data[0])
+ {
+ case 0:
+ task->data[0]++;
+ break;
+ case 1:
+ break;
+ case 2:
+ DestroySprite(&gSprites[task->data[2]]);
+ FreeSpriteTilesByTag(7000);
+ task->data[0]++;
+ break;
+ case 3:
+ sub_809D6B0(task->data[5]);
+ DestroyTask(taskId);
+ break;
+ }
+}
+
+bool8 Special_OpenMuseumFossilPic(void)
+{
+ u8 spriteId;
+ u8 taskId;
+ if (QuestLog_ScheduleRoutineIfNotInPlaybackMode(sub_809D6D4) == TRUE)
+ return TRUE;
+ if (FindTaskIdByFunc(sub_809D494) != 0xFF)
+ return FALSE;
+ if (gSpecialVar_0x8004 == SPECIES_KABUTOPS)
+ {
+ LoadSpriteSheets(sMuseumKabutopsSprSheets);
+ LoadPalette(sMuseumKabutopsSprPalette, 0x1D0, 0x20);
+ }
+ else if (gSpecialVar_0x8004 == SPECIES_AERODACTYL)
+ {
+ LoadSpriteSheets(sMuseumAerodactylSprSheets);
+ LoadPalette(sMuseumAerodactylSprPalette, 0x1D0, 0x20);
+ }
+ else
+ {
+ return FALSE;
+ }
+ spriteId = CreateSprite(&sMuseumFossilSprTemplate, gSpecialVar_0x8005 * 8 + 40, gSpecialVar_0x8006 * 8 + 40, 0);
+ gSprites[spriteId].oam.paletteNum = 13;
+ taskId = CreateTask(sub_809D494, 80);
+ gTasks[taskId].data[5] = CreateWindowFromRect(gSpecialVar_0x8005, gSpecialVar_0x8006, 8, 8);
+ gTasks[taskId].data[0] = 0;
+ gTasks[taskId].data[2] = spriteId;
+ SetStdWindowBorderStyle(gTasks[taskId].data[5], TRUE);
+ ScheduleBgCopyTilemapToVram(0);
+ return TRUE;
+}
+
+bool8 Special_CloseMuseumFossilPic(void)
+{
+ u8 taskId = FindTaskIdByFunc(sub_809D494);
+ if (taskId == 0xFF)
+ return FALSE;
+ gTasks[taskId].data[0]++;
+ return TRUE;
+}
+
+u8 CreateWindowFromRect(u8 left, u8 top, u8 width, u8 height)
+{
+ struct WindowTemplate template = SetWindowTemplateFields(0, left + 1, top + 1, width, height, 15, 0x038);
+ u8 windowId = AddWindow(&template);
+ PutWindowTilemap(windowId);
+ return windowId;
+}
+
+void sub_809D6B0(u8 windowId)
+{
+ ClearWindowTilemap(windowId);
+ ClearStdWindowAndFrameToTransparent(windowId, TRUE);
+ RemoveWindow(windowId);
+}
+
+void sub_809D6D4(void)
+{
+ u8 taskId;
+ s16 *data;
+ ScriptContext1_SetupScript(EventScript_1A7AE0);
+ taskId = FindTaskIdByFunc(sub_809D288);
+ if (taskId != 0xFF)
+ {
+ data = gTasks[taskId].data;
+ if (data[0] < 2)
+ sub_8083A5C(&gSprites[data[2]], data[2]);
+ }
+ taskId = FindTaskIdByFunc(sub_809D494);
+ if (taskId != 0xFF)
+ {
+ data = gTasks[taskId].data;
+ if (data[0] < 2)
+ {
+ DestroySprite(&gSprites[data[2]]);
+ FreeSpriteTilesByTag(7000);
+ }
+ }
+}
+
+void sub_809D764(void)
+{
+ u8 r4;
+ u8 top;
+ u8 nitems;
+ u8 cursorWidth;
+ u8 fontHeight;
+ u8 windowId;
+ u8 i;
+ gSpecialVar_Result = 255;
+ if (QuestLog_ScheduleRoutineIfNotInPlaybackMode(sub_809D6D4) != TRUE)
+ {
+ if (gSpecialVar_0x8005 == 1)
+ {
+ if (gSpecialVar_0x8004 < 5)
+ r4 = 5;
+ else
+ r4 = 4;
+ nitems = 5;
+ top = 2;
+ }
+ else
+ {
+ r4 = 0;
+ nitems = 6;
+ top = 0;
+ }
+ cursorWidth = GetMenuCursorDimensionByFont(2, 0);
+ fontHeight = GetFontAttribute(2, FONTATTR_MAX_LETTER_HEIGHT);
+ windowId = CreateWindowFromRect(17, top, 11, nitems * 2);
+ SetStdWindowBorderStyle(windowId, FALSE);
+ for (i = 0; i < nitems - 2; i++)
+ {
+ if (r4 != gSpecialVar_0x8004)
+ AddTextPrinterParameterized(windowId, 2, gUnknown_83E17E0[r4], cursorWidth, i * 16 + 2, 0xFF, NULL);
+ else
+ i--;
+ r4++;
+ if (r4 == 8)
+ r4 = 0;
+ }
+ AddTextPrinterParameterized(windowId, 2, gUnknown_8417DED, cursorWidth, i * 16 + 2, 0xFF, NULL);
+ i++;
+ AddTextPrinterParameterized(windowId, 2, gOtherText_Exit, cursorWidth, i * 16 + 2, 0xFF, NULL);
+ Menu_InitCursor(windowId, 2, 0, 2, 16, nitems, 0);
+ sub_809CC18(FALSE, nitems, windowId, 0xFF);
+ ScheduleBgCopyTilemapToVram(0);
+ }
+}
+
+u16 sub_809D8C0(void)
+{
+ if (gSpecialVar_Result == 127)
+ return 127;
+ if (gSpecialVar_0x8005 == 1)
+ {
+ if (gSpecialVar_Result == 3)
+ {
+ return 254;
+ }
+ else if (gSpecialVar_Result == 4)
+ {
+ return 127;
+ }
+ else if (gSpecialVar_Result == 0)
+ {
+ if (gSpecialVar_0x8004 > 4)
+ return 4;
+ else
+ return 5;
+ }
+ else if (gSpecialVar_Result == 1)
+ {
+ if (gSpecialVar_0x8004 > 5)
+ return 5;
+ else
+ return 6;
+ }
+ else if (gSpecialVar_Result == 2)
+ {
+ if (gSpecialVar_0x8004 > 6)
+ return 6;
+ else
+ return 7;
+ }
+ }
+ else
+ {
+ if (gSpecialVar_Result == 4)
+ return 254;
+ else if (gSpecialVar_Result == 5)
+ return 127;
+ else if (gSpecialVar_Result >= gSpecialVar_0x8004)
+ return gSpecialVar_Result + 1;
+ else
+ return gSpecialVar_Result;
+ }
+ return 0;
+}