From 08b93bcdbf8e6b92a54fc99b7bba08403f1bf4f3 Mon Sep 17 00:00:00 2001 From: DizzyEggg Date: Fri, 16 May 2025 17:10:07 +0200 Subject: [PATCH] Match xxx_script_related_8098468 --- asm/code_8098468.s | 791 --------------------------------------------- ld_script.txt | 1 - src/ground_main.c | 432 ++++++++++++++++++++++++- 3 files changed, 424 insertions(+), 800 deletions(-) delete mode 100644 asm/code_8098468.s diff --git a/asm/code_8098468.s b/asm/code_8098468.s deleted file mode 100644 index 05fcd1ab7..000000000 --- a/asm/code_8098468.s +++ /dev/null @@ -1,791 +0,0 @@ - #include "asm/constants/gba_constants.inc" - #include "asm/macros.inc" - - .syntax unified - - .text - - thumb_func_start xxx_script_related_8098468 -xxx_script_related_8098468: - push {r4-r7,lr} - sub sp, 0x8 - ldr r1, _08098494 - str r0, [r1] - ldr r4, _08098498 - movs r2, 0 - strb r2, [r4] - ldr r3, _0809849C - movs r1, 0x1 - strb r1, [r3] - ldr r1, _080984A0 - strb r2, [r1] - subs r0, 0xD - adds r2, r1, 0 - cmp r0, 0x4 - bhi _08098504 - lsls r0, 2 - ldr r1, _080984A4 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08098494: .4byte gUnknown_20398B4 -_08098498: .4byte gUnknown_20398B9 -_0809849C: .4byte gUnknown_20398B8 -_080984A0: .4byte gScriptMode -_080984A4: .4byte _080984A8 - .align 2, 0 -_080984A8: - .4byte _080984BC - .4byte _080984C8 - .4byte _080984CE - .4byte _080984D4 - .4byte _080984FC -_080984BC: - movs r1, 0x1 - strb r1, [r2] - movs r0, 0 - strb r0, [r3] - strb r1, [r4] - b _08098504 -_080984C8: - movs r0, 0x1 - strb r0, [r3] - b _08098502 -_080984CE: - movs r0, 0x1 - strb r0, [r3] - b _08098502 -_080984D4: - add r2, sp, 0x4 - movs r0, 0x3 - mov r1, sp - bl GetScriptVarScenario - ldr r2, _080984F4 - movs r1, 0 - ldr r0, [sp] - cmp r0, 0 - bne _080984EA - movs r1, 0x1 -_080984EA: - strb r1, [r2] - ldr r1, _080984F8 - movs r0, 0x1 - strb r0, [r1] - b _08098504 - .align 2, 0 -_080984F4: .4byte gUnknown_20398B8 -_080984F8: .4byte gUnknown_20398B9 -_080984FC: - movs r0, 0 - strb r0, [r3] - movs r0, 0x1 -_08098502: - strb r0, [r4] -_08098504: - bl sub_801180C - ldr r0, _080985B0 - ldrb r0, [r0] - cmp r0, 0 - bne _08098522 - movs r0, 0xD - bl sub_80023E4 - lsls r0, 24 - cmp r0, 0 - bne _08098522 - movs r0, 0x10 - bl FadeOutAllMusic -_08098522: - ldr r1, _080985B4 - ldr r2, _080985B8 - adds r0, r2, 0 - strh r0, [r1] - movs r0, 0 - bl UpdateFadeInTile - bl sub_8099648 - bl sub_809975C - bl sub_809D0AC - bl sub_80A7744 - bl sub_809D490 - bl sub_80A62F0 - bl sub_809C5C4 - bl sub_809A560 - bl sub_809CB50 - bl AllocGroundMapAction - bl nullsub_117 - bl AllocGroundEvents - bl AllocGroundLives - bl AllocGroundObjects - bl AllocGroundEffects - bl sub_809A62C - ldr r0, _080985BC - movs r1, 0 - strb r1, [r0] - ldr r0, _080985C0 - strb r1, [r0] - ldr r6, _080985C4 - movs r0, 0x1 - str r0, [r6] - ldr r1, _080985C8 - movs r0, 0 - str r0, [r1] - ldr r0, _080985CC - movs r4, 0x1 - negs r4, r4 - str r4, [r0] - ldr r5, _080985D0 - movs r0, 0 - movs r1, 0xD - bl GetScriptVarValue - strh r0, [r5] - movs r0, 0 - movs r1, 0xE - bl GetScriptVarValue - ldr r1, _080985D4 - str r0, [r1] - ldr r0, _080985D8 - strh r4, [r0] - adds r7, r4, 0 - ldr r0, [r6] - b _08098988 - .align 2, 0 -_080985B0: .4byte gUnknown_20398B9 -_080985B4: .4byte gUnknown_2026E4E -_080985B8: .4byte 0x00000808 -_080985BC: .4byte gUnknown_203B49C -_080985C0: .4byte gUnknown_203B49D -_080985C4: .4byte gUnknown_20398A8 -_080985C8: .4byte gUnknown_20398AC -_080985CC: .4byte gUnknown_20398B0 -_080985D0: .4byte gUnknown_20398BE -_080985D4: .4byte gUnknown_20398C0 -_080985D8: .4byte gUnknown_20398C4 -_080985DC: - movs r0, 0x1 - negs r0, r0 - bl sub_809A71C - bl ScriptPrintNullTextbox - bl sub_809977C - ldr r0, _08098600 - ldr r0, [r0] - cmp r0, 0x11 - bls _080985F6 - b _08098756 -_080985F6: - lsls r0, 2 - ldr r1, _08098604 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08098600: .4byte gUnknown_20398B4 -_08098604: .4byte _08098608 - .align 2, 0 -_08098608: - .4byte _08098650 - .4byte _08098756 - .4byte _08098660 - .4byte _08098660 - .4byte _08098756 - .4byte _08098666 - .4byte _08098756 - .4byte _08098756 - .4byte _08098756 - .4byte _0809866A - .4byte _0809866A - .4byte _0809866A - .4byte _0809866A - .4byte _0809870C - .4byte _08098748 - .4byte _0809874C - .4byte _08098750 - .4byte _08098754 -_08098650: - bl sub_8098C58 - ldr r1, _0809865C - movs r0, 0x1 - str r0, [r1] - b _08098756 - .align 2, 0 -_0809865C: .4byte gUnknown_20398B4 -_08098660: - bl sub_8001D88 - b _08098756 -_08098666: - movs r7, 0x70 - b _08098756 -_0809866A: - ldr r0, _080986BC - ldr r2, [r0] - movs r0, 0 - movs r1, 0x16 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x25 - movs r2, 0 - bl SetScriptVarValue - bl sub_8098C58 - movs r0, 0 - movs r1, 0x15 - movs r2, 0x1 - movs r3, 0x2 - bl UpdateScriptVarWithImmediate - movs r0, 0 - movs r1, 0x13 - bl GetScriptVarValue - lsls r0, 16 - asrs r4, r0, 16 - movs r0, 0x1 - negs r0, r0 - cmp r4, r0 - beq _08098756 - cmp r4, 0x51 - bne _080986C0 - movs r0, 0 - movs r1, 0x14 - bl GetScriptVarValue - lsls r0, 16 - asrs r0, 16 - bl GetDungeonInfo_80A2608 - b _080986C6 - .align 2, 0 -_080986BC: .4byte gUnknown_20398B4 -_080986C0: - adds r0, r4, 0 - bl GetDungeonInfo_80A2608 -_080986C6: - movs r1, 0xA - ldrsh r7, [r0, r1] - ldr r5, _08098700 - ldr r0, [r5] - cmp r0, 0x9 - bne _080986E0 - lsls r2, r4, 16 - lsrs r2, 16 - movs r0, 0 - movs r1, 0x31 - movs r3, 0x1 - bl SetScriptVarArrayValue -_080986E0: - ldr r0, [r5] - bl sub_8098FCC - lsls r0, 16 - asrs r1, r0, 16 - movs r0, 0x1 - negs r0, r0 - cmp r1, r0 - beq _08098756 - ldr r0, _08098704 - strh r1, [r0] - ldr r1, _08098708 - movs r0, 0 - str r0, [r1] - b _08098756 - .align 2, 0 -_08098700: .4byte gUnknown_20398B4 -_08098704: .4byte gUnknown_20398BE -_08098708: .4byte gUnknown_20398C0 -_0809870C: - bl sub_8098C58 - ldr r1, _08098744 - movs r0, 0x1 - str r0, [r1] - movs r0, 0 - movs r1, 0x18 - movs r2, 0x1 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0xF - movs r2, 0 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0xD - movs r2, 0 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0xE - movs r2, 0 - bl SetScriptVarValue - movs r7, 0x71 - b _08098756 - .align 2, 0 -_08098744: .4byte gUnknown_20398B4 -_08098748: - movs r7, 0x73 - b _08098756 -_0809874C: - movs r7, 0x74 - b _08098756 -_08098750: - movs r7, 0x75 - b _08098756 -_08098754: - movs r7, 0x76 -_08098756: - ldr r0, _08098790 - ldrb r0, [r0] - cmp r0, 0 - bne _080987C0 - movs r0, 0 - movs r1, 0xD - bl GetScriptVarValue - adds r5, r0, 0 - ldr r4, _08098794 - ldr r2, [r4] - movs r0, 0 - movs r1, 0x18 - bl SetScriptVarValue - ldr r4, [r4] - cmp r4, 0x1 - beq _080987A6 - cmp r4, 0x3 - bne _0809879C - ldr r0, _08098798 - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0 - movs r1, 0xF - bl SetScriptVarValue - b _080987A6 - .align 2, 0 -_08098790: .4byte gUnknown_20398B9 -_08098794: .4byte gUnknown_20398B4 -_08098798: .4byte gUnknown_20398BE -_0809879C: - movs r0, 0 - movs r1, 0xF - adds r2, r5, 0 - bl SetScriptVarValue -_080987A6: - ldr r0, _0809882C - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0 - movs r1, 0xD - bl SetScriptVarValue - ldr r0, _08098830 - ldr r2, [r0] - movs r0, 0 - movs r1, 0xE - bl SetScriptVarValue -_080987C0: - ldr r1, _08098834 - movs r0, 0x2 - str r0, [r1] - ldr r0, _08098838 - movs r1, 0 - str r1, [r0] - ldr r0, _0809883C - str r1, [r0] - ldr r0, _08098840 - movs r4, 0x1 - negs r4, r4 - str r4, [r0] - ldr r2, _08098844 - ldr r1, _0809882C - ldrh r0, [r1] - strh r0, [r2] - strh r4, [r1] - bl sub_809977C - bl sub_809D4B0 - adds r0, r4, 0 - bl GroundSprite_Reset - bl sub_809C63C - bl sub_809A62C - bl GroundMap_Reset - bl sub_809D0BC - bl DeleteGroundEvents - bl DeleteGroundLives - bl DeleteGroundObjects - bl DeleteGroundEffects - bl sub_809C658 - bl nullsub_16 - bl UpdateAdventureAchievements - cmp r7, r4 - beq _08098848 - adds r0, r7, 0 - movs r1, 0 - bl GroundMap_ExecuteEvent - b _08098850 - .align 2, 0 -_0809882C: .4byte gUnknown_20398BE -_08098830: .4byte gUnknown_20398C0 -_08098834: .4byte gUnknown_20398B4 -_08098838: .4byte gUnknown_20398A8 -_0809883C: .4byte gUnknown_20398AC -_08098840: .4byte gUnknown_20398B0 -_08098844: .4byte gUnknown_20398BC -_08098848: - movs r0, 0x66 - movs r1, 0 - bl GroundMap_ExecuteEvent -_08098850: - bl GroundMap_Action - movs r0, 0 - movs r1, 0 - bl sub_8005838 - bl sub_80060EC - bl xxx_call_update_bg_sound_input -_08098864: - bl xxx_call_update_bg_sound_input - bl sub_80A6E68 - ldr r0, _08098890 - ldr r0, [r0] - cmp r0, 0 - beq _080988B2 - ldr r1, _08098894 - ldr r0, [r1] - cmp r0, 0 - ble _0809889C - subs r0, 0x1 - str r0, [r1] - cmp r0, 0 - bgt _080988F8 - ldr r0, _08098898 - ldr r0, [r0] - bl sub_80999D4 - b _080988F8 - .align 2, 0 -_08098890: .4byte gUnknown_20398A8 -_08098894: .4byte gUnknown_20398AC -_08098898: .4byte gUnknown_20398B0 -_0809889C: - bl sub_8099B94 - lsls r0, 24 - cmp r0, 0 - bne _080988F8 - bl sub_809C740 - lsls r0, 24 - cmp r0, 0 - bne _0809897C - b _080988F8 -_080988B2: - ldr r0, _08098968 - ldrb r0, [r0] - cmp r0, 0 - beq _080988F8 - ldr r0, _0809896C - ldrb r0, [r0] - cmp r0, 0 - bne _080988F8 - bl sub_809AFAC - lsls r0, 24 - cmp r0, 0 - bne _080988F8 - ldr r0, _08098970 - ldrh r0, [r0, 0x2] - ldr r2, _08098974 - adds r1, r2, 0 - ands r0, r1 - cmp r0, 0 - bne _080988E4 - bl sub_80048BC - lsls r0, 24 - cmp r0, 0 - beq _080988F8 -_080988E4: - movs r0, 0x72 - movs r1, 0 - bl GroundMap_ExecuteEvent - movs r0, 0x1E - bl GroundMainGameCancelRequest - movs r0, 0x1E - bl FadeOutAllMusic -_080988F8: - bl GroundMap_Action - bl nullsub_124 - bl GroundLives_Action - bl GroundObject_Action - bl GroundEffect_Action - bl nullsub_105 - bl sub_809B474 - bl GroundScript_Unlock - bl sub_809D25C - bl sub_80A59DC - bl sub_809B614 - bl sub_809CA20 - bl sub_80A6E80 - bl sub_8099BE4 - bl sub_8099744 - bl sub_8011860 - ldr r0, _08098978 - ldr r0, [r0] - bl IncrementPlayTime - bl WaitForNextFrameAndAdvanceRNG - bl LoadBufferedInputs - bl nullsub_120 - bl sub_80A5E70 - bl sub_809B638 - bl nullsub_106 - bl sub_80A73EC - bl sub_8099750 - bl sub_8009908 - b _08098864 - .align 2, 0 -_08098968: .4byte gUnknown_20398B9 -_0809896C: .4byte gUnknown_20398B8 -_08098970: .4byte gRealInputs -_08098974: .4byte 0x0000030f -_08098978: .4byte gPlayTimeRef -_0809897C: - bl GroundMap_Reset - movs r7, 0x1 - negs r7, r7 - ldr r0, _080989E8 - ldr r0, [r0] -_08098988: - subs r0, 0x1 - cmp r0, 0x1 - bhi _08098990 - b _080985DC -_08098990: - bl FreeGroundMapAction - bl nullsub_118 - bl FreeGroundLives - bl FreeGroundObjects - bl FreeGroundEffects - bl FreeGroundEvents - bl sub_809CB74 - bl sub_809A610 - bl sub_809C618 - bl sub_80A658C - bl sub_809D508 - bl sub_80A7754 - bl nullsub_119 - bl sub_8099768 - bl nullsub_103 - bl nullsub_16 - ldr r0, _080989EC - ldrb r0, [r0] - cmp r0, 0 - beq _080989FA - ldr r0, _080989E8 - ldr r0, [r0] - cmp r0, 0x9 - beq _080989F0 - cmp r0, 0xA - bne _080989F0 - movs r0, 0x10 - b _08098BD2 - .align 2, 0 -_080989E8: .4byte gUnknown_20398A8 -_080989EC: .4byte gUnknown_20398B9 -_080989F0: - movs r0, 0x1E - bl FadeOutAllMusic - movs r0, 0xF - b _08098BD2 -_080989FA: - ldr r0, _08098A10 - ldr r0, [r0] - subs r0, 0x3 - cmp r0, 0x5 - bls _08098A06 - b _08098BC0 -_08098A06: - lsls r0, 2 - ldr r1, _08098A14 - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08098A10: .4byte gUnknown_20398A8 -_08098A14: .4byte _08098A18 - .align 2, 0 -_08098A18: - .4byte _08098A30 - .4byte _08098A72 - .4byte _08098AA0 - .4byte _08098B08 - .4byte _08098B58 - .4byte _08098B8C -_08098A30: - movs r4, 0x1 - negs r4, r4 - movs r0, 0 - movs r1, 0x13 - adds r2, r4, 0 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x14 - adds r2, r4, 0 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x4 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x4 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0xD - bl GetScriptVarValue - adds r2, r0, 0 - movs r0, 0 - movs r1, 0xF - bl SetScriptVarValue - movs r0, 0x5 - b _08098BD2 -_08098A72: - movs r0, 0 - movs r1, 0x13 - movs r2, 0 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x5 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x5 - bl SetScriptVarValue - movs r2, 0x1 - negs r2, r2 - movs r0, 0 - movs r1, 0x13 - bl SetScriptVarValue - movs r0, 0x6 - b _08098BD2 -_08098AA0: - ldr r5, _08098B04 - movs r1, 0 - ldrsh r0, [r5, r1] - bl sub_80A2654 - adds r4, r0, 0 - lsls r4, 16 - asrs r4, 16 - movs r0, 0 - ldrsh r2, [r5, r0] - movs r0, 0 - movs r1, 0x13 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x14 - adds r2, r4, 0 - bl SetScriptVarValue - ldrh r2, [r5] - movs r0, 0 - movs r1, 0x30 - movs r3, 0x1 - bl SetScriptVarArrayValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x11 - bl GetScriptVarValue - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _08098B00 - movs r0, 0 - movs r1, 0x11 - movs r2, 0 - bl SetScriptVarValue -_08098B00: - movs r0, 0x7 - b _08098BD2 - .align 2, 0 -_08098B04: .4byte gUnknown_20398C4 -_08098B08: - movs r0, 0 - movs r1, 0x13 - movs r2, 0x51 - bl SetScriptVarValue - ldr r0, _08098B54 - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0 - movs r1, 0x14 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x11 - bl GetScriptVarValue - lsls r0, 16 - asrs r0, 16 - cmp r0, 0xA - bne _08098B4E - movs r0, 0 - movs r1, 0x11 - movs r2, 0 - bl SetScriptVarValue -_08098B4E: - movs r0, 0x8 - b _08098BD2 - .align 2, 0 -_08098B54: .4byte gUnknown_20398C4 -_08098B58: - movs r0, 0 - movs r1, 0x13 - movs r2, 0x50 - bl SetScriptVarValue - ldr r0, _08098B88 - ldrb r2, [r0] - movs r0, 0 - movs r1, 0x14 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0x9 - b _08098BD2 - .align 2, 0 -_08098B88: .4byte gUnknown_2039950 -_08098B8C: - movs r0, 0 - movs r1, 0x13 - movs r2, 0x52 - bl SetScriptVarValue - ldr r0, _08098BBC - movs r1, 0 - ldrsh r2, [r0, r1] - movs r0, 0 - movs r1, 0x14 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x18 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0 - movs r1, 0x16 - movs r2, 0x7 - bl SetScriptVarValue - movs r0, 0xA - b _08098BD2 - .align 2, 0 -_08098BBC: .4byte gUnknown_20398C4 -_08098BC0: - movs r0, 0 - movs r1, 0x18 - movs r2, 0x1 - bl SetScriptVarValue - movs r0, 0x10 - bl FadeOutAllMusic - movs r0, 0xE -_08098BD2: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end xxx_script_related_8098468 - - .align 2,0 @ Don't pad with nop diff --git a/ld_script.txt b/ld_script.txt index afd29e6dc..6b5cb86e8 100755 --- a/ld_script.txt +++ b/ld_script.txt @@ -329,7 +329,6 @@ SECTIONS { src/code_8097F40.o(.text); src/exclusive_pokemon.o(.text); src/position_util.o(.text); - asm/code_8098468.o(.text); src/ground_main.o(.text); src/code_8099328.o(.text); src/code_8099360.o(.text); diff --git a/src/ground_main.c b/src/ground_main.c index d0412a992..b2fbbdc48 100644 --- a/src/ground_main.c +++ b/src/ground_main.c @@ -15,9 +15,10 @@ #include "play_time.h" #include "pokemon.h" #include "text_util.h" +#include "code_80A26CC.h" EWRAM_DATA u32 gUnknown_20398A8 = {0}; -EWRAM_DATA u32 gUnknown_20398AC = {0}; +EWRAM_DATA s32 gUnknown_20398AC = {0}; EWRAM_DATA u32 gUnknown_20398B0 = {0}; EWRAM_DATA u32 gUnknown_20398B4 = {0}; EWRAM_DATA u8 gUnknown_20398B8 = {0}; @@ -25,7 +26,7 @@ EWRAM_DATA bool8 gUnknown_20398B9 = {0}; EWRAM_DATA bool8 gScriptMode = {0}; UNUSED EWRAM_DATA static u8 gUnknown_20398BB = {0}; EWRAM_DATA u16 gUnknown_20398BC = {0}; -EWRAM_DATA u16 gUnknown_20398BE = {0}; +EWRAM_DATA s16 gUnknown_20398BE = {0}; EWRAM_DATA u32 gUnknown_20398C0 = {0}; EWRAM_DATA s16 gUnknown_20398C4 = {0}; EWRAM_DATA struct unkStruct_20398C8 gUnknown_20398C8 = {0}; @@ -48,12 +49,6 @@ extern void nullsub_120(); extern void sub_809B638(); extern void nullsub_106(); extern void sub_80A73EC(); -extern void sub_80A6E68(); -extern void GroundMap_Action(); -extern void nullsub_124(); -extern void GroundLives_Action(); -extern void GroundObject_Action(); -extern void GroundEffect_Action(); extern void sub_809CB8C(); extern void sub_8098CC8(); @@ -61,6 +56,427 @@ extern void ClearAllItems_8091FB4(); extern u8 sub_809C730(); extern void sub_8095494(WonderMailSub *param_1, u8 index); +extern u16 gUnknown_2026E4E; + +// TODO: Move these externs to headers +extern void GroundSprite_Reset(s32); +extern s16 sub_8098FCC(u32 unused); +extern s16 sub_80A2654(s16 r0); +extern void sub_809A71C(s32); +extern bool8 sub_809AFAC(void); +extern bool8 sub_80048BC(void); +void FadeOutAllMusic(u16 speed); +extern u8 sub_80023E4(u32); +extern bool8 sub_809C740(void); +extern bool8 sub_8099B94(void); +extern void FreeGroundMapAction(void); +extern void nullsub_118(void); +extern void FreeGroundLives(void); +extern void FreeGroundObjects(void); +extern void FreeGroundEffects(void); +extern void FreeGroundEvents(void); +extern void sub_809CB74(void); +extern void sub_809A610(void); +extern void sub_809C618(void); +extern void sub_80A658C(void); +extern void sub_809D508(void); +extern void sub_80A7754(void); +extern void nullsub_119(void); +extern void sub_8099768(void); +extern void nullsub_103(void); +extern void sub_8099648(void); +extern void sub_809975C(void); +extern void sub_809D0AC(void); +extern void sub_80A7744(void); +extern void sub_809D490(void); +extern void sub_80A62F0(void); +extern void sub_809C5C4(void); +extern void sub_809A560(void); +extern void sub_809CB50(void); +extern void AllocGroundMapAction(void); +extern void nullsub_117(void); +extern void AllocGroundEvents(void); +extern void AllocGroundLives(void); +extern void AllocGroundObjects(void); +extern void AllocGroundEffects(void); +extern void sub_809A62C(void); +extern void nullsub_124(void); +extern void GroundLives_Action(void); +extern void GroundObject_Action(void); +extern void GroundEffect_Action(void); +extern void nullsub_105(void); +extern void sub_809B474(void); +extern void GroundScript_Unlock(); +extern void sub_809D25C(void); +extern void sub_80A59DC(void); +extern void sub_809B614(void); +extern void sub_809CA20(void); +extern void sub_80A6E80(void); +extern void sub_8099BE4(void); +extern void sub_8099744(void); +extern void sub_8011860(void); +extern void IncrementPlayTime(struct PlayTimeStruct *); +extern void WaitForNextFrameAndAdvanceRNG(void); +extern void LoadBufferedInputs(void); +extern void nullsub_120(void); +extern void sub_80A5E70(void); +extern void sub_809B638(void); +extern void nullsub_106(void); +extern void sub_80A73EC(void); +extern void sub_8099750(void); +extern void sub_8009908(void); +extern void GroundMap_Reset(void); +extern void sub_809D0BC(void); +extern void DeleteGroundEvents(void); +extern void DeleteGroundLives(void); +extern void DeleteGroundObjects(void); +extern void DeleteGroundEffects(void); +extern void sub_809C658(void); +extern void nullsub_16(void); +extern void UpdateAdventureAchievements(void); +extern void xxx_call_update_bg_sound_input(void); +extern void sub_80A6E68(void); +extern void sub_80060EC(void); +extern void sub_801180C(void); +extern void ScriptPrintNullTextbox(void); +extern void sub_809977C(void); +extern void GroundMap_ExecuteEvent(s32, u32); +extern void UpdateFadeInTile(s32); +extern void GroundMap_Action(void); +extern void sub_8098C58(void); +extern void sub_8001D88(void); +extern u32 GroundMainGameCancelRequest(u32 r0); +extern void sub_80999D4(s32); +extern void sub_809D4B0(void); +extern void sub_809C63C(void); +extern void sub_8005838(s32, s32); + +u32 xxx_script_related_8098468(s32 param_1) +{ + s32 r7; + s32 varE; + + gUnknown_20398B4 = param_1; + gUnknown_20398B9 = 0; + gUnknown_20398B8 = 1; + gScriptMode = 0; + + switch (param_1) { + case 0xd: + gScriptMode = 1; + gUnknown_20398B8 = 0; + gUnknown_20398B9 = 1; + break; + case 0xe: + gUnknown_20398B8 = 1; + gUnknown_20398B9 = 1; + break; + case 0xf: + gUnknown_20398B8 = 1; + gUnknown_20398B9 = 1; + break; + case 0x10: { + s32 local_1c; + u32 auStack24; + + GetScriptVarScenario(3,&local_1c,&auStack24); + gUnknown_20398B8 = local_1c == 0; + gUnknown_20398B9 = 1; + break; + } + case 0x11: + gUnknown_20398B8 = 0; + gUnknown_20398B9 = 1; + break; + default: + break; + } + sub_801180C(); + if (gUnknown_20398B9 == 0 && !sub_80023E4(0xd)) { + FadeOutAllMusic(0x10); + } + gUnknown_2026E4E = 0x808; + UpdateFadeInTile(0); + sub_8099648(); + sub_809975C(); + sub_809D0AC(); + sub_80A7744(); + sub_809D490(); + sub_80A62F0(); + sub_809C5C4(); + sub_809A560(); + sub_809CB50(); + AllocGroundMapAction(); + nullsub_117(); + AllocGroundEvents(); + AllocGroundLives(); + AllocGroundObjects(); + AllocGroundEffects(); + sub_809A62C(); + gUnknown_203B49C = 0; + gUnknown_203B49D = 0; + gUnknown_20398A8 = 1; + gUnknown_20398AC = 0; + gUnknown_20398B0 = -1; + gUnknown_20398BE = GetScriptVarValue(0,0xd); + varE = GetScriptVarValue(0,0xe); + gUnknown_20398C0 = varE; + gUnknown_20398C4 = -1; + r7 = -1; + while (gUnknown_20398A8 - 1 <= 1) { + sub_809A71C(-1); + ScriptPrintNullTextbox(); + sub_809977C(); + switch (gUnknown_20398B4) { + case 0: + sub_8098C58(); + gUnknown_20398B4 = 1; + break; + case 2: + case 3: + sub_8001D88(); + break; + case 5: + r7 = 0x70; + break; + case 9: + case 10: + case 0xb: + case 0xc: { + s32 scriptVar13; + + SetScriptVarValue(0,0x16,gUnknown_20398B4); + SetScriptVarValue(0,0x25,0); + sub_8098C58(); + UpdateScriptVarWithImmediate(0,0x15,1,2); + scriptVar13 = (s16)GetScriptVarValue(0,0x13); + if (scriptVar13 != -1) { + s32 var; + const DungeonInfo *dungInfo; + if (scriptVar13 == 0x51) { + dungInfo = GetDungeonInfo_80A2608((s16)GetScriptVarValue(0,0x14)); + } + else { + dungInfo = GetDungeonInfo_80A2608(scriptVar13); + } + r7 = dungInfo->unkA; + if (gUnknown_20398B4 == 9) { + SetScriptVarArrayValue(0,0x31,(u16) scriptVar13,1); + } + var = sub_8098FCC(gUnknown_20398B4); + if (var != -1) { + gUnknown_20398BE = var; + gUnknown_20398C0 = 0; + } + } + break; + } + case 0xd: + sub_8098C58(); + gUnknown_20398B4 = 1; + SetScriptVarValue(0,0x18,1); + SetScriptVarValue(0,0xf,0); + SetScriptVarValue(0,0xd,0); + SetScriptVarValue(0,0xe,0); + r7 = 0x71; + break; + case 0xe: + r7 = 0x73; + break; + case 0xf: + r7 = 0x74; + break; + case 0x10: + r7 = 0x75; + break; + case 0x11: + r7 = 0x76; + break; + } + if (gUnknown_20398B9 == 0) { + s32 varD = GetScriptVarValue(0,0xd); + SetScriptVarValue(0,0x18,gUnknown_20398B4); + if (gUnknown_20398B4 != 1) { + if (gUnknown_20398B4 == 3) { + SetScriptVarValue(0,0xf,gUnknown_20398BE); + } + else { + SetScriptVarValue(0,0xf,varD); + } + } + SetScriptVarValue(0,0xd,gUnknown_20398BE); + SetScriptVarValue(0,0xe,gUnknown_20398C0); + } + gUnknown_20398B4 = 2; + gUnknown_20398A8 = 0; + gUnknown_20398AC = 0; + gUnknown_20398B0 = -1; + gUnknown_20398BC = gUnknown_20398BE; + gUnknown_20398BE = -1; + sub_809977C(); + sub_809D4B0(); + GroundSprite_Reset(-1); + sub_809C63C(); + sub_809A62C(); + GroundMap_Reset(); + sub_809D0BC(); + DeleteGroundEvents(); + DeleteGroundLives(); + DeleteGroundObjects(); + DeleteGroundEffects(); + sub_809C658(); + nullsub_16(); + UpdateAdventureAchievements(); + if (r7 != -1) { + GroundMap_ExecuteEvent(r7,0); + } + else { + GroundMap_ExecuteEvent(0x66,0); + } + GroundMap_Action(); + sub_8005838(0,0); + sub_80060EC(); + xxx_call_update_bg_sound_input(); + while ( 1 ) { + xxx_call_update_bg_sound_input(); + sub_80A6E68(); + if (gUnknown_20398A8 != 0) { + if (gUnknown_20398AC > 0) { + gUnknown_20398AC--; + if (gUnknown_20398AC < 1) { + sub_80999D4(gUnknown_20398B0); + } + } + else if (!sub_8099B94()) { + if (sub_809C740()) + break; + } + } + else if (gUnknown_20398B9 != 0 && gUnknown_20398B8 == 0 && !sub_809AFAC()) { + u16 pressed = gRealInputs.pressed; + if ((pressed & (A_BUTTON | B_BUTTON | SELECT_BUTTON | START_BUTTON | R_BUTTON | L_BUTTON)) || sub_80048BC()) { + GroundMap_ExecuteEvent(0x72,0); + GroundMainGameCancelRequest(0x1e); + FadeOutAllMusic(0x1e); + } + } + GroundMap_Action(); + nullsub_124(); + GroundLives_Action(); + GroundObject_Action(); + GroundEffect_Action(); + nullsub_105(); + sub_809B474(); + GroundScript_Unlock(); + sub_809D25C(); + sub_80A59DC(); + sub_809B614(); + sub_809CA20(); + sub_80A6E80(); + sub_8099BE4(); + sub_8099744(); + sub_8011860(); + IncrementPlayTime(gPlayTimeRef); + WaitForNextFrameAndAdvanceRNG(); + LoadBufferedInputs(); + nullsub_120(); + sub_80A5E70(); + sub_809B638(); + nullsub_106(); + sub_80A73EC(); + sub_8099750(); + sub_8009908(); + } + + GroundMap_Reset(); + r7 = -1; + } + + FreeGroundMapAction(); + nullsub_118(); + FreeGroundLives(); + FreeGroundObjects(); + FreeGroundEffects(); + FreeGroundEvents(); + sub_809CB74(); + sub_809A610(); + sub_809C618(); + sub_80A658C(); + sub_809D508(); + sub_80A7754(); + nullsub_119(); + sub_8099768(); + nullsub_103(); + nullsub_16(); + if (gUnknown_20398B9 != 0) { + if (gUnknown_20398A8 == 9) { + FadeOutAllMusic(0x1e); + return 0xf; + } + else if (gUnknown_20398A8 == 10) { + return 0x10; + } + else { + FadeOutAllMusic(0x1e); + return 0xf; + } + } + else { + switch (gUnknown_20398A8) { + case 3: + SetScriptVarValue(0,0x13,-1); + SetScriptVarValue(0,0x14,-1); + SetScriptVarValue(0,0x18,4); + SetScriptVarValue(0,0x16,4); + SetScriptVarValue(0,0xf,GetScriptVarValue(0,0xd)); + return 5; + case 4: + SetScriptVarValue(0,0x13,0); + SetScriptVarValue(0,0x18,5); + SetScriptVarValue(0,0x16,5); + SetScriptVarValue(0,0x13,-1); + return 6; + case 5: { + s32 sVar2 = sub_80A2654(gUnknown_20398C4); + SetScriptVarValue(0,0x13,gUnknown_20398C4); + SetScriptVarValue(0,0x14,sVar2); + SetScriptVarArrayValue(0,0x30,(u16) gUnknown_20398C4,1); + SetScriptVarValue(0,0x18,7); + SetScriptVarValue(0,0x16,7); + if ((s16)GetScriptVarValue(0,0x11) == 10) { + SetScriptVarValue(0,0x11,0); + } + return 7; + } + case 6: + SetScriptVarValue(0,0x13,0x51); + SetScriptVarValue(0,0x14,gUnknown_20398C4); + SetScriptVarValue(0,0x18,7); + SetScriptVarValue(0,0x16,7); + if ((s16)GetScriptVarValue(0,0x11) == 10) { + SetScriptVarValue(0,0x11,0); + } + return 8; + case 7: + SetScriptVarValue(0,0x13,0x50); + SetScriptVarValue(0,0x14,gUnknown_2039950); + SetScriptVarValue(0,0x18,7); + SetScriptVarValue(0,0x16,7); + return 9; + case 8: + SetScriptVarValue(0,0x13,0x52); + SetScriptVarValue(0,0x14,gUnknown_20398C4); + SetScriptVarValue(0,0x18,7); + SetScriptVarValue(0,0x16,7); + return 10; + default: + SetScriptVarValue(0,0x18,1); + FadeOutAllMusic(0x10); + return 0xe; + } + } +} + void sub_8098BDC(void) { sub_809B57C();