From d92ff543d129fbf3b6951fdb3aa5c56912885ca1 Mon Sep 17 00:00:00 2001 From: AnonymousRandomPerson Date: Sun, 21 Jun 2026 19:14:04 -0400 Subject: [PATCH] Decomped SetDungeonConquest Decomped by @EditaNEmilis --- .../{main_0204CDB8.inc => main_0204CF9C.inc} | 15 ++------ asm/main_0200EB30.s | 1 + asm/{main_0204CDB8.s => main_0204CF9C.s} | 34 +------------------ include/script_variable_2.h | 1 + main.lsf | 2 +- src/script_variable_2.c | 22 ++++++++++++ 6 files changed, 29 insertions(+), 46 deletions(-) rename asm/include/{main_0204CDB8.inc => main_0204CF9C.inc} (72%) rename asm/{main_0204CDB8.s => main_0204CF9C.s} (96%) diff --git a/asm/include/main_0204CDB8.inc b/asm/include/main_0204CF9C.inc similarity index 72% rename from asm/include/main_0204CDB8.inc rename to asm/include/main_0204CF9C.inc index b66b04c9..68871be9 100644 --- a/asm/include/main_0204CDB8.inc +++ b/asm/include/main_0204CF9C.inc @@ -1,12 +1,8 @@ #pragma once -.public _0209E008 -.public _0209E010 -.public _0209E011 .public ARM9_UNKNOWN_TABLE__NA_209E164 .public BitstreamDebug .public CopyBitsFrom .public CopyBitsTo -.public Debug_Print0 .public FemaleToMaleForm .public FileClose .public FileRom_HandleOpen @@ -15,22 +11,17 @@ .public FileRom_InitDataTransfer .public FileRom_StopDataTransfer .public FileRom_Veneer_FileInit -.public GetDexNumber -.public GetGameMode .public GLOBAL_PROGRESS_PTR +.public GetDexNumber .public InitBitstreamForRead .public InitBitstreamForWrite .public KAOMADO_FILEPATH .public KAOMADO_STREAM -.public LoadScriptVariableValue .public LoadScriptVariableValueAtIndex .public MemAlloc .public MemZero .public PORTRAIT_LAYOUTS -.public SaveScriptVariableValue .public SaveScriptVariableValueAtIndex -.public SCENARIO_FLAG_BACKUP_DEBUG_MSG -.public SCENARIO_FLAG_RESUME_DEBUG_MSG -.public SetAdventureLogCompleted .public VERSION_EXCLUSIVE_MONSTERS -.public ZeroInitScriptVariable +.public _0209E010 +.public _0209E011 diff --git a/asm/main_0200EB30.s b/asm/main_0200EB30.s index 40738a1f..f226b9c6 100644 --- a/asm/main_0200EB30.s +++ b/asm/main_0200EB30.s @@ -3,6 +3,7 @@ .text +; https://decomp.me/scratch/FPdo0 arm_func_start sub_0200EB64 sub_0200EB64: ; 0x0200EB64 ldr r1, _0200EB88 ; =ITEM_DATA_TABLE_PTRS diff --git a/asm/main_0204CDB8.s b/asm/main_0204CF9C.s similarity index 96% rename from asm/main_0204CDB8.s rename to asm/main_0204CF9C.s index 5c88b60d..744ba889 100644 --- a/asm/main_0204CDB8.s +++ b/asm/main_0204CF9C.s @@ -1,40 +1,8 @@ .include "asm/macros.inc" - .include "main_0204CDB8.inc" + .include "main_0204CF9C.inc" .text - arm_func_start SetDungeonConquest -SetDungeonConquest: ; 0x0204CF38 - stmdb sp!, {r3, r4, r5, r6, r7, lr} - mov r0, r0, lsl #0x10 - mov r3, r1 - mov r2, r0, lsr #0x10 - mov r0, #0 - mov r1, #0x52 - bl SaveScriptVariableValueAtIndex - mov r7, #0 - ldr r6, _0204CF98 ; =_0209E008 - mov r5, r7 - mov r4, #0x52 -_0204CF64: - ldrb r2, [r6, r7] - add r7, r7, #1 - cmp r2, #0xff - bne _0204CF80 - mov r0, #0x23 - bl SetAdventureLogCompleted - ldmia sp!, {r3, r4, r5, r6, r7, pc} -_0204CF80: - mov r0, r5 - mov r1, r4 - bl LoadScriptVariableValueAtIndex - cmp r0, #0 - bne _0204CF64 - ldmia sp!, {r3, r4, r5, r6, r7, pc} - .align 2, 0 -_0204CF98: .word _0209E008 - arm_func_end SetDungeonConquest - arm_func_start GetDungeonMode GetDungeonMode: ; 0x0204CF9C stmdb sp!, {r4, lr} diff --git a/include/script_variable_2.h b/include/script_variable_2.h index 3442df7d..5873d622 100644 --- a/include/script_variable_2.h +++ b/include/script_variable_2.h @@ -10,5 +10,6 @@ void sub_0204CE48(u32 idx, s32 value); void InitDungeonListScriptVars(void); bool8 sub_0204CEE0(u32 idx); bool8 sub_0204CF0C(u32 idx); +void SetDungeonConquest(u32 dungeon_id, s32 bit_value); #endif PMDSKY_SCRIPT_VARIABLE_2_H diff --git a/main.lsf b/main.lsf index bd0aa55b..bb296097 100644 --- a/main.lsf +++ b/main.lsf @@ -102,7 +102,7 @@ Static main Object src/progression.o Object src/scenario_flag.o Object src/script_variable_2.o - Object asm/main_0204CDB8.o + Object asm/main_0204CF9C.o Object src/main_0204DA2C.o Object asm/main_0204DBA0.o Object src/main_0204DD80.o diff --git a/src/script_variable_2.c b/src/script_variable_2.c index 46f65edf..2650012b 100644 --- a/src/script_variable_2.c +++ b/src/script_variable_2.c @@ -3,6 +3,9 @@ #include "enums.h" #include "game_mode.h" +extern void SetAdventureLogCompleted(u32); +extern u8 _0209E008[0x10]; + void InitWorldMapScriptVars() { ZeroInitScriptVariable(0, VAR_WORLD_MAP_MARK_LIST_NORMAL); ZeroInitScriptVariable(0, VAR_WORLD_MAP_MARK_LIST_SPECIAL); @@ -57,4 +60,23 @@ bool8 sub_0204CF0C(u32 idx) { return LoadScriptVariableValueAtIndex(0,VAR_DUNGEON_CONQUEST_LIST, idx) != 0; } +void SetDungeonConquest(u32 dungeon_id, s32 bit_value) +{ + u32 var_r7; + u8 byte; + SaveScriptVariableValueAtIndex(0, VAR_DUNGEON_CONQUEST_LIST, (u16)dungeon_id, bit_value); + + var_r7 = 0; + while(1) + { + byte = _0209E008[var_r7++]; + if (byte == 0xFF) { + SetAdventureLogCompleted(0x23); + return; + } + if (LoadScriptVariableValueAtIndex(0, VAR_DUNGEON_CONQUEST_LIST, byte) == 0) { + return; + } + } +}