Merge pull request #236 from slaw-22/DungeonInit2

Decomp more dungeon initialisation funcs
This commit is contained in:
AnonymousRandomPerson 2026-01-01 14:45:31 -05:00 committed by GitHub
commit 20af3faad0
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
11 changed files with 2941 additions and 2945 deletions

View File

@ -40,7 +40,6 @@
.public sub_020509BC
.public sub_0205633C
.public sub_02056360
.public sub_0205B77C
.public sub_0205BB7C
.public sub_0205BD14
.public sub_0205F00C

View File

@ -1,4 +1,205 @@
#pragma once
.public ARM9_UNKNOWN_TABLE__NA_20A68BC
.public AURA_BOW_STAT_BOOST
.public AllocateTemp1024ByteBufferFromPool
.public BulkItemToItem
.public CAFE_MISSION_REWARD_TYPE_WEIGHTS
.public CanEvolve
.public CloseCollectionMenu
.public ClosePortraitBox
.public Copy16BitsFrom
.public CopyBitsFrom
.public CopyBitsTo
.public CopyFrameTypeOption
.public CopyMovesetFrom
.public CopyMovesetTo
.public CopyNStringFromId
.public CreateCollectionMenu
.public CreatePortraitBox
.public DEFAULT_MISSION_REWARD_TYPE_WEIGHTS
.public DEF_SCARF_STAT_BOOST
.public DEMO_TEAMS
.public Debug_GetDebugFlag
.public Debug_Print0
.public DexNumbersEqual
.public DirectoryFileMngr_ExtractAllDirectoryFiles
.public DirectoryFileMngr_OpenDirectoryFile
.public DrawTextInWindow
.public DungeonGoesUp
.public DungeonSwapIdToIdx
.public ENTITIES
.public EVENTS
.public EnableAllLearnableIqSkills
.public EnqueueRender3dTiling
.public ExplorersOfSkyMain
.public FemaleToMaleForm
.public FindItemInInventory
.public GetAbility
.public GetAbilityDescStringId
.public GetActiveRosterIndex
.public GetActiveTeamMember
.public GetAdventureLogDungeonFloor
.public GetBaseForm
.public GetBaseFormBurmyWormadamShellosGastrodonCherrim
.public GetBodySize
.public GetCategoryString
.public GetDebugSpecialEpisodeNumber
.public GetDungeonMode
.public GetEvoParameters
.public GetExclusiveItem
.public GetFirstMatchingMemberIdx
.public GetHero
.public GetHeroMemberIdx
.public GetHpBoostFromExclusiveItems
.public GetIqGroup
.public GetIqSkillStringId
.public GetLanguageType
.public GetLearnableIqSkills
.public GetLvlUpEntry
.public GetMainCharacter1
.public GetMainCharacter1MemberIdx
.public GetMainCharacter2
.public GetMainCharacter2MemberIdx
.public GetMainCharacter3
.public GetMainCharacter3MemberIdx
.public GetMainTeamNameWithCheck
.public GetMaxItemsAllowed
.public GetMaxMembersAllowed
.public GetMaxReachedFloor
.public GetMaxRescueAttempts
.public GetMonsterGenderVeneer
.public GetNameRaw
.public GetNameString
.public GetNbFloors
.public GetPartner
.public GetPartnerMemberIdx
.public GetPartyMembers
.public GetRank
.public GetResolvedPerformanceProgressFlag
.public GetScenarioBalance
.public GetSecondFormIfValid
.public GetSpecialEpisodeType
.public GetStringFromFileVeneer
.public GetTeamMember
.public GetType
.public GetTypeStringId
.public GlobalProgressAlloc
.public HandleSir0TranslationVeneer
.public HasMonsterBeenAttackedInDungeons
.public IQ_GROUP_SKILLS
.public IQ_SKILLS
.public ITEM_DELIVERY_TABLE
.public InitKaomadoStream
.public InitOptionsVeneer
.public InitPreprocessorArgs
.public InitScriptVariableValues
.public InitSpecialEpisodeHero
.public InitWanTable
.public IqSkillFlagTest
.public IsAuraBow
.public IsCollectionMenuActive
.public IsForbiddenFloor
.public IsInvalidForMission
.public IsItemAvailableInDungeonGroup
.public IsItemInBag
.public IsItemInTimeDarkness
.public IsItemInTreasureBoxes
.public IsItemValidVeneer
.public IsMonsterOnTeam
.public IsMonsterValid
.public IsMovesetValid
.public IsMovesetValidInTimeDarkness
.public IsSpecialEpisodeBeaten
.public IsSpecialEpisodeOpen
.public IsStorableItem
.public IsStoryBeforePoint
.public IsThrownItem
.public IsValidTargetItem
.public JOB_MENU_ITEMS_1
.public JOB_MENU_ITEMS_10
.public JOB_MENU_ITEMS_11
.public JOB_MENU_ITEMS_12
.public JOB_MENU_ITEMS_13
.public JOB_MENU_ITEMS_2
.public JOB_MENU_ITEMS_3
.public JOB_MENU_ITEMS_4
.public JOB_MENU_ITEMS_5
.public JOB_MENU_ITEMS_6
.public JOB_MENU_ITEMS_7
.public JOB_MENU_ITEMS_8
.public JOB_MENU_ITEMS_9
.public JOB_WINDOW_PARAMS_1
.public JOB_WINDOW_PARAMS_2
.public JoinedAtRangeCheck2
.public KeyWaitInit
.public LoadFileFromRom
.public LoadOverlay
.public LoadScriptVariableValue
.public LoadTblTalk
.public LoadWazaP
.public MISSION_BANNED_MONSTERS
.public MISSION_BANNED_STORY_MONSTERS
.public MISSION_DELIVER_LIST_PTR
.public MISSION_DUNGEON_UNLOCK_TABLE
.public MISSION_MENU_STRING_IDS_1
.public MISSION_MENU_STRING_IDS_2
.public MISSION_RANK_POINTS
.public MISSION_STRING_IDS
.public MISSION_VALIDATION_FUNCTION_LIST
.public MUNCH_BELT_STAT_BOOST
.public MainGame
.public MemAlloc
.public MemFree
.public MemZero
.public MemcpySimple
.public MemsetSimple
.public MissionToWonderMailPassword
.public MultiplyByFixedPoint
.public NO_SEND_ITEM_TABLE
.public NoteLoadBase
.public NoteSaveBase
.public OUTLAW_MISSION_REWARD_TYPE_WEIGHTS
.public OverlayIsLoaded
.public POWER_BAND_STAT_BOOST
.public PlaySeVolumeWrapper
.public PreprocessString
.public PreprocessStringFromId
.public RANK_STRING_PTR_TABLE
.public REMOTE_STRING_PTR_TABLE
.public Rand16Bit
.public RandInt
.public RandIntSafe
.public RandRangeSafe
.public ReadSaveHeader
.public RemoveFirstUnequippedItemOfType
.public RetrieveFromItemList2
.public SPECIAL_BAND_STAT_BOOST
.public STATUS_NAME_STRING_IDS
.public SaveScriptVariableValue
.public SetAdventureLogStructLocation
.public SetBothScreensWindowsColor
.public SetCollectionMenuField0x1B2
.public SetGameMode
.public SetPokemonJoined
.public SetQuestionMarks
.public SetScenarioProgressScriptVar
.public SetSpecialEpisodeOpen
.public SetSpecialEpisodeType
.public ShowPortraitInPortraitBox
.public StrcpyName
.public StringFromId
.public StrncmpSimple
.public StrncpyName
.public StrncpySimple
.public StrncpySimpleNoPadSafe
.public TACTIC_NAME_STRING_IDS
.public TEAM_MEMBER_TABLE_PTR
.public UnloadFile
.public UnloadOverlay
.public UpdateWindow
.public WAN_TABLE
.public ZINC_BAND_STAT_BOOST
.public ZeroInitScriptVariable
.public _020A1870
.public _020A18FC
.public _020A1904
@ -79,17 +280,6 @@
.public _020A937C
.public _020A9394
.public _020A93B4
.public _020A94BC
.public _020A94C6
.public _020A94D2
.public _020A9E80
.public _020A9EE0
.public _020A9F34
.public _020A9F48
.public _020A9F5C
.public _020A9F70
.public _020A9F84
.public _020A9F98
.public _020AFC70
.public _020B0A54
.public _020B0AD8
@ -119,13 +309,6 @@
.public _020B0B3F
.public _020B0B44
.public _020B0B48
.public _020B0B4C
.public _020B0B5C
.public _020B0B60
.public _020B0B6C
.public _020B0B70
.public _020B0B74
.public _020B1290
.public _022B57BC
.public _022B57C0
.public _022B580C
@ -133,195 +316,8 @@
.public _022B6F10
.public _022B7310
.public _022B7320
.public _022B7331
.public _022B7334
.public _022B7340
.public _022B734C
.public _022B7A30
.public _022B8330
.public _022B9130
.public _s32_div_f
.public AllocateTemp1024ByteBufferFromPool
.public ARM9_UNKNOWN_TABLE__NA_20A68BC
.public AURA_BOW_STAT_BOOST
.public BulkItemToItem
.public CAFE_MISSION_REWARD_TYPE_WEIGHTS
.public CanEvolve
.public CloseCollectionMenu
.public ClosePortraitBox
.public Copy16BitsFrom
.public CopyBitsFrom
.public CopyBitsTo
.public CopyMovesetFrom
.public CopyMovesetTo
.public CopyNStringFromId
.public CosAbs4096
.public CreateCollectionMenu
.public CreatePortraitBox
.public Debug_GetDebugFlag
.public Debug_Print0
.public DEF_SCARF_STAT_BOOST
.public DEFAULT_MISSION_REWARD_TYPE_WEIGHTS
.public DelayWteFree
.public DeleteWanTableEntryVeneer
.public DEMO_TEAMS
.public DexNumbersEqual
.public DirectoryFileMngr_ExtractAllDirectoryFiles
.public DirectoryFileMngr_OpenDirectoryFile
.public DrawTextInWindow
.public DRIVER_WORK
.public DseBgm_StopAll
.public DseBgm_SysSetupNoteList
.public DseDriver_StartMainThread
.public DseDriver_StartTickTimer
.public DseMem_Clear
.public DseMem_Quit
.public DseSe_StopAll
.public DseSe_SysReset
.public DseSequence_PauseList
.public DseSwd_SysInit
.public DseSwd_SysQuit
.public DseVoice_ResetAll
.public DseVoice_ResetHW
.public DUNGEON_SWAP_ID_TABLE
.public DungeonGoesUp
.public EnableAllLearnableIqSkills
.public EnqueueRender3dTiling
.public ENTITIES
.public EVENTS
.public ExplorersOfSkyMain
.public FemaleToMaleForm
.public FindItemInInventory
.public GetAbility
.public GetAbilityDescStringId
.public GetActiveRosterIndex
.public GetActiveTeamMember
.public GetAdventureLogDungeonFloor
.public GetBaseForm
.public GetBaseFormBurmyWormadamShellosGastrodonCherrim
.public GetBodySize
.public GetCategoryString
.public GetDebugSpecialEpisodeNumber
.public GetDungeonMode
.public GetEvoParameters
.public GetExclusiveItem
.public GetExecuteSpecialEpisodeType
.public GetFirstMatchingMemberIdx
.public GetHero
.public GetHeroMemberIdx
.public GetHpBoostFromExclusiveItems
.public GetIqGroup
.public GetIqSkillStringId
.public GetLanguageType
.public GetLearnableIqSkills
.public GetLvlUpEntry
.public GetMainCharacter1
.public GetMainCharacter1MemberIdx
.public GetMainCharacter2
.public GetMainCharacter2MemberIdx
.public GetMainCharacter3
.public GetMainCharacter3MemberIdx
.public GetMainTeamNameWithCheck
.public GetMaxItemsAllowed
.public GetMaxMembersAllowed
.public GetMaxReachedFloor
.public GetMaxRescueAttempts
.public GetMonsterGenderVeneer
.public GetNameRaw
.public GetNameString
.public GetNbFloors
.public GetPartner
.public GetPartnerMemberIdx
.public GetPartyMembers
.public GetResolvedPerformanceProgressFlag
.public GetRank
.public GetScenarioBalance
.public GetSecondFormIfValid
.public GetSpecialEpisodeType
.public GetStringFromFileVeneer
.public GetTeamMember
.public GetType
.public GetTypeStringId
.public GlobalProgressAlloc
.public HandleSir0TranslationVeneer
.public HasMonsterBeenAttackedInDungeons
.public InitAnimationControlWithSet__0201C0B0
.public InitKaomadoStream
.public InitPreprocessorArgs
.public InitScriptVariableValues
.public InitSpecialEpisodeHero
.public InitWanTable
.public IQ_GROUP_SKILLS
.public IQ_SKILLS
.public IqSkillFlagTest
.public IsAuraBow
.public IsCollectionMenuActive
.public IsForbiddenFloor
.public IsInvalidForMission
.public IsItemAvailableInDungeonGroup
.public IsItemInBag
.public IsItemInTimeDarkness
.public IsItemInTreasureBoxes
.public IsItemValidVeneer
.public IsMonsterOnTeam
.public IsMonsterValid
.public IsMovesetValid
.public IsMovesetValidInTimeDarkness
.public IsSpecialEpisodeBeaten
.public IsSpecialEpisodeOpen
.public IsStorableItem
.public IsStoryBeforePoint
.public IsThrownItem
.public IsValidTargetItem
.public ITEM_DELIVERY_TABLE
.public JOB_MENU_ITEMS_1
.public JOB_MENU_ITEMS_10
.public JOB_MENU_ITEMS_11
.public JOB_MENU_ITEMS_12
.public JOB_MENU_ITEMS_13
.public JOB_MENU_ITEMS_2
.public JOB_MENU_ITEMS_3
.public JOB_MENU_ITEMS_4
.public JOB_MENU_ITEMS_5
.public JOB_MENU_ITEMS_6
.public JOB_MENU_ITEMS_7
.public JOB_MENU_ITEMS_8
.public JOB_MENU_ITEMS_9
.public JOB_WINDOW_PARAMS_1
.public JOB_WINDOW_PARAMS_2
.public JoinedAtRangeCheck2
.public KeyWaitInit
.public LoadFileFromRom
.public LoadOverlay
.public LoadScriptVariableValue
.public LoadTblTalk
.public LoadWanTableEntry
.public LoadWazaP
.public LoadWteFromRom
.public MainGame
.public MAP_MARKER_PLACEMENTS
.public MemAlloc
.public MemcpySimple
.public MemFree
.public memset
.public MemsetSimple
.public MemZero
.public MISSION_BANNED_MONSTERS
.public MISSION_BANNED_STORY_MONSTERS
.public MISSION_DELIVER_LIST_PTR
.public MISSION_DUNGEON_UNLOCK_TABLE
.public MISSION_MENU_STRING_IDS_1
.public MISSION_MENU_STRING_IDS_2
.public MISSION_RANK_POINTS
.public MISSION_STRING_IDS
.public MISSION_VALIDATION_FUNCTION_LIST
.public MissionToWonderMailPassword
.public MultiplyByFixedPoint
.public MUNCH_BELT_STAT_BOOST
.public NO_SEND_ITEM_TABLE
.public NoteLoadBase
.public NoteSaveBase
.public OUTLAW_MISSION_REWARD_TYPE_WEIGHTS
.public ov00_022BE0C8
.public ov01_02337B3C
.public ov01_02337B68
@ -335,51 +331,11 @@
.public ov03_0233CDC8
.public ov03_0233CDD8
.public ov03_0233CDE4
.public ov10_022C2340
.public ov10_022C23B0
.public ov10_022C23EC
.public ov10_022C2450
.public ov10_022C24DC
.public ov11_022E82CC
.public ov11_022E96E4
.public OverlayIsLoaded
.public PlaySeVolumeWrapper
.public POWER_BAND_STAT_BOOST
.public PreprocessString
.public PreprocessStringFromId
.public Rand16Bit
.public RandInt
.public RandIntSafe
.public RandRangeSafe
.public RANK_STRING_PTR_TABLE
.public ReadSaveHeader
.public REMOTE_STRING_PTR_TABLE
.public RemoveFirstUnequippedItemOfType
.public RetrieveFromItemList2
.public SaveScriptVariableValue
.public SetAdventureLogStructLocation
.public SetAnimationForAnimationControl
.public SetBothScreensWindowsColor
.public SetCollectionMenuField0x1B2
.public SetPokemonJoined
.public SetQuestionMarks
.public SetScenarioProgressScriptVar
.public SetSpecialEpisodeOpen
.public SetSpecialEpisodeType
.public SetSpriteIdForAnimationControl
.public ShowPortraitInPortraitBox
.public SinAbs4096
.public SPECIAL_BAND_STAT_BOOST
.public STATUS_NAME_STRING_IDS
.public strcat
.public strcpy
.public StrcpyName
.public StringFromId
.public strncat
.public StrncmpSimple
.public StrncpyName
.public StrncpySimple
.public StrncpySimpleNoPadSafe
.public sub_02001AB0
.public sub_020022C4
.public sub_020022D0
@ -411,26 +367,13 @@
.public sub_02014B74
.public sub_02014C20
.public sub_0201BB3C
.public sub_0201CF5C
.public sub_0201D12C
.public sub_0201D7A8
.public sub_0201D9C8
.public sub_0201DD90
.public sub_0201DF38
.public sub_0201E020
.public sub_0201E050
.public sub_0201E12C
.public sub_0201E380
.public sub_0201E7D8
.public sub_0201F208
.public sub_0201F248
.public sub_0201F2AC
.public sub_0201F324
.public sub_0201F348
.public sub_0201F36C
.public sub_020205E4
.public sub_020205F8
.public sub_02024934
.public sub_020251F0
.public sub_02025304_JP
.public sub_0202568C
@ -480,14 +423,8 @@
.public sub_02048C3C
.public sub_0204A198
.public sub_0204A1A4
.public InitOptionsVeneer
.public CopyFrameTypeOption
.public SetGameMode
.public sub_0204D018
.public sub_0204E210
.public sub_0204E6FC
.public sub_0204E770
.public sub_0204E780
.public sub_0204F1B4
.public sub_0204F7A8
.public sub_0204F9B8
@ -523,31 +460,4 @@
.public sub_02056E04
.public sub_020584F8
.public sub_02058C30
.public sub_0206DC78
.public sub_0206F6FC
.public sub_0206F774
.public sub_0206F9A4
.public sub_02070124
.public sub_02070148
.public sub_02070158
.public sub_02070188
.public sub_020701B0
.public sub_02070EA0
.public sub_02070F4C
.public sub_020729A4
.public sub_02075600
.public sub_020756E8
.public sub_0207A7EC
.public sub_0207A8F4
.public sub_0207AD54
.public sub_0207AEF4
.public sub_0207AFF0
.public TACTIC_NAME_STRING_IDS
.public TEAM_MEMBER_TABLE_PTR
.public UnloadFile
.public UnloadOverlay
.public UpdateWindow
.public vsprintf
.public WAN_TABLE
.public ZINC_BAND_STAT_BOOST
.public ZeroInitScriptVariable

View File

@ -0,0 +1,102 @@
#pragma once
.public CosAbs4096
.public DRIVER_WORK
.public DUNGEON_SWAP_ID_TABLE
.public Debug_Print0
.public DelayWteFree
.public DeleteWanTableEntryVeneer
.public DseBgm_StopAll
.public DseBgm_SysSetupNoteList
.public DseDriver_StartMainThread
.public DseDriver_StartTickTimer
.public DseMem_Clear
.public DseMem_Quit
.public DseSe_StopAll
.public DseSe_SysReset
.public DseSequence_PauseList
.public DseSwd_SysInit
.public DseSwd_SysQuit
.public DseVoice_ResetAll
.public DseVoice_ResetHW
.public GetDungeonMode
.public GetExecuteSpecialEpisodeType
.public InitAnimationControlWithSet__0201C0B0
.public LoadScriptVariableValue
.public LoadWanTableEntry
.public LoadWteFromRom
.public MAP_MARKER_PLACEMENTS
.public MemAlloc
.public MemFree
.public MemZero
.public MultiplyByFixedPoint
.public Rand16Bit
.public SetAnimationForAnimationControl
.public SetSpriteIdForAnimationControl
.public SinAbs4096
.public WAN_TABLE
.public _020A94BC
.public _020A94C6
.public _020A94D2
.public _020A9E80
.public _020A9EE0
.public _020A9F34
.public _020A9F48
.public _020A9F5C
.public _020A9F70
.public _020A9F84
.public _020A9F98
.public _020B0B4C
.public _020B0B5C
.public _020B0B60
.public _020B0B6C
.public _020B0B70
.public _020B0B74
.public _020B1290
.public _022B7331
.public _022B7334
.public _022B7340
.public _022B734C
.public _022B7A30
.public _022B8330
.public _022B9130
.public _s32_div_f
.public ov10_022C2340
.public ov10_022C23B0
.public ov10_022C23EC
.public ov10_022C2450
.public ov10_022C24DC
.public sub_0201CF5C
.public sub_0201D12C
.public sub_0201D9C8
.public sub_0201DF38
.public sub_0201E020
.public sub_0201E12C
.public sub_0201E7D8
.public sub_0201F248
.public sub_0201F2AC
.public sub_0201F324
.public sub_0201F348
.public sub_0201F36C
.public sub_02024934
.public sub_0204E6FC
.public sub_0204E770
.public sub_0204E780
.public sub_0206DC78
.public sub_0206F6FC
.public sub_0206F774
.public sub_0206F9A4
.public sub_02070124
.public sub_02070148
.public sub_02070158
.public sub_02070188
.public sub_020701B0
.public sub_02070EA0
.public sub_02070F4C
.public sub_020729A4
.public sub_02075600
.public sub_020756E8
.public sub_0207A7EC
.public sub_0207A8F4
.public sub_0207AD54
.public sub_0207AEF4
.public sub_0207AFF0

View File

@ -903,66 +903,3 @@ SetEnterDungeon: ; 0x0204E94C
_0204E96C: .word PENDING_DUNGEON_ID
_0204E970: .word _022AB4F8
arm_func_end SetEnterDungeon
arm_func_start sub_0204E974
sub_0204E974: ; 0x0204E974
stmdb sp!, {r3, r4, r5, lr}
mov r5, r0
bl sub_0205B77C
ldr r2, _0204EA4C ; =PENDING_DUNGEON_ID
mov r1, #2
mov r4, r0
strb r1, [r2, #0xd]
sub r0, r1, #3
strb r0, [r2, #0xe]
mov r0, #0xd6
strh r0, [r2, #2]
ldr r0, _0204EA50 ; =_022AB510
mov r1, r5
strb r5, [r2, #0x12]
bl sub_0205BB7C
ldr r0, _0204EA54 ; =_022AB5A8
mov r1, r5
bl sub_0205BD14
ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID
mov r2, #0
strb r2, [r1, #0xf]
strb r2, [r1, #0x10]
strb r2, [r1, #4]
mov r0, #7
strb r2, [r1, #0x11]
bl GetResolvedPerformanceProgressFlag
ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID
mov r2, #0
strb r0, [r1, #5]
mov r0, #6
strb r2, [r1, #6]
bl GetResolvedPerformanceProgressFlag
ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID
strb r0, [r1, #8]
mov r0, #1
bl GetResolvedPerformanceProgressFlag
ldr r1, _0204EA4C ; =PENDING_DUNGEON_ID
mov r2, #0
strb r0, [r1, #9]
strb r2, [r1, #0xa]
strb r2, [r1, #0xb]
strb r2, [r1, #7]
strb r2, [r1, #0xc]
ldrb r0, [r4, #4]
add r0, r0, #0xda
and r0, r0, #0xff
cmp r0, #5
strlsb r2, [r1, #5]
movls r0, #1
strlsb r0, [r1, #7]
ldr r0, _0204EA58 ; =_022AB4F8
mov r1, #1
strb r1, [r0]
ldmia sp!, {r3, r4, r5, pc}
.align 2, 0
_0204EA4C: .word PENDING_DUNGEON_ID
_0204EA50: .word _022AB510
_0204EA54: .word _022AB5A8
_0204EA58: .word _022AB4F8
arm_func_end sub_0204E974

File diff suppressed because it is too large Load Diff

2559
asm/main_0206A750.s Normal file

File diff suppressed because it is too large Load Diff

View File

@ -4,6 +4,12 @@
#include "common.h"
#include "util.h"
// Unknown struct used during dungeon initialisation
struct unk {
u8 padding[4];
u8 unk4;
};
// Unknown struct included in the dungeon_init struct
struct unk_dungeon_init {
u8 unk0[232];
@ -32,7 +38,7 @@ struct dungeon_init {
bool8 hidden_land_flag; // 0xB: Copied into dungeon::hidden_land_flag
bool8 skip_faint_animation_flag; // 0xC: Copied into dungeon::skip_faint_animation_flag
// 0xD: Copied into dungeon::dungeon_objective. Read as a signed byte (?).
/* struct dungeon_objective_8 */ u8 dungeon_objective;
u8 dungeon_objective;
s8 field_0xE;
bool8 has_guest_pokemon; // 0xF: If true, a guest pokémon will be added to your team
bool8 send_help_item; // 0x10: If true, you recive an item at the start of the dungeon
@ -86,6 +92,7 @@ struct dungeon_init {
u8 field_0x1AB;
};
void sub_0204E974(s8 arg0);
void InitDungeonInit(struct dungeon_init* dg_init, s16 dungeon_idx);
#endif //PMDSKY_DUNGEON_INIT

7
include/dungeon_init_2.h Normal file
View File

@ -0,0 +1,7 @@
#ifndef PMDSKY_MAIN_DUNGEON_INIT_2
#define PMDSKY_MAIN_DUNGEON_INIT_2
s16 DungeonSwapIdToIdx(s16 id);
s16 DungeonSwapIdxToId(s16 idx);
#endif //PMDSKY_MAIN_DUNGEON_INIT_2

View File

@ -139,6 +139,8 @@ Static main
Object asm/main_02058E8C.o
Object src/pokemon.o
Object asm/main_02058F24.o
Object src/dungeon_init_2.o
Object asm/main_0206A750.o
Object src/main_0206C98C.o
Object asm/main_0206C9BC.o
Object lib/DSE/src/main_02071A98.o

View File

@ -4,6 +4,10 @@
#include "progression.h"
#include "script_variable.h"
extern s8 _022AB4F8;
extern u8 _022AB510;
extern u8 _022AB5A8;
extern struct dungeon_init PENDING_DUNGEON_ID;
extern u8* GUEST_MONSTER_BANETTE;
extern u8* GUEST_MONSTER_SKORUPI;
extern u8* GUEST_MONSTER_BIDOOF;
@ -23,11 +27,47 @@ extern u8* GUEST_MONSTER_BIDOOF_4;
extern u8* GUEST_MONSTER_SHAYMIN_LAND;
extern u8* GUEST_MONSTER_SNOVER_2;
struct unk* sub_0205B77C();
void sub_0205BB7C(void*, s8);
void sub_0205BD14(void*, s8);
extern s32 GetDungeonModeSpecial(s16);
extern s8 IsNoLossPenaltyDungeon(s16);
extern void AddGuestMonster(void*, u8, void*);
extern s8 DungeonSwapIdxToId(s16);
// Appears to be initialising a dungeon for a special case not
// handled by InitDungeonInit
void sub_0204E974(s8 arg0) {
struct unk* unk0;
unk0 = sub_0205B77C();
PENDING_DUNGEON_ID.dungeon_objective = 2;
PENDING_DUNGEON_ID.field_0xE = -1;
// Dungeon index 0xD6 maps to dungeon ID 0 in DUNGEON_SWAP_ID_TABLE
PENDING_DUNGEON_ID.dungeon_idx = 0xD6;
PENDING_DUNGEON_ID.field_0x12 = arg0;
sub_0205BB7C(&_022AB510, arg0);
sub_0205BD14(&_022AB5A8, arg0);
PENDING_DUNGEON_ID.has_guest_pokemon = FALSE;
PENDING_DUNGEON_ID.send_help_item = FALSE;
PENDING_DUNGEON_ID.field_0x4 = 0;
PENDING_DUNGEON_ID.show_rescues_left = FALSE;
PENDING_DUNGEON_ID.nonstory_flag = GetResolvedPerformanceProgressFlag(PERFORMANCE_PROGRESS_FLAG_LEADER_SWITCH_ENABLED);
PENDING_DUNGEON_ID.recruiting_enabled = FALSE;
PENDING_DUNGEON_ID.show_potential_recruits = GetResolvedPerformanceProgressFlag(PERFORMANCE_PROGRESS_FLAG_EVOLUTION_ENABLED);
PENDING_DUNGEON_ID.show_team_name = GetResolvedPerformanceProgressFlag(PERFORMANCE_PROGRESS_FLAG_SHOW_TEAM_NAME);
PENDING_DUNGEON_ID.send_home_disabled = FALSE;
PENDING_DUNGEON_ID.hidden_land_flag = FALSE;
PENDING_DUNGEON_ID.force_disable_recruiting = FALSE;
PENDING_DUNGEON_ID.skip_faint_animation_flag = FALSE;
// 0xDA is very close to the size of DUNGEON_SWAP_ID_TABLE, which has 0xDB entries
if ((u32) (u8) (unk0->unk4 + 0xDA) <= 5) {
PENDING_DUNGEON_ID.nonstory_flag = FALSE;
PENDING_DUNGEON_ID.force_disable_recruiting = TRUE;
}
_022AB4F8 = 1;
}
void InitDungeonInit(struct dungeon_init* dg_init, s16 dungeon_idx)
{
u8 game_mode = GetGameMode();

22
src/dungeon_init_2.c Normal file
View File

@ -0,0 +1,22 @@
#include "dungeon_init_2.h"
#include "enums.h"
extern u8 DUNGEON_SWAP_ID_TABLE[];
s16 DungeonSwapIdToIdx(s16 id)
{
for(s32 i = 0; i < 0xD5; i++) {
if (DUNGEON_SWAP_ID_TABLE[(s16)i] == id) {
return i;
}
}
return ~0u;
}
s16 DungeonSwapIdxToId(s16 idx) {
if (idx == -1) {
return DUNGEON_DUMMY_0xFF;
} else {
return DUNGEON_SWAP_ID_TABLE[idx];
}
}