Match xxx_script_related_8098468

This commit is contained in:
DizzyEggg
2025-05-16 17:10:07 +02:00
parent 2e724efa76
commit 08b93bcdbf
3 changed files with 424 additions and 800 deletions

View File

@@ -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

View File

@@ -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);

View File

@@ -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();